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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. package/README.md.orig +2 -2
  2. package/dist/assurance/.generated/conformance-verdicts.d.ts +16 -0
  3. package/dist/assurance/.generated/conformance-verdicts.d.ts.map +1 -1
  4. package/dist/assurance/.generated/conformance-verdicts.js +16 -0
  5. package/dist/assurance/.generated/conformance-verdicts.js.map +1 -1
  6. package/dist/bridge/server/peer.d.ts +1 -1
  7. package/dist/bridge/server.d.ts +1 -1
  8. package/dist/bridge/server.js +1 -1
  9. package/dist/cli/index.d.ts +11 -0
  10. package/dist/cli/index.d.ts.map +1 -1
  11. package/dist/cli/index.js +13 -1
  12. package/dist/cli/index.js.map +1 -1
  13. package/dist/cli/init.d.ts +3 -3
  14. package/dist/cli/init.d.ts.map +1 -1
  15. package/dist/cli/init.js +5 -5
  16. package/dist/cli/init.js.map +1 -1
  17. package/dist/cli/serve.d.ts.map +1 -1
  18. package/dist/cli/serve.js +8 -2
  19. package/dist/cli/serve.js.map +1 -1
  20. package/dist/conformance/.generated/can-i-use-browser.d.ts.map +1 -1
  21. package/dist/conformance/.generated/can-i-use-browser.js +1 -1
  22. package/dist/conformance/.generated/can-i-use-browser.js.map +1 -1
  23. package/dist/conformance/.generated/can-i-use.d.ts.map +1 -1
  24. package/dist/conformance/.generated/can-i-use.js +1 -1
  25. package/dist/conformance/.generated/can-i-use.js.map +1 -1
  26. package/dist/conformance/.generated/conformance-docs.d.ts +12 -0
  27. package/dist/conformance/.generated/conformance-docs.d.ts.map +1 -0
  28. package/dist/conformance/.generated/conformance-docs.js +2 -0
  29. package/dist/conformance/.generated/conformance-docs.js.map +1 -0
  30. package/dist/conformance/docs.d.ts +6 -0
  31. package/dist/conformance/docs.d.ts.map +1 -0
  32. package/dist/conformance/docs.js +6 -0
  33. package/dist/conformance/docs.js.map +1 -0
  34. package/dist/remote/index.d.ts.map +1 -1
  35. package/dist/remote/index.js +1 -0
  36. package/dist/remote/index.js.map +1 -1
  37. package/dist/serve/activity-guard.d.ts +4 -0
  38. package/dist/serve/activity-guard.d.ts.map +1 -0
  39. package/dist/serve/activity-guard.js +22 -0
  40. package/dist/serve/activity-guard.js.map +1 -0
  41. package/dist/serve/activity-route.d.ts +4 -0
  42. package/dist/serve/activity-route.d.ts.map +1 -0
  43. package/dist/serve/activity-route.js +157 -0
  44. package/dist/serve/activity-route.js.map +1 -0
  45. package/dist/serve/activity-warning.d.ts +4 -0
  46. package/dist/serve/activity-warning.d.ts.map +1 -0
  47. package/dist/serve/activity-warning.js +21 -0
  48. package/dist/serve/activity-warning.js.map +1 -0
  49. package/dist/serve/bridge-mount.d.ts +5 -0
  50. package/dist/serve/bridge-mount.d.ts.map +1 -1
  51. package/dist/serve/bridge-mount.js +1 -0
  52. package/dist/serve/bridge-mount.js.map +1 -1
  53. package/dist/serve/docs-ui/404.html +3 -0
  54. package/dist/serve/docs-ui/_astro/{_slug_.DPUwShm2.css → _slug_.CXh9yTP1.css} +1 -1
  55. package/dist/serve/docs-ui/_astro/_slug_.DUci-duz.css +1 -0
  56. package/dist/serve/docs-ui/docs/_rhythm/index.html +2 -1
  57. package/dist/serve/docs-ui/docs/agent/set-up-your-agent/index.html +3 -2
  58. package/dist/serve/docs-ui/docs/agent/set-up-your-agent.md +1 -1
  59. package/dist/serve/docs-ui/docs/agent/watch-and-review/index.html +2 -1
  60. package/dist/serve/docs-ui/docs/agent/work-with-an-agent/index.html +2 -1
  61. package/dist/serve/docs-ui/docs/ai-compat/index.html +2 -1
  62. package/dist/serve/docs-ui/docs/api-reference/index.html +51 -49
  63. package/dist/serve/docs-ui/docs/api-reference.md +2 -2
  64. package/dist/serve/docs-ui/docs/app-compat/index.html +2 -1
  65. package/dist/serve/docs-ui/docs/auth-compat/index.html +2 -1
  66. package/dist/serve/docs-ui/docs/build/ai-logic/index.html +18 -3
  67. package/dist/serve/docs-ui/docs/build/ai-logic.md +30 -2
  68. package/dist/serve/docs-ui/docs/build/authentication/index.html +2 -1
  69. package/dist/serve/docs-ui/docs/build/authentication.md +1 -1
  70. package/dist/serve/docs-ui/docs/build/cloud-firestore/index.html +2 -1
  71. package/dist/serve/docs-ui/docs/build/cloud-messaging/index.html +46 -2
  72. package/dist/serve/docs-ui/docs/build/cloud-messaging.md +56 -1
  73. package/dist/serve/docs-ui/docs/build/cloud-storage/index.html +2 -1
  74. package/dist/serve/docs-ui/docs/build/cloud-storage.md +1 -1
  75. package/dist/serve/docs-ui/docs/build/realtime-database/index.html +21 -3
  76. package/dist/serve/docs-ui/docs/build/realtime-database.md +25 -1
  77. package/dist/serve/docs-ui/docs/conformance-scores/index.html +2 -1
  78. package/dist/serve/docs-ui/docs/create-pyric-reference-api/index.html +61 -28
  79. package/dist/serve/docs-ui/docs/create-pyric-reference-api.md +65 -20
  80. package/dist/serve/docs-ui/docs/database-compat/index.html +2 -1
  81. package/dist/serve/docs-ui/docs/firestore-compat/index.html +6 -5
  82. package/dist/serve/docs-ui/docs/firestore-compat.md +4 -4
  83. package/dist/serve/docs-ui/docs/functions-rtdb-compat/index.html +2 -1
  84. package/dist/serve/docs-ui/docs/get-started/how-the-swap-works/index.html +2 -1
  85. package/dist/serve/docs-ui/docs/get-started/start-building/index.html +4 -3
  86. package/dist/serve/docs-ui/docs/get-started/start-building.md +2 -2
  87. package/dist/serve/docs-ui/docs/index.json +800 -575
  88. package/dist/serve/docs-ui/docs/messaging-compat/index.html +2 -1
  89. package/dist/serve/docs-ui/docs/observe/see-whats-happening/index.html +2 -1
  90. package/dist/serve/docs-ui/docs/observe/shape-your-data/index.html +2 -1
  91. package/dist/serve/docs-ui/docs/overview/index.html +2 -1
  92. package/dist/serve/docs-ui/docs/pyric-admin-app-reference-api/index.html +5 -4
  93. package/dist/serve/docs-ui/docs/pyric-admin-app-reference-api.md +3 -4
  94. package/dist/serve/docs-ui/docs/pyric-admin-auth-reference-api/index.html +5 -4
  95. package/dist/serve/docs-ui/docs/pyric-admin-auth-reference-api.md +3 -4
  96. package/dist/serve/docs-ui/docs/pyric-admin-database-reference-api/index.html +5 -4
  97. package/dist/serve/docs-ui/docs/pyric-admin-database-reference-api.md +3 -4
  98. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-api/index.html +2503 -12
  99. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-api.md +2219 -8
  100. package/dist/serve/docs-ui/docs/pyric-admin-storage-reference-api/index.html +4 -3
  101. package/dist/serve/docs-ui/docs/pyric-admin-storage-reference-api.md +2 -3
  102. package/dist/serve/docs-ui/docs/pyric-ai-reference-api/index.html +16 -11
  103. package/dist/serve/docs-ui/docs/pyric-ai-reference-api.md +14 -13
  104. package/dist/serve/docs-ui/docs/pyric-ai-scripting-reference-api/index.html +4 -3
  105. package/dist/serve/docs-ui/docs/pyric-ai-scripting-reference-api.md +2 -3
  106. package/dist/serve/docs-ui/docs/pyric-app-reference-api/index.html +7 -2
  107. package/dist/serve/docs-ui/docs/pyric-app-reference-api.md +5 -2
  108. package/dist/serve/docs-ui/docs/pyric-auth-reference-api/index.html +23 -12
  109. package/dist/serve/docs-ui/docs/pyric-auth-reference-api.md +15 -12
  110. package/dist/serve/docs-ui/docs/pyric-cli-assurance-browser-reference-api/index.html +10 -48
  111. package/dist/serve/docs-ui/docs/pyric-cli-assurance-browser-reference-api.md +11 -24
  112. package/dist/serve/docs-ui/docs/pyric-cli-assurance-reference-api/index.html +87 -97
  113. package/dist/serve/docs-ui/docs/pyric-cli-assurance-reference-api.md +53 -65
  114. package/dist/serve/docs-ui/docs/pyric-cli-bridge-client-reference-api/index.html +14 -15
  115. package/dist/serve/docs-ui/docs/pyric-cli-bridge-client-reference-api.md +19 -28
  116. package/dist/serve/docs-ui/docs/pyric-cli-bridge-reference-api/index.html +4 -3
  117. package/dist/serve/docs-ui/docs/pyric-cli-bridge-reference-api.md +2 -3
  118. package/dist/serve/docs-ui/docs/pyric-cli-conformance-browser-reference-api/index.html +3 -2
  119. package/dist/serve/docs-ui/docs/pyric-cli-conformance-browser-reference-api.md +1 -2
  120. package/dist/serve/docs-ui/docs/pyric-cli-conformance-docs-reference-api/index.html +51 -0
  121. package/dist/serve/docs-ui/docs/pyric-cli-conformance-docs-reference-api.md +36 -0
  122. package/dist/serve/docs-ui/docs/pyric-cli-conformance-reference-api/index.html +3 -2
  123. package/dist/serve/docs-ui/docs/pyric-cli-conformance-reference-api.md +1 -2
  124. package/dist/serve/docs-ui/docs/pyric-cli-credentials-node-reference-api/index.html +3 -2
  125. package/dist/serve/docs-ui/docs/pyric-cli-credentials-node-reference-api.md +1 -2
  126. package/dist/serve/docs-ui/docs/pyric-cli-discover-reference-api/index.html +3 -2
  127. package/dist/serve/docs-ui/docs/pyric-cli-discover-reference-api.md +1 -2
  128. package/dist/serve/docs-ui/docs/pyric-cli-register-reference-api/index.html +3 -2
  129. package/dist/serve/docs-ui/docs/pyric-cli-register-reference-api.md +1 -2
  130. package/dist/serve/docs-ui/docs/pyric-cli-remote-reference-api/index.html +1067 -83
  131. package/dist/serve/docs-ui/docs/pyric-cli-remote-reference-api.md +1291 -160
  132. package/dist/serve/docs-ui/docs/pyric-cli-serve-worker-reference-api/index.html +123 -92
  133. package/dist/serve/docs-ui/docs/pyric-cli-serve-worker-reference-api.md +49 -20
  134. package/dist/serve/docs-ui/docs/pyric-cli-verify-reference-api/index.html +72 -7
  135. package/dist/serve/docs-ui/docs/pyric-cli-verify-reference-api.md +22 -7
  136. package/dist/serve/docs-ui/docs/pyric-cli-vite-reference-api/index.html +33 -12
  137. package/dist/serve/docs-ui/docs/pyric-cli-vite-reference-api.md +15 -12
  138. package/dist/serve/docs-ui/docs/pyric-database-reference-api/index.html +18 -17
  139. package/dist/serve/docs-ui/docs/pyric-database-reference-api.md +19 -22
  140. package/dist/serve/docs-ui/docs/pyric-firestore-reference-api/index.html +1512 -545
  141. package/dist/serve/docs-ui/docs/pyric-firestore-reference-api.md +1311 -316
  142. package/dist/serve/docs-ui/docs/pyric-firestore-values-reference-api/index.html +3 -2
  143. package/dist/serve/docs-ui/docs/pyric-firestore-values-reference-api.md +1 -2
  144. package/dist/serve/docs-ui/docs/pyric-messaging-reference-api/index.html +5 -4
  145. package/dist/serve/docs-ui/docs/pyric-messaging-reference-api.md +3 -4
  146. package/dist/serve/docs-ui/docs/pyric-messaging-sw-reference-api/index.html +69 -369
  147. package/dist/serve/docs-ui/docs/pyric-messaging-sw-reference-api.md +103 -216
  148. package/dist/serve/docs-ui/docs/pyric-rules-reference-api/index.html +10 -9
  149. package/dist/serve/docs-ui/docs/pyric-rules-reference-api.md +9 -10
  150. package/dist/serve/docs-ui/docs/pyric-sandbox-database-reference-api/index.html +8 -7
  151. package/dist/serve/docs-ui/docs/pyric-sandbox-database-reference-api.md +6 -7
  152. package/dist/serve/docs-ui/docs/pyric-sandbox-firestore-reference-api/index.html +10 -9
  153. package/dist/serve/docs-ui/docs/pyric-sandbox-firestore-reference-api.md +9 -10
  154. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-api/index.html +374 -910
  155. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-api.md +377 -911
  156. package/dist/serve/docs-ui/docs/pyric-storage-reference-api/index.html +25 -17
  157. package/dist/serve/docs-ui/docs/pyric-storage-reference-api.md +21 -19
  158. package/dist/serve/docs-ui/docs/pyric-ui-agents-reference-api/index.html +3 -2
  159. package/dist/serve/docs-ui/docs/pyric-ui-agents-reference-api.md +1 -2
  160. package/dist/serve/docs-ui/docs/pyric-ui-auth-hooks-reference-api/index.html +63 -776
  161. package/dist/serve/docs-ui/docs/pyric-ui-auth-hooks-reference-api.md +69 -510
  162. package/dist/serve/docs-ui/docs/pyric-ui-auth-reference-api/index.html +22 -21
  163. package/dist/serve/docs-ui/docs/pyric-ui-auth-reference-api.md +29 -30
  164. package/dist/serve/docs-ui/docs/pyric-ui-events-hooks-reference-api/index.html +15 -168
  165. package/dist/serve/docs-ui/docs/pyric-ui-events-hooks-reference-api.md +17 -87
  166. package/dist/serve/docs-ui/docs/pyric-ui-events-reference-api/index.html +6 -5
  167. package/dist/serve/docs-ui/docs/pyric-ui-events-reference-api.md +5 -6
  168. package/dist/serve/docs-ui/docs/pyric-ui-firestore-hooks-reference-api/index.html +82 -970
  169. package/dist/serve/docs-ui/docs/pyric-ui-firestore-hooks-reference-api.md +104 -479
  170. package/dist/serve/docs-ui/docs/pyric-ui-firestore-reference-api/index.html +30 -29
  171. package/dist/serve/docs-ui/docs/pyric-ui-firestore-reference-api.md +54 -55
  172. package/dist/serve/docs-ui/docs/pyric-ui-primitives-reference-api/index.html +3 -2
  173. package/dist/serve/docs-ui/docs/pyric-ui-primitives-reference-api.md +1 -2
  174. package/dist/serve/docs-ui/docs/pyric-ui-rtdb-reference-api/index.html +5 -4
  175. package/dist/serve/docs-ui/docs/pyric-ui-rtdb-reference-api.md +3 -4
  176. package/dist/serve/docs-ui/docs/pyric-ui-rules-hooks-reference-api/index.html +9 -124
  177. package/dist/serve/docs-ui/docs/pyric-ui-rules-hooks-reference-api.md +7 -58
  178. package/dist/serve/docs-ui/docs/pyric-ui-rules-reference-api/index.html +24 -23
  179. package/dist/serve/docs-ui/docs/pyric-ui-rules-reference-api.md +31 -34
  180. package/dist/serve/docs-ui/docs/pyric-ui-storage-hooks-reference-api/index.html +104 -1385
  181. package/dist/serve/docs-ui/docs/pyric-ui-storage-hooks-reference-api.md +133 -817
  182. package/dist/serve/docs-ui/docs/pyric-ui-storage-reference-api/index.html +34 -33
  183. package/dist/serve/docs-ui/docs/pyric-ui-storage-reference-api.md +37 -38
  184. package/dist/serve/docs-ui/docs/pyric-ui-traffic-hooks-reference-api/index.html +116 -1169
  185. package/dist/serve/docs-ui/docs/pyric-ui-traffic-hooks-reference-api.md +142 -590
  186. package/dist/serve/docs-ui/docs/pyric-ui-traffic-reference-api/index.html +4 -3
  187. package/dist/serve/docs-ui/docs/pyric-ui-traffic-reference-api.md +3 -4
  188. package/dist/serve/docs-ui/docs/rules-compat/index.html +34 -1
  189. package/dist/serve/docs-ui/docs/rules-compat.md +32 -0
  190. package/dist/serve/docs-ui/docs/secure/audit-your-rules/index.html +19 -2
  191. package/dist/serve/docs-ui/docs/secure/audit-your-rules.md +32 -0
  192. package/dist/serve/docs-ui/docs/secure/firestore-rules-limits/index.html +2 -1
  193. package/dist/serve/docs-ui/docs/secure/read-a-denial/index.html +2 -1
  194. package/dist/serve/docs-ui/docs/secure/rtdb-rules-in-typescript/index.html +2 -1
  195. package/dist/serve/docs-ui/docs/secure/rtdb-rules-in-typescript.md +1 -1
  196. package/dist/serve/docs-ui/docs/secure/rules-standard-library/index.html +2 -1
  197. package/dist/serve/docs-ui/docs/secure/secure-it-with-rules/index.html +2 -1
  198. package/dist/serve/docs-ui/docs/secure/simulate-and-lint/index.html +2 -1
  199. package/dist/serve/docs-ui/docs/secure/write-a-rules-test-suite/index.html +2 -1
  200. package/dist/serve/docs-ui/docs/ship/ship-to-production/index.html +2 -1
  201. package/dist/serve/docs-ui/docs/ship/test-in-node/index.html +2 -1
  202. package/dist/serve/docs-ui/docs/storage-compat/index.html +2 -1
  203. package/dist/serve/docs-ui/docs/trust/how-we-know-it-matches-firebase/index.html +2 -1
  204. package/dist/serve/docs-ui/docs/trust/versioning-and-compatibility/index.html +2 -1
  205. package/dist/serve/docs-ui/llms.txt +1 -0
  206. package/dist/serve/entries/ai.d.ts.map +1 -1
  207. package/dist/serve/entries/ai.js +39 -1
  208. package/dist/serve/entries/ai.js.map +1 -1
  209. package/dist/serve/entries/messaging-sw.d.ts.map +1 -1
  210. package/dist/serve/entries/messaging-sw.js +5 -1
  211. package/dist/serve/entries/messaging-sw.js.map +1 -1
  212. package/dist/serve/entries/messaging.d.ts.map +1 -1
  213. package/dist/serve/entries/messaging.js +7 -1
  214. package/dist/serve/entries/messaging.js.map +1 -1
  215. package/dist/serve/entries/runtime.d.ts.map +1 -1
  216. package/dist/serve/entries/runtime.js +20 -1
  217. package/dist/serve/entries/runtime.js.map +1 -1
  218. package/dist/serve/init-payload.d.ts +25 -0
  219. package/dist/serve/init-payload.d.ts.map +1 -1
  220. package/dist/serve/namespace.d.ts +39 -0
  221. package/dist/serve/namespace.d.ts.map +1 -1
  222. package/dist/serve/namespace.js +80 -1
  223. package/dist/serve/namespace.js.map +1 -1
  224. package/dist/serve/standalone-assets.d.ts +11 -9
  225. package/dist/serve/standalone-assets.d.ts.map +1 -1
  226. package/dist/serve/standalone-assets.js +6 -5
  227. package/dist/serve/standalone-assets.js.map +1 -1
  228. package/dist/serve/studio-ui/assets/{RulesCodeEditor-CXdSLKhO.js → RulesCodeEditor-CxVYcZXw.js} +1 -1
  229. package/dist/serve/studio-ui/assets/index-cpSfgQ7H.js +1218 -0
  230. package/dist/serve/studio-ui/assets/seed-DeuFKi4J.js +20 -0
  231. package/dist/serve/studio-ui/index.html +1 -1
  232. package/dist/serve/vite-plugin.d.ts +92 -15
  233. package/dist/serve/vite-plugin.d.ts.map +1 -1
  234. package/dist/serve/vite-plugin.js +281 -11
  235. package/dist/serve/vite-plugin.js.map +1 -1
  236. package/dist/serve/worker/activity-bootstrap.d.ts +8 -0
  237. package/dist/serve/worker/activity-bootstrap.d.ts.map +1 -0
  238. package/dist/serve/worker/activity-bootstrap.js +11 -0
  239. package/dist/serve/worker/activity-bootstrap.js.map +1 -0
  240. package/dist/serve/worker/client/connection.d.ts.map +1 -1
  241. package/dist/serve/worker/client/connection.js +17 -5
  242. package/dist/serve/worker/client/connection.js.map +1 -1
  243. package/dist/serve/worker/client/core.d.ts +2 -2
  244. package/dist/serve/worker/client/core.d.ts.map +1 -1
  245. package/dist/serve/worker/client/core.js +33 -5
  246. package/dist/serve/worker/client/core.js.map +1 -1
  247. package/dist/serve/worker/client/firestore-writes.d.ts.map +1 -1
  248. package/dist/serve/worker/client/firestore-writes.js +1 -0
  249. package/dist/serve/worker/client/firestore-writes.js.map +1 -1
  250. package/dist/serve/worker/client/messaging.d.ts +9 -1
  251. package/dist/serve/worker/client/messaging.d.ts.map +1 -1
  252. package/dist/serve/worker/client/messaging.js +15 -0
  253. package/dist/serve/worker/client/messaging.js.map +1 -1
  254. package/dist/serve/worker/client/studio.d.ts +10 -0
  255. package/dist/serve/worker/client/studio.d.ts.map +1 -1
  256. package/dist/serve/worker/client/studio.js +11 -0
  257. package/dist/serve/worker/client/studio.js.map +1 -1
  258. package/dist/serve/worker/durable-persistence.d.ts +12 -0
  259. package/dist/serve/worker/durable-persistence.d.ts.map +1 -0
  260. package/dist/serve/worker/durable-persistence.js +118 -0
  261. package/dist/serve/worker/durable-persistence.js.map +1 -0
  262. package/dist/serve/worker/entry.d.ts +7 -3
  263. package/dist/serve/worker/entry.d.ts.map +1 -1
  264. package/dist/serve/worker/entry.js +7 -3
  265. package/dist/serve/worker/entry.js.map +1 -1
  266. package/dist/serve/worker/host/core.d.ts +9 -5
  267. package/dist/serve/worker/host/core.d.ts.map +1 -1
  268. package/dist/serve/worker/host/core.js +33 -8
  269. package/dist/serve/worker/host/core.js.map +1 -1
  270. package/dist/serve/worker/host/dispatch.d.ts.map +1 -1
  271. package/dist/serve/worker/host/dispatch.js +9 -2
  272. package/dist/serve/worker/host/dispatch.js.map +1 -1
  273. package/dist/serve/worker/host/studio.d.ts +1 -1
  274. package/dist/serve/worker/host/studio.d.ts.map +1 -1
  275. package/dist/serve/worker/host/studio.js +36 -1
  276. package/dist/serve/worker/host/studio.js.map +1 -1
  277. package/dist/serve/worker/host/subscriptions.d.ts.map +1 -1
  278. package/dist/serve/worker/host/subscriptions.js +27 -7
  279. package/dist/serve/worker/host/subscriptions.js.map +1 -1
  280. package/dist/serve/worker/host-context.d.ts +15 -0
  281. package/dist/serve/worker/host-context.d.ts.map +1 -1
  282. package/dist/serve/worker/host-context.js +10 -0
  283. package/dist/serve/worker/host-context.js.map +1 -1
  284. package/dist/serve/worker/host-messaging.d.ts.map +1 -1
  285. package/dist/serve/worker/host-messaging.js +9 -2
  286. package/dist/serve/worker/host-messaging.js.map +1 -1
  287. package/dist/serve/worker/index.d.ts +1 -1
  288. package/dist/serve/worker/index.d.ts.map +1 -1
  289. package/dist/serve/worker/index.js +2 -0
  290. package/dist/serve/worker/index.js.map +1 -1
  291. package/dist/serve/worker/protocol.d.ts +25 -3
  292. package/dist/serve/worker/protocol.d.ts.map +1 -1
  293. package/dist/serve/worker/protocol.js.map +1 -1
  294. package/dist/serve/worker/serve-init.d.ts +23 -37
  295. package/dist/serve/worker/serve-init.d.ts.map +1 -1
  296. package/dist/serve/worker/serve-init.js +95 -172
  297. package/dist/serve/worker/serve-init.js.map +1 -1
  298. package/dist/vite.d.ts +4 -4
  299. package/dist/vite.d.ts.map +1 -1
  300. package/dist/vite.js +3 -3
  301. package/dist/vite.js.map +1 -1
  302. package/package.json +8 -4
  303. package/dist/serve/studio-ui/assets/index-BvtQIpGn.js +0 -1211
  304. package/dist/serve/studio-ui/assets/seed-3DMedLL3.js +0 -2
@@ -1,6 +1,7 @@
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="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet"><link rel="stylesheet" href="/__pyric/ui/_astro/_slug_.DPUwShm2.css"></head> <body> <header class="studio__bar"> <div class="studio__bar-inner"> <a class="studio__brand" href="/__pyric/ui/" aria-label="Pyric Studio">Pyric</a> <nav class="studio__nav" aria-label="Studio tabs"> <a class="studio__nav-tab" href="/__pyric/ui/"> Home </a><a class="studio__nav-tab" href="/__pyric/ui/firestore"> Firestore </a><a class="studio__nav-tab" href="/__pyric/ui/auth"> Auth </a><a class="studio__nav-tab" href="/__pyric/ui/rtdb"> RTDB </a><a class="studio__nav-tab" href="/__pyric/ui/storage"> Storage </a><a class="studio__nav-tab" href="/__pyric/ui/traffic"> Traffic </a><a class="studio__nav-tab" href="/__pyric/ui/settings"> Settings </a><a class="studio__nav-tab" href="/__pyric/ui/docs" aria-current="page"> Docs </a> </nav> </div> </header> <div class="docs-shell"> <details class="docs-nav-drawer"> <summary>Navigate</summary> <nav class="docs-nav" aria-label="Documentation"> <div class="docs-search" data-index-url="/__pyric/ui/docs/index.json"> <div class="docs-search-field"> <svg class="docs-search-icon" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"> <path d="M11.5 11.5 15 15M13 7A6 6 0 1 1 1 7a6 6 0 0 1 12 0Z" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path> </svg> <input type="text" class="docs-search-input" placeholder="Search docs" aria-label="Search docs" autocomplete="off" spellcheck="false"> <kbd class="docs-search-kbd">⌘K</kbd> </div> <ul class="docs-search-results" hidden></ul> </div> <script type="module">let i=null;function d(t){return i||(i=fetch(t).then(e=>e.json())),i}function l(t,e){return t.title.toLowerCase().includes(e)||t.excerpt.toLowerCase().includes(e)?!0:t.headings.some(r=>r.text.toLowerCase().includes(e))}function u(t,e,r){if(e.innerHTML="",t.length===0){e.hidden=!1;{const n=document.createElement("li");n.className="docs-search-empty",n.textContent="No matches",e.appendChild(n)}return}e.hidden=!1;for(const n of t.slice(0,8)){const s=document.createElement("li"),c=document.createElement("a");c.href=n.path;const o=document.createElement("span");o.className="docs-search-result-title",o.textContent=n.title;const a=document.createElement("span");a.className="docs-search-result-meta",a.textContent=[n.group,n.section].filter(Boolean).join(" / "),c.append(o,a),s.appendChild(c),e.appendChild(s)}}document.querySelectorAll(".docs-search").forEach(t=>{const e=t.dataset.indexUrl,r=t.querySelector(".docs-search-input"),n=t.querySelector(".docs-search-results");r.addEventListener("input",async()=>{const s=r.value.trim().toLowerCase();if(!s){n.hidden=!0,n.innerHTML="";return}const{pages:c}=await d(e);r.value.trim().toLowerCase()===s&&u(c.filter(o=>l(o,s)),n)}),r.addEventListener("focus",()=>{d(e),n.childElementCount>0&&(n.hidden=!1)}),r.addEventListener("keydown",s=>{s.key==="Escape"&&(r.value="",n.hidden=!0,n.innerHTML="",r.blur())}),r.addEventListener("blur",()=>{window.setTimeout(()=>{n.hidden=!0},150)})});document.addEventListener("keydown",t=>{if(!(t.metaKey||t.ctrlKey)||t.key.toLowerCase()!=="k")return;const e=[...document.querySelectorAll(".docs-search-input")].find(r=>r.offsetParent!==null);e&&(t.preventDefault(),e.focus(),e.select())});</script> <a class="docs-nav-toplink" href="/__pyric/ui/docs/overview/"> Overview </a><details class="docs-nav-group"> <summary>Get started</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/get-started/start-building/"> Quickstart </a> </li><li> <a href="/__pyric/ui/docs/get-started/how-the-swap-works/"> How the swap works </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Build</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/build/authentication/"> Authentication </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-firestore/"> Cloud Firestore </a> </li><li> <a href="/__pyric/ui/docs/build/realtime-database/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-storage/"> Cloud Storage </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-messaging/"> Cloud Messaging </a> </li><li> <a href="/__pyric/ui/docs/build/ai-logic/"> AI Logic </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Secure &amp; debug</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/secure/secure-it-with-rules/"> Security Rules </a> </li><li> <a href="/__pyric/ui/docs/secure/simulate-and-lint/"> Simulate and lint before you deploy </a> </li><li> <a href="/__pyric/ui/docs/secure/write-a-rules-test-suite/"> Write a rules test suite </a> </li><li> <a href="/__pyric/ui/docs/secure/read-a-denial/"> Read a denial and understand it </a> </li><li> <a href="/__pyric/ui/docs/secure/rules-standard-library/"> The rules standard library </a> </li><li> <a href="/__pyric/ui/docs/secure/rtdb-rules-in-typescript/"> RTDB rules in TypeScript </a> </li><li> <a href="/__pyric/ui/docs/secure/firestore-rules-limits/"> Rules limits </a> </li><li> <a href="/__pyric/ui/docs/secure/audit-your-rules/"> Audit rules and data </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Observe &amp; shape</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/observe/see-whats-happening/"> Traffic &amp; rule verdicts </a> </li><li> <a href="/__pyric/ui/docs/observe/shape-your-data/"> Seed, snapshot, replay </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Ship &amp; test</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/ship/ship-to-production/"> Ship to production </a> </li><li> <a href="/__pyric/ui/docs/ship/test-in-node/"> Test in Node </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Work with an agent</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/agent/set-up-your-agent/"> Connect an agent </a> </li><li> <a href="/__pyric/ui/docs/agent/work-with-an-agent/"> Use the MCP tools </a> </li><li> <a href="/__pyric/ui/docs/agent/watch-and-review/"> Watch in Pyric Studio </a> </li> </ul> </div> </div> </details><a class="docs-nav-toplink" href="/__pyric/ui/docs/trust/versioning-and-compatibility/"> Trust </a><details class="docs-nav-group"> <summary>Conformance</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/conformance-scores/"> Public API coverage </a> </li><li> <a href="/__pyric/ui/docs/trust/how-we-know-it-matches-firebase/"> How we know it matches Firebase </a> </li><li> <a href="/__pyric/ui/docs/app-compat/"> App </a> </li><li> <a href="/__pyric/ui/docs/ai-compat/"> AI Logic </a> </li><li> <a href="/__pyric/ui/docs/auth-compat/"> Auth </a> </li><li> <a href="/__pyric/ui/docs/firestore-compat/"> Firestore </a> </li><li> <a href="/__pyric/ui/docs/database-compat/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/storage-compat/"> Storage </a> </li><li> <a href="/__pyric/ui/docs/messaging-compat/"> Messaging </a> </li><li> <a href="/__pyric/ui/docs/functions-rtdb-compat/"> Functions · RTDB </a> </li><li> <a href="/__pyric/ui/docs/rules-compat/"> Rules </a> </li> </ul> </div> </div> </details> <details class="docs-nav-group" open> <summary>Reference</summary> <div class="docs-nav-group-body docs-nav-group-body--reference"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/api-reference/"> API reference </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-app-reference-api/"> pyric/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-reference-api/"> pyric/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth-reference-api/"> pyric/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-reference-api/"> pyric/ai </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-scripting-reference-api/"> pyric/ai/scripting </a> </li><li> <a href="/__pyric/ui/docs/pyric-database-reference-api/"> pyric/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage-reference-api/"> pyric/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-reference-api/"> pyric/messaging </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-sw-reference-api/"> pyric/messaging/sw </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules-reference-api/"> pyric/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-values-reference-api/"> pyric/firestore-values </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-reference-api/"> pyric/sandbox </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-firestore-reference-api/"> pyric/sandbox/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-database-reference-api/"> pyric/sandbox/database </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric-admin</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-admin-app-reference-api/"> pyric-admin/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-firestore-reference-api/"> pyric-admin/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-auth-reference-api/"> pyric-admin/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-database-reference-api/"> pyric-admin/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-storage-reference-api/"> pyric-admin/storage </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">create-pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/create-pyric-reference-api/"> create-pyric </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/cli</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli-credentials-node-reference-api/"> @pyric/cli/credentials/node </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-verify-reference-api/"> @pyric/cli/verify </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-reference-api/"> @pyric/cli/conformance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-browser-reference-api/"> @pyric/cli/conformance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-reference-api/"> @pyric/cli/assurance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-browser-reference-api/"> @pyric/cli/assurance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-reference-api/"> @pyric/cli/bridge </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-client-reference-api/"> @pyric/cli/bridge/client </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-discover-reference-api/"> @pyric/cli/discover </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-vite-reference-api/"> @pyric/cli/vite </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-serve-worker-reference-api/" 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> <a class="docs-nav-toplink" href="/__pyric/ui/docs/overview/" id="nav-group-overview"> Overview </a><details class="docs-nav-group" id="nav-group-get-started"> <summary>Get started</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/get-started/start-building/"> Quickstart </a> </li><li> <a href="/__pyric/ui/docs/get-started/how-the-swap-works/"> How the swap works </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-build"> <summary>Build</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/build/authentication/"> Authentication </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-firestore/"> Cloud Firestore </a> </li><li> <a href="/__pyric/ui/docs/build/realtime-database/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-storage/"> Cloud Storage </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-messaging/"> Cloud Messaging </a> </li><li> <a href="/__pyric/ui/docs/build/ai-logic/"> AI Logic </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-secure-debug"> <summary>Secure &amp; debug</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/secure/secure-it-with-rules/"> Security Rules </a> </li><li> <a href="/__pyric/ui/docs/secure/simulate-and-lint/"> Simulate and lint before you deploy </a> </li><li> <a href="/__pyric/ui/docs/secure/write-a-rules-test-suite/"> Write a rules test suite </a> </li><li> <a href="/__pyric/ui/docs/secure/read-a-denial/"> Read a denial and understand it </a> </li><li> <a href="/__pyric/ui/docs/secure/rules-standard-library/"> The rules standard library </a> </li><li> <a href="/__pyric/ui/docs/secure/rtdb-rules-in-typescript/"> RTDB rules in TypeScript </a> </li><li> <a href="/__pyric/ui/docs/secure/firestore-rules-limits/"> Rules limits </a> </li><li> <a href="/__pyric/ui/docs/secure/audit-your-rules/"> Audit rules and data </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-observe-shape"> <summary>Observe &amp; shape</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/observe/see-whats-happening/"> Traffic &amp; rule verdicts </a> </li><li> <a href="/__pyric/ui/docs/observe/shape-your-data/"> Seed, snapshot, replay </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-ship-test"> <summary>Ship &amp; test</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/ship/ship-to-production/"> Ship to production </a> </li><li> <a href="/__pyric/ui/docs/ship/test-in-node/"> Test in Node </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-work-with-an-agent"> <summary>Work with an agent</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/agent/set-up-your-agent/"> Connect an agent </a> </li><li> <a href="/__pyric/ui/docs/agent/work-with-an-agent/"> Use the MCP tools </a> </li><li> <a href="/__pyric/ui/docs/agent/watch-and-review/"> Watch in Pyric Studio </a> </li> </ul> </div> </div> </details><a class="docs-nav-toplink" href="/__pyric/ui/docs/trust/versioning-and-compatibility/" id="nav-group-trust"> Trust </a><details class="docs-nav-group" id="nav-group-conformance"> <summary>Conformance</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/conformance-scores/"> Public API coverage </a> </li><li> <a href="/__pyric/ui/docs/trust/how-we-know-it-matches-firebase/"> How we know it matches Firebase </a> </li><li> <a href="/__pyric/ui/docs/app-compat/"> App </a> </li><li> <a href="/__pyric/ui/docs/ai-compat/"> AI Logic </a> </li><li> <a href="/__pyric/ui/docs/auth-compat/"> Auth </a> </li><li> <a href="/__pyric/ui/docs/firestore-compat/"> Firestore </a> </li><li> <a href="/__pyric/ui/docs/database-compat/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/storage-compat/"> Storage </a> </li><li> <a href="/__pyric/ui/docs/messaging-compat/"> Messaging </a> </li><li> <a href="/__pyric/ui/docs/functions-rtdb-compat/"> Functions · RTDB </a> </li><li> <a href="/__pyric/ui/docs/rules-compat/"> Rules </a> </li> </ul> </div> </div> </details> <details class="docs-nav-group" id="nav-group-reference" open> <summary>Reference</summary> <div class="docs-nav-group-body docs-nav-group-body--reference"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/api-reference/"> API reference </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-app-reference-api/"> pyric/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-reference-api/"> pyric/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth-reference-api/"> pyric/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-reference-api/"> pyric/ai </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-scripting-reference-api/"> pyric/ai/scripting </a> </li><li> <a href="/__pyric/ui/docs/pyric-database-reference-api/"> pyric/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage-reference-api/"> pyric/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-reference-api/"> pyric/messaging </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-sw-reference-api/"> pyric/messaging/sw </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules-reference-api/"> pyric/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-values-reference-api/"> pyric/firestore-values </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-reference-api/"> pyric/sandbox </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-firestore-reference-api/"> pyric/sandbox/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-database-reference-api/"> pyric/sandbox/database </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric-admin</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-admin-app-reference-api/"> pyric-admin/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-firestore-reference-api/"> pyric-admin/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-auth-reference-api/"> pyric-admin/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-database-reference-api/"> pyric-admin/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-storage-reference-api/"> pyric-admin/storage </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">create-pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/create-pyric-reference-api/"> create-pyric </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/cli</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli-credentials-node-reference-api/"> @pyric/cli/credentials/node </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-verify-reference-api/"> @pyric/cli/verify </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-reference-api/"> @pyric/cli/conformance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-browser-reference-api/"> @pyric/cli/conformance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-reference-api/"> @pyric/cli/assurance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-browser-reference-api/"> @pyric/cli/assurance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-reference-api/"> @pyric/cli/bridge </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-client-reference-api/"> @pyric/cli/bridge/client </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-discover-reference-api/"> @pyric/cli/discover </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-vite-reference-api/"> @pyric/cli/vite </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-serve-worker-reference-api/" 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"> <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"> <p class="api-reference-kicker">API reference</p> <h1><code>@pyric/cli/serve/worker</code></h1> <p class="api-reference-meta"> 144 published symbols from <code>@pyric/cli</code> </p> <p class="api-reference-source">
1
+ <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>API reference: @pyric/cli/serve/worker · Pyric Studio</title><meta name="description" content="Published declarations for @pyric/cli/serve/worker."><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet"><link rel="stylesheet" href="/__pyric/ui/_astro/_slug_.CXh9yTP1.css">
2
+ <link rel="stylesheet" href="/__pyric/ui/_astro/_slug_.DUci-duz.css"></head> <body> <header class="studio__bar"> <div class="studio__bar-inner"> <a class="studio__brand" href="/__pyric/ui/" aria-label="Pyric Studio">Pyric</a> <nav class="studio__nav" aria-label="Studio tabs"> <a class="studio__nav-tab" href="/__pyric/ui/"> Home </a><a class="studio__nav-tab" href="/__pyric/ui/firestore"> Firestore </a><a class="studio__nav-tab" href="/__pyric/ui/auth"> Auth </a><a class="studio__nav-tab" href="/__pyric/ui/rtdb"> RTDB </a><a class="studio__nav-tab" href="/__pyric/ui/storage"> Storage </a><a class="studio__nav-tab" href="/__pyric/ui/traffic"> Traffic </a><a class="studio__nav-tab" href="/__pyric/ui/settings"> Settings </a><a class="studio__nav-tab" href="/__pyric/ui/docs" aria-current="page"> Docs </a> </nav> </div> </header> <div class="docs-shell"> <details class="docs-nav-drawer"> <summary>Navigate</summary> <nav class="docs-nav" aria-label="Documentation"> <div class="docs-search" data-index-url="/__pyric/ui/docs/index.json"> <div class="docs-search-field"> <svg class="docs-search-icon" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"> <path d="M11.5 11.5 15 15M13 7A6 6 0 1 1 1 7a6 6 0 0 1 12 0Z" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path> </svg> <input type="text" class="docs-search-input" placeholder="Search docs" aria-label="Search docs" autocomplete="off" spellcheck="false"> <kbd class="docs-search-kbd">⌘K</kbd> </div> <ul class="docs-search-results" hidden></ul> </div> <script type="module">let i=null;function d(t){return i||(i=fetch(t).then(e=>e.json())),i}function l(t,e){return t.title.toLowerCase().includes(e)||t.excerpt.toLowerCase().includes(e)?!0:t.headings.some(r=>r.text.toLowerCase().includes(e))}function u(t,e,r){if(e.innerHTML="",t.length===0){e.hidden=!1;{const n=document.createElement("li");n.className="docs-search-empty",n.textContent="No matches",e.appendChild(n)}return}e.hidden=!1;for(const n of t.slice(0,8)){const s=document.createElement("li"),c=document.createElement("a");c.href=n.path;const o=document.createElement("span");o.className="docs-search-result-title",o.textContent=n.title;const a=document.createElement("span");a.className="docs-search-result-meta",a.textContent=[n.group,n.section].filter(Boolean).join(" / "),c.append(o,a),s.appendChild(c),e.appendChild(s)}}document.querySelectorAll(".docs-search").forEach(t=>{const e=t.dataset.indexUrl,r=t.querySelector(".docs-search-input"),n=t.querySelector(".docs-search-results");r.addEventListener("input",async()=>{const s=r.value.trim().toLowerCase();if(!s){n.hidden=!0,n.innerHTML="";return}const{pages:c}=await d(e);r.value.trim().toLowerCase()===s&&u(c.filter(o=>l(o,s)),n)}),r.addEventListener("focus",()=>{d(e),n.childElementCount>0&&(n.hidden=!1)}),r.addEventListener("keydown",s=>{s.key==="Escape"&&(r.value="",n.hidden=!0,n.innerHTML="",r.blur())}),r.addEventListener("blur",()=>{window.setTimeout(()=>{n.hidden=!0},150)})});document.addEventListener("keydown",t=>{if(!(t.metaKey||t.ctrlKey)||t.key.toLowerCase()!=="k")return;const e=[...document.querySelectorAll(".docs-search-input")].find(r=>r.offsetParent!==null);e&&(t.preventDefault(),e.focus(),e.select())});</script> <a class="docs-nav-toplink" href="/__pyric/ui/docs/overview/"> Overview </a><details class="docs-nav-group"> <summary>Get started</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/get-started/start-building/"> Quickstart </a> </li><li> <a href="/__pyric/ui/docs/get-started/how-the-swap-works/"> How the swap works </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Build</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/build/authentication/"> Authentication </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-firestore/"> Cloud Firestore </a> </li><li> <a href="/__pyric/ui/docs/build/realtime-database/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-storage/"> Cloud Storage </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-messaging/"> Cloud Messaging </a> </li><li> <a href="/__pyric/ui/docs/build/ai-logic/"> AI Logic </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Secure &amp; debug</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/secure/secure-it-with-rules/"> Security Rules </a> </li><li> <a href="/__pyric/ui/docs/secure/simulate-and-lint/"> Simulate and lint before you deploy </a> </li><li> <a href="/__pyric/ui/docs/secure/write-a-rules-test-suite/"> Write a rules test suite </a> </li><li> <a href="/__pyric/ui/docs/secure/read-a-denial/"> Read a denial and understand it </a> </li><li> <a href="/__pyric/ui/docs/secure/rules-standard-library/"> The rules standard library </a> </li><li> <a href="/__pyric/ui/docs/secure/rtdb-rules-in-typescript/"> RTDB rules in TypeScript </a> </li><li> <a href="/__pyric/ui/docs/secure/firestore-rules-limits/"> Rules limits </a> </li><li> <a href="/__pyric/ui/docs/secure/audit-your-rules/"> Audit rules and data </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Observe &amp; shape</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/observe/see-whats-happening/"> Traffic &amp; rule verdicts </a> </li><li> <a href="/__pyric/ui/docs/observe/shape-your-data/"> Seed, snapshot, replay </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Ship &amp; test</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/ship/ship-to-production/"> Ship to production </a> </li><li> <a href="/__pyric/ui/docs/ship/test-in-node/"> Test in Node </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Work with an agent</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/agent/set-up-your-agent/"> Connect an agent </a> </li><li> <a href="/__pyric/ui/docs/agent/work-with-an-agent/"> Use the MCP tools </a> </li><li> <a href="/__pyric/ui/docs/agent/watch-and-review/"> Watch in Pyric Studio </a> </li> </ul> </div> </div> </details><a class="docs-nav-toplink" href="/__pyric/ui/docs/trust/versioning-and-compatibility/"> Trust </a><details class="docs-nav-group"> <summary>Conformance</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/conformance-scores/"> Public API coverage </a> </li><li> <a href="/__pyric/ui/docs/trust/how-we-know-it-matches-firebase/"> How we know it matches Firebase </a> </li><li> <a href="/__pyric/ui/docs/app-compat/"> App </a> </li><li> <a href="/__pyric/ui/docs/ai-compat/"> AI Logic </a> </li><li> <a href="/__pyric/ui/docs/auth-compat/"> Auth </a> </li><li> <a href="/__pyric/ui/docs/firestore-compat/"> Firestore </a> </li><li> <a href="/__pyric/ui/docs/database-compat/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/storage-compat/"> Storage </a> </li><li> <a href="/__pyric/ui/docs/messaging-compat/"> Messaging </a> </li><li> <a href="/__pyric/ui/docs/functions-rtdb-compat/"> Functions · RTDB </a> </li><li> <a href="/__pyric/ui/docs/rules-compat/"> Rules </a> </li> </ul> </div> </div> </details> <details class="docs-nav-group" open> <summary>Reference</summary> <div class="docs-nav-group-body docs-nav-group-body--reference"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/api-reference/"> API reference </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-app-reference-api/"> pyric/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-reference-api/"> pyric/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth-reference-api/"> pyric/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-reference-api/"> pyric/ai </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-scripting-reference-api/"> pyric/ai/scripting </a> </li><li> <a href="/__pyric/ui/docs/pyric-database-reference-api/"> pyric/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage-reference-api/"> pyric/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-reference-api/"> pyric/messaging </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-sw-reference-api/"> pyric/messaging/sw </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules-reference-api/"> pyric/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-values-reference-api/"> pyric/firestore-values </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-reference-api/"> pyric/sandbox </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-firestore-reference-api/"> pyric/sandbox/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-database-reference-api/"> pyric/sandbox/database </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric-admin</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-admin-app-reference-api/"> pyric-admin/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-firestore-reference-api/"> pyric-admin/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-auth-reference-api/"> pyric-admin/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-database-reference-api/"> pyric-admin/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-storage-reference-api/"> pyric-admin/storage </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">create-pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/create-pyric-reference-api/"> create-pyric </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/cli</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli-credentials-node-reference-api/"> @pyric/cli/credentials/node </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-verify-reference-api/"> @pyric/cli/verify </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-reference-api/"> @pyric/cli/conformance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-browser-reference-api/"> @pyric/cli/conformance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-docs-reference-api/"> @pyric/cli/conformance/docs </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-reference-api/"> @pyric/cli/assurance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-browser-reference-api/"> @pyric/cli/assurance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-reference-api/"> @pyric/cli/bridge </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-client-reference-api/"> @pyric/cli/bridge/client </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-discover-reference-api/"> @pyric/cli/discover </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-vite-reference-api/"> @pyric/cli/vite </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-serve-worker-reference-api/" 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> <a class="docs-nav-toplink" href="/__pyric/ui/docs/overview/" id="nav-group-overview"> Overview </a><details class="docs-nav-group" id="nav-group-get-started"> <summary>Get started</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/get-started/start-building/"> Quickstart </a> </li><li> <a href="/__pyric/ui/docs/get-started/how-the-swap-works/"> How the swap works </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-build"> <summary>Build</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/build/authentication/"> Authentication </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-firestore/"> Cloud Firestore </a> </li><li> <a href="/__pyric/ui/docs/build/realtime-database/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-storage/"> Cloud Storage </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-messaging/"> Cloud Messaging </a> </li><li> <a href="/__pyric/ui/docs/build/ai-logic/"> AI Logic </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-secure-debug"> <summary>Secure &amp; debug</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/secure/secure-it-with-rules/"> Security Rules </a> </li><li> <a href="/__pyric/ui/docs/secure/simulate-and-lint/"> Simulate and lint before you deploy </a> </li><li> <a href="/__pyric/ui/docs/secure/write-a-rules-test-suite/"> Write a rules test suite </a> </li><li> <a href="/__pyric/ui/docs/secure/read-a-denial/"> Read a denial and understand it </a> </li><li> <a href="/__pyric/ui/docs/secure/rules-standard-library/"> The rules standard library </a> </li><li> <a href="/__pyric/ui/docs/secure/rtdb-rules-in-typescript/"> RTDB rules in TypeScript </a> </li><li> <a href="/__pyric/ui/docs/secure/firestore-rules-limits/"> Rules limits </a> </li><li> <a href="/__pyric/ui/docs/secure/audit-your-rules/"> Audit rules and data </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-observe-shape"> <summary>Observe &amp; shape</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/observe/see-whats-happening/"> Traffic &amp; rule verdicts </a> </li><li> <a href="/__pyric/ui/docs/observe/shape-your-data/"> Seed, snapshot, replay </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-ship-test"> <summary>Ship &amp; test</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/ship/ship-to-production/"> Ship to production </a> </li><li> <a href="/__pyric/ui/docs/ship/test-in-node/"> Test in Node </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-work-with-an-agent"> <summary>Work with an agent</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/agent/set-up-your-agent/"> Connect an agent </a> </li><li> <a href="/__pyric/ui/docs/agent/work-with-an-agent/"> Use the MCP tools </a> </li><li> <a href="/__pyric/ui/docs/agent/watch-and-review/"> Watch in Pyric Studio </a> </li> </ul> </div> </div> </details><a class="docs-nav-toplink" href="/__pyric/ui/docs/trust/versioning-and-compatibility/" id="nav-group-trust"> Trust </a><details class="docs-nav-group" id="nav-group-conformance"> <summary>Conformance</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/conformance-scores/"> Public API coverage </a> </li><li> <a href="/__pyric/ui/docs/trust/how-we-know-it-matches-firebase/"> How we know it matches Firebase </a> </li><li> <a href="/__pyric/ui/docs/app-compat/"> App </a> </li><li> <a href="/__pyric/ui/docs/ai-compat/"> AI Logic </a> </li><li> <a href="/__pyric/ui/docs/auth-compat/"> Auth </a> </li><li> <a href="/__pyric/ui/docs/firestore-compat/"> Firestore </a> </li><li> <a href="/__pyric/ui/docs/database-compat/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/storage-compat/"> Storage </a> </li><li> <a href="/__pyric/ui/docs/messaging-compat/"> Messaging </a> </li><li> <a href="/__pyric/ui/docs/functions-rtdb-compat/"> Functions · RTDB </a> </li><li> <a href="/__pyric/ui/docs/rules-compat/"> Rules </a> </li> </ul> </div> </div> </details> <details class="docs-nav-group" id="nav-group-reference" open> <summary>Reference</summary> <div class="docs-nav-group-body docs-nav-group-body--reference"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/api-reference/"> API reference </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-app-reference-api/"> pyric/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-reference-api/"> pyric/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth-reference-api/"> pyric/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-reference-api/"> pyric/ai </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-scripting-reference-api/"> pyric/ai/scripting </a> </li><li> <a href="/__pyric/ui/docs/pyric-database-reference-api/"> pyric/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage-reference-api/"> pyric/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-reference-api/"> pyric/messaging </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-sw-reference-api/"> pyric/messaging/sw </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules-reference-api/"> pyric/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-values-reference-api/"> pyric/firestore-values </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-reference-api/"> pyric/sandbox </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-firestore-reference-api/"> pyric/sandbox/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-database-reference-api/"> pyric/sandbox/database </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric-admin</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-admin-app-reference-api/"> pyric-admin/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-firestore-reference-api/"> pyric-admin/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-auth-reference-api/"> pyric-admin/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-database-reference-api/"> pyric-admin/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-storage-reference-api/"> pyric-admin/storage </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">create-pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/create-pyric-reference-api/"> create-pyric </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/cli</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli-credentials-node-reference-api/"> @pyric/cli/credentials/node </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-verify-reference-api/"> @pyric/cli/verify </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-reference-api/"> @pyric/cli/conformance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-browser-reference-api/"> @pyric/cli/conformance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-docs-reference-api/"> @pyric/cli/conformance/docs </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-reference-api/"> @pyric/cli/assurance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-browser-reference-api/"> @pyric/cli/assurance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-reference-api/"> @pyric/cli/bridge </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-client-reference-api/"> @pyric/cli/bridge/client </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-discover-reference-api/"> @pyric/cli/discover </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-vite-reference-api/"> @pyric/cli/vite </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-serve-worker-reference-api/" 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"> <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"> <p class="api-reference-kicker">API reference</p> <h1><code>@pyric/cli/serve/worker</code></h1> <p class="api-reference-meta"> 145 published symbols from <code>@pyric/cli</code> </p> <p class="api-reference-source">
2
3
  Generated from the TypeScript declarations shipped at this import path.
3
- </p> </header> <article class="prose api-reference-body"> <!-- Generated from published package declarations via TypeDoc. Do not edit by hand; run bun run docs:api:generate. -->
4
+ </p> </header> <article class="prose api-reference-body"> <!-- Generated from published package declarations via TypeDoc. Rendered by the api-reference content loader. -->
4
5
  <h2 id="interfaces">Interfaces</h2>
5
6
  <p><a id="clientauth"></a></p>
6
7
  <h3 id="clientauth">ClientAuth</h3>
@@ -523,7 +524,7 @@ that RPC back to the worker. Mirrors <code>firebase/auth</code>’s <code>User</
523
524
 
524
525
 
525
526
 
526
- <table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="operationtype"></a> <code>operationType</code></td><td align="left"><code>"signIn"</code> | <code>"reauthenticate"</code> | <code>"link"</code></td></tr><tr><td align="left"><a id="providerid-1"></a> <code>providerId</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="user"></a> <code>user</code></td><td align="left"><a href="#clientuser"><code>ClientUser</code></a></td></tr></tbody></table></div>
527
+ <table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="operationtype"></a> <code>operationType</code></td><td align="left"><code>"signIn"</code> | <code>"link"</code> | <code>"reauthenticate"</code></td></tr><tr><td align="left"><a id="providerid-1"></a> <code>providerId</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="user"></a> <code>user</code></td><td align="left"><a href="#clientuser"><code>ClientUser</code></a></td></tr></tbody></table></div>
527
528
  <hr>
528
529
  <p><a id="clientwritebatch"></a></p>
529
530
  <h3 id="clientwritebatch">ClientWriteBatch</h3>
@@ -1173,7 +1174,7 @@ worker (the worker holds the one real user).</p>
1173
1174
 
1174
1175
 
1175
1176
 
1176
- <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="operationtype-1"></a> <code>operationType</code></td><td align="left"><code>readonly</code></td><td align="left"><code>"signIn"</code> | <code>"reauthenticate"</code> | <code>"link"</code></td></tr><tr><td align="left"><a id="providerid-4"></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="user-1"></a> <code>user</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#serializeduser"><code>SerializedUser</code></a></td></tr></tbody></table></div>
1177
+ <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="operationtype-1"></a> <code>operationType</code></td><td align="left"><code>readonly</code></td><td align="left"><code>"signIn"</code> | <code>"link"</code> | <code>"reauthenticate"</code></td></tr><tr><td align="left"><a id="providerid-4"></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="user-1"></a> <code>user</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#serializeduser"><code>SerializedUser</code></a></td></tr></tbody></table></div>
1177
1178
  <h2 id="type-aliases">Type Aliases</h2>
1178
1179
  <p><a id="anyhandle"></a></p>
1179
1180
  <h3 id="anyhandle">AnyHandle</h3>
@@ -1426,9 +1427,9 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1426
1427
 
1427
1428
 
1428
1429
 
1429
- <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"><code>CreateUserRequest</code></td></tr></tbody></table></div>
1430
+ <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>
1430
1431
  <h4 id="returns-26">Returns</h4>
1431
- <p><code>Promise</code>&#x3C;<code>AuthUserRecord</code>></p>
1432
+ <p><code>Promise</code>&#x3C;<a href="/docs/pyric-auth-reference-api/#authuserrecord"><code>AuthUserRecord</code></a>></p>
1432
1433
  <hr>
1433
1434
  <p><a id="admindeletedocument"></a></p>
1434
1435
  <h3 id="admindeletedocument">adminDeleteDocument()</h3>
@@ -1953,9 +1954,9 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
1953
1954
 
1954
1955
 
1955
1956
 
1956
- <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"><code>UpdateUserRequest</code></td></tr></tbody></table></div>
1957
+ <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>
1957
1958
  <h4 id="returns-38">Returns</h4>
1958
- <p><code>Promise</code>&#x3C;<code>AuthUserRecord</code>></p>
1959
+ <p><code>Promise</code>&#x3C;<a href="/docs/pyric-auth-reference-api/#authuserrecord"><code>AuthUserRecord</code></a>></p>
1959
1960
  <hr>
1960
1961
  <p><a id="and"></a></p>
1961
1962
  <h3 id="and">and()</h3>
@@ -2495,7 +2496,7 @@ subscription. Useful for a late, snapshot-only consumer.</p>
2495
2496
 
2496
2497
  <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>
2497
2498
  <h4 id="returns-56">Returns</h4>
2498
- <p><code>Promise</code>&#x3C;readonly <code>SandboxEvent</code>[]></p>
2499
+ <p><code>Promise</code>&#x3C;readonly <a href="/docs/pyric-sandbox-reference-api/#sandboxevent"><code>SandboxEvent</code></a>[]></p>
2499
2500
  <hr>
2500
2501
  <p><a id="exportworkerstate"></a></p>
2501
2502
  <h3 id="exportworkerstate">exportWorkerState()</h3>
@@ -2912,10 +2913,10 @@ but returns a <code>ClientDb</code> backed by a <code>MessagePort</code> instead
2912
2913
  <hr>
2913
2914
  <p><a id="getlens"></a></p>
2914
2915
  <h3 id="getlens">getLens()</h3>
2915
- <pre class="astro-code 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">any</span><span style="color:#ABB2BF">;</span></span></code></pre>
2916
+ <pre class="astro-code 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>
2916
2917
  <p>The active default lens (read-only view), for Studio UI to reflect state.</p>
2917
2918
  <h4 id="returns-70">Returns</h4>
2918
- <p><code>any</code></p>
2919
+ <p><a href="/docs/pyric-sandbox-reference-api/#authlens-2"><code>AuthLens</code></a></p>
2919
2920
  <hr>
2920
2921
  <p><a id="getmetadata"></a></p>
2921
2922
  <h3 id="getmetadata">getMetadata()</h3>
@@ -2937,7 +2938,7 @@ but returns a <code>ClientDb</code> backed by a <code>MessagePort</code> instead
2937
2938
 
2938
2939
  <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>
2939
2940
  <h4 id="returns-71">Returns</h4>
2940
- <p><code>Promise</code>&#x3C;<code>FullMetadata</code>></p>
2941
+ <p><code>Promise</code>&#x3C;<a href="/docs/pyric-storage-reference-api/#fullmetadata"><code>FullMetadata</code></a>></p>
2941
2942
  <hr>
2942
2943
  <p><a id="getproviderconfig"></a></p>
2943
2944
  <h3 id="getproviderconfig">getProviderConfig()</h3>
@@ -3043,7 +3044,7 @@ attempting user, on a throwaway branch (no live mutation).</p>
3043
3044
 
3044
3045
  <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
3046
  <h4 id="returns-74">Returns</h4>
3046
- <p><code>Promise</code>&#x3C;<code>SandboxSnapshot</code>></p>
3047
+ <p><code>Promise</code>&#x3C;<a href="/docs/pyric-sandbox-reference-api/#sandboxsnapshot"><code>SandboxSnapshot</code></a>></p>
3047
3048
  <hr>
3048
3049
  <p><a id="getstorage"></a></p>
3049
3050
  <h3 id="getstorage">getStorage()</h3>
@@ -3370,7 +3371,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3370
3371
 
3371
3372
  <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>
3372
3373
  <h4 id="returns-85">Returns</h4>
3373
- <p><code>Promise</code>&#x3C;<code>AuthUserRecord</code>[]></p>
3374
+ <p><code>Promise</code>&#x3C;<a href="/docs/pyric-auth-reference-api/#authuserrecord"><code>AuthUserRecord</code></a>[]></p>
3374
3375
  <hr>
3375
3376
  <p><a id="listworkerbranches"></a></p>
3376
3377
  <h3 id="listworkerbranches">listWorkerBranches()</h3>
@@ -3690,6 +3691,36 @@ history batches aren’t coalescible, so it needs bounded backpressure first
3690
3691
  <h5 id="returns-97">Returns</h5>
3691
3692
  <p><code>void</code></p>
3692
3693
  <hr>
3694
+ <p><a id="resetall"></a></p>
3695
+ <h3 id="resetall">resetAll()</h3>
3696
+ <pre class="astro-code 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"> resetAll</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>
3697
+ <span class="line"><span style="color:#E06C75"> errors</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">[];</span></span>
3698
+ <span class="line"><span style="color:#ABB2BF">}>;</span></span></code></pre>
3699
+ <p>Sandbox-owned full reset (issue #359): <code>sandbox.resetAll()</code> on the worker.
3700
+ Clears the Firestore env, the signed-in session, and EVERY registered
3701
+ persistable service — auth users, the RTDB tree, storage objects. Resolves
3702
+ once the worker acks (all services finished clearing). This is the served
3703
+ counterpart of calling <code>sandbox.resetAll()</code> on an in-process sandbox.</p>
3704
+ <h4 id="parameters-82">Parameters</h4>
3705
+ <div class="table-scroll">
3706
+
3707
+
3708
+
3709
+
3710
+
3711
+
3712
+
3713
+
3714
+
3715
+
3716
+
3717
+
3718
+ <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>
3719
+ <h4 id="returns-98">Returns</h4>
3720
+ <p><code>Promise</code>&#x3C;{
3721
+ <code>errors</code>: <code>string</code>[];
3722
+ }></p>
3723
+ <hr>
3693
3724
  <p><a id="rtdbchild"></a></p>
3694
3725
  <h3 id="rtdbchild">rtdbChild()</h3>
3695
3726
  <pre class="astro-code 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>
@@ -3708,7 +3739,7 @@ and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays
3708
3739
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3709
3740
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
3710
3741
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
3711
- <h4 id="parameters-82">Parameters</h4>
3742
+ <h4 id="parameters-83">Parameters</h4>
3712
3743
  <div class="table-scroll">
3713
3744
 
3714
3745
 
@@ -3727,7 +3758,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3727
3758
 
3728
3759
 
3729
3760
  <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>
3730
- <h4 id="returns-98">Returns</h4>
3761
+ <h4 id="returns-99">Returns</h4>
3731
3762
  <p><a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a></p>
3732
3763
  <hr>
3733
3764
  <p><a id="rtdbconnectdatabaseemulator"></a></p>
@@ -3748,7 +3779,7 @@ and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays
3748
3779
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3749
3780
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
3750
3781
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
3751
- <h4 id="returns-99">Returns</h4>
3782
+ <h4 id="returns-100">Returns</h4>
3752
3783
  <p><code>void</code></p>
3753
3784
  <hr>
3754
3785
  <p><a id="rtdbget"></a></p>
@@ -3769,7 +3800,7 @@ and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays
3769
3800
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3770
3801
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
3771
3802
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
3772
- <h4 id="parameters-83">Parameters</h4>
3803
+ <h4 id="parameters-84">Parameters</h4>
3773
3804
  <div class="table-scroll">
3774
3805
 
3775
3806
 
@@ -3784,7 +3815,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3784
3815
 
3785
3816
 
3786
3817
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>r</code></td><td align="left"><a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a></td></tr></tbody></table></div>
3787
- <h4 id="returns-100">Returns</h4>
3818
+ <h4 id="returns-101">Returns</h4>
3788
3819
  <p><code>Promise</code>&#x3C;<a href="#rtdbdatasnapshot"><code>RtdbDataSnapshot</code></a>></p>
3789
3820
  <hr>
3790
3821
  <p><a id="rtdbgetdatabase"></a></p>
@@ -3805,7 +3836,7 @@ and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays
3805
3836
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3806
3837
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
3807
3838
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
3808
- <h4 id="parameters-84">Parameters</h4>
3839
+ <h4 id="parameters-85">Parameters</h4>
3809
3840
  <div class="table-scroll">
3810
3841
 
3811
3842
 
@@ -3824,7 +3855,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3824
3855
 
3825
3856
 
3826
3857
  <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>
3827
- <h4 id="returns-101">Returns</h4>
3858
+ <h4 id="returns-102">Returns</h4>
3828
3859
  <p><a href="#clientrtdb"><code>ClientRtdb</code></a></p>
3829
3860
  <hr>
3830
3861
  <p><a id="rtdboff"></a></p>
@@ -3848,7 +3879,7 @@ and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays
3848
3879
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3849
3880
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
3850
3881
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
3851
- <h4 id="parameters-85">Parameters</h4>
3882
+ <h4 id="parameters-86">Parameters</h4>
3852
3883
  <div class="table-scroll">
3853
3884
 
3854
3885
 
@@ -3871,7 +3902,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3871
3902
 
3872
3903
 
3873
3904
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>_r</code></td><td align="left"><a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a></td></tr><tr><td align="left"><code>_eventType?</code></td><td align="left"><code>unknown</code></td></tr><tr><td align="left"><code>_callback?</code></td><td align="left"><code>unknown</code></td></tr></tbody></table></div>
3874
- <h4 id="returns-102">Returns</h4>
3905
+ <h4 id="returns-103">Returns</h4>
3875
3906
  <p><code>void</code></p>
3876
3907
  <hr>
3877
3908
  <p><a id="rtdbonvalue"></a></p>
@@ -3895,7 +3926,7 @@ and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays
3895
3926
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3896
3927
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
3897
3928
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
3898
- <h4 id="parameters-86">Parameters</h4>
3929
+ <h4 id="parameters-87">Parameters</h4>
3899
3930
  <div class="table-scroll">
3900
3931
 
3901
3932
 
@@ -3918,7 +3949,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3918
3949
 
3919
3950
 
3920
3951
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>r</code></td><td align="left"><a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a></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>error?</code></td><td align="left">(<code>err</code>: <code>unknown</code>) => <code>void</code></td></tr></tbody></table></div>
3921
- <h4 id="returns-103">Returns</h4>
3952
+ <h4 id="returns-104">Returns</h4>
3922
3953
  <p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
3923
3954
  <hr>
3924
3955
  <p><a id="rtdbpush"></a></p>
@@ -3939,7 +3970,7 @@ and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays
3939
3970
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3940
3971
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
3941
3972
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
3942
- <h4 id="parameters-87">Parameters</h4>
3973
+ <h4 id="parameters-88">Parameters</h4>
3943
3974
  <div class="table-scroll">
3944
3975
 
3945
3976
 
@@ -3958,7 +3989,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3958
3989
 
3959
3990
 
3960
3991
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>r</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>
3961
- <h4 id="returns-104">Returns</h4>
3992
+ <h4 id="returns-105">Returns</h4>
3962
3993
  <p><a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a> &#x26; <code>PromiseLike</code>&#x3C;<a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a>></p>
3963
3994
  <hr>
3964
3995
  <p><a id="rtdbref"></a></p>
@@ -3979,7 +4010,7 @@ and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays
3979
4010
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3980
4011
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
3981
4012
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
3982
- <h4 id="parameters-88">Parameters</h4>
4013
+ <h4 id="parameters-89">Parameters</h4>
3983
4014
  <div class="table-scroll">
3984
4015
 
3985
4016
 
@@ -3998,7 +4029,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
3998
4029
 
3999
4030
 
4000
4031
  <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>
4001
- <h4 id="returns-105">Returns</h4>
4032
+ <h4 id="returns-106">Returns</h4>
4002
4033
  <p><a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a></p>
4003
4034
  <hr>
4004
4035
  <p><a id="rtdbremove"></a></p>
@@ -4019,7 +4050,7 @@ and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays
4019
4050
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4020
4051
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4021
4052
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4022
- <h4 id="parameters-89">Parameters</h4>
4053
+ <h4 id="parameters-90">Parameters</h4>
4023
4054
  <div class="table-scroll">
4024
4055
 
4025
4056
 
@@ -4034,7 +4065,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4034
4065
 
4035
4066
 
4036
4067
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>r</code></td><td align="left"><a href="#rtdbrefhandle"><code>RtdbRefHandle</code></a></td></tr></tbody></table></div>
4037
- <h4 id="returns-106">Returns</h4>
4068
+ <h4 id="returns-107">Returns</h4>
4038
4069
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4039
4070
  <hr>
4040
4071
  <p><a id="rtdbservertimestamp"></a></p>
@@ -4056,7 +4087,7 @@ and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays
4056
4087
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4057
4088
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4058
4089
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4059
- <h4 id="returns-107">Returns</h4>
4090
+ <h4 id="returns-108">Returns</h4>
4060
4091
  <pre class="astro-code 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>
4061
4092
  <span class="line"><span style="color:#ABB2BF">}</span></span></code></pre>
4062
4093
  <hr>
@@ -4078,7 +4109,7 @@ and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays
4078
4109
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4079
4110
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4080
4111
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4081
- <h4 id="parameters-90">Parameters</h4>
4112
+ <h4 id="parameters-91">Parameters</h4>
4082
4113
  <div class="table-scroll">
4083
4114
 
4084
4115
 
@@ -4097,7 +4128,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4097
4128
 
4098
4129
 
4099
4130
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>r</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>
4100
- <h4 id="returns-108">Returns</h4>
4131
+ <h4 id="returns-109">Returns</h4>
4101
4132
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4102
4133
  <hr>
4103
4134
  <p><a id="rtdbupdate"></a></p>
@@ -4118,7 +4149,7 @@ and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays
4118
4149
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4119
4150
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4120
4151
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4121
- <h4 id="parameters-91">Parameters</h4>
4152
+ <h4 id="parameters-92">Parameters</h4>
4122
4153
  <div class="table-scroll">
4123
4154
 
4124
4155
 
@@ -4137,7 +4168,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4137
4168
 
4138
4169
 
4139
4170
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>r</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>
4140
- <h4 id="returns-109">Returns</h4>
4171
+ <h4 id="returns-110">Returns</h4>
4141
4172
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4142
4173
  <hr>
4143
4174
  <p><a id="runtransaction"></a></p>
@@ -4177,7 +4208,7 @@ on conflict rather than surfacing the error immediately.</p>
4177
4208
 
4178
4209
 
4179
4210
  <table><thead><tr><th align="left">Type Parameter</th></tr></thead><tbody><tr><td align="left"><code>R</code></td></tr></tbody></table></div>
4180
- <h4 id="parameters-92">Parameters</h4>
4211
+ <h4 id="parameters-93">Parameters</h4>
4181
4212
  <div class="table-scroll">
4182
4213
 
4183
4214
 
@@ -4196,14 +4227,14 @@ on conflict rather than surfacing the error immediately.</p>
4196
4227
 
4197
4228
 
4198
4229
  <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>
4199
- <h4 id="returns-110">Returns</h4>
4230
+ <h4 id="returns-111">Returns</h4>
4200
4231
  <p><code>Promise</code>&#x3C;<code>R</code>></p>
4201
4232
  <hr>
4202
4233
  <p><a id="saveworkerbranch"></a></p>
4203
4234
  <h3 id="saveworkerbranch">saveWorkerBranch()</h3>
4204
4235
  <pre class="astro-code 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>
4205
4236
  <p>Phase 3: save the live sandbox as a named branch (a saved state bundle).</p>
4206
- <h4 id="parameters-93">Parameters</h4>
4237
+ <h4 id="parameters-94">Parameters</h4>
4207
4238
  <div class="table-scroll">
4208
4239
 
4209
4240
 
@@ -4222,7 +4253,7 @@ on conflict rather than surfacing the error immediately.</p>
4222
4253
 
4223
4254
 
4224
4255
  <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>
4225
- <h4 id="returns-111">Returns</h4>
4256
+ <h4 id="returns-112">Returns</h4>
4226
4257
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4227
4258
  <hr>
4228
4259
  <p><a id="servertimestamp"></a></p>
@@ -4243,7 +4274,7 @@ and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays
4243
4274
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4244
4275
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4245
4276
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4246
- <h4 id="returns-112">Returns</h4>
4277
+ <h4 id="returns-113">Returns</h4>
4247
4278
  <p><code>SentinelMarker</code></p>
4248
4279
  <hr>
4249
4280
  <p><a id="setdatabaserules"></a></p>
@@ -4267,7 +4298,7 @@ and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays
4267
4298
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4268
4299
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4269
4300
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4270
- <h4 id="parameters-94">Parameters</h4>
4301
+ <h4 id="parameters-95">Parameters</h4>
4271
4302
  <div class="table-scroll">
4272
4303
 
4273
4304
 
@@ -4286,7 +4317,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4286
4317
 
4287
4318
 
4288
4319
  <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>
4289
- <h4 id="returns-113">Returns</h4>
4320
+ <h4 id="returns-114">Returns</h4>
4290
4321
  <p><code>Promise</code>&#x3C;{
4291
4322
  <code>messages</code>: <code>unknown</code>[];
4292
4323
  <code>ok</code>: <code>boolean</code>;
@@ -4316,7 +4347,7 @@ and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays
4316
4347
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4317
4348
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4318
4349
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4319
- <h4 id="parameters-95">Parameters</h4>
4350
+ <h4 id="parameters-96">Parameters</h4>
4320
4351
  <div class="table-scroll">
4321
4352
 
4322
4353
 
@@ -4347,7 +4378,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4347
4378
 
4348
4379
 
4349
4380
  <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>
4350
- <h4 id="returns-114">Returns</h4>
4381
+ <h4 id="returns-115">Returns</h4>
4351
4382
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4352
4383
  <hr>
4353
4384
  <p><a id="setfirestorerules"></a></p>
@@ -4372,7 +4403,7 @@ and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays
4372
4403
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4373
4404
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4374
4405
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4375
- <h4 id="parameters-96">Parameters</h4>
4406
+ <h4 id="parameters-97">Parameters</h4>
4376
4407
  <div class="table-scroll">
4377
4408
 
4378
4409
 
@@ -4391,7 +4422,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4391
4422
 
4392
4423
 
4393
4424
  <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>
4394
- <h4 id="returns-115">Returns</h4>
4425
+ <h4 id="returns-116">Returns</h4>
4395
4426
  <p><code>Promise</code>&#x3C;{
4396
4427
  <code>messages</code>: <code>unknown</code>[];
4397
4428
  <code>ok</code>: <code>boolean</code>;
@@ -4400,7 +4431,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4400
4431
  <hr>
4401
4432
  <p><a id="setlens"></a></p>
4402
4433
  <h3 id="setlens">setLens()</h3>
4403
- <pre class="astro-code 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"> setLens</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">lens</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">any</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
4434
+ <pre class="astro-code 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"> setLens</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">lens</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">AuthLens</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
4404
4435
  <p>Set the default auth lens applied to subsequent Firestore DATA ops from this
4405
4436
  client (Pyric Studio). Pass <code>{ mode: 'as', uid }</code> to read/write AS a user
4406
4437
  (rules apply), <code>{ mode: 'admin' }</code> for the admin lens, or
@@ -4408,7 +4439,7 @@ client (Pyric Studio). Pass <code>{ mode: 'as', uid }</code> to read/write AS a
4408
4439
  <p>The lens is process-wide for this client module (one served page = one
4409
4440
  worker port), mirroring how Studio drives a single active identity at a time.
4410
4441
  Auth ops are unaffected — they always operate the real session.</p>
4411
- <h4 id="parameters-97">Parameters</h4>
4442
+ <h4 id="parameters-98">Parameters</h4>
4412
4443
  <div class="table-scroll">
4413
4444
 
4414
4445
 
@@ -4422,15 +4453,15 @@ Auth ops are unaffected — they always operate the real session.</p>
4422
4453
 
4423
4454
 
4424
4455
 
4425
- <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"><code>any</code></td></tr></tbody></table></div>
4426
- <h4 id="returns-116">Returns</h4>
4456
+ <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>
4457
+ <h4 id="returns-117">Returns</h4>
4427
4458
  <p><code>void</code></p>
4428
4459
  <hr>
4429
4460
  <p><a id="setopissuer"></a></p>
4430
4461
  <h3 id="setopissuer">setOpIssuer()</h3>
4431
4462
  <pre class="astro-code 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>
4432
4463
  <p>Declare who issues the ops this client module constructs. See _opIssuer.</p>
4433
- <h4 id="parameters-98">Parameters</h4>
4464
+ <h4 id="parameters-99">Parameters</h4>
4434
4465
  <div class="table-scroll">
4435
4466
 
4436
4467
 
@@ -4445,7 +4476,7 @@ Auth ops are unaffected — they always operate the real session.</p>
4445
4476
 
4446
4477
 
4447
4478
  <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>
4448
- <h4 id="returns-117">Returns</h4>
4479
+ <h4 id="returns-118">Returns</h4>
4449
4480
  <p><code>void</code></p>
4450
4481
  <hr>
4451
4482
  <p><a id="setpersistence"></a></p>
@@ -4455,7 +4486,7 @@ Auth ops are unaffected — they always operate the real session.</p>
4455
4486
  effective persistence is CLIENT-side (#754): the entry adapter mirrors the
4456
4487
  mode into the page’s SessionStore, which decides where — or whether — this
4457
4488
  tab’s session uid is stored for reload restore.</p>
4458
- <h4 id="parameters-99">Parameters</h4>
4489
+ <h4 id="parameters-100">Parameters</h4>
4459
4490
  <div class="table-scroll">
4460
4491
 
4461
4492
 
@@ -4474,7 +4505,7 @@ tab’s session uid is stored for reload restore.</p>
4474
4505
 
4475
4506
 
4476
4507
  <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>
4477
- <h4 id="returns-118">Returns</h4>
4508
+ <h4 id="returns-119">Returns</h4>
4478
4509
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4479
4510
  <hr>
4480
4511
  <p><a id="setproviderconfig"></a></p>
@@ -4498,7 +4529,7 @@ and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays
4498
4529
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4499
4530
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4500
4531
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4501
- <h4 id="parameters-100">Parameters</h4>
4532
+ <h4 id="parameters-101">Parameters</h4>
4502
4533
  <div class="table-scroll">
4503
4534
 
4504
4535
 
@@ -4521,7 +4552,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4521
4552
 
4522
4553
 
4523
4554
  <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>
4524
- <h4 id="returns-119">Returns</h4>
4555
+ <h4 id="returns-120">Returns</h4>
4525
4556
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4526
4557
  <hr>
4527
4558
  <p><a id="setrules"></a></p>
@@ -4532,7 +4563,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4532
4563
  <p>Deploy new rules to the worker’s sandbox. Active onSnapshot listeners
4533
4564
  that were allowed by the old rules may start receiving error callbacks
4534
4565
  if the new rules deny them.</p>
4535
- <h4 id="parameters-101">Parameters</h4>
4566
+ <h4 id="parameters-102">Parameters</h4>
4536
4567
  <div class="table-scroll">
4537
4568
 
4538
4569
 
@@ -4551,7 +4582,7 @@ if the new rules deny them.</p>
4551
4582
 
4552
4583
 
4553
4584
  <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>
4554
- <h4 id="returns-120">Returns</h4>
4585
+ <h4 id="returns-121">Returns</h4>
4555
4586
  <p><code>Promise</code>&#x3C;{
4556
4587
  <code>warnings</code>: <code>unknown</code>[];
4557
4588
  }></p>
@@ -4574,7 +4605,7 @@ and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays
4574
4605
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4575
4606
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4576
4607
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4577
- <h4 id="parameters-102">Parameters</h4>
4608
+ <h4 id="parameters-103">Parameters</h4>
4578
4609
  <div class="table-scroll">
4579
4610
 
4580
4611
 
@@ -4589,7 +4620,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4589
4620
 
4590
4621
 
4591
4622
  <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>
4592
- <h4 id="returns-121">Returns</h4>
4623
+ <h4 id="returns-122">Returns</h4>
4593
4624
  <p><code>Promise</code>&#x3C;<a href="#clientusercredential"><code>ClientUserCredential</code></a>></p>
4594
4625
  <hr>
4595
4626
  <p><a id="signinwithemailandpassword"></a></p>
@@ -4613,7 +4644,7 @@ and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays
4613
4644
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4614
4645
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4615
4646
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4616
- <h4 id="parameters-103">Parameters</h4>
4647
+ <h4 id="parameters-104">Parameters</h4>
4617
4648
  <div class="table-scroll">
4618
4649
 
4619
4650
 
@@ -4636,7 +4667,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4636
4667
 
4637
4668
 
4638
4669
  <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>
4639
- <h4 id="returns-122">Returns</h4>
4670
+ <h4 id="returns-123">Returns</h4>
4640
4671
  <p><code>Promise</code>&#x3C;<a href="#clientusercredential"><code>ClientUserCredential</code></a>></p>
4641
4672
  <hr>
4642
4673
  <p><a id="signout"></a></p>
@@ -4657,7 +4688,7 @@ and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays
4657
4688
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4658
4689
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4659
4690
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4660
- <h4 id="parameters-104">Parameters</h4>
4691
+ <h4 id="parameters-105">Parameters</h4>
4661
4692
  <div class="table-scroll">
4662
4693
 
4663
4694
 
@@ -4672,7 +4703,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4672
4703
 
4673
4704
 
4674
4705
  <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>
4675
- <h4 id="returns-123">Returns</h4>
4706
+ <h4 id="returns-124">Returns</h4>
4676
4707
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4677
4708
  <hr>
4678
4709
  <p><a id="startafter"></a></p>
@@ -4693,7 +4724,7 @@ and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays
4693
4724
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4694
4725
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4695
4726
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4696
- <h4 id="parameters-105">Parameters</h4>
4727
+ <h4 id="parameters-106">Parameters</h4>
4697
4728
  <div class="table-scroll">
4698
4729
 
4699
4730
 
@@ -4708,7 +4739,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4708
4739
 
4709
4740
 
4710
4741
  <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>
4711
- <h4 id="returns-124">Returns</h4>
4742
+ <h4 id="returns-125">Returns</h4>
4712
4743
  <p><code>QueryConstraintHandle</code></p>
4713
4744
  <hr>
4714
4745
  <p><a id="startat"></a></p>
@@ -4729,7 +4760,7 @@ and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays
4729
4760
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4730
4761
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4731
4762
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4732
- <h4 id="parameters-106">Parameters</h4>
4763
+ <h4 id="parameters-107">Parameters</h4>
4733
4764
  <div class="table-scroll">
4734
4765
 
4735
4766
 
@@ -4744,7 +4775,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4744
4775
 
4745
4776
 
4746
4777
  <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>
4747
- <h4 id="returns-125">Returns</h4>
4778
+ <h4 id="returns-126">Returns</h4>
4748
4779
  <p><code>QueryConstraintHandle</code></p>
4749
4780
  <hr>
4750
4781
  <p><a id="startpresence"></a></p>
@@ -4752,7 +4783,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4752
4783
  <pre class="astro-code 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>
4753
4784
  <p>Register this page with the worker and keep the lease alive until
4754
4785
  <a href="#stop">PresenceSession.stop</a> or <code>pagehide</code>.</p>
4755
- <h4 id="parameters-107">Parameters</h4>
4786
+ <h4 id="parameters-108">Parameters</h4>
4756
4787
  <div class="table-scroll">
4757
4788
 
4758
4789
 
@@ -4767,7 +4798,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4767
4798
 
4768
4799
 
4769
4800
  <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>
4770
- <h4 id="returns-126">Returns</h4>
4801
+ <h4 id="returns-127">Returns</h4>
4771
4802
  <p><a href="#presencesession"><code>PresenceSession</code></a></p>
4772
4803
  <hr>
4773
4804
  <p><a id="subscribeevents"></a></p>
@@ -4780,7 +4811,7 @@ event. Returns an unsubscribe that deregisters on the worker.</p>
4780
4811
  <p>This is the live counterpart to <code>sandbox.onEvent</code> + an initial <code>history()</code>
4781
4812
  fold, collapsed into one subscription so a late subscriber never misses the
4782
4813
  backlog.</p>
4783
- <h4 id="parameters-108">Parameters</h4>
4814
+ <h4 id="parameters-109">Parameters</h4>
4784
4815
  <div class="table-scroll">
4785
4816
 
4786
4817
 
@@ -4798,8 +4829,8 @@ backlog.</p>
4798
4829
 
4799
4830
 
4800
4831
 
4801
- <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 <code>SandboxEvent</code>[]) => <code>void</code></td></tr></tbody></table></div>
4802
- <h4 id="returns-127">Returns</h4>
4832
+ <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>
4833
+ <h4 id="returns-128">Returns</h4>
4803
4834
  <p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
4804
4835
  <hr>
4805
4836
  <p><a id="subscribepresence"></a></p>
@@ -4807,7 +4838,7 @@ backlog.</p>
4807
4838
  <pre class="astro-code 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>
4808
4839
  <p>Subscribe to the worker’s authoritative presence snapshot. The callback
4809
4840
  fires immediately with the current snapshot, then on every change.</p>
4810
- <h4 id="parameters-109">Parameters</h4>
4841
+ <h4 id="parameters-110">Parameters</h4>
4811
4842
  <div class="table-scroll">
4812
4843
 
4813
4844
 
@@ -4826,14 +4857,14 @@ fires immediately with the current snapshot, then on every change.</p>
4826
4857
 
4827
4858
 
4828
4859
  <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>
4829
- <h4 id="returns-128">Returns</h4>
4860
+ <h4 id="returns-129">Returns</h4>
4830
4861
  <p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
4831
4862
  <hr>
4832
4863
  <p><a id="sum"></a></p>
4833
4864
  <h3 id="sum">sum()</h3>
4834
4865
  <pre class="astro-code 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>
4835
4866
  <p>Factory: sum-of-<code>field</code> aggregate. Mirrors <code>pyric/firestore</code>’s <code>sum()</code>.</p>
4836
- <h4 id="parameters-110">Parameters</h4>
4867
+ <h4 id="parameters-111">Parameters</h4>
4837
4868
  <div class="table-scroll">
4838
4869
 
4839
4870
 
@@ -4848,14 +4879,14 @@ fires immediately with the current snapshot, then on every change.</p>
4848
4879
 
4849
4880
 
4850
4881
  <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>
4851
- <h4 id="returns-129">Returns</h4>
4882
+ <h4 id="returns-130">Returns</h4>
4852
4883
  <p><code>AggregateFieldDescriptor</code></p>
4853
4884
  <hr>
4854
4885
  <p><a id="switchworkerbranch"></a></p>
4855
4886
  <h3 id="switchworkerbranch">switchWorkerBranch()</h3>
4856
4887
  <pre class="astro-code 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>
4857
4888
  <p>Phase 3 (clobber): switch the live sandbox to a named branch’s state.</p>
4858
- <h4 id="parameters-111">Parameters</h4>
4889
+ <h4 id="parameters-112">Parameters</h4>
4859
4890
  <div class="table-scroll">
4860
4891
 
4861
4892
 
@@ -4874,7 +4905,7 @@ fires immediately with the current snapshot, then on every change.</p>
4874
4905
 
4875
4906
 
4876
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>name</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
4877
- <h4 id="returns-130">Returns</h4>
4908
+ <h4 id="returns-131">Returns</h4>
4878
4909
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4879
4910
  <hr>
4880
4911
  <p><a id="updatedoc"></a></p>
@@ -4895,7 +4926,7 @@ and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays
4895
4926
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4896
4927
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4897
4928
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4898
- <h4 id="parameters-112">Parameters</h4>
4929
+ <h4 id="parameters-113">Parameters</h4>
4899
4930
  <div class="table-scroll">
4900
4931
 
4901
4932
 
@@ -4914,21 +4945,21 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4914
4945
 
4915
4946
 
4916
4947
  <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>
4917
- <h4 id="returns-131">Returns</h4>
4948
+ <h4 id="returns-132">Returns</h4>
4918
4949
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4919
4950
  <hr>
4920
4951
  <p><a id="uploadbytes"></a></p>
4921
4952
  <h3 id="uploadbytes">uploadBytes()</h3>
4922
4953
  <pre class="astro-code 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"> uploadBytes</span><span style="color:#ABB2BF">(</span></span>
4923
4954
  <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>
4924
- <span class="line"><span style="color:#E06C75;font-style:italic"> data</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Blob</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>
4955
+ <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>
4925
4956
  <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>
4926
4957
  <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>
4927
4958
  <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>
4928
4959
  <span class="line"><span style="color:#ABB2BF">}>;</span></span></code></pre>
4929
4960
  <p>Upload bytes at the reference’s path (replaces existing content).
4930
4961
  Mirrors <code>pyric/storage</code>’s <code>uploadBytes</code> result shape.</p>
4931
- <h4 id="parameters-113">Parameters</h4>
4962
+ <h4 id="parameters-114">Parameters</h4>
4932
4963
  <div class="table-scroll">
4933
4964
 
4934
4965
 
@@ -4950,10 +4981,10 @@ Mirrors <code>pyric/storage</code>’s <code>uploadBytes</code> result shape.</p
4950
4981
 
4951
4982
 
4952
4983
 
4953
- <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>Blob</code> | <code>ArrayBuffer</code> | <code>Uint8Array</code>&#x3C;<code>ArrayBufferLike</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>
4954
- <h4 id="returns-132">Returns</h4>
4984
+ <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>
4985
+ <h4 id="returns-133">Returns</h4>
4955
4986
  <p><code>Promise</code>&#x3C;{
4956
- <code>metadata</code>: <code>FullMetadata</code>;
4987
+ <code>metadata</code>: <a href="/docs/pyric-storage-reference-api/#fullmetadata"><code>FullMetadata</code></a>;
4957
4988
  <code>ref</code>: <a href="#clientstoragereference"><code>ClientStorageReference</code></a>;
4958
4989
  }></p>
4959
4990
  <hr>
@@ -4978,7 +5009,7 @@ and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays
4978
5009
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
4979
5010
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
4980
5011
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
4981
- <h4 id="parameters-114">Parameters</h4>
5012
+ <h4 id="parameters-115">Parameters</h4>
4982
5013
  <div class="table-scroll">
4983
5014
 
4984
5015
 
@@ -5001,7 +5032,7 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
5001
5032
 
5002
5033
 
5003
5034
  <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>
5004
- <h4 id="returns-133">Returns</h4>
5035
+ <h4 id="returns-134">Returns</h4>
5005
5036
  <p><code>QueryConstraintHandle</code></p>
5006
5037
  <hr>
5007
5038
  <p><a id="writebatch"></a></p>
@@ -5022,7 +5053,7 @@ and type-only <code>pyric/sandbox</code> (erased at build), so this entry stays
5022
5053
  the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
5023
5054
  <p>Exposed by <code>@pyric/cli</code>’s <code>./serve/worker</code> package export so Studio can
5024
5055
  <code>import { getFirestore, subscribeEvents, setLens } from '@pyric/cli/serve/worker'</code> and reach the live SharedWorker backend.</p>
5025
- <h4 id="parameters-115">Parameters</h4>
5056
+ <h4 id="parameters-116">Parameters</h4>
5026
5057
  <div class="table-scroll">
5027
5058
 
5028
5059
 
@@ -5037,5 +5068,5 @@ the ~10 MB rules/sandbox engine — safe to import from any browser app.</p>
5037
5068
 
5038
5069
 
5039
5070
  <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>
5040
- <h4 id="returns-134">Returns</h4>
5041
- <p><a href="#clientwritebatch"><code>ClientWriteBatch</code></a></p> </article> </main> <aside class="doc-toc api-symbols" aria-label="API symbols"> <h2 class="doc-toc-heading">Symbols</h2> <input class="api-symbol-filter" type="search" placeholder="Filter symbols" aria-label="Filter API symbols" data-api-symbol-filter> <div class="api-symbol-groups" data-api-symbol-groups> <section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#interfaces"> Interfaces </a> <ul> <li data-api-symbol="clientauth"> <a href="#clientauth">ClientAuth</a> </li><li data-api-symbol="clientdb"> <a href="#clientdb">ClientDb</a> </li><li data-api-symbol="clientdocsnapshot"> <a href="#clientdocsnapshot">ClientDocSnapshot</a> </li><li data-api-symbol="clientfirebasestorage"> <a href="#clientfirebasestorage">ClientFirebaseStorage</a> </li><li data-api-symbol="clientquerysnapshot"> <a href="#clientquerysnapshot">ClientQuerySnapshot</a> </li><li data-api-symbol="clientrtdb"> <a href="#clientrtdb">ClientRtdb</a> </li><li data-api-symbol="clientsettablemetadata"> <a href="#clientsettablemetadata">ClientSettableMetadata</a> </li><li data-api-symbol="clientstoragereference"> <a href="#clientstoragereference">ClientStorageReference</a> </li><li data-api-symbol="clienttransaction"> <a href="#clienttransaction">ClientTransaction</a> </li><li data-api-symbol="clientuser"> <a href="#clientuser">ClientUser</a> </li><li data-api-symbol="clientusercredential"> <a href="#clientusercredential">ClientUserCredential</a> </li><li data-api-symbol="clientwritebatch"> <a href="#clientwritebatch">ClientWriteBatch</a> </li><li data-api-symbol="collrefhandle"> <a href="#collrefhandle">CollRefHandle</a> </li><li data-api-symbol="docrefhandle"> <a href="#docrefhandle">DocRefHandle</a> </li><li data-api-symbol="presencesession"> <a href="#presencesession">PresenceSession</a> </li><li data-api-symbol="presencesnapshot"> <a href="#presencesnapshot">PresenceSnapshot</a> </li><li data-api-symbol="queryhandle"> <a href="#queryhandle">QueryHandle</a> </li><li data-api-symbol="resolvedidentity"> <a href="#resolvedidentity">ResolvedIdentity</a> </li><li data-api-symbol="rtdbdatasnapshot"> <a href="#rtdbdatasnapshot">RtdbDataSnapshot</a> </li><li data-api-symbol="rtdbrefhandle"> <a href="#rtdbrefhandle">RtdbRefHandle</a> </li><li data-api-symbol="serializedidtokenresult"> <a href="#serializedidtokenresult">SerializedIdTokenResult</a> </li><li data-api-symbol="serializeduser"> <a href="#serializeduser">SerializedUser</a> </li><li data-api-symbol="serializedusercredential"> <a href="#serializedusercredential">SerializedUserCredential</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#type-aliases"> Type Aliases </a> <ul> <li data-api-symbol="anyhandle"> <a href="#anyhandle">AnyHandle</a> </li><li data-api-symbol="authpersistencemode"> <a href="#authpersistencemode">AuthPersistenceMode</a> </li><li data-api-symbol="presenceclientkind"> <a href="#presenceclientkind">PresenceClientKind</a> </li><li data-api-symbol="presencevisibility"> <a href="#presencevisibility">PresenceVisibility</a> </li><li data-api-symbol="unsubscribe()"> <a href="#unsubscribe">Unsubscribe()</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#variables"> Variables </a> <ul> <li data-api-symbol="browserlocalpersistence"> <a href="#browserlocalpersistence">browserLocalPersistence</a> </li><li data-api-symbol="browsersessionpersistence"> <a href="#browsersessionpersistence">browserSessionPersistence</a> </li><li data-api-symbol="inmemorypersistence"> <a href="#inmemorypersistence">inMemoryPersistence</a> </li><li data-api-symbol="presence_heartbeat_interval_ms"> <a href="#presence_heartbeat_interval_ms">PRESENCE_HEARTBEAT_INTERVAL_MS</a> </li><li data-api-symbol="presence_stale_ms"> <a href="#presence_stale_ms">PRESENCE_STALE_MS</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#functions"> Functions </a> <ul> <li data-api-symbol="acceptprovidercredential()"> <a href="#acceptprovidercredential">acceptProviderCredential()</a> </li><li data-api-symbol="adddoc()"> <a href="#adddoc">addDoc()</a> </li><li data-api-symbol="adminclearusers()"> <a href="#adminclearusers">adminClearUsers()</a> </li><li data-api-symbol="admincreateuser()"> <a href="#admincreateuser">adminCreateUser()</a> </li><li data-api-symbol="admindeletedocument()"> <a href="#admindeletedocument">adminDeleteDocument()</a> </li><li data-api-symbol="admindeletertdbvalue()"> <a href="#admindeletertdbvalue">adminDeleteRtdbValue()</a> </li><li data-api-symbol="admindeleteuser()"> <a href="#admindeleteuser">adminDeleteUser()</a> </li><li data-api-symbol="admingetdocument()"> <a href="#admingetdocument">adminGetDocument()</a> </li><li data-api-symbol="adminlistdocuments()"> <a href="#adminlistdocuments">adminListDocuments()</a> </li><li data-api-symbol="adminreadrtdbstate()"> <a href="#adminreadrtdbstate">adminReadRtdbState()</a> </li><li data-api-symbol="adminreadstate()"> <a href="#adminreadstate">adminReadState()</a> </li><li data-api-symbol="adminsetdocument()"> <a href="#adminsetdocument">adminSetDocument()</a> </li><li data-api-symbol="adminsetrtdbvalue()"> <a href="#adminsetrtdbvalue">adminSetRtdbValue()</a> </li><li data-api-symbol="adminsubscribertdbvalue()"> <a href="#adminsubscribertdbvalue">adminSubscribeRtdbValue()</a> </li><li data-api-symbol="adminupdatertdbvalue()"> <a href="#adminupdatertdbvalue">adminUpdateRtdbValue()</a> </li><li data-api-symbol="adminupdateuser()"> <a href="#adminupdateuser">adminUpdateUser()</a> </li><li data-api-symbol="and()"> <a href="#and">and()</a> </li><li data-api-symbol="arrayremove()"> <a href="#arrayremove">arrayRemove()</a> </li><li data-api-symbol="arrayunion()"> <a href="#arrayunion">arrayUnion()</a> </li><li data-api-symbol="average()"> <a href="#average">average()</a> </li><li data-api-symbol="calltool()"> <a href="#calltool">callTool()</a> </li><li data-api-symbol="collection()"> <a href="#collection">collection()</a> </li><li data-api-symbol="collectiongroup()"> <a href="#collectiongroup">collectionGroup()</a> </li><li data-api-symbol="connectauthemulator()"> <a href="#connectauthemulator">connectAuthEmulator()</a> </li><li data-api-symbol="count()"> <a href="#count">count()</a> </li><li data-api-symbol="createuserwithemailandpassword()"> <a href="#createuserwithemailandpassword">createUserWithEmailAndPassword()</a> </li><li data-api-symbol="deletedoc()"> <a href="#deletedoc">deleteDoc()</a> </li><li data-api-symbol="deletefield()"> <a href="#deletefield">deleteField()</a> </li><li data-api-symbol="deleteobject()"> <a href="#deleteobject">deleteObject()</a> </li><li data-api-symbol="deleteworkerbranch()"> <a href="#deleteworkerbranch">deleteWorkerBranch()</a> </li><li data-api-symbol="doc()"> <a href="#doc">doc()</a> </li><li data-api-symbol="endat()"> <a href="#endat">endAt()</a> </li><li data-api-symbol="endbefore()"> <a href="#endbefore">endBefore()</a> </li><li data-api-symbol="eventhistory()"> <a href="#eventhistory">eventHistory()</a> </li><li data-api-symbol="exportworkerstate()"> <a href="#exportworkerstate">exportWorkerState()</a> </li><li data-api-symbol="getactiverules()"> <a href="#getactiverules">getActiveRules()</a> </li><li data-api-symbol="getaggregatefromserver()"> <a href="#getaggregatefromserver">getAggregateFromServer()</a> </li><li data-api-symbol="getauth()"> <a href="#getauth">getAuth()</a> </li><li data-api-symbol="getblob()"> <a href="#getblob">getBlob()</a> </li><li data-api-symbol="getbytes()"> <a href="#getbytes">getBytes()</a> </li><li data-api-symbol="getcountfromserver()"> <a href="#getcountfromserver">getCountFromServer()</a> </li><li data-api-symbol="getdoc()"> <a href="#getdoc">getDoc()</a> </li><li data-api-symbol="getdocs()"> <a href="#getdocs">getDocs()</a> </li><li data-api-symbol="getdownloadurl()"> <a href="#getdownloadurl">getDownloadURL()</a> </li><li data-api-symbol="getfirestore()"> <a href="#getfirestore">getFirestore()</a> </li><li data-api-symbol="getidtoken()"> <a href="#getidtoken-1">getIdToken()</a> </li><li data-api-symbol="getidtokenresult()"> <a href="#getidtokenresult-1">getIdTokenResult()</a> </li><li data-api-symbol="getlens()"> <a href="#getlens">getLens()</a> </li><li data-api-symbol="getmetadata()"> <a href="#getmetadata">getMetadata()</a> </li><li data-api-symbol="getproviderconfig()"> <a href="#getproviderconfig">getProviderConfig()</a> </li><li data-api-symbol="getrulesstatus()"> <a href="#getrulesstatus">getRulesStatus()</a> </li><li data-api-symbol="getsnapshot()"> <a href="#getsnapshot">getSnapshot()</a> </li><li data-api-symbol="getstorage()"> <a href="#getstorage">getStorage()</a> </li><li data-api-symbol="getworkerinstanceid()"> <a href="#getworkerinstanceid">getWorkerInstanceId()</a> </li><li data-api-symbol="getworkerversion()"> <a href="#getworkerversion">getWorkerVersion()</a> </li><li data-api-symbol="importworkerstate()"> <a href="#importworkerstate">importWorkerState()</a> </li><li data-api-symbol="increment()"> <a href="#increment">increment()</a> </li><li data-api-symbol="limit()"> <a href="#limit">limit()</a> </li><li data-api-symbol="limittolast()"> <a href="#limittolast">limitToLast()</a> </li><li data-api-symbol="listall()"> <a href="#listall">listAll()</a> </li><li data-api-symbol="listrootcollections()"> <a href="#listrootcollections">listRootCollections()</a> </li><li data-api-symbol="listsubcollections()"> <a href="#listsubcollections">listSubcollections()</a> </li><li data-api-symbol="listusers()"> <a href="#listusers">listUsers()</a> </li><li data-api-symbol="listworkerbranches()"> <a href="#listworkerbranches">listWorkerBranches()</a> </li><li data-api-symbol="mintpresenceclientid()"> <a href="#mintpresenceclientid">mintPresenceClientId()</a> </li><li data-api-symbol="onauthstatechanged()"> <a href="#onauthstatechanged">onAuthStateChanged()</a> </li><li data-api-symbol="onidtokenchanged()"> <a href="#onidtokenchanged">onIdTokenChanged()</a> </li><li data-api-symbol="onsnapshot()"> <a href="#onsnapshot">onSnapshot()</a> </li><li data-api-symbol="or()"> <a href="#or">or()</a> </li><li data-api-symbol="orderby()"> <a href="#orderby">orderBy()</a> </li><li data-api-symbol="query()"> <a href="#query">query()</a> </li><li data-api-symbol="ref()"> <a href="#ref">ref()</a> </li><li data-api-symbol="relayworkerop()"> <a href="#relayworkerop">relayWorkerOp()</a> </li><li data-api-symbol="relayworkersub()"> <a href="#relayworkersub">relayWorkerSub()</a> </li><li data-api-symbol="rtdbchild()"> <a href="#rtdbchild">rtdbChild()</a> </li><li data-api-symbol="rtdbconnectdatabaseemulator()"> <a href="#rtdbconnectdatabaseemulator">rtdbConnectDatabaseEmulator()</a> </li><li data-api-symbol="rtdbget()"> <a href="#rtdbget">rtdbGet()</a> </li><li data-api-symbol="rtdbgetdatabase()"> <a href="#rtdbgetdatabase">rtdbGetDatabase()</a> </li><li data-api-symbol="rtdboff()"> <a href="#rtdboff">rtdbOff()</a> </li><li data-api-symbol="rtdbonvalue()"> <a href="#rtdbonvalue">rtdbOnValue()</a> </li><li data-api-symbol="rtdbpush()"> <a href="#rtdbpush">rtdbPush()</a> </li><li data-api-symbol="rtdbref()"> <a href="#rtdbref">rtdbRef()</a> </li><li data-api-symbol="rtdbremove()"> <a href="#rtdbremove">rtdbRemove()</a> </li><li data-api-symbol="rtdbservertimestamp()"> <a href="#rtdbservertimestamp">rtdbServerTimestamp()</a> </li><li data-api-symbol="rtdbset()"> <a href="#rtdbset">rtdbSet()</a> </li><li data-api-symbol="rtdbupdate()"> <a href="#rtdbupdate">rtdbUpdate()</a> </li><li data-api-symbol="runtransaction()"> <a href="#runtransaction">runTransaction()</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#multi-tab-correctness--read-set-validation--retry"> MULTI-TAB CORRECTNESS — READ-SET VALIDATION + RETRY </a> <ul> <li data-api-symbol="saveworkerbranch()"> <a href="#saveworkerbranch">saveWorkerBranch()</a> </li><li data-api-symbol="servertimestamp()"> <a href="#servertimestamp">serverTimestamp()</a> </li><li data-api-symbol="setdatabaserules()"> <a href="#setdatabaserules">setDatabaseRules()</a> </li><li data-api-symbol="setdoc()"> <a href="#setdoc">setDoc()</a> </li><li data-api-symbol="setfirestorerules()"> <a href="#setfirestorerules">setFirestoreRules()</a> </li><li data-api-symbol="setlens()"> <a href="#setlens">setLens()</a> </li><li data-api-symbol="setopissuer()"> <a href="#setopissuer">setOpIssuer()</a> </li><li data-api-symbol="setpersistence()"> <a href="#setpersistence">setPersistence()</a> </li><li data-api-symbol="setproviderconfig()"> <a href="#setproviderconfig">setProviderConfig()</a> </li><li data-api-symbol="setrules()"> <a href="#setrules">setRules()</a> </li><li data-api-symbol="signinanonymously()"> <a href="#signinanonymously">signInAnonymously()</a> </li><li data-api-symbol="signinwithemailandpassword()"> <a href="#signinwithemailandpassword">signInWithEmailAndPassword()</a> </li><li data-api-symbol="signout()"> <a href="#signout">signOut()</a> </li><li data-api-symbol="startafter()"> <a href="#startafter">startAfter()</a> </li><li data-api-symbol="startat()"> <a href="#startat">startAt()</a> </li><li data-api-symbol="startpresence()"> <a href="#startpresence">startPresence()</a> </li><li data-api-symbol="subscribeevents()"> <a href="#subscribeevents">subscribeEvents()</a> </li><li data-api-symbol="subscribepresence()"> <a href="#subscribepresence">subscribePresence()</a> </li><li data-api-symbol="sum()"> <a href="#sum">sum()</a> </li><li data-api-symbol="switchworkerbranch()"> <a href="#switchworkerbranch">switchWorkerBranch()</a> </li><li data-api-symbol="updatedoc()"> <a href="#updatedoc">updateDoc()</a> </li><li data-api-symbol="uploadbytes()"> <a href="#uploadbytes">uploadBytes()</a> </li><li data-api-symbol="where()"> <a href="#where">where()</a> </li><li data-api-symbol="writebatch()"> <a href="#writebatch">writeBatch()</a> </li> </ul> </section> <p class="api-symbol-empty" data-api-symbol-empty hidden>No matching symbols</p> </div> </aside> </div> <script type="module">const a=document.querySelector("[data-api-symbol-filter]"),d=[...document.querySelectorAll("[data-api-symbol-group]")],n=document.querySelector("[data-api-symbol-empty]");a?.addEventListener("input",()=>{const t=a.value.trim().toLowerCase();let o=0;for(const i of d){let e=0;i.querySelectorAll("[data-api-symbol]").forEach(l=>{const r=!t||(l.dataset.apiSymbol??"").includes(t);l.hidden=!r,r&&e++}),i.hidden=e===0,o+=e}n&&(n.hidden=o>0)});</script> <script type="module">const s=new Map;document.querySelectorAll('.doc-toc a[href^="#"]').forEach(t=>s.set(decodeURIComponent(t.hash.slice(1)),t));if(s.size>0){const t=new Set,n=()=>{let o=null;for(const e of s.keys())if(t.has(e)){o=e;break}s.forEach((e,c)=>e.classList.toggle("active",c===o))},r=new IntersectionObserver(o=>{for(const e of o)e.isIntersecting?t.add(e.target.id):t.delete(e.target.id);n()},{rootMargin:"-72px 0px -60% 0px"});s.forEach((o,e)=>{const c=document.getElementById(e);c&&r.observe(c)})}</script> <script type="module">document.querySelector('.studio__nav [aria-current="page"]')?.scrollIntoView({block:"nearest",inline:"center"});</script> </body> </html>
5071
+ <h4 id="returns-135">Returns</h4>
5072
+ <p><a href="#clientwritebatch"><code>ClientWriteBatch</code></a></p> </article> </main> <aside class="doc-toc api-symbols" aria-label="API symbols"> <h2 class="doc-toc-heading">Symbols</h2> <input class="api-symbol-filter" type="search" placeholder="Filter symbols" aria-label="Filter API symbols" data-api-symbol-filter> <div class="api-symbol-groups" data-api-symbol-groups> <section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#interfaces"> Interfaces </a> <ul> <li data-api-symbol="clientauth"> <a href="#clientauth">ClientAuth</a> </li><li data-api-symbol="clientdb"> <a href="#clientdb">ClientDb</a> </li><li data-api-symbol="clientdocsnapshot"> <a href="#clientdocsnapshot">ClientDocSnapshot</a> </li><li data-api-symbol="clientfirebasestorage"> <a href="#clientfirebasestorage">ClientFirebaseStorage</a> </li><li data-api-symbol="clientquerysnapshot"> <a href="#clientquerysnapshot">ClientQuerySnapshot</a> </li><li data-api-symbol="clientrtdb"> <a href="#clientrtdb">ClientRtdb</a> </li><li data-api-symbol="clientsettablemetadata"> <a href="#clientsettablemetadata">ClientSettableMetadata</a> </li><li data-api-symbol="clientstoragereference"> <a href="#clientstoragereference">ClientStorageReference</a> </li><li data-api-symbol="clienttransaction"> <a href="#clienttransaction">ClientTransaction</a> </li><li data-api-symbol="clientuser"> <a href="#clientuser">ClientUser</a> </li><li data-api-symbol="clientusercredential"> <a href="#clientusercredential">ClientUserCredential</a> </li><li data-api-symbol="clientwritebatch"> <a href="#clientwritebatch">ClientWriteBatch</a> </li><li data-api-symbol="collrefhandle"> <a href="#collrefhandle">CollRefHandle</a> </li><li data-api-symbol="docrefhandle"> <a href="#docrefhandle">DocRefHandle</a> </li><li data-api-symbol="presencesession"> <a href="#presencesession">PresenceSession</a> </li><li data-api-symbol="presencesnapshot"> <a href="#presencesnapshot">PresenceSnapshot</a> </li><li data-api-symbol="queryhandle"> <a href="#queryhandle">QueryHandle</a> </li><li data-api-symbol="resolvedidentity"> <a href="#resolvedidentity">ResolvedIdentity</a> </li><li data-api-symbol="rtdbdatasnapshot"> <a href="#rtdbdatasnapshot">RtdbDataSnapshot</a> </li><li data-api-symbol="rtdbrefhandle"> <a href="#rtdbrefhandle">RtdbRefHandle</a> </li><li data-api-symbol="serializedidtokenresult"> <a href="#serializedidtokenresult">SerializedIdTokenResult</a> </li><li data-api-symbol="serializeduser"> <a href="#serializeduser">SerializedUser</a> </li><li data-api-symbol="serializedusercredential"> <a href="#serializedusercredential">SerializedUserCredential</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#type-aliases"> Type Aliases </a> <ul> <li data-api-symbol="anyhandle"> <a href="#anyhandle">AnyHandle</a> </li><li data-api-symbol="authpersistencemode"> <a href="#authpersistencemode">AuthPersistenceMode</a> </li><li data-api-symbol="presenceclientkind"> <a href="#presenceclientkind">PresenceClientKind</a> </li><li data-api-symbol="presencevisibility"> <a href="#presencevisibility">PresenceVisibility</a> </li><li data-api-symbol="unsubscribe()"> <a href="#unsubscribe">Unsubscribe()</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#variables"> Variables </a> <ul> <li data-api-symbol="browserlocalpersistence"> <a href="#browserlocalpersistence">browserLocalPersistence</a> </li><li data-api-symbol="browsersessionpersistence"> <a href="#browsersessionpersistence">browserSessionPersistence</a> </li><li data-api-symbol="inmemorypersistence"> <a href="#inmemorypersistence">inMemoryPersistence</a> </li><li data-api-symbol="presence_heartbeat_interval_ms"> <a href="#presence_heartbeat_interval_ms">PRESENCE_HEARTBEAT_INTERVAL_MS</a> </li><li data-api-symbol="presence_stale_ms"> <a href="#presence_stale_ms">PRESENCE_STALE_MS</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#functions"> Functions </a> <ul> <li data-api-symbol="acceptprovidercredential()"> <a href="#acceptprovidercredential">acceptProviderCredential()</a> </li><li data-api-symbol="adddoc()"> <a href="#adddoc">addDoc()</a> </li><li data-api-symbol="adminclearusers()"> <a href="#adminclearusers">adminClearUsers()</a> </li><li data-api-symbol="admincreateuser()"> <a href="#admincreateuser">adminCreateUser()</a> </li><li data-api-symbol="admindeletedocument()"> <a href="#admindeletedocument">adminDeleteDocument()</a> </li><li data-api-symbol="admindeletertdbvalue()"> <a href="#admindeletertdbvalue">adminDeleteRtdbValue()</a> </li><li data-api-symbol="admindeleteuser()"> <a href="#admindeleteuser">adminDeleteUser()</a> </li><li data-api-symbol="admingetdocument()"> <a href="#admingetdocument">adminGetDocument()</a> </li><li data-api-symbol="adminlistdocuments()"> <a href="#adminlistdocuments">adminListDocuments()</a> </li><li data-api-symbol="adminreadrtdbstate()"> <a href="#adminreadrtdbstate">adminReadRtdbState()</a> </li><li data-api-symbol="adminreadstate()"> <a href="#adminreadstate">adminReadState()</a> </li><li data-api-symbol="adminsetdocument()"> <a href="#adminsetdocument">adminSetDocument()</a> </li><li data-api-symbol="adminsetrtdbvalue()"> <a href="#adminsetrtdbvalue">adminSetRtdbValue()</a> </li><li data-api-symbol="adminsubscribertdbvalue()"> <a href="#adminsubscribertdbvalue">adminSubscribeRtdbValue()</a> </li><li data-api-symbol="adminupdatertdbvalue()"> <a href="#adminupdatertdbvalue">adminUpdateRtdbValue()</a> </li><li data-api-symbol="adminupdateuser()"> <a href="#adminupdateuser">adminUpdateUser()</a> </li><li data-api-symbol="and()"> <a href="#and">and()</a> </li><li data-api-symbol="arrayremove()"> <a href="#arrayremove">arrayRemove()</a> </li><li data-api-symbol="arrayunion()"> <a href="#arrayunion">arrayUnion()</a> </li><li data-api-symbol="average()"> <a href="#average">average()</a> </li><li data-api-symbol="calltool()"> <a href="#calltool">callTool()</a> </li><li data-api-symbol="collection()"> <a href="#collection">collection()</a> </li><li data-api-symbol="collectiongroup()"> <a href="#collectiongroup">collectionGroup()</a> </li><li data-api-symbol="connectauthemulator()"> <a href="#connectauthemulator">connectAuthEmulator()</a> </li><li data-api-symbol="count()"> <a href="#count">count()</a> </li><li data-api-symbol="createuserwithemailandpassword()"> <a href="#createuserwithemailandpassword">createUserWithEmailAndPassword()</a> </li><li data-api-symbol="deletedoc()"> <a href="#deletedoc">deleteDoc()</a> </li><li data-api-symbol="deletefield()"> <a href="#deletefield">deleteField()</a> </li><li data-api-symbol="deleteobject()"> <a href="#deleteobject">deleteObject()</a> </li><li data-api-symbol="deleteworkerbranch()"> <a href="#deleteworkerbranch">deleteWorkerBranch()</a> </li><li data-api-symbol="doc()"> <a href="#doc">doc()</a> </li><li data-api-symbol="endat()"> <a href="#endat">endAt()</a> </li><li data-api-symbol="endbefore()"> <a href="#endbefore">endBefore()</a> </li><li data-api-symbol="eventhistory()"> <a href="#eventhistory">eventHistory()</a> </li><li data-api-symbol="exportworkerstate()"> <a href="#exportworkerstate">exportWorkerState()</a> </li><li data-api-symbol="getactiverules()"> <a href="#getactiverules">getActiveRules()</a> </li><li data-api-symbol="getaggregatefromserver()"> <a href="#getaggregatefromserver">getAggregateFromServer()</a> </li><li data-api-symbol="getauth()"> <a href="#getauth">getAuth()</a> </li><li data-api-symbol="getblob()"> <a href="#getblob">getBlob()</a> </li><li data-api-symbol="getbytes()"> <a href="#getbytes">getBytes()</a> </li><li data-api-symbol="getcountfromserver()"> <a href="#getcountfromserver">getCountFromServer()</a> </li><li data-api-symbol="getdoc()"> <a href="#getdoc">getDoc()</a> </li><li data-api-symbol="getdocs()"> <a href="#getdocs">getDocs()</a> </li><li data-api-symbol="getdownloadurl()"> <a href="#getdownloadurl">getDownloadURL()</a> </li><li data-api-symbol="getfirestore()"> <a href="#getfirestore">getFirestore()</a> </li><li data-api-symbol="getidtoken()"> <a href="#getidtoken-1">getIdToken()</a> </li><li data-api-symbol="getidtokenresult()"> <a href="#getidtokenresult-1">getIdTokenResult()</a> </li><li data-api-symbol="getlens()"> <a href="#getlens">getLens()</a> </li><li data-api-symbol="getmetadata()"> <a href="#getmetadata">getMetadata()</a> </li><li data-api-symbol="getproviderconfig()"> <a href="#getproviderconfig">getProviderConfig()</a> </li><li data-api-symbol="getrulesstatus()"> <a href="#getrulesstatus">getRulesStatus()</a> </li><li data-api-symbol="getsnapshot()"> <a href="#getsnapshot">getSnapshot()</a> </li><li data-api-symbol="getstorage()"> <a href="#getstorage">getStorage()</a> </li><li data-api-symbol="getworkerinstanceid()"> <a href="#getworkerinstanceid">getWorkerInstanceId()</a> </li><li data-api-symbol="getworkerversion()"> <a href="#getworkerversion">getWorkerVersion()</a> </li><li data-api-symbol="importworkerstate()"> <a href="#importworkerstate">importWorkerState()</a> </li><li data-api-symbol="increment()"> <a href="#increment">increment()</a> </li><li data-api-symbol="limit()"> <a href="#limit">limit()</a> </li><li data-api-symbol="limittolast()"> <a href="#limittolast">limitToLast()</a> </li><li data-api-symbol="listall()"> <a href="#listall">listAll()</a> </li><li data-api-symbol="listrootcollections()"> <a href="#listrootcollections">listRootCollections()</a> </li><li data-api-symbol="listsubcollections()"> <a href="#listsubcollections">listSubcollections()</a> </li><li data-api-symbol="listusers()"> <a href="#listusers">listUsers()</a> </li><li data-api-symbol="listworkerbranches()"> <a href="#listworkerbranches">listWorkerBranches()</a> </li><li data-api-symbol="mintpresenceclientid()"> <a href="#mintpresenceclientid">mintPresenceClientId()</a> </li><li data-api-symbol="onauthstatechanged()"> <a href="#onauthstatechanged">onAuthStateChanged()</a> </li><li data-api-symbol="onidtokenchanged()"> <a href="#onidtokenchanged">onIdTokenChanged()</a> </li><li data-api-symbol="onsnapshot()"> <a href="#onsnapshot">onSnapshot()</a> </li><li data-api-symbol="or()"> <a href="#or">or()</a> </li><li data-api-symbol="orderby()"> <a href="#orderby">orderBy()</a> </li><li data-api-symbol="query()"> <a href="#query">query()</a> </li><li data-api-symbol="ref()"> <a href="#ref">ref()</a> </li><li data-api-symbol="relayworkerop()"> <a href="#relayworkerop">relayWorkerOp()</a> </li><li data-api-symbol="relayworkersub()"> <a href="#relayworkersub">relayWorkerSub()</a> </li><li data-api-symbol="resetall()"> <a href="#resetall">resetAll()</a> </li><li data-api-symbol="rtdbchild()"> <a href="#rtdbchild">rtdbChild()</a> </li><li data-api-symbol="rtdbconnectdatabaseemulator()"> <a href="#rtdbconnectdatabaseemulator">rtdbConnectDatabaseEmulator()</a> </li><li data-api-symbol="rtdbget()"> <a href="#rtdbget">rtdbGet()</a> </li><li data-api-symbol="rtdbgetdatabase()"> <a href="#rtdbgetdatabase">rtdbGetDatabase()</a> </li><li data-api-symbol="rtdboff()"> <a href="#rtdboff">rtdbOff()</a> </li><li data-api-symbol="rtdbonvalue()"> <a href="#rtdbonvalue">rtdbOnValue()</a> </li><li data-api-symbol="rtdbpush()"> <a href="#rtdbpush">rtdbPush()</a> </li><li data-api-symbol="rtdbref()"> <a href="#rtdbref">rtdbRef()</a> </li><li data-api-symbol="rtdbremove()"> <a href="#rtdbremove">rtdbRemove()</a> </li><li data-api-symbol="rtdbservertimestamp()"> <a href="#rtdbservertimestamp">rtdbServerTimestamp()</a> </li><li data-api-symbol="rtdbset()"> <a href="#rtdbset">rtdbSet()</a> </li><li data-api-symbol="rtdbupdate()"> <a href="#rtdbupdate">rtdbUpdate()</a> </li><li data-api-symbol="runtransaction()"> <a href="#runtransaction">runTransaction()</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#multi-tab-correctness--read-set-validation--retry"> MULTI-TAB CORRECTNESS — READ-SET VALIDATION + RETRY </a> <ul> <li data-api-symbol="saveworkerbranch()"> <a href="#saveworkerbranch">saveWorkerBranch()</a> </li><li data-api-symbol="servertimestamp()"> <a href="#servertimestamp">serverTimestamp()</a> </li><li data-api-symbol="setdatabaserules()"> <a href="#setdatabaserules">setDatabaseRules()</a> </li><li data-api-symbol="setdoc()"> <a href="#setdoc">setDoc()</a> </li><li data-api-symbol="setfirestorerules()"> <a href="#setfirestorerules">setFirestoreRules()</a> </li><li data-api-symbol="setlens()"> <a href="#setlens">setLens()</a> </li><li data-api-symbol="setopissuer()"> <a href="#setopissuer">setOpIssuer()</a> </li><li data-api-symbol="setpersistence()"> <a href="#setpersistence">setPersistence()</a> </li><li data-api-symbol="setproviderconfig()"> <a href="#setproviderconfig">setProviderConfig()</a> </li><li data-api-symbol="setrules()"> <a href="#setrules">setRules()</a> </li><li data-api-symbol="signinanonymously()"> <a href="#signinanonymously">signInAnonymously()</a> </li><li data-api-symbol="signinwithemailandpassword()"> <a href="#signinwithemailandpassword">signInWithEmailAndPassword()</a> </li><li data-api-symbol="signout()"> <a href="#signout">signOut()</a> </li><li data-api-symbol="startafter()"> <a href="#startafter">startAfter()</a> </li><li data-api-symbol="startat()"> <a href="#startat">startAt()</a> </li><li data-api-symbol="startpresence()"> <a href="#startpresence">startPresence()</a> </li><li data-api-symbol="subscribeevents()"> <a href="#subscribeevents">subscribeEvents()</a> </li><li data-api-symbol="subscribepresence()"> <a href="#subscribepresence">subscribePresence()</a> </li><li data-api-symbol="sum()"> <a href="#sum">sum()</a> </li><li data-api-symbol="switchworkerbranch()"> <a href="#switchworkerbranch">switchWorkerBranch()</a> </li><li data-api-symbol="updatedoc()"> <a href="#updatedoc">updateDoc()</a> </li><li data-api-symbol="uploadbytes()"> <a href="#uploadbytes">uploadBytes()</a> </li><li data-api-symbol="where()"> <a href="#where">where()</a> </li><li data-api-symbol="writebatch()"> <a href="#writebatch">writeBatch()</a> </li> </ul> </section> <p class="api-symbol-empty" data-api-symbol-empty hidden>No matching symbols</p> </div> </aside> </div> <script type="module">const a=document.querySelector("[data-api-symbol-filter]"),d=[...document.querySelectorAll("[data-api-symbol-group]")],n=document.querySelector("[data-api-symbol-empty]");a?.addEventListener("input",()=>{const t=a.value.trim().toLowerCase();let o=0;for(const i of d){let e=0;i.querySelectorAll("[data-api-symbol]").forEach(l=>{const r=!t||(l.dataset.apiSymbol??"").includes(t);l.hidden=!r,r&&e++}),i.hidden=e===0,o+=e}n&&(n.hidden=o>0)});</script> <script type="module">const s=new Map;document.querySelectorAll('.doc-toc a[href^="#"]').forEach(t=>s.set(decodeURIComponent(t.hash.slice(1)),t));if(s.size>0){const t=new Set,n=()=>{let o=null;for(const e of s.keys())if(t.has(e)){o=e;break}s.forEach((e,c)=>e.classList.toggle("active",c===o))},r=new IntersectionObserver(o=>{for(const e of o)e.isIntersecting?t.add(e.target.id):t.delete(e.target.id);n()},{rootMargin:"-72px 0px -60% 0px"});s.forEach((o,e)=>{const c=document.getElementById(e);c&&r.observe(c)})}</script> <script type="module">document.querySelector('.studio__nav [aria-current="page"]')?.scrollIntoView({block:"nearest",inline:"center"});</script> </body> </html>