@pyric/cli 0.1.0-alpha.18 → 0.1.0-alpha.20
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.
- package/README.md +14 -9
- package/dist/bridge/server/mcp-contract.d.ts +2 -2
- package/dist/bridge/server/mcp-contract.d.ts.map +1 -1
- package/dist/bridge/server/mcp-contract.js +3 -0
- package/dist/bridge/server/mcp-contract.js.map +1 -1
- package/dist/cli/index.d.ts +3 -2
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +51 -42
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/mcp-proxy.d.ts.map +1 -1
- package/dist/cli/mcp-proxy.js +3 -3
- package/dist/cli/mcp-proxy.js.map +1 -1
- package/dist/cli/parse-args.d.ts +1 -1
- package/dist/cli/parse-args.d.ts.map +1 -1
- package/dist/cli/parse-args.js +51 -15
- package/dist/cli/parse-args.js.map +1 -1
- package/dist/cli/pyric-config.d.ts +24 -0
- package/dist/cli/pyric-config.d.ts.map +1 -0
- package/dist/cli/pyric-config.js +28 -0
- package/dist/cli/pyric-config.js.map +1 -0
- package/dist/cli/rules.d.ts +1 -0
- package/dist/cli/rules.d.ts.map +1 -1
- package/dist/cli/rules.js +18 -4
- package/dist/cli/rules.js.map +1 -1
- package/dist/cli/{dev-runner.d.ts → sandbox-runner.d.ts} +33 -36
- package/dist/cli/sandbox-runner.d.ts.map +1 -0
- package/dist/cli/{dev-runner.js → sandbox-runner.js} +90 -55
- package/dist/cli/sandbox-runner.js.map +1 -0
- package/dist/cli/serve.d.ts +6 -4
- package/dist/cli/serve.d.ts.map +1 -1
- package/dist/cli/serve.js +99 -40
- package/dist/cli/serve.js.map +1 -1
- package/dist/cli/service-command-records/storage-rules-resolve.d.ts +4 -0
- package/dist/cli/service-command-records/storage-rules-resolve.d.ts.map +1 -0
- package/dist/cli/service-command-records/storage-rules-resolve.js +3 -0
- package/dist/cli/service-command-records/storage-rules-resolve.js.map +1 -0
- package/dist/cli/service-commands.generated.d.ts +3 -0
- package/dist/cli/service-commands.generated.d.ts.map +1 -1
- package/dist/cli/service-commands.generated.js +2 -0
- package/dist/cli/service-commands.generated.js.map +1 -1
- package/dist/cli/snapshot.js +5 -5
- package/dist/cli/snapshot.js.map +1 -1
- package/dist/cli/verify.js +1 -1
- package/dist/cli/verify.js.map +1 -1
- package/dist/functions-rtdb/development-runtime.js +1 -1
- package/dist/functions-rtdb/development-runtime.js.map +1 -1
- package/dist/functions-rtdb/project.js +8 -8
- package/dist/functions-rtdb/project.js.map +1 -1
- package/dist/next/guard.js +1 -1
- package/dist/next/guard.js.map +1 -1
- package/dist/remote/index.d.ts +1 -1
- package/dist/remote/index.js +9 -9
- package/dist/remote/index.js.map +1 -1
- package/dist/serve/bundler.js +10 -10
- package/dist/serve/bundler.js.map +1 -1
- package/dist/serve/entries/ai.d.ts.map +1 -1
- package/dist/serve/entries/ai.js +27 -1
- package/dist/serve/entries/ai.js.map +1 -1
- package/dist/serve/entries/auth-helper-dom.js +1 -1
- package/dist/serve/entries/auth-helper-dom.js.map +1 -1
- package/dist/serve/entries/auth-helper-runtime.js +1 -1
- package/dist/serve/entries/auth-helper-runtime.js.map +1 -1
- package/dist/serve/entries/firestore.js +3 -3
- package/dist/serve/entries/firestore.js.map +1 -1
- package/dist/serve/entries/keepalive.js +1 -1
- package/dist/serve/entries/keepalive.js.map +1 -1
- package/dist/serve/entries/runtime.js +21 -14
- package/dist/serve/entries/runtime.js.map +1 -1
- package/dist/serve/entries/storage.js +1 -1
- package/dist/serve/entries/storage.js.map +1 -1
- package/dist/serve/entries/worker-runtime.js +1 -1
- package/dist/serve/entries/worker-runtime.js.map +1 -1
- package/dist/serve/init-payload.d.ts +4 -0
- package/dist/serve/init-payload.d.ts.map +1 -1
- package/dist/serve/namespace.d.ts +6 -0
- package/dist/serve/namespace.d.ts.map +1 -1
- package/dist/serve/namespace.js +36 -5
- package/dist/serve/namespace.js.map +1 -1
- package/dist/serve/rules.d.ts +3 -3
- package/dist/serve/rules.d.ts.map +1 -1
- package/dist/serve/rules.js +56 -25
- package/dist/serve/rules.js.map +1 -1
- package/dist/serve/runtime/chip.d.ts.map +1 -1
- package/dist/serve/runtime/chip.js +32 -1
- package/dist/serve/runtime/chip.js.map +1 -1
- package/dist/serve/runtime/manifest.d.ts +1 -1
- package/dist/serve/runtime/manifest.d.ts.map +1 -1
- package/dist/serve/runtime/manifest.js +1 -1
- package/dist/serve/runtime/manifest.js.map +1 -1
- package/dist/serve/runtime/status.d.ts.map +1 -1
- package/dist/serve/runtime/status.js +23 -0
- package/dist/serve/runtime/status.js.map +1 -1
- package/dist/serve/sandbox-session.d.ts +1 -0
- package/dist/serve/sandbox-session.d.ts.map +1 -1
- package/dist/serve/sandbox-session.js +10 -4
- package/dist/serve/sandbox-session.js.map +1 -1
- package/dist/serve/server.d.ts +7 -0
- package/dist/serve/server.d.ts.map +1 -1
- package/dist/serve/server.js +15 -1
- package/dist/serve/server.js.map +1 -1
- package/dist/serve/site-ui/404.html +1 -1
- package/dist/serve/site-ui/_astro/{RulesCodeEditor.CzwHdCi9.js → RulesCodeEditor.XtDmHOlN.js} +1 -1
- package/dist/serve/site-ui/_astro/_example_.B9DG9HLJ.css +1 -0
- package/dist/serve/site-ui/_astro/_slug_.Da5VLhW1.css +1 -0
- package/dist/serve/site-ui/_astro/_studio_.BnfYCKoI.css +1 -0
- package/dist/serve/site-ui/_astro/app.B52xr-DK.js +1 -0
- package/dist/serve/site-ui/_astro/app.DWBraPUw.js +12 -0
- package/dist/serve/site-ui/_astro/app.pMSnN6Qw.css +1 -0
- package/dist/serve/site-ui/_astro/chess-showcase.B72XYeoh.js +354 -0
- package/dist/serve/site-ui/_astro/{example-runtime.B0byNQOl.js → example-runtime.C25_lx6Z.js} +2 -26
- package/dist/serve/site-ui/_astro/index.Tb-31efc.css +1 -0
- package/dist/serve/site-ui/_astro/index.UkCBr-_0.css +1 -0
- package/dist/serve/site-ui/_astro/sandbox-controls.DEpnKg-O.js +1169 -0
- package/dist/serve/site-ui/_astro/seed.Co0yUJY5.js +20 -0
- package/dist/serve/site-ui/_astro/writes.rpjrFzmu.js +102 -0
- package/dist/serve/site-ui/auth/index.html +5 -3
- package/dist/serve/site-ui/david-east.jpg +0 -0
- package/dist/serve/site-ui/docs/_rhythm/index.html +6 -3
- package/dist/serve/site-ui/docs/_rhythm.md +1 -1
- package/dist/serve/site-ui/docs/agent/set-up-your-agent/index.html +45 -17
- package/dist/serve/site-ui/docs/agent/set-up-your-agent.md +20 -17
- package/dist/serve/site-ui/docs/agent/watch-and-review/index.html +6 -5
- package/dist/serve/site-ui/docs/agent/watch-and-review.md +1 -5
- package/dist/serve/site-ui/docs/agent/work-with-an-agent/index.html +8 -5
- package/dist/serve/site-ui/docs/agent/work-with-an-agent.md +4 -4
- package/dist/serve/site-ui/docs/ai-compat/index.html +5 -2
- package/dist/serve/site-ui/docs/api-reference/index.html +6 -2
- package/dist/serve/site-ui/docs/api-reference.md +1 -0
- package/dist/serve/site-ui/docs/app-compat/index.html +5 -2
- package/dist/serve/site-ui/docs/auth-compat/index.html +5 -2
- package/dist/serve/site-ui/docs/build/ai-logic/index.html +5 -2
- package/dist/serve/site-ui/docs/build/authentication/index.html +7 -4
- package/dist/serve/site-ui/docs/build/authentication.md +2 -2
- package/dist/serve/site-ui/docs/build/cloud-firestore/index.html +34 -53
- package/dist/serve/site-ui/docs/build/cloud-firestore.md +40 -36
- package/dist/serve/site-ui/docs/build/cloud-messaging/index.html +5 -2
- package/dist/serve/site-ui/docs/build/cloud-storage/index.html +6 -3
- package/dist/serve/site-ui/docs/build/cloud-storage.md +1 -1
- package/dist/serve/site-ui/docs/build/realtime-database/index.html +9 -6
- package/dist/serve/site-ui/docs/build/realtime-database.md +4 -4
- package/dist/serve/site-ui/docs/conformance-scores/index.html +5 -2
- package/dist/serve/site-ui/docs/create-pyric-reference-api/index.html +6 -3
- package/dist/serve/site-ui/docs/create-pyric-reference-api.md +1 -1
- package/dist/serve/site-ui/docs/database-compat/index.html +5 -2
- package/dist/serve/site-ui/docs/examples/chess/index.html +649 -250
- package/dist/serve/site-ui/docs/examples/chess.md +45 -16
- package/dist/serve/site-ui/docs/examples/index.html +6 -3
- package/dist/serve/site-ui/docs/firestore-compat/index.html +5 -2
- package/dist/serve/site-ui/docs/functions-rtdb-compat/index.html +5 -2
- package/dist/serve/site-ui/docs/get-started/how-the-swap-works/index.html +9 -6
- package/dist/serve/site-ui/docs/get-started/how-the-swap-works.md +5 -5
- package/dist/serve/site-ui/docs/get-started/nextjs/index.html +9 -6
- package/dist/serve/site-ui/docs/get-started/nextjs.md +4 -4
- package/dist/serve/site-ui/docs/get-started/start-building/index.html +41 -10
- package/dist/serve/site-ui/docs/get-started/start-building.md +21 -10
- package/dist/serve/site-ui/docs/get-started/vite/index.html +6 -3
- package/dist/serve/site-ui/docs/get-started/vite.md +1 -1
- package/dist/serve/site-ui/docs/index.json +203 -168
- package/dist/serve/site-ui/docs/messaging-compat/index.html +5 -2
- package/dist/serve/site-ui/docs/observe/resolve-runtime-status/index.html +5 -2
- package/dist/serve/site-ui/docs/observe/see-whats-happening/index.html +6 -4
- package/dist/serve/site-ui/docs/observe/see-whats-happening.md +2 -4
- package/dist/serve/site-ui/docs/observe/shape-your-data/index.html +9 -6
- package/dist/serve/site-ui/docs/observe/shape-your-data.md +4 -4
- package/dist/serve/site-ui/docs/overview/index.html +16 -10
- package/dist/serve/site-ui/docs/overview.md +19 -11
- package/dist/serve/site-ui/docs/pyric-admin-app-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-admin-auth-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-admin-database-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-admin-firestore-reference-api/index.html +8 -5
- package/dist/serve/site-ui/docs/pyric-admin-firestore-reference-api.md +3 -3
- package/dist/serve/site-ui/docs/pyric-admin-messaging-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-admin-reference-api/index.html +501 -0
- package/dist/serve/site-ui/docs/pyric-admin-reference-api.md +587 -0
- package/dist/serve/site-ui/docs/pyric-admin-storage-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ai-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ai-scripting-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-app-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-auth-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-cli-assurance-browser-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-cli-assurance-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-cli-bridge-client-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-cli-bridge-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-cli-conformance-browser-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-cli-conformance-docs-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-cli-conformance-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-cli-credentials-node-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-cli-discover-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-cli-next-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-cli-register-app-bridge-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-cli-register-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-cli-remote-reference-api/index.html +6 -3
- package/dist/serve/site-ui/docs/pyric-cli-remote-reference-api.md +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-serve-worker-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-cli-verify-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-cli-vite-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-database-reference-api/index.html +166 -95
- package/dist/serve/site-ui/docs/pyric-database-reference-api.md +107 -1
- package/dist/serve/site-ui/docs/pyric-firestore-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-messaging-reference-api/index.html +10 -4
- package/dist/serve/site-ui/docs/pyric-messaging-reference-api.md +5 -2
- package/dist/serve/site-ui/docs/pyric-messaging-sw-reference-api/index.html +10 -4
- package/dist/serve/site-ui/docs/pyric-messaging-sw-reference-api.md +5 -2
- package/dist/serve/site-ui/docs/pyric-rules-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-sandbox-database-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-sandbox-firestore-reference-api/index.html +6 -3
- package/dist/serve/site-ui/docs/pyric-sandbox-firestore-reference-api.md +2 -2
- package/dist/serve/site-ui/docs/pyric-sandbox-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-storage-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ui-agents-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ui-auth-hooks-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ui-auth-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ui-events-hooks-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ui-events-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ui-firestore-hooks-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ui-firestore-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ui-primitives-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ui-rtdb-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ui-rules-hooks-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ui-rules-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ui-storage-hooks-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ui-storage-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ui-traffic-hooks-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/pyric-ui-traffic-reference-api/index.html +5 -2
- package/dist/serve/site-ui/docs/reference/cli/index.html +153 -0
- package/dist/serve/site-ui/docs/reference/cli.md +114 -0
- package/dist/serve/site-ui/docs/rules-compat/index.html +5 -2
- package/dist/serve/site-ui/docs/secure/audit-your-rules/index.html +5 -2
- package/dist/serve/site-ui/docs/secure/firestore-rules-limits/index.html +5 -2
- package/dist/serve/site-ui/docs/secure/read-a-denial/index.html +6 -3
- package/dist/serve/site-ui/docs/secure/read-a-denial.md +1 -1
- package/dist/serve/site-ui/docs/secure/rtdb-rules-in-typescript/index.html +5 -2
- package/dist/serve/site-ui/docs/secure/rules-standard-library/index.html +5 -2
- package/dist/serve/site-ui/docs/secure/secure-it-with-rules/index.html +5 -2
- package/dist/serve/site-ui/docs/secure/simulate-and-lint/index.html +5 -2
- package/dist/serve/site-ui/docs/secure/write-a-rules-test-suite/index.html +5 -2
- package/dist/serve/site-ui/docs/ship/ship-to-production/index.html +7 -4
- package/dist/serve/site-ui/docs/ship/ship-to-production.md +2 -2
- package/dist/serve/site-ui/docs/ship/test-in-node/index.html +9 -6
- package/dist/serve/site-ui/docs/ship/test-in-node.md +4 -4
- package/dist/serve/site-ui/docs/storage-compat/index.html +5 -2
- package/dist/serve/site-ui/docs/trust/how-we-know-it-matches-firebase/index.html +5 -2
- package/dist/serve/site-ui/docs/trust/rules-standard-library/index.html +5 -2
- package/dist/serve/site-ui/docs/trust/versioning-and-compatibility/index.html +5 -2
- package/dist/serve/site-ui/docs/tutorial/index.html +10 -7
- package/dist/serve/site-ui/docs/tutorial.md +4 -4
- package/dist/serve/site-ui/examples/chess/index.html +4 -2
- package/dist/serve/site-ui/firestore/index.html +5 -3
- package/dist/serve/site-ui/hero-charcoal.jpg +0 -0
- package/dist/serve/site-ui/index.html +9 -7
- package/dist/serve/site-ui/llms.txt +4 -3
- package/dist/serve/site-ui/pyric-campfire-full.png +0 -0
- package/dist/serve/site-ui/pyric-campfire.png +0 -0
- package/dist/serve/site-ui/rtdb/index.html +5 -3
- package/dist/serve/site-ui/settings/index.html +5 -3
- package/dist/serve/site-ui/storage/index.html +5 -3
- package/dist/serve/site-ui/studio/index.html +13 -0
- package/dist/serve/site-ui/studio-routes.json +1 -1
- package/dist/serve/site-ui/traffic/index.html +5 -3
- package/dist/serve/studio/routes.d.ts +9 -0
- package/dist/serve/studio/routes.d.ts.map +1 -1
- package/dist/serve/studio/routes.js +47 -7
- package/dist/serve/studio/routes.js.map +1 -1
- package/dist/serve/vite-ai-config.d.ts.map +1 -1
- package/dist/serve/vite-ai-config.js +38 -8
- package/dist/serve/vite-ai-config.js.map +1 -1
- package/dist/serve/vite-module-swap.d.ts.map +1 -1
- package/dist/serve/vite-module-swap.js +0 -28
- package/dist/serve/vite-module-swap.js.map +1 -1
- package/dist/serve/vite-rules-source.d.ts.map +1 -1
- package/dist/serve/vite-rules-source.js +28 -7
- package/dist/serve/vite-rules-source.js.map +1 -1
- package/dist/serve/vite-sandbox-generation.d.ts +1 -1
- package/dist/serve/vite-sandbox-generation.d.ts.map +1 -1
- package/dist/serve/vite-sandbox-generation.js +1 -1
- package/dist/serve/vite-sandbox-generation.js.map +1 -1
- package/dist/serve/worker/client/disconnect.js +1 -1
- package/dist/serve/worker/client/disconnect.js.map +1 -1
- package/dist/serve/worker/client/presence.d.ts.map +1 -1
- package/dist/serve/worker/client/presence.js +18 -5
- package/dist/serve/worker/client/presence.js.map +1 -1
- package/dist/serve/worker/host-ai.d.ts.map +1 -1
- package/dist/serve/worker/host-ai.js +15 -0
- package/dist/serve/worker/host-ai.js.map +1 -1
- package/dist/serve/worker/protocol.d.ts +4 -0
- package/dist/serve/worker/protocol.d.ts.map +1 -1
- package/dist/serve/worker/protocol.js.map +1 -1
- package/dist/serve/worker/serve-init.d.ts.map +1 -1
- package/dist/serve/worker/serve-init.js +7 -1
- package/dist/serve/worker/serve-init.js.map +1 -1
- package/package.json +5 -5
- package/src/bridge/server/mcp-contract.ts +3 -0
- package/src/cli/cli.test.ts +2 -2
- package/src/cli/index.ts +51 -42
- package/src/cli/mcp-proxy.ts +10 -11
- package/src/cli/parse-args.ts +61 -15
- package/src/cli/pyric-config.ts +45 -0
- package/src/cli/rules.ts +31 -4
- package/src/cli/{dev-runner.ts → sandbox-runner.ts} +117 -72
- package/src/cli/serve.ts +115 -47
- package/src/cli/service-command-records/storage-rules-resolve.ts +4 -0
- package/src/cli/service-commands.generated.ts +2 -0
- package/src/cli/snapshot.ts +5 -5
- package/src/cli/verify.ts +1 -1
- package/src/functions-rtdb/development-runtime.ts +1 -1
- package/src/functions-rtdb/project.ts +8 -8
- package/src/next/guard.ts +1 -1
- package/src/remote/index.ts +9 -9
- package/src/serve/bundler.ts +10 -10
- package/src/serve/entries/ai.ts +27 -1
- package/src/serve/entries/auth-helper-dom.ts +1 -1
- package/src/serve/entries/auth-helper-runtime.ts +1 -1
- package/src/serve/entries/firestore.ts +3 -3
- package/src/serve/entries/keepalive.ts +1 -1
- package/src/serve/entries/runtime.ts +19 -14
- package/src/serve/entries/storage.ts +1 -1
- package/src/serve/entries/worker-runtime.ts +1 -1
- package/src/serve/init-payload.ts +4 -0
- package/src/serve/namespace.ts +44 -5
- package/src/serve/rules.ts +61 -26
- package/src/serve/runtime/chip.ts +38 -1
- package/src/serve/runtime/manifest.ts +1 -1
- package/src/serve/runtime/status.ts +24 -0
- package/src/serve/sandbox-session.ts +10 -4
- package/src/serve/server.ts +18 -1
- package/src/serve/studio/routes.ts +63 -7
- package/src/serve/vite-ai-config.ts +37 -7
- package/src/serve/vite-module-swap.ts +0 -28
- package/src/serve/vite-rules-source.ts +29 -7
- package/src/serve/vite-sandbox-generation.ts +1 -1
- package/src/serve/worker/client/disconnect.ts +1 -1
- package/src/serve/worker/client/presence.ts +25 -5
- package/src/serve/worker/host-ai.ts +15 -0
- package/src/serve/worker/protocol.ts +2 -1
- package/src/serve/worker/serve-init.ts +5 -1
- package/README.md.orig +0 -141
- package/dist/cli/dev-runner.d.ts.map +0 -1
- package/dist/cli/dev-runner.js.map +0 -1
- package/dist/serve/site-ui/_astro/_example_.jevZ7OdV.css +0 -1
- package/dist/serve/site-ui/_astro/_slug_.C6QfVOxJ.css +0 -1
- package/dist/serve/site-ui/_astro/_slug_.CXh9yTP1.css +0 -1
- package/dist/serve/site-ui/_astro/_studio_.B6b_G1ev.css +0 -1
- package/dist/serve/site-ui/_astro/app.B7pBzz5N.js +0 -11
- package/dist/serve/site-ui/_astro/app.BsFsMjn0.css +0 -1
- package/dist/serve/site-ui/_astro/app.boex5SnQ.js +0 -1
- package/dist/serve/site-ui/_astro/chess-showcase.DDqE-QGe.js +0 -1
- package/dist/serve/site-ui/_astro/chess-source-explorer.C5k9c5yK.js +0 -1
- package/dist/serve/site-ui/_astro/chess-v2.CFHmd3UL.js +0 -354
- package/dist/serve/site-ui/_astro/index.uwPvjH_1.js +0 -1
- package/dist/serve/site-ui/_astro/jsx-runtime.D_zvdyIk.js +0 -9
- package/dist/serve/site-ui/_astro/reads.Dh3z0fJy.js +0 -1
- package/dist/serve/site-ui/_astro/sandbox-controls.C2IqtoSw.js +0 -1252
- package/dist/serve/site-ui/_astro/seed.CCmj00su.js +0 -20
- package/dist/serve/site-ui/docs/trust/storage-rules-stdlib-research/index.html +0 -582
- package/dist/serve/site-ui/docs/trust/storage-rules-stdlib-research.md +0 -448
- package/dist/serve/site-ui/examples/firestore-first-write/index.html +0 -2
|
@@ -1,5 +1,8 @@
|
|
|
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/database · Pyric Studio</title><meta name="description" content="Published declarations for pyric/database."><link rel="icon" type="image/svg+xml" href="/__pyric/ui/pyric-logo.svg"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet"><link rel="stylesheet" href="/__pyric/ui/_astro/
|
|
2
|
-
<link rel="stylesheet" href="/__pyric/ui/_astro/_slug_.C6QfVOxJ.css"></head> <body> <header class="studio__bar" data-astro-cid-mw7aashj> <div class="studio__bar-inner" data-astro-cid-mw7aashj> <a class="studio__brand" href="/__pyric/ui/" aria-label="Pyric Studio" data-astro-cid-mw7aashj>Pyric</a> <nav class="studio__nav" aria-label="Studio tabs" data-astro-cid-mw7aashj> <a class="studio__nav-tab" href="/__pyric/ui/" data-astro-cid-mw7aashj> Home </a><a class="studio__nav-tab" href="/__pyric/ui/firestore" data-astro-cid-mw7aashj> Firestore </a><a class="studio__nav-tab" href="/__pyric/ui/auth" data-astro-cid-mw7aashj> Auth </a><a class="studio__nav-tab" href="/__pyric/ui/rtdb" data-astro-cid-mw7aashj> RTDB </a><a class="studio__nav-tab" href="/__pyric/ui/storage" data-astro-cid-mw7aashj> Storage </a><a class="studio__nav-tab" href="/__pyric/ui/traffic" data-astro-cid-mw7aashj> Traffic </a><a class="studio__nav-tab" href="/__pyric/ui/settings" data-astro-cid-mw7aashj> Settings </a><a class="studio__nav-tab" href="/__pyric/ui/docs" aria-current="page" data-astro-cid-mw7aashj> Docs </a> </nav> </div> </header> <div class="docs-shell" data-astro-cid-mw7aashj> <details class="docs-nav-drawer" data-astro-cid-mw7aashj> <summary data-astro-cid-mw7aashj>Navigate</summary> <nav class="docs-nav" aria-label="Documentation"> <div class="docs-search" data-index-url="/__pyric/ui/docs/index.json"> <div class="docs-search-field"> <svg class="docs-search-icon" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"> <path d="M11.5 11.5 15 15M13 7A6 6 0 1 1 1 7a6 6 0 0 1 12 0Z" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path> </svg> <input type="text" class="docs-search-input" placeholder="Search docs" aria-label="Search docs" autocomplete="off" spellcheck="false"> <kbd class="docs-search-kbd">⌘K</kbd> </div> <ul class="docs-search-results" hidden></ul> </div> <script type="module">let i=null;function d(t){return i||(i=fetch(t).then(e=>e.json())),i}function l(t,e){return t.title.toLowerCase().includes(e)||t.excerpt.toLowerCase().includes(e)?!0:t.headings.some(r=>r.text.toLowerCase().includes(e))}function u(t,e,r){if(e.innerHTML="",t.length===0){e.hidden=!1;{const n=document.createElement("li");n.className="docs-search-empty",n.textContent="No matches",e.appendChild(n)}return}e.hidden=!1;for(const n of t.slice(0,8)){const s=document.createElement("li"),c=document.createElement("a");c.href=n.path;const o=document.createElement("span");o.className="docs-search-result-title",o.textContent=n.title;const a=document.createElement("span");a.className="docs-search-result-meta",a.textContent=[n.group,n.section].filter(Boolean).join(" / "),c.append(o,a),s.appendChild(c),e.appendChild(s)}}document.querySelectorAll(".docs-search").forEach(t=>{const e=t.dataset.indexUrl,r=t.querySelector(".docs-search-input"),n=t.querySelector(".docs-search-results");r.addEventListener("input",async()=>{const s=r.value.trim().toLowerCase();if(!s){n.hidden=!0,n.innerHTML="";return}const{pages:c}=await d(e);r.value.trim().toLowerCase()===s&&u(c.filter(o=>l(o,s)),n)}),r.addEventListener("focus",()=>{d(e),n.childElementCount>0&&(n.hidden=!1)}),r.addEventListener("keydown",s=>{s.key==="Escape"&&(r.value="",n.hidden=!0,n.innerHTML="",r.blur())}),r.addEventListener("blur",()=>{window.setTimeout(()=>{n.hidden=!0},150)})});document.addEventListener("keydown",t=>{if(!(t.metaKey||t.ctrlKey)||t.key.toLowerCase()!=="k")return;const e=[...document.querySelectorAll(".docs-search-input")].find(r=>r.offsetParent!==null);e&&(t.preventDefault(),e.focus(),e.select())});</script> <details class="docs-nav-group"> <summary>Overview</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/overview/"> Overview </a> </li><li> <a href="/__pyric/ui/docs/tutorial/"> Tutorial </a> </li><li> <a href="/__pyric/ui/docs/examples/"> Examples </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Get started</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/get-started/start-building/"> Quickstart </a> </li><li> <a href="/__pyric/ui/docs/get-started/vite/"> Vite </a> </li><li> <a href="/__pyric/ui/docs/get-started/nextjs/"> Next.js </a> </li><li> <a href="/__pyric/ui/docs/get-started/how-the-swap-works/"> How the swap works </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Build</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/build/authentication/"> Authentication </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-firestore/"> Cloud Firestore </a> </li><li> <a href="/__pyric/ui/docs/build/realtime-database/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-storage/"> Cloud Storage </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-messaging/"> Cloud Messaging </a> </li><li> <a href="/__pyric/ui/docs/build/ai-logic/"> AI Logic </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Secure & debug</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/secure/secure-it-with-rules/"> Security Rules </a> </li><li> <a href="/__pyric/ui/docs/secure/simulate-and-lint/"> Simulate and lint before you deploy </a> </li><li> <a href="/__pyric/ui/docs/secure/write-a-rules-test-suite/"> Write a rules test suite </a> </li><li> <a href="/__pyric/ui/docs/secure/read-a-denial/"> Read a denial and understand it </a> </li><li> <a href="/__pyric/ui/docs/secure/rules-standard-library/"> The rules standard library </a> </li><li> <a href="/__pyric/ui/docs/secure/rtdb-rules-in-typescript/"> RTDB rules in TypeScript </a> </li><li> <a href="/__pyric/ui/docs/secure/firestore-rules-limits/"> Rules limits </a> </li><li> <a href="/__pyric/ui/docs/secure/audit-your-rules/"> Audit rules and data </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading"> Examples </h2> <ul> <li> <a href="/__pyric/ui/docs/examples/chess/"> Chess showcase </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Observe & 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 & rule verdicts </a> </li><li> <a href="/__pyric/ui/docs/observe/resolve-runtime-status/"> Runtime status </a> </li><li> <a href="/__pyric/ui/docs/observe/shape-your-data/"> Seed, snapshot, replay </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Ship & test</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/ship/ship-to-production/"> Ship to production </a> </li><li> <a href="/__pyric/ui/docs/ship/test-in-node/"> Test in Node </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Work with an agent</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/agent/set-up-your-agent/"> Connect an agent </a> </li><li> <a href="/__pyric/ui/docs/agent/work-with-an-agent/"> Use the MCP tools </a> </li><li> <a href="/__pyric/ui/docs/agent/watch-and-review/"> Watch in Pyric Studio </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Trust</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/trust/versioning-and-compatibility/"> Versioning and the fb tag </a> </li><li> <a href="/__pyric/ui/docs/trust/storage-rules-stdlib-research/"> Storage Rules modules: evidence and design </a> </li><li> <a href="/__pyric/ui/docs/trust/rules-standard-library/"> Rules standard library reference </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Conformance</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/conformance-scores/"> Conformance scores </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/" aria-current="page"> pyric/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage-reference-api/"> pyric/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-reference-api/"> pyric/messaging </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-sw-reference-api/"> pyric/messaging/sw </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules-reference-api/"> pyric/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-reference-api/"> pyric/sandbox </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-firestore-reference-api/"> pyric/sandbox/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-database-reference-api/"> pyric/sandbox/database </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric-admin</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-admin-app-reference-api/"> pyric-admin/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-firestore-reference-api/"> pyric-admin/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-auth-reference-api/"> pyric-admin/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-database-reference-api/"> pyric-admin/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-storage-reference-api/"> pyric-admin/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-messaging-reference-api/"> pyric-admin/messaging </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">create-pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/create-pyric-reference-api/"> create-pyric </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/cli</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli-credentials-node-reference-api/"> @pyric/cli/credentials/node </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-verify-reference-api/"> @pyric/cli/verify </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-reference-api/"> @pyric/cli/conformance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-browser-reference-api/"> @pyric/cli/conformance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-docs-reference-api/"> @pyric/cli/conformance/docs </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-reference-api/"> @pyric/cli/assurance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-browser-reference-api/"> @pyric/cli/assurance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-reference-api/"> @pyric/cli/bridge </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-client-reference-api/"> @pyric/cli/bridge/client </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-discover-reference-api/"> @pyric/cli/discover </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-vite-reference-api/"> @pyric/cli/vite </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-next-reference-api/"> @pyric/cli/next </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-serve-worker-reference-api/"> @pyric/cli/serve/worker </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-remote-reference-api/"> @pyric/cli/remote </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-register-reference-api/"> @pyric/cli/register </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-register-app-bridge-reference-api/"> @pyric/cli/register/app-bridge </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/ui</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-ui-auth-reference-api/"> @pyric/ui/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-auth-hooks-reference-api/"> @pyric/ui/auth/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-primitives-reference-api/"> @pyric/ui/primitives </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-firestore-reference-api/"> @pyric/ui/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-firestore-hooks-reference-api/"> @pyric/ui/firestore/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rtdb-reference-api/"> @pyric/ui/rtdb </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-storage-reference-api/"> @pyric/ui/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-storage-hooks-reference-api/"> @pyric/ui/storage/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-traffic-reference-api/"> @pyric/ui/traffic </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-traffic-hooks-reference-api/"> @pyric/ui/traffic/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-events-reference-api/"> @pyric/ui/events </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-events-hooks-reference-api/"> @pyric/ui/events/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-agents-reference-api/"> @pyric/ui/agents </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rules-reference-api/"> @pyric/ui/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rules-hooks-reference-api/"> @pyric/ui/rules/hooks </a> </li> </ul> </div> </div> </details> </nav> </details> <nav class="docs-nav" aria-label="Documentation"> <div class="docs-search" data-index-url="/__pyric/ui/docs/index.json"> <div class="docs-search-field"> <svg class="docs-search-icon" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"> <path d="M11.5 11.5 15 15M13 7A6 6 0 1 1 1 7a6 6 0 0 1 12 0Z" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path> </svg> <input type="text" class="docs-search-input" placeholder="Search docs" aria-label="Search docs" autocomplete="off" spellcheck="false"> <kbd class="docs-search-kbd">⌘K</kbd> </div> <ul class="docs-search-results" hidden></ul> </div> <details class="docs-nav-group" id="nav-group-overview"> <summary>Overview</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/overview/"> Overview </a> </li><li> <a href="/__pyric/ui/docs/tutorial/"> Tutorial </a> </li><li> <a href="/__pyric/ui/docs/examples/"> Examples </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-get-started"> <summary>Get started</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/get-started/start-building/"> Quickstart </a> </li><li> <a href="/__pyric/ui/docs/get-started/vite/"> Vite </a> </li><li> <a href="/__pyric/ui/docs/get-started/nextjs/"> Next.js </a> </li><li> <a href="/__pyric/ui/docs/get-started/how-the-swap-works/"> How the swap works </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-build"> <summary>Build</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/build/authentication/"> Authentication </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-firestore/"> Cloud Firestore </a> </li><li> <a href="/__pyric/ui/docs/build/realtime-database/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-storage/"> Cloud Storage </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-messaging/"> Cloud Messaging </a> </li><li> <a href="/__pyric/ui/docs/build/ai-logic/"> AI Logic </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-secure-debug"> <summary>Secure & debug</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/secure/secure-it-with-rules/"> Security Rules </a> </li><li> <a href="/__pyric/ui/docs/secure/simulate-and-lint/"> Simulate and lint before you deploy </a> </li><li> <a href="/__pyric/ui/docs/secure/write-a-rules-test-suite/"> Write a rules test suite </a> </li><li> <a href="/__pyric/ui/docs/secure/read-a-denial/"> Read a denial and understand it </a> </li><li> <a href="/__pyric/ui/docs/secure/rules-standard-library/"> The rules standard library </a> </li><li> <a href="/__pyric/ui/docs/secure/rtdb-rules-in-typescript/"> RTDB rules in TypeScript </a> </li><li> <a href="/__pyric/ui/docs/secure/firestore-rules-limits/"> Rules limits </a> </li><li> <a href="/__pyric/ui/docs/secure/audit-your-rules/"> Audit rules and data </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading" id="nav-section-secure-debug-examples"> Examples </h2> <ul> <li> <a href="/__pyric/ui/docs/examples/chess/"> Chess showcase </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-observe-shape"> <summary>Observe & 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 & rule verdicts </a> </li><li> <a href="/__pyric/ui/docs/observe/resolve-runtime-status/"> Runtime status </a> </li><li> <a href="/__pyric/ui/docs/observe/shape-your-data/"> Seed, snapshot, replay </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-ship-test"> <summary>Ship & test</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/ship/ship-to-production/"> Ship to production </a> </li><li> <a href="/__pyric/ui/docs/ship/test-in-node/"> Test in Node </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-work-with-an-agent"> <summary>Work with an agent</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/agent/set-up-your-agent/"> Connect an agent </a> </li><li> <a href="/__pyric/ui/docs/agent/work-with-an-agent/"> Use the MCP tools </a> </li><li> <a href="/__pyric/ui/docs/agent/watch-and-review/"> Watch in Pyric Studio </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-trust"> <summary>Trust</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/trust/versioning-and-compatibility/"> Versioning and the fb tag </a> </li><li> <a href="/__pyric/ui/docs/trust/storage-rules-stdlib-research/"> Storage Rules modules: evidence and design </a> </li><li> <a href="/__pyric/ui/docs/trust/rules-standard-library/"> Rules standard library reference </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-conformance"> <summary>Conformance</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/conformance-scores/"> Conformance scores </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/" aria-current="page"> pyric/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage-reference-api/"> pyric/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-reference-api/"> pyric/messaging </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-sw-reference-api/"> pyric/messaging/sw </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules-reference-api/"> pyric/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-reference-api/"> pyric/sandbox </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-firestore-reference-api/"> pyric/sandbox/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-database-reference-api/"> pyric/sandbox/database </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric-admin</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-admin-app-reference-api/"> pyric-admin/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-firestore-reference-api/"> pyric-admin/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-auth-reference-api/"> pyric-admin/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-database-reference-api/"> pyric-admin/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-storage-reference-api/"> pyric-admin/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-messaging-reference-api/"> pyric-admin/messaging </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">create-pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/create-pyric-reference-api/"> create-pyric </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/cli</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli-credentials-node-reference-api/"> @pyric/cli/credentials/node </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-verify-reference-api/"> @pyric/cli/verify </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-reference-api/"> @pyric/cli/conformance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-browser-reference-api/"> @pyric/cli/conformance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-docs-reference-api/"> @pyric/cli/conformance/docs </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-reference-api/"> @pyric/cli/assurance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-browser-reference-api/"> @pyric/cli/assurance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-reference-api/"> @pyric/cli/bridge </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-client-reference-api/"> @pyric/cli/bridge/client </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-discover-reference-api/"> @pyric/cli/discover </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-vite-reference-api/"> @pyric/cli/vite </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-next-reference-api/"> @pyric/cli/next </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-serve-worker-reference-api/"> @pyric/cli/serve/worker </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-remote-reference-api/"> @pyric/cli/remote </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-register-reference-api/"> @pyric/cli/register </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-register-app-bridge-reference-api/"> @pyric/cli/register/app-bridge </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/ui</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-ui-auth-reference-api/"> @pyric/ui/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-auth-hooks-reference-api/"> @pyric/ui/auth/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-primitives-reference-api/"> @pyric/ui/primitives </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-firestore-reference-api/"> @pyric/ui/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-firestore-hooks-reference-api/"> @pyric/ui/firestore/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rtdb-reference-api/"> @pyric/ui/rtdb </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-storage-reference-api/"> @pyric/ui/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-storage-hooks-reference-api/"> @pyric/ui/storage/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-traffic-reference-api/"> @pyric/ui/traffic </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-traffic-hooks-reference-api/"> @pyric/ui/traffic/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-events-reference-api/"> @pyric/ui/events </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-events-hooks-reference-api/"> @pyric/ui/events/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-agents-reference-api/"> @pyric/ui/agents </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rules-reference-api/"> @pyric/ui/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rules-hooks-reference-api/"> @pyric/ui/rules/hooks </a> </li> </ul> </div> </div> </details> </nav> <main class="doc-main" data-astro-cid-mw7aashj> <nav class="docs-breadcrumbs" aria-label="Breadcrumb"> <ol> <li> <a href="/__pyric/ui/docs/api-reference/">API reference</a> </li><li> <span class="docs-breadcrumbs-sep" aria-hidden="true">/</span> <span>pyric</span> </li><li> <span class="docs-breadcrumbs-sep" aria-hidden="true">/</span> <span aria-current="page">pyric/database</span> </li> </ol> </nav> <header class="api-reference-header" data-astro-cid-mw7aashj> <p class="api-reference-kicker" data-astro-cid-mw7aashj>API reference</p> <h1 data-astro-cid-mw7aashj><code data-astro-cid-mw7aashj>pyric/database</code></h1> <p class="api-reference-meta" data-astro-cid-mw7aashj> 67 published symbols from <code data-astro-cid-mw7aashj>pyric</code> </p> <p class="api-reference-source" data-astro-cid-mw7aashj>
|
|
1
|
+
<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"><title>API reference: pyric/database · Pyric Studio</title><meta name="description" content="Published declarations for pyric/database."><link rel="icon" type="image/svg+xml" href="/__pyric/ui/pyric-logo.svg"><link rel="preconnect" href="https://use.typekit.net" crossorigin><link rel="stylesheet" href="https://use.typekit.net/jwb3ycu.css"><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/index.UkCBr-_0.css">
|
|
2
|
+
<link rel="stylesheet" href="/__pyric/ui/_astro/_slug_.Da5VLhW1.css">
|
|
3
|
+
<style>:root{--rhythm-para: .875rem;--rhythm-group: 1.5rem;--rhythm-subsection: 2.25rem;--rhythm-section: 3.25rem;--rhythm-list: calc(var(--rhythm-para) * .75)}.prose>*,.prose blockquote>*,.prose li>*,.prose .compat-stat>*{margin-block:0}.prose>*+*{margin-block-start:var(--rhythm-group)}.prose>*+h2{margin-block-start:var(--rhythm-section)}.prose>*+h3,.prose>*+h4{margin-block-start:var(--rhythm-subsection)}.prose>h1+*,.prose>h2+*,.prose>h3+*,.prose>h4+*{margin-block-start:var(--rhythm-para)}.prose>p+p{margin-block-start:var(--rhythm-para)}.prose>p+ul,.prose>p+ol,.prose>p+blockquote{margin-block-start:var(--rhythm-para)}.prose li+li{margin-block-start:var(--rhythm-list)}.prose li>ul,.prose li>ol{margin-block-start:var(--rhythm-list)}.prose li>*+*,.prose blockquote>*+*{margin-block-start:var(--rhythm-para)}
|
|
4
|
+
html{scrollbar-gutter:stable}
|
|
5
|
+
</style></head> <body> <header class="studio__chrome"> <div class="studio__bar"> <div class="studio__chrome-inner"> <nav class="studio__nav" aria-label="Site"> <a class="studio__brand" href="/__pyric/ui/" aria-label="Pyric">pyric</a> <a class="studio__nav-tab" href="/__pyric/ui/"> Home </a><a class="studio__nav-tab" href="/__pyric/ui/docs" aria-current="page"> Docs </a><a class="studio__nav-tab" href="/__pyric/ui/studio"> Studio </a> </nav> </div> </div> </header> <div class="docs-shell" data-astro-cid-mw7aashj> <details class="docs-nav-drawer" data-astro-cid-mw7aashj> <summary data-astro-cid-mw7aashj>Navigate</summary> <nav class="docs-nav" aria-label="Documentation"> <div class="docs-search" data-index-url="/__pyric/ui/docs/index.json"> <div class="docs-search-field"> <svg class="docs-search-icon" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"> <path d="M11.5 11.5 15 15M13 7A6 6 0 1 1 1 7a6 6 0 0 1 12 0Z" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path> </svg> <input type="text" class="docs-search-input" placeholder="Search docs" aria-label="Search docs" autocomplete="off" spellcheck="false"> <kbd class="docs-search-kbd">⌘K</kbd> </div> <ul class="docs-search-results" hidden></ul> </div> <script type="module">let i=null;function d(t){return i||(i=fetch(t).then(e=>e.json())),i}function l(t,e){return t.title.toLowerCase().includes(e)||t.excerpt.toLowerCase().includes(e)?!0:t.headings.some(r=>r.text.toLowerCase().includes(e))}function u(t,e,r){if(e.innerHTML="",t.length===0){e.hidden=!1;{const n=document.createElement("li");n.className="docs-search-empty",n.textContent="No matches",e.appendChild(n)}return}e.hidden=!1;for(const n of t.slice(0,8)){const s=document.createElement("li"),c=document.createElement("a");c.href=n.path;const o=document.createElement("span");o.className="docs-search-result-title",o.textContent=n.title;const a=document.createElement("span");a.className="docs-search-result-meta",a.textContent=[n.group,n.section].filter(Boolean).join(" / "),c.append(o,a),s.appendChild(c),e.appendChild(s)}}document.querySelectorAll(".docs-search").forEach(t=>{const e=t.dataset.indexUrl,r=t.querySelector(".docs-search-input"),n=t.querySelector(".docs-search-results");r.addEventListener("input",async()=>{const s=r.value.trim().toLowerCase();if(!s){n.hidden=!0,n.innerHTML="";return}const{pages:c}=await d(e);r.value.trim().toLowerCase()===s&&u(c.filter(o=>l(o,s)),n)}),r.addEventListener("focus",()=>{d(e),n.childElementCount>0&&(n.hidden=!1)}),r.addEventListener("keydown",s=>{s.key==="Escape"&&(r.value="",n.hidden=!0,n.innerHTML="",r.blur())}),r.addEventListener("blur",()=>{window.setTimeout(()=>{n.hidden=!0},150)})});document.addEventListener("keydown",t=>{if(!(t.metaKey||t.ctrlKey)||t.key.toLowerCase()!=="k")return;const e=[...document.querySelectorAll(".docs-search-input")].find(r=>r.offsetParent!==null);e&&(t.preventDefault(),e.focus(),e.select())});</script> <details class="docs-nav-group"> <summary>Overview</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/overview/"> Overview </a> </li><li> <a href="/__pyric/ui/docs/tutorial/"> Tutorial </a> </li><li> <a href="/__pyric/ui/docs/examples/"> Examples </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Get started</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/get-started/start-building/"> Quickstart </a> </li><li> <a href="/__pyric/ui/docs/get-started/vite/"> Vite </a> </li><li> <a href="/__pyric/ui/docs/get-started/nextjs/"> Next.js </a> </li><li> <a href="/__pyric/ui/docs/get-started/how-the-swap-works/"> How the swap works </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Build</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/build/authentication/"> Authentication </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-firestore/"> Cloud Firestore </a> </li><li> <a href="/__pyric/ui/docs/build/realtime-database/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-storage/"> Cloud Storage </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-messaging/"> Cloud Messaging </a> </li><li> <a href="/__pyric/ui/docs/build/ai-logic/"> AI Logic </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Secure & debug</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/secure/secure-it-with-rules/"> Security Rules </a> </li><li> <a href="/__pyric/ui/docs/secure/simulate-and-lint/"> Simulate and lint before you deploy </a> </li><li> <a href="/__pyric/ui/docs/secure/write-a-rules-test-suite/"> Write a rules test suite </a> </li><li> <a href="/__pyric/ui/docs/secure/read-a-denial/"> Read a denial and understand it </a> </li><li> <a href="/__pyric/ui/docs/secure/rules-standard-library/"> The rules standard library </a> </li><li> <a href="/__pyric/ui/docs/secure/rtdb-rules-in-typescript/"> RTDB rules in TypeScript </a> </li><li> <a href="/__pyric/ui/docs/secure/firestore-rules-limits/"> Rules limits </a> </li><li> <a href="/__pyric/ui/docs/secure/audit-your-rules/"> Audit rules and data </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading"> Examples </h2> <ul> <li> <a href="/__pyric/ui/docs/examples/chess/"> Chess showcase </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Observe & 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 & rule verdicts </a> </li><li> <a href="/__pyric/ui/docs/observe/resolve-runtime-status/"> Runtime status </a> </li><li> <a href="/__pyric/ui/docs/observe/shape-your-data/"> Seed, snapshot, replay </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Ship & test</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/ship/ship-to-production/"> Ship to production </a> </li><li> <a href="/__pyric/ui/docs/ship/test-in-node/"> Test in Node </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Work with an agent</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/agent/set-up-your-agent/"> Connect an agent </a> </li><li> <a href="/__pyric/ui/docs/agent/work-with-an-agent/"> Use the MCP tools </a> </li><li> <a href="/__pyric/ui/docs/agent/watch-and-review/"> Watch in Pyric Studio </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Trust</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/trust/versioning-and-compatibility/"> Versioning and the fb tag </a> </li><li> <a href="/__pyric/ui/docs/trust/rules-standard-library/"> Rules standard library reference </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Conformance</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/conformance-scores/"> Conformance scores </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/" aria-current="page"> pyric/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage-reference-api/"> pyric/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-reference-api/"> pyric/messaging </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-sw-reference-api/"> pyric/messaging/sw </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules-reference-api/"> pyric/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-reference-api/"> pyric/sandbox </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-firestore-reference-api/"> pyric/sandbox/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-database-reference-api/"> pyric/sandbox/database </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric-admin</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-admin-reference-api/"> pyric-admin </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-app-reference-api/"> pyric-admin/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-firestore-reference-api/"> pyric-admin/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-auth-reference-api/"> pyric-admin/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-database-reference-api/"> pyric-admin/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-storage-reference-api/"> pyric-admin/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-messaging-reference-api/"> pyric-admin/messaging </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">create-pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/create-pyric-reference-api/"> create-pyric </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/cli</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli-credentials-node-reference-api/"> @pyric/cli/credentials/node </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-verify-reference-api/"> @pyric/cli/verify </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-reference-api/"> @pyric/cli/conformance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-browser-reference-api/"> @pyric/cli/conformance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-docs-reference-api/"> @pyric/cli/conformance/docs </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-reference-api/"> @pyric/cli/assurance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-browser-reference-api/"> @pyric/cli/assurance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-reference-api/"> @pyric/cli/bridge </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-client-reference-api/"> @pyric/cli/bridge/client </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-discover-reference-api/"> @pyric/cli/discover </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-vite-reference-api/"> @pyric/cli/vite </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-next-reference-api/"> @pyric/cli/next </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-serve-worker-reference-api/"> @pyric/cli/serve/worker </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-remote-reference-api/"> @pyric/cli/remote </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-register-reference-api/"> @pyric/cli/register </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-register-app-bridge-reference-api/"> @pyric/cli/register/app-bridge </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/ui</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-ui-auth-reference-api/"> @pyric/ui/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-auth-hooks-reference-api/"> @pyric/ui/auth/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-primitives-reference-api/"> @pyric/ui/primitives </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-firestore-reference-api/"> @pyric/ui/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-firestore-hooks-reference-api/"> @pyric/ui/firestore/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rtdb-reference-api/"> @pyric/ui/rtdb </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-storage-reference-api/"> @pyric/ui/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-storage-hooks-reference-api/"> @pyric/ui/storage/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-traffic-reference-api/"> @pyric/ui/traffic </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-traffic-hooks-reference-api/"> @pyric/ui/traffic/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-events-reference-api/"> @pyric/ui/events </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-events-hooks-reference-api/"> @pyric/ui/events/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-agents-reference-api/"> @pyric/ui/agents </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rules-reference-api/"> @pyric/ui/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rules-hooks-reference-api/"> @pyric/ui/rules/hooks </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/cli</h2> <ul> <li> <a href="/__pyric/ui/docs/reference/cli/"> CLI </a> </li> </ul> </div> </div> </details> </nav> </details> <nav class="docs-nav" aria-label="Documentation"> <div class="docs-search" data-index-url="/__pyric/ui/docs/index.json"> <div class="docs-search-field"> <svg class="docs-search-icon" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"> <path d="M11.5 11.5 15 15M13 7A6 6 0 1 1 1 7a6 6 0 0 1 12 0Z" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path> </svg> <input type="text" class="docs-search-input" placeholder="Search docs" aria-label="Search docs" autocomplete="off" spellcheck="false"> <kbd class="docs-search-kbd">⌘K</kbd> </div> <ul class="docs-search-results" hidden></ul> </div> <details class="docs-nav-group" id="nav-group-overview"> <summary>Overview</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/overview/"> Overview </a> </li><li> <a href="/__pyric/ui/docs/tutorial/"> Tutorial </a> </li><li> <a href="/__pyric/ui/docs/examples/"> Examples </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-get-started"> <summary>Get started</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/get-started/start-building/"> Quickstart </a> </li><li> <a href="/__pyric/ui/docs/get-started/vite/"> Vite </a> </li><li> <a href="/__pyric/ui/docs/get-started/nextjs/"> Next.js </a> </li><li> <a href="/__pyric/ui/docs/get-started/how-the-swap-works/"> How the swap works </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-build"> <summary>Build</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/build/authentication/"> Authentication </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-firestore/"> Cloud Firestore </a> </li><li> <a href="/__pyric/ui/docs/build/realtime-database/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-storage/"> Cloud Storage </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-messaging/"> Cloud Messaging </a> </li><li> <a href="/__pyric/ui/docs/build/ai-logic/"> AI Logic </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-secure-debug"> <summary>Secure & debug</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/secure/secure-it-with-rules/"> Security Rules </a> </li><li> <a href="/__pyric/ui/docs/secure/simulate-and-lint/"> Simulate and lint before you deploy </a> </li><li> <a href="/__pyric/ui/docs/secure/write-a-rules-test-suite/"> Write a rules test suite </a> </li><li> <a href="/__pyric/ui/docs/secure/read-a-denial/"> Read a denial and understand it </a> </li><li> <a href="/__pyric/ui/docs/secure/rules-standard-library/"> The rules standard library </a> </li><li> <a href="/__pyric/ui/docs/secure/rtdb-rules-in-typescript/"> RTDB rules in TypeScript </a> </li><li> <a href="/__pyric/ui/docs/secure/firestore-rules-limits/"> Rules limits </a> </li><li> <a href="/__pyric/ui/docs/secure/audit-your-rules/"> Audit rules and data </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading" id="nav-section-secure-debug-examples"> Examples </h2> <ul> <li> <a href="/__pyric/ui/docs/examples/chess/"> Chess showcase </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-observe-shape"> <summary>Observe & 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 & rule verdicts </a> </li><li> <a href="/__pyric/ui/docs/observe/resolve-runtime-status/"> Runtime status </a> </li><li> <a href="/__pyric/ui/docs/observe/shape-your-data/"> Seed, snapshot, replay </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-ship-test"> <summary>Ship & test</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/ship/ship-to-production/"> Ship to production </a> </li><li> <a href="/__pyric/ui/docs/ship/test-in-node/"> Test in Node </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-work-with-an-agent"> <summary>Work with an agent</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/agent/set-up-your-agent/"> Connect an agent </a> </li><li> <a href="/__pyric/ui/docs/agent/work-with-an-agent/"> Use the MCP tools </a> </li><li> <a href="/__pyric/ui/docs/agent/watch-and-review/"> Watch in Pyric Studio </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-trust"> <summary>Trust</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/trust/versioning-and-compatibility/"> Versioning and the fb tag </a> </li><li> <a href="/__pyric/ui/docs/trust/rules-standard-library/"> Rules standard library reference </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-conformance"> <summary>Conformance</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/conformance-scores/"> Conformance scores </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/" aria-current="page"> pyric/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage-reference-api/"> pyric/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-reference-api/"> pyric/messaging </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-sw-reference-api/"> pyric/messaging/sw </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules-reference-api/"> pyric/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-reference-api/"> pyric/sandbox </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-firestore-reference-api/"> pyric/sandbox/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-database-reference-api/"> pyric/sandbox/database </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric-admin</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-admin-reference-api/"> pyric-admin </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-app-reference-api/"> pyric-admin/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-firestore-reference-api/"> pyric-admin/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-auth-reference-api/"> pyric-admin/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-database-reference-api/"> pyric-admin/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-storage-reference-api/"> pyric-admin/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-messaging-reference-api/"> pyric-admin/messaging </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">create-pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/create-pyric-reference-api/"> create-pyric </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/cli</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli-credentials-node-reference-api/"> @pyric/cli/credentials/node </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-verify-reference-api/"> @pyric/cli/verify </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-reference-api/"> @pyric/cli/conformance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-browser-reference-api/"> @pyric/cli/conformance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-docs-reference-api/"> @pyric/cli/conformance/docs </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-reference-api/"> @pyric/cli/assurance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-browser-reference-api/"> @pyric/cli/assurance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-reference-api/"> @pyric/cli/bridge </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-client-reference-api/"> @pyric/cli/bridge/client </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-discover-reference-api/"> @pyric/cli/discover </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-vite-reference-api/"> @pyric/cli/vite </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-next-reference-api/"> @pyric/cli/next </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-serve-worker-reference-api/"> @pyric/cli/serve/worker </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-remote-reference-api/"> @pyric/cli/remote </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-register-reference-api/"> @pyric/cli/register </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-register-app-bridge-reference-api/"> @pyric/cli/register/app-bridge </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/ui</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-ui-auth-reference-api/"> @pyric/ui/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-auth-hooks-reference-api/"> @pyric/ui/auth/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-primitives-reference-api/"> @pyric/ui/primitives </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-firestore-reference-api/"> @pyric/ui/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-firestore-hooks-reference-api/"> @pyric/ui/firestore/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rtdb-reference-api/"> @pyric/ui/rtdb </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-storage-reference-api/"> @pyric/ui/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-storage-hooks-reference-api/"> @pyric/ui/storage/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-traffic-reference-api/"> @pyric/ui/traffic </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-traffic-hooks-reference-api/"> @pyric/ui/traffic/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-events-reference-api/"> @pyric/ui/events </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-events-hooks-reference-api/"> @pyric/ui/events/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-agents-reference-api/"> @pyric/ui/agents </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rules-reference-api/"> @pyric/ui/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rules-hooks-reference-api/"> @pyric/ui/rules/hooks </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/cli</h2> <ul> <li> <a href="/__pyric/ui/docs/reference/cli/"> CLI </a> </li> </ul> </div> </div> </details> </nav> <main class="doc-main" data-astro-cid-mw7aashj> <nav class="docs-breadcrumbs" aria-label="Breadcrumb"> <ol> <li> <a href="/__pyric/ui/docs/api-reference/">API reference</a> </li><li> <span class="docs-breadcrumbs-sep" aria-hidden="true">/</span> <span>pyric</span> </li><li> <span class="docs-breadcrumbs-sep" aria-hidden="true">/</span> <span aria-current="page">pyric/database</span> </li> </ol> </nav> <header class="api-reference-header" data-astro-cid-mw7aashj> <p class="api-reference-kicker" data-astro-cid-mw7aashj>API reference</p> <h1 data-astro-cid-mw7aashj><code data-astro-cid-mw7aashj>pyric/database</code></h1> <p class="api-reference-meta" data-astro-cid-mw7aashj> 69 published symbols from <code data-astro-cid-mw7aashj>pyric</code> </p> <p class="api-reference-source" data-astro-cid-mw7aashj>
|
|
3
6
|
Generated from the TypeScript declarations shipped at this import path.
|
|
4
7
|
</p> <a class="api-reference-evidence" href="/__pyric/ui/docs/database-compat/" data-astro-cid-mw7aashj>
|
|
5
8
|
Check behavioral conformance
|
|
@@ -1151,6 +1154,26 @@ nodes don’t exist”. The crawl + listener layers count on this so
|
|
|
1151
1154
|
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">const</span><span style="color:#E5C07B"> CONSTRAINT_SYMBOL</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">unique</span><span style="color:#E5C07B"> symbol</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1152
1155
|
<p>Hidden brand on every QueryConstraint.</p>
|
|
1153
1156
|
<hr>
|
|
1157
|
+
<p><a id="default_deny_rtdb_rules"></a></p>
|
|
1158
|
+
<h3 id="default_deny_rtdb_rules">DEFAULT_DENY_RTDB_RULES</h3>
|
|
1159
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">const</span><span style="color:#E5C07B"> DEFAULT_DENY_RTDB_RULES</span><span style="color:#ABB2BF">: {</span></span>
|
|
1160
|
+
<span class="line"><span style="color:#E06C75"> rules</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Record</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">>;</span></span>
|
|
1161
|
+
<span class="line"><span style="color:#ABB2BF">};</span></span></code></pre>
|
|
1162
|
+
<h4 id="type-declaration-1">Type Declaration</h4>
|
|
1163
|
+
<p><a id="rules"></a></p>
|
|
1164
|
+
<h5 id="rules">rules</h5>
|
|
1165
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">rules</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">Record</span><span style="color:#56B6C2"><</span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">unknown</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1166
|
+
<hr>
|
|
1167
|
+
<p><a id="default_open_rtdb_rules"></a></p>
|
|
1168
|
+
<h3 id="default_open_rtdb_rules">DEFAULT_OPEN_RTDB_RULES</h3>
|
|
1169
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">const</span><span style="color:#E5C07B"> DEFAULT_OPEN_RTDB_RULES</span><span style="color:#ABB2BF">: {</span></span>
|
|
1170
|
+
<span class="line"><span style="color:#E06C75"> rules</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Record</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">>;</span></span>
|
|
1171
|
+
<span class="line"><span style="color:#ABB2BF">};</span></span></code></pre>
|
|
1172
|
+
<h4 id="type-declaration-2">Type Declaration</h4>
|
|
1173
|
+
<p><a id="rules-1"></a></p>
|
|
1174
|
+
<h5 id="rules-1">rules</h5>
|
|
1175
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">rules</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">Record</span><span style="color:#56B6C2"><</span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">unknown</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1176
|
+
<hr>
|
|
1154
1177
|
<p><a id="query_symbol-3"></a></p>
|
|
1155
1178
|
<h3 id="query_symbol">QUERY_SYMBOL</h3>
|
|
1156
1179
|
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">const</span><span style="color:#E5C07B"> QUERY_SYMBOL</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">unique</span><span style="color:#E5C07B"> symbol</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
@@ -1159,11 +1182,32 @@ nodes don’t exist”. The crawl + listener layers count on this so
|
|
|
1159
1182
|
<p><a id="sandbox"></a></p>
|
|
1160
1183
|
<h3 id="sandbox">sandbox</h3>
|
|
1161
1184
|
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">const</span><span style="color:#E5C07B"> sandbox</span><span style="color:#ABB2BF">: {</span></span>
|
|
1185
|
+
<span class="line"><span style="color:#E06C75"> DEFAULT_DENY_RULES</span><span style="color:#ABB2BF">: {</span></span>
|
|
1186
|
+
<span class="line"><span style="color:#E06C75"> rules</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Record</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">>;</span></span>
|
|
1187
|
+
<span class="line"><span style="color:#ABB2BF"> };</span></span>
|
|
1188
|
+
<span class="line"><span style="color:#E06C75"> DEFAULT_OPEN_RULES</span><span style="color:#ABB2BF">: {</span></span>
|
|
1189
|
+
<span class="line"><span style="color:#E06C75"> rules</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Record</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">>;</span></span>
|
|
1190
|
+
<span class="line"><span style="color:#ABB2BF"> };</span></span>
|
|
1162
1191
|
<span class="line"><span style="color:#E06C75"> setData</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">;</span></span>
|
|
1192
|
+
<span class="line"><span style="color:#E06C75"> setDefaultPolicy</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">;</span></span>
|
|
1163
1193
|
<span class="line"><span style="color:#E06C75"> setRules</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">;</span></span>
|
|
1164
1194
|
<span class="line"><span style="color:#E06C75"> snapshotState</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">JsonValue</span><span style="color:#ABB2BF">;</span></span>
|
|
1165
1195
|
<span class="line"><span style="color:#ABB2BF">};</span></span></code></pre>
|
|
1166
|
-
<h4 id="type-declaration-
|
|
1196
|
+
<h4 id="type-declaration-3">Type Declaration</h4>
|
|
1197
|
+
<p><a id="default_deny_rules"></a></p>
|
|
1198
|
+
<h5 id="default_deny_rules">DEFAULT_DENY_RULES</h5>
|
|
1199
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">DEFAULT_DENY_RULES</span><span style="color:#ABB2BF">: {</span></span>
|
|
1200
|
+
<span class="line"><span style="color:#E06C75"> rules</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">Record</span><span style="color:#56B6C2"><</span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">unknown</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span>
|
|
1201
|
+
<span class="line"><span style="color:#ABB2BF">};</span></span></code></pre>
|
|
1202
|
+
<h6 id="default_deny_rulesrules">DEFAULT_DENY_RULES.rules</h6>
|
|
1203
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">rules</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">Record</span><span style="color:#56B6C2"><</span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">unknown</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1204
|
+
<p><a id="default_open_rules"></a></p>
|
|
1205
|
+
<h5 id="default_open_rules">DEFAULT_OPEN_RULES</h5>
|
|
1206
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">DEFAULT_OPEN_RULES</span><span style="color:#ABB2BF">: {</span></span>
|
|
1207
|
+
<span class="line"><span style="color:#E06C75"> rules</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">Record</span><span style="color:#56B6C2"><</span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">unknown</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span>
|
|
1208
|
+
<span class="line"><span style="color:#ABB2BF">};</span></span></code></pre>
|
|
1209
|
+
<h6 id="default_open_rulesrules">DEFAULT_OPEN_RULES.rules</h6>
|
|
1210
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">rules</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">Record</span><span style="color:#56B6C2"><</span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">unknown</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1167
1211
|
<p><a id="setdata"></a></p>
|
|
1168
1212
|
<h5 id="setdata">setData()</h5>
|
|
1169
1213
|
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">setData</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">db</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">Database</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">data</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">Record</span><span style="color:#56B6C2"><</span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">unknown</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">): </span><span style="color:#C678DD">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
@@ -1191,15 +1235,42 @@ paths. Convenient for test fixtures.</p>
|
|
|
1191
1235
|
<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="#database"><code>Database</code></a></td></tr><tr><td align="left"><code>data</code></td><td align="left"><code>Record</code><<code>string</code>, <code>unknown</code>></td></tr></tbody></table></div>
|
|
1192
1236
|
<h6 id="returns-51">Returns</h6>
|
|
1193
1237
|
<p><code>void</code></p>
|
|
1238
|
+
<p><a id="setdefaultpolicy"></a></p>
|
|
1239
|
+
<h5 id="setdefaultpolicy">setDefaultPolicy()</h5>
|
|
1240
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">setDefaultPolicy</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">db</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">Database</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">policy</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"allow"</span><span style="color:#56B6C2"> |</span><span style="color:#98C379"> "deny"</span><span style="color:#ABB2BF">): </span><span style="color:#C678DD">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1241
|
+
<p>Set the default access policy when no rules are loaded (‘allow’ or ‘deny’).
|
|
1242
|
+
In ‘deny’ mode (matching production Firebase), all client reads and writes
|
|
1243
|
+
without rules are rejected with PERMISSION_DENIED.</p>
|
|
1244
|
+
<h6 id="parameters-22">Parameters</h6>
|
|
1245
|
+
<div class="table-scroll">
|
|
1246
|
+
|
|
1247
|
+
|
|
1248
|
+
|
|
1249
|
+
|
|
1250
|
+
|
|
1251
|
+
|
|
1252
|
+
|
|
1253
|
+
|
|
1254
|
+
|
|
1255
|
+
|
|
1256
|
+
|
|
1257
|
+
|
|
1258
|
+
|
|
1259
|
+
|
|
1260
|
+
|
|
1261
|
+
|
|
1262
|
+
<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="#database"><code>Database</code></a></td></tr><tr><td align="left"><code>policy</code></td><td align="left"><code>"allow"</code> | <code>"deny"</code></td></tr></tbody></table></div>
|
|
1263
|
+
<h6 id="returns-52">Returns</h6>
|
|
1264
|
+
<p><code>void</code></p>
|
|
1194
1265
|
<p><a id="setrules"></a></p>
|
|
1195
1266
|
<h5 id="setrules">setRules()</h5>
|
|
1196
1267
|
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">setRules</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">db</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">Database</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">rulesJson</span><span style="color:#ABB2BF">: {</span></span>
|
|
1197
1268
|
<span class="line"><span style="color:#E06C75"> rules</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">Record</span><span style="color:#56B6C2"><</span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">, unknown>;</span></span>
|
|
1198
1269
|
<span class="line"><span style="color:#ABB2BF">}): </span><span style="color:#C678DD">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1199
1270
|
<p>Replace deployed rules. Pass <code>null</code> to clear (sandbox returns to
|
|
1200
|
-
default
|
|
1271
|
+
default policy). Rules are evaluated through the existing
|
|
1201
1272
|
RTDB rules simulator — the same engine used by the rules tooling.</p>
|
|
1202
|
-
<h6 id="parameters-
|
|
1273
|
+
<h6 id="parameters-23">Parameters</h6>
|
|
1203
1274
|
<div class="table-scroll">
|
|
1204
1275
|
|
|
1205
1276
|
|
|
@@ -1222,7 +1293,7 @@ RTDB rules simulator — the same engine used by the rules tooling.</p>
|
|
|
1222
1293
|
|
|
1223
1294
|
|
|
1224
1295
|
<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="#database"><code>Database</code></a></td></tr><tr><td align="left"><code>rulesJson</code></td><td align="left">{ <code>rules</code>: <code>Record</code><<code>string</code>, <code>unknown</code>>; }</td></tr><tr><td align="left"><code>rulesJson.rules</code></td><td align="left"><code>Record</code><<code>string</code>, <code>unknown</code>></td></tr></tbody></table></div>
|
|
1225
|
-
<h6 id="returns-
|
|
1296
|
+
<h6 id="returns-53">Returns</h6>
|
|
1226
1297
|
<p><code>void</code></p>
|
|
1227
1298
|
<h6 id="example">Example</h6>
|
|
1228
1299
|
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E5C07B">sandbox</span><span style="color:#ABB2BF">.</span><span style="color:#61AFEF">setRules</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">db</span><span style="color:#ABB2BF">, {</span></span>
|
|
@@ -1236,7 +1307,7 @@ RTDB rules simulator — the same engine used by the rules tooling.</p>
|
|
|
1236
1307
|
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">snapshotState</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">db</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">Database</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">JsonValue</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1237
1308
|
<p>Snapshot the full sandbox tree (rule-bypass read). Usually a keyed
|
|
1238
1309
|
object; may be a primitive when the root holds one (DB-B13).</p>
|
|
1239
|
-
<h6 id="parameters-
|
|
1310
|
+
<h6 id="parameters-24">Parameters</h6>
|
|
1240
1311
|
<div class="table-scroll">
|
|
1241
1312
|
|
|
1242
1313
|
|
|
@@ -1251,7 +1322,7 @@ object; may be a primitive when the root holds one (DB-B13).</p>
|
|
|
1251
1322
|
|
|
1252
1323
|
|
|
1253
1324
|
<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="#database"><code>Database</code></a></td></tr></tbody></table></div>
|
|
1254
|
-
<h6 id="returns-
|
|
1325
|
+
<h6 id="returns-54">Returns</h6>
|
|
1255
1326
|
<p><a href="#jsonvalue"><code>JsonValue</code></a></p>
|
|
1256
1327
|
<hr>
|
|
1257
1328
|
<p><a id="target_symbol-1"></a></p>
|
|
@@ -1265,7 +1336,7 @@ object; may be a primitive when the root holds one (DB-B13).</p>
|
|
|
1265
1336
|
<p>Build a sandbox-backed <code>DatabaseReference</code>. Cached parent / root
|
|
1266
1337
|
pointers are computed lazily so a long chain doesn’t materialise
|
|
1267
1338
|
every intermediate ref upfront.</p>
|
|
1268
|
-
<h4 id="parameters-
|
|
1339
|
+
<h4 id="parameters-25">Parameters</h4>
|
|
1269
1340
|
<div class="table-scroll">
|
|
1270
1341
|
|
|
1271
1342
|
|
|
@@ -1284,7 +1355,7 @@ every intermediate ref upfront.</p>
|
|
|
1284
1355
|
|
|
1285
1356
|
|
|
1286
1357
|
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>target</code></td><td align="left"><code>SandboxTarget</code> | <code>SandboxLiveTarget</code></td></tr><tr><td align="left"><code>path</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
1287
|
-
<h4 id="returns-
|
|
1358
|
+
<h4 id="returns-55">Returns</h4>
|
|
1288
1359
|
<p><a href="#databasereference"><code>DatabaseReference</code></a></p>
|
|
1289
1360
|
<hr>
|
|
1290
1361
|
<p><a id="child-6"></a></p>
|
|
@@ -1294,7 +1365,7 @@ every intermediate ref upfront.</p>
|
|
|
1294
1365
|
<code><ref>/sub/path</code>.</p>
|
|
1295
1366
|
<p>Mirrors <code>firebase/database</code>’s <code>child(parent, path)</code> — leading +
|
|
1296
1367
|
empty segments stripped; the result inherits the parent’s target.</p>
|
|
1297
|
-
<h4 id="parameters-
|
|
1368
|
+
<h4 id="parameters-26">Parameters</h4>
|
|
1298
1369
|
<div class="table-scroll">
|
|
1299
1370
|
|
|
1300
1371
|
|
|
@@ -1313,7 +1384,7 @@ empty segments stripped; the result inherits the parent’s target.</p>
|
|
|
1313
1384
|
|
|
1314
1385
|
|
|
1315
1386
|
<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="#databasereference"><code>DatabaseReference</code></a></td></tr><tr><td align="left"><code>path</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
1316
|
-
<h4 id="returns-
|
|
1387
|
+
<h4 id="returns-56">Returns</h4>
|
|
1317
1388
|
<p><a href="#databasereference"><code>DatabaseReference</code></a></p>
|
|
1318
1389
|
<hr>
|
|
1319
1390
|
<p><a id="connectdatabaseemulator"></a></p>
|
|
@@ -1327,7 +1398,7 @@ empty segments stripped; the result inherits the parent’s target.</p>
|
|
|
1327
1398
|
<span class="line"><span style="color:#ABB2BF">}): </span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1328
1399
|
<p><code>connectDatabaseEmulator(db, host, port)</code> is an accepted no-op because the
|
|
1329
1400
|
selected backend already is the local sandbox.</p>
|
|
1330
|
-
<h4 id="parameters-
|
|
1401
|
+
<h4 id="parameters-27">Parameters</h4>
|
|
1331
1402
|
<div class="table-scroll">
|
|
1332
1403
|
|
|
1333
1404
|
|
|
@@ -1358,7 +1429,7 @@ selected backend already is the local sandbox.</p>
|
|
|
1358
1429
|
|
|
1359
1430
|
|
|
1360
1431
|
<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="#database"><code>Database</code></a></td></tr><tr><td align="left"><code>_host</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>_port</code></td><td align="left"><code>number</code></td></tr><tr><td align="left"><code>_options?</code></td><td align="left">{ <code>mockUserToken?</code>: <code>string</code> | <a href="#emulatormocktokenoptions"><code>EmulatorMockTokenOptions</code></a>; }</td></tr><tr><td align="left"><code>_options.mockUserToken?</code></td><td align="left"><code>string</code> | <a href="#emulatormocktokenoptions"><code>EmulatorMockTokenOptions</code></a></td></tr></tbody></table></div>
|
|
1361
|
-
<h4 id="returns-
|
|
1432
|
+
<h4 id="returns-57">Returns</h4>
|
|
1362
1433
|
<p><code>void</code></p>
|
|
1363
1434
|
<hr>
|
|
1364
1435
|
<p><a id="enablelogging"></a></p>
|
|
@@ -1369,7 +1440,7 @@ selected backend already is the local sandbox.</p>
|
|
|
1369
1440
|
level/sink into (it uses host-level <code>console</code> logging directly, gated
|
|
1370
1441
|
by <code>pyric dev</code>’s own flags — matching <code>pyric/firestore</code>’s
|
|
1371
1442
|
<code>setLogLevel</code>). Accepted so init code that calls it compiles + runs.</p>
|
|
1372
|
-
<h4 id="parameters-
|
|
1443
|
+
<h4 id="parameters-28">Parameters</h4>
|
|
1373
1444
|
<div class="table-scroll">
|
|
1374
1445
|
|
|
1375
1446
|
|
|
@@ -1388,7 +1459,7 @@ by <code>pyric dev</code>’s own flags — matching <code>pyric/firestore</code
|
|
|
1388
1459
|
|
|
1389
1460
|
|
|
1390
1461
|
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>logger?</code></td><td align="left"><code>boolean</code> | (<code>message</code>: <code>string</code>) => <code>void</code></td></tr><tr><td align="left"><code>persistent?</code></td><td align="left"><code>boolean</code></td></tr></tbody></table></div>
|
|
1391
|
-
<h4 id="returns-
|
|
1462
|
+
<h4 id="returns-58">Returns</h4>
|
|
1392
1463
|
<p><code>void</code></p>
|
|
1393
1464
|
<hr>
|
|
1394
1465
|
<p><a id="endat"></a></p>
|
|
@@ -1396,7 +1467,7 @@ by <code>pyric dev</code>’s own flags — matching <code>pyric/firestore</code
|
|
|
1396
1467
|
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> endAt</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">value</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">JsonValue</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">key</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">QueryConstraint</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1397
1468
|
<p><code>endAt(value, key?)</code> — INCLUSIVE upper bound. Adjacent to startAt;
|
|
1398
1469
|
same key tie-breaker semantics.</p>
|
|
1399
|
-
<h4 id="parameters-
|
|
1470
|
+
<h4 id="parameters-29">Parameters</h4>
|
|
1400
1471
|
<div class="table-scroll">
|
|
1401
1472
|
|
|
1402
1473
|
|
|
@@ -1415,7 +1486,7 @@ same key tie-breaker semantics.</p>
|
|
|
1415
1486
|
|
|
1416
1487
|
|
|
1417
1488
|
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>value</code></td><td align="left"><a href="#jsonvalue"><code>JsonValue</code></a></td></tr><tr><td align="left"><code>key?</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
1418
|
-
<h4 id="returns-
|
|
1489
|
+
<h4 id="returns-59">Returns</h4>
|
|
1419
1490
|
<p><a href="#queryconstraint"><code>QueryConstraint</code></a></p>
|
|
1420
1491
|
<hr>
|
|
1421
1492
|
<p><a id="endbefore"></a></p>
|
|
@@ -1423,7 +1494,7 @@ same key tie-breaker semantics.</p>
|
|
|
1423
1494
|
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> endBefore</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">value</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">JsonValue</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">key</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">QueryConstraint</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1424
1495
|
<p><code>endBefore(value, key?)</code> — EXCLUSIVE upper bound. Locked by
|
|
1425
1496
|
<code>rtdb-modular-startafter-endbefore-exclusive.json</code>.</p>
|
|
1426
|
-
<h4 id="parameters-
|
|
1497
|
+
<h4 id="parameters-30">Parameters</h4>
|
|
1427
1498
|
<div class="table-scroll">
|
|
1428
1499
|
|
|
1429
1500
|
|
|
@@ -1442,7 +1513,7 @@ same key tie-breaker semantics.</p>
|
|
|
1442
1513
|
|
|
1443
1514
|
|
|
1444
1515
|
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>value</code></td><td align="left"><a href="#jsonvalue"><code>JsonValue</code></a></td></tr><tr><td align="left"><code>key?</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
1445
|
-
<h4 id="returns-
|
|
1516
|
+
<h4 id="returns-60">Returns</h4>
|
|
1446
1517
|
<p><a href="#queryconstraint"><code>QueryConstraint</code></a></p>
|
|
1447
1518
|
<hr>
|
|
1448
1519
|
<p><a id="equalto"></a></p>
|
|
@@ -1450,7 +1521,7 @@ same key tie-breaker semantics.</p>
|
|
|
1450
1521
|
<pre class="astro-code 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"> equalTo</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">value</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">JsonValue</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">key</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">QueryConstraint</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1451
1522
|
<p><code>equalTo(value, key?)</code> — sugar for <code>startAt(value, key) + endAt(value, key)</code>. Returns ALL matching children (no uniqueness).
|
|
1452
1523
|
Locked by oracle observation <code>rtdb-modular-equalTo-filter.json</code>.</p>
|
|
1453
|
-
<h4 id="parameters-
|
|
1524
|
+
<h4 id="parameters-31">Parameters</h4>
|
|
1454
1525
|
<div class="table-scroll">
|
|
1455
1526
|
|
|
1456
1527
|
|
|
@@ -1469,7 +1540,7 @@ Locked by oracle observation <code>rtdb-modular-equalTo-filter.json</code>.</p>
|
|
|
1469
1540
|
|
|
1470
1541
|
|
|
1471
1542
|
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>value</code></td><td align="left"><a href="#jsonvalue"><code>JsonValue</code></a></td></tr><tr><td align="left"><code>key?</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
1472
|
-
<h4 id="returns-
|
|
1543
|
+
<h4 id="returns-61">Returns</h4>
|
|
1473
1544
|
<p><a href="#queryconstraint"><code>QueryConstraint</code></a></p>
|
|
1474
1545
|
<hr>
|
|
1475
1546
|
<p><a id="forcelongpolling"></a></p>
|
|
@@ -1480,7 +1551,7 @@ subsequent <code>getDatabase</code> connections.</p>
|
|
|
1480
1551
|
<p>No-op: transport selection is meaningless to the in-process/worker
|
|
1481
1552
|
sandbox, which never opens a real socket. Accepted so init code that
|
|
1482
1553
|
calls it unconditionally compiles + runs.</p>
|
|
1483
|
-
<h4 id="returns-
|
|
1554
|
+
<h4 id="returns-62">Returns</h4>
|
|
1484
1555
|
<p><code>void</code></p>
|
|
1485
1556
|
<hr>
|
|
1486
1557
|
<p><a id="forcewebsockets"></a></p>
|
|
@@ -1490,7 +1561,7 @@ calls it unconditionally compiles + runs.</p>
|
|
|
1490
1561
|
subsequent <code>getDatabase</code> connections.</p>
|
|
1491
1562
|
<p>No-op: transport selection is not applicable to the in-process/worker
|
|
1492
1563
|
sandbox (see <a href="#forcelongpolling">forceLongPolling</a>).</p>
|
|
1493
|
-
<h4 id="returns-
|
|
1564
|
+
<h4 id="returns-63">Returns</h4>
|
|
1494
1565
|
<p><code>void</code></p>
|
|
1495
1566
|
<hr>
|
|
1496
1567
|
<p><a id="get"></a></p>
|
|
@@ -1502,7 +1573,7 @@ sandbox (see <a href="#forcelongpolling">forceLongPolling</a>).</p>
|
|
|
1502
1573
|
shape locked by the oracle.</p>
|
|
1503
1574
|
<p>Absent path → <code>snap.val() === null && snap.exists() === false</code>.
|
|
1504
1575
|
Matches the SDK’s <code>DataSnapshot.val()</code> contract.</p>
|
|
1505
|
-
<h4 id="parameters-
|
|
1576
|
+
<h4 id="parameters-32">Parameters</h4>
|
|
1506
1577
|
<div class="table-scroll">
|
|
1507
1578
|
|
|
1508
1579
|
|
|
@@ -1517,7 +1588,7 @@ Matches the SDK’s <code>DataSnapshot.val()</code> contract.</p>
|
|
|
1517
1588
|
|
|
1518
1589
|
|
|
1519
1590
|
<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="#query"><code>Query</code></a> | <a href="#databasereference"><code>DatabaseReference</code></a></td></tr></tbody></table></div>
|
|
1520
|
-
<h4 id="returns-
|
|
1591
|
+
<h4 id="returns-64">Returns</h4>
|
|
1521
1592
|
<p><code>Promise</code><<a href="#datasnapshot"><code>DataSnapshot</code></a>></p>
|
|
1522
1593
|
<hr>
|
|
1523
1594
|
<p><a id="getadmindatabase"></a></p>
|
|
@@ -1527,7 +1598,7 @@ Matches the SDK’s <code>DataSnapshot.val()</code> contract.</p>
|
|
|
1527
1598
|
<p>Sandbox-only rules-bypass RTDB handle. Mirrors Firestore’s
|
|
1528
1599
|
<code>getAdminFirestore(sandbox)</code> for Studio/Playground data browsers and
|
|
1529
1600
|
controlled admin tools.</p>
|
|
1530
|
-
<h5 id="parameters-
|
|
1601
|
+
<h5 id="parameters-33">Parameters</h5>
|
|
1531
1602
|
<div class="table-scroll">
|
|
1532
1603
|
|
|
1533
1604
|
|
|
@@ -1542,14 +1613,14 @@ controlled admin tools.</p>
|
|
|
1542
1613
|
|
|
1543
1614
|
|
|
1544
1615
|
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>sandbox</code></td><td align="left"><a href="/docs/pyric-firestore-reference-api/#sandbox"><code>Sandbox</code></a></td></tr></tbody></table></div>
|
|
1545
|
-
<h5 id="returns-
|
|
1616
|
+
<h5 id="returns-65">Returns</h5>
|
|
1546
1617
|
<p><a href="#database"><code>Database</code></a></p>
|
|
1547
1618
|
<h4 id="call-signature-1">Call Signature</h4>
|
|
1548
1619
|
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> getAdminDatabase</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">ctx</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">SandboxContext</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Database</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1549
1620
|
<p>Sandbox-only rules-bypass RTDB handle. Mirrors Firestore’s
|
|
1550
1621
|
<code>getAdminFirestore(sandbox)</code> for Studio/Playground data browsers and
|
|
1551
1622
|
controlled admin tools.</p>
|
|
1552
|
-
<h5 id="parameters-
|
|
1623
|
+
<h5 id="parameters-34">Parameters</h5>
|
|
1553
1624
|
<div class="table-scroll">
|
|
1554
1625
|
|
|
1555
1626
|
|
|
@@ -1564,14 +1635,14 @@ controlled admin tools.</p>
|
|
|
1564
1635
|
|
|
1565
1636
|
|
|
1566
1637
|
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>ctx</code></td><td align="left"><a href="/docs/pyric-firestore-reference-api/#sandboxcontext"><code>SandboxContext</code></a></td></tr></tbody></table></div>
|
|
1567
|
-
<h5 id="returns-
|
|
1638
|
+
<h5 id="returns-66">Returns</h5>
|
|
1568
1639
|
<p><a href="#database"><code>Database</code></a></p>
|
|
1569
1640
|
<h4 id="call-signature-2">Call Signature</h4>
|
|
1570
1641
|
<pre class="astro-code 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"> getAdminDatabase</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">app</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FirebaseApp</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Database</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1571
1642
|
<p>Sandbox-only rules-bypass RTDB handle. Mirrors Firestore’s
|
|
1572
1643
|
<code>getAdminFirestore(sandbox)</code> for Studio/Playground data browsers and
|
|
1573
1644
|
controlled admin tools.</p>
|
|
1574
|
-
<h5 id="parameters-
|
|
1645
|
+
<h5 id="parameters-35">Parameters</h5>
|
|
1575
1646
|
<div class="table-scroll">
|
|
1576
1647
|
|
|
1577
1648
|
|
|
@@ -1586,7 +1657,7 @@ controlled admin tools.</p>
|
|
|
1586
1657
|
|
|
1587
1658
|
|
|
1588
1659
|
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>app</code></td><td align="left"><a href="/docs/pyric-app-reference-api/#firebaseapp"><code>FirebaseApp</code></a></td></tr></tbody></table></div>
|
|
1589
|
-
<h5 id="returns-
|
|
1660
|
+
<h5 id="returns-67">Returns</h5>
|
|
1590
1661
|
<p><a href="#database"><code>Database</code></a></p>
|
|
1591
1662
|
<hr>
|
|
1592
1663
|
<p><a id="getdatabase"></a></p>
|
|
@@ -1598,7 +1669,7 @@ controlled admin tools.</p>
|
|
|
1598
1669
|
<li><code>SandboxContext</code> → sandbox-backed, frozen identity.</li>
|
|
1599
1670
|
<li><code>Sandbox</code> → sandbox-backed, live identity (per-op <code>currentUser</code>).</li>
|
|
1600
1671
|
</ul>
|
|
1601
|
-
<h5 id="parameters-
|
|
1672
|
+
<h5 id="parameters-36">Parameters</h5>
|
|
1602
1673
|
<div class="table-scroll">
|
|
1603
1674
|
|
|
1604
1675
|
|
|
@@ -1613,7 +1684,7 @@ controlled admin tools.</p>
|
|
|
1613
1684
|
|
|
1614
1685
|
|
|
1615
1686
|
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>ctx</code></td><td align="left"><a href="/docs/pyric-firestore-reference-api/#sandboxcontext"><code>SandboxContext</code></a></td></tr></tbody></table></div>
|
|
1616
|
-
<h5 id="returns-
|
|
1687
|
+
<h5 id="returns-68">Returns</h5>
|
|
1617
1688
|
<p><a href="#database"><code>Database</code></a></p>
|
|
1618
1689
|
<h5 id="example-1">Example</h5>
|
|
1619
1690
|
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">import</span><span style="color:#ABB2BF"> { </span><span style="color:#E06C75">initializeSandbox</span><span style="color:#ABB2BF"> } </span><span style="color:#C678DD">from</span><span style="color:#98C379"> 'pyric/sandbox'</span><span style="color:#ABB2BF">;</span></span>
|
|
@@ -1631,7 +1702,7 @@ controlled admin tools.</p>
|
|
|
1631
1702
|
<li><code>SandboxContext</code> → sandbox-backed, frozen identity.</li>
|
|
1632
1703
|
<li><code>Sandbox</code> → sandbox-backed, live identity (per-op <code>currentUser</code>).</li>
|
|
1633
1704
|
</ul>
|
|
1634
|
-
<h5 id="parameters-
|
|
1705
|
+
<h5 id="parameters-37">Parameters</h5>
|
|
1635
1706
|
<div class="table-scroll">
|
|
1636
1707
|
|
|
1637
1708
|
|
|
@@ -1646,7 +1717,7 @@ controlled admin tools.</p>
|
|
|
1646
1717
|
|
|
1647
1718
|
|
|
1648
1719
|
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>sandbox</code></td><td align="left"><a href="/docs/pyric-firestore-reference-api/#sandbox"><code>Sandbox</code></a></td></tr></tbody></table></div>
|
|
1649
|
-
<h5 id="returns-
|
|
1720
|
+
<h5 id="returns-69">Returns</h5>
|
|
1650
1721
|
<p><a href="#database"><code>Database</code></a></p>
|
|
1651
1722
|
<h5 id="example-2">Example</h5>
|
|
1652
1723
|
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">import</span><span style="color:#ABB2BF"> { </span><span style="color:#E06C75">initializeSandbox</span><span style="color:#ABB2BF"> } </span><span style="color:#C678DD">from</span><span style="color:#98C379"> 'pyric/sandbox'</span><span style="color:#ABB2BF">;</span></span>
|
|
@@ -1664,7 +1735,7 @@ controlled admin tools.</p>
|
|
|
1664
1735
|
<li><code>SandboxContext</code> → sandbox-backed, frozen identity.</li>
|
|
1665
1736
|
<li><code>Sandbox</code> → sandbox-backed, live identity (per-op <code>currentUser</code>).</li>
|
|
1666
1737
|
</ul>
|
|
1667
|
-
<h5 id="parameters-
|
|
1738
|
+
<h5 id="parameters-38">Parameters</h5>
|
|
1668
1739
|
<div class="table-scroll">
|
|
1669
1740
|
|
|
1670
1741
|
|
|
@@ -1679,7 +1750,7 @@ controlled admin tools.</p>
|
|
|
1679
1750
|
|
|
1680
1751
|
|
|
1681
1752
|
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>app</code></td><td align="left"><a href="/docs/pyric-app-reference-api/#firebaseapp"><code>FirebaseApp</code></a></td></tr></tbody></table></div>
|
|
1682
|
-
<h5 id="returns-
|
|
1753
|
+
<h5 id="returns-70">Returns</h5>
|
|
1683
1754
|
<p><a href="#appdatabase"><code>AppDatabase</code></a></p>
|
|
1684
1755
|
<h5 id="example-3">Example</h5>
|
|
1685
1756
|
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">import</span><span style="color:#ABB2BF"> { </span><span style="color:#E06C75">initializeSandbox</span><span style="color:#ABB2BF"> } </span><span style="color:#C678DD">from</span><span style="color:#98C379"> 'pyric/sandbox'</span><span style="color:#ABB2BF">;</span></span>
|
|
@@ -1697,7 +1768,7 @@ controlled admin tools.</p>
|
|
|
1697
1768
|
<li><code>SandboxContext</code> → sandbox-backed, frozen identity.</li>
|
|
1698
1769
|
<li><code>Sandbox</code> → sandbox-backed, live identity (per-op <code>currentUser</code>).</li>
|
|
1699
1770
|
</ul>
|
|
1700
|
-
<h5 id="returns-
|
|
1771
|
+
<h5 id="returns-71">Returns</h5>
|
|
1701
1772
|
<p><a href="#appdatabase"><code>AppDatabase</code></a></p>
|
|
1702
1773
|
<h5 id="example-4">Example</h5>
|
|
1703
1774
|
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">import</span><span style="color:#ABB2BF"> { </span><span style="color:#E06C75">initializeSandbox</span><span style="color:#ABB2BF"> } </span><span style="color:#C678DD">from</span><span style="color:#98C379"> 'pyric/sandbox'</span><span style="color:#ABB2BF">;</span></span>
|
|
@@ -1715,7 +1786,7 @@ controlled admin tools.</p>
|
|
|
1715
1786
|
<p><code>goOffline(db)</code> — disconnect the client from the RTDB backend.</p>
|
|
1716
1787
|
<p>Drains this client’s one-shot onDisconnect queue. The shared data backend
|
|
1717
1788
|
remains available to other Database clients and listeners.</p>
|
|
1718
|
-
<h4 id="parameters-
|
|
1789
|
+
<h4 id="parameters-39">Parameters</h4>
|
|
1719
1790
|
<div class="table-scroll">
|
|
1720
1791
|
|
|
1721
1792
|
|
|
@@ -1730,7 +1801,7 @@ remains available to other Database clients and listeners.</p>
|
|
|
1730
1801
|
|
|
1731
1802
|
|
|
1732
1803
|
<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="#database"><code>Database</code></a></td></tr></tbody></table></div>
|
|
1733
|
-
<h4 id="returns-
|
|
1804
|
+
<h4 id="returns-72">Returns</h4>
|
|
1734
1805
|
<p><code>void</code></p>
|
|
1735
1806
|
<hr>
|
|
1736
1807
|
<p><a id="goonline"></a></p>
|
|
@@ -1739,7 +1810,7 @@ remains available to other Database clients and listeners.</p>
|
|
|
1739
1810
|
<p><code>goOnline(db)</code> — reconnect the client to the RTDB backend.</p>
|
|
1740
1811
|
<p>Reconnects the logical client. Executed disconnect operations are not
|
|
1741
1812
|
resurrected; reads and writes remain synchronous in the local sandbox.</p>
|
|
1742
|
-
<h4 id="parameters-
|
|
1813
|
+
<h4 id="parameters-40">Parameters</h4>
|
|
1743
1814
|
<div class="table-scroll">
|
|
1744
1815
|
|
|
1745
1816
|
|
|
@@ -1754,7 +1825,7 @@ resurrected; reads and writes remain synchronous in the local sandbox.</p>
|
|
|
1754
1825
|
|
|
1755
1826
|
|
|
1756
1827
|
<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="#database"><code>Database</code></a></td></tr></tbody></table></div>
|
|
1757
|
-
<h4 id="returns-
|
|
1828
|
+
<h4 id="returns-73">Returns</h4>
|
|
1758
1829
|
<p><code>void</code></p>
|
|
1759
1830
|
<hr>
|
|
1760
1831
|
<p><a id="increment"></a></p>
|
|
@@ -1766,7 +1837,7 @@ write’s field. Starts from <code>0</code> when the field is absent or
|
|
|
1766
1837
|
non-numeric (oracle: <code>rtdb-modular-increment-from-missing.json</code>).</p>
|
|
1767
1838
|
<p>The sandbox backend resolves it against the field’s prior value at write
|
|
1768
1839
|
time. Mirrors <code>firebase/database</code>’s <code>increment</code> (<code>api/ServerValue.ts:38-44</code>).</p>
|
|
1769
|
-
<h4 id="parameters-
|
|
1840
|
+
<h4 id="parameters-41">Parameters</h4>
|
|
1770
1841
|
<div class="table-scroll">
|
|
1771
1842
|
|
|
1772
1843
|
|
|
@@ -1781,7 +1852,7 @@ time. Mirrors <code>firebase/database</code>’s <code>increment</code> (<code>a
|
|
|
1781
1852
|
|
|
1782
1853
|
|
|
1783
1854
|
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>delta</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
|
|
1784
|
-
<h4 id="returns-
|
|
1855
|
+
<h4 id="returns-74">Returns</h4>
|
|
1785
1856
|
<p><code>IncrementSentinel</code></p>
|
|
1786
1857
|
<hr>
|
|
1787
1858
|
<p><a id="limittofirst"></a></p>
|
|
@@ -1789,7 +1860,7 @@ time. Mirrors <code>firebase/database</code>’s <code>increment</code> (<code>a
|
|
|
1789
1860
|
<pre class="astro-code 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"> limitToFirst</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">n</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">QueryConstraint</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1790
1861
|
<p><code>limitToFirst(n)</code> — keep the first N children of the ordered window.
|
|
1791
1862
|
Locked by oracle observation <code>rtdb-modular-limittofirst-vs-limittolast.json</code>.</p>
|
|
1792
|
-
<h4 id="parameters-
|
|
1863
|
+
<h4 id="parameters-42">Parameters</h4>
|
|
1793
1864
|
<div class="table-scroll">
|
|
1794
1865
|
|
|
1795
1866
|
|
|
@@ -1804,7 +1875,7 @@ Locked by oracle observation <code>rtdb-modular-limittofirst-vs-limittolast.json
|
|
|
1804
1875
|
|
|
1805
1876
|
|
|
1806
1877
|
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>n</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
|
|
1807
|
-
<h4 id="returns-
|
|
1878
|
+
<h4 id="returns-75">Returns</h4>
|
|
1808
1879
|
<p><a href="#queryconstraint"><code>QueryConstraint</code></a></p>
|
|
1809
1880
|
<hr>
|
|
1810
1881
|
<p><a id="limittolast"></a></p>
|
|
@@ -1812,7 +1883,7 @@ Locked by oracle observation <code>rtdb-modular-limittofirst-vs-limittolast.json
|
|
|
1812
1883
|
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> limitToLast</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">n</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">QueryConstraint</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1813
1884
|
<p><code>limitToLast(n)</code> — keep the last N children of the ordered window.
|
|
1814
1885
|
Locked by oracle observation <code>rtdb-modular-limittofirst-vs-limittolast.json</code>.</p>
|
|
1815
|
-
<h4 id="parameters-
|
|
1886
|
+
<h4 id="parameters-43">Parameters</h4>
|
|
1816
1887
|
<div class="table-scroll">
|
|
1817
1888
|
|
|
1818
1889
|
|
|
@@ -1827,7 +1898,7 @@ Locked by oracle observation <code>rtdb-modular-limittofirst-vs-limittolast.json
|
|
|
1827
1898
|
|
|
1828
1899
|
|
|
1829
1900
|
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>n</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
|
|
1830
|
-
<h4 id="returns-
|
|
1901
|
+
<h4 id="returns-76">Returns</h4>
|
|
1831
1902
|
<p><a href="#queryconstraint"><code>QueryConstraint</code></a></p>
|
|
1832
1903
|
<hr>
|
|
1833
1904
|
<p><a id="off"></a></p>
|
|
@@ -1850,7 +1921,7 @@ that variety.</li>
|
|
|
1850
1921
|
<p>The returned-unsubscribe pattern from <code>onValue</code> / <code>onChild*</code> is
|
|
1851
1922
|
functionally equivalent to <code>off(ref, eventType, cb)</code> for a specific
|
|
1852
1923
|
registration — both are supported.</p>
|
|
1853
|
-
<h4 id="parameters-
|
|
1924
|
+
<h4 id="parameters-44">Parameters</h4>
|
|
1854
1925
|
<div class="table-scroll">
|
|
1855
1926
|
|
|
1856
1927
|
|
|
@@ -1873,7 +1944,7 @@ registration — both are supported.</p>
|
|
|
1873
1944
|
|
|
1874
1945
|
|
|
1875
1946
|
<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="#query"><code>Query</code></a> | <a href="#databasereference"><code>DatabaseReference</code></a></td></tr><tr><td align="left"><code>eventType?</code></td><td align="left"><code>"value"</code> | <code>ChildEvent</code></td></tr><tr><td align="left"><code>callback?</code></td><td align="left">(<code>snap</code>: <a href="#datasnapshot"><code>DataSnapshot</code></a>) => <code>void</code></td></tr></tbody></table></div>
|
|
1876
|
-
<h4 id="returns-
|
|
1947
|
+
<h4 id="returns-77">Returns</h4>
|
|
1877
1948
|
<p><code>void</code></p>
|
|
1878
1949
|
<hr>
|
|
1879
1950
|
<p><a id="onchildadded"></a></p>
|
|
@@ -1898,7 +1969,7 @@ ordered, windowed result — a child ENTERING the window fires
|
|
|
1898
1969
|
<code>child_added</code>; on subscribe the current window is replayed in window
|
|
1899
1970
|
order.</p>
|
|
1900
1971
|
<p>Returns an unsubscribe; calling it twice is a no-op.</p>
|
|
1901
|
-
<h4 id="parameters-
|
|
1972
|
+
<h4 id="parameters-45">Parameters</h4>
|
|
1902
1973
|
<div class="table-scroll">
|
|
1903
1974
|
|
|
1904
1975
|
|
|
@@ -1925,7 +1996,7 @@ order.</p>
|
|
|
1925
1996
|
|
|
1926
1997
|
|
|
1927
1998
|
<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="#query"><code>Query</code></a> | <a href="#databasereference"><code>DatabaseReference</code></a></td></tr><tr><td align="left"><code>cb</code></td><td align="left">(<code>snap</code>: <a href="#datasnapshot"><code>DataSnapshot</code></a>, <code>previousChildName</code>: <code>string</code>) => <code>void</code></td></tr><tr><td align="left"><code>cancelCallbackOrOptions?</code></td><td align="left"><a href="#listenoptions"><code>ListenOptions</code></a> | (<code>error</code>: <code>Error</code>) => <code>void</code></td></tr><tr><td align="left"><code>options?</code></td><td align="left"><a href="#listenoptions"><code>ListenOptions</code></a></td></tr></tbody></table></div>
|
|
1928
|
-
<h4 id="returns-
|
|
1999
|
+
<h4 id="returns-78">Returns</h4>
|
|
1929
2000
|
<p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
|
|
1930
2001
|
<hr>
|
|
1931
2002
|
<p><a id="onchildchanged"></a></p>
|
|
@@ -1945,7 +2016,7 @@ NEW non-null value. Snapshot carries the NEW value.</li>
|
|
|
1945
2016
|
</ul>
|
|
1946
2017
|
<p>Also accepts a <a href="#query">Query</a>: fires when a child that is IN the query
|
|
1947
2018
|
window changes value (an in-window update).</p>
|
|
1948
|
-
<h4 id="parameters-
|
|
2019
|
+
<h4 id="parameters-46">Parameters</h4>
|
|
1949
2020
|
<div class="table-scroll">
|
|
1950
2021
|
|
|
1951
2022
|
|
|
@@ -1972,7 +2043,7 @@ window changes value (an in-window update).</p>
|
|
|
1972
2043
|
|
|
1973
2044
|
|
|
1974
2045
|
<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="#query"><code>Query</code></a> | <a href="#databasereference"><code>DatabaseReference</code></a></td></tr><tr><td align="left"><code>cb</code></td><td align="left">(<code>snap</code>: <a href="#datasnapshot"><code>DataSnapshot</code></a>, <code>previousChildName</code>: <code>string</code>) => <code>void</code></td></tr><tr><td align="left"><code>cancelCallbackOrOptions?</code></td><td align="left"><a href="#listenoptions"><code>ListenOptions</code></a> | (<code>error</code>: <code>Error</code>) => <code>void</code></td></tr><tr><td align="left"><code>options?</code></td><td align="left"><a href="#listenoptions"><code>ListenOptions</code></a></td></tr></tbody></table></div>
|
|
1975
|
-
<h4 id="returns-
|
|
2046
|
+
<h4 id="returns-79">Returns</h4>
|
|
1976
2047
|
<p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
|
|
1977
2048
|
<hr>
|
|
1978
2049
|
<p><a id="onchildmoved"></a></p>
|
|
@@ -1991,7 +2062,7 @@ child’s priority can move it while an ordinary value-only write does not.</li>
|
|
|
1991
2062
|
</ul>
|
|
1992
2063
|
<p>Accepts a <a href="#query">Query</a> and fires when the active ordered value changes,
|
|
1993
2064
|
including the Firebase <code>previousChildName</code> second callback argument.</p>
|
|
1994
|
-
<h4 id="parameters-
|
|
2065
|
+
<h4 id="parameters-47">Parameters</h4>
|
|
1995
2066
|
<div class="table-scroll">
|
|
1996
2067
|
|
|
1997
2068
|
|
|
@@ -2018,7 +2089,7 @@ including the Firebase <code>previousChildName</code> second callback argument.<
|
|
|
2018
2089
|
|
|
2019
2090
|
|
|
2020
2091
|
<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="#query"><code>Query</code></a> | <a href="#databasereference"><code>DatabaseReference</code></a></td></tr><tr><td align="left"><code>cb</code></td><td align="left">(<code>snap</code>: <a href="#datasnapshot"><code>DataSnapshot</code></a>, <code>previousChildName</code>: <code>string</code>) => <code>void</code></td></tr><tr><td align="left"><code>cancelCallbackOrOptions?</code></td><td align="left"><a href="#listenoptions"><code>ListenOptions</code></a> | (<code>error</code>: <code>Error</code>) => <code>void</code></td></tr><tr><td align="left"><code>options?</code></td><td align="left"><a href="#listenoptions"><code>ListenOptions</code></a></td></tr></tbody></table></div>
|
|
2021
|
-
<h4 id="returns-
|
|
2092
|
+
<h4 id="returns-80">Returns</h4>
|
|
2022
2093
|
<p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
|
|
2023
2094
|
<hr>
|
|
2024
2095
|
<p><a id="onchildremoved"></a></p>
|
|
@@ -2040,7 +2111,7 @@ sees what was there before deletion.</li>
|
|
|
2040
2111
|
<p>Also accepts a <a href="#query">Query</a>: a child LEAVING the query window (e.g.
|
|
2041
2112
|
displaced past a <code>limitTo*</code> boundary or filtered out) fires
|
|
2042
2113
|
<code>child_removed</code> carrying its prior value.</p>
|
|
2043
|
-
<h4 id="parameters-
|
|
2114
|
+
<h4 id="parameters-48">Parameters</h4>
|
|
2044
2115
|
<div class="table-scroll">
|
|
2045
2116
|
|
|
2046
2117
|
|
|
@@ -2067,7 +2138,7 @@ displaced past a <code>limitTo*</code> boundary or filtered out) fires
|
|
|
2067
2138
|
|
|
2068
2139
|
|
|
2069
2140
|
<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="#query"><code>Query</code></a> | <a href="#databasereference"><code>DatabaseReference</code></a></td></tr><tr><td align="left"><code>cb</code></td><td align="left">(<code>snap</code>: <a href="#datasnapshot"><code>DataSnapshot</code></a>, <code>previousChildName</code>: <code>string</code>) => <code>void</code></td></tr><tr><td align="left"><code>cancelCallbackOrOptions?</code></td><td align="left"><a href="#listenoptions"><code>ListenOptions</code></a> | (<code>error</code>: <code>Error</code>) => <code>void</code></td></tr><tr><td align="left"><code>options?</code></td><td align="left"><a href="#listenoptions"><code>ListenOptions</code></a></td></tr></tbody></table></div>
|
|
2070
|
-
<h4 id="returns-
|
|
2141
|
+
<h4 id="returns-81">Returns</h4>
|
|
2071
2142
|
<p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
|
|
2072
2143
|
<hr>
|
|
2073
2144
|
<p><a id="ondisconnect-1"></a></p>
|
|
@@ -2075,7 +2146,7 @@ displaced past a <code>limitTo*</code> boundary or filtered out) fires
|
|
|
2075
2146
|
<pre class="astro-code 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"> onDisconnect</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">r</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">DatabaseReference</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">OnDisconnect</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2076
2147
|
<p>Register a one-shot write for this Database client’s next disconnect.
|
|
2077
2148
|
Registration checks rules immediately; execution checks them again.</p>
|
|
2078
|
-
<h4 id="parameters-
|
|
2149
|
+
<h4 id="parameters-49">Parameters</h4>
|
|
2079
2150
|
<div class="table-scroll">
|
|
2080
2151
|
|
|
2081
2152
|
|
|
@@ -2090,7 +2161,7 @@ Registration checks rules immediately; execution checks them again.</p>
|
|
|
2090
2161
|
|
|
2091
2162
|
|
|
2092
2163
|
<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="#databasereference"><code>DatabaseReference</code></a></td></tr></tbody></table></div>
|
|
2093
|
-
<h4 id="returns-
|
|
2164
|
+
<h4 id="returns-82">Returns</h4>
|
|
2094
2165
|
<p><a href="#ondisconnect"><code>OnDisconnect</code></a></p>
|
|
2095
2166
|
<hr>
|
|
2096
2167
|
<p><a id="onvalue"></a></p>
|
|
@@ -2111,7 +2182,7 @@ after its first fire (mirrors <code>api/Reference_impl.ts:975-980</code>).</p>
|
|
|
2111
2182
|
<p>With a cancellation callback, an initially denied listen returns normally
|
|
2112
2183
|
and reports the Firebase <code>PERMISSION_DENIED</code> error asynchronously. Without
|
|
2113
2184
|
one, the sandbox preserves its legacy synchronous throw.</p>
|
|
2114
|
-
<h4 id="parameters-
|
|
2185
|
+
<h4 id="parameters-50">Parameters</h4>
|
|
2115
2186
|
<div class="table-scroll">
|
|
2116
2187
|
|
|
2117
2188
|
|
|
@@ -2138,7 +2209,7 @@ one, the sandbox preserves its legacy synchronous throw.</p>
|
|
|
2138
2209
|
|
|
2139
2210
|
|
|
2140
2211
|
<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="#query"><code>Query</code></a> | <a href="#databasereference"><code>DatabaseReference</code></a></td></tr><tr><td align="left"><code>cb</code></td><td align="left">(<code>snap</code>: <a href="#datasnapshot"><code>DataSnapshot</code></a>) => <code>void</code></td></tr><tr><td align="left"><code>cancelCallbackOrOptions?</code></td><td align="left"><a href="#listenoptions"><code>ListenOptions</code></a> | (<code>error</code>: <code>Error</code>) => <code>void</code></td></tr><tr><td align="left"><code>options?</code></td><td align="left"><a href="#listenoptions"><code>ListenOptions</code></a></td></tr></tbody></table></div>
|
|
2141
|
-
<h4 id="returns-
|
|
2212
|
+
<h4 id="returns-83">Returns</h4>
|
|
2142
2213
|
<p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
|
|
2143
2214
|
<hr>
|
|
2144
2215
|
<p><a id="orderbychild"></a></p>
|
|
@@ -2147,7 +2218,7 @@ one, the sandbox preserves its legacy synchronous throw.</p>
|
|
|
2147
2218
|
<p><code>orderByChild('path')</code> — order children by the value at the nested
|
|
2148
2219
|
child path. Locked by oracle observation
|
|
2149
2220
|
<code>rtdb-modular-orderbychild-window.json</code>.</p>
|
|
2150
|
-
<h4 id="parameters-
|
|
2221
|
+
<h4 id="parameters-51">Parameters</h4>
|
|
2151
2222
|
<div class="table-scroll">
|
|
2152
2223
|
|
|
2153
2224
|
|
|
@@ -2162,7 +2233,7 @@ child path. Locked by oracle observation
|
|
|
2162
2233
|
|
|
2163
2234
|
|
|
2164
2235
|
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>path</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
2165
|
-
<h4 id="returns-
|
|
2236
|
+
<h4 id="returns-84">Returns</h4>
|
|
2166
2237
|
<p><a href="#queryconstraint"><code>QueryConstraint</code></a></p>
|
|
2167
2238
|
<hr>
|
|
2168
2239
|
<p><a id="orderbykey"></a></p>
|
|
@@ -2170,7 +2241,7 @@ child path. Locked by oracle observation
|
|
|
2170
2241
|
<pre class="astro-code 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"> orderByKey</span><span style="color:#ABB2BF">(): </span><span style="color:#E5C07B">QueryConstraint</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2171
2242
|
<p><code>orderByKey()</code> — order children lexicographically by key string.
|
|
2172
2243
|
Locked by oracle observation <code>rtdb-modular-orderbykey-window.json</code>.</p>
|
|
2173
|
-
<h4 id="returns-
|
|
2244
|
+
<h4 id="returns-85">Returns</h4>
|
|
2174
2245
|
<p><a href="#queryconstraint"><code>QueryConstraint</code></a></p>
|
|
2175
2246
|
<hr>
|
|
2176
2247
|
<p><a id="orderbypriority"></a></p>
|
|
@@ -2178,7 +2249,7 @@ Locked by oracle observation <code>rtdb-modular-orderbykey-window.json</code>.</
|
|
|
2178
2249
|
<pre class="astro-code 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"> orderByPriority</span><span style="color:#ABB2BF">(): </span><span style="color:#E5C07B">QueryConstraint</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2179
2250
|
<p><code>orderByPriority()</code> — order children by their RTDB priority metadata,
|
|
2180
2251
|
with Firebase’s key ordering as the tie-breaker.</p>
|
|
2181
|
-
<h4 id="returns-
|
|
2252
|
+
<h4 id="returns-86">Returns</h4>
|
|
2182
2253
|
<p><a href="#queryconstraint"><code>QueryConstraint</code></a></p>
|
|
2183
2254
|
<hr>
|
|
2184
2255
|
<p><a id="orderbyvalue"></a></p>
|
|
@@ -2189,7 +2260,7 @@ with Firebase’s key ordering as the tie-breaker.</p>
|
|
|
2189
2260
|
threw <code>Index not defined</code> against blockingfun); sandbox does NOT
|
|
2190
2261
|
enforce indexes (the rules engine here checks read-allow only, not
|
|
2191
2262
|
query-index conformance).</p>
|
|
2192
|
-
<h4 id="returns-
|
|
2263
|
+
<h4 id="returns-87">Returns</h4>
|
|
2193
2264
|
<p><a href="#queryconstraint"><code>QueryConstraint</code></a></p>
|
|
2194
2265
|
<hr>
|
|
2195
2266
|
<p><a id="push"></a></p>
|
|
@@ -2204,7 +2275,7 @@ id (locked by oracle observation <code>rtdb-push-autoid-format.json</code>:
|
|
|
2204
2275
|
round-trip required); it’s available synchronously on the returned
|
|
2205
2276
|
ref even when the optional write is denied by rules. The oracle
|
|
2206
2277
|
observation confirms this — the sandbox matches.</p>
|
|
2207
|
-
<h4 id="parameters-
|
|
2278
|
+
<h4 id="parameters-52">Parameters</h4>
|
|
2208
2279
|
<div class="table-scroll">
|
|
2209
2280
|
|
|
2210
2281
|
|
|
@@ -2223,7 +2294,7 @@ observation confirms this — the sandbox matches.</p>
|
|
|
2223
2294
|
|
|
2224
2295
|
|
|
2225
2296
|
<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="#databasereference"><code>DatabaseReference</code></a></td></tr><tr><td align="left"><code>value?</code></td><td align="left"><code>unknown</code></td></tr></tbody></table></div>
|
|
2226
|
-
<h4 id="returns-
|
|
2297
|
+
<h4 id="returns-88">Returns</h4>
|
|
2227
2298
|
<p><a href="#thenablereference"><code>ThenableReference</code></a></p>
|
|
2228
2299
|
<hr>
|
|
2229
2300
|
<p><a id="pushkey"></a></p>
|
|
@@ -2232,7 +2303,7 @@ observation confirms this — the sandbox matches.</p>
|
|
|
2232
2303
|
<p>Pre-mint a push key without writing. Used by callers that need the
|
|
2233
2304
|
key for a multi-path update (<code>update(rootRef, { [\</code>/users/${key}`]: … })`).
|
|
2234
2305
|
Returns a freshly-minted key.</p>
|
|
2235
|
-
<h4 id="returns-
|
|
2306
|
+
<h4 id="returns-89">Returns</h4>
|
|
2236
2307
|
<p><code>string</code></p>
|
|
2237
2308
|
<hr>
|
|
2238
2309
|
<p><a id="query-1"></a></p>
|
|
@@ -2259,7 +2330,7 @@ the ordered window (<code>rtdb-modular-limittofirst-vs-limittolast.json</code>).
|
|
|
2259
2330
|
<li><code>startAfter</code> / <code>endBefore</code> are EXCLUSIVE
|
|
2260
2331
|
(<code>rtdb-modular-startafter-endbefore-exclusive.json</code>).</li>
|
|
2261
2332
|
</ul>
|
|
2262
|
-
<h4 id="parameters-
|
|
2333
|
+
<h4 id="parameters-53">Parameters</h4>
|
|
2263
2334
|
<div class="table-scroll">
|
|
2264
2335
|
|
|
2265
2336
|
|
|
@@ -2278,7 +2349,7 @@ the ordered window (<code>rtdb-modular-limittofirst-vs-limittolast.json</code>).
|
|
|
2278
2349
|
|
|
2279
2350
|
|
|
2280
2351
|
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>refOrQuery</code></td><td align="left"><a href="#query"><code>Query</code></a> | <a href="#databasereference"><code>DatabaseReference</code></a></td></tr><tr><td align="left">…<code>constraints</code></td><td align="left"><a href="#queryconstraint"><code>QueryConstraint</code></a>[]</td></tr></tbody></table></div>
|
|
2281
|
-
<h4 id="returns-
|
|
2352
|
+
<h4 id="returns-90">Returns</h4>
|
|
2282
2353
|
<p><a href="#query"><code>Query</code></a></p>
|
|
2283
2354
|
<hr>
|
|
2284
2355
|
<p><a id="ref-6"></a></p>
|
|
@@ -2287,7 +2358,7 @@ the ordered window (<code>rtdb-modular-limittofirst-vs-limittolast.json</code>).
|
|
|
2287
2358
|
<p>Build a <a href="#databasereference">DatabaseReference</a> at <code>path</code> (default root).</p>
|
|
2288
2359
|
<p>Path normalisation: leading + trailing slashes are stripped;
|
|
2289
2360
|
empty path / <code>'/'</code> becomes the root.</p>
|
|
2290
|
-
<h4 id="parameters-
|
|
2361
|
+
<h4 id="parameters-54">Parameters</h4>
|
|
2291
2362
|
<div class="table-scroll">
|
|
2292
2363
|
|
|
2293
2364
|
|
|
@@ -2306,7 +2377,7 @@ empty path / <code>'/'</code> becomes the root.</p>
|
|
|
2306
2377
|
|
|
2307
2378
|
|
|
2308
2379
|
<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="#database"><code>Database</code></a></td></tr><tr><td align="left"><code>path?</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
2309
|
-
<h4 id="returns-
|
|
2380
|
+
<h4 id="returns-91">Returns</h4>
|
|
2310
2381
|
<p><a href="#databasereference"><code>DatabaseReference</code></a></p>
|
|
2311
2382
|
<hr>
|
|
2312
2383
|
<p><a id="reffromurl"></a></p>
|
|
@@ -2316,7 +2387,7 @@ empty path / <code>'/'</code> becomes the root.</p>
|
|
|
2316
2387
|
absolute database URL (<code>https://<namespace>.firebaseio.com/path</code>).</p>
|
|
2317
2388
|
<p>The sandbox is single-database, so only the URL path is honored; unlike the
|
|
2318
2389
|
production SDK, the host is not checked against the database namespace.</p>
|
|
2319
|
-
<h4 id="parameters-
|
|
2390
|
+
<h4 id="parameters-55">Parameters</h4>
|
|
2320
2391
|
<div class="table-scroll">
|
|
2321
2392
|
|
|
2322
2393
|
|
|
@@ -2335,7 +2406,7 @@ production SDK, the host is not checked against the database namespace.</p>
|
|
|
2335
2406
|
|
|
2336
2407
|
|
|
2337
2408
|
<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="#database"><code>Database</code></a></td></tr><tr><td align="left"><code>url</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
2338
|
-
<h4 id="returns-
|
|
2409
|
+
<h4 id="returns-92">Returns</h4>
|
|
2339
2410
|
<p><a href="#databasereference"><code>DatabaseReference</code></a></p>
|
|
2340
2411
|
<hr>
|
|
2341
2412
|
<p><a id="remove-2"></a></p>
|
|
@@ -2345,7 +2416,7 @@ production SDK, the host is not checked against the database namespace.</p>
|
|
|
2345
2416
|
<p>RTDB invariant (oracle: <code>rtdb-remove-vs-set-null.json</code>): equivalent
|
|
2346
2417
|
to <code>set(ref, null)</code>. The sandbox backend dispatches <code>remove</code> through
|
|
2347
2418
|
the same code path as <code>set(_, null)</code>.</p>
|
|
2348
|
-
<h4 id="parameters-
|
|
2419
|
+
<h4 id="parameters-56">Parameters</h4>
|
|
2349
2420
|
<div class="table-scroll">
|
|
2350
2421
|
|
|
2351
2422
|
|
|
@@ -2360,7 +2431,7 @@ the same code path as <code>set(_, null)</code>.</p>
|
|
|
2360
2431
|
|
|
2361
2432
|
|
|
2362
2433
|
<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="#databasereference"><code>DatabaseReference</code></a></td></tr></tbody></table></div>
|
|
2363
|
-
<h4 id="returns-
|
|
2434
|
+
<h4 id="returns-93">Returns</h4>
|
|
2364
2435
|
<p><code>Promise</code><<code>void</code>></p>
|
|
2365
2436
|
<hr>
|
|
2366
2437
|
<p><a id="runtransaction"></a></p>
|
|
@@ -2414,7 +2485,7 @@ read and retries the callback. Writes to unrelated paths do not conflict.</p>
|
|
|
2414
2485
|
|
|
2415
2486
|
|
|
2416
2487
|
<table><thead><tr><th align="left">Type Parameter</th></tr></thead><tbody><tr><td align="left"><code>T</code></td></tr></tbody></table></div>
|
|
2417
|
-
<h4 id="parameters-
|
|
2488
|
+
<h4 id="parameters-57">Parameters</h4>
|
|
2418
2489
|
<div class="table-scroll">
|
|
2419
2490
|
|
|
2420
2491
|
|
|
@@ -2437,7 +2508,7 @@ read and retries the callback. Writes to unrelated paths do not conflict.</p>
|
|
|
2437
2508
|
|
|
2438
2509
|
|
|
2439
2510
|
<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="#databasereference"><code>DatabaseReference</code></a></td></tr><tr><td align="left"><code>transactionUpdate</code></td><td align="left">(<code>current</code>: <code>T</code>) => <code>T</code></td></tr><tr><td align="left"><code>options?</code></td><td align="left"><a href="#transactionoptions"><code>TransactionOptions</code></a></td></tr></tbody></table></div>
|
|
2440
|
-
<h4 id="returns-
|
|
2511
|
+
<h4 id="returns-94">Returns</h4>
|
|
2441
2512
|
<p><code>Promise</code><<a href="#transactionresult"><code>TransactionResult</code></a>></p>
|
|
2442
2513
|
<hr>
|
|
2443
2514
|
<p><a id="servertimestamp"></a></p>
|
|
@@ -2448,7 +2519,7 @@ the wire encoder recognises. Resolves to <code>Date.now()</code> (epoch ms) on
|
|
|
2448
2519
|
write — locked by the prod SDK’s resolved-as-number contract
|
|
2449
2520
|
(oracle: <code>rtdb-servertimestamp-resolves.json</code>).</p>
|
|
2450
2521
|
<p>The sandbox backend recognises the marker.</p>
|
|
2451
|
-
<h4 id="returns-
|
|
2522
|
+
<h4 id="returns-95">Returns</h4>
|
|
2452
2523
|
<p><code>ServerTimestampSentinel</code></p>
|
|
2453
2524
|
<hr>
|
|
2454
2525
|
<p><a id="set-2"></a></p>
|
|
@@ -2458,7 +2529,7 @@ write — locked by the prod SDK’s resolved-as-number contract
|
|
|
2458
2529
|
deletes (matches the RTDB invariant — locked by oracle observation
|
|
2459
2530
|
<code>rtdb-remove-vs-set-null.json</code>).</p>
|
|
2460
2531
|
<p><code>serverTimestamp()</code> sentinels are resolved at write time.</p>
|
|
2461
|
-
<h4 id="parameters-
|
|
2532
|
+
<h4 id="parameters-58">Parameters</h4>
|
|
2462
2533
|
<div class="table-scroll">
|
|
2463
2534
|
|
|
2464
2535
|
|
|
@@ -2477,13 +2548,13 @@ deletes (matches the RTDB invariant — locked by oracle observation
|
|
|
2477
2548
|
|
|
2478
2549
|
|
|
2479
2550
|
<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="#databasereference"><code>DatabaseReference</code></a></td></tr><tr><td align="left"><code>value</code></td><td align="left"><code>unknown</code></td></tr></tbody></table></div>
|
|
2480
|
-
<h4 id="returns-
|
|
2551
|
+
<h4 id="returns-96">Returns</h4>
|
|
2481
2552
|
<p><code>Promise</code><<code>void</code>></p>
|
|
2482
2553
|
<hr>
|
|
2483
2554
|
<p><a id="setpriority"></a></p>
|
|
2484
2555
|
<h3 id="setpriority">setPriority()</h3>
|
|
2485
2556
|
<pre class="astro-code 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"> setPriority</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">r</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">DatabaseReference</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">priority</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">>;</span></span></code></pre>
|
|
2486
|
-
<h4 id="parameters-
|
|
2557
|
+
<h4 id="parameters-59">Parameters</h4>
|
|
2487
2558
|
<div class="table-scroll">
|
|
2488
2559
|
|
|
2489
2560
|
|
|
@@ -2502,7 +2573,7 @@ deletes (matches the RTDB invariant — locked by oracle observation
|
|
|
2502
2573
|
|
|
2503
2574
|
|
|
2504
2575
|
<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="#databasereference"><code>DatabaseReference</code></a></td></tr><tr><td align="left"><code>priority</code></td><td align="left"><code>string</code> | <code>number</code></td></tr></tbody></table></div>
|
|
2505
|
-
<h4 id="returns-
|
|
2576
|
+
<h4 id="returns-97">Returns</h4>
|
|
2506
2577
|
<p><code>Promise</code><<code>void</code>></p>
|
|
2507
2578
|
<hr>
|
|
2508
2579
|
<p><a id="setwithpriority-2"></a></p>
|
|
@@ -2511,7 +2582,7 @@ deletes (matches the RTDB invariant — locked by oracle observation
|
|
|
2511
2582
|
<span class="line"><span style="color:#E06C75;font-style:italic"> r</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">DatabaseReference</span><span style="color:#ABB2BF">,</span></span>
|
|
2512
2583
|
<span class="line"><span style="color:#E06C75;font-style:italic"> value</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">,</span></span>
|
|
2513
2584
|
<span class="line"><span style="color:#E06C75;font-style:italic">priority</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">>;</span></span></code></pre>
|
|
2514
|
-
<h4 id="parameters-
|
|
2585
|
+
<h4 id="parameters-60">Parameters</h4>
|
|
2515
2586
|
<div class="table-scroll">
|
|
2516
2587
|
|
|
2517
2588
|
|
|
@@ -2534,7 +2605,7 @@ deletes (matches the RTDB invariant — locked by oracle observation
|
|
|
2534
2605
|
|
|
2535
2606
|
|
|
2536
2607
|
<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="#databasereference"><code>DatabaseReference</code></a></td></tr><tr><td align="left"><code>value</code></td><td align="left"><code>unknown</code></td></tr><tr><td align="left"><code>priority</code></td><td align="left"><code>string</code> | <code>number</code></td></tr></tbody></table></div>
|
|
2537
|
-
<h4 id="returns-
|
|
2608
|
+
<h4 id="returns-98">Returns</h4>
|
|
2538
2609
|
<p><code>Promise</code><<code>void</code>></p>
|
|
2539
2610
|
<hr>
|
|
2540
2611
|
<p><a id="startafter"></a></p>
|
|
@@ -2542,7 +2613,7 @@ deletes (matches the RTDB invariant — locked by oracle observation
|
|
|
2542
2613
|
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> startAfter</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">value</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">JsonValue</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">key</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">QueryConstraint</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2543
2614
|
<p><code>startAfter(value, key?)</code> — EXCLUSIVE lower bound. Locked by
|
|
2544
2615
|
<code>rtdb-modular-startafter-endbefore-exclusive.json</code>.</p>
|
|
2545
|
-
<h4 id="parameters-
|
|
2616
|
+
<h4 id="parameters-61">Parameters</h4>
|
|
2546
2617
|
<div class="table-scroll">
|
|
2547
2618
|
|
|
2548
2619
|
|
|
@@ -2561,7 +2632,7 @@ deletes (matches the RTDB invariant — locked by oracle observation
|
|
|
2561
2632
|
|
|
2562
2633
|
|
|
2563
2634
|
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>value</code></td><td align="left"><a href="#jsonvalue"><code>JsonValue</code></a></td></tr><tr><td align="left"><code>key?</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
2564
|
-
<h4 id="returns-
|
|
2635
|
+
<h4 id="returns-99">Returns</h4>
|
|
2565
2636
|
<p><a href="#queryconstraint"><code>QueryConstraint</code></a></p>
|
|
2566
2637
|
<hr>
|
|
2567
2638
|
<p><a id="startat"></a></p>
|
|
@@ -2570,7 +2641,7 @@ deletes (matches the RTDB invariant — locked by oracle observation
|
|
|
2570
2641
|
<p><code>startAt(value, key?)</code> — INCLUSIVE lower bound under the active
|
|
2571
2642
|
ordering. Optional <code>key</code> is the tie-breaker when ordering by
|
|
2572
2643
|
child/value and multiple children share the bound’s value.</p>
|
|
2573
|
-
<h4 id="parameters-
|
|
2644
|
+
<h4 id="parameters-62">Parameters</h4>
|
|
2574
2645
|
<div class="table-scroll">
|
|
2575
2646
|
|
|
2576
2647
|
|
|
@@ -2589,7 +2660,7 @@ child/value and multiple children share the bound’s value.</p>
|
|
|
2589
2660
|
|
|
2590
2661
|
|
|
2591
2662
|
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>value</code></td><td align="left"><a href="#jsonvalue"><code>JsonValue</code></a></td></tr><tr><td align="left"><code>key?</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
2592
|
-
<h4 id="returns-
|
|
2663
|
+
<h4 id="returns-100">Returns</h4>
|
|
2593
2664
|
<p><a href="#queryconstraint"><code>QueryConstraint</code></a></p>
|
|
2594
2665
|
<hr>
|
|
2595
2666
|
<p><a id="update-2"></a></p>
|
|
@@ -2606,7 +2677,7 @@ delete.</li>
|
|
|
2606
2677
|
</ul>
|
|
2607
2678
|
<p>Both behaviors are sandbox-implemented per the RtdbBackend’s
|
|
2608
2679
|
<code>update</code> method (<code>rtdb-modular</code>-spec atomic claim, matrix row #23).</p>
|
|
2609
|
-
<h4 id="parameters-
|
|
2680
|
+
<h4 id="parameters-63">Parameters</h4>
|
|
2610
2681
|
<div class="table-scroll">
|
|
2611
2682
|
|
|
2612
2683
|
|
|
@@ -2625,7 +2696,7 @@ delete.</li>
|
|
|
2625
2696
|
|
|
2626
2697
|
|
|
2627
2698
|
<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="#databasereference"><code>DatabaseReference</code></a></td></tr><tr><td align="left"><code>values</code></td><td align="left"><code>Record</code><<code>string</code>, <code>unknown</code>></td></tr></tbody></table></div>
|
|
2628
|
-
<h4 id="returns-
|
|
2699
|
+
<h4 id="returns-101">Returns</h4>
|
|
2629
2700
|
<p><code>Promise</code><<code>void</code>></p>
|
|
2630
2701
|
<h2 id="references">References</h2>
|
|
2631
2702
|
<p><a id="authstate"></a></p>
|
|
@@ -2638,4 +2709,4 @@ delete.</li>
|
|
|
2638
2709
|
<hr>
|
|
2639
2710
|
<p><a id="sandboxcontext"></a></p>
|
|
2640
2711
|
<h3 id="sandboxcontext">SandboxContext</h3>
|
|
2641
|
-
<p>Re-exports <a href="/docs/pyric-firestore-reference-api/#sandboxcontext">SandboxContext</a></p> </article> </main> <aside class="doc-toc api-symbols" aria-label="API symbols" data-astro-cid-mw7aashj> <h2 class="doc-toc-heading" data-astro-cid-mw7aashj>Symbols</h2> <input class="api-symbol-filter" type="search" placeholder="Filter symbols" aria-label="Filter API symbols" data-api-symbol-filter data-astro-cid-mw7aashj> <div class="api-symbol-groups" data-api-symbol-groups data-astro-cid-mw7aashj> <section class="api-symbol-group" data-api-symbol-group data-astro-cid-mw7aashj> <a class="api-symbol-kind" href="#classes" data-astro-cid-mw7aashj> Classes </a> <ul data-astro-cid-mw7aashj> <li data-api-symbol="database" data-astro-cid-mw7aashj> <a href="#database" data-astro-cid-mw7aashj>Database</a> </li><li data-api-symbol="datasnapshot" data-astro-cid-mw7aashj> <a href="#datasnapshot" data-astro-cid-mw7aashj>DataSnapshot</a> </li><li data-api-symbol="ondisconnect" data-astro-cid-mw7aashj> <a href="#ondisconnect" data-astro-cid-mw7aashj>OnDisconnect</a> </li><li data-api-symbol="queryconstraint" data-astro-cid-mw7aashj> <a href="#queryconstraint" data-astro-cid-mw7aashj>QueryConstraint</a> </li><li data-api-symbol="transactionresult" data-astro-cid-mw7aashj> <a href="#transactionresult" data-astro-cid-mw7aashj>TransactionResult</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group data-astro-cid-mw7aashj> <a class="api-symbol-kind" href="#interfaces" data-astro-cid-mw7aashj> Interfaces </a> <ul data-astro-cid-mw7aashj> <li data-api-symbol="databasereference" data-astro-cid-mw7aashj> <a href="#databasereference" data-astro-cid-mw7aashj>DatabaseReference</a> </li><li data-api-symbol="datasnapshotimplementation" data-astro-cid-mw7aashj> <a href="#datasnapshotimplementation" data-astro-cid-mw7aashj>DataSnapshotImplementation</a> </li><li data-api-symbol="iterateddatasnapshot" data-astro-cid-mw7aashj> <a href="#iterateddatasnapshot" data-astro-cid-mw7aashj>IteratedDataSnapshot</a> </li><li data-api-symbol="listenoptions" data-astro-cid-mw7aashj> <a href="#listenoptions" data-astro-cid-mw7aashj>ListenOptions</a> </li><li data-api-symbol="query" data-astro-cid-mw7aashj> <a href="#query" data-astro-cid-mw7aashj>Query</a> </li><li data-api-symbol="thenablereference" data-astro-cid-mw7aashj> <a href="#thenablereference" data-astro-cid-mw7aashj>ThenableReference</a> </li><li data-api-symbol="transactionoptions" data-astro-cid-mw7aashj> <a href="#transactionoptions" data-astro-cid-mw7aashj>TransactionOptions</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group data-astro-cid-mw7aashj> <a class="api-symbol-kind" href="#type-aliases" data-astro-cid-mw7aashj> Type Aliases </a> <ul data-astro-cid-mw7aashj> <li data-api-symbol="appdatabase" data-astro-cid-mw7aashj> <a href="#appdatabase" data-astro-cid-mw7aashj>AppDatabase</a> </li><li data-api-symbol="emulatormocktokenoptions" data-astro-cid-mw7aashj> <a href="#emulatormocktokenoptions" data-astro-cid-mw7aashj>EmulatorMockTokenOptions</a> </li><li data-api-symbol="eventtype" data-astro-cid-mw7aashj> <a href="#eventtype" data-astro-cid-mw7aashj>EventType</a> </li><li data-api-symbol="jsonvalue" data-astro-cid-mw7aashj> <a href="#jsonvalue" data-astro-cid-mw7aashj>JsonValue</a> </li><li data-api-symbol="queryconstrainttype" data-astro-cid-mw7aashj> <a href="#queryconstrainttype" data-astro-cid-mw7aashj>QueryConstraintType</a> </li><li data-api-symbol="unsubscribe()" data-astro-cid-mw7aashj> <a href="#unsubscribe" data-astro-cid-mw7aashj>Unsubscribe()</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group data-astro-cid-mw7aashj> <a class="api-symbol-kind" href="#variables" data-astro-cid-mw7aashj> Variables </a> <ul data-astro-cid-mw7aashj> <li data-api-symbol="constraint_symbol" data-astro-cid-mw7aashj> <a href="#constraint_symbol" data-astro-cid-mw7aashj>CONSTRAINT_SYMBOL</a> </li><li data-api-symbol="query_symbol" data-astro-cid-mw7aashj> <a href="#query_symbol" data-astro-cid-mw7aashj>QUERY_SYMBOL</a> </li><li data-api-symbol="sandbox" data-astro-cid-mw7aashj> <a href="#sandbox" data-astro-cid-mw7aashj>sandbox</a> </li><li data-api-symbol="target_symbol" data-astro-cid-mw7aashj> <a href="#target_symbol" data-astro-cid-mw7aashj>TARGET_SYMBOL</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group data-astro-cid-mw7aashj> <a class="api-symbol-kind" href="#functions" data-astro-cid-mw7aashj> Functions </a> <ul data-astro-cid-mw7aashj> <li data-api-symbol="buildsandboxref()" data-astro-cid-mw7aashj> <a href="#buildsandboxref" data-astro-cid-mw7aashj>buildSandboxRef()</a> </li><li data-api-symbol="child()" data-astro-cid-mw7aashj> <a href="#child-3" data-astro-cid-mw7aashj>child()</a> </li><li data-api-symbol="connectdatabaseemulator()" data-astro-cid-mw7aashj> <a href="#connectdatabaseemulator" data-astro-cid-mw7aashj>connectDatabaseEmulator()</a> </li><li data-api-symbol="enablelogging()" data-astro-cid-mw7aashj> <a href="#enablelogging" data-astro-cid-mw7aashj>enableLogging()</a> </li><li data-api-symbol="endat()" data-astro-cid-mw7aashj> <a href="#endat" data-astro-cid-mw7aashj>endAt()</a> </li><li data-api-symbol="endbefore()" data-astro-cid-mw7aashj> <a href="#endbefore" data-astro-cid-mw7aashj>endBefore()</a> </li><li data-api-symbol="equalto()" data-astro-cid-mw7aashj> <a href="#equalto" data-astro-cid-mw7aashj>equalTo()</a> </li><li data-api-symbol="forcelongpolling()" data-astro-cid-mw7aashj> <a href="#forcelongpolling" data-astro-cid-mw7aashj>forceLongPolling()</a> </li><li data-api-symbol="forcewebsockets()" data-astro-cid-mw7aashj> <a href="#forcewebsockets" data-astro-cid-mw7aashj>forceWebSockets()</a> </li><li data-api-symbol="get()" data-astro-cid-mw7aashj> <a href="#get" data-astro-cid-mw7aashj>get()</a> </li><li data-api-symbol="getadmindatabase()" data-astro-cid-mw7aashj> <a href="#getadmindatabase" data-astro-cid-mw7aashj>getAdminDatabase()</a> </li><li data-api-symbol="getdatabase()" data-astro-cid-mw7aashj> <a href="#getdatabase" data-astro-cid-mw7aashj>getDatabase()</a> </li><li data-api-symbol="gooffline()" data-astro-cid-mw7aashj> <a href="#gooffline" data-astro-cid-mw7aashj>goOffline()</a> </li><li data-api-symbol="goonline()" data-astro-cid-mw7aashj> <a href="#goonline" data-astro-cid-mw7aashj>goOnline()</a> </li><li data-api-symbol="increment()" data-astro-cid-mw7aashj> <a href="#increment" data-astro-cid-mw7aashj>increment()</a> </li><li data-api-symbol="limittofirst()" data-astro-cid-mw7aashj> <a href="#limittofirst" data-astro-cid-mw7aashj>limitToFirst()</a> </li><li data-api-symbol="limittolast()" data-astro-cid-mw7aashj> <a href="#limittolast" data-astro-cid-mw7aashj>limitToLast()</a> </li><li data-api-symbol="off()" data-astro-cid-mw7aashj> <a href="#off" data-astro-cid-mw7aashj>off()</a> </li><li data-api-symbol="onchildadded()" data-astro-cid-mw7aashj> <a href="#onchildadded" data-astro-cid-mw7aashj>onChildAdded()</a> </li><li data-api-symbol="onchildchanged()" data-astro-cid-mw7aashj> <a href="#onchildchanged" data-astro-cid-mw7aashj>onChildChanged()</a> </li><li data-api-symbol="onchildmoved()" data-astro-cid-mw7aashj> <a href="#onchildmoved" data-astro-cid-mw7aashj>onChildMoved()</a> </li><li data-api-symbol="onchildremoved()" data-astro-cid-mw7aashj> <a href="#onchildremoved" data-astro-cid-mw7aashj>onChildRemoved()</a> </li><li data-api-symbol="ondisconnect()" data-astro-cid-mw7aashj> <a href="#ondisconnect-1" data-astro-cid-mw7aashj>onDisconnect()</a> </li><li data-api-symbol="onvalue()" data-astro-cid-mw7aashj> <a href="#onvalue" data-astro-cid-mw7aashj>onValue()</a> </li><li data-api-symbol="orderbychild()" data-astro-cid-mw7aashj> <a href="#orderbychild" data-astro-cid-mw7aashj>orderByChild()</a> </li><li data-api-symbol="orderbykey()" data-astro-cid-mw7aashj> <a href="#orderbykey" data-astro-cid-mw7aashj>orderByKey()</a> </li><li data-api-symbol="orderbypriority()" data-astro-cid-mw7aashj> <a href="#orderbypriority" data-astro-cid-mw7aashj>orderByPriority()</a> </li><li data-api-symbol="orderbyvalue()" data-astro-cid-mw7aashj> <a href="#orderbyvalue" data-astro-cid-mw7aashj>orderByValue()</a> </li><li data-api-symbol="push()" data-astro-cid-mw7aashj> <a href="#push" data-astro-cid-mw7aashj>push()</a> </li><li data-api-symbol="pushkey()" data-astro-cid-mw7aashj> <a href="#pushkey" data-astro-cid-mw7aashj>pushKey()</a> </li><li data-api-symbol="query()" data-astro-cid-mw7aashj> <a href="#query-1" data-astro-cid-mw7aashj>query()</a> </li><li data-api-symbol="ref()" data-astro-cid-mw7aashj> <a href="#ref" data-astro-cid-mw7aashj>ref()</a> </li><li data-api-symbol="reffromurl()" data-astro-cid-mw7aashj> <a href="#reffromurl" data-astro-cid-mw7aashj>refFromURL()</a> </li><li data-api-symbol="remove()" data-astro-cid-mw7aashj> <a href="#remove-1" data-astro-cid-mw7aashj>remove()</a> </li><li data-api-symbol="runtransaction()" data-astro-cid-mw7aashj> <a href="#runtransaction" data-astro-cid-mw7aashj>runTransaction()</a> </li><li data-api-symbol="servertimestamp()" data-astro-cid-mw7aashj> <a href="#servertimestamp" data-astro-cid-mw7aashj>serverTimestamp()</a> </li><li data-api-symbol="set()" data-astro-cid-mw7aashj> <a href="#set-1" data-astro-cid-mw7aashj>set()</a> </li><li data-api-symbol="setpriority()" data-astro-cid-mw7aashj> <a href="#setpriority" data-astro-cid-mw7aashj>setPriority()</a> </li><li data-api-symbol="setwithpriority()" data-astro-cid-mw7aashj> <a href="#setwithpriority-1" data-astro-cid-mw7aashj>setWithPriority()</a> </li><li data-api-symbol="startafter()" data-astro-cid-mw7aashj> <a href="#startafter" data-astro-cid-mw7aashj>startAfter()</a> </li><li data-api-symbol="startat()" data-astro-cid-mw7aashj> <a href="#startat" data-astro-cid-mw7aashj>startAt()</a> </li><li data-api-symbol="update()" data-astro-cid-mw7aashj> <a href="#update-1" data-astro-cid-mw7aashj>update()</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group data-astro-cid-mw7aashj> <a class="api-symbol-kind" href="#references" data-astro-cid-mw7aashj> References </a> <ul data-astro-cid-mw7aashj> <li data-api-symbol="authstate" data-astro-cid-mw7aashj> <a href="#authstate" data-astro-cid-mw7aashj>AuthState</a> </li><li data-api-symbol="sandbox" data-astro-cid-mw7aashj> <a href="#sandbox-1" data-astro-cid-mw7aashj>Sandbox</a> </li><li data-api-symbol="sandboxcontext" data-astro-cid-mw7aashj> <a href="#sandboxcontext" data-astro-cid-mw7aashj>SandboxContext</a> </li> </ul> </section> <p class="api-symbol-empty" data-api-symbol-empty hidden data-astro-cid-mw7aashj>No matching symbols</p> </div> </aside> </div> <script type="module">const a=document.querySelector("[data-api-symbol-filter]"),d=[...document.querySelectorAll("[data-api-symbol-group]")],n=document.querySelector("[data-api-symbol-empty]");a?.addEventListener("input",()=>{const t=a.value.trim().toLowerCase();let o=0;for(const i of d){let e=0;i.querySelectorAll("[data-api-symbol]").forEach(l=>{const r=!t||(l.dataset.apiSymbol??"").includes(t);l.hidden=!r,r&&e++}),i.hidden=e===0,o+=e}n&&(n.hidden=o>0)});</script> <script type="module">const s=new Map;document.querySelectorAll('.doc-toc a[href^="#"]').forEach(t=>s.set(decodeURIComponent(t.hash.slice(1)),t));if(s.size>0){const t=new Set,n=()=>{let o=null;for(const e of s.keys())if(t.has(e)){o=e;break}s.forEach((e,c)=>e.classList.toggle("active",c===o))},r=new IntersectionObserver(o=>{for(const e of o)e.isIntersecting?t.add(e.target.id):t.delete(e.target.id);n()},{rootMargin:"-72px 0px -60% 0px"});s.forEach((o,e)=>{const c=document.getElementById(e);c&&r.observe(c)})}</script> <script type="module">document.querySelector('.studio__nav [aria-current="page"]')?.scrollIntoView({block:"nearest",inline:"center"});</script> </body></html>
|
|
2712
|
+
<p>Re-exports <a href="/docs/pyric-firestore-reference-api/#sandboxcontext">SandboxContext</a></p> </article> </main> <aside class="doc-toc api-symbols" aria-label="API symbols" data-astro-cid-mw7aashj> <h2 class="doc-toc-heading" data-astro-cid-mw7aashj>Symbols</h2> <input class="api-symbol-filter" type="search" placeholder="Filter symbols" aria-label="Filter API symbols" data-api-symbol-filter data-astro-cid-mw7aashj> <div class="api-symbol-groups" data-api-symbol-groups data-astro-cid-mw7aashj> <section class="api-symbol-group" data-api-symbol-group data-astro-cid-mw7aashj> <a class="api-symbol-kind" href="#classes" data-astro-cid-mw7aashj> Classes </a> <ul data-astro-cid-mw7aashj> <li data-api-symbol="database" data-astro-cid-mw7aashj> <a href="#database" data-astro-cid-mw7aashj>Database</a> </li><li data-api-symbol="datasnapshot" data-astro-cid-mw7aashj> <a href="#datasnapshot" data-astro-cid-mw7aashj>DataSnapshot</a> </li><li data-api-symbol="ondisconnect" data-astro-cid-mw7aashj> <a href="#ondisconnect" data-astro-cid-mw7aashj>OnDisconnect</a> </li><li data-api-symbol="queryconstraint" data-astro-cid-mw7aashj> <a href="#queryconstraint" data-astro-cid-mw7aashj>QueryConstraint</a> </li><li data-api-symbol="transactionresult" data-astro-cid-mw7aashj> <a href="#transactionresult" data-astro-cid-mw7aashj>TransactionResult</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group data-astro-cid-mw7aashj> <a class="api-symbol-kind" href="#interfaces" data-astro-cid-mw7aashj> Interfaces </a> <ul data-astro-cid-mw7aashj> <li data-api-symbol="databasereference" data-astro-cid-mw7aashj> <a href="#databasereference" data-astro-cid-mw7aashj>DatabaseReference</a> </li><li data-api-symbol="datasnapshotimplementation" data-astro-cid-mw7aashj> <a href="#datasnapshotimplementation" data-astro-cid-mw7aashj>DataSnapshotImplementation</a> </li><li data-api-symbol="iterateddatasnapshot" data-astro-cid-mw7aashj> <a href="#iterateddatasnapshot" data-astro-cid-mw7aashj>IteratedDataSnapshot</a> </li><li data-api-symbol="listenoptions" data-astro-cid-mw7aashj> <a href="#listenoptions" data-astro-cid-mw7aashj>ListenOptions</a> </li><li data-api-symbol="query" data-astro-cid-mw7aashj> <a href="#query" data-astro-cid-mw7aashj>Query</a> </li><li data-api-symbol="thenablereference" data-astro-cid-mw7aashj> <a href="#thenablereference" data-astro-cid-mw7aashj>ThenableReference</a> </li><li data-api-symbol="transactionoptions" data-astro-cid-mw7aashj> <a href="#transactionoptions" data-astro-cid-mw7aashj>TransactionOptions</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group data-astro-cid-mw7aashj> <a class="api-symbol-kind" href="#type-aliases" data-astro-cid-mw7aashj> Type Aliases </a> <ul data-astro-cid-mw7aashj> <li data-api-symbol="appdatabase" data-astro-cid-mw7aashj> <a href="#appdatabase" data-astro-cid-mw7aashj>AppDatabase</a> </li><li data-api-symbol="emulatormocktokenoptions" data-astro-cid-mw7aashj> <a href="#emulatormocktokenoptions" data-astro-cid-mw7aashj>EmulatorMockTokenOptions</a> </li><li data-api-symbol="eventtype" data-astro-cid-mw7aashj> <a href="#eventtype" data-astro-cid-mw7aashj>EventType</a> </li><li data-api-symbol="jsonvalue" data-astro-cid-mw7aashj> <a href="#jsonvalue" data-astro-cid-mw7aashj>JsonValue</a> </li><li data-api-symbol="queryconstrainttype" data-astro-cid-mw7aashj> <a href="#queryconstrainttype" data-astro-cid-mw7aashj>QueryConstraintType</a> </li><li data-api-symbol="unsubscribe()" data-astro-cid-mw7aashj> <a href="#unsubscribe" data-astro-cid-mw7aashj>Unsubscribe()</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group data-astro-cid-mw7aashj> <a class="api-symbol-kind" href="#variables" data-astro-cid-mw7aashj> Variables </a> <ul data-astro-cid-mw7aashj> <li data-api-symbol="constraint_symbol" data-astro-cid-mw7aashj> <a href="#constraint_symbol" data-astro-cid-mw7aashj>CONSTRAINT_SYMBOL</a> </li><li data-api-symbol="default_deny_rtdb_rules" data-astro-cid-mw7aashj> <a href="#default_deny_rtdb_rules" data-astro-cid-mw7aashj>DEFAULT_DENY_RTDB_RULES</a> </li><li data-api-symbol="default_open_rtdb_rules" data-astro-cid-mw7aashj> <a href="#default_open_rtdb_rules" data-astro-cid-mw7aashj>DEFAULT_OPEN_RTDB_RULES</a> </li><li data-api-symbol="query_symbol" data-astro-cid-mw7aashj> <a href="#query_symbol" data-astro-cid-mw7aashj>QUERY_SYMBOL</a> </li><li data-api-symbol="sandbox" data-astro-cid-mw7aashj> <a href="#sandbox" data-astro-cid-mw7aashj>sandbox</a> </li><li data-api-symbol="target_symbol" data-astro-cid-mw7aashj> <a href="#target_symbol" data-astro-cid-mw7aashj>TARGET_SYMBOL</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group data-astro-cid-mw7aashj> <a class="api-symbol-kind" href="#functions" data-astro-cid-mw7aashj> Functions </a> <ul data-astro-cid-mw7aashj> <li data-api-symbol="buildsandboxref()" data-astro-cid-mw7aashj> <a href="#buildsandboxref" data-astro-cid-mw7aashj>buildSandboxRef()</a> </li><li data-api-symbol="child()" data-astro-cid-mw7aashj> <a href="#child-3" data-astro-cid-mw7aashj>child()</a> </li><li data-api-symbol="connectdatabaseemulator()" data-astro-cid-mw7aashj> <a href="#connectdatabaseemulator" data-astro-cid-mw7aashj>connectDatabaseEmulator()</a> </li><li data-api-symbol="enablelogging()" data-astro-cid-mw7aashj> <a href="#enablelogging" data-astro-cid-mw7aashj>enableLogging()</a> </li><li data-api-symbol="endat()" data-astro-cid-mw7aashj> <a href="#endat" data-astro-cid-mw7aashj>endAt()</a> </li><li data-api-symbol="endbefore()" data-astro-cid-mw7aashj> <a href="#endbefore" data-astro-cid-mw7aashj>endBefore()</a> </li><li data-api-symbol="equalto()" data-astro-cid-mw7aashj> <a href="#equalto" data-astro-cid-mw7aashj>equalTo()</a> </li><li data-api-symbol="forcelongpolling()" data-astro-cid-mw7aashj> <a href="#forcelongpolling" data-astro-cid-mw7aashj>forceLongPolling()</a> </li><li data-api-symbol="forcewebsockets()" data-astro-cid-mw7aashj> <a href="#forcewebsockets" data-astro-cid-mw7aashj>forceWebSockets()</a> </li><li data-api-symbol="get()" data-astro-cid-mw7aashj> <a href="#get" data-astro-cid-mw7aashj>get()</a> </li><li data-api-symbol="getadmindatabase()" data-astro-cid-mw7aashj> <a href="#getadmindatabase" data-astro-cid-mw7aashj>getAdminDatabase()</a> </li><li data-api-symbol="getdatabase()" data-astro-cid-mw7aashj> <a href="#getdatabase" data-astro-cid-mw7aashj>getDatabase()</a> </li><li data-api-symbol="gooffline()" data-astro-cid-mw7aashj> <a href="#gooffline" data-astro-cid-mw7aashj>goOffline()</a> </li><li data-api-symbol="goonline()" data-astro-cid-mw7aashj> <a href="#goonline" data-astro-cid-mw7aashj>goOnline()</a> </li><li data-api-symbol="increment()" data-astro-cid-mw7aashj> <a href="#increment" data-astro-cid-mw7aashj>increment()</a> </li><li data-api-symbol="limittofirst()" data-astro-cid-mw7aashj> <a href="#limittofirst" data-astro-cid-mw7aashj>limitToFirst()</a> </li><li data-api-symbol="limittolast()" data-astro-cid-mw7aashj> <a href="#limittolast" data-astro-cid-mw7aashj>limitToLast()</a> </li><li data-api-symbol="off()" data-astro-cid-mw7aashj> <a href="#off" data-astro-cid-mw7aashj>off()</a> </li><li data-api-symbol="onchildadded()" data-astro-cid-mw7aashj> <a href="#onchildadded" data-astro-cid-mw7aashj>onChildAdded()</a> </li><li data-api-symbol="onchildchanged()" data-astro-cid-mw7aashj> <a href="#onchildchanged" data-astro-cid-mw7aashj>onChildChanged()</a> </li><li data-api-symbol="onchildmoved()" data-astro-cid-mw7aashj> <a href="#onchildmoved" data-astro-cid-mw7aashj>onChildMoved()</a> </li><li data-api-symbol="onchildremoved()" data-astro-cid-mw7aashj> <a href="#onchildremoved" data-astro-cid-mw7aashj>onChildRemoved()</a> </li><li data-api-symbol="ondisconnect()" data-astro-cid-mw7aashj> <a href="#ondisconnect-1" data-astro-cid-mw7aashj>onDisconnect()</a> </li><li data-api-symbol="onvalue()" data-astro-cid-mw7aashj> <a href="#onvalue" data-astro-cid-mw7aashj>onValue()</a> </li><li data-api-symbol="orderbychild()" data-astro-cid-mw7aashj> <a href="#orderbychild" data-astro-cid-mw7aashj>orderByChild()</a> </li><li data-api-symbol="orderbykey()" data-astro-cid-mw7aashj> <a href="#orderbykey" data-astro-cid-mw7aashj>orderByKey()</a> </li><li data-api-symbol="orderbypriority()" data-astro-cid-mw7aashj> <a href="#orderbypriority" data-astro-cid-mw7aashj>orderByPriority()</a> </li><li data-api-symbol="orderbyvalue()" data-astro-cid-mw7aashj> <a href="#orderbyvalue" data-astro-cid-mw7aashj>orderByValue()</a> </li><li data-api-symbol="push()" data-astro-cid-mw7aashj> <a href="#push" data-astro-cid-mw7aashj>push()</a> </li><li data-api-symbol="pushkey()" data-astro-cid-mw7aashj> <a href="#pushkey" data-astro-cid-mw7aashj>pushKey()</a> </li><li data-api-symbol="query()" data-astro-cid-mw7aashj> <a href="#query-1" data-astro-cid-mw7aashj>query()</a> </li><li data-api-symbol="ref()" data-astro-cid-mw7aashj> <a href="#ref" data-astro-cid-mw7aashj>ref()</a> </li><li data-api-symbol="reffromurl()" data-astro-cid-mw7aashj> <a href="#reffromurl" data-astro-cid-mw7aashj>refFromURL()</a> </li><li data-api-symbol="remove()" data-astro-cid-mw7aashj> <a href="#remove-1" data-astro-cid-mw7aashj>remove()</a> </li><li data-api-symbol="runtransaction()" data-astro-cid-mw7aashj> <a href="#runtransaction" data-astro-cid-mw7aashj>runTransaction()</a> </li><li data-api-symbol="servertimestamp()" data-astro-cid-mw7aashj> <a href="#servertimestamp" data-astro-cid-mw7aashj>serverTimestamp()</a> </li><li data-api-symbol="set()" data-astro-cid-mw7aashj> <a href="#set-1" data-astro-cid-mw7aashj>set()</a> </li><li data-api-symbol="setpriority()" data-astro-cid-mw7aashj> <a href="#setpriority" data-astro-cid-mw7aashj>setPriority()</a> </li><li data-api-symbol="setwithpriority()" data-astro-cid-mw7aashj> <a href="#setwithpriority-1" data-astro-cid-mw7aashj>setWithPriority()</a> </li><li data-api-symbol="startafter()" data-astro-cid-mw7aashj> <a href="#startafter" data-astro-cid-mw7aashj>startAfter()</a> </li><li data-api-symbol="startat()" data-astro-cid-mw7aashj> <a href="#startat" data-astro-cid-mw7aashj>startAt()</a> </li><li data-api-symbol="update()" data-astro-cid-mw7aashj> <a href="#update-1" data-astro-cid-mw7aashj>update()</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group data-astro-cid-mw7aashj> <a class="api-symbol-kind" href="#references" data-astro-cid-mw7aashj> References </a> <ul data-astro-cid-mw7aashj> <li data-api-symbol="authstate" data-astro-cid-mw7aashj> <a href="#authstate" data-astro-cid-mw7aashj>AuthState</a> </li><li data-api-symbol="sandbox" data-astro-cid-mw7aashj> <a href="#sandbox-1" data-astro-cid-mw7aashj>Sandbox</a> </li><li data-api-symbol="sandboxcontext" data-astro-cid-mw7aashj> <a href="#sandboxcontext" data-astro-cid-mw7aashj>SandboxContext</a> </li> </ul> </section> <p class="api-symbol-empty" data-api-symbol-empty hidden data-astro-cid-mw7aashj>No matching symbols</p> </div> </aside> </div> <script type="module">const a=document.querySelector("[data-api-symbol-filter]"),d=[...document.querySelectorAll("[data-api-symbol-group]")],n=document.querySelector("[data-api-symbol-empty]");a?.addEventListener("input",()=>{const t=a.value.trim().toLowerCase();let o=0;for(const i of d){let e=0;i.querySelectorAll("[data-api-symbol]").forEach(l=>{const r=!t||(l.dataset.apiSymbol??"").includes(t);l.hidden=!r,r&&e++}),i.hidden=e===0,o+=e}n&&(n.hidden=o>0)});</script> <script type="module">const s=new Map;document.querySelectorAll('.doc-toc a[href^="#"]').forEach(t=>s.set(decodeURIComponent(t.hash.slice(1)),t));if(s.size>0){const t=new Set,n=()=>{let o=null;for(const e of s.keys())if(t.has(e)){o=e;break}s.forEach((e,c)=>e.classList.toggle("active",c===o))},r=new IntersectionObserver(o=>{for(const e of o)e.isIntersecting?t.add(e.target.id):t.delete(e.target.id);n()},{rootMargin:"-72px 0px -60% 0px"});s.forEach((o,e)=>{const c=document.getElementById(e);c&&r.observe(c)})}</script> <script type="module">document.querySelector('.studio__nav [aria-current="page"]')?.scrollIntoView({block:"nearest",inline:"center"});</script> </body></html>
|