@pyric/cli 0.1.0-alpha.16 → 0.1.0-alpha.17

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 (378) hide show
  1. package/README.md +13 -9
  2. package/dist/assurance/.generated/conformance-verdicts.d.ts +80 -72
  3. package/dist/assurance/.generated/conformance-verdicts.d.ts.map +1 -1
  4. package/dist/assurance/.generated/conformance-verdicts.js +80 -72
  5. package/dist/assurance/.generated/conformance-verdicts.js.map +1 -1
  6. package/dist/cli/database-rules.d.ts.map +1 -1
  7. package/dist/cli/database-rules.js +6 -4
  8. package/dist/cli/database-rules.js.map +1 -1
  9. package/dist/cli/dev-runner.d.ts +9 -0
  10. package/dist/cli/dev-runner.d.ts.map +1 -1
  11. package/dist/cli/dev-runner.js +18 -0
  12. package/dist/cli/dev-runner.js.map +1 -1
  13. package/dist/cli/serve.d.ts.map +1 -1
  14. package/dist/cli/serve.js +61 -6
  15. package/dist/cli/serve.js.map +1 -1
  16. package/dist/cli/verify.js +2 -2
  17. package/dist/cli/verify.js.map +1 -1
  18. package/dist/conformance/.generated/can-i-use-browser.d.ts.map +1 -1
  19. package/dist/conformance/.generated/can-i-use-browser.js +1 -1
  20. package/dist/conformance/.generated/can-i-use-browser.js.map +1 -1
  21. package/dist/conformance/.generated/can-i-use.d.ts.map +1 -1
  22. package/dist/conformance/.generated/can-i-use.js +1 -1
  23. package/dist/conformance/.generated/can-i-use.js.map +1 -1
  24. package/dist/conformance/.generated/conformance-docs.d.ts.map +1 -1
  25. package/dist/conformance/.generated/conformance-docs.js +1 -1
  26. package/dist/conformance/.generated/conformance-docs.js.map +1 -1
  27. package/dist/next/client-aliases.d.ts +11 -0
  28. package/dist/next/client-aliases.d.ts.map +1 -0
  29. package/dist/next/client-aliases.js +38 -0
  30. package/dist/next/client-aliases.js.map +1 -0
  31. package/dist/next/dev-rewrites.d.ts +9 -0
  32. package/dist/next/dev-rewrites.d.ts.map +1 -0
  33. package/dist/next/dev-rewrites.js +53 -0
  34. package/dist/next/dev-rewrites.js.map +1 -0
  35. package/dist/next/guard.d.ts +15 -0
  36. package/dist/next/guard.d.ts.map +1 -0
  37. package/dist/next/guard.js +52 -0
  38. package/dist/next/guard.js.map +1 -0
  39. package/dist/next/index.d.ts +12 -0
  40. package/dist/next/index.d.ts.map +1 -0
  41. package/dist/next/index.js +11 -0
  42. package/dist/next/index.js.map +1 -0
  43. package/dist/next/runtime-env.d.ts +7 -0
  44. package/dist/next/runtime-env.d.ts.map +1 -0
  45. package/dist/next/runtime-env.js +13 -0
  46. package/dist/next/runtime-env.js.map +1 -0
  47. package/dist/next/server-external-packages.d.ts +10 -0
  48. package/dist/next/server-external-packages.d.ts.map +1 -0
  49. package/dist/next/server-external-packages.js +34 -0
  50. package/dist/next/server-external-packages.js.map +1 -0
  51. package/dist/next/target-url.d.ts +11 -0
  52. package/dist/next/target-url.d.ts.map +1 -0
  53. package/dist/next/target-url.js +36 -0
  54. package/dist/next/target-url.js.map +1 -0
  55. package/dist/next/turbopack-config.d.ts +9 -0
  56. package/dist/next/turbopack-config.d.ts.map +1 -0
  57. package/dist/next/turbopack-config.js +39 -0
  58. package/dist/next/turbopack-config.js.map +1 -0
  59. package/dist/next/types.d.ts +40 -0
  60. package/dist/next/types.d.ts.map +1 -0
  61. package/dist/next/types.js +5 -0
  62. package/dist/next/types.js.map +1 -0
  63. package/dist/next/webpack-config.d.ts +11 -0
  64. package/dist/next/webpack-config.d.ts.map +1 -0
  65. package/dist/next/webpack-config.js +51 -0
  66. package/dist/next/webpack-config.js.map +1 -0
  67. package/dist/next/with-pyric.d.ts +22 -0
  68. package/dist/next/with-pyric.d.ts.map +1 -0
  69. package/dist/next/with-pyric.js +49 -0
  70. package/dist/next/with-pyric.js.map +1 -0
  71. package/dist/register/app-bridge.d.ts +9 -0
  72. package/dist/register/app-bridge.d.ts.map +1 -0
  73. package/dist/register/app-bridge.js +56 -0
  74. package/dist/register/app-bridge.js.map +1 -0
  75. package/dist/register/hooks.d.ts.map +1 -1
  76. package/dist/register/hooks.js +6 -1
  77. package/dist/register/hooks.js.map +1 -1
  78. package/dist/register/index.js +1 -1
  79. package/dist/register/index.js.map +1 -1
  80. package/dist/register/mapping.d.ts +3 -1
  81. package/dist/register/mapping.d.ts.map +1 -1
  82. package/dist/register/mapping.js +41 -5
  83. package/dist/register/mapping.js.map +1 -1
  84. package/dist/rtdb/rules-json.d.ts +12 -0
  85. package/dist/rtdb/rules-json.d.ts.map +1 -1
  86. package/dist/rtdb/rules-json.js +98 -0
  87. package/dist/rtdb/rules-json.js.map +1 -1
  88. package/dist/serve/bundler.d.ts.map +1 -1
  89. package/dist/serve/bundler.js +2 -0
  90. package/dist/serve/bundler.js.map +1 -1
  91. package/dist/serve/discovery.d.ts +4 -4
  92. package/dist/serve/discovery.d.ts.map +1 -1
  93. package/dist/serve/discovery.js +59 -38
  94. package/dist/serve/discovery.js.map +1 -1
  95. package/dist/serve/entries/app-ai-passthrough.d.ts +8 -0
  96. package/dist/serve/entries/app-ai-passthrough.d.ts.map +1 -0
  97. package/dist/serve/entries/app-ai-passthrough.js +59 -0
  98. package/dist/serve/entries/app-ai-passthrough.js.map +1 -0
  99. package/dist/serve/entries/auth-helper-core.js +9 -7
  100. package/dist/serve/entries/auth-helper-core.js.map +1 -1
  101. package/dist/serve/entries/auth.d.ts +1 -0
  102. package/dist/serve/entries/auth.d.ts.map +1 -1
  103. package/dist/serve/entries/auth.js +1 -0
  104. package/dist/serve/entries/auth.js.map +1 -1
  105. package/dist/serve/entries/bridge-url.d.ts.map +1 -1
  106. package/dist/serve/entries/bridge-url.js +7 -2
  107. package/dist/serve/entries/bridge-url.js.map +1 -1
  108. package/dist/serve/entries/database.d.ts +1 -0
  109. package/dist/serve/entries/database.d.ts.map +1 -1
  110. package/dist/serve/entries/database.js +1 -0
  111. package/dist/serve/entries/database.js.map +1 -1
  112. package/dist/serve/entries/firestore.d.ts +1 -0
  113. package/dist/serve/entries/firestore.d.ts.map +1 -1
  114. package/dist/serve/entries/firestore.js +1 -0
  115. package/dist/serve/entries/firestore.js.map +1 -1
  116. package/dist/serve/entries/init.d.ts.map +1 -1
  117. package/dist/serve/entries/init.js +4 -2
  118. package/dist/serve/entries/init.js.map +1 -1
  119. package/dist/serve/entries/runtime.js +23 -0
  120. package/dist/serve/entries/runtime.js.map +1 -1
  121. package/dist/serve/entries/storage.d.ts +2 -0
  122. package/dist/serve/entries/storage.d.ts.map +1 -1
  123. package/dist/serve/entries/storage.js +9 -2
  124. package/dist/serve/entries/storage.js.map +1 -1
  125. package/dist/serve/html-injection.d.ts +3 -1
  126. package/dist/serve/html-injection.d.ts.map +1 -1
  127. package/dist/serve/html-injection.js +27 -1
  128. package/dist/serve/html-injection.js.map +1 -1
  129. package/dist/serve/rules.js +2 -2
  130. package/dist/serve/rules.js.map +1 -1
  131. package/dist/serve/runtime/chip-config.d.ts +1 -1
  132. package/dist/serve/runtime/chip-config.d.ts.map +1 -1
  133. package/dist/serve/runtime/chip-config.js +16 -8
  134. package/dist/serve/runtime/chip-config.js.map +1 -1
  135. package/dist/serve/sandbox-session.d.ts +1 -0
  136. package/dist/serve/sandbox-session.d.ts.map +1 -1
  137. package/dist/serve/sandbox-session.js +30 -2
  138. package/dist/serve/sandbox-session.js.map +1 -1
  139. package/dist/serve/site-ui/_astro/_studio_.B6b_G1ev.css +1 -0
  140. package/dist/serve/site-ui/_astro/app.bnmVTkIY.js +11 -0
  141. package/dist/serve/site-ui/_astro/app.t6u-adB_.js +1 -0
  142. package/dist/serve/site-ui/_astro/{chess-showcase.CnoxIle5.js → chess-showcase.kC8dXLKY.js} +1 -1
  143. package/dist/serve/site-ui/_astro/{example-runtime.R1d96L6-.js → example-runtime.D79PnoSk.js} +1 -1
  144. package/dist/serve/site-ui/_astro/index.DzVde04M.js +1 -0
  145. package/dist/serve/site-ui/_astro/reads.BYBRLbsE.js +1 -0
  146. package/dist/serve/site-ui/_astro/sandbox-controls.C9Aaazt8.js +1252 -0
  147. package/dist/serve/site-ui/_astro/{seed.EyI3VYEu.js → seed.DANAIyRw.js} +1 -1
  148. package/dist/serve/site-ui/auth/index.html +2 -2
  149. package/dist/serve/site-ui/docs/_rhythm/index.html +1 -1
  150. package/dist/serve/site-ui/docs/agent/set-up-your-agent/index.html +1 -1
  151. package/dist/serve/site-ui/docs/agent/watch-and-review/index.html +1 -1
  152. package/dist/serve/site-ui/docs/agent/work-with-an-agent/index.html +1 -1
  153. package/dist/serve/site-ui/docs/ai-compat/index.html +85 -85
  154. package/dist/serve/site-ui/docs/ai-compat.md +84 -84
  155. package/dist/serve/site-ui/docs/api-reference/index.html +3 -1
  156. package/dist/serve/site-ui/docs/api-reference.md +2 -0
  157. package/dist/serve/site-ui/docs/app-compat/index.html +28 -28
  158. package/dist/serve/site-ui/docs/app-compat.md +27 -27
  159. package/dist/serve/site-ui/docs/auth-compat/index.html +122 -122
  160. package/dist/serve/site-ui/docs/auth-compat.md +121 -121
  161. package/dist/serve/site-ui/docs/build/ai-logic/index.html +1 -1
  162. package/dist/serve/site-ui/docs/build/authentication/index.html +1 -1
  163. package/dist/serve/site-ui/docs/build/cloud-firestore/index.html +1 -1
  164. package/dist/serve/site-ui/docs/build/cloud-messaging/index.html +1 -1
  165. package/dist/serve/site-ui/docs/build/cloud-storage/index.html +1 -1
  166. package/dist/serve/site-ui/docs/build/realtime-database/index.html +1 -1
  167. package/dist/serve/site-ui/docs/conformance-scores/index.html +4 -4
  168. package/dist/serve/site-ui/docs/conformance-scores.md +3 -3
  169. package/dist/serve/site-ui/docs/create-pyric-reference-api/index.html +6 -6
  170. package/dist/serve/site-ui/docs/create-pyric-reference-api.md +5 -5
  171. package/dist/serve/site-ui/docs/database-compat/index.html +200 -448
  172. package/dist/serve/site-ui/docs/database-compat.md +198 -461
  173. package/dist/serve/site-ui/docs/examples/chess/index.html +2 -2
  174. package/dist/serve/site-ui/docs/examples/index.html +1 -1
  175. package/dist/serve/site-ui/docs/firestore-compat/index.html +186 -195
  176. package/dist/serve/site-ui/docs/firestore-compat.md +184 -195
  177. package/dist/serve/site-ui/docs/functions-rtdb-compat/index.html +15 -15
  178. package/dist/serve/site-ui/docs/functions-rtdb-compat.md +14 -14
  179. package/dist/serve/site-ui/docs/get-started/how-the-swap-works/index.html +1 -1
  180. package/dist/serve/site-ui/docs/get-started/nextjs/index.html +57 -0
  181. package/dist/serve/site-ui/docs/get-started/nextjs.md +86 -0
  182. package/dist/serve/site-ui/docs/get-started/start-building/index.html +25 -8
  183. package/dist/serve/site-ui/docs/get-started/start-building.md +34 -5
  184. package/dist/serve/site-ui/docs/get-started/vite/index.html +26 -0
  185. package/dist/serve/site-ui/docs/get-started/vite.md +45 -0
  186. package/dist/serve/site-ui/docs/index.json +668 -103
  187. package/dist/serve/site-ui/docs/messaging-compat/index.html +56 -56
  188. package/dist/serve/site-ui/docs/messaging-compat.md +55 -55
  189. package/dist/serve/site-ui/docs/observe/resolve-runtime-status/index.html +1 -1
  190. package/dist/serve/site-ui/docs/observe/see-whats-happening/index.html +1 -1
  191. package/dist/serve/site-ui/docs/observe/shape-your-data/index.html +1 -1
  192. package/dist/serve/site-ui/docs/overview/index.html +1 -1
  193. package/dist/serve/site-ui/docs/pyric-admin-app-reference-api/index.html +39 -13
  194. package/dist/serve/site-ui/docs/pyric-admin-app-reference-api.md +28 -2
  195. package/dist/serve/site-ui/docs/pyric-admin-auth-reference-api/index.html +1 -1
  196. package/dist/serve/site-ui/docs/pyric-admin-database-reference-api/index.html +38 -6
  197. package/dist/serve/site-ui/docs/pyric-admin-database-reference-api.md +43 -0
  198. package/dist/serve/site-ui/docs/pyric-admin-firestore-reference-api/index.html +9 -1
  199. package/dist/serve/site-ui/docs/pyric-admin-firestore-reference-api.md +8 -0
  200. package/dist/serve/site-ui/docs/pyric-admin-messaging-reference-api/index.html +1 -1
  201. package/dist/serve/site-ui/docs/pyric-admin-storage-reference-api/index.html +27 -4
  202. package/dist/serve/site-ui/docs/pyric-admin-storage-reference-api.md +23 -0
  203. package/dist/serve/site-ui/docs/pyric-ai-reference-api/index.html +1 -1
  204. package/dist/serve/site-ui/docs/pyric-ai-scripting-reference-api/index.html +1 -1
  205. package/dist/serve/site-ui/docs/pyric-app-reference-api/index.html +1 -1
  206. package/dist/serve/site-ui/docs/pyric-auth-reference-api/index.html +1 -1
  207. package/dist/serve/site-ui/docs/pyric-cli-assurance-browser-reference-api/index.html +1 -1
  208. package/dist/serve/site-ui/docs/pyric-cli-assurance-reference-api/index.html +1 -1
  209. package/dist/serve/site-ui/docs/pyric-cli-bridge-client-reference-api/index.html +1 -1
  210. package/dist/serve/site-ui/docs/pyric-cli-bridge-reference-api/index.html +1 -1
  211. package/dist/serve/site-ui/docs/pyric-cli-conformance-browser-reference-api/index.html +1 -1
  212. package/dist/serve/site-ui/docs/pyric-cli-conformance-docs-reference-api/index.html +1 -1
  213. package/dist/serve/site-ui/docs/pyric-cli-conformance-reference-api/index.html +1 -1
  214. package/dist/serve/site-ui/docs/pyric-cli-credentials-node-reference-api/index.html +1 -1
  215. package/dist/serve/site-ui/docs/pyric-cli-discover-reference-api/index.html +1 -1
  216. package/dist/serve/site-ui/docs/pyric-cli-next-reference-api/index.html +123 -0
  217. package/dist/serve/site-ui/docs/pyric-cli-next-reference-api.md +99 -0
  218. package/dist/serve/site-ui/docs/pyric-cli-register-app-bridge-reference-api/index.html +127 -0
  219. package/dist/serve/site-ui/docs/pyric-cli-register-app-bridge-reference-api.md +174 -0
  220. package/dist/serve/site-ui/docs/pyric-cli-register-reference-api/index.html +1 -1
  221. package/dist/serve/site-ui/docs/pyric-cli-remote-reference-api/index.html +1 -1
  222. package/dist/serve/site-ui/docs/pyric-cli-serve-worker-reference-api/index.html +570 -326
  223. package/dist/serve/site-ui/docs/pyric-cli-serve-worker-reference-api.md +198 -6
  224. package/dist/serve/site-ui/docs/pyric-cli-verify-reference-api/index.html +1 -1
  225. package/dist/serve/site-ui/docs/pyric-cli-vite-reference-api/index.html +1 -1
  226. package/dist/serve/site-ui/docs/pyric-database-reference-api/index.html +1 -1
  227. package/dist/serve/site-ui/docs/pyric-firestore-reference-api/index.html +2971 -627
  228. package/dist/serve/site-ui/docs/pyric-firestore-reference-api.md +2873 -517
  229. package/dist/serve/site-ui/docs/pyric-messaging-reference-api/index.html +1 -1
  230. package/dist/serve/site-ui/docs/pyric-messaging-sw-reference-api/index.html +1 -1
  231. package/dist/serve/site-ui/docs/pyric-rules-reference-api/index.html +43 -3
  232. package/dist/serve/site-ui/docs/pyric-rules-reference-api.md +8 -0
  233. package/dist/serve/site-ui/docs/pyric-sandbox-database-reference-api/index.html +26 -2
  234. package/dist/serve/site-ui/docs/pyric-sandbox-database-reference-api.md +24 -0
  235. package/dist/serve/site-ui/docs/pyric-sandbox-firestore-reference-api/index.html +1 -1
  236. package/dist/serve/site-ui/docs/pyric-sandbox-reference-api/index.html +77 -9
  237. package/dist/serve/site-ui/docs/pyric-sandbox-reference-api.md +28 -13
  238. package/dist/serve/site-ui/docs/pyric-storage-reference-api/index.html +240 -63
  239. package/dist/serve/site-ui/docs/pyric-storage-reference-api.md +164 -5
  240. package/dist/serve/site-ui/docs/pyric-ui-agents-reference-api/index.html +1 -1
  241. package/dist/serve/site-ui/docs/pyric-ui-auth-hooks-reference-api/index.html +1 -1
  242. package/dist/serve/site-ui/docs/pyric-ui-auth-reference-api/index.html +1 -1
  243. package/dist/serve/site-ui/docs/pyric-ui-events-hooks-reference-api/index.html +1 -1
  244. package/dist/serve/site-ui/docs/pyric-ui-events-reference-api/index.html +1 -1
  245. package/dist/serve/site-ui/docs/pyric-ui-firestore-hooks-reference-api/index.html +1 -1
  246. package/dist/serve/site-ui/docs/pyric-ui-firestore-reference-api/index.html +1 -1
  247. package/dist/serve/site-ui/docs/pyric-ui-primitives-reference-api/index.html +1 -1
  248. package/dist/serve/site-ui/docs/pyric-ui-rtdb-reference-api/index.html +1 -1
  249. package/dist/serve/site-ui/docs/pyric-ui-rules-hooks-reference-api/index.html +1 -1
  250. package/dist/serve/site-ui/docs/pyric-ui-rules-reference-api/index.html +1 -1
  251. package/dist/serve/site-ui/docs/pyric-ui-storage-hooks-reference-api/index.html +1 -1
  252. package/dist/serve/site-ui/docs/pyric-ui-storage-reference-api/index.html +2 -1
  253. package/dist/serve/site-ui/docs/pyric-ui-storage-reference-api.md +1 -0
  254. package/dist/serve/site-ui/docs/pyric-ui-traffic-hooks-reference-api/index.html +1 -1
  255. package/dist/serve/site-ui/docs/pyric-ui-traffic-reference-api/index.html +1 -1
  256. package/dist/serve/site-ui/docs/rules-compat/index.html +87 -79
  257. package/dist/serve/site-ui/docs/rules-compat.md +86 -78
  258. package/dist/serve/site-ui/docs/secure/audit-your-rules/index.html +1 -1
  259. package/dist/serve/site-ui/docs/secure/firestore-rules-limits/index.html +1 -1
  260. package/dist/serve/site-ui/docs/secure/read-a-denial/index.html +1 -1
  261. package/dist/serve/site-ui/docs/secure/rtdb-rules-in-typescript/index.html +1 -1
  262. package/dist/serve/site-ui/docs/secure/rules-standard-library/index.html +1 -1
  263. package/dist/serve/site-ui/docs/secure/secure-it-with-rules/index.html +1 -1
  264. package/dist/serve/site-ui/docs/secure/simulate-and-lint/index.html +1 -1
  265. package/dist/serve/site-ui/docs/secure/write-a-rules-test-suite/index.html +1 -1
  266. package/dist/serve/site-ui/docs/ship/ship-to-production/index.html +1 -1
  267. package/dist/serve/site-ui/docs/ship/test-in-node/index.html +1 -1
  268. package/dist/serve/site-ui/docs/storage-compat/index.html +119 -125
  269. package/dist/serve/site-ui/docs/storage-compat.md +118 -124
  270. package/dist/serve/site-ui/docs/trust/how-we-know-it-matches-firebase/index.html +1 -1
  271. package/dist/serve/site-ui/docs/trust/rules-standard-library/index.html +1 -1
  272. package/dist/serve/site-ui/docs/trust/storage-rules-stdlib-research/index.html +1 -1
  273. package/dist/serve/site-ui/docs/trust/versioning-and-compatibility/index.html +1 -1
  274. package/dist/serve/site-ui/docs/tutorial/index.html +1 -1
  275. package/dist/serve/site-ui/examples/chess/index.html +1 -1
  276. package/dist/serve/site-ui/examples/firestore-first-write/index.html +1 -1
  277. package/dist/serve/site-ui/firestore/index.html +2 -2
  278. package/dist/serve/site-ui/index.html +2 -2
  279. package/dist/serve/site-ui/llms.txt +6 -2
  280. package/dist/serve/site-ui/rtdb/index.html +2 -2
  281. package/dist/serve/site-ui/settings/index.html +2 -2
  282. package/dist/serve/site-ui/storage/index.html +2 -2
  283. package/dist/serve/site-ui/traffic/index.html +2 -2
  284. package/dist/serve/vite-ai-config.d.ts +4 -1
  285. package/dist/serve/vite-ai-config.d.ts.map +1 -1
  286. package/dist/serve/vite-ai-config.js +83 -19
  287. package/dist/serve/vite-ai-config.js.map +1 -1
  288. package/dist/serve/vite-generation-rules-watch.d.ts.map +1 -1
  289. package/dist/serve/vite-generation-rules-watch.js +61 -14
  290. package/dist/serve/vite-generation-rules-watch.js.map +1 -1
  291. package/dist/serve/vite-module-swap.d.ts +4 -1
  292. package/dist/serve/vite-module-swap.d.ts.map +1 -1
  293. package/dist/serve/vite-module-swap.js +106 -21
  294. package/dist/serve/vite-module-swap.js.map +1 -1
  295. package/dist/serve/vite-plugin.d.ts.map +1 -1
  296. package/dist/serve/vite-plugin.js +45 -5
  297. package/dist/serve/vite-plugin.js.map +1 -1
  298. package/dist/serve/vite-sandbox-generation.js +1 -1
  299. package/dist/serve/vite-sandbox-generation.js.map +1 -1
  300. package/dist/serve/worker/client/resumable.d.ts +30 -0
  301. package/dist/serve/worker/client/resumable.d.ts.map +1 -0
  302. package/dist/serve/worker/client/resumable.js +416 -0
  303. package/dist/serve/worker/client/resumable.js.map +1 -0
  304. package/dist/serve/worker/client/rtdb-references.d.ts.map +1 -1
  305. package/dist/serve/worker/client/rtdb-references.js +4 -1
  306. package/dist/serve/worker/client/rtdb-references.js.map +1 -1
  307. package/dist/serve/worker/client/storage.d.ts +16 -2
  308. package/dist/serve/worker/client/storage.d.ts.map +1 -1
  309. package/dist/serve/worker/client/storage.js +57 -6
  310. package/dist/serve/worker/client/storage.js.map +1 -1
  311. package/dist/serve/worker/host/rules.d.ts.map +1 -1
  312. package/dist/serve/worker/host/rules.js +2 -1
  313. package/dist/serve/worker/host/rules.js.map +1 -1
  314. package/dist/serve/worker/index.d.ts +1 -1
  315. package/dist/serve/worker/index.d.ts.map +1 -1
  316. package/dist/serve/worker/index.js +1 -1
  317. package/dist/serve/worker/index.js.map +1 -1
  318. package/dist/serve/worker/serve-init.d.ts.map +1 -1
  319. package/dist/serve/worker/serve-init.js +31 -0
  320. package/dist/serve/worker/serve-init.js.map +1 -1
  321. package/package.json +15 -4
  322. package/src/assurance/.generated/conformance-verdicts.ts +80 -72
  323. package/src/cli/cli.test.ts +14 -0
  324. package/src/cli/database-rules.ts +6 -4
  325. package/src/cli/dev-runner.ts +21 -0
  326. package/src/cli/serve.ts +62 -5
  327. package/src/cli/verify.ts +2 -2
  328. package/src/conformance/.generated/can-i-use-browser.ts +1 -1
  329. package/src/conformance/.generated/can-i-use.ts +1 -1
  330. package/src/conformance/.generated/conformance-docs.ts +1 -1
  331. package/src/next/client-aliases.ts +39 -0
  332. package/src/next/dev-rewrites.ts +77 -0
  333. package/src/next/guard.ts +61 -0
  334. package/src/next/index.ts +16 -0
  335. package/src/next/runtime-env.ts +18 -0
  336. package/src/next/server-external-packages.ts +43 -0
  337. package/src/next/target-url.ts +46 -0
  338. package/src/next/turbopack-config.ts +54 -0
  339. package/src/next/types.ts +47 -0
  340. package/src/next/webpack-config.ts +71 -0
  341. package/src/next/with-pyric.ts +58 -0
  342. package/src/register/app-bridge.ts +79 -0
  343. package/src/register/hooks.ts +6 -1
  344. package/src/register/index.ts +1 -1
  345. package/src/register/mapping.ts +50 -4
  346. package/src/rtdb/rules-json.ts +110 -0
  347. package/src/serve/bundler.ts +2 -0
  348. package/src/serve/discovery.ts +65 -44
  349. package/src/serve/entries/app-ai-passthrough.ts +83 -0
  350. package/src/serve/entries/auth-helper-core.ts +9 -7
  351. package/src/serve/entries/auth.ts +1 -0
  352. package/src/serve/entries/bridge-url.ts +9 -2
  353. package/src/serve/entries/database.ts +1 -0
  354. package/src/serve/entries/firestore.ts +1 -0
  355. package/src/serve/entries/init.ts +5 -2
  356. package/src/serve/entries/runtime.ts +25 -0
  357. package/src/serve/entries/storage.ts +12 -1
  358. package/src/serve/html-injection.ts +26 -1
  359. package/src/serve/rules.ts +2 -2
  360. package/src/serve/runtime/chip-config.ts +19 -6
  361. package/src/serve/sandbox-session.ts +31 -2
  362. package/src/serve/vite-ai-config.ts +86 -19
  363. package/src/serve/vite-generation-rules-watch.ts +67 -15
  364. package/src/serve/vite-module-swap.ts +121 -21
  365. package/src/serve/vite-plugin.ts +44 -6
  366. package/src/serve/vite-sandbox-generation.ts +1 -1
  367. package/src/serve/worker/client/resumable.ts +506 -0
  368. package/src/serve/worker/client/rtdb-references.ts +4 -1
  369. package/src/serve/worker/client/storage.ts +77 -7
  370. package/src/serve/worker/host/rules.ts +2 -1
  371. package/src/serve/worker/index.ts +4 -0
  372. package/src/serve/worker/serve-init.ts +30 -0
  373. package/dist/serve/site-ui/_astro/_studio_.BtYpqe1A.css +0 -1
  374. package/dist/serve/site-ui/_astro/app.4HeLP_FA.js +0 -109
  375. package/dist/serve/site-ui/_astro/app.BgSnCR5G.js +0 -1
  376. package/dist/serve/site-ui/_astro/index.BJiOemMX.js +0 -1
  377. package/dist/serve/site-ui/_astro/reads.BrKNdKAa.js +0 -1
  378. package/dist/serve/site-ui/_astro/sandbox-controls.BTb3EbQp.js +0 -1153
@@ -1,5 +1,5 @@
1
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/cli/serve/worker · Pyric Studio</title><meta name="description" content="Published declarations for @pyric/cli/serve/worker."><link rel="icon" type="image/svg+xml" href="/__pyric/ui/pyric-logo.svg"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet"><link rel="stylesheet" href="/__pyric/ui/_astro/_slug_.CXh9yTP1.css">
2
- <link rel="stylesheet" href="/__pyric/ui/_astro/_slug_.BoKXYrnu.css"></head> <body> <header class="studio__bar" data-astro-cid-mw7aashj> <div class="studio__bar-inner" data-astro-cid-mw7aashj> <a class="studio__brand" href="/__pyric/ui/" aria-label="Pyric Studio" data-astro-cid-mw7aashj>Pyric</a> <nav class="studio__nav" aria-label="Studio tabs" data-astro-cid-mw7aashj> <a class="studio__nav-tab" href="/__pyric/ui/" data-astro-cid-mw7aashj> Home </a><a class="studio__nav-tab" href="/__pyric/ui/firestore" data-astro-cid-mw7aashj> Firestore </a><a class="studio__nav-tab" href="/__pyric/ui/auth" data-astro-cid-mw7aashj> Auth </a><a class="studio__nav-tab" href="/__pyric/ui/rtdb" data-astro-cid-mw7aashj> RTDB </a><a class="studio__nav-tab" href="/__pyric/ui/storage" data-astro-cid-mw7aashj> Storage </a><a class="studio__nav-tab" href="/__pyric/ui/traffic" data-astro-cid-mw7aashj> Traffic </a><a class="studio__nav-tab" href="/__pyric/ui/settings" data-astro-cid-mw7aashj> Settings </a><a class="studio__nav-tab" href="/__pyric/ui/docs" aria-current="page" data-astro-cid-mw7aashj> Docs </a> </nav> </div> </header> <div class="docs-shell" data-astro-cid-mw7aashj> <details class="docs-nav-drawer" data-astro-cid-mw7aashj> <summary data-astro-cid-mw7aashj>Navigate</summary> <nav class="docs-nav" aria-label="Documentation"> <div class="docs-search" data-index-url="/__pyric/ui/docs/index.json"> <div class="docs-search-field"> <svg class="docs-search-icon" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"> <path d="M11.5 11.5 15 15M13 7A6 6 0 1 1 1 7a6 6 0 0 1 12 0Z" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path> </svg> <input type="text" class="docs-search-input" placeholder="Search docs" aria-label="Search docs" autocomplete="off" spellcheck="false"> <kbd class="docs-search-kbd">⌘K</kbd> </div> <ul class="docs-search-results" hidden></ul> </div> <script type="module">let i=null;function d(t){return i||(i=fetch(t).then(e=>e.json())),i}function l(t,e){return t.title.toLowerCase().includes(e)||t.excerpt.toLowerCase().includes(e)?!0:t.headings.some(r=>r.text.toLowerCase().includes(e))}function u(t,e,r){if(e.innerHTML="",t.length===0){e.hidden=!1;{const n=document.createElement("li");n.className="docs-search-empty",n.textContent="No matches",e.appendChild(n)}return}e.hidden=!1;for(const n of t.slice(0,8)){const s=document.createElement("li"),c=document.createElement("a");c.href=n.path;const o=document.createElement("span");o.className="docs-search-result-title",o.textContent=n.title;const a=document.createElement("span");a.className="docs-search-result-meta",a.textContent=[n.group,n.section].filter(Boolean).join(" / "),c.append(o,a),s.appendChild(c),e.appendChild(s)}}document.querySelectorAll(".docs-search").forEach(t=>{const e=t.dataset.indexUrl,r=t.querySelector(".docs-search-input"),n=t.querySelector(".docs-search-results");r.addEventListener("input",async()=>{const s=r.value.trim().toLowerCase();if(!s){n.hidden=!0,n.innerHTML="";return}const{pages:c}=await d(e);r.value.trim().toLowerCase()===s&&u(c.filter(o=>l(o,s)),n)}),r.addEventListener("focus",()=>{d(e),n.childElementCount>0&&(n.hidden=!1)}),r.addEventListener("keydown",s=>{s.key==="Escape"&&(r.value="",n.hidden=!0,n.innerHTML="",r.blur())}),r.addEventListener("blur",()=>{window.setTimeout(()=>{n.hidden=!0},150)})});document.addEventListener("keydown",t=>{if(!(t.metaKey||t.ctrlKey)||t.key.toLowerCase()!=="k")return;const e=[...document.querySelectorAll(".docs-search-input")].find(r=>r.offsetParent!==null);e&&(t.preventDefault(),e.focus(),e.select())});</script> <details class="docs-nav-group"> <summary>Overview</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/overview/"> Overview </a> </li><li> <a href="/__pyric/ui/docs/tutorial/"> Tutorial </a> </li><li> <a href="/__pyric/ui/docs/examples/"> Examples </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Get started</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/get-started/start-building/"> Quickstart </a> </li><li> <a href="/__pyric/ui/docs/get-started/how-the-swap-works/"> How the swap works </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Build</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/build/authentication/"> Authentication </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-firestore/"> Cloud Firestore </a> </li><li> <a href="/__pyric/ui/docs/build/realtime-database/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-storage/"> Cloud Storage </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-messaging/"> Cloud Messaging </a> </li><li> <a href="/__pyric/ui/docs/build/ai-logic/"> AI Logic </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Secure &amp; debug</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/secure/secure-it-with-rules/"> Security Rules </a> </li><li> <a href="/__pyric/ui/docs/secure/simulate-and-lint/"> Simulate and lint before you deploy </a> </li><li> <a href="/__pyric/ui/docs/secure/write-a-rules-test-suite/"> Write a rules test suite </a> </li><li> <a href="/__pyric/ui/docs/secure/read-a-denial/"> Read a denial and understand it </a> </li><li> <a href="/__pyric/ui/docs/secure/rules-standard-library/"> The rules standard library </a> </li><li> <a href="/__pyric/ui/docs/secure/rtdb-rules-in-typescript/"> RTDB rules in TypeScript </a> </li><li> <a href="/__pyric/ui/docs/secure/firestore-rules-limits/"> Rules limits </a> </li><li> <a href="/__pyric/ui/docs/secure/audit-your-rules/"> Audit rules and data </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading"> Examples </h2> <ul> <li> <a href="/__pyric/ui/docs/examples/chess/"> Chess showcase </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Observe &amp; shape</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/observe/see-whats-happening/"> Traffic &amp; rule verdicts </a> </li><li> <a href="/__pyric/ui/docs/observe/resolve-runtime-status/"> Runtime status </a> </li><li> <a href="/__pyric/ui/docs/observe/shape-your-data/"> Seed, snapshot, replay </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Ship &amp; test</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/ship/ship-to-production/"> Ship to production </a> </li><li> <a href="/__pyric/ui/docs/ship/test-in-node/"> Test in Node </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Work with an agent</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/agent/set-up-your-agent/"> Connect an agent </a> </li><li> <a href="/__pyric/ui/docs/agent/work-with-an-agent/"> Use the MCP tools </a> </li><li> <a href="/__pyric/ui/docs/agent/watch-and-review/"> Watch in Pyric Studio </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Trust</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/trust/versioning-and-compatibility/"> Versioning and the fb tag </a> </li><li> <a href="/__pyric/ui/docs/trust/storage-rules-stdlib-research/"> Storage Rules modules: evidence and design </a> </li><li> <a href="/__pyric/ui/docs/trust/rules-standard-library/"> Rules standard library reference </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Conformance</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/conformance-scores/"> Public API coverage </a> </li><li> <a href="/__pyric/ui/docs/trust/how-we-know-it-matches-firebase/"> How we know it matches Firebase </a> </li><li> <a href="/__pyric/ui/docs/app-compat/"> App </a> </li><li> <a href="/__pyric/ui/docs/ai-compat/"> AI Logic </a> </li><li> <a href="/__pyric/ui/docs/auth-compat/"> Auth </a> </li><li> <a href="/__pyric/ui/docs/firestore-compat/"> Firestore </a> </li><li> <a href="/__pyric/ui/docs/database-compat/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/storage-compat/"> Storage </a> </li><li> <a href="/__pyric/ui/docs/messaging-compat/"> Messaging </a> </li><li> <a href="/__pyric/ui/docs/functions-rtdb-compat/"> Functions · RTDB </a> </li><li> <a href="/__pyric/ui/docs/rules-compat/"> Rules </a> </li> </ul> </div> </div> </details> <details class="docs-nav-group" open> <summary>Reference</summary> <div class="docs-nav-group-body docs-nav-group-body--reference"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/api-reference/"> API reference </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-app-reference-api/"> pyric/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-reference-api/"> pyric/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth-reference-api/"> pyric/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-reference-api/"> pyric/ai </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-scripting-reference-api/"> pyric/ai/scripting </a> </li><li> <a href="/__pyric/ui/docs/pyric-database-reference-api/"> pyric/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage-reference-api/"> pyric/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-reference-api/"> pyric/messaging </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-sw-reference-api/"> pyric/messaging/sw </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules-reference-api/"> pyric/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-reference-api/"> pyric/sandbox </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-firestore-reference-api/"> pyric/sandbox/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-database-reference-api/"> pyric/sandbox/database </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric-admin</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-admin-app-reference-api/"> pyric-admin/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-firestore-reference-api/"> 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/" aria-current="page"> @pyric/cli/serve/worker </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-remote-reference-api/"> @pyric/cli/remote </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-register-reference-api/"> @pyric/cli/register </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/ui</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-ui-auth-reference-api/"> @pyric/ui/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-auth-hooks-reference-api/"> @pyric/ui/auth/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-primitives-reference-api/"> @pyric/ui/primitives </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-firestore-reference-api/"> @pyric/ui/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-firestore-hooks-reference-api/"> @pyric/ui/firestore/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rtdb-reference-api/"> @pyric/ui/rtdb </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-storage-reference-api/"> @pyric/ui/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-storage-hooks-reference-api/"> @pyric/ui/storage/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-traffic-reference-api/"> @pyric/ui/traffic </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-traffic-hooks-reference-api/"> @pyric/ui/traffic/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-events-reference-api/"> @pyric/ui/events </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-events-hooks-reference-api/"> @pyric/ui/events/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-agents-reference-api/"> @pyric/ui/agents </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rules-reference-api/"> @pyric/ui/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rules-hooks-reference-api/"> @pyric/ui/rules/hooks </a> </li> </ul> </div> </div> </details> </nav> </details> <nav class="docs-nav" aria-label="Documentation"> <div class="docs-search" data-index-url="/__pyric/ui/docs/index.json"> <div class="docs-search-field"> <svg class="docs-search-icon" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"> <path d="M11.5 11.5 15 15M13 7A6 6 0 1 1 1 7a6 6 0 0 1 12 0Z" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path> </svg> <input type="text" class="docs-search-input" placeholder="Search docs" aria-label="Search docs" autocomplete="off" spellcheck="false"> <kbd class="docs-search-kbd">⌘K</kbd> </div> <ul class="docs-search-results" hidden></ul> </div> <details class="docs-nav-group" id="nav-group-overview"> <summary>Overview</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/overview/"> Overview </a> </li><li> <a href="/__pyric/ui/docs/tutorial/"> Tutorial </a> </li><li> <a href="/__pyric/ui/docs/examples/"> Examples </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-get-started"> <summary>Get started</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/get-started/start-building/"> Quickstart </a> </li><li> <a href="/__pyric/ui/docs/get-started/how-the-swap-works/"> How the swap works </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-build"> <summary>Build</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/build/authentication/"> Authentication </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-firestore/"> Cloud Firestore </a> </li><li> <a href="/__pyric/ui/docs/build/realtime-database/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-storage/"> Cloud Storage </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-messaging/"> Cloud Messaging </a> </li><li> <a href="/__pyric/ui/docs/build/ai-logic/"> AI Logic </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-secure-debug"> <summary>Secure &amp; debug</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/secure/secure-it-with-rules/"> Security Rules </a> </li><li> <a href="/__pyric/ui/docs/secure/simulate-and-lint/"> Simulate and lint before you deploy </a> </li><li> <a href="/__pyric/ui/docs/secure/write-a-rules-test-suite/"> Write a rules test suite </a> </li><li> <a href="/__pyric/ui/docs/secure/read-a-denial/"> Read a denial and understand it </a> </li><li> <a href="/__pyric/ui/docs/secure/rules-standard-library/"> The rules standard library </a> </li><li> <a href="/__pyric/ui/docs/secure/rtdb-rules-in-typescript/"> RTDB rules in TypeScript </a> </li><li> <a href="/__pyric/ui/docs/secure/firestore-rules-limits/"> Rules limits </a> </li><li> <a href="/__pyric/ui/docs/secure/audit-your-rules/"> Audit rules and data </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading" id="nav-section-secure-debug-examples"> Examples </h2> <ul> <li> <a href="/__pyric/ui/docs/examples/chess/"> Chess showcase </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-observe-shape"> <summary>Observe &amp; shape</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/observe/see-whats-happening/"> Traffic &amp; rule verdicts </a> </li><li> <a href="/__pyric/ui/docs/observe/resolve-runtime-status/"> Runtime status </a> </li><li> <a href="/__pyric/ui/docs/observe/shape-your-data/"> Seed, snapshot, replay </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-ship-test"> <summary>Ship &amp; test</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/ship/ship-to-production/"> Ship to production </a> </li><li> <a href="/__pyric/ui/docs/ship/test-in-node/"> Test in Node </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-work-with-an-agent"> <summary>Work with an agent</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/agent/set-up-your-agent/"> Connect an agent </a> </li><li> <a href="/__pyric/ui/docs/agent/work-with-an-agent/"> Use the MCP tools </a> </li><li> <a href="/__pyric/ui/docs/agent/watch-and-review/"> Watch in Pyric Studio </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-trust"> <summary>Trust</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/trust/versioning-and-compatibility/"> Versioning and the fb tag </a> </li><li> <a href="/__pyric/ui/docs/trust/storage-rules-stdlib-research/"> Storage Rules modules: evidence and design </a> </li><li> <a href="/__pyric/ui/docs/trust/rules-standard-library/"> Rules standard library reference </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-conformance"> <summary>Conformance</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/conformance-scores/"> Public API coverage </a> </li><li> <a href="/__pyric/ui/docs/trust/how-we-know-it-matches-firebase/"> How we know it matches Firebase </a> </li><li> <a href="/__pyric/ui/docs/app-compat/"> App </a> </li><li> <a href="/__pyric/ui/docs/ai-compat/"> AI Logic </a> </li><li> <a href="/__pyric/ui/docs/auth-compat/"> Auth </a> </li><li> <a href="/__pyric/ui/docs/firestore-compat/"> Firestore </a> </li><li> <a href="/__pyric/ui/docs/database-compat/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/storage-compat/"> Storage </a> </li><li> <a href="/__pyric/ui/docs/messaging-compat/"> Messaging </a> </li><li> <a href="/__pyric/ui/docs/functions-rtdb-compat/"> Functions · RTDB </a> </li><li> <a href="/__pyric/ui/docs/rules-compat/"> Rules </a> </li> </ul> </div> </div> </details> <details class="docs-nav-group" id="nav-group-reference" open> <summary>Reference</summary> <div class="docs-nav-group-body docs-nav-group-body--reference"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/api-reference/"> API reference </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-app-reference-api/"> pyric/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-reference-api/"> pyric/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth-reference-api/"> pyric/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-reference-api/"> pyric/ai </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-scripting-reference-api/"> pyric/ai/scripting </a> </li><li> <a href="/__pyric/ui/docs/pyric-database-reference-api/"> pyric/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage-reference-api/"> pyric/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-reference-api/"> pyric/messaging </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-sw-reference-api/"> pyric/messaging/sw </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules-reference-api/"> pyric/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-reference-api/"> pyric/sandbox </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-firestore-reference-api/"> pyric/sandbox/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-database-reference-api/"> pyric/sandbox/database </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric-admin</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-admin-app-reference-api/"> pyric-admin/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-firestore-reference-api/"> 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/" aria-current="page"> @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/cli</span> </li><li> <span class="docs-breadcrumbs-sep" aria-hidden="true">/</span> <span aria-current="page">@pyric/cli/serve/worker</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/cli/serve/worker</code></h1> <p class="api-reference-meta" data-astro-cid-mw7aashj> 171 published symbols from <code data-astro-cid-mw7aashj>@pyric/cli</code> </p> <p class="api-reference-source" data-astro-cid-mw7aashj>
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/vite/"> Vite </a> </li><li> <a href="/__pyric/ui/docs/get-started/nextjs/"> Next.js </a> </li><li> <a href="/__pyric/ui/docs/get-started/how-the-swap-works/"> How the swap works </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Build</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/build/authentication/"> Authentication </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-firestore/"> Cloud Firestore </a> </li><li> <a href="/__pyric/ui/docs/build/realtime-database/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-storage/"> Cloud Storage </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-messaging/"> Cloud Messaging </a> </li><li> <a href="/__pyric/ui/docs/build/ai-logic/"> AI Logic </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Secure &amp; debug</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/secure/secure-it-with-rules/"> Security Rules </a> </li><li> <a href="/__pyric/ui/docs/secure/simulate-and-lint/"> Simulate and lint before you deploy </a> </li><li> <a href="/__pyric/ui/docs/secure/write-a-rules-test-suite/"> Write a rules test suite </a> </li><li> <a href="/__pyric/ui/docs/secure/read-a-denial/"> Read a denial and understand it </a> </li><li> <a href="/__pyric/ui/docs/secure/rules-standard-library/"> The rules standard library </a> </li><li> <a href="/__pyric/ui/docs/secure/rtdb-rules-in-typescript/"> RTDB rules in TypeScript </a> </li><li> <a href="/__pyric/ui/docs/secure/firestore-rules-limits/"> Rules limits </a> </li><li> <a href="/__pyric/ui/docs/secure/audit-your-rules/"> Audit rules and data </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading"> Examples </h2> <ul> <li> <a href="/__pyric/ui/docs/examples/chess/"> Chess showcase </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Observe &amp; shape</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/observe/see-whats-happening/"> Traffic &amp; rule verdicts </a> </li><li> <a href="/__pyric/ui/docs/observe/resolve-runtime-status/"> Runtime status </a> </li><li> <a href="/__pyric/ui/docs/observe/shape-your-data/"> Seed, snapshot, replay </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Ship &amp; test</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/ship/ship-to-production/"> Ship to production </a> </li><li> <a href="/__pyric/ui/docs/ship/test-in-node/"> Test in Node </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Work with an agent</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/agent/set-up-your-agent/"> Connect an agent </a> </li><li> <a href="/__pyric/ui/docs/agent/work-with-an-agent/"> Use the MCP tools </a> </li><li> <a href="/__pyric/ui/docs/agent/watch-and-review/"> Watch in Pyric Studio </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Trust</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/trust/versioning-and-compatibility/"> Versioning and the fb tag </a> </li><li> <a href="/__pyric/ui/docs/trust/storage-rules-stdlib-research/"> Storage Rules modules: evidence and design </a> </li><li> <a href="/__pyric/ui/docs/trust/rules-standard-library/"> Rules standard library reference </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Conformance</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/conformance-scores/"> Public API coverage </a> </li><li> <a href="/__pyric/ui/docs/trust/how-we-know-it-matches-firebase/"> How we know it matches Firebase </a> </li><li> <a href="/__pyric/ui/docs/app-compat/"> App </a> </li><li> <a href="/__pyric/ui/docs/ai-compat/"> AI Logic </a> </li><li> <a href="/__pyric/ui/docs/auth-compat/"> Auth </a> </li><li> <a href="/__pyric/ui/docs/firestore-compat/"> Firestore </a> </li><li> <a href="/__pyric/ui/docs/database-compat/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/storage-compat/"> Storage </a> </li><li> <a href="/__pyric/ui/docs/messaging-compat/"> Messaging </a> </li><li> <a href="/__pyric/ui/docs/functions-rtdb-compat/"> Functions · RTDB </a> </li><li> <a href="/__pyric/ui/docs/rules-compat/"> Rules </a> </li> </ul> </div> </div> </details> <details class="docs-nav-group" open> <summary>Reference</summary> <div class="docs-nav-group-body docs-nav-group-body--reference"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/api-reference/"> API reference </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-app-reference-api/"> pyric/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-reference-api/"> pyric/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth-reference-api/"> pyric/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-reference-api/"> pyric/ai </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-scripting-reference-api/"> pyric/ai/scripting </a> </li><li> <a href="/__pyric/ui/docs/pyric-database-reference-api/"> pyric/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage-reference-api/"> pyric/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-reference-api/"> pyric/messaging </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-sw-reference-api/"> pyric/messaging/sw </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules-reference-api/"> pyric/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-reference-api/"> pyric/sandbox </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-firestore-reference-api/"> pyric/sandbox/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-database-reference-api/"> pyric/sandbox/database </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric-admin</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-admin-app-reference-api/"> pyric-admin/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-firestore-reference-api/"> 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-next-reference-api/"> @pyric/cli/next </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-serve-worker-reference-api/" aria-current="page"> @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><li> <a href="/__pyric/ui/docs/pyric-cli-register-app-bridge-reference-api/"> @pyric/cli/register/app-bridge </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/vite/"> Vite </a> </li><li> <a href="/__pyric/ui/docs/get-started/nextjs/"> Next.js </a> </li><li> <a href="/__pyric/ui/docs/get-started/how-the-swap-works/"> How the swap works </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-build"> <summary>Build</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/build/authentication/"> Authentication </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-firestore/"> Cloud Firestore </a> </li><li> <a href="/__pyric/ui/docs/build/realtime-database/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-storage/"> Cloud Storage </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-messaging/"> Cloud Messaging </a> </li><li> <a href="/__pyric/ui/docs/build/ai-logic/"> AI Logic </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-secure-debug"> <summary>Secure &amp; debug</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/secure/secure-it-with-rules/"> Security Rules </a> </li><li> <a href="/__pyric/ui/docs/secure/simulate-and-lint/"> Simulate and lint before you deploy </a> </li><li> <a href="/__pyric/ui/docs/secure/write-a-rules-test-suite/"> Write a rules test suite </a> </li><li> <a href="/__pyric/ui/docs/secure/read-a-denial/"> Read a denial and understand it </a> </li><li> <a href="/__pyric/ui/docs/secure/rules-standard-library/"> The rules standard library </a> </li><li> <a href="/__pyric/ui/docs/secure/rtdb-rules-in-typescript/"> RTDB rules in TypeScript </a> </li><li> <a href="/__pyric/ui/docs/secure/firestore-rules-limits/"> Rules limits </a> </li><li> <a href="/__pyric/ui/docs/secure/audit-your-rules/"> Audit rules and data </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading" id="nav-section-secure-debug-examples"> Examples </h2> <ul> <li> <a href="/__pyric/ui/docs/examples/chess/"> Chess showcase </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-observe-shape"> <summary>Observe &amp; shape</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/observe/see-whats-happening/"> Traffic &amp; rule verdicts </a> </li><li> <a href="/__pyric/ui/docs/observe/resolve-runtime-status/"> Runtime status </a> </li><li> <a href="/__pyric/ui/docs/observe/shape-your-data/"> Seed, snapshot, replay </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-ship-test"> <summary>Ship &amp; test</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/ship/ship-to-production/"> Ship to production </a> </li><li> <a href="/__pyric/ui/docs/ship/test-in-node/"> Test in Node </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-work-with-an-agent"> <summary>Work with an agent</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/agent/set-up-your-agent/"> Connect an agent </a> </li><li> <a href="/__pyric/ui/docs/agent/work-with-an-agent/"> Use the MCP tools </a> </li><li> <a href="/__pyric/ui/docs/agent/watch-and-review/"> Watch in Pyric Studio </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-trust"> <summary>Trust</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/trust/versioning-and-compatibility/"> Versioning and the fb tag </a> </li><li> <a href="/__pyric/ui/docs/trust/storage-rules-stdlib-research/"> Storage Rules modules: evidence and design </a> </li><li> <a href="/__pyric/ui/docs/trust/rules-standard-library/"> Rules standard library reference </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-conformance"> <summary>Conformance</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/conformance-scores/"> Public API coverage </a> </li><li> <a href="/__pyric/ui/docs/trust/how-we-know-it-matches-firebase/"> How we know it matches Firebase </a> </li><li> <a href="/__pyric/ui/docs/app-compat/"> App </a> </li><li> <a href="/__pyric/ui/docs/ai-compat/"> AI Logic </a> </li><li> <a href="/__pyric/ui/docs/auth-compat/"> Auth </a> </li><li> <a href="/__pyric/ui/docs/firestore-compat/"> Firestore </a> </li><li> <a href="/__pyric/ui/docs/database-compat/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/storage-compat/"> Storage </a> </li><li> <a href="/__pyric/ui/docs/messaging-compat/"> Messaging </a> </li><li> <a href="/__pyric/ui/docs/functions-rtdb-compat/"> Functions · RTDB </a> </li><li> <a href="/__pyric/ui/docs/rules-compat/"> Rules </a> </li> </ul> </div> </div> </details> <details class="docs-nav-group" id="nav-group-reference" open> <summary>Reference</summary> <div class="docs-nav-group-body docs-nav-group-body--reference"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/api-reference/"> API reference </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-app-reference-api/"> pyric/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-reference-api/"> pyric/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth-reference-api/"> pyric/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-reference-api/"> pyric/ai </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-scripting-reference-api/"> pyric/ai/scripting </a> </li><li> <a href="/__pyric/ui/docs/pyric-database-reference-api/"> pyric/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage-reference-api/"> pyric/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-reference-api/"> pyric/messaging </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-sw-reference-api/"> pyric/messaging/sw </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules-reference-api/"> pyric/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-reference-api/"> pyric/sandbox </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-firestore-reference-api/"> pyric/sandbox/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-database-reference-api/"> pyric/sandbox/database </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric-admin</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-admin-app-reference-api/"> pyric-admin/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-firestore-reference-api/"> 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-next-reference-api/"> @pyric/cli/next </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-serve-worker-reference-api/" aria-current="page"> @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><li> <a href="/__pyric/ui/docs/pyric-cli-register-app-bridge-reference-api/"> @pyric/cli/register/app-bridge </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/cli</span> </li><li> <span class="docs-breadcrumbs-sep" aria-hidden="true">/</span> <span aria-current="page">@pyric/cli/serve/worker</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/cli/serve/worker</code></h1> <p class="api-reference-meta" data-astro-cid-mw7aashj> 175 published symbols from <code data-astro-cid-mw7aashj>@pyric/cli</code> </p> <p class="api-reference-source" data-astro-cid-mw7aashj>
3
3
  Generated from the TypeScript declarations shipped at this import path.
4
4
  </p> </header> <article class="prose api-reference-body" data-astro-cid-mw7aashj> <!-- Generated from published package declarations via TypeDoc. Rendered by the api-reference content loader. -->
5
5
  <h2 id="classes">Classes</h2>
@@ -221,7 +221,12 @@ Returned by <code>getAuth(db | workerUrl)</code>. Mirrors <code>firebase/auth</c
221
221
 
222
222
 
223
223
 
224
- <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="port-2"></a> <code>port</code></td><td align="left"><code>readonly</code></td><td align="left"><code>ClientPort</code></td></tr></tbody></table></div>
224
+
225
+
226
+
227
+
228
+
229
+ <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="bucket"></a> <code>bucket</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="port-2"></a> <code>port</code></td><td align="left"><code>readonly</code></td><td align="left"><code>ClientPort</code></td></tr></tbody></table></div>
225
230
  <hr>
226
231
  <p><a id="clientquerysnapshot"></a></p>
227
232
  <h3 id="clientquerysnapshot">ClientQuerySnapshot</h3>
@@ -341,12 +346,38 @@ Returned by <code>getAuth(db | workerUrl)</code>. Mirrors <code>firebase/auth</c
341
346
 
342
347
 
343
348
 
344
- <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="fullpath"></a> <code>fullPath</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="name"></a> <code>name</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="port-4"></a> <code>port</code></td><td align="left"><code>readonly</code></td><td align="left"><code>ClientPort</code></td></tr></tbody></table></div>
349
+
350
+
351
+
352
+
353
+
354
+
355
+
356
+
357
+
358
+
359
+
360
+
361
+
362
+
363
+
364
+
365
+
366
+
367
+
368
+
369
+ <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="bucket-1"></a> <code>bucket</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="fullpath"></a> <code>fullPath</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="name"></a> <code>name</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="parent"></a> <code>parent</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#clientstoragereference"><code>ClientStorageReference</code></a></td></tr><tr><td align="left"><a id="port-4"></a> <code>port</code></td><td align="left"><code>readonly</code></td><td align="left"><code>ClientPort</code></td></tr><tr><td align="left"><a id="root"></a> <code>root</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#clientstoragereference"><code>ClientStorageReference</code></a></td></tr><tr><td align="left"><a id="storage"></a> <code>storage?</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#clientfirebasestorage"><code>ClientFirebaseStorage</code></a></td></tr></tbody></table></div>
370
+ <h4 id="methods-2">Methods</h4>
371
+ <p><a id="tostring"></a></p>
372
+ <h5 id="tostring">toString()</h5>
373
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">toString</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">;</span></span></code></pre>
374
+ <h6 id="returns-8">Returns</h6>
375
+ <p><code>string</code></p>
345
376
  <hr>
346
377
  <p><a id="clienttransaction"></a></p>
347
378
  <h3 id="clienttransaction">ClientTransaction</h3>
348
379
  <p>Client-side transaction handle.</p>
349
- <h4 id="methods-2">Methods</h4>
380
+ <h4 id="methods-3">Methods</h4>
350
381
  <p><a id="delete"></a></p>
351
382
  <h5 id="delete">delete()</h5>
352
383
  <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">delete</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">DocRefHandle</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
@@ -365,7 +396,7 @@ Returned by <code>getAuth(db | workerUrl)</code>. Mirrors <code>firebase/auth</c
365
396
 
366
397
 
367
398
  <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="#docrefhandle"><code>DocRefHandle</code></a></td></tr></tbody></table></div>
368
- <h6 id="returns-8">Returns</h6>
399
+ <h6 id="returns-9">Returns</h6>
369
400
  <p><code>void</code></p>
370
401
  <p><a id="get"></a></p>
371
402
  <h5 id="get">get()</h5>
@@ -385,7 +416,7 @@ Returned by <code>getAuth(db | workerUrl)</code>. Mirrors <code>firebase/auth</c
385
416
 
386
417
 
387
418
  <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="#docrefhandle"><code>DocRefHandle</code></a></td></tr></tbody></table></div>
388
- <h6 id="returns-9">Returns</h6>
419
+ <h6 id="returns-10">Returns</h6>
389
420
  <p><code>Promise</code>&#x3C;<a href="#clientdocsnapshot"><code>ClientDocSnapshot</code></a>></p>
390
421
  <p><a id="set-2"></a></p>
391
422
  <h5 id="set-1">set()</h5>
@@ -427,7 +458,7 @@ Returned by <code>getAuth(db | workerUrl)</code>. Mirrors <code>firebase/auth</c
427
458
 
428
459
 
429
460
  <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="#docrefhandle"><code>DocRefHandle</code></a></td></tr><tr><td align="left"><code>data</code></td><td align="left"><code>Record</code>&#x3C;<code>string</code>, <code>unknown</code>></td></tr><tr><td align="left"><code>options?</code></td><td align="left">{ <code>merge?</code>: <code>boolean</code>; <code>mergeFields?</code>: <code>string</code>[]; }</td></tr><tr><td align="left"><code>options.merge?</code></td><td align="left"><code>boolean</code></td></tr><tr><td align="left"><code>options.mergeFields?</code></td><td align="left"><code>string</code>[]</td></tr></tbody></table></div>
430
- <h6 id="returns-10">Returns</h6>
461
+ <h6 id="returns-11">Returns</h6>
431
462
  <p><code>void</code></p>
432
463
  <p><a id="update-2"></a></p>
433
464
  <h5 id="update-1">update()</h5>
@@ -451,14 +482,143 @@ Returned by <code>getAuth(db | workerUrl)</code>. Mirrors <code>firebase/auth</c
451
482
 
452
483
 
453
484
  <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="#docrefhandle"><code>DocRefHandle</code></a></td></tr><tr><td align="left"><code>data</code></td><td align="left"><code>Record</code>&#x3C;<code>string</code>, <code>unknown</code>></td></tr></tbody></table></div>
454
- <h6 id="returns-11">Returns</h6>
485
+ <h6 id="returns-12">Returns</h6>
486
+ <p><code>void</code></p>
487
+ <hr>
488
+ <p><a id="clientuploadtask"></a></p>
489
+ <h3 id="clientuploadtask">ClientUploadTask</h3>
490
+ <h4 id="extends">Extends</h4>
491
+ <ul>
492
+ <li><code>Promise</code>&#x3C;<a href="#clientuploadtasksnapshot-1"><code>ClientUploadTaskSnapshot</code></a>></li>
493
+ </ul>
494
+ <h4 id="properties-8">Properties</h4>
495
+ <div class="table-scroll">
496
+
497
+
498
+
499
+
500
+
501
+
502
+
503
+
504
+
505
+
506
+
507
+
508
+
509
+
510
+ <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="snapshot"></a> <code>snapshot</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#clientuploadtasksnapshot-1"><code>ClientUploadTaskSnapshot</code></a></td></tr></tbody></table></div>
511
+ <h4 id="methods-4">Methods</h4>
512
+ <p><a id="cancel-2"></a></p>
513
+ <h5 id="cancel-1">cancel()</h5>
514
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">cancel</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">boolean</span><span style="color:#ABB2BF">;</span></span></code></pre>
515
+ <h6 id="returns-13">Returns</h6>
516
+ <p><code>boolean</code></p>
517
+ <p><a id="on"></a></p>
518
+ <h5 id="on">on()</h5>
519
+ <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">on</span><span style="color:#ABB2BF">(</span></span>
520
+ <span class="line"><span style="color:#E06C75"> event</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">,</span></span>
521
+ <span class="line"><span style="color:#E06C75"> nextOrObserver</span><span style="color:#C678DD">?:</span></span>
522
+ <span class="line"><span style="color:#56B6C2"> |</span><span style="color:#ABB2BF"> (</span><span style="color:#E06C75;font-style:italic">snapshot</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientUploadTaskSnapshot</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">=></span><span style="color:#E06C75"> unknown</span></span>
523
+ <span class="line"><span style="color:#56B6C2"> |</span><span style="color:#ABB2BF"> {</span></span>
524
+ <span class="line"><span style="color:#ABB2BF"> complete?: () </span><span style="color:#C678DD">=></span><span style="color:#E06C75"> unknown</span><span style="color:#ABB2BF">;</span></span>
525
+ <span class="line"><span style="color:#E06C75"> 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">Error</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">=></span><span style="color:#E06C75"> unknown</span><span style="color:#ABB2BF">;</span></span>
526
+ <span class="line"><span style="color:#E06C75"> next</span><span style="color:#C678DD">?:</span><span style="color:#ABB2BF"> (</span><span style="color:#E06C75;font-style:italic">snapshot</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientUploadTaskSnapshot</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">=></span><span style="color:#E06C75"> unknown</span><span style="color:#ABB2BF">;</span></span>
527
+ <span class="line"><span style="color:#ABB2BF">},</span></span>
528
+ <span class="line"><span style="color:#E06C75"> 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">Error</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">=></span><span style="color:#E06C75"> unknown</span><span style="color:#ABB2BF">,</span></span>
529
+ <span class="line"><span style="color:#E06C75"> complete</span><span style="color:#C678DD">?:</span><span style="color:#ABB2BF"> () </span><span style="color:#C678DD">=></span><span style="color:#E06C75"> unknown</span><span style="color:#ABB2BF">): () </span><span style="color:#C678DD">=></span><span style="color:#C678DD"> void</span><span style="color:#ABB2BF">;</span></span></code></pre>
530
+ <h6 id="parameters-8">Parameters</h6>
531
+ <div class="table-scroll">
532
+
533
+
534
+
535
+
536
+
537
+
538
+
539
+
540
+
541
+
542
+
543
+
544
+
545
+
546
+
547
+
548
+
549
+
550
+
551
+
552
+
553
+
554
+
555
+
556
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>event</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>nextOrObserver?</code></td><td align="left">| (<code>snapshot</code>: <a href="#clientuploadtasksnapshot-1"><code>ClientUploadTaskSnapshot</code></a>) => <code>unknown</code> | { <code>complete?</code>: () => <code>unknown</code>; <code>error?</code>: (<code>error</code>: <code>Error</code>) => <code>unknown</code>; <code>next?</code>: (<code>snapshot</code>: <a href="#clientuploadtasksnapshot-1"><code>ClientUploadTaskSnapshot</code></a>) => <code>unknown</code>; }</td></tr><tr><td align="left"><code>error?</code></td><td align="left">(<code>error</code>: <code>Error</code>) => <code>unknown</code></td></tr><tr><td align="left"><code>complete?</code></td><td align="left">() => <code>unknown</code></td></tr></tbody></table></div>
557
+ <h6 id="returns-14">Returns</h6>
558
+ <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>
559
+ <h6 id="returns-15">Returns</h6>
455
560
  <p><code>void</code></p>
561
+ <p><a id="pause"></a></p>
562
+ <h5 id="pause">pause()</h5>
563
+ <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">pause</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">boolean</span><span style="color:#ABB2BF">;</span></span></code></pre>
564
+ <h6 id="returns-16">Returns</h6>
565
+ <p><code>boolean</code></p>
566
+ <p><a id="resume"></a></p>
567
+ <h5 id="resume">resume()</h5>
568
+ <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">resume</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">boolean</span><span style="color:#ABB2BF">;</span></span></code></pre>
569
+ <h6 id="returns-17">Returns</h6>
570
+ <p><code>boolean</code></p>
571
+ <hr>
572
+ <p><a id="clientuploadtasksnapshot-1"></a></p>
573
+ <h3 id="clientuploadtasksnapshot">ClientUploadTaskSnapshot</h3>
574
+ <h4 id="properties-9">Properties</h4>
575
+ <div class="table-scroll">
576
+
577
+
578
+
579
+
580
+
581
+
582
+
583
+
584
+
585
+
586
+
587
+
588
+
589
+
590
+
591
+
592
+
593
+
594
+
595
+
596
+
597
+
598
+
599
+
600
+
601
+
602
+
603
+
604
+
605
+
606
+
607
+
608
+
609
+
610
+
611
+
612
+
613
+
614
+
615
+ <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="bytestransferred"></a> <code>bytesTransferred</code></td><td align="left"><code>readonly</code></td><td align="left"><code>number</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="/docs/pyric-storage-reference-api/#fullmetadata"><code>FullMetadata</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="#clientstoragereference"><code>ClientStorageReference</code></a></td></tr><tr><td align="left"><a id="state"></a> <code>state</code></td><td align="left"><code>readonly</code></td><td align="left"><code>ClientTaskState</code></td></tr><tr><td align="left"><a id="task"></a> <code>task</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#clientuploadtask"><code>ClientUploadTask</code></a></td></tr><tr><td align="left"><a id="totalbytes"></a> <code>totalBytes</code></td><td align="left"><code>readonly</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
456
616
  <hr>
457
617
  <p><a id="clientuser"></a></p>
458
618
  <h3 id="clientuser">ClientUser</h3>
459
619
  <p>Client-side User — a snapshot of the worker’s <code>User</code> with token accessors
460
620
  that RPC back to the worker. Mirrors <code>firebase/auth</code>’s <code>User</code> shape.</p>
461
- <h4 id="properties-8">Properties</h4>
621
+ <h4 id="properties-10">Properties</h4>
462
622
  <div class="table-scroll">
463
623
 
464
624
 
@@ -515,11 +675,11 @@ that RPC back to the worker. Mirrors <code>firebase/auth</code>’s <code>User</
515
675
 
516
676
 
517
677
  <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="displayname"></a> <code>displayName</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="email"></a> <code>email</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="emailverified"></a> <code>emailVerified</code></td><td align="left"><code>readonly</code></td><td align="left"><code>boolean</code></td></tr><tr><td align="left"><a id="isanonymous"></a> <code>isAnonymous</code></td><td align="left"><code>readonly</code></td><td align="left"><code>boolean</code></td></tr><tr><td align="left"><a id="phonenumber"></a> <code>phoneNumber</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="photourl"></a> <code>photoURL</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="providerdata"></a> <code>providerData</code></td><td align="left"><code>readonly</code></td><td align="left">readonly { <code>displayName</code>: <code>string</code>; <code>email</code>: <code>string</code>; <code>phoneNumber</code>: <code>string</code>; <code>photoURL</code>: <code>string</code>; <code>providerId</code>: <code>string</code>; <code>uid</code>: <code>string</code>; }[]</td></tr><tr><td align="left"><a id="providerid"></a> <code>providerId</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="uid"></a> <code>uid</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
518
- <h4 id="methods-3">Methods</h4>
678
+ <h4 id="methods-5">Methods</h4>
519
679
  <p><a id="getidtoken"></a></p>
520
680
  <h5 id="getidtoken">getIdToken()</h5>
521
681
  <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">getIdToken</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">forceRefresh</span><span style="color:#C678DD">?:</span><span style="color:#E06C75"> boolean</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#56B6C2">&#x3C;</span><span style="color:#E06C75">string</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
522
- <h6 id="parameters-8">Parameters</h6>
682
+ <h6 id="parameters-9">Parameters</h6>
523
683
  <div class="table-scroll">
524
684
 
525
685
 
@@ -534,12 +694,12 @@ that RPC back to the worker. Mirrors <code>firebase/auth</code>’s <code>User</
534
694
 
535
695
 
536
696
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>forceRefresh?</code></td><td align="left"><code>boolean</code></td></tr></tbody></table></div>
537
- <h6 id="returns-12">Returns</h6>
697
+ <h6 id="returns-18">Returns</h6>
538
698
  <p><code>Promise</code>&#x3C;<code>string</code>></p>
539
699
  <p><a id="getidtokenresult"></a></p>
540
700
  <h5 id="getidtokenresult">getIdTokenResult()</h5>
541
701
  <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">getIdTokenResult</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">forceRefresh</span><span style="color:#C678DD">?:</span><span style="color:#E06C75"> boolean</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#56B6C2">&#x3C;</span><span style="color:#E06C75">SerializedIdTokenResult</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
542
- <h6 id="parameters-9">Parameters</h6>
702
+ <h6 id="parameters-10">Parameters</h6>
543
703
  <div class="table-scroll">
544
704
 
545
705
 
@@ -554,13 +714,13 @@ that RPC back to the worker. Mirrors <code>firebase/auth</code>’s <code>User</
554
714
 
555
715
 
556
716
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>forceRefresh?</code></td><td align="left"><code>boolean</code></td></tr></tbody></table></div>
557
- <h6 id="returns-13">Returns</h6>
717
+ <h6 id="returns-19">Returns</h6>
558
718
  <p><code>Promise</code>&#x3C;<a href="#serializedidtokenresult"><code>SerializedIdTokenResult</code></a>></p>
559
719
  <hr>
560
720
  <p><a id="clientusercredential"></a></p>
561
721
  <h3 id="clientusercredential">ClientUserCredential</h3>
562
722
  <p>Client-side UserCredential — mirrors <code>firebase/auth</code>.</p>
563
- <h4 id="properties-9">Properties</h4>
723
+ <h4 id="properties-11">Properties</h4>
564
724
  <div class="table-scroll">
565
725
 
566
726
 
@@ -593,16 +753,16 @@ const batch = writeBatch(db);
593
753
  batch.set(ref, { … });
594
754
  batch.delete(ref2);
595
755
  await batch.commit();</p>
596
- <h4 id="methods-4">Methods</h4>
756
+ <h4 id="methods-6">Methods</h4>
597
757
  <p><a id="commit"></a></p>
598
758
  <h5 id="commit">commit()</h5>
599
759
  <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">commit</span><span style="color:#ABB2BF">(): </span><span style="color:#E5C07B">Promise</span><span style="color:#56B6C2">&#x3C;</span><span style="color:#C678DD">void</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
600
- <h6 id="returns-14">Returns</h6>
760
+ <h6 id="returns-20">Returns</h6>
601
761
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
602
762
  <p><a id="delete-2"></a></p>
603
763
  <h5 id="delete-1">delete()</h5>
604
764
  <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">delete</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">DocRefHandle</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">ClientWriteBatch</span><span style="color:#ABB2BF">;</span></span></code></pre>
605
- <h6 id="parameters-10">Parameters</h6>
765
+ <h6 id="parameters-11">Parameters</h6>
606
766
  <div class="table-scroll">
607
767
 
608
768
 
@@ -617,7 +777,7 @@ await batch.commit();</p>
617
777
 
618
778
 
619
779
  <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="#docrefhandle"><code>DocRefHandle</code></a></td></tr></tbody></table></div>
620
- <h6 id="returns-15">Returns</h6>
780
+ <h6 id="returns-21">Returns</h6>
621
781
  <p><a href="#clientwritebatch"><code>ClientWriteBatch</code></a></p>
622
782
  <p><a id="set-4"></a></p>
623
783
  <h5 id="set-2">set()</h5>
@@ -628,7 +788,7 @@ await batch.commit();</p>
628
788
  <span class="line"><span style="color:#ABB2BF"> merge?: </span><span style="color:#E06C75">boolean</span><span style="color:#ABB2BF">;</span></span>
629
789
  <span class="line"><span style="color:#E06C75"> mergeFields</span><span style="color:#C678DD">?:</span><span style="color:#E06C75"> string</span><span style="color:#ABB2BF">[];</span></span>
630
790
  <span class="line"><span style="color:#ABB2BF">}): </span><span style="color:#E06C75">ClientWriteBatch</span><span style="color:#ABB2BF">;</span></span></code></pre>
631
- <h6 id="parameters-11">Parameters</h6>
791
+ <h6 id="parameters-12">Parameters</h6>
632
792
  <div class="table-scroll">
633
793
 
634
794
 
@@ -659,12 +819,12 @@ await batch.commit();</p>
659
819
 
660
820
 
661
821
  <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="#docrefhandle"><code>DocRefHandle</code></a></td></tr><tr><td align="left"><code>data</code></td><td align="left"><code>Record</code>&#x3C;<code>string</code>, <code>unknown</code>></td></tr><tr><td align="left"><code>options?</code></td><td align="left">{ <code>merge?</code>: <code>boolean</code>; <code>mergeFields?</code>: <code>string</code>[]; }</td></tr><tr><td align="left"><code>options.merge?</code></td><td align="left"><code>boolean</code></td></tr><tr><td align="left"><code>options.mergeFields?</code></td><td align="left"><code>string</code>[]</td></tr></tbody></table></div>
662
- <h6 id="returns-16">Returns</h6>
822
+ <h6 id="returns-22">Returns</h6>
663
823
  <p><a href="#clientwritebatch"><code>ClientWriteBatch</code></a></p>
664
824
  <p><a id="update-4"></a></p>
665
825
  <h5 id="update-2">update()</h5>
666
826
  <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">update</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">DocRefHandle</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">data</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">Record</span><span style="color:#56B6C2">&#x3C;</span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">unknown</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">ClientWriteBatch</span><span style="color:#ABB2BF">;</span></span></code></pre>
667
- <h6 id="parameters-12">Parameters</h6>
827
+ <h6 id="parameters-13">Parameters</h6>
668
828
  <div class="table-scroll">
669
829
 
670
830
 
@@ -683,13 +843,13 @@ await batch.commit();</p>
683
843
 
684
844
 
685
845
  <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="#docrefhandle"><code>DocRefHandle</code></a></td></tr><tr><td align="left"><code>data</code></td><td align="left"><code>Record</code>&#x3C;<code>string</code>, <code>unknown</code>></td></tr></tbody></table></div>
686
- <h6 id="returns-17">Returns</h6>
846
+ <h6 id="returns-23">Returns</h6>
687
847
  <p><a href="#clientwritebatch"><code>ClientWriteBatch</code></a></p>
688
848
  <hr>
689
849
  <p><a id="collrefhandle"></a></p>
690
850
  <h3 id="collrefhandle">CollRefHandle</h3>
691
851
  <p>Client-side collection reference.</p>
692
- <h4 id="properties-10">Properties</h4>
852
+ <h4 id="properties-12">Properties</h4>
693
853
  <div class="table-scroll">
694
854
 
695
855
 
@@ -724,7 +884,7 @@ await batch.commit();</p>
724
884
  <hr>
725
885
  <p><a id="disconnectclientoptions"></a></p>
726
886
  <h3 id="disconnectclientoptions">DisconnectClientOptions</h3>
727
- <h4 id="properties-11">Properties</h4>
887
+ <h4 id="properties-13">Properties</h4>
728
888
  <div class="table-scroll">
729
889
 
730
890
 
@@ -745,7 +905,7 @@ await batch.commit();</p>
745
905
  <p><a id="docrefhandle"></a></p>
746
906
  <h3 id="docrefhandle">DocRefHandle</h3>
747
907
  <p>Client-side document reference — carries a DocRef descriptor + port.</p>
748
- <h4 id="properties-12">Properties</h4>
908
+ <h4 id="properties-14">Properties</h4>
749
909
  <div class="table-scroll">
750
910
 
751
911
 
@@ -780,7 +940,7 @@ await batch.commit();</p>
780
940
  <hr>
781
941
  <p><a id="presencesession"></a></p>
782
942
  <h3 id="presencesession">PresenceSession</h3>
783
- <h4 id="properties-13">Properties</h4>
943
+ <h4 id="properties-15">Properties</h4>
784
944
  <div class="table-scroll">
785
945
 
786
946
 
@@ -805,18 +965,18 @@ await batch.commit();</p>
805
965
 
806
966
 
807
967
  <table><thead><tr><th align="left">Property</th><th align="left">Modifier</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="clientid"></a> <code>clientId</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td><td align="left">Logical page id — Studio uses this to label “This page”.</td></tr><tr><td align="left"><a id="kind"></a> <code>kind</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#presenceclientkind"><code>PresenceClientKind</code></a></td><td align="left">-</td></tr></tbody></table></div>
808
- <h4 id="methods-5">Methods</h4>
968
+ <h4 id="methods-7">Methods</h4>
809
969
  <p><a id="stop"></a></p>
810
970
  <h5 id="stop">stop()</h5>
811
971
  <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">stop</span><span style="color:#ABB2BF">(): </span><span style="color:#C678DD">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
812
972
  <p>Stop heartbeats, listeners, and send a best-effort disconnect.</p>
813
- <h6 id="returns-18">Returns</h6>
973
+ <h6 id="returns-24">Returns</h6>
814
974
  <p><code>void</code></p>
815
975
  <hr>
816
976
  <p><a id="presencesnapshot"></a></p>
817
977
  <h3 id="presencesnapshot">PresenceSnapshot</h3>
818
978
  <p>Authoritative presence snapshot owned by the SharedWorker host.</p>
819
- <h4 id="properties-14">Properties</h4>
979
+ <h4 id="properties-16">Properties</h4>
820
980
  <div class="table-scroll">
821
981
 
822
982
 
@@ -850,7 +1010,7 @@ and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays
850
1010
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
851
1011
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
852
1012
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
853
- <h4 id="properties-15">Properties</h4>
1013
+ <h4 id="properties-17">Properties</h4>
854
1014
  <div class="table-scroll">
855
1015
 
856
1016
 
@@ -891,7 +1051,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
891
1051
  <p><a id="queryhandle"></a></p>
892
1052
  <h3 id="queryhandle">QueryHandle</h3>
893
1053
  <p>Client-side query.</p>
894
- <h4 id="properties-16">Properties</h4>
1054
+ <h4 id="properties-18">Properties</h4>
895
1055
  <div class="table-scroll">
896
1056
 
897
1057
 
@@ -922,7 +1082,7 @@ popup/redirect picker) and handed to the worker for sign-in. Provider flows
922
1082
  <code>AuthFlowResolver</code> lives in-page — so the page resolves the picked identity
923
1083
  and bridges it here; the worker seeds it + <code>restoreSession</code>s it (no password
924
1084
  — provider users never sign in with one). See <code>auth.acceptIdentity</code>.</p>
925
- <h4 id="properties-17">Properties</h4>
1085
+ <h4 id="properties-19">Properties</h4>
926
1086
  <div class="table-scroll">
927
1087
 
928
1088
 
@@ -962,7 +1122,7 @@ and bridges it here; the worker seeds it + <code>restoreSession</code>s it (no p
962
1122
  <hr>
963
1123
  <p><a id="rtdbdatasnapshot"></a></p>
964
1124
  <h3 id="rtdbdatasnapshot">RtdbDataSnapshot</h3>
965
- <h4 id="properties-18">Properties</h4>
1125
+ <h4 id="properties-20">Properties</h4>
966
1126
  <div class="table-scroll">
967
1127
 
968
1128
 
@@ -993,12 +1153,12 @@ and bridges it here; the worker seeds it + <code>restoreSession</code>s it (no p
993
1153
 
994
1154
 
995
1155
 
996
- <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="key"></a> <code>key</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="priority"></a> <code>priority</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code> | <code>number</code></td></tr><tr><td align="left"><a id="ref-1"></a> <code>ref</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a></td></tr><tr><td align="left"><a id="size-1"></a> <code>size</code></td><td align="left"><code>readonly</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
997
- <h4 id="methods-6">Methods</h4>
1156
+ <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="key"></a> <code>key</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="priority"></a> <code>priority</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code> | <code>number</code></td></tr><tr><td align="left"><a id="ref-2"></a> <code>ref</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a></td></tr><tr><td align="left"><a id="size-1"></a> <code>size</code></td><td align="left"><code>readonly</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
1157
+ <h4 id="methods-8">Methods</h4>
998
1158
  <p><a id="child"></a></p>
999
1159
  <h5 id="child">child()</h5>
1000
1160
  <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">child</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">path</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">RtdbDataSnapshot</span><span style="color:#ABB2BF">;</span></span></code></pre>
1001
- <h6 id="parameters-13">Parameters</h6>
1161
+ <h6 id="parameters-14">Parameters</h6>
1002
1162
  <div class="table-scroll">
1003
1163
 
1004
1164
 
@@ -1013,22 +1173,22 @@ and bridges it here; the worker seeds it + <code>restoreSession</code>s it (no p
1013
1173
 
1014
1174
 
1015
1175
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>path</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
1016
- <h6 id="returns-19">Returns</h6>
1176
+ <h6 id="returns-25">Returns</h6>
1017
1177
  <p><a href="#rtdbdatasnapshot"><code>RtdbDataSnapshot</code></a></p>
1018
1178
  <p><a id="exists-2"></a></p>
1019
1179
  <h5 id="exists-1">exists()</h5>
1020
1180
  <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">exists</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">boolean</span><span style="color:#ABB2BF">;</span></span></code></pre>
1021
- <h6 id="returns-20">Returns</h6>
1181
+ <h6 id="returns-26">Returns</h6>
1022
1182
  <p><code>boolean</code></p>
1023
1183
  <p><a id="exportval"></a></p>
1024
1184
  <h5 id="exportval">exportVal()</h5>
1025
1185
  <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">exportVal</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">unknown</span><span style="color:#ABB2BF">;</span></span></code></pre>
1026
- <h6 id="returns-21">Returns</h6>
1186
+ <h6 id="returns-27">Returns</h6>
1027
1187
  <p><code>unknown</code></p>
1028
1188
  <p><a id="foreach"></a></p>
1029
1189
  <h5 id="foreach">forEach()</h5>
1030
1190
  <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">forEach</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">cb</span><span style="color:#ABB2BF">: (</span><span style="color:#E06C75;font-style:italic">child</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">RtdbDataSnapshot</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">=></span><span style="color:#E06C75"> boolean</span><span style="color:#56B6C2"> |</span><span style="color:#C678DD"> void</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">boolean</span><span style="color:#ABB2BF">;</span></span></code></pre>
1031
- <h6 id="parameters-14">Parameters</h6>
1191
+ <h6 id="parameters-15">Parameters</h6>
1032
1192
  <div class="table-scroll">
1033
1193
 
1034
1194
 
@@ -1043,12 +1203,12 @@ and bridges it here; the worker seeds it + <code>restoreSession</code>s it (no p
1043
1203
 
1044
1204
 
1045
1205
  <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>child</code>: <a href="#rtdbdatasnapshot"><code>RtdbDataSnapshot</code></a>) => <code>boolean</code> | <code>void</code></td></tr></tbody></table></div>
1046
- <h6 id="returns-22">Returns</h6>
1206
+ <h6 id="returns-28">Returns</h6>
1047
1207
  <p><code>boolean</code></p>
1048
1208
  <p><a id="haschild"></a></p>
1049
1209
  <h5 id="haschild">hasChild()</h5>
1050
1210
  <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">hasChild</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">path</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">boolean</span><span style="color:#ABB2BF">;</span></span></code></pre>
1051
- <h6 id="parameters-15">Parameters</h6>
1211
+ <h6 id="parameters-16">Parameters</h6>
1052
1212
  <div class="table-scroll">
1053
1213
 
1054
1214
 
@@ -1063,27 +1223,27 @@ and bridges it here; the worker seeds it + <code>restoreSession</code>s it (no p
1063
1223
 
1064
1224
 
1065
1225
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>path</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
1066
- <h6 id="returns-23">Returns</h6>
1226
+ <h6 id="returns-29">Returns</h6>
1067
1227
  <p><code>boolean</code></p>
1068
1228
  <p><a id="haschildren"></a></p>
1069
1229
  <h5 id="haschildren">hasChildren()</h5>
1070
1230
  <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">hasChildren</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">boolean</span><span style="color:#ABB2BF">;</span></span></code></pre>
1071
- <h6 id="returns-24">Returns</h6>
1231
+ <h6 id="returns-30">Returns</h6>
1072
1232
  <p><code>boolean</code></p>
1073
1233
  <p><a id="tojson"></a></p>
1074
1234
  <h5 id="tojson">toJSON()</h5>
1075
1235
  <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">toJSON</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">unknown</span><span style="color:#ABB2BF">;</span></span></code></pre>
1076
- <h6 id="returns-25">Returns</h6>
1236
+ <h6 id="returns-31">Returns</h6>
1077
1237
  <p><code>unknown</code></p>
1078
1238
  <p><a id="val"></a></p>
1079
1239
  <h5 id="val">val()</h5>
1080
1240
  <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">val</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">unknown</span><span style="color:#ABB2BF">;</span></span></code></pre>
1081
- <h6 id="returns-26">Returns</h6>
1241
+ <h6 id="returns-32">Returns</h6>
1082
1242
  <p><code>unknown</code></p>
1083
1243
  <hr>
1084
1244
  <p><a id="rtdbrefhandle"></a></p>
1085
1245
  <h3 id="rtdbrefhandle">RtdbRefHandle</h3>
1086
- <h4 id="properties-19">Properties</h4>
1246
+ <h4 id="properties-21">Properties</h4>
1087
1247
  <div class="table-scroll">
1088
1248
 
1089
1249
 
@@ -1119,12 +1279,12 @@ and bridges it here; the worker seeds it + <code>restoreSession</code>s it (no p
1119
1279
 
1120
1280
 
1121
1281
 
1122
- <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="key-1"></a> <code>key</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="parent"></a> <code>parent</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a></td></tr><tr><td align="left"><a id="path-3"></a> <code>path</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="port-8"></a> <code>port</code></td><td align="left"><code>readonly</code></td><td align="left"><code>ClientPort</code></td></tr><tr><td align="left"><a id="root"></a> <code>root</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a></td></tr></tbody></table></div>
1123
- <h4 id="methods-7">Methods</h4>
1282
+ <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="key-1"></a> <code>key</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="parent-1"></a> <code>parent</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a></td></tr><tr><td align="left"><a id="path-3"></a> <code>path</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="port-8"></a> <code>port</code></td><td align="left"><code>readonly</code></td><td align="left"><code>ClientPort</code></td></tr><tr><td align="left"><a id="root-1"></a> <code>root</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a></td></tr></tbody></table></div>
1283
+ <h4 id="methods-9">Methods</h4>
1124
1284
  <p><a id="isequal"></a></p>
1125
1285
  <h5 id="isequal">isEqual()</h5>
1126
1286
  <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">isEqual</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">other</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">RtdbRefHandle</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">boolean</span><span style="color:#ABB2BF">;</span></span></code></pre>
1127
- <h6 id="parameters-16">Parameters</h6>
1287
+ <h6 id="parameters-17">Parameters</h6>
1128
1288
  <div class="table-scroll">
1129
1289
 
1130
1290
 
@@ -1139,23 +1299,23 @@ and bridges it here; the worker seeds it + <code>restoreSession</code>s it (no p
1139
1299
 
1140
1300
 
1141
1301
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>other</code></td><td align="left"><a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a></td></tr></tbody></table></div>
1142
- <h6 id="returns-27">Returns</h6>
1302
+ <h6 id="returns-33">Returns</h6>
1143
1303
  <p><code>boolean</code></p>
1144
1304
  <p><a id="tojson-2"></a></p>
1145
1305
  <h5 id="tojson-1">toJSON()</h5>
1146
1306
  <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">toJSON</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">;</span></span></code></pre>
1147
- <h6 id="returns-28">Returns</h6>
1307
+ <h6 id="returns-34">Returns</h6>
1148
1308
  <p><code>string</code></p>
1149
- <p><a id="tostring"></a></p>
1150
- <h5 id="tostring">toString()</h5>
1309
+ <p><a id="tostring-2"></a></p>
1310
+ <h5 id="tostring-1">toString()</h5>
1151
1311
  <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">toString</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">;</span></span></code></pre>
1152
- <h6 id="returns-29">Returns</h6>
1312
+ <h6 id="returns-35">Returns</h6>
1153
1313
  <p><code>string</code></p>
1154
1314
  <hr>
1155
1315
  <p><a id="serializedidtokenresult"></a></p>
1156
1316
  <h3 id="serializedidtokenresult">SerializedIdTokenResult</h3>
1157
1317
  <p>Wire form of <code>getIdTokenResult()</code>.</p>
1158
- <h4 id="properties-20">Properties</h4>
1318
+ <h4 id="properties-22">Properties</h4>
1159
1319
  <div class="table-scroll">
1160
1320
 
1161
1321
 
@@ -1206,7 +1366,7 @@ structured clone, so the worker flattens the fields the client mirror
1206
1366
  needs into a plain object. Token accessors on the client re-RPC to the
1207
1367
  worker (the worker holds the one real user).</p>
1208
1368
  <p><code>null</code> means “signed out” — there is no current user.</p>
1209
- <h4 id="properties-21">Properties</h4>
1369
+ <h4 id="properties-23">Properties</h4>
1210
1370
  <div class="table-scroll">
1211
1371
 
1212
1372
 
@@ -1267,7 +1427,7 @@ worker (the worker holds the one real user).</p>
1267
1427
  <p><a id="serializedusercredential"></a></p>
1268
1428
  <h3 id="serializedusercredential">SerializedUserCredential</h3>
1269
1429
  <p>Wire form of a <code>UserCredential</code> returned by the sign-in/create ops.</p>
1270
- <h4 id="properties-22">Properties</h4>
1430
+ <h4 id="properties-24">Properties</h4>
1271
1431
  <div class="table-scroll">
1272
1432
 
1273
1433
 
@@ -1297,16 +1457,16 @@ worker (the worker holds the one real user).</p>
1297
1457
  <hr>
1298
1458
  <p><a id="workerreplacement"></a></p>
1299
1459
  <h3 id="workerreplacement">WorkerReplacement</h3>
1300
- <h4 id="methods-8">Methods</h4>
1460
+ <h4 id="methods-10">Methods</h4>
1301
1461
  <p><a id="dispose"></a></p>
1302
1462
  <h5 id="dispose">dispose()</h5>
1303
1463
  <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">dispose</span><span style="color:#ABB2BF">(): </span><span style="color:#C678DD">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
1304
- <h6 id="returns-30">Returns</h6>
1464
+ <h6 id="returns-36">Returns</h6>
1305
1465
  <p><code>void</code></p>
1306
1466
  <p><a id="request"></a></p>
1307
1467
  <h5 id="request">request()</h5>
1308
1468
  <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">request</span><span style="color:#ABB2BF">(): </span><span style="color:#E5C07B">Promise</span><span style="color:#56B6C2">&#x3C;</span><span style="color:#C678DD">void</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
1309
- <h6 id="returns-31">Returns</h6>
1469
+ <h6 id="returns-37">Returns</h6>
1310
1470
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
1311
1471
  <h2 id="type-aliases">Type Aliases</h2>
1312
1472
  <p><a id="anyhandle"></a></p>
@@ -1341,7 +1501,7 @@ this single-backend model (see SESSION/LOCAL collapse note in host.ts).</p>
1341
1501
  <h3 id="unsubscribe">Unsubscribe()</h3>
1342
1502
  <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>
1343
1503
  <p>Unsubscribe function returned by every streaming subscription.</p>
1344
- <h4 id="returns-32">Returns</h4>
1504
+ <h4 id="returns-38">Returns</h4>
1345
1505
  <p><code>void</code></p>
1346
1506
  <h2 id="variables">Variables</h2>
1347
1507
  <p><a id="browserlocalpersistence"></a></p>
@@ -1425,7 +1585,7 @@ the worker port), then calls this with the picked identity; the worker seeds
1425
1585
  it + signs it in, returning a worker-backed credential. The mirror updates
1426
1586
  eagerly (like the email/anon paths) so a synchronous <code>auth.currentUser</code>
1427
1587
  read right after the await reflects the new user.</p>
1428
- <h4 id="parameters-17">Parameters</h4>
1588
+ <h4 id="parameters-18">Parameters</h4>
1429
1589
  <div class="table-scroll">
1430
1590
 
1431
1591
 
@@ -1444,13 +1604,13 @@ read right after the await reflects the new user.</p>
1444
1604
 
1445
1605
 
1446
1606
  <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"><a href="#clientauth"><code>ClientAuth</code></a></td></tr><tr><td align="left"><code>identity</code></td><td align="left"><a href="#resolvedidentity"><code>ResolvedIdentity</code></a></td></tr></tbody></table></div>
1447
- <h4 id="returns-33">Returns</h4>
1607
+ <h4 id="returns-39">Returns</h4>
1448
1608
  <p><code>Promise</code>&#x3C;<a href="#clientusercredential"><code>ClientUserCredential</code></a>></p>
1449
1609
  <hr>
1450
1610
  <p><a id="adddoc"></a></p>
1451
1611
  <h3 id="adddoc">addDoc()</h3>
1452
1612
  <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> addDoc</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">coll</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">CollRefHandle</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">data</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Record</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">>): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">DocRefHandle</span><span style="color:#ABB2BF">>;</span></span></code></pre>
1453
- <h4 id="parameters-18">Parameters</h4>
1613
+ <h4 id="parameters-19">Parameters</h4>
1454
1614
  <div class="table-scroll">
1455
1615
 
1456
1616
 
@@ -1469,13 +1629,13 @@ read right after the await reflects the new user.</p>
1469
1629
 
1470
1630
 
1471
1631
  <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="#collrefhandle"><code>CollRefHandle</code></a></td></tr><tr><td align="left"><code>data</code></td><td align="left"><code>Record</code>&#x3C;<code>string</code>, <code>unknown</code>></td></tr></tbody></table></div>
1472
- <h4 id="returns-34">Returns</h4>
1632
+ <h4 id="returns-40">Returns</h4>
1473
1633
  <p><code>Promise</code>&#x3C;<a href="#docrefhandle"><code>DocRefHandle</code></a>></p>
1474
1634
  <hr>
1475
1635
  <p><a id="adminclearusers"></a></p>
1476
1636
  <h3 id="adminclearusers">adminClearUsers()</h3>
1477
1637
  <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"> adminClearUsers</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">auth</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientAuth</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>
1478
- <h4 id="parameters-19">Parameters</h4>
1638
+ <h4 id="parameters-20">Parameters</h4>
1479
1639
  <div class="table-scroll">
1480
1640
 
1481
1641
 
@@ -1490,13 +1650,13 @@ read right after the await reflects the new user.</p>
1490
1650
 
1491
1651
 
1492
1652
  <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"><a href="#clientauth"><code>ClientAuth</code></a></td></tr></tbody></table></div>
1493
- <h4 id="returns-35">Returns</h4>
1653
+ <h4 id="returns-41">Returns</h4>
1494
1654
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
1495
1655
  <hr>
1496
1656
  <p><a id="admincreateuser"></a></p>
1497
1657
  <h3 id="admincreateuser">adminCreateUser()</h3>
1498
1658
  <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"> adminCreateUser</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">auth</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientAuth</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">request</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">CreateUserRequest</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">AuthUserRecord</span><span style="color:#ABB2BF">>;</span></span></code></pre>
1499
- <h4 id="parameters-20">Parameters</h4>
1659
+ <h4 id="parameters-21">Parameters</h4>
1500
1660
  <div class="table-scroll">
1501
1661
 
1502
1662
 
@@ -1515,13 +1675,13 @@ read right after the await reflects the new user.</p>
1515
1675
 
1516
1676
 
1517
1677
  <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"><a href="#clientauth"><code>ClientAuth</code></a></td></tr><tr><td align="left"><code>request</code></td><td align="left"><a href="/docs/pyric-auth-reference-api/#createuserrequest"><code>CreateUserRequest</code></a></td></tr></tbody></table></div>
1518
- <h4 id="returns-36">Returns</h4>
1678
+ <h4 id="returns-42">Returns</h4>
1519
1679
  <p><code>Promise</code>&#x3C;<a href="/docs/pyric-auth-reference-api/#authuserrecord"><code>AuthUserRecord</code></a>></p>
1520
1680
  <hr>
1521
1681
  <p><a id="admindeletedocument"></a></p>
1522
1682
  <h3 id="admindeletedocument">adminDeleteDocument()</h3>
1523
1683
  <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"> adminDeleteDocument</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientDb</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">path</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">boolean</span><span style="color:#ABB2BF">>;</span></span></code></pre>
1524
- <h4 id="parameters-21">Parameters</h4>
1684
+ <h4 id="parameters-22">Parameters</h4>
1525
1685
  <div class="table-scroll">
1526
1686
 
1527
1687
 
@@ -1540,13 +1700,13 @@ read right after the await reflects the new user.</p>
1540
1700
 
1541
1701
 
1542
1702
  <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="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>path</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
1543
- <h4 id="returns-37">Returns</h4>
1703
+ <h4 id="returns-43">Returns</h4>
1544
1704
  <p><code>Promise</code>&#x3C;<code>boolean</code>></p>
1545
1705
  <hr>
1546
1706
  <p><a id="admindeletertdbvalue"></a></p>
1547
1707
  <h3 id="admindeletertdbvalue">adminDeleteRtdbValue()</h3>
1548
1708
  <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"> adminDeleteRtdbValue</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientDb</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">ClientRtdb</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">path</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</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>
1549
- <h4 id="parameters-22">Parameters</h4>
1709
+ <h4 id="parameters-23">Parameters</h4>
1550
1710
  <div class="table-scroll">
1551
1711
 
1552
1712
 
@@ -1565,13 +1725,13 @@ read right after the await reflects the new user.</p>
1565
1725
 
1566
1726
 
1567
1727
  <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="#clientdb"><code>ClientDb</code></a> | <a href="#clientrtdb"><code>ClientRtdb</code></a></td></tr><tr><td align="left"><code>path</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
1568
- <h4 id="returns-38">Returns</h4>
1728
+ <h4 id="returns-44">Returns</h4>
1569
1729
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
1570
1730
  <hr>
1571
1731
  <p><a id="admindeleteuser"></a></p>
1572
1732
  <h3 id="admindeleteuser">adminDeleteUser()</h3>
1573
1733
  <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"> adminDeleteUser</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">auth</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientAuth</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">uid</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</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>
1574
- <h4 id="parameters-23">Parameters</h4>
1734
+ <h4 id="parameters-24">Parameters</h4>
1575
1735
  <div class="table-scroll">
1576
1736
 
1577
1737
 
@@ -1590,13 +1750,13 @@ read right after the await reflects the new user.</p>
1590
1750
 
1591
1751
 
1592
1752
  <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"><a href="#clientauth"><code>ClientAuth</code></a></td></tr><tr><td align="left"><code>uid</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
1593
- <h4 id="returns-39">Returns</h4>
1753
+ <h4 id="returns-45">Returns</h4>
1594
1754
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
1595
1755
  <hr>
1596
1756
  <p><a id="admingetdocument"></a></p>
1597
1757
  <h3 id="admingetdocument">adminGetDocument()</h3>
1598
1758
  <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"> adminGetDocument</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientDb</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">path</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">Record</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">>>;</span></span></code></pre>
1599
- <h4 id="parameters-24">Parameters</h4>
1759
+ <h4 id="parameters-25">Parameters</h4>
1600
1760
  <div class="table-scroll">
1601
1761
 
1602
1762
 
@@ -1615,7 +1775,7 @@ read right after the await reflects the new user.</p>
1615
1775
 
1616
1776
 
1617
1777
  <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="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>path</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
1618
- <h4 id="returns-40">Returns</h4>
1778
+ <h4 id="returns-46">Returns</h4>
1619
1779
  <p><code>Promise</code>&#x3C;<code>Record</code>&#x3C;<code>string</code>, <code>unknown</code>>></p>
1620
1780
  <hr>
1621
1781
  <p><a id="adminlistdocuments"></a></p>
@@ -1625,7 +1785,7 @@ read right after the await reflects the new user.</p>
1625
1785
  <span class="line"><span style="color:#E06C75"> path</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span>
1626
1786
  <span class="line"><span style="color:#E06C75"> phantom</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">boolean</span><span style="color:#ABB2BF">;</span></span>
1627
1787
  <span class="line"><span style="color:#ABB2BF">}[]>;</span></span></code></pre>
1628
- <h4 id="parameters-25">Parameters</h4>
1788
+ <h4 id="parameters-26">Parameters</h4>
1629
1789
  <div class="table-scroll">
1630
1790
 
1631
1791
 
@@ -1644,7 +1804,7 @@ read right after the await reflects the new user.</p>
1644
1804
 
1645
1805
 
1646
1806
  <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="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>path</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
1647
- <h4 id="returns-41">Returns</h4>
1807
+ <h4 id="returns-47">Returns</h4>
1648
1808
  <p><code>Promise</code>&#x3C;{
1649
1809
  <code>data</code>: <code>unknown</code>;
1650
1810
  <code>path</code>: <code>string</code>;
@@ -1654,7 +1814,7 @@ read right after the await reflects the new user.</p>
1654
1814
  <p><a id="adminreadrtdbstate"></a></p>
1655
1815
  <h3 id="adminreadrtdbstate">adminReadRtdbState()</h3>
1656
1816
  <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"> adminReadRtdbState</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientDb</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">ClientRtdb</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">>;</span></span></code></pre>
1657
- <h4 id="parameters-26">Parameters</h4>
1817
+ <h4 id="parameters-27">Parameters</h4>
1658
1818
  <div class="table-scroll">
1659
1819
 
1660
1820
 
@@ -1669,7 +1829,7 @@ read right after the await reflects the new user.</p>
1669
1829
 
1670
1830
 
1671
1831
  <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="#clientdb"><code>ClientDb</code></a> | <a href="#clientrtdb"><code>ClientRtdb</code></a></td></tr></tbody></table></div>
1672
- <h4 id="returns-42">Returns</h4>
1832
+ <h4 id="returns-48">Returns</h4>
1673
1833
  <p><code>Promise</code>&#x3C;<code>unknown</code>></p>
1674
1834
  <hr>
1675
1835
  <p><a id="adminreadstate"></a></p>
@@ -1678,7 +1838,7 @@ read right after the await reflects the new user.</p>
1678
1838
  <span class="line"><span style="color:#E06C75"> maxDepth</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">;</span></span>
1679
1839
  <span class="line"><span style="color:#E06C75"> path</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span>
1680
1840
  <span class="line"><span style="color:#ABB2BF">}): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">Record</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">>>;</span></span></code></pre>
1681
- <h4 id="parameters-27">Parameters</h4>
1841
+ <h4 id="parameters-28">Parameters</h4>
1682
1842
  <div class="table-scroll">
1683
1843
 
1684
1844
 
@@ -1705,7 +1865,7 @@ read right after the await reflects the new user.</p>
1705
1865
 
1706
1866
 
1707
1867
  <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="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>opts?</code></td><td align="left">{ <code>maxDepth?</code>: <code>number</code>; <code>path?</code>: <code>string</code>; }</td></tr><tr><td align="left"><code>opts.maxDepth?</code></td><td align="left"><code>number</code></td></tr><tr><td align="left"><code>opts.path?</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
1708
- <h4 id="returns-43">Returns</h4>
1868
+ <h4 id="returns-49">Returns</h4>
1709
1869
  <p><code>Promise</code>&#x3C;<code>Record</code>&#x3C;<code>string</code>, <code>unknown</code>>></p>
1710
1870
  <hr>
1711
1871
  <p><a id="adminsetdocument"></a></p>
@@ -1714,7 +1874,7 @@ read right after the await reflects the new user.</p>
1714
1874
  <span class="line"><span style="color:#E06C75;font-style:italic"> db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientDb</span><span style="color:#ABB2BF">,</span></span>
1715
1875
  <span class="line"><span style="color:#E06C75;font-style:italic"> path</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
1716
1876
  <span class="line"><span style="color:#E06C75;font-style:italic">data</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">unknown</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>
1717
- <h4 id="parameters-28">Parameters</h4>
1877
+ <h4 id="parameters-29">Parameters</h4>
1718
1878
  <div class="table-scroll">
1719
1879
 
1720
1880
 
@@ -1737,7 +1897,7 @@ read right after the await reflects the new user.</p>
1737
1897
 
1738
1898
 
1739
1899
  <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="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>path</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>data</code></td><td align="left"><code>unknown</code></td></tr></tbody></table></div>
1740
- <h4 id="returns-44">Returns</h4>
1900
+ <h4 id="returns-50">Returns</h4>
1741
1901
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
1742
1902
  <hr>
1743
1903
  <p><a id="adminsetrtdbvalue"></a></p>
@@ -1746,7 +1906,7 @@ read right after the await reflects the new user.</p>
1746
1906
  <span class="line"><span style="color:#E06C75;font-style:italic"> db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientDb</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">ClientRtdb</span><span style="color:#ABB2BF">,</span></span>
1747
1907
  <span class="line"><span style="color:#E06C75;font-style:italic"> path</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
1748
1908
  <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">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">>;</span></span></code></pre>
1749
- <h4 id="parameters-29">Parameters</h4>
1909
+ <h4 id="parameters-30">Parameters</h4>
1750
1910
  <div class="table-scroll">
1751
1911
 
1752
1912
 
@@ -1769,7 +1929,7 @@ read right after the await reflects the new user.</p>
1769
1929
 
1770
1930
 
1771
1931
  <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="#clientdb"><code>ClientDb</code></a> | <a href="#clientrtdb"><code>ClientRtdb</code></a></td></tr><tr><td align="left"><code>path</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>value</code></td><td align="left"><code>unknown</code></td></tr></tbody></table></div>
1772
- <h4 id="returns-45">Returns</h4>
1932
+ <h4 id="returns-51">Returns</h4>
1773
1933
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
1774
1934
  <hr>
1775
1935
  <p><a id="adminsubscribertdbvalue"></a></p>
@@ -1780,7 +1940,7 @@ read right after the await reflects the new user.</p>
1780
1940
  <span class="line"><span style="color:#61AFEF"> next</span><span style="color:#ABB2BF">: (</span><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:#C678DD">=></span><span style="color:#E5C07B"> void</span><span style="color:#ABB2BF">,</span></span>
1781
1941
  <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">err</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 style="color:#E5C07B">Unsubscribe</span><span style="color:#ABB2BF">;</span></span></code></pre>
1782
1942
  <p>Subscribe with an explicit admin lens so Studio stays rules-independent.</p>
1783
- <h4 id="parameters-30">Parameters</h4>
1943
+ <h4 id="parameters-31">Parameters</h4>
1784
1944
  <div class="table-scroll">
1785
1945
 
1786
1946
 
@@ -1807,7 +1967,7 @@ read right after the await reflects the new user.</p>
1807
1967
 
1808
1968
 
1809
1969
  <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="#clientdb"><code>ClientDb</code></a> | <a href="#clientrtdb"><code>ClientRtdb</code></a></td></tr><tr><td align="left"><code>path</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>next</code></td><td align="left">(<code>value</code>: <code>unknown</code>) => <code>void</code></td></tr><tr><td align="left"><code>error?</code></td><td align="left">(<code>err</code>: <code>unknown</code>) => <code>void</code></td></tr></tbody></table></div>
1810
- <h4 id="returns-46">Returns</h4>
1970
+ <h4 id="returns-52">Returns</h4>
1811
1971
  <p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
1812
1972
  <hr>
1813
1973
  <p><a id="adminupdatertdbvalue"></a></p>
@@ -1816,7 +1976,7 @@ read right after the await reflects the new user.</p>
1816
1976
  <span class="line"><span style="color:#E06C75;font-style:italic"> db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientDb</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">ClientRtdb</span><span style="color:#ABB2BF">,</span></span>
1817
1977
  <span class="line"><span style="color:#E06C75;font-style:italic"> path</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
1818
1978
  <span class="line"><span style="color:#E06C75;font-style:italic">values</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Record</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">unknown</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>
1819
- <h4 id="parameters-31">Parameters</h4>
1979
+ <h4 id="parameters-32">Parameters</h4>
1820
1980
  <div class="table-scroll">
1821
1981
 
1822
1982
 
@@ -1839,7 +1999,7 @@ read right after the await reflects the new user.</p>
1839
1999
 
1840
2000
 
1841
2001
  <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="#clientdb"><code>ClientDb</code></a> | <a href="#clientrtdb"><code>ClientRtdb</code></a></td></tr><tr><td align="left"><code>path</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>values</code></td><td align="left"><code>Record</code>&#x3C;<code>string</code>, <code>unknown</code>></td></tr></tbody></table></div>
1842
- <h4 id="returns-47">Returns</h4>
2002
+ <h4 id="returns-53">Returns</h4>
1843
2003
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
1844
2004
  <hr>
1845
2005
  <p><a id="adminupdateuser"></a></p>
@@ -1848,7 +2008,7 @@ read right after the await reflects the new user.</p>
1848
2008
  <span class="line"><span style="color:#E06C75;font-style:italic"> auth</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientAuth</span><span style="color:#ABB2BF">,</span></span>
1849
2009
  <span class="line"><span style="color:#E06C75;font-style:italic"> uid</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
1850
2010
  <span class="line"><span style="color:#E06C75;font-style:italic">request</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">UpdateUserRequest</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">AuthUserRecord</span><span style="color:#ABB2BF">>;</span></span></code></pre>
1851
- <h4 id="parameters-32">Parameters</h4>
2011
+ <h4 id="parameters-33">Parameters</h4>
1852
2012
  <div class="table-scroll">
1853
2013
 
1854
2014
 
@@ -1871,14 +2031,14 @@ read right after the await reflects the new user.</p>
1871
2031
 
1872
2032
 
1873
2033
  <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"><a href="#clientauth"><code>ClientAuth</code></a></td></tr><tr><td align="left"><code>uid</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>request</code></td><td align="left"><a href="/docs/pyric-auth-reference-api/#updateuserrequest"><code>UpdateUserRequest</code></a></td></tr></tbody></table></div>
1874
- <h4 id="returns-48">Returns</h4>
2034
+ <h4 id="returns-54">Returns</h4>
1875
2035
  <p><code>Promise</code>&#x3C;<a href="/docs/pyric-auth-reference-api/#authuserrecord"><code>AuthUserRecord</code></a>></p>
1876
2036
  <hr>
1877
2037
  <p><a id="and"></a></p>
1878
2038
  <h3 id="and">and()</h3>
1879
2039
  <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"> and</span><span style="color:#ABB2BF">(...</span><span style="color:#E06C75;font-style:italic">filters</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">QueryConstraintHandle</span><span style="color:#ABB2BF">[]): </span><span style="color:#E5C07B">QueryConstraintHandle</span><span style="color:#ABB2BF">;</span></span></code></pre>
1880
2040
  <p>AND composite filter — every operand must match. See <a href="#or">or</a>.</p>
1881
- <h4 id="parameters-33">Parameters</h4>
2041
+ <h4 id="parameters-34">Parameters</h4>
1882
2042
  <div class="table-scroll">
1883
2043
 
1884
2044
 
@@ -1893,13 +2053,13 @@ read right after the await reflects the new user.</p>
1893
2053
 
1894
2054
 
1895
2055
  <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"><code>QueryConstraintHandle</code>[]</td></tr></tbody></table></div>
1896
- <h4 id="returns-49">Returns</h4>
2056
+ <h4 id="returns-55">Returns</h4>
1897
2057
  <p><code>QueryConstraintHandle</code></p>
1898
2058
  <hr>
1899
2059
  <p><a id="arrayremove"></a></p>
1900
2060
  <h3 id="arrayremove">arrayRemove()</h3>
1901
2061
  <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">SentinelMarker</span><span style="color:#ABB2BF">;</span></span></code></pre>
1902
- <h4 id="parameters-34">Parameters</h4>
2062
+ <h4 id="parameters-35">Parameters</h4>
1903
2063
  <div class="table-scroll">
1904
2064
 
1905
2065
 
@@ -1914,13 +2074,13 @@ read right after the await reflects the new user.</p>
1914
2074
 
1915
2075
 
1916
2076
  <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>
1917
- <h4 id="returns-50">Returns</h4>
2077
+ <h4 id="returns-56">Returns</h4>
1918
2078
  <p><code>SentinelMarker</code></p>
1919
2079
  <hr>
1920
2080
  <p><a id="arrayunion"></a></p>
1921
2081
  <h3 id="arrayunion">arrayUnion()</h3>
1922
2082
  <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">SentinelMarker</span><span style="color:#ABB2BF">;</span></span></code></pre>
1923
- <h4 id="parameters-35">Parameters</h4>
2083
+ <h4 id="parameters-36">Parameters</h4>
1924
2084
  <div class="table-scroll">
1925
2085
 
1926
2086
 
@@ -1935,14 +2095,14 @@ read right after the await reflects the new user.</p>
1935
2095
 
1936
2096
 
1937
2097
  <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>
1938
- <h4 id="returns-51">Returns</h4>
2098
+ <h4 id="returns-57">Returns</h4>
1939
2099
  <p><code>SentinelMarker</code></p>
1940
2100
  <hr>
1941
2101
  <p><a id="average"></a></p>
1942
2102
  <h3 id="average">average()</h3>
1943
2103
  <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">AggregateFieldDescriptor</span><span style="color:#ABB2BF">;</span></span></code></pre>
1944
2104
  <p>Factory: average-of-<code>field</code> aggregate. Empty input yields <code>null</code>.</p>
1945
- <h4 id="parameters-36">Parameters</h4>
2105
+ <h4 id="parameters-37">Parameters</h4>
1946
2106
  <div class="table-scroll">
1947
2107
 
1948
2108
 
@@ -1957,7 +2117,7 @@ read right after the await reflects the new user.</p>
1957
2117
 
1958
2118
 
1959
2119
  <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>
1960
- <h4 id="returns-52">Returns</h4>
2120
+ <h4 id="returns-58">Returns</h4>
1961
2121
  <p><code>AggregateFieldDescriptor</code></p>
1962
2122
  <hr>
1963
2123
  <p><a id="calltool"></a></p>
@@ -1975,7 +2135,7 @@ sandbox the app + Studio use. The worker runs the canonical tool dispatcher
1975
2135
  (<code>buildSandboxDispatcher</code>) and replies with the <code>{ ok, summary, data }</code>
1976
2136
  result. Used by the bridge peer on the worker path (<code>connectBridgePeer</code> in
1977
2137
  <code>entries/runtime.ts</code>) so the agent shares the one authoritative sandbox.</p>
1978
- <h4 id="parameters-37">Parameters</h4>
2138
+ <h4 id="parameters-38">Parameters</h4>
1979
2139
  <div class="table-scroll">
1980
2140
 
1981
2141
 
@@ -1998,7 +2158,7 @@ result. Used by the bridge peer on the worker path (<code>connectBridgePeer</cod
1998
2158
 
1999
2159
 
2000
2160
  <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="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>name</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>args</code></td><td align="left"><code>Record</code>&#x3C;<code>string</code>, <code>unknown</code>></td></tr></tbody></table></div>
2001
- <h4 id="returns-53">Returns</h4>
2161
+ <h4 id="returns-59">Returns</h4>
2002
2162
  <p><code>Promise</code>&#x3C;{
2003
2163
  <code>data?</code>: <code>unknown</code>;
2004
2164
  <code>ok</code>: <code>boolean</code>;
@@ -2009,7 +2169,7 @@ result. Used by the bridge peer on the worker path (<code>connectBridgePeer</cod
2009
2169
  <h3 id="collection">collection()</h3>
2010
2170
  <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 style="color:#E5C07B">ClientDb</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">DocRefHandle</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">CollRefHandle</span><span style="color:#ABB2BF">;</span></span></code></pre>
2011
2171
  <p>Build a collection reference. Mirrors <code>pyric/firestore</code>’s <code>collection(db, path)</code>.</p>
2012
- <h4 id="parameters-38">Parameters</h4>
2172
+ <h4 id="parameters-39">Parameters</h4>
2013
2173
  <div class="table-scroll">
2014
2174
 
2015
2175
 
@@ -2028,14 +2188,14 @@ result. Used by the bridge peer on the worker path (<code>connectBridgePeer</cod
2028
2188
 
2029
2189
 
2030
2190
  <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="#clientdb"><code>ClientDb</code></a> | <a href="#docrefhandle"><code>DocRefHandle</code></a></td></tr><tr><td align="left">…<code>pathSegments</code></td><td align="left"><code>string</code>[]</td></tr></tbody></table></div>
2031
- <h4 id="returns-54">Returns</h4>
2191
+ <h4 id="returns-60">Returns</h4>
2032
2192
  <p><a href="#collrefhandle"><code>CollRefHandle</code></a></p>
2033
2193
  <hr>
2034
2194
  <p><a id="collectiongroup"></a></p>
2035
2195
  <h3 id="collectiongroup">collectionGroup()</h3>
2036
2196
  <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"> collectionGroup</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientDb</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">collectionId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">QueryHandle</span><span style="color:#ABB2BF">;</span></span></code></pre>
2037
2197
  <p>Build a collection-group query. Mirrors <code>pyric/firestore</code>’s <code>collectionGroup(db, id)</code>.</p>
2038
- <h4 id="parameters-39">Parameters</h4>
2198
+ <h4 id="parameters-40">Parameters</h4>
2039
2199
  <div class="table-scroll">
2040
2200
 
2041
2201
 
@@ -2054,7 +2214,7 @@ result. Used by the bridge peer on the worker path (<code>connectBridgePeer</cod
2054
2214
 
2055
2215
 
2056
2216
  <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="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>collectionId</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
2057
- <h4 id="returns-55">Returns</h4>
2217
+ <h4 id="returns-61">Returns</h4>
2058
2218
  <p><a href="#queryhandle"><code>QueryHandle</code></a></p>
2059
2219
  <hr>
2060
2220
  <p><a id="connectauthemulator"></a></p>
@@ -2068,7 +2228,7 @@ result. Used by the bridge peer on the worker path (<code>connectBridgePeer</cod
2068
2228
  <p>Connect to the auth emulator. No-op shim over the worker: the worker’s
2069
2229
  sandbox IS the emulator-equivalent backend, so there’s nothing to point at.
2070
2230
  Present for surface parity so app code that calls it doesn’t break.</p>
2071
- <h4 id="parameters-40">Parameters</h4>
2231
+ <h4 id="parameters-41">Parameters</h4>
2072
2232
  <div class="table-scroll">
2073
2233
 
2074
2234
 
@@ -2095,14 +2255,14 @@ Present for surface parity so app code that calls it doesn’t break.</p>
2095
2255
 
2096
2256
 
2097
2257
  <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"><a href="#clientauth"><code>ClientAuth</code></a></td></tr><tr><td align="left"><code>_url</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>_options?</code></td><td align="left">{ <code>disableWarnings?</code>: <code>boolean</code>; }</td></tr><tr><td align="left"><code>_options.disableWarnings?</code></td><td align="left"><code>boolean</code></td></tr></tbody></table></div>
2098
- <h4 id="returns-56">Returns</h4>
2258
+ <h4 id="returns-62">Returns</h4>
2099
2259
  <p><code>void</code></p>
2100
2260
  <hr>
2101
2261
  <p><a id="count"></a></p>
2102
2262
  <h3 id="count">count()</h3>
2103
2263
  <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">AggregateFieldDescriptor</span><span style="color:#ABB2BF">;</span></span></code></pre>
2104
2264
  <p>Factory: count() aggregate field. Mirrors <code>pyric/firestore</code>’s <code>count()</code>.</p>
2105
- <h4 id="returns-57">Returns</h4>
2265
+ <h4 id="returns-63">Returns</h4>
2106
2266
  <p><code>AggregateFieldDescriptor</code></p>
2107
2267
  <hr>
2108
2268
  <p><a id="createuserwithemailandpassword"></a></p>
@@ -2111,7 +2271,7 @@ Present for surface parity so app code that calls it doesn’t break.</p>
2111
2271
  <span class="line"><span style="color:#E06C75;font-style:italic"> auth</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientAuth</span><span style="color:#ABB2BF">,</span></span>
2112
2272
  <span class="line"><span style="color:#E06C75;font-style:italic"> email</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
2113
2273
  <span class="line"><span style="color:#E06C75;font-style:italic">password</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">ClientUserCredential</span><span style="color:#ABB2BF">>;</span></span></code></pre>
2114
- <h4 id="parameters-41">Parameters</h4>
2274
+ <h4 id="parameters-42">Parameters</h4>
2115
2275
  <div class="table-scroll">
2116
2276
 
2117
2277
 
@@ -2134,14 +2294,14 @@ Present for surface parity so app code that calls it doesn’t break.</p>
2134
2294
 
2135
2295
 
2136
2296
  <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"><a href="#clientauth"><code>ClientAuth</code></a></td></tr><tr><td align="left"><code>email</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>password</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
2137
- <h4 id="returns-58">Returns</h4>
2297
+ <h4 id="returns-64">Returns</h4>
2138
2298
  <p><code>Promise</code>&#x3C;<a href="#clientusercredential"><code>ClientUserCredential</code></a>></p>
2139
2299
  <hr>
2140
2300
  <p><a id="createworkerreplacement"></a></p>
2141
2301
  <h3 id="createworkerreplacement">createWorkerReplacement()</h3>
2142
2302
  <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"> createWorkerReplacement</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">options</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">WorkerReplacementOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">WorkerReplacement</span><span style="color:#ABB2BF">;</span></span></code></pre>
2143
2303
  <p>Coordinate one reload per page after the old SharedWorker announces retirement.</p>
2144
- <h4 id="parameters-42">Parameters</h4>
2304
+ <h4 id="parameters-43">Parameters</h4>
2145
2305
  <div class="table-scroll">
2146
2306
 
2147
2307
 
@@ -2156,13 +2316,13 @@ Present for surface parity so app code that calls it doesn’t break.</p>
2156
2316
 
2157
2317
 
2158
2318
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>options</code></td><td align="left"><code>WorkerReplacementOptions</code></td></tr></tbody></table></div>
2159
- <h4 id="returns-59">Returns</h4>
2319
+ <h4 id="returns-65">Returns</h4>
2160
2320
  <p><a href="#workerreplacement"><code>WorkerReplacement</code></a></p>
2161
2321
  <hr>
2162
2322
  <p><a id="deletedoc"></a></p>
2163
2323
  <h3 id="deletedoc">deleteDoc()</h3>
2164
2324
  <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">DocRefHandle</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>
2165
- <h4 id="parameters-43">Parameters</h4>
2325
+ <h4 id="parameters-44">Parameters</h4>
2166
2326
  <div class="table-scroll">
2167
2327
 
2168
2328
 
@@ -2177,13 +2337,13 @@ Present for surface parity so app code that calls it doesn’t break.</p>
2177
2337
 
2178
2338
 
2179
2339
  <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="#docrefhandle"><code>DocRefHandle</code></a></td></tr></tbody></table></div>
2180
- <h4 id="returns-60">Returns</h4>
2340
+ <h4 id="returns-66">Returns</h4>
2181
2341
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
2182
2342
  <hr>
2183
2343
  <p><a id="deletefield"></a></p>
2184
2344
  <h3 id="deletefield">deleteField()</h3>
2185
2345
  <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">SentinelMarker</span><span style="color:#ABB2BF">;</span></span></code></pre>
2186
- <h4 id="returns-61">Returns</h4>
2346
+ <h4 id="returns-67">Returns</h4>
2187
2347
  <p><code>SentinelMarker</code></p>
2188
2348
  <hr>
2189
2349
  <p><a id="deleteobject"></a></p>
@@ -2191,7 +2351,7 @@ Present for surface parity so app code that calls it doesn’t break.</p>
2191
2351
  <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"> deleteObject</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">reference</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientStorageReference</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>
2192
2352
  <p>Delete the object at the reference’s path (idempotent — missing = no-op,
2193
2353
  matching the sandbox backend’s delete semantics).</p>
2194
- <h4 id="parameters-44">Parameters</h4>
2354
+ <h4 id="parameters-45">Parameters</h4>
2195
2355
  <div class="table-scroll">
2196
2356
 
2197
2357
 
@@ -2206,14 +2366,14 @@ matching the sandbox backend’s delete semantics).</p>
2206
2366
 
2207
2367
 
2208
2368
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>reference</code></td><td align="left"><a href="#clientstoragereference"><code>ClientStorageReference</code></a></td></tr></tbody></table></div>
2209
- <h4 id="returns-62">Returns</h4>
2369
+ <h4 id="returns-68">Returns</h4>
2210
2370
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
2211
2371
  <hr>
2212
2372
  <p><a id="deleteworkerbranch"></a></p>
2213
2373
  <h3 id="deleteworkerbranch">deleteWorkerBranch()</h3>
2214
2374
  <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"> deleteWorkerBranch</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientDb</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">name</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</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>
2215
2375
  <p>Phase 3: delete a named branch.</p>
2216
- <h4 id="parameters-45">Parameters</h4>
2376
+ <h4 id="parameters-46">Parameters</h4>
2217
2377
  <div class="table-scroll">
2218
2378
 
2219
2379
 
@@ -2232,13 +2392,13 @@ matching the sandbox backend’s delete semantics).</p>
2232
2392
 
2233
2393
 
2234
2394
  <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="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>name</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
2235
- <h4 id="returns-63">Returns</h4>
2395
+ <h4 id="returns-69">Returns</h4>
2236
2396
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
2237
2397
  <hr>
2238
2398
  <p><a id="disconnectclient"></a></p>
2239
2399
  <h3 id="disconnectclient">disconnectClient()</h3>
2240
2400
  <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"> disconnectClient</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientDb</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">options</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">DisconnectClientOptions</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>
2241
- <h4 id="parameters-46">Parameters</h4>
2401
+ <h4 id="parameters-47">Parameters</h4>
2242
2402
  <div class="table-scroll">
2243
2403
 
2244
2404
 
@@ -2257,7 +2417,7 @@ matching the sandbox backend’s delete semantics).</p>
2257
2417
 
2258
2418
 
2259
2419
  <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="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>options?</code></td><td align="left"><a href="#disconnectclientoptions"><code>DisconnectClientOptions</code></a></td></tr></tbody></table></div>
2260
- <h4 id="returns-64">Returns</h4>
2420
+ <h4 id="returns-70">Returns</h4>
2261
2421
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
2262
2422
  <hr>
2263
2423
  <p><a id="doc"></a></p>
@@ -2267,7 +2427,7 @@ matching the sandbox backend’s delete semantics).</p>
2267
2427
  <p>WHY CLIENT-SIDE: Firebase’s <code>doc()</code> is synchronous and path-only — it
2268
2428
  needs no data from the sandbox. We build a descriptor object here and
2269
2429
  include the port so execution calls can route to the worker.</p>
2270
- <h4 id="parameters-47">Parameters</h4>
2430
+ <h4 id="parameters-48">Parameters</h4>
2271
2431
  <div class="table-scroll">
2272
2432
 
2273
2433
 
@@ -2286,13 +2446,13 @@ include the port so execution calls can route to the worker.</p>
2286
2446
 
2287
2447
 
2288
2448
  <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="#clientdb"><code>ClientDb</code></a> | <a href="#collrefhandle"><code>CollRefHandle</code></a></td></tr><tr><td align="left">…<code>pathSegments</code></td><td align="left"><code>string</code>[]</td></tr></tbody></table></div>
2289
- <h4 id="returns-65">Returns</h4>
2449
+ <h4 id="returns-71">Returns</h4>
2290
2450
  <p><a href="#docrefhandle"><code>DocRefHandle</code></a></p>
2291
2451
  <hr>
2292
2452
  <p><a id="endat"></a></p>
2293
2453
  <h3 id="endat">endAt()</h3>
2294
2454
  <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">QueryConstraintHandle</span><span style="color:#ABB2BF">;</span></span></code></pre>
2295
- <h4 id="parameters-48">Parameters</h4>
2455
+ <h4 id="parameters-49">Parameters</h4>
2296
2456
  <div class="table-scroll">
2297
2457
 
2298
2458
 
@@ -2307,13 +2467,13 @@ include the port so execution calls can route to the worker.</p>
2307
2467
 
2308
2468
 
2309
2469
  <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>
2310
- <h4 id="returns-66">Returns</h4>
2470
+ <h4 id="returns-72">Returns</h4>
2311
2471
  <p><code>QueryConstraintHandle</code></p>
2312
2472
  <hr>
2313
2473
  <p><a id="endbefore"></a></p>
2314
2474
  <h3 id="endbefore">endBefore()</h3>
2315
2475
  <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">QueryConstraintHandle</span><span style="color:#ABB2BF">;</span></span></code></pre>
2316
- <h4 id="parameters-49">Parameters</h4>
2476
+ <h4 id="parameters-50">Parameters</h4>
2317
2477
  <div class="table-scroll">
2318
2478
 
2319
2479
 
@@ -2328,7 +2488,7 @@ include the port so execution calls can route to the worker.</p>
2328
2488
 
2329
2489
 
2330
2490
  <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>
2331
- <h4 id="returns-67">Returns</h4>
2491
+ <h4 id="returns-73">Returns</h4>
2332
2492
  <p><code>QueryConstraintHandle</code></p>
2333
2493
  <hr>
2334
2494
  <p><a id="eventhistory"></a></p>
@@ -2338,7 +2498,7 @@ include the port so execution calls can route to the worker.</p>
2338
2498
  so far). Opens a transient stream sub, resolves with the initial history
2339
2499
  batch, and tears the sub down immediately — so it never holds a live
2340
2500
  subscription. Useful for a late, snapshot-only consumer.</p>
2341
- <h4 id="parameters-50">Parameters</h4>
2501
+ <h4 id="parameters-51">Parameters</h4>
2342
2502
  <div class="table-scroll">
2343
2503
 
2344
2504
 
@@ -2353,7 +2513,7 @@ subscription. Useful for a late, snapshot-only consumer.</p>
2353
2513
 
2354
2514
 
2355
2515
  <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="#clientdb"><code>ClientDb</code></a></td></tr></tbody></table></div>
2356
- <h4 id="returns-68">Returns</h4>
2516
+ <h4 id="returns-74">Returns</h4>
2357
2517
  <p><code>Promise</code>&#x3C;readonly <a href="/docs/pyric-sandbox-reference-api/#sandboxevent"><code>SandboxEvent</code></a>[]></p>
2358
2518
  <hr>
2359
2519
  <p><a id="exportworkerstate"></a></p>
@@ -2362,7 +2522,7 @@ subscription. Useful for a late, snapshot-only consumer.</p>
2362
2522
  <p>Phase 2 (transfer): export the FULL sandbox state as a portable bundle string
2363
2523
  (the chunk format the persist layer uses, so wrapper types round-trip). Save
2364
2524
  it to a file and <a href="#importworkerstate">importWorkerState</a> it into another instance.</p>
2365
- <h4 id="parameters-51">Parameters</h4>
2525
+ <h4 id="parameters-52">Parameters</h4>
2366
2526
  <div class="table-scroll">
2367
2527
 
2368
2528
 
@@ -2377,13 +2537,13 @@ it to a file and <a href="#importworkerstate">importWorkerState</a> it into anot
2377
2537
 
2378
2538
 
2379
2539
  <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="#clientdb"><code>ClientDb</code></a></td></tr></tbody></table></div>
2380
- <h4 id="returns-69">Returns</h4>
2540
+ <h4 id="returns-75">Returns</h4>
2381
2541
  <p><code>Promise</code>&#x3C;<code>string</code>></p>
2382
2542
  <hr>
2383
2543
  <p><a id="getactiverules"></a></p>
2384
2544
  <h3 id="getactiverules">getActiveRules()</h3>
2385
2545
  <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"> getActiveRules</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientDb</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">ClientRtdb</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">service</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"firestore"</span><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"database"</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">>;</span></span></code></pre>
2386
- <h4 id="parameters-52">Parameters</h4>
2546
+ <h4 id="parameters-53">Parameters</h4>
2387
2547
  <div class="table-scroll">
2388
2548
 
2389
2549
 
@@ -2402,7 +2562,7 @@ it to a file and <a href="#importworkerstate">importWorkerState</a> it into anot
2402
2562
 
2403
2563
 
2404
2564
  <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="#clientdb"><code>ClientDb</code></a> | <a href="#clientrtdb"><code>ClientRtdb</code></a></td></tr><tr><td align="left"><code>service?</code></td><td align="left"><code>"firestore"</code> | <code>"database"</code></td></tr></tbody></table></div>
2405
- <h4 id="returns-70">Returns</h4>
2565
+ <h4 id="returns-76">Returns</h4>
2406
2566
  <p><code>Promise</code>&#x3C;<code>unknown</code>></p>
2407
2567
  <hr>
2408
2568
  <p><a id="getaggregatefromserver"></a></p>
@@ -2427,7 +2587,7 @@ caller-chosen aliases; <code>.data()</code> returns the numbers under the same k
2427
2587
 
2428
2588
 
2429
2589
  <table><thead><tr><th align="left">Type Parameter</th></tr></thead><tbody><tr><td align="left"><code>S</code> <em>extends</em> <code>AggregateSpecDescriptor</code></td></tr></tbody></table></div>
2430
- <h4 id="parameters-53">Parameters</h4>
2590
+ <h4 id="parameters-54">Parameters</h4>
2431
2591
  <div class="table-scroll">
2432
2592
 
2433
2593
 
@@ -2446,7 +2606,7 @@ caller-chosen aliases; <code>.data()</code> returns the numbers under the same k
2446
2606
 
2447
2607
 
2448
2608
  <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="#collrefhandle"><code>CollRefHandle</code></a> | <a href="#queryhandle"><code>QueryHandle</code></a></td></tr><tr><td align="left"><code>spec</code></td><td align="left"><code>S</code></td></tr></tbody></table></div>
2449
- <h4 id="returns-71">Returns</h4>
2609
+ <h4 id="returns-77">Returns</h4>
2450
2610
  <p><code>Promise</code>&#x3C;{
2451
2611
  <code>data</code>: { [K in string | number | symbol]: number };
2452
2612
  }></p>
@@ -2461,7 +2621,7 @@ its port, the common case in serve where Firestore + auth share one
2461
2621
  worker) or a worker URL (standalone).</p>
2462
2622
  <p>The returned handle seeds its <code>currentUser</code> mirror by opening an internal
2463
2623
  authState subscription that keeps it live across tabs.</p>
2464
- <h4 id="parameters-54">Parameters</h4>
2624
+ <h4 id="parameters-55">Parameters</h4>
2465
2625
  <div class="table-scroll">
2466
2626
 
2467
2627
 
@@ -2480,7 +2640,7 @@ authState subscription that keeps it live across tabs.</p>
2480
2640
 
2481
2641
 
2482
2642
  <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"><code>string</code> | <a href="#clientdb"><code>ClientDb</code></a> | <code>URL</code></td></tr><tr><td align="left"><code>name?</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
2483
- <h4 id="returns-72">Returns</h4>
2643
+ <h4 id="returns-78">Returns</h4>
2484
2644
  <p><a href="#clientauth"><code>ClientAuth</code></a></p>
2485
2645
  <hr>
2486
2646
  <p><a id="getblob"></a></p>
@@ -2488,7 +2648,7 @@ authState subscription that keeps it live across tabs.</p>
2488
2648
  <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"> getBlob</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">reference</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientStorageReference</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">Blob</span><span style="color:#ABB2BF">>;</span></span></code></pre>
2489
2649
  <p>Read an object’s bytes as a Blob (Pyric Studio inspector preview).
2490
2650
  MessagePort-only — a Blob cannot cross the JSON bridge relay.</p>
2491
- <h4 id="parameters-55">Parameters</h4>
2651
+ <h4 id="parameters-56">Parameters</h4>
2492
2652
  <div class="table-scroll">
2493
2653
 
2494
2654
 
@@ -2503,7 +2663,7 @@ MessagePort-only — a Blob cannot cross the JSON bridge relay.</p>
2503
2663
 
2504
2664
 
2505
2665
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>reference</code></td><td align="left"><a href="#clientstoragereference"><code>ClientStorageReference</code></a></td></tr></tbody></table></div>
2506
- <h4 id="returns-73">Returns</h4>
2666
+ <h4 id="returns-79">Returns</h4>
2507
2667
  <p><code>Promise</code>&#x3C;<code>Blob</code>></p>
2508
2668
  <hr>
2509
2669
  <p><a id="getbytes"></a></p>
@@ -2511,7 +2671,7 @@ MessagePort-only — a Blob cannot cross the JSON bridge relay.</p>
2511
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"> getBytes</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">reference</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientStorageReference</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">maxDownloadSizeBytes</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">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">ArrayBuffer</span><span style="color:#ABB2BF">>;</span></span></code></pre>
2512
2672
  <p>Read an object’s bytes (JSON-safe base64 op → <code>ArrayBuffer</code>). Mirrors
2513
2673
  <code>pyric/storage</code>’s <code>getBytes</code>, including the optional client-side cap.</p>
2514
- <h4 id="parameters-56">Parameters</h4>
2674
+ <h4 id="parameters-57">Parameters</h4>
2515
2675
  <div class="table-scroll">
2516
2676
 
2517
2677
 
@@ -2530,7 +2690,7 @@ MessagePort-only — a Blob cannot cross the JSON bridge relay.</p>
2530
2690
 
2531
2691
 
2532
2692
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>reference</code></td><td align="left"><a href="#clientstoragereference"><code>ClientStorageReference</code></a></td></tr><tr><td align="left"><code>maxDownloadSizeBytes?</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
2533
- <h4 id="returns-74">Returns</h4>
2693
+ <h4 id="returns-80">Returns</h4>
2534
2694
  <p><code>Promise</code>&#x3C;<code>ArrayBuffer</code>></p>
2535
2695
  <hr>
2536
2696
  <p><a id="getcountfromserver"></a></p>
@@ -2540,7 +2700,7 @@ MessagePort-only — a Blob cannot cross the JSON bridge relay.</p>
2540
2700
  <span class="line"><span style="color:#E06C75"> count</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">;</span></span>
2541
2701
  <span class="line"><span style="color:#ABB2BF"> };</span></span>
2542
2702
  <span class="line"><span style="color:#ABB2BF">}>;</span></span></code></pre>
2543
- <h4 id="parameters-57">Parameters</h4>
2703
+ <h4 id="parameters-58">Parameters</h4>
2544
2704
  <div class="table-scroll">
2545
2705
 
2546
2706
 
@@ -2555,7 +2715,7 @@ MessagePort-only — a Blob cannot cross the JSON bridge relay.</p>
2555
2715
 
2556
2716
 
2557
2717
  <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="#collrefhandle"><code>CollRefHandle</code></a> | <a href="#queryhandle"><code>QueryHandle</code></a></td></tr></tbody></table></div>
2558
- <h4 id="returns-75">Returns</h4>
2718
+ <h4 id="returns-81">Returns</h4>
2559
2719
  <p><code>Promise</code>&#x3C;{
2560
2720
  <code>data</code>: {
2561
2721
  <code>count</code>: <code>number</code>;
@@ -2565,7 +2725,7 @@ MessagePort-only — a Blob cannot cross the JSON bridge relay.</p>
2565
2725
  <p><a id="getdoc"></a></p>
2566
2726
  <h3 id="getdoc">getDoc()</h3>
2567
2727
  <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"> getDoc</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">DocRefHandle</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">ClientDocSnapshot</span><span style="color:#ABB2BF">>;</span></span></code></pre>
2568
- <h4 id="parameters-58">Parameters</h4>
2728
+ <h4 id="parameters-59">Parameters</h4>
2569
2729
  <div class="table-scroll">
2570
2730
 
2571
2731
 
@@ -2580,13 +2740,13 @@ MessagePort-only — a Blob cannot cross the JSON bridge relay.</p>
2580
2740
 
2581
2741
 
2582
2742
  <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="#docrefhandle"><code>DocRefHandle</code></a></td></tr></tbody></table></div>
2583
- <h4 id="returns-76">Returns</h4>
2743
+ <h4 id="returns-82">Returns</h4>
2584
2744
  <p><code>Promise</code>&#x3C;<a href="#clientdocsnapshot"><code>ClientDocSnapshot</code></a>></p>
2585
2745
  <hr>
2586
2746
  <p><a id="getdocs"></a></p>
2587
2747
  <h3 id="getdocs">getDocs()</h3>
2588
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"> getDocs</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">source</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">CollRefHandle</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">QueryHandle</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">ClientQuerySnapshot</span><span style="color:#ABB2BF">>;</span></span></code></pre>
2589
- <h4 id="parameters-59">Parameters</h4>
2749
+ <h4 id="parameters-60">Parameters</h4>
2590
2750
  <div class="table-scroll">
2591
2751
 
2592
2752
 
@@ -2601,14 +2761,14 @@ MessagePort-only — a Blob cannot cross the JSON bridge relay.</p>
2601
2761
 
2602
2762
 
2603
2763
  <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="#collrefhandle"><code>CollRefHandle</code></a> | <a href="#queryhandle"><code>QueryHandle</code></a></td></tr></tbody></table></div>
2604
- <h4 id="returns-77">Returns</h4>
2764
+ <h4 id="returns-83">Returns</h4>
2605
2765
  <p><code>Promise</code>&#x3C;<a href="#clientquerysnapshot"><code>ClientQuerySnapshot</code></a>></p>
2606
2766
  <hr>
2607
2767
  <p><a id="getdownloadurl"></a></p>
2608
2768
  <h3 id="getdownloadurl">getDownloadURL()</h3>
2609
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"> getDownloadURL</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">reference</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientStorageReference</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">>;</span></span></code></pre>
2610
2770
  <p>Return a page-owned URL for an object read through the SharedWorker.</p>
2611
- <h4 id="parameters-60">Parameters</h4>
2771
+ <h4 id="parameters-61">Parameters</h4>
2612
2772
  <div class="table-scroll">
2613
2773
 
2614
2774
 
@@ -2623,7 +2783,7 @@ MessagePort-only — a Blob cannot cross the JSON bridge relay.</p>
2623
2783
 
2624
2784
 
2625
2785
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>reference</code></td><td align="left"><a href="#clientstoragereference"><code>ClientStorageReference</code></a></td></tr></tbody></table></div>
2626
- <h4 id="returns-78">Returns</h4>
2786
+ <h4 id="returns-84">Returns</h4>
2627
2787
  <p><code>Promise</code>&#x3C;<code>string</code>></p>
2628
2788
  <hr>
2629
2789
  <p><a id="getfirestore"></a></p>
@@ -2632,7 +2792,7 @@ MessagePort-only — a Blob cannot cross the JSON bridge relay.</p>
2632
2792
  <span class="line"><span style="color:#E06C75;font-style:italic"> workerUrl</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">URL</span><span style="color:#ABB2BF">,</span></span>
2633
2793
  <span class="line"><span style="color:#E06C75;font-style:italic"> name</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
2634
2794
  <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">SharedWorkerConnectionOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">ClientDb</span><span style="color:#ABB2BF">;</span></span></code></pre>
2635
- <h4 id="parameters-61">Parameters</h4>
2795
+ <h4 id="parameters-62">Parameters</h4>
2636
2796
  <div class="table-scroll">
2637
2797
 
2638
2798
 
@@ -2655,14 +2815,14 @@ MessagePort-only — a Blob cannot cross the JSON bridge relay.</p>
2655
2815
 
2656
2816
 
2657
2817
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>workerUrl</code></td><td align="left"><code>string</code> | <code>URL</code></td></tr><tr><td align="left"><code>name?</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>options?</code></td><td align="left"><code>SharedWorkerConnectionOptions</code></td></tr></tbody></table></div>
2658
- <h4 id="returns-79">Returns</h4>
2818
+ <h4 id="returns-85">Returns</h4>
2659
2819
  <p><a href="#clientdb"><code>ClientDb</code></a></p>
2660
2820
  <hr>
2661
2821
  <p><a id="getidtoken-2"></a></p>
2662
2822
  <h3 id="getidtoken-1">getIdToken()</h3>
2663
2823
  <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"> getIdToken</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">user</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientUser</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">forceRefresh</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">boolean</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">>;</span></span></code></pre>
2664
2824
  <p>Top-level mirror of <code>firebase/auth</code>’s <code>getIdToken(user)</code>.</p>
2665
- <h4 id="parameters-62">Parameters</h4>
2825
+ <h4 id="parameters-63">Parameters</h4>
2666
2826
  <div class="table-scroll">
2667
2827
 
2668
2828
 
@@ -2681,14 +2841,14 @@ MessagePort-only — a Blob cannot cross the JSON bridge relay.</p>
2681
2841
 
2682
2842
 
2683
2843
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>user</code></td><td align="left"><a href="#clientuser"><code>ClientUser</code></a></td></tr><tr><td align="left"><code>forceRefresh?</code></td><td align="left"><code>boolean</code></td></tr></tbody></table></div>
2684
- <h4 id="returns-80">Returns</h4>
2844
+ <h4 id="returns-86">Returns</h4>
2685
2845
  <p><code>Promise</code>&#x3C;<code>string</code>></p>
2686
2846
  <hr>
2687
2847
  <p><a id="getidtokenresult-2"></a></p>
2688
2848
  <h3 id="getidtokenresult-1">getIdTokenResult()</h3>
2689
2849
  <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"> getIdTokenResult</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">user</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientUser</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">forceRefresh</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">boolean</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">SerializedIdTokenResult</span><span style="color:#ABB2BF">>;</span></span></code></pre>
2690
2850
  <p>Top-level mirror of <code>firebase/auth</code>’s <code>getIdTokenResult(user)</code>.</p>
2691
- <h4 id="parameters-63">Parameters</h4>
2851
+ <h4 id="parameters-64">Parameters</h4>
2692
2852
  <div class="table-scroll">
2693
2853
 
2694
2854
 
@@ -2707,21 +2867,21 @@ MessagePort-only — a Blob cannot cross the JSON bridge relay.</p>
2707
2867
 
2708
2868
 
2709
2869
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>user</code></td><td align="left"><a href="#clientuser"><code>ClientUser</code></a></td></tr><tr><td align="left"><code>forceRefresh?</code></td><td align="left"><code>boolean</code></td></tr></tbody></table></div>
2710
- <h4 id="returns-81">Returns</h4>
2870
+ <h4 id="returns-87">Returns</h4>
2711
2871
  <p><code>Promise</code>&#x3C;<a href="#serializedidtokenresult"><code>SerializedIdTokenResult</code></a>></p>
2712
2872
  <hr>
2713
2873
  <p><a id="getlens"></a></p>
2714
2874
  <h3 id="getlens">getLens()</h3>
2715
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">function</span><span style="color:#61AFEF"> getLens</span><span style="color:#ABB2BF">(): </span><span style="color:#E5C07B">AuthLens</span><span style="color:#ABB2BF">;</span></span></code></pre>
2716
2876
  <p>The active default lens (read-only view), for Studio UI to reflect state.</p>
2717
- <h4 id="returns-82">Returns</h4>
2877
+ <h4 id="returns-88">Returns</h4>
2718
2878
  <p><a href="/docs/pyric-sandbox-reference-api/#authlens-2"><code>AuthLens</code></a></p>
2719
2879
  <hr>
2720
2880
  <p><a id="getmetadata"></a></p>
2721
2881
  <h3 id="getmetadata">getMetadata()</h3>
2722
2882
  <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"> getMetadata</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">reference</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientStorageReference</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">FullMetadata</span><span style="color:#ABB2BF">>;</span></span></code></pre>
2723
2883
  <p>Read an object’s metadata (Pyric Studio inspector).</p>
2724
- <h4 id="parameters-64">Parameters</h4>
2884
+ <h4 id="parameters-65">Parameters</h4>
2725
2885
  <div class="table-scroll">
2726
2886
 
2727
2887
 
@@ -2736,7 +2896,7 @@ MessagePort-only — a Blob cannot cross the JSON bridge relay.</p>
2736
2896
 
2737
2897
 
2738
2898
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>reference</code></td><td align="left"><a href="#clientstoragereference"><code>ClientStorageReference</code></a></td></tr></tbody></table></div>
2739
- <h4 id="returns-83">Returns</h4>
2899
+ <h4 id="returns-89">Returns</h4>
2740
2900
  <p><code>Promise</code>&#x3C;<a href="/docs/pyric-storage-reference-api/#fullmetadata"><code>FullMetadata</code></a>></p>
2741
2901
  <hr>
2742
2902
  <p><a id="getproviderconfig"></a></p>
@@ -2745,7 +2905,7 @@ MessagePort-only — a Blob cannot cross the JSON bridge relay.</p>
2745
2905
  <span class="line"><span style="color:#E06C75"> enabled</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">boolean</span><span style="color:#ABB2BF">;</span></span>
2746
2906
  <span class="line"><span style="color:#E06C75"> providerId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span>
2747
2907
  <span class="line"><span style="color:#ABB2BF">}[]>;</span></span></code></pre>
2748
- <h4 id="parameters-65">Parameters</h4>
2908
+ <h4 id="parameters-66">Parameters</h4>
2749
2909
  <div class="table-scroll">
2750
2910
 
2751
2911
 
@@ -2760,7 +2920,7 @@ MessagePort-only — a Blob cannot cross the JSON bridge relay.</p>
2760
2920
 
2761
2921
 
2762
2922
  <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"><a href="#clientauth"><code>ClientAuth</code></a></td></tr></tbody></table></div>
2763
- <h4 id="returns-84">Returns</h4>
2923
+ <h4 id="returns-90">Returns</h4>
2764
2924
  <p><code>Promise</code>&#x3C;{
2765
2925
  <code>enabled</code>: <code>boolean</code>;
2766
2926
  <code>providerId</code>: <code>string</code>;
@@ -2769,7 +2929,7 @@ MessagePort-only — a Blob cannot cross the JSON bridge relay.</p>
2769
2929
  <p><a id="getrulesstatus"></a></p>
2770
2930
  <h3 id="getrulesstatus">getRulesStatus()</h3>
2771
2931
  <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"> getRulesStatus</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientDb</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">ClientRtdb</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">service</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"firestore"</span><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"database"</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">>;</span></span></code></pre>
2772
- <h4 id="parameters-66">Parameters</h4>
2932
+ <h4 id="parameters-67">Parameters</h4>
2773
2933
  <div class="table-scroll">
2774
2934
 
2775
2935
 
@@ -2788,7 +2948,7 @@ MessagePort-only — a Blob cannot cross the JSON bridge relay.</p>
2788
2948
 
2789
2949
 
2790
2950
  <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="#clientdb"><code>ClientDb</code></a> | <a href="#clientrtdb"><code>ClientRtdb</code></a></td></tr><tr><td align="left"><code>service?</code></td><td align="left"><code>"firestore"</code> | <code>"database"</code></td></tr></tbody></table></div>
2791
- <h4 id="returns-85">Returns</h4>
2951
+ <h4 id="returns-91">Returns</h4>
2792
2952
  <p><code>Promise</code>&#x3C;<code>unknown</code>></p>
2793
2953
  <hr>
2794
2954
  <p><a id="getsnapshot"></a></p>
@@ -2797,7 +2957,7 @@ MessagePort-only — a Blob cannot cross the JSON bridge relay.</p>
2797
2957
  <p>Export the current sandbox snapshot (Pyric Studio rules re-run). Studio forks
2798
2958
  it locally to test a denied op against edited rules or re-issue it as the
2799
2959
  attempting user, on a throwaway branch (no live mutation).</p>
2800
- <h4 id="parameters-67">Parameters</h4>
2960
+ <h4 id="parameters-68">Parameters</h4>
2801
2961
  <div class="table-scroll">
2802
2962
 
2803
2963
 
@@ -2812,15 +2972,18 @@ attempting user, on a throwaway branch (no live mutation).</p>
2812
2972
 
2813
2973
 
2814
2974
  <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="#clientdb"><code>ClientDb</code></a></td></tr></tbody></table></div>
2815
- <h4 id="returns-86">Returns</h4>
2975
+ <h4 id="returns-92">Returns</h4>
2816
2976
  <p><code>Promise</code>&#x3C;<a href="/docs/pyric-sandbox-reference-api/#sandboxsnapshot"><code>SandboxSnapshot</code></a>></p>
2817
2977
  <hr>
2818
2978
  <p><a id="getstorage"></a></p>
2819
2979
  <h3 id="getstorage">getStorage()</h3>
2820
- <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"> getStorage</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">source</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">ClientDb</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">URL</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">name</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">ClientFirebaseStorage</span><span style="color:#ABB2BF">;</span></span></code></pre>
2980
+ <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"> getStorage</span><span style="color:#ABB2BF">(</span></span>
2981
+ <span class="line"><span style="color:#E06C75;font-style:italic"> source</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">ClientDb</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">URL</span><span style="color:#ABB2BF">,</span></span>
2982
+ <span class="line"><span style="color:#E06C75;font-style:italic"> name</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
2983
+ <span class="line"><span style="color:#E06C75;font-style:italic"> bucketUrl</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">ClientFirebaseStorage</span><span style="color:#ABB2BF">;</span></span></code></pre>
2821
2984
  <p>Get the worker-backed Storage handle. Like <code>getAuth</code>, accepts an existing
2822
2985
  <code>ClientDb</code> (reusing its port) or a worker URL (standalone).</p>
2823
- <h4 id="parameters-68">Parameters</h4>
2986
+ <h4 id="parameters-69">Parameters</h4>
2824
2987
  <div class="table-scroll">
2825
2988
 
2826
2989
 
@@ -2838,8 +3001,12 @@ attempting user, on a throwaway branch (no live mutation).</p>
2838
3001
 
2839
3002
 
2840
3003
 
2841
- <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"><code>string</code> | <a href="#clientdb"><code>ClientDb</code></a> | <code>URL</code></td></tr><tr><td align="left"><code>name?</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
2842
- <h4 id="returns-87">Returns</h4>
3004
+
3005
+
3006
+
3007
+
3008
+ <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"><code>string</code> | <a href="#clientdb"><code>ClientDb</code></a> | <code>URL</code></td></tr><tr><td align="left"><code>name?</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>bucketUrl?</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
3009
+ <h4 id="returns-93">Returns</h4>
2843
3010
  <p><a href="#clientfirebasestorage"><code>ClientFirebaseStorage</code></a></p>
2844
3011
  <hr>
2845
3012
  <p><a id="getworkerinstanceid"></a></p>
@@ -2850,7 +3017,7 @@ Studio renders a human-friendly form so a user can tell which sandbox instance
2850
3017
  they’re looking at — the same <code>localhost:&#x3C;port></code> in a different browser profile
2851
3018
  is a SEPARATE sandbox (a separate SharedWorker + IndexedDB), and this is how
2852
3019
  the two are told apart.</p>
2853
- <h4 id="parameters-69">Parameters</h4>
3020
+ <h4 id="parameters-70">Parameters</h4>
2854
3021
  <div class="table-scroll">
2855
3022
 
2856
3023
 
@@ -2865,7 +3032,7 @@ the two are told apart.</p>
2865
3032
 
2866
3033
 
2867
3034
  <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="#clientdb"><code>ClientDb</code></a></td></tr></tbody></table></div>
2868
- <h4 id="returns-88">Returns</h4>
3035
+ <h4 id="returns-94">Returns</h4>
2869
3036
  <p><code>Promise</code>&#x3C;<code>string</code>></p>
2870
3037
  <hr>
2871
3038
  <p><a id="getworkerversion"></a></p>
@@ -2876,7 +3043,7 @@ the two are told apart.</p>
2876
3043
  <p>Ask the worker for its baked build version (staleness guard). The page
2877
3044
  compares it to the served bundle version and warns when a still-running OLD
2878
3045
  worker is older than what’s served (a SharedWorker can’t hot-update).</p>
2879
- <h4 id="parameters-70">Parameters</h4>
3046
+ <h4 id="parameters-71">Parameters</h4>
2880
3047
  <div class="table-scroll">
2881
3048
 
2882
3049
 
@@ -2899,14 +3066,14 @@ worker is older than what’s served (a SharedWorker can’t hot-update).</p>
2899
3066
 
2900
3067
 
2901
3068
  <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="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>options?</code></td><td align="left">{ <code>timeoutMs?</code>: <code>number</code>; }</td></tr><tr><td align="left"><code>options.timeoutMs?</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
2902
- <h4 id="returns-89">Returns</h4>
3069
+ <h4 id="returns-95">Returns</h4>
2903
3070
  <p><code>Promise</code>&#x3C;<code>string</code>></p>
2904
3071
  <hr>
2905
3072
  <p><a id="importworkerstate"></a></p>
2906
3073
  <h3 id="importworkerstate">importWorkerState()</h3>
2907
3074
  <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"> importWorkerState</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientDb</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">bundle</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</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>
2908
3075
  <p>Phase 2 (clobber): replace this sandbox’s ENTIRE state with <code>bundle</code>.</p>
2909
- <h4 id="parameters-71">Parameters</h4>
3076
+ <h4 id="parameters-72">Parameters</h4>
2910
3077
  <div class="table-scroll">
2911
3078
 
2912
3079
 
@@ -2925,13 +3092,13 @@ worker is older than what’s served (a SharedWorker can’t hot-update).</p>
2925
3092
 
2926
3093
 
2927
3094
  <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="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>bundle</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
2928
- <h4 id="returns-90">Returns</h4>
3095
+ <h4 id="returns-96">Returns</h4>
2929
3096
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
2930
3097
  <hr>
2931
3098
  <p><a id="increment"></a></p>
2932
3099
  <h3 id="increment">increment()</h3>
2933
3100
  <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">SentinelMarker</span><span style="color:#ABB2BF">;</span></span></code></pre>
2934
- <h4 id="parameters-72">Parameters</h4>
3101
+ <h4 id="parameters-73">Parameters</h4>
2935
3102
  <div class="table-scroll">
2936
3103
 
2937
3104
 
@@ -2946,13 +3113,13 @@ worker is older than what’s served (a SharedWorker can’t hot-update).</p>
2946
3113
 
2947
3114
 
2948
3115
  <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>
2949
- <h4 id="returns-91">Returns</h4>
3116
+ <h4 id="returns-97">Returns</h4>
2950
3117
  <p><code>SentinelMarker</code></p>
2951
3118
  <hr>
2952
3119
  <p><a id="limit"></a></p>
2953
3120
  <h3 id="limit">limit()</h3>
2954
3121
  <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">QueryConstraintHandle</span><span style="color:#ABB2BF">;</span></span></code></pre>
2955
- <h4 id="parameters-73">Parameters</h4>
3122
+ <h4 id="parameters-74">Parameters</h4>
2956
3123
  <div class="table-scroll">
2957
3124
 
2958
3125
 
@@ -2967,13 +3134,13 @@ worker is older than what’s served (a SharedWorker can’t hot-update).</p>
2967
3134
 
2968
3135
 
2969
3136
  <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>
2970
- <h4 id="returns-92">Returns</h4>
3137
+ <h4 id="returns-98">Returns</h4>
2971
3138
  <p><code>QueryConstraintHandle</code></p>
2972
3139
  <hr>
2973
3140
  <p><a id="limittolast"></a></p>
2974
3141
  <h3 id="limittolast">limitToLast()</h3>
2975
3142
  <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"> limitToLast</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">QueryConstraintHandle</span><span style="color:#ABB2BF">;</span></span></code></pre>
2976
- <h4 id="parameters-74">Parameters</h4>
3143
+ <h4 id="parameters-75">Parameters</h4>
2977
3144
  <div class="table-scroll">
2978
3145
 
2979
3146
 
@@ -2988,7 +3155,7 @@ worker is older than what’s served (a SharedWorker can’t hot-update).</p>
2988
3155
 
2989
3156
 
2990
3157
  <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>
2991
- <h4 id="returns-93">Returns</h4>
3158
+ <h4 id="returns-99">Returns</h4>
2992
3159
  <p><code>QueryConstraintHandle</code></p>
2993
3160
  <hr>
2994
3161
  <p><a id="listall"></a></p>
@@ -2999,7 +3166,7 @@ worker is older than what’s served (a SharedWorker can’t hot-update).</p>
2999
3166
  <span class="line"><span style="color:#ABB2BF">}>;</span></span></code></pre>
3000
3167
  <p>Enumerate immediate child items + sub-prefixes under a ref (Pyric Studio
3001
3168
  data browse). The host enforces <code>read</code> rules on the scanned prefix.</p>
3002
- <h4 id="parameters-75">Parameters</h4>
3169
+ <h4 id="parameters-76">Parameters</h4>
3003
3170
  <div class="table-scroll">
3004
3171
 
3005
3172
 
@@ -3014,7 +3181,7 @@ data browse). The host enforces <code>read</code> rules on the scanned prefix.</
3014
3181
 
3015
3182
 
3016
3183
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>reference</code></td><td align="left"><a href="#clientstoragereference"><code>ClientStorageReference</code></a></td></tr></tbody></table></div>
3017
- <h4 id="returns-94">Returns</h4>
3184
+ <h4 id="returns-100">Returns</h4>
3018
3185
  <p><code>Promise</code>&#x3C;{
3019
3186
  <code>items</code>: <a href="#clientstoragereference"><code>ClientStorageReference</code></a>[];
3020
3187
  <code>prefixes</code>: <a href="#clientstoragereference"><code>ClientStorageReference</code></a>[];
@@ -3027,7 +3194,7 @@ data browse). The host enforces <code>read</code> rules on the scanned prefix.</
3027
3194
  no client <code>listCollections</code>, so the host scans the sandbox keyspace and
3028
3195
  returns the ids. Lens is attached (via dataRpc) but the host enumeration is
3029
3196
  lens-independent.</p>
3030
- <h4 id="parameters-76">Parameters</h4>
3197
+ <h4 id="parameters-77">Parameters</h4>
3031
3198
  <div class="table-scroll">
3032
3199
 
3033
3200
 
@@ -3042,14 +3209,14 @@ lens-independent.</p>
3042
3209
 
3043
3210
 
3044
3211
  <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="#clientdb"><code>ClientDb</code></a></td></tr></tbody></table></div>
3045
- <h4 id="returns-95">Returns</h4>
3212
+ <h4 id="returns-101">Returns</h4>
3046
3213
  <p><code>Promise</code>&#x3C;<code>string</code>[]></p>
3047
3214
  <hr>
3048
3215
  <p><a id="listsubcollections"></a></p>
3049
3216
  <h3 id="listsubcollections">listSubcollections()</h3>
3050
3217
  <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"> listSubcollections</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientDb</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">docPath</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">[]>;</span></span></code></pre>
3051
3218
  <p>Enumerate subcollection ids under a document path (Pyric Studio data browse).</p>
3052
- <h4 id="parameters-77">Parameters</h4>
3219
+ <h4 id="parameters-78">Parameters</h4>
3053
3220
  <div class="table-scroll">
3054
3221
 
3055
3222
 
@@ -3068,13 +3235,13 @@ lens-independent.</p>
3068
3235
 
3069
3236
 
3070
3237
  <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="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>docPath</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
3071
- <h4 id="returns-96">Returns</h4>
3238
+ <h4 id="returns-102">Returns</h4>
3072
3239
  <p><code>Promise</code>&#x3C;<code>string</code>[]></p>
3073
3240
  <hr>
3074
3241
  <p><a id="listusers"></a></p>
3075
3242
  <h3 id="listusers">listUsers()</h3>
3076
3243
  <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"> listUsers</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">auth</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientAuth</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">AuthUserRecord</span><span style="color:#ABB2BF">[]>;</span></span></code></pre>
3077
- <h4 id="parameters-78">Parameters</h4>
3244
+ <h4 id="parameters-79">Parameters</h4>
3078
3245
  <div class="table-scroll">
3079
3246
 
3080
3247
 
@@ -3089,14 +3256,14 @@ lens-independent.</p>
3089
3256
 
3090
3257
 
3091
3258
  <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"><a href="#clientauth"><code>ClientAuth</code></a></td></tr></tbody></table></div>
3092
- <h4 id="returns-97">Returns</h4>
3259
+ <h4 id="returns-103">Returns</h4>
3093
3260
  <p><code>Promise</code>&#x3C;<a href="/docs/pyric-auth-reference-api/#authuserrecord"><code>AuthUserRecord</code></a>[]></p>
3094
3261
  <hr>
3095
3262
  <p><a id="listworkerbranches"></a></p>
3096
3263
  <h3 id="listworkerbranches">listWorkerBranches()</h3>
3097
3264
  <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"> listWorkerBranches</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientDb</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">[]>;</span></span></code></pre>
3098
3265
  <p>Phase 3: list this instance’s saved branch names.</p>
3099
- <h4 id="parameters-79">Parameters</h4>
3266
+ <h4 id="parameters-80">Parameters</h4>
3100
3267
  <div class="table-scroll">
3101
3268
 
3102
3269
 
@@ -3111,14 +3278,14 @@ lens-independent.</p>
3111
3278
 
3112
3279
 
3113
3280
  <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="#clientdb"><code>ClientDb</code></a></td></tr></tbody></table></div>
3114
- <h4 id="returns-98">Returns</h4>
3281
+ <h4 id="returns-104">Returns</h4>
3115
3282
  <p><code>Promise</code>&#x3C;<code>string</code>[]></p>
3116
3283
  <hr>
3117
3284
  <p><a id="mintpresenceclientid"></a></p>
3118
3285
  <h3 id="mintpresenceclientid">mintPresenceClientId()</h3>
3119
3286
  <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"> mintPresenceClientId</span><span style="color:#ABB2BF">(): </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span></code></pre>
3120
3287
  <p>Mint a random client id (page-lifetime).</p>
3121
- <h4 id="returns-99">Returns</h4>
3288
+ <h4 id="returns-105">Returns</h4>
3122
3289
  <p><code>string</code></p>
3123
3290
  <hr>
3124
3291
  <p><a id="onauthstatechanged"></a></p>
@@ -3129,7 +3296,7 @@ lens-independent.</p>
3129
3296
  then on every change to it (#754: sessions are per-port — another tab’s
3130
3297
  sign-in is a different user, not an update to this one). Updates the
3131
3298
  handle’s <code>currentUser</code> mirror before invoking the callback.</p>
3132
- <h4 id="parameters-80">Parameters</h4>
3299
+ <h4 id="parameters-81">Parameters</h4>
3133
3300
  <div class="table-scroll">
3134
3301
 
3135
3302
 
@@ -3148,7 +3315,7 @@ handle’s <code>currentUser</code> mirror before invoking the callback.</p>
3148
3315
 
3149
3316
 
3150
3317
  <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"><a href="#clientauth"><code>ClientAuth</code></a></td></tr><tr><td align="left"><code>callback</code></td><td align="left">(<code>user</code>: <a href="#clientuser"><code>ClientUser</code></a>) => <code>void</code></td></tr></tbody></table></div>
3151
- <h4 id="returns-100">Returns</h4>
3318
+ <h4 id="returns-106">Returns</h4>
3152
3319
  <p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
3153
3320
  <hr>
3154
3321
  <p><a id="onidtokenchanged"></a></p>
@@ -3157,7 +3324,7 @@ handle’s <code>currentUser</code> mirror before invoking the callback.</p>
3157
3324
  <p>Subscribe to ID-token changes. Mirrors <code>firebase/auth</code>’s
3158
3325
  <code>onIdTokenChanged</code> — fires on THIS PORT’s identity transitions (per-port
3159
3326
  sessions, #754).</p>
3160
- <h4 id="parameters-81">Parameters</h4>
3327
+ <h4 id="parameters-82">Parameters</h4>
3161
3328
  <div class="table-scroll">
3162
3329
 
3163
3330
 
@@ -3176,7 +3343,7 @@ sessions, #754).</p>
3176
3343
 
3177
3344
 
3178
3345
  <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"><a href="#clientauth"><code>ClientAuth</code></a></td></tr><tr><td align="left"><code>callback</code></td><td align="left">(<code>user</code>: <a href="#clientuser"><code>ClientUser</code></a>) => <code>void</code></td></tr></tbody></table></div>
3179
- <h4 id="returns-101">Returns</h4>
3346
+ <h4 id="returns-107">Returns</h4>
3180
3347
  <p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
3181
3348
  <hr>
3182
3349
  <p><a id="onsnapshot"></a></p>
@@ -3193,7 +3360,7 @@ sessions, #754).</p>
3193
3360
  <p>Subscribe to a document or query. Mirrors <code>pyric/firestore</code>’s <code>onSnapshot</code>.</p>
3194
3361
  <p>Returns an <code>unsub</code> function. Sends <code>{ t:'unsub', subId }</code> to the worker
3195
3362
  to deregister the listener on the worker side.</p>
3196
- <h4 id="parameters-82">Parameters</h4>
3363
+ <h4 id="parameters-83">Parameters</h4>
3197
3364
  <div class="table-scroll">
3198
3365
 
3199
3366
 
@@ -3216,14 +3383,14 @@ to deregister the listener on the worker side.</p>
3216
3383
 
3217
3384
 
3218
3385
  <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="#docrefhandle"><code>DocRefHandle</code></a> | <a href="#collrefhandle"><code>CollRefHandle</code></a> | <a href="#queryhandle"><code>QueryHandle</code></a></td></tr><tr><td align="left"><code>callback</code></td><td align="left">(<code>snap</code>: | <a href="#clientdocsnapshot"><code>ClientDocSnapshot</code></a> | <a href="#clientquerysnapshot"><code>ClientQuerySnapshot</code></a>) => <code>void</code></td></tr><tr><td align="left"><code>errorCallback?</code></td><td align="left">(<code>err</code>: <code>unknown</code>) => <code>void</code></td></tr></tbody></table></div>
3219
- <h4 id="returns-102">Returns</h4>
3386
+ <h4 id="returns-108">Returns</h4>
3220
3387
  <p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
3221
3388
  <hr>
3222
3389
  <p><a id="onworkerruntimereload"></a></p>
3223
3390
  <h3 id="onworkerruntimereload">onWorkerRuntimeReload()</h3>
3224
3391
  <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"> onWorkerRuntimeReload</span><span style="color:#ABB2BF">(</span><span style="color:#61AFEF">listener</span><span style="color:#ABB2BF">: (</span><span style="color:#E06C75;font-style:italic">epoch</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">=></span><span style="color:#E5C07B"> void</span><span style="color:#ABB2BF">): () </span><span style="color:#C678DD">=></span><span style="color:#E5C07B"> void</span><span style="color:#ABB2BF">;</span></span></code></pre>
3225
3392
  <p>Observe the worker’s all-pages reload signal.</p>
3226
- <h4 id="parameters-83">Parameters</h4>
3393
+ <h4 id="parameters-84">Parameters</h4>
3227
3394
  <div class="table-scroll">
3228
3395
 
3229
3396
 
@@ -3238,9 +3405,9 @@ to deregister the listener on the worker side.</p>
3238
3405
 
3239
3406
 
3240
3407
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>listener</code></td><td align="left">(<code>epoch</code>: <code>string</code>) => <code>void</code></td></tr></tbody></table></div>
3241
- <h4 id="returns-103">Returns</h4>
3408
+ <h4 id="returns-109">Returns</h4>
3242
3409
  <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>
3243
- <h5 id="returns-104">Returns</h5>
3410
+ <h5 id="returns-110">Returns</h5>
3244
3411
  <p><code>void</code></p>
3245
3412
  <hr>
3246
3413
  <p><a id="or"></a></p>
@@ -3249,7 +3416,7 @@ to deregister the listener on the worker side.</p>
3249
3416
  <p>OR composite filter — at least one operand must match. Operands must be
3250
3417
  filters (<code>where()</code>, or nested <code>or()</code>/<code>and()</code>). Mirrors <code>pyric/firestore</code>’s
3251
3418
  <code>or(...)</code>; the worker rebuilds it with the real modular factory.</p>
3252
- <h4 id="parameters-84">Parameters</h4>
3419
+ <h4 id="parameters-85">Parameters</h4>
3253
3420
  <div class="table-scroll">
3254
3421
 
3255
3422
 
@@ -3264,13 +3431,13 @@ filters (<code>where()</code>, or nested <code>or()</code>/<code>and()</code>).
3264
3431
 
3265
3432
 
3266
3433
  <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"><code>QueryConstraintHandle</code>[]</td></tr></tbody></table></div>
3267
- <h4 id="returns-105">Returns</h4>
3434
+ <h4 id="returns-111">Returns</h4>
3268
3435
  <p><code>QueryConstraintHandle</code></p>
3269
3436
  <hr>
3270
3437
  <p><a id="orderby"></a></p>
3271
3438
  <h3 id="orderby">orderBy()</h3>
3272
3439
  <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:#E06C75;font-style:italic">direction</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"asc"</span><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"desc"</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">QueryConstraintHandle</span><span style="color:#ABB2BF">;</span></span></code></pre>
3273
- <h4 id="parameters-85">Parameters</h4>
3440
+ <h4 id="parameters-86">Parameters</h4>
3274
3441
  <div class="table-scroll">
3275
3442
 
3276
3443
 
@@ -3289,7 +3456,7 @@ filters (<code>where()</code>, or nested <code>or()</code>/<code>and()</code>).
3289
3456
 
3290
3457
 
3291
3458
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>field</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>direction?</code></td><td align="left"><code>"asc"</code> | <code>"desc"</code></td></tr></tbody></table></div>
3292
- <h4 id="returns-106">Returns</h4>
3459
+ <h4 id="returns-112">Returns</h4>
3293
3460
  <p><code>QueryConstraintHandle</code></p>
3294
3461
  <hr>
3295
3462
  <p><a id="ownclientuntilpagehide"></a></p>
@@ -3302,7 +3469,7 @@ filters (<code>where()</code>, or nested <code>or()</code>/<code>and()</code>).
3302
3469
  <span class="line"><span style="color:#E06C75"> dispose</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">;</span></span>
3303
3470
  <span class="line"><span style="color:#ABB2BF">};</span></span></code></pre>
3304
3471
  <p>Own a worker port until its page permanently leaves.</p>
3305
- <h4 id="parameters-86">Parameters</h4>
3472
+ <h4 id="parameters-87">Parameters</h4>
3306
3473
  <div class="table-scroll">
3307
3474
 
3308
3475
 
@@ -3325,25 +3492,25 @@ filters (<code>where()</code>, or nested <code>or()</code>/<code>and()</code>).
3325
3492
 
3326
3493
 
3327
3494
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>client</code></td><td align="left"><a href="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>events?</code></td><td align="left"><code>PagehideEvents</code></td></tr><tr><td align="left"><code>disconnectClientImpl?</code></td><td align="left"><code>Disconnect</code></td></tr></tbody></table></div>
3328
- <h4 id="returns-107">Returns</h4>
3495
+ <h4 id="returns-113">Returns</h4>
3329
3496
  <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>
3330
3497
  <span class="line"><span style="color:#E06C75"> disconnect</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Promise</span><span style="color:#56B6C2">&#x3C;</span><span style="color:#C678DD">void</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span>
3331
3498
  <span class="line"><span style="color:#E06C75"> dispose</span><span style="color:#ABB2BF">: </span><span style="color:#C678DD">void</span><span style="color:#ABB2BF">;</span></span>
3332
3499
  <span class="line"><span style="color:#ABB2BF">}</span></span></code></pre>
3333
3500
  <h5 id="disconnect">disconnect()</h5>
3334
3501
  <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">disconnect</span><span style="color:#ABB2BF">(): </span><span style="color:#E5C07B">Promise</span><span style="color:#56B6C2">&#x3C;</span><span style="color:#C678DD">void</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
3335
- <h6 id="returns-108">Returns</h6>
3502
+ <h6 id="returns-114">Returns</h6>
3336
3503
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
3337
3504
  <h5 id="dispose-1">dispose()</h5>
3338
3505
  <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">dispose</span><span style="color:#ABB2BF">(): </span><span style="color:#C678DD">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
3339
- <h6 id="returns-109">Returns</h6>
3506
+ <h6 id="returns-115">Returns</h6>
3340
3507
  <p><code>void</code></p>
3341
3508
  <hr>
3342
3509
  <p><a id="preflightworkerepochstorage"></a></p>
3343
3510
  <h3 id="preflightworkerepochstorage">preflightWorkerEpochStorage()</h3>
3344
3511
  <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"> preflightWorkerEpochStorage</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">storage</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">EpochStorage</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
3345
3512
  <p>Prove origin storage works without publishing a successor generation.</p>
3346
- <h4 id="parameters-87">Parameters</h4>
3513
+ <h4 id="parameters-88">Parameters</h4>
3347
3514
  <div class="table-scroll">
3348
3515
 
3349
3516
 
@@ -3358,7 +3525,7 @@ filters (<code>where()</code>, or nested <code>or()</code>/<code>and()</code>).
3358
3525
 
3359
3526
 
3360
3527
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>storage</code></td><td align="left"><code>EpochStorage</code></td></tr></tbody></table></div>
3361
- <h4 id="returns-110">Returns</h4>
3528
+ <h4 id="returns-116">Returns</h4>
3362
3529
  <p><code>void</code></p>
3363
3530
  <hr>
3364
3531
  <p><a id="query"></a></p>
@@ -3366,7 +3533,7 @@ filters (<code>where()</code>, or nested <code>or()</code>/<code>and()</code>).
3366
3533
  <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"> query</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">source</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">CollRefHandle</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">QueryHandle</span><span style="color:#ABB2BF">, ...</span><span style="color:#E06C75;font-style:italic">constraints</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">QueryConstraintHandle</span><span style="color:#ABB2BF">[]): </span><span style="color:#E5C07B">QueryHandle</span><span style="color:#ABB2BF">;</span></span></code></pre>
3367
3534
  <p>Apply query constraints to a source ref or query.
3368
3535
  Mirrors <code>pyric/firestore</code>’s <code>query(source, ...constraints)</code>.</p>
3369
- <h4 id="parameters-88">Parameters</h4>
3536
+ <h4 id="parameters-89">Parameters</h4>
3370
3537
  <div class="table-scroll">
3371
3538
 
3372
3539
 
@@ -3385,14 +3552,14 @@ Mirrors <code>pyric/firestore</code>’s <code>query(source, ...constraints)</co
3385
3552
 
3386
3553
 
3387
3554
  <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="#collrefhandle"><code>CollRefHandle</code></a> | <a href="#queryhandle"><code>QueryHandle</code></a></td></tr><tr><td align="left">…<code>constraints</code></td><td align="left"><code>QueryConstraintHandle</code>[]</td></tr></tbody></table></div>
3388
- <h4 id="returns-111">Returns</h4>
3555
+ <h4 id="returns-117">Returns</h4>
3389
3556
  <p><a href="#queryhandle"><code>QueryHandle</code></a></p>
3390
3557
  <hr>
3391
3558
  <p><a id="readpyricruntimemanifest"></a></p>
3392
3559
  <h3 id="readpyricruntimemanifest">readPyricRuntimeManifest()</h3>
3393
3560
  <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"> readPyricRuntimeManifest</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">documentLike</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">RuntimeDocument</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">PyricRuntimeManifest</span><span style="color:#ABB2BF">;</span></span></code></pre>
3394
3561
  <p>Read the server-stamped worker epoch before application code starts.</p>
3395
- <h4 id="parameters-89">Parameters</h4>
3562
+ <h4 id="parameters-90">Parameters</h4>
3396
3563
  <div class="table-scroll">
3397
3564
 
3398
3565
 
@@ -3407,17 +3574,17 @@ Mirrors <code>pyric/firestore</code>’s <code>query(source, ...constraints)</co
3407
3574
 
3408
3575
 
3409
3576
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>documentLike?</code></td><td align="left"><code>RuntimeDocument</code></td></tr></tbody></table></div>
3410
- <h4 id="returns-112">Returns</h4>
3577
+ <h4 id="returns-118">Returns</h4>
3411
3578
  <p><a href="#pyricruntimemanifest"><code>PyricRuntimeManifest</code></a></p>
3412
3579
  <hr>
3413
- <p><a id="ref-2"></a></p>
3580
+ <p><a id="ref-3"></a></p>
3414
3581
  <h3 id="ref">ref()</h3>
3415
3582
  <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"> ref</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">parent</span><span style="color:#ABB2BF">:</span></span>
3416
3583
  <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">ClientFirebaseStorage</span></span>
3417
3584
  <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">ClientStorageReference</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">path</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">ClientStorageReference</span><span style="color:#ABB2BF">;</span></span></code></pre>
3418
3585
  <p>Build a Storage reference. Mirrors <code>pyric/storage</code>’s <code>ref(storage, path?)</code> /
3419
3586
  <code>ref(parentRef, path)</code>. Client-side path math; no RPC.</p>
3420
- <h4 id="parameters-90">Parameters</h4>
3587
+ <h4 id="parameters-91">Parameters</h4>
3421
3588
  <div class="table-scroll">
3422
3589
 
3423
3590
 
@@ -3436,7 +3603,7 @@ Mirrors <code>pyric/firestore</code>’s <code>query(source, ...constraints)</co
3436
3603
 
3437
3604
 
3438
3605
  <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="#clientfirebasestorage"><code>ClientFirebaseStorage</code></a> | <a href="#clientstoragereference"><code>ClientStorageReference</code></a></td></tr><tr><td align="left"><code>path?</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
3439
- <h4 id="returns-113">Returns</h4>
3606
+ <h4 id="returns-119">Returns</h4>
3440
3607
  <p><a href="#clientstoragereference"><code>ClientStorageReference</code></a></p>
3441
3608
  <hr>
3442
3609
  <p><a id="relayworkerop"></a></p>
@@ -3445,7 +3612,7 @@ Mirrors <code>pyric/firestore</code>’s <code>query(source, ...constraints)</co
3445
3612
  <p>Relay one raw worker-protocol op into the SharedWorker. <code>op</code> is the op
3446
3613
  message minus <code>t</code>/<code>id</code> (the <code>WorkerOpPayload</code> wire shape); resolves with
3447
3614
  the worker’s <code>res.value</code>, rejects with an Error carrying <code>.code</code>.</p>
3448
- <h4 id="parameters-91">Parameters</h4>
3615
+ <h4 id="parameters-92">Parameters</h4>
3449
3616
  <div class="table-scroll">
3450
3617
 
3451
3618
 
@@ -3464,7 +3631,7 @@ the worker’s <code>res.value</code>, rejects with an Error carrying <code>.cod
3464
3631
 
3465
3632
 
3466
3633
  <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="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>op</code></td><td align="left"><code>WorkerOpPayload</code></td></tr></tbody></table></div>
3467
- <h4 id="returns-114">Returns</h4>
3634
+ <h4 id="returns-120">Returns</h4>
3468
3635
  <p><code>Promise</code>&#x3C;<code>unknown</code>></p>
3469
3636
  <hr>
3470
3637
  <p><a id="relayworkersub"></a></p>
@@ -3482,7 +3649,7 @@ Returns the unsubscribe function.</p>
3482
3649
  <p>The unified event stream (<code>target: 'events'</code>) is NOT relayable yet — its
3483
3650
  history batches aren’t coalescible, so it needs bounded backpressure first
3484
3651
  (slice 2).</p>
3485
- <h4 id="parameters-92">Parameters</h4>
3652
+ <h4 id="parameters-93">Parameters</h4>
3486
3653
  <div class="table-scroll">
3487
3654
 
3488
3655
 
@@ -3505,16 +3672,16 @@ history batches aren’t coalescible, so it needs bounded backpressure first
3505
3672
 
3506
3673
 
3507
3674
  <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="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>sub</code></td><td align="left"><code>WorkerSubPayload</code></td></tr><tr><td align="left"><code>onValue</code></td><td align="left">(<code>value</code>: <code>unknown</code>) => <code>void</code></td></tr></tbody></table></div>
3508
- <h4 id="returns-115">Returns</h4>
3675
+ <h4 id="returns-121">Returns</h4>
3509
3676
  <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>
3510
- <h5 id="returns-116">Returns</h5>
3677
+ <h5 id="returns-122">Returns</h5>
3511
3678
  <p><code>void</code></p>
3512
3679
  <hr>
3513
3680
  <p><a id="rememberworkerepoch"></a></p>
3514
3681
  <h3 id="rememberworkerepoch">rememberWorkerEpoch()</h3>
3515
3682
  <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"> rememberWorkerEpoch</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">epoch</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">storage</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">EpochStorage</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
3516
3683
  <p>Persist the generation boundary before a page reloads.</p>
3517
- <h4 id="parameters-93">Parameters</h4>
3684
+ <h4 id="parameters-94">Parameters</h4>
3518
3685
  <div class="table-scroll">
3519
3686
 
3520
3687
 
@@ -3533,7 +3700,7 @@ history batches aren’t coalescible, so it needs bounded backpressure first
3533
3700
 
3534
3701
 
3535
3702
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>epoch</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>storage</code></td><td align="left"><code>EpochStorage</code></td></tr></tbody></table></div>
3536
- <h4 id="returns-117">Returns</h4>
3703
+ <h4 id="returns-123">Returns</h4>
3537
3704
  <p><code>void</code></p>
3538
3705
  <hr>
3539
3706
  <p><a id="resetall"></a></p>
@@ -3546,7 +3713,7 @@ Clears the Firestore env, the signed-in session, and EVERY registered
3546
3713
  persistable service — auth users, the RTDB tree, storage objects. Resolves
3547
3714
  once the worker acks (all services finished clearing). This is the served
3548
3715
  counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.</p>
3549
- <h4 id="parameters-94">Parameters</h4>
3716
+ <h4 id="parameters-95">Parameters</h4>
3550
3717
  <div class="table-scroll">
3551
3718
 
3552
3719
 
@@ -3561,7 +3728,7 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
3561
3728
 
3562
3729
 
3563
3730
  <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="#clientdb"><code>ClientDb</code></a></td></tr></tbody></table></div>
3564
- <h4 id="returns-118">Returns</h4>
3731
+ <h4 id="returns-124">Returns</h4>
3565
3732
  <p><code>Promise</code>&#x3C;{
3566
3733
  <code>errors</code>: <code>string</code>[];
3567
3734
  }></p>
@@ -3575,7 +3742,7 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
3575
3742
  <span class="line"><span style="color:#E06C75"> timeoutMs</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">;</span></span>
3576
3743
  <span class="line"><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>
3577
3744
  <p>Ask the current SharedWorker to drain accepted work and retire.</p>
3578
- <h4 id="parameters-95">Parameters</h4>
3745
+ <h4 id="parameters-96">Parameters</h4>
3579
3746
  <div class="table-scroll">
3580
3747
 
3581
3748
 
@@ -3602,13 +3769,13 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
3602
3769
 
3603
3770
 
3604
3771
  <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="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>targetEpoch</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>options?</code></td><td align="left">{ <code>timeoutMs?</code>: <code>number</code>; }</td></tr><tr><td align="left"><code>options.timeoutMs?</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
3605
- <h4 id="returns-119">Returns</h4>
3772
+ <h4 id="returns-125">Returns</h4>
3606
3773
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
3607
3774
  <hr>
3608
3775
  <p><a id="rtdbchild"></a></p>
3609
3776
  <h3 id="rtdbchild">rtdbChild()</h3>
3610
3777
  <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"> rtdbChild</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">parent</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">RtdbRefHandle</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">path</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">RtdbRefHandle</span><span style="color:#ABB2BF">;</span></span></code></pre>
3611
- <h4 id="parameters-96">Parameters</h4>
3778
+ <h4 id="parameters-97">Parameters</h4>
3612
3779
  <div class="table-scroll">
3613
3780
 
3614
3781
 
@@ -3627,19 +3794,19 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
3627
3794
 
3628
3795
 
3629
3796
  <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="#rtdbrefhandle"><code>RtdbRefHandle</code></a></td></tr><tr><td align="left"><code>path</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
3630
- <h4 id="returns-120">Returns</h4>
3797
+ <h4 id="returns-126">Returns</h4>
3631
3798
  <p><a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a></p>
3632
3799
  <hr>
3633
3800
  <p><a id="rtdbconnectdatabaseemulator"></a></p>
3634
3801
  <h3 id="rtdbconnectdatabaseemulator">rtdbConnectDatabaseEmulator()</h3>
3635
3802
  <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"> rtdbConnectDatabaseEmulator</span><span style="color:#ABB2BF">(): </span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
3636
- <h4 id="returns-121">Returns</h4>
3803
+ <h4 id="returns-127">Returns</h4>
3637
3804
  <p><code>void</code></p>
3638
3805
  <hr>
3639
3806
  <p><a id="rtdbget"></a></p>
3640
3807
  <h3 id="rtdbget">rtdbGet()</h3>
3641
3808
  <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"> rtdbGet</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">target</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">RtdbTarget</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">RtdbDataSnapshot</span><span style="color:#ABB2BF">>;</span></span></code></pre>
3642
- <h4 id="parameters-97">Parameters</h4>
3809
+ <h4 id="parameters-98">Parameters</h4>
3643
3810
  <div class="table-scroll">
3644
3811
 
3645
3812
 
@@ -3654,13 +3821,13 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
3654
3821
 
3655
3822
 
3656
3823
  <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"><code>RtdbTarget</code></td></tr></tbody></table></div>
3657
- <h4 id="returns-122">Returns</h4>
3824
+ <h4 id="returns-128">Returns</h4>
3658
3825
  <p><code>Promise</code>&#x3C;<a href="#rtdbdatasnapshot"><code>RtdbDataSnapshot</code></a>></p>
3659
3826
  <hr>
3660
3827
  <p><a id="rtdbgetdatabase"></a></p>
3661
3828
  <h3 id="rtdbgetdatabase">rtdbGetDatabase()</h3>
3662
3829
  <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"> rtdbGetDatabase</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">source</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">ClientDb</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">URL</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">name</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">ClientRtdb</span><span style="color:#ABB2BF">;</span></span></code></pre>
3663
- <h4 id="parameters-98">Parameters</h4>
3830
+ <h4 id="parameters-99">Parameters</h4>
3664
3831
  <div class="table-scroll">
3665
3832
 
3666
3833
 
@@ -3679,13 +3846,13 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
3679
3846
 
3680
3847
 
3681
3848
  <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"><code>string</code> | <a href="#clientdb"><code>ClientDb</code></a> | <code>URL</code></td></tr><tr><td align="left"><code>name?</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
3682
- <h4 id="returns-123">Returns</h4>
3849
+ <h4 id="returns-129">Returns</h4>
3683
3850
  <p><a href="#clientrtdb"><code>ClientRtdb</code></a></p>
3684
3851
  <hr>
3685
3852
  <p><a id="rtdbgooffline"></a></p>
3686
3853
  <h3 id="rtdbgooffline">rtdbGoOffline()</h3>
3687
3854
  <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"> rtdbGoOffline</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientRtdb</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
3688
- <h4 id="parameters-99">Parameters</h4>
3855
+ <h4 id="parameters-100">Parameters</h4>
3689
3856
  <div class="table-scroll">
3690
3857
 
3691
3858
 
@@ -3700,13 +3867,13 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
3700
3867
 
3701
3868
 
3702
3869
  <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="#clientrtdb"><code>ClientRtdb</code></a></td></tr></tbody></table></div>
3703
- <h4 id="returns-124">Returns</h4>
3870
+ <h4 id="returns-130">Returns</h4>
3704
3871
  <p><code>void</code></p>
3705
3872
  <hr>
3706
3873
  <p><a id="rtdbgoonline"></a></p>
3707
3874
  <h3 id="rtdbgoonline">rtdbGoOnline()</h3>
3708
3875
  <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"> rtdbGoOnline</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientRtdb</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
3709
- <h4 id="parameters-100">Parameters</h4>
3876
+ <h4 id="parameters-101">Parameters</h4>
3710
3877
  <div class="table-scroll">
3711
3878
 
3712
3879
 
@@ -3721,7 +3888,7 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
3721
3888
 
3722
3889
 
3723
3890
  <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="#clientrtdb"><code>ClientRtdb</code></a></td></tr></tbody></table></div>
3724
- <h4 id="returns-125">Returns</h4>
3891
+ <h4 id="returns-131">Returns</h4>
3725
3892
  <p><code>void</code></p>
3726
3893
  <hr>
3727
3894
  <p><a id="rtdboff"></a></p>
@@ -3730,7 +3897,7 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
3730
3897
  <span class="line"><span style="color:#E06C75;font-style:italic"> target</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">RtdbTarget</span><span style="color:#ABB2BF">,</span></span>
3731
3898
  <span class="line"><span style="color:#E06C75;font-style:italic"> eventType</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">RtdbEventType</span><span style="color:#ABB2BF">,</span></span>
3732
3899
  <span class="line"><span style="color:#E06C75;font-style:italic"> callback</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">object</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
3733
- <h4 id="parameters-101">Parameters</h4>
3900
+ <h4 id="parameters-102">Parameters</h4>
3734
3901
  <div class="table-scroll">
3735
3902
 
3736
3903
 
@@ -3753,7 +3920,7 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
3753
3920
 
3754
3921
 
3755
3922
  <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"><code>RtdbTarget</code></td></tr><tr><td align="left"><code>eventType?</code></td><td align="left"><code>RtdbEventType</code></td></tr><tr><td align="left"><code>callback?</code></td><td align="left"><code>object</code></td></tr></tbody></table></div>
3756
- <h4 id="returns-126">Returns</h4>
3923
+ <h4 id="returns-132">Returns</h4>
3757
3924
  <p><code>void</code></p>
3758
3925
  <hr>
3759
3926
  <p><a id="rtdbonchildadded"></a></p>
@@ -3764,7 +3931,7 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
3764
3931
  <span class="line"><span style="color:#E06C75;font-style:italic"> cancel</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">CancelOrOptions</span><span style="color:#ABB2BF">,</span></span>
3765
3932
  <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">ListenOptions</span><span style="color:#ABB2BF">,</span></span>
3766
3933
  <span class="line"><span style="color:#E06C75;font-style:italic"> identity</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">object</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Unsubscribe</span><span style="color:#ABB2BF">;</span></span></code></pre>
3767
- <h4 id="parameters-102">Parameters</h4>
3934
+ <h4 id="parameters-103">Parameters</h4>
3768
3935
  <div class="table-scroll">
3769
3936
 
3770
3937
 
@@ -3795,7 +3962,7 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
3795
3962
 
3796
3963
 
3797
3964
  <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"><code>RtdbTarget</code></td></tr><tr><td align="left"><code>next</code></td><td align="left"><code>ChildCallback</code></td></tr><tr><td align="left"><code>cancel?</code></td><td align="left"><code>CancelOrOptions</code></td></tr><tr><td align="left"><code>options?</code></td><td align="left"><code>ListenOptions</code></td></tr><tr><td align="left"><code>identity?</code></td><td align="left"><code>object</code></td></tr></tbody></table></div>
3798
- <h4 id="returns-127">Returns</h4>
3965
+ <h4 id="returns-133">Returns</h4>
3799
3966
  <p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
3800
3967
  <hr>
3801
3968
  <p><a id="rtdbonchildchanged"></a></p>
@@ -3806,7 +3973,7 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
3806
3973
  <span class="line"><span style="color:#E06C75;font-style:italic"> cancel</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">CancelOrOptions</span><span style="color:#ABB2BF">,</span></span>
3807
3974
  <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">ListenOptions</span><span style="color:#ABB2BF">,</span></span>
3808
3975
  <span class="line"><span style="color:#E06C75;font-style:italic"> identity</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">object</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Unsubscribe</span><span style="color:#ABB2BF">;</span></span></code></pre>
3809
- <h4 id="parameters-103">Parameters</h4>
3976
+ <h4 id="parameters-104">Parameters</h4>
3810
3977
  <div class="table-scroll">
3811
3978
 
3812
3979
 
@@ -3837,7 +4004,7 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
3837
4004
 
3838
4005
 
3839
4006
  <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"><code>RtdbTarget</code></td></tr><tr><td align="left"><code>next</code></td><td align="left"><code>ChildCallback</code></td></tr><tr><td align="left"><code>cancel?</code></td><td align="left"><code>CancelOrOptions</code></td></tr><tr><td align="left"><code>options?</code></td><td align="left"><code>ListenOptions</code></td></tr><tr><td align="left"><code>identity?</code></td><td align="left"><code>object</code></td></tr></tbody></table></div>
3840
- <h4 id="returns-128">Returns</h4>
4007
+ <h4 id="returns-134">Returns</h4>
3841
4008
  <p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
3842
4009
  <hr>
3843
4010
  <p><a id="rtdbonchildmoved"></a></p>
@@ -3848,7 +4015,7 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
3848
4015
  <span class="line"><span style="color:#E06C75;font-style:italic"> cancel</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">CancelOrOptions</span><span style="color:#ABB2BF">,</span></span>
3849
4016
  <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">ListenOptions</span><span style="color:#ABB2BF">,</span></span>
3850
4017
  <span class="line"><span style="color:#E06C75;font-style:italic"> identity</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">object</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Unsubscribe</span><span style="color:#ABB2BF">;</span></span></code></pre>
3851
- <h4 id="parameters-104">Parameters</h4>
4018
+ <h4 id="parameters-105">Parameters</h4>
3852
4019
  <div class="table-scroll">
3853
4020
 
3854
4021
 
@@ -3879,7 +4046,7 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
3879
4046
 
3880
4047
 
3881
4048
  <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"><code>RtdbTarget</code></td></tr><tr><td align="left"><code>next</code></td><td align="left"><code>ChildCallback</code></td></tr><tr><td align="left"><code>cancel?</code></td><td align="left"><code>CancelOrOptions</code></td></tr><tr><td align="left"><code>options?</code></td><td align="left"><code>ListenOptions</code></td></tr><tr><td align="left"><code>identity?</code></td><td align="left"><code>object</code></td></tr></tbody></table></div>
3882
- <h4 id="returns-129">Returns</h4>
4049
+ <h4 id="returns-135">Returns</h4>
3883
4050
  <p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
3884
4051
  <hr>
3885
4052
  <p><a id="rtdbonchildremoved"></a></p>
@@ -3890,7 +4057,7 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
3890
4057
  <span class="line"><span style="color:#E06C75;font-style:italic"> cancel</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">CancelOrOptions</span><span style="color:#ABB2BF">,</span></span>
3891
4058
  <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">ListenOptions</span><span style="color:#ABB2BF">,</span></span>
3892
4059
  <span class="line"><span style="color:#E06C75;font-style:italic"> identity</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">object</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Unsubscribe</span><span style="color:#ABB2BF">;</span></span></code></pre>
3893
- <h4 id="parameters-105">Parameters</h4>
4060
+ <h4 id="parameters-106">Parameters</h4>
3894
4061
  <div class="table-scroll">
3895
4062
 
3896
4063
 
@@ -3921,13 +4088,13 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
3921
4088
 
3922
4089
 
3923
4090
  <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"><code>RtdbTarget</code></td></tr><tr><td align="left"><code>next</code></td><td align="left"><code>ChildCallback</code></td></tr><tr><td align="left"><code>cancel?</code></td><td align="left"><code>CancelOrOptions</code></td></tr><tr><td align="left"><code>options?</code></td><td align="left"><code>ListenOptions</code></td></tr><tr><td align="left"><code>identity?</code></td><td align="left"><code>object</code></td></tr></tbody></table></div>
3924
- <h4 id="returns-130">Returns</h4>
4091
+ <h4 id="returns-136">Returns</h4>
3925
4092
  <p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
3926
4093
  <hr>
3927
4094
  <p><a id="rtdbondisconnect-1"></a></p>
3928
4095
  <h3 id="rtdbondisconnect-1">rtdbOnDisconnect()</h3>
3929
4096
  <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"> rtdbOnDisconnect</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">RtdbRefHandle</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">RtdbOnDisconnect</span><span style="color:#ABB2BF">;</span></span></code></pre>
3930
- <h4 id="parameters-106">Parameters</h4>
4097
+ <h4 id="parameters-107">Parameters</h4>
3931
4098
  <div class="table-scroll">
3932
4099
 
3933
4100
 
@@ -3942,7 +4109,7 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
3942
4109
 
3943
4110
 
3944
4111
  <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="#rtdbrefhandle"><code>RtdbRefHandle</code></a></td></tr></tbody></table></div>
3945
- <h4 id="returns-131">Returns</h4>
4112
+ <h4 id="returns-137">Returns</h4>
3946
4113
  <p><a href="#rtdbondisconnect"><code>RtdbOnDisconnect</code></a></p>
3947
4114
  <hr>
3948
4115
  <p><a id="rtdbonvalue"></a></p>
@@ -3959,7 +4126,7 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
3959
4126
  <span class="line"><span style="color:#E06C75"> onlyOnce</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">boolean</span><span style="color:#ABB2BF">;</span></span>
3960
4127
  <span class="line"><span style="color:#ABB2BF">},</span></span>
3961
4128
  <span class="line"><span style="color:#E06C75;font-style:italic"> registryCallback</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">object</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Unsubscribe</span><span style="color:#ABB2BF">;</span></span></code></pre>
3962
- <h4 id="parameters-107">Parameters</h4>
4129
+ <h4 id="parameters-108">Parameters</h4>
3963
4130
  <div class="table-scroll">
3964
4131
 
3965
4132
 
@@ -3994,13 +4161,13 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
3994
4161
 
3995
4162
 
3996
4163
  <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"><code>RtdbTarget</code></td></tr><tr><td align="left"><code>next</code></td><td align="left">(<code>snap</code>: <a href="#rtdbdatasnapshot"><code>RtdbDataSnapshot</code></a>) => <code>void</code></td></tr><tr><td align="left"><code>cancelCallbackOrOptions?</code></td><td align="left">| (<code>err</code>: <code>unknown</code>) => <code>void</code> | { <code>onlyOnce?</code>: <code>boolean</code>; }</td></tr><tr><td align="left"><code>options?</code></td><td align="left">{ <code>onlyOnce?</code>: <code>boolean</code>; }</td></tr><tr><td align="left"><code>options.onlyOnce?</code></td><td align="left"><code>boolean</code></td></tr><tr><td align="left"><code>registryCallback?</code></td><td align="left"><code>object</code></td></tr></tbody></table></div>
3997
- <h4 id="returns-132">Returns</h4>
4164
+ <h4 id="returns-138">Returns</h4>
3998
4165
  <p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
3999
4166
  <hr>
4000
4167
  <p><a id="rtdbpush"></a></p>
4001
4168
  <h3 id="rtdbpush">rtdbPush()</h3>
4002
4169
  <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"> rtdbPush</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">RtdbRefHandle</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">value</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">RtdbRefHandle</span><span style="color:#ABB2BF"> &#x26; </span><span style="color:#E5C07B">PromiseLike</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">RtdbRefHandle</span><span style="color:#ABB2BF">>;</span></span></code></pre>
4003
- <h4 id="parameters-108">Parameters</h4>
4170
+ <h4 id="parameters-109">Parameters</h4>
4004
4171
  <div class="table-scroll">
4005
4172
 
4006
4173
 
@@ -4019,13 +4186,13 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
4019
4186
 
4020
4187
 
4021
4188
  <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="#rtdbrefhandle"><code>RtdbRefHandle</code></a></td></tr><tr><td align="left"><code>value?</code></td><td align="left"><code>unknown</code></td></tr></tbody></table></div>
4022
- <h4 id="returns-133">Returns</h4>
4189
+ <h4 id="returns-139">Returns</h4>
4023
4190
  <p><a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a> &#x26; <code>PromiseLike</code>&#x3C;<a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a>></p>
4024
4191
  <hr>
4025
4192
  <p><a id="rtdbref"></a></p>
4026
4193
  <h3 id="rtdbref">rtdbRef()</h3>
4027
4194
  <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"> rtdbRef</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientRtdb</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">path</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">RtdbRefHandle</span><span style="color:#ABB2BF">;</span></span></code></pre>
4028
- <h4 id="parameters-109">Parameters</h4>
4195
+ <h4 id="parameters-110">Parameters</h4>
4029
4196
  <div class="table-scroll">
4030
4197
 
4031
4198
 
@@ -4044,13 +4211,13 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
4044
4211
 
4045
4212
 
4046
4213
  <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="#clientrtdb"><code>ClientRtdb</code></a></td></tr><tr><td align="left"><code>path?</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
4047
- <h4 id="returns-134">Returns</h4>
4214
+ <h4 id="returns-140">Returns</h4>
4048
4215
  <p><a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a></p>
4049
4216
  <hr>
4050
4217
  <p><a id="rtdbremove"></a></p>
4051
4218
  <h3 id="rtdbremove">rtdbRemove()</h3>
4052
4219
  <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"> rtdbRemove</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">RtdbRefHandle</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>
4053
- <h4 id="parameters-110">Parameters</h4>
4220
+ <h4 id="parameters-111">Parameters</h4>
4054
4221
  <div class="table-scroll">
4055
4222
 
4056
4223
 
@@ -4065,7 +4232,7 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
4065
4232
 
4066
4233
 
4067
4234
  <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="#rtdbrefhandle"><code>RtdbRefHandle</code></a></td></tr></tbody></table></div>
4068
- <h4 id="returns-135">Returns</h4>
4235
+ <h4 id="returns-141">Returns</h4>
4069
4236
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4070
4237
  <hr>
4071
4238
  <p><a id="rtdbruntransaction"></a></p>
@@ -4087,7 +4254,7 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
4087
4254
 
4088
4255
 
4089
4256
  <table><thead><tr><th align="left">Type Parameter</th></tr></thead><tbody><tr><td align="left"><code>T</code></td></tr></tbody></table></div>
4090
- <h4 id="parameters-111">Parameters</h4>
4257
+ <h4 id="parameters-112">Parameters</h4>
4091
4258
  <div class="table-scroll">
4092
4259
 
4093
4260
 
@@ -4110,7 +4277,7 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
4110
4277
 
4111
4278
 
4112
4279
  <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="#rtdbrefhandle"><code>RtdbRefHandle</code></a></td></tr><tr><td align="left"><code>transactionUpdate</code></td><td align="left">(<code>current</code>: <code>T</code>) => <code>T</code></td></tr><tr><td align="left"><code>options?</code></td><td align="left"><code>RtdbTransactionOptions</code></td></tr></tbody></table></div>
4113
- <h4 id="returns-136">Returns</h4>
4280
+ <h4 id="returns-142">Returns</h4>
4114
4281
  <p><code>Promise</code>&#x3C;<code>RtdbTransactionResult</code>></p>
4115
4282
  <hr>
4116
4283
  <p><a id="rtdbservertimestamp"></a></p>
@@ -4118,14 +4285,14 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
4118
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"> rtdbServerTimestamp</span><span style="color:#ABB2BF">(): {</span></span>
4119
4286
  <span class="line"><span style="color:#ABB2BF">};</span></span></code></pre>
4120
4287
  <p>RTDB environment controls and server-value construction for served apps.</p>
4121
- <h4 id="returns-137">Returns</h4>
4288
+ <h4 id="returns-143">Returns</h4>
4122
4289
  <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>
4123
4290
  <span class="line"><span style="color:#ABB2BF">}</span></span></code></pre>
4124
4291
  <hr>
4125
4292
  <p><a id="rtdbset"></a></p>
4126
4293
  <h3 id="rtdbset">rtdbSet()</h3>
4127
4294
  <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"> rtdbSet</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">RtdbRefHandle</span><span style="color:#ABB2BF">, </span><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">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">>;</span></span></code></pre>
4128
- <h4 id="parameters-112">Parameters</h4>
4295
+ <h4 id="parameters-113">Parameters</h4>
4129
4296
  <div class="table-scroll">
4130
4297
 
4131
4298
 
@@ -4144,13 +4311,13 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
4144
4311
 
4145
4312
 
4146
4313
  <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="#rtdbrefhandle"><code>RtdbRefHandle</code></a></td></tr><tr><td align="left"><code>value</code></td><td align="left"><code>unknown</code></td></tr></tbody></table></div>
4147
- <h4 id="returns-138">Returns</h4>
4314
+ <h4 id="returns-144">Returns</h4>
4148
4315
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4149
4316
  <hr>
4150
4317
  <p><a id="rtdbsetpriority"></a></p>
4151
4318
  <h3 id="rtdbsetpriority">rtdbSetPriority()</h3>
4152
4319
  <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"> rtdbSetPriority</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">RtdbRefHandle</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">priority</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">number</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>
4153
- <h4 id="parameters-113">Parameters</h4>
4320
+ <h4 id="parameters-114">Parameters</h4>
4154
4321
  <div class="table-scroll">
4155
4322
 
4156
4323
 
@@ -4169,7 +4336,7 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
4169
4336
 
4170
4337
 
4171
4338
  <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="#rtdbrefhandle"><code>RtdbRefHandle</code></a></td></tr><tr><td align="left"><code>priority</code></td><td align="left"><code>string</code> | <code>number</code></td></tr></tbody></table></div>
4172
- <h4 id="returns-139">Returns</h4>
4339
+ <h4 id="returns-145">Returns</h4>
4173
4340
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4174
4341
  <hr>
4175
4342
  <p><a id="rtdbsetwithpriority"></a></p>
@@ -4178,7 +4345,7 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
4178
4345
  <span class="line"><span style="color:#E06C75;font-style:italic"> ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">RtdbRefHandle</span><span style="color:#ABB2BF">,</span></span>
4179
4346
  <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>
4180
4347
  <span class="line"><span style="color:#E06C75;font-style:italic">priority</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">number</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>
4181
- <h4 id="parameters-114">Parameters</h4>
4348
+ <h4 id="parameters-115">Parameters</h4>
4182
4349
  <div class="table-scroll">
4183
4350
 
4184
4351
 
@@ -4201,13 +4368,13 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
4201
4368
 
4202
4369
 
4203
4370
  <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="#rtdbrefhandle"><code>RtdbRefHandle</code></a></td></tr><tr><td align="left"><code>value</code></td><td align="left"><code>unknown</code></td></tr><tr><td align="left"><code>priority</code></td><td align="left"><code>string</code> | <code>number</code></td></tr></tbody></table></div>
4204
- <h4 id="returns-140">Returns</h4>
4371
+ <h4 id="returns-146">Returns</h4>
4205
4372
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4206
4373
  <hr>
4207
4374
  <p><a id="rtdbupdate"></a></p>
4208
4375
  <h3 id="rtdbupdate">rtdbUpdate()</h3>
4209
4376
  <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"> rtdbUpdate</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">RtdbRefHandle</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">values</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Record</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">unknown</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>
4210
- <h4 id="parameters-115">Parameters</h4>
4377
+ <h4 id="parameters-116">Parameters</h4>
4211
4378
  <div class="table-scroll">
4212
4379
 
4213
4380
 
@@ -4226,7 +4393,7 @@ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.
4226
4393
 
4227
4394
 
4228
4395
  <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="#rtdbrefhandle"><code>RtdbRefHandle</code></a></td></tr><tr><td align="left"><code>values</code></td><td align="left"><code>Record</code>&#x3C;<code>string</code>, <code>unknown</code>></td></tr></tbody></table></div>
4229
- <h4 id="returns-141">Returns</h4>
4396
+ <h4 id="returns-147">Returns</h4>
4230
4397
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4231
4398
  <hr>
4232
4399
  <p><a id="runtransaction"></a></p>
@@ -4266,7 +4433,7 @@ on conflict rather than surfacing the error immediately.</p>
4266
4433
 
4267
4434
 
4268
4435
  <table><thead><tr><th align="left">Type Parameter</th></tr></thead><tbody><tr><td align="left"><code>R</code></td></tr></tbody></table></div>
4269
- <h4 id="parameters-116">Parameters</h4>
4436
+ <h4 id="parameters-117">Parameters</h4>
4270
4437
  <div class="table-scroll">
4271
4438
 
4272
4439
 
@@ -4285,14 +4452,14 @@ on conflict rather than surfacing the error immediately.</p>
4285
4452
 
4286
4453
 
4287
4454
  <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="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>updateFn</code></td><td align="left">(<code>txn</code>: <a href="#clienttransaction"><code>ClientTransaction</code></a>) => <code>R</code> | <code>Promise</code>&#x3C;<code>R</code>></td></tr></tbody></table></div>
4288
- <h4 id="returns-142">Returns</h4>
4455
+ <h4 id="returns-148">Returns</h4>
4289
4456
  <p><code>Promise</code>&#x3C;<code>R</code>></p>
4290
4457
  <hr>
4291
4458
  <p><a id="saveworkerbranch"></a></p>
4292
4459
  <h3 id="saveworkerbranch">saveWorkerBranch()</h3>
4293
4460
  <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"> saveWorkerBranch</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientDb</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">name</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</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>
4294
4461
  <p>Phase 3: save the live sandbox as a named branch (a saved state bundle).</p>
4295
- <h4 id="parameters-117">Parameters</h4>
4462
+ <h4 id="parameters-118">Parameters</h4>
4296
4463
  <div class="table-scroll">
4297
4464
 
4298
4465
 
@@ -4311,13 +4478,13 @@ on conflict rather than surfacing the error immediately.</p>
4311
4478
 
4312
4479
 
4313
4480
  <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="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>name</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
4314
- <h4 id="returns-143">Returns</h4>
4481
+ <h4 id="returns-149">Returns</h4>
4315
4482
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4316
4483
  <hr>
4317
4484
  <p><a id="servertimestamp"></a></p>
4318
4485
  <h3 id="servertimestamp">serverTimestamp()</h3>
4319
4486
  <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">SentinelMarker</span><span style="color:#ABB2BF">;</span></span></code></pre>
4320
- <h4 id="returns-144">Returns</h4>
4487
+ <h4 id="returns-150">Returns</h4>
4321
4488
  <p><code>SentinelMarker</code></p>
4322
4489
  <hr>
4323
4490
  <p><a id="setdatabaserules"></a></p>
@@ -4326,7 +4493,7 @@ on conflict rather than surfacing the error immediately.</p>
4326
4493
  <span class="line"><span style="color:#E06C75"> messages</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">[];</span></span>
4327
4494
  <span class="line"><span style="color:#E06C75"> ok</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">boolean</span><span style="color:#ABB2BF">;</span></span>
4328
4495
  <span class="line"><span style="color:#ABB2BF">}>;</span></span></code></pre>
4329
- <h4 id="parameters-118">Parameters</h4>
4496
+ <h4 id="parameters-119">Parameters</h4>
4330
4497
  <div class="table-scroll">
4331
4498
 
4332
4499
 
@@ -4345,7 +4512,7 @@ on conflict rather than surfacing the error immediately.</p>
4345
4512
 
4346
4513
 
4347
4514
  <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="#clientdb"><code>ClientDb</code></a> | <a href="#clientrtdb"><code>ClientRtdb</code></a></td></tr><tr><td align="left"><code>source</code></td><td align="left"><code>unknown</code></td></tr></tbody></table></div>
4348
- <h4 id="returns-145">Returns</h4>
4515
+ <h4 id="returns-151">Returns</h4>
4349
4516
  <p><code>Promise</code>&#x3C;{
4350
4517
  <code>messages</code>: <code>unknown</code>[];
4351
4518
  <code>ok</code>: <code>boolean</code>;
@@ -4360,7 +4527,7 @@ on conflict rather than surfacing the error immediately.</p>
4360
4527
  <span class="line"><span style="color:#E06C75"> merge</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">boolean</span><span style="color:#ABB2BF">;</span></span>
4361
4528
  <span class="line"><span style="color:#E06C75"> mergeFields</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">[];</span></span>
4362
4529
  <span class="line"><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>
4363
- <h4 id="parameters-119">Parameters</h4>
4530
+ <h4 id="parameters-120">Parameters</h4>
4364
4531
  <div class="table-scroll">
4365
4532
 
4366
4533
 
@@ -4391,7 +4558,7 @@ on conflict rather than surfacing the error immediately.</p>
4391
4558
 
4392
4559
 
4393
4560
  <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="#docrefhandle"><code>DocRefHandle</code></a></td></tr><tr><td align="left"><code>data</code></td><td align="left"><code>Record</code>&#x3C;<code>string</code>, <code>unknown</code>></td></tr><tr><td align="left"><code>options?</code></td><td align="left">{ <code>merge?</code>: <code>boolean</code>; <code>mergeFields?</code>: <code>string</code>[]; }</td></tr><tr><td align="left"><code>options.merge?</code></td><td align="left"><code>boolean</code></td></tr><tr><td align="left"><code>options.mergeFields?</code></td><td align="left"><code>string</code>[]</td></tr></tbody></table></div>
4394
- <h4 id="returns-146">Returns</h4>
4561
+ <h4 id="returns-152">Returns</h4>
4395
4562
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4396
4563
  <hr>
4397
4564
  <p><a id="setfirestorerules"></a></p>
@@ -4401,7 +4568,7 @@ on conflict rather than surfacing the error immediately.</p>
4401
4568
  <span class="line"><span style="color:#E06C75"> ok</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">boolean</span><span style="color:#ABB2BF">;</span></span>
4402
4569
  <span class="line"><span style="color:#E06C75"> warnings</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">[];</span></span>
4403
4570
  <span class="line"><span style="color:#ABB2BF">}>;</span></span></code></pre>
4404
- <h4 id="parameters-120">Parameters</h4>
4571
+ <h4 id="parameters-121">Parameters</h4>
4405
4572
  <div class="table-scroll">
4406
4573
 
4407
4574
 
@@ -4420,7 +4587,7 @@ on conflict rather than surfacing the error immediately.</p>
4420
4587
 
4421
4588
 
4422
4589
  <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="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>source</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
4423
- <h4 id="returns-147">Returns</h4>
4590
+ <h4 id="returns-153">Returns</h4>
4424
4591
  <p><code>Promise</code>&#x3C;{
4425
4592
  <code>messages</code>: <code>unknown</code>[];
4426
4593
  <code>ok</code>: <code>boolean</code>;
@@ -4437,7 +4604,7 @@ client (Pyric Studio). Pass <code>{ mode: 'as', uid }</code> to read/write AS a
4437
4604
  <p>The lens is process-wide for this client module (one served page = one
4438
4605
  worker port), mirroring how Studio drives a single active identity at a time.
4439
4606
  Auth ops are unaffected — they always operate the real session.</p>
4440
- <h4 id="parameters-121">Parameters</h4>
4607
+ <h4 id="parameters-122">Parameters</h4>
4441
4608
  <div class="table-scroll">
4442
4609
 
4443
4610
 
@@ -4452,14 +4619,14 @@ Auth ops are unaffected — they always operate the real session.</p>
4452
4619
 
4453
4620
 
4454
4621
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>lens</code></td><td align="left"><a href="/docs/pyric-sandbox-reference-api/#authlens-2"><code>AuthLens</code></a></td></tr></tbody></table></div>
4455
- <h4 id="returns-148">Returns</h4>
4622
+ <h4 id="returns-154">Returns</h4>
4456
4623
  <p><code>void</code></p>
4457
4624
  <hr>
4458
4625
  <p><a id="setopissuer"></a></p>
4459
4626
  <h3 id="setopissuer">setOpIssuer()</h3>
4460
4627
  <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"> setOpIssuer</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">source</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"studio"</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
4461
4628
  <p>Declare who issues the ops this client module constructs. See _opIssuer.</p>
4462
- <h4 id="parameters-122">Parameters</h4>
4629
+ <h4 id="parameters-123">Parameters</h4>
4463
4630
  <div class="table-scroll">
4464
4631
 
4465
4632
 
@@ -4474,7 +4641,7 @@ Auth ops are unaffected — they always operate the real session.</p>
4474
4641
 
4475
4642
 
4476
4643
  <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"><code>"studio"</code></td></tr></tbody></table></div>
4477
- <h4 id="returns-149">Returns</h4>
4644
+ <h4 id="returns-155">Returns</h4>
4478
4645
  <p><code>void</code></p>
4479
4646
  <hr>
4480
4647
  <p><a id="setpersistence"></a></p>
@@ -4484,7 +4651,7 @@ Auth ops are unaffected — they always operate the real session.</p>
4484
4651
  effective persistence is CLIENT-side (#754): the entry adapter mirrors the
4485
4652
  mode into the page’s SessionStore, which decides where — or whether — this
4486
4653
  tab’s session uid is stored for reload restore.</p>
4487
- <h4 id="parameters-123">Parameters</h4>
4654
+ <h4 id="parameters-124">Parameters</h4>
4488
4655
  <div class="table-scroll">
4489
4656
 
4490
4657
 
@@ -4503,7 +4670,7 @@ tab’s session uid is stored for reload restore.</p>
4503
4670
 
4504
4671
 
4505
4672
  <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"><a href="#clientauth"><code>ClientAuth</code></a></td></tr><tr><td align="left"><code>persistence</code></td><td align="left"><code>ClientPersistence</code></td></tr></tbody></table></div>
4506
- <h4 id="returns-150">Returns</h4>
4673
+ <h4 id="returns-156">Returns</h4>
4507
4674
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4508
4675
  <hr>
4509
4676
  <p><a id="setproviderconfig"></a></p>
@@ -4512,7 +4679,7 @@ tab’s session uid is stored for reload restore.</p>
4512
4679
  <span class="line"><span style="color:#E06C75;font-style:italic"> auth</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientAuth</span><span style="color:#ABB2BF">,</span></span>
4513
4680
  <span class="line"><span style="color:#E06C75;font-style:italic"> providerId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
4514
4681
  <span class="line"><span style="color:#E06C75;font-style:italic">enabled</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">boolean</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>
4515
- <h4 id="parameters-124">Parameters</h4>
4682
+ <h4 id="parameters-125">Parameters</h4>
4516
4683
  <div class="table-scroll">
4517
4684
 
4518
4685
 
@@ -4535,7 +4702,7 @@ tab’s session uid is stored for reload restore.</p>
4535
4702
 
4536
4703
 
4537
4704
  <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"><a href="#clientauth"><code>ClientAuth</code></a></td></tr><tr><td align="left"><code>providerId</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>enabled</code></td><td align="left"><code>boolean</code></td></tr></tbody></table></div>
4538
- <h4 id="returns-151">Returns</h4>
4705
+ <h4 id="returns-157">Returns</h4>
4539
4706
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4540
4707
  <hr>
4541
4708
  <p><a id="setrules"></a></p>
@@ -4546,7 +4713,7 @@ tab’s session uid is stored for reload restore.</p>
4546
4713
  <p>Deploy new rules to the worker’s sandbox. Active onSnapshot listeners
4547
4714
  that were allowed by the old rules may start receiving error callbacks
4548
4715
  if the new rules deny them.</p>
4549
- <h4 id="parameters-125">Parameters</h4>
4716
+ <h4 id="parameters-126">Parameters</h4>
4550
4717
  <div class="table-scroll">
4551
4718
 
4552
4719
 
@@ -4565,7 +4732,7 @@ if the new rules deny them.</p>
4565
4732
 
4566
4733
 
4567
4734
  <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="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>source</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
4568
- <h4 id="returns-152">Returns</h4>
4735
+ <h4 id="returns-158">Returns</h4>
4569
4736
  <p><code>Promise</code>&#x3C;{
4570
4737
  <code>warnings</code>: <code>unknown</code>[];
4571
4738
  }></p>
@@ -4573,7 +4740,7 @@ if the new rules deny them.</p>
4573
4740
  <p><a id="signinanonymously"></a></p>
4574
4741
  <h3 id="signinanonymously">signInAnonymously()</h3>
4575
4742
  <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"> signInAnonymously</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">auth</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientAuth</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">ClientUserCredential</span><span style="color:#ABB2BF">>;</span></span></code></pre>
4576
- <h4 id="parameters-126">Parameters</h4>
4743
+ <h4 id="parameters-127">Parameters</h4>
4577
4744
  <div class="table-scroll">
4578
4745
 
4579
4746
 
@@ -4588,7 +4755,7 @@ if the new rules deny them.</p>
4588
4755
 
4589
4756
 
4590
4757
  <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"><a href="#clientauth"><code>ClientAuth</code></a></td></tr></tbody></table></div>
4591
- <h4 id="returns-153">Returns</h4>
4758
+ <h4 id="returns-159">Returns</h4>
4592
4759
  <p><code>Promise</code>&#x3C;<a href="#clientusercredential"><code>ClientUserCredential</code></a>></p>
4593
4760
  <hr>
4594
4761
  <p><a id="signinwithemailandpassword"></a></p>
@@ -4597,7 +4764,7 @@ if the new rules deny them.</p>
4597
4764
  <span class="line"><span style="color:#E06C75;font-style:italic"> auth</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientAuth</span><span style="color:#ABB2BF">,</span></span>
4598
4765
  <span class="line"><span style="color:#E06C75;font-style:italic"> email</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
4599
4766
  <span class="line"><span style="color:#E06C75;font-style:italic">password</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">ClientUserCredential</span><span style="color:#ABB2BF">>;</span></span></code></pre>
4600
- <h4 id="parameters-127">Parameters</h4>
4767
+ <h4 id="parameters-128">Parameters</h4>
4601
4768
  <div class="table-scroll">
4602
4769
 
4603
4770
 
@@ -4620,13 +4787,13 @@ if the new rules deny them.</p>
4620
4787
 
4621
4788
 
4622
4789
  <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"><a href="#clientauth"><code>ClientAuth</code></a></td></tr><tr><td align="left"><code>email</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>password</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
4623
- <h4 id="returns-154">Returns</h4>
4790
+ <h4 id="returns-160">Returns</h4>
4624
4791
  <p><code>Promise</code>&#x3C;<a href="#clientusercredential"><code>ClientUserCredential</code></a>></p>
4625
4792
  <hr>
4626
4793
  <p><a id="signout"></a></p>
4627
4794
  <h3 id="signout">signOut()</h3>
4628
4795
  <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"> signOut</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">auth</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientAuth</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>
4629
- <h4 id="parameters-128">Parameters</h4>
4796
+ <h4 id="parameters-129">Parameters</h4>
4630
4797
  <div class="table-scroll">
4631
4798
 
4632
4799
 
@@ -4641,13 +4808,13 @@ if the new rules deny them.</p>
4641
4808
 
4642
4809
 
4643
4810
  <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"><a href="#clientauth"><code>ClientAuth</code></a></td></tr></tbody></table></div>
4644
- <h4 id="returns-155">Returns</h4>
4811
+ <h4 id="returns-161">Returns</h4>
4645
4812
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4646
4813
  <hr>
4647
4814
  <p><a id="startafter"></a></p>
4648
4815
  <h3 id="startafter">startAfter()</h3>
4649
4816
  <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">QueryConstraintHandle</span><span style="color:#ABB2BF">;</span></span></code></pre>
4650
- <h4 id="parameters-129">Parameters</h4>
4817
+ <h4 id="parameters-130">Parameters</h4>
4651
4818
  <div class="table-scroll">
4652
4819
 
4653
4820
 
@@ -4662,13 +4829,13 @@ if the new rules deny them.</p>
4662
4829
 
4663
4830
 
4664
4831
  <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>
4665
- <h4 id="returns-156">Returns</h4>
4832
+ <h4 id="returns-162">Returns</h4>
4666
4833
  <p><code>QueryConstraintHandle</code></p>
4667
4834
  <hr>
4668
4835
  <p><a id="startat"></a></p>
4669
4836
  <h3 id="startat">startAt()</h3>
4670
4837
  <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">QueryConstraintHandle</span><span style="color:#ABB2BF">;</span></span></code></pre>
4671
- <h4 id="parameters-130">Parameters</h4>
4838
+ <h4 id="parameters-131">Parameters</h4>
4672
4839
  <div class="table-scroll">
4673
4840
 
4674
4841
 
@@ -4683,7 +4850,7 @@ if the new rules deny them.</p>
4683
4850
 
4684
4851
 
4685
4852
  <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>
4686
- <h4 id="returns-157">Returns</h4>
4853
+ <h4 id="returns-163">Returns</h4>
4687
4854
  <p><code>QueryConstraintHandle</code></p>
4688
4855
  <hr>
4689
4856
  <p><a id="startpresence"></a></p>
@@ -4691,7 +4858,7 @@ if the new rules deny them.</p>
4691
4858
  <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"> startPresence</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">opts</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StartPresenceOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">PresenceSession</span><span style="color:#ABB2BF">;</span></span></code></pre>
4692
4859
  <p>Register this page with the worker and keep the lease alive until
4693
4860
  <a href="#stop">PresenceSession.stop</a> or <code>pagehide</code>.</p>
4694
- <h4 id="parameters-131">Parameters</h4>
4861
+ <h4 id="parameters-132">Parameters</h4>
4695
4862
  <div class="table-scroll">
4696
4863
 
4697
4864
 
@@ -4706,7 +4873,7 @@ if the new rules deny them.</p>
4706
4873
 
4707
4874
 
4708
4875
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>opts</code></td><td align="left"><code>StartPresenceOptions</code></td></tr></tbody></table></div>
4709
- <h4 id="returns-158">Returns</h4>
4876
+ <h4 id="returns-164">Returns</h4>
4710
4877
  <p><a href="#presencesession"><code>PresenceSession</code></a></p>
4711
4878
  <hr>
4712
4879
  <p><a id="subscribeevents"></a></p>
@@ -4719,7 +4886,7 @@ event. Returns an unsubscribe that deregisters on the worker.</p>
4719
4886
  <p>This is the live counterpart to <code>sandbox.onEvent</code> + an initial <code>history()</code>
4720
4887
  fold, collapsed into one subscription so a late subscriber never misses the
4721
4888
  backlog.</p>
4722
- <h4 id="parameters-132">Parameters</h4>
4889
+ <h4 id="parameters-133">Parameters</h4>
4723
4890
  <div class="table-scroll">
4724
4891
 
4725
4892
 
@@ -4738,7 +4905,7 @@ backlog.</p>
4738
4905
 
4739
4906
 
4740
4907
  <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="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>callback</code></td><td align="left">(<code>events</code>: readonly <a href="/docs/pyric-sandbox-reference-api/#sandboxevent"><code>SandboxEvent</code></a>[]) => <code>void</code></td></tr></tbody></table></div>
4741
- <h4 id="returns-159">Returns</h4>
4908
+ <h4 id="returns-165">Returns</h4>
4742
4909
  <p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
4743
4910
  <hr>
4744
4911
  <p><a id="subscribepresence"></a></p>
@@ -4746,7 +4913,7 @@ backlog.</p>
4746
4913
  <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"> subscribePresence</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientDb</span><span style="color:#ABB2BF">, </span><span style="color:#61AFEF">callback</span><span style="color:#ABB2BF">: (</span><span style="color:#E06C75;font-style:italic">snapshot</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">PresenceSnapshot</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">=></span><span style="color:#E5C07B"> void</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Unsubscribe</span><span style="color:#ABB2BF">;</span></span></code></pre>
4747
4914
  <p>Subscribe to the worker’s authoritative presence snapshot. The callback
4748
4915
  fires immediately with the current snapshot, then on every change.</p>
4749
- <h4 id="parameters-133">Parameters</h4>
4916
+ <h4 id="parameters-134">Parameters</h4>
4750
4917
  <div class="table-scroll">
4751
4918
 
4752
4919
 
@@ -4765,14 +4932,14 @@ fires immediately with the current snapshot, then on every change.</p>
4765
4932
 
4766
4933
 
4767
4934
  <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="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>callback</code></td><td align="left">(<code>snapshot</code>: <a href="#presencesnapshot"><code>PresenceSnapshot</code></a>) => <code>void</code></td></tr></tbody></table></div>
4768
- <h4 id="returns-160">Returns</h4>
4935
+ <h4 id="returns-166">Returns</h4>
4769
4936
  <p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
4770
4937
  <hr>
4771
4938
  <p><a id="sum"></a></p>
4772
4939
  <h3 id="sum">sum()</h3>
4773
4940
  <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">AggregateFieldDescriptor</span><span style="color:#ABB2BF">;</span></span></code></pre>
4774
4941
  <p>Factory: sum-of-<code>field</code> aggregate. Mirrors <code>pyric/firestore</code>’s <code>sum()</code>.</p>
4775
- <h4 id="parameters-134">Parameters</h4>
4942
+ <h4 id="parameters-135">Parameters</h4>
4776
4943
  <div class="table-scroll">
4777
4944
 
4778
4945
 
@@ -4787,14 +4954,14 @@ fires immediately with the current snapshot, then on every change.</p>
4787
4954
 
4788
4955
 
4789
4956
  <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>
4790
- <h4 id="returns-161">Returns</h4>
4957
+ <h4 id="returns-167">Returns</h4>
4791
4958
  <p><code>AggregateFieldDescriptor</code></p>
4792
4959
  <hr>
4793
4960
  <p><a id="switchworkerbranch"></a></p>
4794
4961
  <h3 id="switchworkerbranch">switchWorkerBranch()</h3>
4795
4962
  <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"> switchWorkerBranch</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientDb</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">name</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</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>
4796
4963
  <p>Phase 3 (clobber): switch the live sandbox to a named branch’s state.</p>
4797
- <h4 id="parameters-135">Parameters</h4>
4964
+ <h4 id="parameters-136">Parameters</h4>
4798
4965
  <div class="table-scroll">
4799
4966
 
4800
4967
 
@@ -4813,13 +4980,13 @@ fires immediately with the current snapshot, then on every change.</p>
4813
4980
 
4814
4981
 
4815
4982
  <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="#clientdb"><code>ClientDb</code></a></td></tr><tr><td align="left"><code>name</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
4816
- <h4 id="returns-162">Returns</h4>
4983
+ <h4 id="returns-168">Returns</h4>
4817
4984
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4818
4985
  <hr>
4819
4986
  <p><a id="updatedoc"></a></p>
4820
4987
  <h3 id="updatedoc">updateDoc()</h3>
4821
4988
  <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"> updateDoc</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">DocRefHandle</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">data</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Record</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">unknown</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>
4822
- <h4 id="parameters-136">Parameters</h4>
4989
+ <h4 id="parameters-137">Parameters</h4>
4823
4990
  <div class="table-scroll">
4824
4991
 
4825
4992
 
@@ -4838,7 +5005,7 @@ fires immediately with the current snapshot, then on every change.</p>
4838
5005
 
4839
5006
 
4840
5007
  <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="#docrefhandle"><code>DocRefHandle</code></a></td></tr><tr><td align="left"><code>data</code></td><td align="left"><code>Record</code>&#x3C;<code>string</code>, <code>unknown</code>></td></tr></tbody></table></div>
4841
- <h4 id="returns-163">Returns</h4>
5008
+ <h4 id="returns-169">Returns</h4>
4842
5009
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4843
5010
  <hr>
4844
5011
  <p><a id="uploadbytes"></a></p>
@@ -4852,7 +5019,7 @@ fires immediately with the current snapshot, then on every change.</p>
4852
5019
  <span class="line"><span style="color:#ABB2BF">}>;</span></span></code></pre>
4853
5020
  <p>Upload bytes at the reference’s path (replaces existing content).
4854
5021
  Mirrors <code>pyric/storage</code>’s <code>uploadBytes</code> result shape.</p>
4855
- <h4 id="parameters-137">Parameters</h4>
5022
+ <h4 id="parameters-138">Parameters</h4>
4856
5023
  <div class="table-scroll">
4857
5024
 
4858
5025
 
@@ -4875,7 +5042,84 @@ Mirrors <code>pyric/storage</code>’s <code>uploadBytes</code> result shape.</p
4875
5042
 
4876
5043
 
4877
5044
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>reference</code></td><td align="left"><a href="#clientstoragereference"><code>ClientStorageReference</code></a></td></tr><tr><td align="left"><code>data</code></td><td align="left"><code>ArrayBuffer</code> | <code>Uint8Array</code>&#x3C;<code>ArrayBufferLike</code>> | <code>Blob</code></td></tr><tr><td align="left"><code>metadata?</code></td><td align="left"><a href="#clientsettablemetadata"><code>ClientSettableMetadata</code></a></td></tr></tbody></table></div>
4878
- <h4 id="returns-164">Returns</h4>
5045
+ <h4 id="returns-170">Returns</h4>
5046
+ <p><code>Promise</code>&#x3C;{
5047
+ <code>metadata</code>: <a href="/docs/pyric-storage-reference-api/#fullmetadata"><code>FullMetadata</code></a>;
5048
+ <code>ref</code>: <a href="#clientstoragereference"><code>ClientStorageReference</code></a>;
5049
+ }></p>
5050
+ <hr>
5051
+ <p><a id="uploadbytesresumable"></a></p>
5052
+ <h3 id="uploadbytesresumable">uploadBytesResumable()</h3>
5053
+ <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"> uploadBytesResumable</span><span style="color:#ABB2BF">(</span></span>
5054
+ <span class="line"><span style="color:#E06C75;font-style:italic"> reference</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientStorageReference</span><span style="color:#ABB2BF">,</span></span>
5055
+ <span class="line"><span style="color:#E06C75;font-style:italic"> data</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ArrayBuffer</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">Uint8Array</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">ArrayBufferLike</span><span style="color:#ABB2BF">> | </span><span style="color:#E5C07B">Blob</span><span style="color:#ABB2BF">,</span></span>
5056
+ <span class="line"><span style="color:#E06C75;font-style:italic"> metadata</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientSettableMetadata</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">ClientUploadTask</span><span style="color:#ABB2BF">;</span></span></code></pre>
5057
+ <h4 id="parameters-139">Parameters</h4>
5058
+ <div class="table-scroll">
5059
+
5060
+
5061
+
5062
+
5063
+
5064
+
5065
+
5066
+
5067
+
5068
+
5069
+
5070
+
5071
+
5072
+
5073
+
5074
+
5075
+
5076
+
5077
+
5078
+
5079
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>reference</code></td><td align="left"><a href="#clientstoragereference"><code>ClientStorageReference</code></a></td></tr><tr><td align="left"><code>data</code></td><td align="left"><code>ArrayBuffer</code> | <code>Uint8Array</code>&#x3C;<code>ArrayBufferLike</code>> | <code>Blob</code></td></tr><tr><td align="left"><code>metadata?</code></td><td align="left"><a href="#clientsettablemetadata"><code>ClientSettableMetadata</code></a></td></tr></tbody></table></div>
5080
+ <h4 id="returns-171">Returns</h4>
5081
+ <p><a href="#clientuploadtask"><code>ClientUploadTask</code></a></p>
5082
+ <hr>
5083
+ <p><a id="uploadstring"></a></p>
5084
+ <h3 id="uploadstring">uploadString()</h3>
5085
+ <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"> uploadString</span><span style="color:#ABB2BF">(</span></span>
5086
+ <span class="line"><span style="color:#E06C75;font-style:italic"> reference</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientStorageReference</span><span style="color:#ABB2BF">,</span></span>
5087
+ <span class="line"><span style="color:#E06C75;font-style:italic"> value</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
5088
+ <span class="line"><span style="color:#E06C75;font-style:italic"> format</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StringFormat</span><span style="color:#ABB2BF">,</span></span>
5089
+ <span class="line"><span style="color:#E06C75;font-style:italic"> metadata</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientSettableMetadata</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;{</span></span>
5090
+ <span class="line"><span style="color:#E06C75"> metadata</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FullMetadata</span><span style="color:#ABB2BF">;</span></span>
5091
+ <span class="line"><span style="color:#E06C75"> ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ClientStorageReference</span><span style="color:#ABB2BF">;</span></span>
5092
+ <span class="line"><span style="color:#ABB2BF">}>;</span></span></code></pre>
5093
+ <p>Upload string payload at the reference’s path.
5094
+ Mirrors <code>pyric/storage</code>’s <code>uploadString</code> result shape.</p>
5095
+ <h4 id="parameters-140">Parameters</h4>
5096
+ <div class="table-scroll">
5097
+
5098
+
5099
+
5100
+
5101
+
5102
+
5103
+
5104
+
5105
+
5106
+
5107
+
5108
+
5109
+
5110
+
5111
+
5112
+
5113
+
5114
+
5115
+
5116
+
5117
+
5118
+
5119
+
5120
+
5121
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>reference</code></td><td align="left"><a href="#clientstoragereference"><code>ClientStorageReference</code></a></td></tr><tr><td align="left"><code>value</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>format?</code></td><td align="left"><a href="/docs/pyric-storage-reference-api/#stringformat"><code>StringFormat</code></a></td></tr><tr><td align="left"><code>metadata?</code></td><td align="left"><a href="#clientsettablemetadata"><code>ClientSettableMetadata</code></a></td></tr></tbody></table></div>
5122
+ <h4 id="returns-172">Returns</h4>
4879
5123
  <p><code>Promise</code>&#x3C;{
4880
5124
  <code>metadata</code>: <a href="/docs/pyric-storage-reference-api/#fullmetadata"><code>FullMetadata</code></a>;
4881
5125
  <code>ref</code>: <a href="#clientstoragereference"><code>ClientStorageReference</code></a>;
@@ -4887,7 +5131,7 @@ Mirrors <code>pyric/storage</code>’s <code>uploadBytes</code> result shape.</p
4887
5131
  <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>
4888
5132
  <span class="line"><span style="color:#E06C75;font-style:italic"> op</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
4889
5133
  <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">QueryConstraintHandle</span><span style="color:#ABB2BF">;</span></span></code></pre>
4890
- <h4 id="parameters-138">Parameters</h4>
5134
+ <h4 id="parameters-141">Parameters</h4>
4891
5135
  <div class="table-scroll">
4892
5136
 
4893
5137
 
@@ -4910,7 +5154,7 @@ Mirrors <code>pyric/storage</code>’s <code>uploadBytes</code> result shape.</p
4910
5154
 
4911
5155
 
4912
5156
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>field</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>op</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>value</code></td><td align="left"><code>unknown</code></td></tr></tbody></table></div>
4913
- <h4 id="returns-165">Returns</h4>
5157
+ <h4 id="returns-173">Returns</h4>
4914
5158
  <p><code>QueryConstraintHandle</code></p>
4915
5159
  <hr>
4916
5160
  <p><a id="workernameforepoch"></a></p>
@@ -4922,7 +5166,7 @@ still have the legacy <code>pyric-shared-worker</code> alive. Seed the first ser
4922
5166
  epoch before connecting so a new client never attaches to that incompatible
4923
5167
  worker. Later releases keep using the stored generation until replacement
4924
5168
  is explicitly committed.</p>
4925
- <h4 id="parameters-139">Parameters</h4>
5169
+ <h4 id="parameters-142">Parameters</h4>
4926
5170
  <div class="table-scroll">
4927
5171
 
4928
5172
 
@@ -4941,13 +5185,13 @@ is explicitly committed.</p>
4941
5185
 
4942
5186
 
4943
5187
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>servedEpoch</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>storage</code></td><td align="left"><code>EpochStorage</code></td></tr></tbody></table></div>
4944
- <h4 id="returns-166">Returns</h4>
5188
+ <h4 id="returns-174">Returns</h4>
4945
5189
  <p><code>string</code></p>
4946
5190
  <hr>
4947
5191
  <p><a id="writebatch"></a></p>
4948
5192
  <h3 id="writebatch">writeBatch()</h3>
4949
5193
  <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">ClientDb</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">ClientWriteBatch</span><span style="color:#ABB2BF">;</span></span></code></pre>
4950
- <h4 id="parameters-140">Parameters</h4>
5194
+ <h4 id="parameters-143">Parameters</h4>
4951
5195
  <div class="table-scroll">
4952
5196
 
4953
5197
 
@@ -4962,5 +5206,5 @@ is explicitly committed.</p>
4962
5206
 
4963
5207
 
4964
5208
  <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="#clientdb"><code>ClientDb</code></a></td></tr></tbody></table></div>
4965
- <h4 id="returns-167">Returns</h4>
4966
- <p><a href="#clientwritebatch"><code>ClientWriteBatch</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="rtdbondisconnect" data-astro-cid-mw7aashj> <a href="#rtdbondisconnect" data-astro-cid-mw7aashj>RtdbOnDisconnect</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="clientauth" data-astro-cid-mw7aashj> <a href="#clientauth" data-astro-cid-mw7aashj>ClientAuth</a> </li><li data-api-symbol="clientdb" data-astro-cid-mw7aashj> <a href="#clientdb" data-astro-cid-mw7aashj>ClientDb</a> </li><li data-api-symbol="clientdocsnapshot" data-astro-cid-mw7aashj> <a href="#clientdocsnapshot" data-astro-cid-mw7aashj>ClientDocSnapshot</a> </li><li data-api-symbol="clientfirebasestorage" data-astro-cid-mw7aashj> <a href="#clientfirebasestorage" data-astro-cid-mw7aashj>ClientFirebaseStorage</a> </li><li data-api-symbol="clientquerysnapshot" data-astro-cid-mw7aashj> <a href="#clientquerysnapshot" data-astro-cid-mw7aashj>ClientQuerySnapshot</a> </li><li data-api-symbol="clientrtdb" data-astro-cid-mw7aashj> <a href="#clientrtdb" data-astro-cid-mw7aashj>ClientRtdb</a> </li><li data-api-symbol="clientsettablemetadata" data-astro-cid-mw7aashj> <a href="#clientsettablemetadata" data-astro-cid-mw7aashj>ClientSettableMetadata</a> </li><li data-api-symbol="clientstoragereference" data-astro-cid-mw7aashj> <a href="#clientstoragereference" data-astro-cid-mw7aashj>ClientStorageReference</a> </li><li data-api-symbol="clienttransaction" data-astro-cid-mw7aashj> <a href="#clienttransaction" data-astro-cid-mw7aashj>ClientTransaction</a> </li><li data-api-symbol="clientuser" data-astro-cid-mw7aashj> <a href="#clientuser" data-astro-cid-mw7aashj>ClientUser</a> </li><li data-api-symbol="clientusercredential" data-astro-cid-mw7aashj> <a href="#clientusercredential" data-astro-cid-mw7aashj>ClientUserCredential</a> </li><li data-api-symbol="clientwritebatch" data-astro-cid-mw7aashj> <a href="#clientwritebatch" data-astro-cid-mw7aashj>ClientWriteBatch</a> </li><li data-api-symbol="collrefhandle" data-astro-cid-mw7aashj> <a href="#collrefhandle" data-astro-cid-mw7aashj>CollRefHandle</a> </li><li data-api-symbol="disconnectclientoptions" data-astro-cid-mw7aashj> <a href="#disconnectclientoptions" data-astro-cid-mw7aashj>DisconnectClientOptions</a> </li><li data-api-symbol="docrefhandle" data-astro-cid-mw7aashj> <a href="#docrefhandle" data-astro-cid-mw7aashj>DocRefHandle</a> </li><li data-api-symbol="presencesession" data-astro-cid-mw7aashj> <a href="#presencesession" data-astro-cid-mw7aashj>PresenceSession</a> </li><li data-api-symbol="presencesnapshot" data-astro-cid-mw7aashj> <a href="#presencesnapshot" data-astro-cid-mw7aashj>PresenceSnapshot</a> </li><li data-api-symbol="pyricruntimemanifest" data-astro-cid-mw7aashj> <a href="#pyricruntimemanifest" data-astro-cid-mw7aashj>PyricRuntimeManifest</a> </li><li data-api-symbol="queryhandle" data-astro-cid-mw7aashj> <a href="#queryhandle" data-astro-cid-mw7aashj>QueryHandle</a> </li><li data-api-symbol="resolvedidentity" data-astro-cid-mw7aashj> <a href="#resolvedidentity" data-astro-cid-mw7aashj>ResolvedIdentity</a> </li><li data-api-symbol="rtdbdatasnapshot" data-astro-cid-mw7aashj> <a href="#rtdbdatasnapshot" data-astro-cid-mw7aashj>RtdbDataSnapshot</a> </li><li data-api-symbol="rtdbrefhandle" data-astro-cid-mw7aashj> <a href="#rtdbrefhandle" data-astro-cid-mw7aashj>RtdbRefHandle</a> </li><li data-api-symbol="serializedidtokenresult" data-astro-cid-mw7aashj> <a href="#serializedidtokenresult" data-astro-cid-mw7aashj>SerializedIdTokenResult</a> </li><li data-api-symbol="serializeduser" data-astro-cid-mw7aashj> <a href="#serializeduser" data-astro-cid-mw7aashj>SerializedUser</a> </li><li data-api-symbol="serializedusercredential" data-astro-cid-mw7aashj> <a href="#serializedusercredential" data-astro-cid-mw7aashj>SerializedUserCredential</a> </li><li data-api-symbol="workerreplacement" data-astro-cid-mw7aashj> <a href="#workerreplacement" data-astro-cid-mw7aashj>WorkerReplacement</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="anyhandle" data-astro-cid-mw7aashj> <a href="#anyhandle" data-astro-cid-mw7aashj>AnyHandle</a> </li><li data-api-symbol="authpersistencemode" data-astro-cid-mw7aashj> <a href="#authpersistencemode" data-astro-cid-mw7aashj>AuthPersistenceMode</a> </li><li data-api-symbol="presenceclientkind" data-astro-cid-mw7aashj> <a href="#presenceclientkind" data-astro-cid-mw7aashj>PresenceClientKind</a> </li><li data-api-symbol="presencevisibility" data-astro-cid-mw7aashj> <a href="#presencevisibility" data-astro-cid-mw7aashj>PresenceVisibility</a> </li><li data-api-symbol="unsubscribe()" data-astro-cid-mw7aashj> <a href="#unsubscribe" data-astro-cid-mw7aashj>Unsubscribe()</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group data-astro-cid-mw7aashj> <a class="api-symbol-kind" href="#variables" data-astro-cid-mw7aashj> Variables </a> <ul data-astro-cid-mw7aashj> <li data-api-symbol="browserlocalpersistence" data-astro-cid-mw7aashj> <a href="#browserlocalpersistence" data-astro-cid-mw7aashj>browserLocalPersistence</a> </li><li data-api-symbol="browsersessionpersistence" data-astro-cid-mw7aashj> <a href="#browsersessionpersistence" data-astro-cid-mw7aashj>browserSessionPersistence</a> </li><li data-api-symbol="inmemorypersistence" data-astro-cid-mw7aashj> <a href="#inmemorypersistence" data-astro-cid-mw7aashj>inMemoryPersistence</a> </li><li data-api-symbol="presence_heartbeat_interval_ms" data-astro-cid-mw7aashj> <a href="#presence_heartbeat_interval_ms" data-astro-cid-mw7aashj>PRESENCE_HEARTBEAT_INTERVAL_MS</a> </li><li data-api-symbol="presence_stale_ms" data-astro-cid-mw7aashj> <a href="#presence_stale_ms" data-astro-cid-mw7aashj>PRESENCE_STALE_MS</a> </li><li data-api-symbol="pyric_worker_generation_key" data-astro-cid-mw7aashj> <a href="#pyric_worker_generation_key" data-astro-cid-mw7aashj>PYRIC_WORKER_GENERATION_KEY</a> </li><li data-api-symbol="pyric_worker_name" data-astro-cid-mw7aashj> <a href="#pyric_worker_name" data-astro-cid-mw7aashj>PYRIC_WORKER_NAME</a> </li><li data-api-symbol="pyric_worker_url" data-astro-cid-mw7aashj> <a href="#pyric_worker_url" data-astro-cid-mw7aashj>PYRIC_WORKER_URL</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="acceptprovidercredential()" data-astro-cid-mw7aashj> <a href="#acceptprovidercredential" data-astro-cid-mw7aashj>acceptProviderCredential()</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="adminclearusers()" data-astro-cid-mw7aashj> <a href="#adminclearusers" data-astro-cid-mw7aashj>adminClearUsers()</a> </li><li data-api-symbol="admincreateuser()" data-astro-cid-mw7aashj> <a href="#admincreateuser" data-astro-cid-mw7aashj>adminCreateUser()</a> </li><li data-api-symbol="admindeletedocument()" data-astro-cid-mw7aashj> <a href="#admindeletedocument" data-astro-cid-mw7aashj>adminDeleteDocument()</a> </li><li data-api-symbol="admindeletertdbvalue()" data-astro-cid-mw7aashj> <a href="#admindeletertdbvalue" data-astro-cid-mw7aashj>adminDeleteRtdbValue()</a> </li><li data-api-symbol="admindeleteuser()" data-astro-cid-mw7aashj> <a href="#admindeleteuser" data-astro-cid-mw7aashj>adminDeleteUser()</a> </li><li data-api-symbol="admingetdocument()" data-astro-cid-mw7aashj> <a href="#admingetdocument" data-astro-cid-mw7aashj>adminGetDocument()</a> </li><li data-api-symbol="adminlistdocuments()" data-astro-cid-mw7aashj> <a href="#adminlistdocuments" data-astro-cid-mw7aashj>adminListDocuments()</a> </li><li data-api-symbol="adminreadrtdbstate()" data-astro-cid-mw7aashj> <a href="#adminreadrtdbstate" data-astro-cid-mw7aashj>adminReadRtdbState()</a> </li><li data-api-symbol="adminreadstate()" data-astro-cid-mw7aashj> <a href="#adminreadstate" data-astro-cid-mw7aashj>adminReadState()</a> </li><li data-api-symbol="adminsetdocument()" data-astro-cid-mw7aashj> <a href="#adminsetdocument" data-astro-cid-mw7aashj>adminSetDocument()</a> </li><li data-api-symbol="adminsetrtdbvalue()" data-astro-cid-mw7aashj> <a href="#adminsetrtdbvalue" data-astro-cid-mw7aashj>adminSetRtdbValue()</a> </li><li data-api-symbol="adminsubscribertdbvalue()" data-astro-cid-mw7aashj> <a href="#adminsubscribertdbvalue" data-astro-cid-mw7aashj>adminSubscribeRtdbValue()</a> </li><li data-api-symbol="adminupdatertdbvalue()" data-astro-cid-mw7aashj> <a href="#adminupdatertdbvalue" data-astro-cid-mw7aashj>adminUpdateRtdbValue()</a> </li><li data-api-symbol="adminupdateuser()" data-astro-cid-mw7aashj> <a href="#adminupdateuser" data-astro-cid-mw7aashj>adminUpdateUser()</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" data-astro-cid-mw7aashj>arrayRemove()</a> </li><li data-api-symbol="arrayunion()" data-astro-cid-mw7aashj> <a href="#arrayunion" 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="calltool()" data-astro-cid-mw7aashj> <a href="#calltool" data-astro-cid-mw7aashj>callTool()</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="connectauthemulator()" data-astro-cid-mw7aashj> <a href="#connectauthemulator" data-astro-cid-mw7aashj>connectAuthEmulator()</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="createuserwithemailandpassword()" data-astro-cid-mw7aashj> <a href="#createuserwithemailandpassword" data-astro-cid-mw7aashj>createUserWithEmailAndPassword()</a> </li><li data-api-symbol="createworkerreplacement()" data-astro-cid-mw7aashj> <a href="#createworkerreplacement" data-astro-cid-mw7aashj>createWorkerReplacement()</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="deleteobject()" data-astro-cid-mw7aashj> <a href="#deleteobject" data-astro-cid-mw7aashj>deleteObject()</a> </li><li data-api-symbol="deleteworkerbranch()" data-astro-cid-mw7aashj> <a href="#deleteworkerbranch" data-astro-cid-mw7aashj>deleteWorkerBranch()</a> </li><li data-api-symbol="disconnectclient()" data-astro-cid-mw7aashj> <a href="#disconnectclient" data-astro-cid-mw7aashj>disconnectClient()</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="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="eventhistory()" data-astro-cid-mw7aashj> <a href="#eventhistory" data-astro-cid-mw7aashj>eventHistory()</a> </li><li data-api-symbol="exportworkerstate()" data-astro-cid-mw7aashj> <a href="#exportworkerstate" data-astro-cid-mw7aashj>exportWorkerState()</a> </li><li data-api-symbol="getactiverules()" data-astro-cid-mw7aashj> <a href="#getactiverules" data-astro-cid-mw7aashj>getActiveRules()</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="getauth()" data-astro-cid-mw7aashj> <a href="#getauth" data-astro-cid-mw7aashj>getAuth()</a> </li><li data-api-symbol="getblob()" data-astro-cid-mw7aashj> <a href="#getblob" data-astro-cid-mw7aashj>getBlob()</a> </li><li data-api-symbol="getbytes()" data-astro-cid-mw7aashj> <a href="#getbytes" data-astro-cid-mw7aashj>getBytes()</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="getdocs()" data-astro-cid-mw7aashj> <a href="#getdocs" data-astro-cid-mw7aashj>getDocs()</a> </li><li data-api-symbol="getdownloadurl()" data-astro-cid-mw7aashj> <a href="#getdownloadurl" data-astro-cid-mw7aashj>getDownloadURL()</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="getidtoken()" data-astro-cid-mw7aashj> <a href="#getidtoken-1" data-astro-cid-mw7aashj>getIdToken()</a> </li><li data-api-symbol="getidtokenresult()" data-astro-cid-mw7aashj> <a href="#getidtokenresult-1" data-astro-cid-mw7aashj>getIdTokenResult()</a> </li><li data-api-symbol="getlens()" data-astro-cid-mw7aashj> <a href="#getlens" data-astro-cid-mw7aashj>getLens()</a> </li><li data-api-symbol="getmetadata()" data-astro-cid-mw7aashj> <a href="#getmetadata" data-astro-cid-mw7aashj>getMetadata()</a> </li><li data-api-symbol="getproviderconfig()" data-astro-cid-mw7aashj> <a href="#getproviderconfig" data-astro-cid-mw7aashj>getProviderConfig()</a> </li><li data-api-symbol="getrulesstatus()" data-astro-cid-mw7aashj> <a href="#getrulesstatus" data-astro-cid-mw7aashj>getRulesStatus()</a> </li><li data-api-symbol="getsnapshot()" data-astro-cid-mw7aashj> <a href="#getsnapshot" data-astro-cid-mw7aashj>getSnapshot()</a> </li><li data-api-symbol="getstorage()" data-astro-cid-mw7aashj> <a href="#getstorage" data-astro-cid-mw7aashj>getStorage()</a> </li><li data-api-symbol="getworkerinstanceid()" data-astro-cid-mw7aashj> <a href="#getworkerinstanceid" data-astro-cid-mw7aashj>getWorkerInstanceId()</a> </li><li data-api-symbol="getworkerversion()" data-astro-cid-mw7aashj> <a href="#getworkerversion" data-astro-cid-mw7aashj>getWorkerVersion()</a> </li><li data-api-symbol="importworkerstate()" data-astro-cid-mw7aashj> <a href="#importworkerstate" data-astro-cid-mw7aashj>importWorkerState()</a> </li><li data-api-symbol="increment()" data-astro-cid-mw7aashj> <a href="#increment" data-astro-cid-mw7aashj>increment()</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="listall()" data-astro-cid-mw7aashj> <a href="#listall" data-astro-cid-mw7aashj>listAll()</a> </li><li data-api-symbol="listrootcollections()" data-astro-cid-mw7aashj> <a href="#listrootcollections" data-astro-cid-mw7aashj>listRootCollections()</a> </li><li data-api-symbol="listsubcollections()" data-astro-cid-mw7aashj> <a href="#listsubcollections" data-astro-cid-mw7aashj>listSubcollections()</a> </li><li data-api-symbol="listusers()" data-astro-cid-mw7aashj> <a href="#listusers" data-astro-cid-mw7aashj>listUsers()</a> </li><li data-api-symbol="listworkerbranches()" data-astro-cid-mw7aashj> <a href="#listworkerbranches" data-astro-cid-mw7aashj>listWorkerBranches()</a> </li><li data-api-symbol="mintpresenceclientid()" data-astro-cid-mw7aashj> <a href="#mintpresenceclientid" data-astro-cid-mw7aashj>mintPresenceClientId()</a> </li><li data-api-symbol="onauthstatechanged()" data-astro-cid-mw7aashj> <a href="#onauthstatechanged" data-astro-cid-mw7aashj>onAuthStateChanged()</a> </li><li data-api-symbol="onidtokenchanged()" data-astro-cid-mw7aashj> <a href="#onidtokenchanged" data-astro-cid-mw7aashj>onIdTokenChanged()</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="onworkerruntimereload()" data-astro-cid-mw7aashj> <a href="#onworkerruntimereload" data-astro-cid-mw7aashj>onWorkerRuntimeReload()</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="ownclientuntilpagehide()" data-astro-cid-mw7aashj> <a href="#ownclientuntilpagehide" data-astro-cid-mw7aashj>ownClientUntilPagehide()</a> </li><li data-api-symbol="preflightworkerepochstorage()" data-astro-cid-mw7aashj> <a href="#preflightworkerepochstorage" data-astro-cid-mw7aashj>preflightWorkerEpochStorage()</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="readpyricruntimemanifest()" data-astro-cid-mw7aashj> <a href="#readpyricruntimemanifest" data-astro-cid-mw7aashj>readPyricRuntimeManifest()</a> </li><li data-api-symbol="ref()" data-astro-cid-mw7aashj> <a href="#ref" data-astro-cid-mw7aashj>ref()</a> </li><li data-api-symbol="relayworkerop()" data-astro-cid-mw7aashj> <a href="#relayworkerop" data-astro-cid-mw7aashj>relayWorkerOp()</a> </li><li data-api-symbol="relayworkersub()" data-astro-cid-mw7aashj> <a href="#relayworkersub" data-astro-cid-mw7aashj>relayWorkerSub()</a> </li><li data-api-symbol="rememberworkerepoch()" data-astro-cid-mw7aashj> <a href="#rememberworkerepoch" data-astro-cid-mw7aashj>rememberWorkerEpoch()</a> </li><li data-api-symbol="resetall()" data-astro-cid-mw7aashj> <a href="#resetall" data-astro-cid-mw7aashj>resetAll()</a> </li><li data-api-symbol="retireworkerruntime()" data-astro-cid-mw7aashj> <a href="#retireworkerruntime" data-astro-cid-mw7aashj>retireWorkerRuntime()</a> </li><li data-api-symbol="rtdbchild()" data-astro-cid-mw7aashj> <a href="#rtdbchild" data-astro-cid-mw7aashj>rtdbChild()</a> </li><li data-api-symbol="rtdbconnectdatabaseemulator()" data-astro-cid-mw7aashj> <a href="#rtdbconnectdatabaseemulator" data-astro-cid-mw7aashj>rtdbConnectDatabaseEmulator()</a> </li><li data-api-symbol="rtdbget()" data-astro-cid-mw7aashj> <a href="#rtdbget" data-astro-cid-mw7aashj>rtdbGet()</a> </li><li data-api-symbol="rtdbgetdatabase()" data-astro-cid-mw7aashj> <a href="#rtdbgetdatabase" data-astro-cid-mw7aashj>rtdbGetDatabase()</a> </li><li data-api-symbol="rtdbgooffline()" data-astro-cid-mw7aashj> <a href="#rtdbgooffline" data-astro-cid-mw7aashj>rtdbGoOffline()</a> </li><li data-api-symbol="rtdbgoonline()" data-astro-cid-mw7aashj> <a href="#rtdbgoonline" data-astro-cid-mw7aashj>rtdbGoOnline()</a> </li><li data-api-symbol="rtdboff()" data-astro-cid-mw7aashj> <a href="#rtdboff" data-astro-cid-mw7aashj>rtdbOff()</a> </li><li data-api-symbol="rtdbonchildadded()" data-astro-cid-mw7aashj> <a href="#rtdbonchildadded" data-astro-cid-mw7aashj>rtdbOnChildAdded()</a> </li><li data-api-symbol="rtdbonchildchanged()" data-astro-cid-mw7aashj> <a href="#rtdbonchildchanged" data-astro-cid-mw7aashj>rtdbOnChildChanged()</a> </li><li data-api-symbol="rtdbonchildmoved()" data-astro-cid-mw7aashj> <a href="#rtdbonchildmoved" data-astro-cid-mw7aashj>rtdbOnChildMoved()</a> </li><li data-api-symbol="rtdbonchildremoved()" data-astro-cid-mw7aashj> <a href="#rtdbonchildremoved" data-astro-cid-mw7aashj>rtdbOnChildRemoved()</a> </li><li data-api-symbol="rtdbondisconnect()" data-astro-cid-mw7aashj> <a href="#rtdbondisconnect-1" data-astro-cid-mw7aashj>rtdbOnDisconnect()</a> </li><li data-api-symbol="rtdbonvalue()" data-astro-cid-mw7aashj> <a href="#rtdbonvalue" data-astro-cid-mw7aashj>rtdbOnValue()</a> </li><li data-api-symbol="rtdbpush()" data-astro-cid-mw7aashj> <a href="#rtdbpush" data-astro-cid-mw7aashj>rtdbPush()</a> </li><li data-api-symbol="rtdbref()" data-astro-cid-mw7aashj> <a href="#rtdbref" data-astro-cid-mw7aashj>rtdbRef()</a> </li><li data-api-symbol="rtdbremove()" data-astro-cid-mw7aashj> <a href="#rtdbremove" data-astro-cid-mw7aashj>rtdbRemove()</a> </li><li data-api-symbol="rtdbruntransaction()" data-astro-cid-mw7aashj> <a href="#rtdbruntransaction" data-astro-cid-mw7aashj>rtdbRunTransaction()</a> </li><li data-api-symbol="rtdbservertimestamp()" data-astro-cid-mw7aashj> <a href="#rtdbservertimestamp" data-astro-cid-mw7aashj>rtdbServerTimestamp()</a> </li><li data-api-symbol="rtdbset()" data-astro-cid-mw7aashj> <a href="#rtdbset" data-astro-cid-mw7aashj>rtdbSet()</a> </li><li data-api-symbol="rtdbsetpriority()" data-astro-cid-mw7aashj> <a href="#rtdbsetpriority" data-astro-cid-mw7aashj>rtdbSetPriority()</a> </li><li data-api-symbol="rtdbsetwithpriority()" data-astro-cid-mw7aashj> <a href="#rtdbsetwithpriority" data-astro-cid-mw7aashj>rtdbSetWithPriority()</a> </li><li data-api-symbol="rtdbupdate()" data-astro-cid-mw7aashj> <a href="#rtdbupdate" data-astro-cid-mw7aashj>rtdbUpdate()</a> </li><li data-api-symbol="runtransaction()" data-astro-cid-mw7aashj> <a href="#runtransaction" data-astro-cid-mw7aashj>runTransaction()</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group data-astro-cid-mw7aashj> <a class="api-symbol-kind" href="#multi-tab-correctness--read-set-validation--retry" data-astro-cid-mw7aashj> MULTI-TAB CORRECTNESS — READ-SET VALIDATION + RETRY </a> <ul data-astro-cid-mw7aashj> <li data-api-symbol="saveworkerbranch()" data-astro-cid-mw7aashj> <a href="#saveworkerbranch" data-astro-cid-mw7aashj>saveWorkerBranch()</a> </li><li data-api-symbol="servertimestamp()" data-astro-cid-mw7aashj> <a href="#servertimestamp" data-astro-cid-mw7aashj>serverTimestamp()</a> </li><li data-api-symbol="setdatabaserules()" data-astro-cid-mw7aashj> <a href="#setdatabaserules" data-astro-cid-mw7aashj>setDatabaseRules()</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="setfirestorerules()" data-astro-cid-mw7aashj> <a href="#setfirestorerules" data-astro-cid-mw7aashj>setFirestoreRules()</a> </li><li data-api-symbol="setlens()" data-astro-cid-mw7aashj> <a href="#setlens" data-astro-cid-mw7aashj>setLens()</a> </li><li data-api-symbol="setopissuer()" data-astro-cid-mw7aashj> <a href="#setopissuer" data-astro-cid-mw7aashj>setOpIssuer()</a> </li><li data-api-symbol="setpersistence()" data-astro-cid-mw7aashj> <a href="#setpersistence" data-astro-cid-mw7aashj>setPersistence()</a> </li><li data-api-symbol="setproviderconfig()" data-astro-cid-mw7aashj> <a href="#setproviderconfig" data-astro-cid-mw7aashj>setProviderConfig()</a> </li><li data-api-symbol="setrules()" data-astro-cid-mw7aashj> <a href="#setrules" data-astro-cid-mw7aashj>setRules()</a> </li><li data-api-symbol="signinanonymously()" data-astro-cid-mw7aashj> <a href="#signinanonymously" data-astro-cid-mw7aashj>signInAnonymously()</a> </li><li data-api-symbol="signinwithemailandpassword()" data-astro-cid-mw7aashj> <a href="#signinwithemailandpassword" data-astro-cid-mw7aashj>signInWithEmailAndPassword()</a> </li><li data-api-symbol="signout()" data-astro-cid-mw7aashj> <a href="#signout" data-astro-cid-mw7aashj>signOut()</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="startpresence()" data-astro-cid-mw7aashj> <a href="#startpresence" data-astro-cid-mw7aashj>startPresence()</a> </li><li data-api-symbol="subscribeevents()" data-astro-cid-mw7aashj> <a href="#subscribeevents" data-astro-cid-mw7aashj>subscribeEvents()</a> </li><li data-api-symbol="subscribepresence()" data-astro-cid-mw7aashj> <a href="#subscribepresence" data-astro-cid-mw7aashj>subscribePresence()</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="switchworkerbranch()" data-astro-cid-mw7aashj> <a href="#switchworkerbranch" data-astro-cid-mw7aashj>switchWorkerBranch()</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="uploadbytes()" data-astro-cid-mw7aashj> <a href="#uploadbytes" data-astro-cid-mw7aashj>uploadBytes()</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="workernameforepoch()" data-astro-cid-mw7aashj> <a href="#workernameforepoch" data-astro-cid-mw7aashj>workerNameForEpoch()</a> </li><li data-api-symbol="writebatch()" data-astro-cid-mw7aashj> <a href="#writebatch" 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>
5209
+ <h4 id="returns-175">Returns</h4>
5210
+ <p><a href="#clientwritebatch"><code>ClientWriteBatch</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="rtdbondisconnect" data-astro-cid-mw7aashj> <a href="#rtdbondisconnect" data-astro-cid-mw7aashj>RtdbOnDisconnect</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="clientauth" data-astro-cid-mw7aashj> <a href="#clientauth" data-astro-cid-mw7aashj>ClientAuth</a> </li><li data-api-symbol="clientdb" data-astro-cid-mw7aashj> <a href="#clientdb" data-astro-cid-mw7aashj>ClientDb</a> </li><li data-api-symbol="clientdocsnapshot" data-astro-cid-mw7aashj> <a href="#clientdocsnapshot" data-astro-cid-mw7aashj>ClientDocSnapshot</a> </li><li data-api-symbol="clientfirebasestorage" data-astro-cid-mw7aashj> <a href="#clientfirebasestorage" data-astro-cid-mw7aashj>ClientFirebaseStorage</a> </li><li data-api-symbol="clientquerysnapshot" data-astro-cid-mw7aashj> <a href="#clientquerysnapshot" data-astro-cid-mw7aashj>ClientQuerySnapshot</a> </li><li data-api-symbol="clientrtdb" data-astro-cid-mw7aashj> <a href="#clientrtdb" data-astro-cid-mw7aashj>ClientRtdb</a> </li><li data-api-symbol="clientsettablemetadata" data-astro-cid-mw7aashj> <a href="#clientsettablemetadata" data-astro-cid-mw7aashj>ClientSettableMetadata</a> </li><li data-api-symbol="clientstoragereference" data-astro-cid-mw7aashj> <a href="#clientstoragereference" data-astro-cid-mw7aashj>ClientStorageReference</a> </li><li data-api-symbol="clienttransaction" data-astro-cid-mw7aashj> <a href="#clienttransaction" data-astro-cid-mw7aashj>ClientTransaction</a> </li><li data-api-symbol="clientuploadtask" data-astro-cid-mw7aashj> <a href="#clientuploadtask" data-astro-cid-mw7aashj>ClientUploadTask</a> </li><li data-api-symbol="clientuploadtasksnapshot" data-astro-cid-mw7aashj> <a href="#clientuploadtasksnapshot" data-astro-cid-mw7aashj>ClientUploadTaskSnapshot</a> </li><li data-api-symbol="clientuser" data-astro-cid-mw7aashj> <a href="#clientuser" data-astro-cid-mw7aashj>ClientUser</a> </li><li data-api-symbol="clientusercredential" data-astro-cid-mw7aashj> <a href="#clientusercredential" data-astro-cid-mw7aashj>ClientUserCredential</a> </li><li data-api-symbol="clientwritebatch" data-astro-cid-mw7aashj> <a href="#clientwritebatch" data-astro-cid-mw7aashj>ClientWriteBatch</a> </li><li data-api-symbol="collrefhandle" data-astro-cid-mw7aashj> <a href="#collrefhandle" data-astro-cid-mw7aashj>CollRefHandle</a> </li><li data-api-symbol="disconnectclientoptions" data-astro-cid-mw7aashj> <a href="#disconnectclientoptions" data-astro-cid-mw7aashj>DisconnectClientOptions</a> </li><li data-api-symbol="docrefhandle" data-astro-cid-mw7aashj> <a href="#docrefhandle" data-astro-cid-mw7aashj>DocRefHandle</a> </li><li data-api-symbol="presencesession" data-astro-cid-mw7aashj> <a href="#presencesession" data-astro-cid-mw7aashj>PresenceSession</a> </li><li data-api-symbol="presencesnapshot" data-astro-cid-mw7aashj> <a href="#presencesnapshot" data-astro-cid-mw7aashj>PresenceSnapshot</a> </li><li data-api-symbol="pyricruntimemanifest" data-astro-cid-mw7aashj> <a href="#pyricruntimemanifest" data-astro-cid-mw7aashj>PyricRuntimeManifest</a> </li><li data-api-symbol="queryhandle" data-astro-cid-mw7aashj> <a href="#queryhandle" data-astro-cid-mw7aashj>QueryHandle</a> </li><li data-api-symbol="resolvedidentity" data-astro-cid-mw7aashj> <a href="#resolvedidentity" data-astro-cid-mw7aashj>ResolvedIdentity</a> </li><li data-api-symbol="rtdbdatasnapshot" data-astro-cid-mw7aashj> <a href="#rtdbdatasnapshot" data-astro-cid-mw7aashj>RtdbDataSnapshot</a> </li><li data-api-symbol="rtdbrefhandle" data-astro-cid-mw7aashj> <a href="#rtdbrefhandle" data-astro-cid-mw7aashj>RtdbRefHandle</a> </li><li data-api-symbol="serializedidtokenresult" data-astro-cid-mw7aashj> <a href="#serializedidtokenresult" data-astro-cid-mw7aashj>SerializedIdTokenResult</a> </li><li data-api-symbol="serializeduser" data-astro-cid-mw7aashj> <a href="#serializeduser" data-astro-cid-mw7aashj>SerializedUser</a> </li><li data-api-symbol="serializedusercredential" data-astro-cid-mw7aashj> <a href="#serializedusercredential" data-astro-cid-mw7aashj>SerializedUserCredential</a> </li><li data-api-symbol="workerreplacement" data-astro-cid-mw7aashj> <a href="#workerreplacement" data-astro-cid-mw7aashj>WorkerReplacement</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="anyhandle" data-astro-cid-mw7aashj> <a href="#anyhandle" data-astro-cid-mw7aashj>AnyHandle</a> </li><li data-api-symbol="authpersistencemode" data-astro-cid-mw7aashj> <a href="#authpersistencemode" data-astro-cid-mw7aashj>AuthPersistenceMode</a> </li><li data-api-symbol="presenceclientkind" data-astro-cid-mw7aashj> <a href="#presenceclientkind" data-astro-cid-mw7aashj>PresenceClientKind</a> </li><li data-api-symbol="presencevisibility" data-astro-cid-mw7aashj> <a href="#presencevisibility" data-astro-cid-mw7aashj>PresenceVisibility</a> </li><li data-api-symbol="unsubscribe()" data-astro-cid-mw7aashj> <a href="#unsubscribe" data-astro-cid-mw7aashj>Unsubscribe()</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group data-astro-cid-mw7aashj> <a class="api-symbol-kind" href="#variables" data-astro-cid-mw7aashj> Variables </a> <ul data-astro-cid-mw7aashj> <li data-api-symbol="browserlocalpersistence" data-astro-cid-mw7aashj> <a href="#browserlocalpersistence" data-astro-cid-mw7aashj>browserLocalPersistence</a> </li><li data-api-symbol="browsersessionpersistence" data-astro-cid-mw7aashj> <a href="#browsersessionpersistence" data-astro-cid-mw7aashj>browserSessionPersistence</a> </li><li data-api-symbol="inmemorypersistence" data-astro-cid-mw7aashj> <a href="#inmemorypersistence" data-astro-cid-mw7aashj>inMemoryPersistence</a> </li><li data-api-symbol="presence_heartbeat_interval_ms" data-astro-cid-mw7aashj> <a href="#presence_heartbeat_interval_ms" data-astro-cid-mw7aashj>PRESENCE_HEARTBEAT_INTERVAL_MS</a> </li><li data-api-symbol="presence_stale_ms" data-astro-cid-mw7aashj> <a href="#presence_stale_ms" data-astro-cid-mw7aashj>PRESENCE_STALE_MS</a> </li><li data-api-symbol="pyric_worker_generation_key" data-astro-cid-mw7aashj> <a href="#pyric_worker_generation_key" data-astro-cid-mw7aashj>PYRIC_WORKER_GENERATION_KEY</a> </li><li data-api-symbol="pyric_worker_name" data-astro-cid-mw7aashj> <a href="#pyric_worker_name" data-astro-cid-mw7aashj>PYRIC_WORKER_NAME</a> </li><li data-api-symbol="pyric_worker_url" data-astro-cid-mw7aashj> <a href="#pyric_worker_url" data-astro-cid-mw7aashj>PYRIC_WORKER_URL</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="acceptprovidercredential()" data-astro-cid-mw7aashj> <a href="#acceptprovidercredential" data-astro-cid-mw7aashj>acceptProviderCredential()</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="adminclearusers()" data-astro-cid-mw7aashj> <a href="#adminclearusers" data-astro-cid-mw7aashj>adminClearUsers()</a> </li><li data-api-symbol="admincreateuser()" data-astro-cid-mw7aashj> <a href="#admincreateuser" data-astro-cid-mw7aashj>adminCreateUser()</a> </li><li data-api-symbol="admindeletedocument()" data-astro-cid-mw7aashj> <a href="#admindeletedocument" data-astro-cid-mw7aashj>adminDeleteDocument()</a> </li><li data-api-symbol="admindeletertdbvalue()" data-astro-cid-mw7aashj> <a href="#admindeletertdbvalue" data-astro-cid-mw7aashj>adminDeleteRtdbValue()</a> </li><li data-api-symbol="admindeleteuser()" data-astro-cid-mw7aashj> <a href="#admindeleteuser" data-astro-cid-mw7aashj>adminDeleteUser()</a> </li><li data-api-symbol="admingetdocument()" data-astro-cid-mw7aashj> <a href="#admingetdocument" data-astro-cid-mw7aashj>adminGetDocument()</a> </li><li data-api-symbol="adminlistdocuments()" data-astro-cid-mw7aashj> <a href="#adminlistdocuments" data-astro-cid-mw7aashj>adminListDocuments()</a> </li><li data-api-symbol="adminreadrtdbstate()" data-astro-cid-mw7aashj> <a href="#adminreadrtdbstate" data-astro-cid-mw7aashj>adminReadRtdbState()</a> </li><li data-api-symbol="adminreadstate()" data-astro-cid-mw7aashj> <a href="#adminreadstate" data-astro-cid-mw7aashj>adminReadState()</a> </li><li data-api-symbol="adminsetdocument()" data-astro-cid-mw7aashj> <a href="#adminsetdocument" data-astro-cid-mw7aashj>adminSetDocument()</a> </li><li data-api-symbol="adminsetrtdbvalue()" data-astro-cid-mw7aashj> <a href="#adminsetrtdbvalue" data-astro-cid-mw7aashj>adminSetRtdbValue()</a> </li><li data-api-symbol="adminsubscribertdbvalue()" data-astro-cid-mw7aashj> <a href="#adminsubscribertdbvalue" data-astro-cid-mw7aashj>adminSubscribeRtdbValue()</a> </li><li data-api-symbol="adminupdatertdbvalue()" data-astro-cid-mw7aashj> <a href="#adminupdatertdbvalue" data-astro-cid-mw7aashj>adminUpdateRtdbValue()</a> </li><li data-api-symbol="adminupdateuser()" data-astro-cid-mw7aashj> <a href="#adminupdateuser" data-astro-cid-mw7aashj>adminUpdateUser()</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" data-astro-cid-mw7aashj>arrayRemove()</a> </li><li data-api-symbol="arrayunion()" data-astro-cid-mw7aashj> <a href="#arrayunion" 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="calltool()" data-astro-cid-mw7aashj> <a href="#calltool" data-astro-cid-mw7aashj>callTool()</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="connectauthemulator()" data-astro-cid-mw7aashj> <a href="#connectauthemulator" data-astro-cid-mw7aashj>connectAuthEmulator()</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="createuserwithemailandpassword()" data-astro-cid-mw7aashj> <a href="#createuserwithemailandpassword" data-astro-cid-mw7aashj>createUserWithEmailAndPassword()</a> </li><li data-api-symbol="createworkerreplacement()" data-astro-cid-mw7aashj> <a href="#createworkerreplacement" data-astro-cid-mw7aashj>createWorkerReplacement()</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="deleteobject()" data-astro-cid-mw7aashj> <a href="#deleteobject" data-astro-cid-mw7aashj>deleteObject()</a> </li><li data-api-symbol="deleteworkerbranch()" data-astro-cid-mw7aashj> <a href="#deleteworkerbranch" data-astro-cid-mw7aashj>deleteWorkerBranch()</a> </li><li data-api-symbol="disconnectclient()" data-astro-cid-mw7aashj> <a href="#disconnectclient" data-astro-cid-mw7aashj>disconnectClient()</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="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="eventhistory()" data-astro-cid-mw7aashj> <a href="#eventhistory" data-astro-cid-mw7aashj>eventHistory()</a> </li><li data-api-symbol="exportworkerstate()" data-astro-cid-mw7aashj> <a href="#exportworkerstate" data-astro-cid-mw7aashj>exportWorkerState()</a> </li><li data-api-symbol="getactiverules()" data-astro-cid-mw7aashj> <a href="#getactiverules" data-astro-cid-mw7aashj>getActiveRules()</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="getauth()" data-astro-cid-mw7aashj> <a href="#getauth" data-astro-cid-mw7aashj>getAuth()</a> </li><li data-api-symbol="getblob()" data-astro-cid-mw7aashj> <a href="#getblob" data-astro-cid-mw7aashj>getBlob()</a> </li><li data-api-symbol="getbytes()" data-astro-cid-mw7aashj> <a href="#getbytes" data-astro-cid-mw7aashj>getBytes()</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="getdocs()" data-astro-cid-mw7aashj> <a href="#getdocs" data-astro-cid-mw7aashj>getDocs()</a> </li><li data-api-symbol="getdownloadurl()" data-astro-cid-mw7aashj> <a href="#getdownloadurl" data-astro-cid-mw7aashj>getDownloadURL()</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="getidtoken()" data-astro-cid-mw7aashj> <a href="#getidtoken-1" data-astro-cid-mw7aashj>getIdToken()</a> </li><li data-api-symbol="getidtokenresult()" data-astro-cid-mw7aashj> <a href="#getidtokenresult-1" data-astro-cid-mw7aashj>getIdTokenResult()</a> </li><li data-api-symbol="getlens()" data-astro-cid-mw7aashj> <a href="#getlens" data-astro-cid-mw7aashj>getLens()</a> </li><li data-api-symbol="getmetadata()" data-astro-cid-mw7aashj> <a href="#getmetadata" data-astro-cid-mw7aashj>getMetadata()</a> </li><li data-api-symbol="getproviderconfig()" data-astro-cid-mw7aashj> <a href="#getproviderconfig" data-astro-cid-mw7aashj>getProviderConfig()</a> </li><li data-api-symbol="getrulesstatus()" data-astro-cid-mw7aashj> <a href="#getrulesstatus" data-astro-cid-mw7aashj>getRulesStatus()</a> </li><li data-api-symbol="getsnapshot()" data-astro-cid-mw7aashj> <a href="#getsnapshot" data-astro-cid-mw7aashj>getSnapshot()</a> </li><li data-api-symbol="getstorage()" data-astro-cid-mw7aashj> <a href="#getstorage" data-astro-cid-mw7aashj>getStorage()</a> </li><li data-api-symbol="getworkerinstanceid()" data-astro-cid-mw7aashj> <a href="#getworkerinstanceid" data-astro-cid-mw7aashj>getWorkerInstanceId()</a> </li><li data-api-symbol="getworkerversion()" data-astro-cid-mw7aashj> <a href="#getworkerversion" data-astro-cid-mw7aashj>getWorkerVersion()</a> </li><li data-api-symbol="importworkerstate()" data-astro-cid-mw7aashj> <a href="#importworkerstate" data-astro-cid-mw7aashj>importWorkerState()</a> </li><li data-api-symbol="increment()" data-astro-cid-mw7aashj> <a href="#increment" data-astro-cid-mw7aashj>increment()</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="listall()" data-astro-cid-mw7aashj> <a href="#listall" data-astro-cid-mw7aashj>listAll()</a> </li><li data-api-symbol="listrootcollections()" data-astro-cid-mw7aashj> <a href="#listrootcollections" data-astro-cid-mw7aashj>listRootCollections()</a> </li><li data-api-symbol="listsubcollections()" data-astro-cid-mw7aashj> <a href="#listsubcollections" data-astro-cid-mw7aashj>listSubcollections()</a> </li><li data-api-symbol="listusers()" data-astro-cid-mw7aashj> <a href="#listusers" data-astro-cid-mw7aashj>listUsers()</a> </li><li data-api-symbol="listworkerbranches()" data-astro-cid-mw7aashj> <a href="#listworkerbranches" data-astro-cid-mw7aashj>listWorkerBranches()</a> </li><li data-api-symbol="mintpresenceclientid()" data-astro-cid-mw7aashj> <a href="#mintpresenceclientid" data-astro-cid-mw7aashj>mintPresenceClientId()</a> </li><li data-api-symbol="onauthstatechanged()" data-astro-cid-mw7aashj> <a href="#onauthstatechanged" data-astro-cid-mw7aashj>onAuthStateChanged()</a> </li><li data-api-symbol="onidtokenchanged()" data-astro-cid-mw7aashj> <a href="#onidtokenchanged" data-astro-cid-mw7aashj>onIdTokenChanged()</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="onworkerruntimereload()" data-astro-cid-mw7aashj> <a href="#onworkerruntimereload" data-astro-cid-mw7aashj>onWorkerRuntimeReload()</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="ownclientuntilpagehide()" data-astro-cid-mw7aashj> <a href="#ownclientuntilpagehide" data-astro-cid-mw7aashj>ownClientUntilPagehide()</a> </li><li data-api-symbol="preflightworkerepochstorage()" data-astro-cid-mw7aashj> <a href="#preflightworkerepochstorage" data-astro-cid-mw7aashj>preflightWorkerEpochStorage()</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="readpyricruntimemanifest()" data-astro-cid-mw7aashj> <a href="#readpyricruntimemanifest" data-astro-cid-mw7aashj>readPyricRuntimeManifest()</a> </li><li data-api-symbol="ref()" data-astro-cid-mw7aashj> <a href="#ref" data-astro-cid-mw7aashj>ref()</a> </li><li data-api-symbol="relayworkerop()" data-astro-cid-mw7aashj> <a href="#relayworkerop" data-astro-cid-mw7aashj>relayWorkerOp()</a> </li><li data-api-symbol="relayworkersub()" data-astro-cid-mw7aashj> <a href="#relayworkersub" data-astro-cid-mw7aashj>relayWorkerSub()</a> </li><li data-api-symbol="rememberworkerepoch()" data-astro-cid-mw7aashj> <a href="#rememberworkerepoch" data-astro-cid-mw7aashj>rememberWorkerEpoch()</a> </li><li data-api-symbol="resetall()" data-astro-cid-mw7aashj> <a href="#resetall" data-astro-cid-mw7aashj>resetAll()</a> </li><li data-api-symbol="retireworkerruntime()" data-astro-cid-mw7aashj> <a href="#retireworkerruntime" data-astro-cid-mw7aashj>retireWorkerRuntime()</a> </li><li data-api-symbol="rtdbchild()" data-astro-cid-mw7aashj> <a href="#rtdbchild" data-astro-cid-mw7aashj>rtdbChild()</a> </li><li data-api-symbol="rtdbconnectdatabaseemulator()" data-astro-cid-mw7aashj> <a href="#rtdbconnectdatabaseemulator" data-astro-cid-mw7aashj>rtdbConnectDatabaseEmulator()</a> </li><li data-api-symbol="rtdbget()" data-astro-cid-mw7aashj> <a href="#rtdbget" data-astro-cid-mw7aashj>rtdbGet()</a> </li><li data-api-symbol="rtdbgetdatabase()" data-astro-cid-mw7aashj> <a href="#rtdbgetdatabase" data-astro-cid-mw7aashj>rtdbGetDatabase()</a> </li><li data-api-symbol="rtdbgooffline()" data-astro-cid-mw7aashj> <a href="#rtdbgooffline" data-astro-cid-mw7aashj>rtdbGoOffline()</a> </li><li data-api-symbol="rtdbgoonline()" data-astro-cid-mw7aashj> <a href="#rtdbgoonline" data-astro-cid-mw7aashj>rtdbGoOnline()</a> </li><li data-api-symbol="rtdboff()" data-astro-cid-mw7aashj> <a href="#rtdboff" data-astro-cid-mw7aashj>rtdbOff()</a> </li><li data-api-symbol="rtdbonchildadded()" data-astro-cid-mw7aashj> <a href="#rtdbonchildadded" data-astro-cid-mw7aashj>rtdbOnChildAdded()</a> </li><li data-api-symbol="rtdbonchildchanged()" data-astro-cid-mw7aashj> <a href="#rtdbonchildchanged" data-astro-cid-mw7aashj>rtdbOnChildChanged()</a> </li><li data-api-symbol="rtdbonchildmoved()" data-astro-cid-mw7aashj> <a href="#rtdbonchildmoved" data-astro-cid-mw7aashj>rtdbOnChildMoved()</a> </li><li data-api-symbol="rtdbonchildremoved()" data-astro-cid-mw7aashj> <a href="#rtdbonchildremoved" data-astro-cid-mw7aashj>rtdbOnChildRemoved()</a> </li><li data-api-symbol="rtdbondisconnect()" data-astro-cid-mw7aashj> <a href="#rtdbondisconnect-1" data-astro-cid-mw7aashj>rtdbOnDisconnect()</a> </li><li data-api-symbol="rtdbonvalue()" data-astro-cid-mw7aashj> <a href="#rtdbonvalue" data-astro-cid-mw7aashj>rtdbOnValue()</a> </li><li data-api-symbol="rtdbpush()" data-astro-cid-mw7aashj> <a href="#rtdbpush" data-astro-cid-mw7aashj>rtdbPush()</a> </li><li data-api-symbol="rtdbref()" data-astro-cid-mw7aashj> <a href="#rtdbref" data-astro-cid-mw7aashj>rtdbRef()</a> </li><li data-api-symbol="rtdbremove()" data-astro-cid-mw7aashj> <a href="#rtdbremove" data-astro-cid-mw7aashj>rtdbRemove()</a> </li><li data-api-symbol="rtdbruntransaction()" data-astro-cid-mw7aashj> <a href="#rtdbruntransaction" data-astro-cid-mw7aashj>rtdbRunTransaction()</a> </li><li data-api-symbol="rtdbservertimestamp()" data-astro-cid-mw7aashj> <a href="#rtdbservertimestamp" data-astro-cid-mw7aashj>rtdbServerTimestamp()</a> </li><li data-api-symbol="rtdbset()" data-astro-cid-mw7aashj> <a href="#rtdbset" data-astro-cid-mw7aashj>rtdbSet()</a> </li><li data-api-symbol="rtdbsetpriority()" data-astro-cid-mw7aashj> <a href="#rtdbsetpriority" data-astro-cid-mw7aashj>rtdbSetPriority()</a> </li><li data-api-symbol="rtdbsetwithpriority()" data-astro-cid-mw7aashj> <a href="#rtdbsetwithpriority" data-astro-cid-mw7aashj>rtdbSetWithPriority()</a> </li><li data-api-symbol="rtdbupdate()" data-astro-cid-mw7aashj> <a href="#rtdbupdate" data-astro-cid-mw7aashj>rtdbUpdate()</a> </li><li data-api-symbol="runtransaction()" data-astro-cid-mw7aashj> <a href="#runtransaction" data-astro-cid-mw7aashj>runTransaction()</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group data-astro-cid-mw7aashj> <a class="api-symbol-kind" href="#multi-tab-correctness--read-set-validation--retry" data-astro-cid-mw7aashj> MULTI-TAB CORRECTNESS — READ-SET VALIDATION + RETRY </a> <ul data-astro-cid-mw7aashj> <li data-api-symbol="saveworkerbranch()" data-astro-cid-mw7aashj> <a href="#saveworkerbranch" data-astro-cid-mw7aashj>saveWorkerBranch()</a> </li><li data-api-symbol="servertimestamp()" data-astro-cid-mw7aashj> <a href="#servertimestamp" data-astro-cid-mw7aashj>serverTimestamp()</a> </li><li data-api-symbol="setdatabaserules()" data-astro-cid-mw7aashj> <a href="#setdatabaserules" data-astro-cid-mw7aashj>setDatabaseRules()</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="setfirestorerules()" data-astro-cid-mw7aashj> <a href="#setfirestorerules" data-astro-cid-mw7aashj>setFirestoreRules()</a> </li><li data-api-symbol="setlens()" data-astro-cid-mw7aashj> <a href="#setlens" data-astro-cid-mw7aashj>setLens()</a> </li><li data-api-symbol="setopissuer()" data-astro-cid-mw7aashj> <a href="#setopissuer" data-astro-cid-mw7aashj>setOpIssuer()</a> </li><li data-api-symbol="setpersistence()" data-astro-cid-mw7aashj> <a href="#setpersistence" data-astro-cid-mw7aashj>setPersistence()</a> </li><li data-api-symbol="setproviderconfig()" data-astro-cid-mw7aashj> <a href="#setproviderconfig" data-astro-cid-mw7aashj>setProviderConfig()</a> </li><li data-api-symbol="setrules()" data-astro-cid-mw7aashj> <a href="#setrules" data-astro-cid-mw7aashj>setRules()</a> </li><li data-api-symbol="signinanonymously()" data-astro-cid-mw7aashj> <a href="#signinanonymously" data-astro-cid-mw7aashj>signInAnonymously()</a> </li><li data-api-symbol="signinwithemailandpassword()" data-astro-cid-mw7aashj> <a href="#signinwithemailandpassword" data-astro-cid-mw7aashj>signInWithEmailAndPassword()</a> </li><li data-api-symbol="signout()" data-astro-cid-mw7aashj> <a href="#signout" data-astro-cid-mw7aashj>signOut()</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="startpresence()" data-astro-cid-mw7aashj> <a href="#startpresence" data-astro-cid-mw7aashj>startPresence()</a> </li><li data-api-symbol="subscribeevents()" data-astro-cid-mw7aashj> <a href="#subscribeevents" data-astro-cid-mw7aashj>subscribeEvents()</a> </li><li data-api-symbol="subscribepresence()" data-astro-cid-mw7aashj> <a href="#subscribepresence" data-astro-cid-mw7aashj>subscribePresence()</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="switchworkerbranch()" data-astro-cid-mw7aashj> <a href="#switchworkerbranch" data-astro-cid-mw7aashj>switchWorkerBranch()</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="uploadbytes()" data-astro-cid-mw7aashj> <a href="#uploadbytes" data-astro-cid-mw7aashj>uploadBytes()</a> </li><li data-api-symbol="uploadbytesresumable()" data-astro-cid-mw7aashj> <a href="#uploadbytesresumable" data-astro-cid-mw7aashj>uploadBytesResumable()</a> </li><li data-api-symbol="uploadstring()" data-astro-cid-mw7aashj> <a href="#uploadstring" data-astro-cid-mw7aashj>uploadString()</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="workernameforepoch()" data-astro-cid-mw7aashj> <a href="#workernameforepoch" data-astro-cid-mw7aashj>workerNameForEpoch()</a> </li><li data-api-symbol="writebatch()" data-astro-cid-mw7aashj> <a href="#writebatch" 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>