@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
package/dist/serve/site-ui/_astro/{example-runtime.B0byNQOl.js → example-runtime.C25_lx6Z.js}
RENAMED
|
@@ -1,13 +1,4 @@
|
|
|
1
|
-
import{
|
|
2
|
-
rules_version = '2';
|
|
3
|
-
service cloud.firestore {
|
|
4
|
-
match /databases/{database}/documents {
|
|
5
|
-
match /notes/{noteId} {
|
|
6
|
-
allow read, write: if request.auth.uid == resource.data.ownerId
|
|
7
|
-
|| request.auth.uid == request.resource.data.ownerId;
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
}`},run:w},v=`import type { PyricExampleContext } from '../definition';
|
|
1
|
+
import{c as p,s as l,a as f,j as r}from"./sandbox-controls.DEpnKg-O.js";import{r as u}from"./index.DBy5LfQW.js";function g(n){if(n.presentation==="showcase")throw new Error(`Pyric showcase '${n.header}' cannot use the generic example runtime`)}const h={header:"Play chess against Security Rules",subLabel:"Firestore Security Rules · Isolated browser sandbox",summary:"Move a piece; Pyric commits the new board or denies the write.",docsPath:"/docs/examples/chess/",service:"firestore",presentation:"showcase",renderer:"chess"},k=`import type { PyricExampleContext } from '../definition';
|
|
11
2
|
|
|
12
3
|
export const FILES = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'] as const;
|
|
13
4
|
export const RANKS = ['1', '2', '3', '4', '5', '6', '7', '8'] as const;
|
|
@@ -273,19 +264,4 @@ export async function run({ sandbox }: PyricExampleContext) {
|
|
|
273
264
|
ruleEngine: 'Firestore Security Rules',
|
|
274
265
|
};
|
|
275
266
|
}
|
|
276
|
-
`,P
|
|
277
|
-
import type { PyricExampleContext } from '../definition';
|
|
278
|
-
|
|
279
|
-
export async function run({ sandbox }: PyricExampleContext) {
|
|
280
|
-
const db = getFirestore(sandbox.withAuth({ uid: 'ada' }));
|
|
281
|
-
const note = doc(db, 'notes', 'first');
|
|
282
|
-
|
|
283
|
-
await setDoc(note, {
|
|
284
|
-
title: 'The sandbox is local',
|
|
285
|
-
ownerId: 'ada',
|
|
286
|
-
});
|
|
287
|
-
|
|
288
|
-
const saved = await getDoc(note);
|
|
289
|
-
return saved.data();
|
|
290
|
-
}
|
|
291
|
-
`,E=Object.assign({"./chess/definition.ts":b,"./firestore-first-write/definition.ts":x}),R=Object.assign({"./chess/run.ts":v,"./firestore-first-write/run.ts":P}),y=Object.entries(E).map(([n,t])=>{const e=n.match(/^\.\/([^/]+)\/definition\.ts$/);if(!e)throw new Error(`Invalid Pyric example definition path: ${n}`);const r=e[1],s=R[`./${r}/run.ts`];if(s===void 0)throw new Error(`Pyric example '${r}' has no run.ts source`);return[r,{definition:t,source:s}]}),C=Object.freeze(Object.fromEntries(y));function I(n){const t=C[n];if(!t)throw new Error(`Unknown Pyric example: ${n}`);return t}function d(n){const t=g(),{rules:e,seed:r}=n.firestore;return h(t,e),r&&_(t,r),{run:()=>n.run({sandbox:t}),reset:()=>d(n)}}function T(n,t=d){const e=c.useRef(null);e.current===null&&(e.current=t(n));const[r,s]=c.useState(0),[m,u]=c.useState({status:"running",output:null,error:null});return c.useEffect(()=>{let i=!0;return u({status:"running",output:null,error:null}),e.current.run().then(a=>i&&u({status:"ready",output:a,error:null}),a=>i&&u({status:"error",output:null,error:a instanceof Error?a.stack??a.message:String(a)})),()=>{i=!1}},[r]),{state:m,reset(){e.current=e.current.reset(),s(i=>i+1)}}}function D({id:n}){const t=I(n).definition;S(t);const{state:e,reset:r}=T(t),s=async()=>{e.error&&await navigator.clipboard.writeText(e.error)};return o.jsxs("main",{className:"example-runtime",children:[o.jsxs("header",{children:[o.jsx("span",{className:`status status-${e.status}`,"aria-hidden":"true"}),o.jsx("strong",{children:t.header}),o.jsx("button",{type:"button",onClick:r,children:"Reset sandbox"})]}),o.jsx("p",{children:t.summary}),o.jsx("pre",{"aria-live":"polite",children:e.status==="running"?"Running…":e.status==="ready"?JSON.stringify(e.output,null,2):e.error}),e.status==="error"?o.jsx("button",{type:"button",className:"copy-error",onClick:s,children:"Copy error"}):null]})}export{D as ExampleRuntime};
|
|
267
|
+
`,_=Object.assign({"./chess/definition.ts":h}),S=Object.assign({"./chess/run.ts":k}),x=Object.entries(_).map(([n,t])=>{const e=n.match(/^\.\/([^/]+)\/definition\.ts$/);if(!e)throw new Error(`Invalid Pyric example definition path: ${n}`);const s=e[1],o=S[`./${s}/run.ts`];if(o===void 0)throw new Error(`Pyric example '${s}' has no run.ts source`);return[s,{definition:t,source:o}]}),v=Object.freeze(Object.fromEntries(x));function b(n){const t=v[n];if(!t)throw new Error(`Unknown Pyric example: ${n}`);return t}function d(n){const t=p(),{rules:e,seed:s}=n.firestore;return l(t,e),s&&f(t,s),{run:()=>n.run({sandbox:t}),reset:()=>d(n)}}function P(n,t=d){const e=u.useRef(null);e.current===null&&(e.current=t(n));const[s,o]=u.useState(0),[m,i]=u.useState({status:"running",output:null,error:null});return u.useEffect(()=>{let c=!0;return i({status:"running",output:null,error:null}),e.current.run().then(a=>c&&i({status:"ready",output:a,error:null}),a=>c&&i({status:"error",output:null,error:a instanceof Error?a.stack??a.message:String(a)})),()=>{c=!1}},[s]),{state:m,reset(){e.current=e.current.reset(),o(c=>c+1)}}}function R({id:n}){const t=b(n).definition;g(t);const{state:e,reset:s}=P(t),o=e.status==="running"?"Running":e.status==="ready"?"Ready":"Error",m=e.status==="running"?"Writing notes/first…":e.status==="ready"?JSON.stringify(e.output,null,2)??"The operation returned no value.":e.error,i=async()=>{e.error&&await navigator.clipboard.writeText(e.error)};return r.jsxs("main",{className:"example-runtime",children:[r.jsxs("header",{children:[r.jsxs("div",{className:"runtime-status",role:"status","aria-live":"polite",children:[r.jsx("span",{className:`status status-${e.status}`,"aria-hidden":"true"}),r.jsx("span",{children:o})]}),r.jsx("button",{type:"button",onClick:s,children:"Reset sandbox"})]}),r.jsxs("section",{className:`runtime-result runtime-result-${e.status}`,"aria-labelledby":"example-result-heading","aria-busy":e.status==="running",children:[r.jsxs("div",{className:"result-heading",children:[r.jsxs("div",{children:[r.jsx("span",{children:"Saved document"}),r.jsx("strong",{id:"example-result-heading",children:"notes/first"})]}),e.status==="error"?r.jsx("button",{type:"button",className:"copy-error",onClick:i,children:"Copy error"}):null]}),r.jsx("pre",{"aria-live":"polite",children:m})]})]})}export{R as ExampleRuntime};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
main[data-astro-cid-taqv5yvx].sheet{--sheet-ink: var(--ink, #fbfbfe);--sheet-muted: var(--muted, #72728a);--sheet-faint: #4a4a58;--sheet-line: var(--line, #2a2a35);--sheet-reading: #c8c8d8;--font-label: var(--font-mono, monospace);color:var(--sheet-reading);display:grid;grid-template-columns:[full-start] minmax(var(--gutter),1fr) [content-start] minmax(0,calc(var(--wide) - 2 * var(--gutter))) [content-end] minmax(var(--gutter),1fr) [full-end]}main[data-astro-cid-taqv5yvx].sheet>section[data-astro-cid-taqv5yvx]{grid-column:full;display:grid;grid-template-columns:subgrid}.tlabel[data-astro-cid-taqv5yvx]{font-family:var(--font-label);font-size:.65625rem;letter-spacing:.16em;text-transform:uppercase;color:var(--sheet-muted);display:inline-flex;gap:.5625rem}.tlabel[data-astro-cid-taqv5yvx]:before{content:"";width:1.375rem;height:.0625rem;background:currentColor}.btn[data-astro-cid-taqv5yvx]{position:relative;display:inline-flex;font-family:var(--font-ui, sans-serif);font-size:.875rem;font-weight:700;padding:.625rem 1.125rem;text-decoration:none;text-transform:uppercase}.btn--primary[data-astro-cid-taqv5yvx]{background:var(--sheet-ink);color:#14102a}.btn--primary[data-astro-cid-taqv5yvx]:hover{background:#e2e2ec}.btn--primary[data-astro-cid-taqv5yvx]:focus-visible{outline:.125rem solid var(--accent, #8f7fe8);outline-offset:.375rem}.btn--primary[data-astro-cid-taqv5yvx]:before{content:"";position:absolute;inset:-.3125rem;border:.0625rem solid var(--sheet-line);pointer-events:none;transition:border-color .15s}.btn--primary[data-astro-cid-taqv5yvx]:after{content:"";position:absolute;inset:-.5625rem;pointer-events:none;color:var(--sheet-muted);background-image:linear-gradient(currentColor 0 0),linear-gradient(currentColor 0 0),linear-gradient(currentColor 0 0),linear-gradient(currentColor 0 0),linear-gradient(currentColor 0 0),linear-gradient(currentColor 0 0),linear-gradient(currentColor 0 0),linear-gradient(currentColor 0 0);background-size:.4375rem .0625rem,.0625rem .4375rem,.4375rem .0625rem,.0625rem .4375rem,.4375rem .0625rem,.0625rem .4375rem,.4375rem .0625rem,.0625rem .4375rem;background-position:left 0 top .25rem,left .25rem top 0,right 0 top .25rem,right .25rem top 0,left 0 bottom .25rem,left .25rem bottom 0,right 0 bottom .25rem,right .25rem bottom 0;background-repeat:no-repeat;transition:color .15s}.btn--primary[data-astro-cid-taqv5yvx]:hover:before{border-color:var(--line-2, #3a3a48)}.btn--primary[data-astro-cid-taqv5yvx]:hover:after{color:var(--sheet-reading)}.z1[data-astro-cid-taqv5yvx]{position:relative;min-height:100dvh;align-items:safe center;padding-block:clamp(2.5rem,8vh,5rem) clamp(3rem,8vh,5rem)}.z1[data-astro-cid-taqv5yvx]:before{content:"";position:absolute;inset:0;background:url(/__pyric/ui/hero-charcoal.jpg) center 0% / cover no-repeat;-webkit-mask-image:linear-gradient(to bottom,transparent 0%,#000 58%);mask-image:linear-gradient(to bottom,transparent 0%,#000 58%);opacity:.35}.z1[data-astro-cid-taqv5yvx]:after{content:"";position:absolute;inset:0;background:radial-gradient(45rem 30rem ellipse at 18% 55%,rgb(0 0 0 / .5),transparent 68%),linear-gradient(to bottom,transparent 55%,color-mix(in oklab,var(--bg, #16161a) 30%,transparent))}.z1[data-astro-cid-taqv5yvx]>[data-astro-cid-taqv5yvx]{position:relative;z-index:1}.z1__inner[data-astro-cid-taqv5yvx]{grid-column:content;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,30rem),1fr));gap:clamp(2.5rem,6vw,3rem);place-items:start}.z1__headings[data-astro-cid-taqv5yvx]{display:grid;gap:var(--space-5)}.lockup[data-astro-cid-taqv5yvx]{display:grid;gap:var(--space-6)}.z1[data-astro-cid-taqv5yvx] h1[data-astro-cid-taqv5yvx]{font-family:var(--font-display, sans-serif);font-size:clamp(2.75rem,5.6vw + .25rem,4.5rem);font-weight:500;line-height:1.02;letter-spacing:-.03em;color:var(--sheet-ink);margin:0;max-width:14ch}.standfirst[data-astro-cid-taqv5yvx]{font-family:var(--font-ui, sans-serif);font-size:1.35rem;font-weight:500;line-height:1.46;max-width:32ch;margin:0;color:var(--sheet-reading);text-wrap:balance;text-shadow:0 .0625rem .125rem rgb(0 0 0 / .6),0 0 1.5rem rgb(0 0 0 / .4)}.actions[data-astro-cid-taqv5yvx]{display:flex;gap:.875rem}.composer[data-astro-cid-taqv5yvx]{justify-self:end;display:grid;grid-template-columns:[inset-start] 1rem [icon] .8125rem [gap] .625rem [body] minmax(0,max-content) [inset-end] 1rem;inline-size:fit-content;max-inline-size:100%;border:.0625rem solid var(--line-2, #3a3a48);border-radius:var(--rounded-lg, .375rem);background:color-mix(in oklab,var(--bg, #16161a) 55%,var(--panel, #1e1e24));overflow:clip;text-align:left}.composer__input[data-astro-cid-taqv5yvx]{grid-column:1 / -1;display:grid;grid-template-columns:subgrid;align-items:center;padding-block:.8125rem;border-bottom:.0625rem solid var(--line, #2a2a35);background:var(--panel, #1e1e24)}.composer__input[data-astro-cid-taqv5yvx] .composer__glyph[data-astro-cid-taqv5yvx]{grid-column:icon;grid-row:1}.composer__input[data-astro-cid-taqv5yvx] .composer__line[data-astro-cid-taqv5yvx]{grid-column:body;grid-row:1;contain:inline-size}.composer__input[data-astro-cid-taqv5yvx] .composer__copy[data-astro-cid-taqv5yvx]{grid-column:body;grid-row:1;justify-self:end}.composer__session[data-astro-cid-taqv5yvx]{grid-column:1 / -1;display:grid;grid-template-columns:subgrid;row-gap:1.375rem;padding-block:1rem 1.125rem}.turn[data-astro-cid-taqv5yvx]{grid-column:icon / inset-end;display:grid;grid-template-columns:subgrid;row-gap:.75rem}.turn[data-astro-cid-taqv5yvx]>.say[data-astro-cid-taqv5yvx]{display:contents}.say__glyph[data-astro-cid-taqv5yvx]{grid-column:1}.say__text[data-astro-cid-taqv5yvx]{grid-column:3}.turn[data-astro-cid-taqv5yvx]>.calls[data-astro-cid-taqv5yvx]{grid-column:3}.say[data-astro-cid-taqv5yvx]{font-family:var(--font-ui, sans-serif);font-size:1rem;line-height:1.55;color:var(--sheet-reading);margin:0}.say__glyph[data-astro-cid-taqv5yvx]{display:grid;color:color-mix(in oklab,var(--accent, #8f7fe8) 35%,var(--sheet-muted));block-size:1lh;align-items:center}@keyframes composer-blink{0%{opacity:.9}to{opacity:0}}.calls[data-astro-cid-taqv5yvx]{display:grid;gap:.5625rem;padding:.75rem .875rem;background:var(--bg, #16161a);border:.0625rem solid var(--line, #2a2a35);border-radius:var(--rounded-md, .25rem)}.call[data-astro-cid-taqv5yvx]{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.625rem;font-size:.75rem;line-height:1.5}.call[data-astro-cid-taqv5yvx]>svg[data-astro-cid-taqv5yvx]{color:#6e6e80;inline-size:.8125rem;align-self:center}.call__body[data-astro-cid-taqv5yvx]{display:grid;row-gap:.25rem;min-width:0}.call__status[data-astro-cid-taqv5yvx]{color:#6e6e80;align-self:center}.call__status--deny[data-astro-cid-taqv5yvx]{color:color-mix(in oklab,var(--diff-remove, #e2607a) 50%,var(--sheet-muted))}.call__cmd[data-astro-cid-taqv5yvx]{font-family:var(--font-label);color:var(--sheet-ink);overflow-wrap:break-word}.call__cmd[data-astro-cid-taqv5yvx] i[data-astro-cid-taqv5yvx]{font-style:normal;color:#a0a0b4}.call__out[data-astro-cid-taqv5yvx]{font-family:var(--font-label);color:#a0a0b4;overflow-wrap:break-word}.composer__glyph[data-astro-cid-taqv5yvx]{display:grid;color:var(--sheet-muted)}.composer__line[data-astro-cid-taqv5yvx]{font-family:var(--font-label);font-size:clamp(.875rem,1.5vw,1.0625rem);color:#e9e9f2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.composer__line[data-astro-cid-taqv5yvx] .sk[data-astro-cid-taqv5yvx]{color:var(--accent, #8f7fe8);font-weight:500}.composer__copy[data-astro-cid-taqv5yvx]{display:grid;place-items:center;inline-size:2rem;block-size:2rem;border:.0625rem solid var(--line-2, #3a3a48);border-radius:var(--rounded-md, .25rem);background:transparent;color:var(--sheet-muted);cursor:pointer;transition:color .15s,border-color .15s}.composer__copy[data-astro-cid-taqv5yvx]:hover{color:var(--sheet-ink);border-color:#4a4a5a}.composer__copy[data-astro-cid-taqv5yvx]:focus-visible{outline:.125rem solid var(--accent, #8f7fe8);outline-offset:.125rem}.composer__copy[data-astro-cid-taqv5yvx] .ic-check[data-astro-cid-taqv5yvx]{display:none;color:var(--diff-add, #57b985)}.composer__copy[data-astro-cid-taqv5yvx].copied .ic-copy[data-astro-cid-taqv5yvx]{display:none}.composer__copy[data-astro-cid-taqv5yvx].copied .ic-check[data-astro-cid-taqv5yvx]{display:block}.z3[data-astro-cid-taqv5yvx]{border-top:.0625rem solid var(--sheet-line);padding-block:clamp(4rem,10vh,8rem)}.z3__inner[data-astro-cid-taqv5yvx]{grid-column:content;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,32rem),1fr));gap:clamp(3.5rem,8vw,8rem);align-items:center}@media(max-width:59.9rem){.z1__inner[data-astro-cid-taqv5yvx]{gap:4.5rem}.z3__inner[data-astro-cid-taqv5yvx]{gap:5.5rem}}.z3__art[data-astro-cid-taqv5yvx]{inline-size:min(100%,30rem);block-size:auto;justify-self:center;filter:brightness(1.6)}.z3__body[data-astro-cid-taqv5yvx]{max-inline-size:60ch;display:grid;row-gap:var(--space-6)}.z3__headings[data-astro-cid-taqv5yvx]{display:grid;gap:var(--space-4)}.z3__body[data-astro-cid-taqv5yvx] h2[data-astro-cid-taqv5yvx]{font-family:var(--font-display, sans-serif);font-size:2.125rem;font-weight:500;line-height:1.15;color:var(--sheet-ink);letter-spacing:-.02em;margin:0}.z3__body[data-astro-cid-taqv5yvx] h3[data-astro-cid-taqv5yvx]{font-family:var(--font-ui, sans-serif);font-size:1.25rem;font-weight:500;line-height:1.4;color:var(--sheet-reading);margin:0}.z3__body[data-astro-cid-taqv5yvx] p[data-astro-cid-taqv5yvx]{font-size:1.125rem;line-height:1.85;margin:0;color:var(--sheet-reading)}.z3__body[data-astro-cid-taqv5yvx] .perr[data-astro-cid-taqv5yvx]{font-family:var(--font-label);font-size:.875em;color:var(--sheet-ink)}.z3__body[data-astro-cid-taqv5yvx] .closer[data-astro-cid-taqv5yvx]{font-family:var(--font-display, sans-serif);font-size:1.375rem;font-weight:500;color:var(--sheet-ink);margin:0}.z3__cta[data-astro-cid-taqv5yvx]{grid-column:1/-1;align-items:center;justify-content:center;display:flex}.z3__cta-actions[data-astro-cid-taqv5yvx]{display:grid;justify-content:center;align-items:center}.z3__cta-actions[data-astro-cid-taqv5yvx] .btn[data-astro-cid-taqv5yvx]{display:flex;align-items:center;justify-content:center;padding:14px 32px;font-size:1rem}.byline[data-astro-cid-taqv5yvx]{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;column-gap:.75rem}.byline[data-astro-cid-taqv5yvx] img[data-astro-cid-taqv5yvx]{inline-size:2.5rem;block-size:2.5rem;border-radius:50%}.byline__who[data-astro-cid-taqv5yvx]{display:grid}.byline__name[data-astro-cid-taqv5yvx]{font-size:.875rem;font-weight:500;color:var(--sheet-ink)}.byline__handle[data-astro-cid-taqv5yvx]{font-size:.8125rem;color:var(--sheet-muted);text-decoration:none;justify-self:start}.byline__handle[data-astro-cid-taqv5yvx]:hover{color:var(--sheet-ink)}.z4[data-astro-cid-taqv5yvx]{padding-block:clamp(2rem,4vh,3rem)}.foot[data-astro-cid-taqv5yvx]{grid-column:content;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;border-top:.0625rem solid var(--sheet-line);padding-block-start:1.5rem}.foot__brand[data-astro-cid-taqv5yvx]{display:grid;grid-auto-flow:column;align-items:center;column-gap:.5rem;font-size:.875rem;font-weight:500;color:var(--sheet-ink)}.foot__brand[data-astro-cid-taqv5yvx] img[data-astro-cid-taqv5yvx]{block-size:1.25rem;inline-size:auto;filter:brightness(2.1) contrast(1.5)}.foot__links[data-astro-cid-taqv5yvx]{display:grid;grid-auto-flow:column;justify-content:end;column-gap:1.5rem;font-size:.8125rem}.foot__links[data-astro-cid-taqv5yvx] a[data-astro-cid-taqv5yvx]{color:var(--sheet-muted);text-decoration:none}.foot__links[data-astro-cid-taqv5yvx] a[data-astro-cid-taqv5yvx]:hover{color:var(--sheet-ink)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--font-ui: "neue-haas-grotesk-text", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: "input-mono-narrow", "input-mono", "JetBrains Mono", ui-monospace, SFMono-Regular, monospace;--font-display: "neue-haas-grotesk-display", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-darkmode: "darkmode-off", sans-serif}.font-darkmode{font-family:var(--font-darkmode, "darkmode-off", sans-serif)}.font-darkmode-light{font-family:darkmode-off,sans-serif;font-weight:300;font-style:normal}.font-darkmode-regular{font-family:darkmode-off,sans-serif;font-weight:400;font-style:normal}.font-darkmode-medium{font-family:darkmode-off,sans-serif;font-weight:500;font-style:normal}.font-darkmode-bold{font-family:darkmode-off,sans-serif;font-weight:700;font-style:normal}.font-darkmode-black{font-family:darkmode-off,sans-serif;font-weight:900;font-style:normal}:root{--fs-title: 17px;--fs-body: 13px;--fs-label: 12px;--fs-data: 12.5px;--fs-caption: 11.5px;--fs-micro: 10.5px;--tracking-micro: .06em;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px}:root{--bg: #16161a;--panel: #1e1e24;--elevated: #24242c;--ink: #fbfbfe;--muted: #72728a;--faint: #72728a;--line: #2a2a35;--line-2: #3a3a48;--accent: #8f7fe8;--accent-tint: #1e1b2e;--accent-ink: #14102a;--deny: #ededee;--deny-ink: #0c0c0d;--deny-tint: #161618;--diff-add: #57b985;--diff-add-bg: #111d16;--diff-remove: #e2607a;--diff-remove-bg: #221318}@media(prefers-color-scheme:light){:root:not([data-theme]){--bg: #ffffff;--panel: #fafafa;--elevated: #ffffff;--ink: #16181d;--muted: #646b78;--faint: #9aa1ad;--line: #e7e8ec;--line-2: #d9dbe0;--accent: #6b57d6;--accent-tint: #f4f2fd;--accent-ink: #ffffff;--deny: #16181d;--deny-ink: #ffffff;--deny-tint: #f4f4f6;--diff-add: #1f8f4e;--diff-add-bg: #eef8f1;--diff-remove: #c2374b;--diff-remove-bg: #fceef0}}[data-theme=light]{--bg: #ffffff;--panel: #fafafa;--elevated: #ffffff;--ink: #16181d;--muted: #646b78;--faint: #9aa1ad;--line: #e7e8ec;--line-2: #d9dbe0;--accent: #6b57d6;--accent-tint: #f4f2fd;--accent-ink: #ffffff;--deny: #16181d;--deny-ink: #ffffff;--deny-tint: #f4f4f6;--diff-add: #1f8f4e;--diff-add-bg: #eef8f1;--diff-remove: #c2374b;--diff-remove-bg: #fceef0}:root{--code-bg: #0f0f17;--wide: 1440px;--gutter: clamp(16px, 3vw, 32px);--tab-gap: var(--space-4);color-scheme:dark}@media(prefers-color-scheme:light){:root:not([data-theme]){color-scheme:light}}[data-theme=light]{color-scheme:light}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-ui);font-feature-settings:"cv11","ss01";font-size:16px;line-height:1.7;-webkit-font-smoothing:antialiased}.studio__chrome{display:flex;flex-direction:column;min-width:0;border-bottom:1px solid var(--line);background:var(--panel);position:sticky;top:0;z-index:10;padding-top:env(safe-area-inset-top,0px)}.studio__bar{min-width:0}.studio__chrome-inner{box-sizing:border-box;width:min(var(--wide),calc(100% - 2 * var(--gutter)));margin-inline:auto;display:flex;align-items:center;column-gap:var(--tab-gap);min-width:0}.studio__bar .studio__chrome-inner{height:54px}.studio__brand{font-family:var(--font-display, sans-serif);font-size:1.0625rem;font-weight:500;letter-spacing:-.01em;line-height:1;color:var(--ink);text-decoration:none;flex:0 0 auto}.studio__nav{display:flex;align-items:baseline;justify-content:flex-start;column-gap:var(--tab-gap);font-size:13px;font-weight:500;line-height:1;min-width:0;overflow-x:auto;flex:1 1 auto;scrollbar-width:none}.studio__nav::-webkit-scrollbar{display:none}.studio__nav-tab{flex:0 0 auto;border-bottom:2px solid transparent;font:inherit;line-height:inherit;color:var(--muted);text-decoration:none;padding:0;white-space:nowrap;transition:color .12s,border-color .12s}.studio__nav-tab:hover{color:color-mix(in srgb,var(--ink) 80%,transparent)}.studio__nav-tab[aria-current=page]{color:var(--ink);border-bottom-color:var(--ink)}@media(max-width:760px){.studio__nav{scroll-snap-type:x proximity;mask-image:linear-gradient(to right,#000 calc(100% - 1.75em),transparent);-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 1.75em),transparent)}.studio__nav:after{content:"";flex:0 0 1.75em}.studio__nav-tab{scroll-snap-align:start}}.docs-shell{max-width:var(--wide);margin-inline:auto;padding:2.5rem var(--gutter) 5rem;display:grid;grid-template-columns:minmax(200px,240px) minmax(0,1fr) minmax(180px,220px);column-gap:clamp(var(--space-6),4vw,calc(var(--space-6) * 2.5));row-gap:3rem;align-items:start}.docs-nav{position:sticky;top:calc(54px + 1.5rem);max-height:calc(100vh - 54px - 4rem);max-height:calc(100dvh - 54px - 4rem);overflow-y:auto;padding-bottom:var(--space-6);display:grid;align-content:start;gap:var(--space-3);font-size:.8125rem;line-height:1.5}.docs-nav-toplink{display:flex;align-items:center;min-height:2.125rem;padding:var(--space-1) var(--space-3);border-radius:.375rem;font-weight:450;color:var(--ink);text-decoration:none;transition:background-color .12s}.docs-nav-toplink:hover{background:color-mix(in srgb,var(--panel) 70%,transparent)}.docs-nav-toplink[aria-current=page]{background:var(--panel)}.docs-nav-group>summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);min-height:2.125rem;padding:var(--space-1) var(--space-3);border-radius:.375rem;font-weight:450;color:var(--ink);transition:background-color .12s}.docs-nav-group>summary:hover{background:color-mix(in srgb,var(--panel) 70%,transparent)}.docs-nav-group>summary::-webkit-details-marker{display:none}.docs-nav-group>summary:after{content:"›";display:inline-block;color:var(--faint);font-weight:400;transition:transform .12s}.docs-nav-group[open]>summary:after{transform:rotate(90deg)}.docs-nav-group-body{display:grid;gap:var(--space-5);padding:var(--space-1) 0 var(--space-2)}.docs-nav-heading{margin:0 0 var(--space-1);padding-inline:var(--space-3);font-size:.6875rem;font-weight:500;text-transform:uppercase;letter-spacing:var(--tracking-micro, .06em);color:var(--muted)}.docs-nav ul{margin:0;padding:0;list-style:none;display:grid;gap:var(--space-1)}.docs-nav li{min-width:0}.docs-nav a{display:flex;align-items:center;min-height:2.125rem;padding:var(--space-1) var(--space-3);border-radius:.375rem;color:var(--muted);text-decoration:none;background:transparent;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:background-color .12s,color .12s}.docs-nav a:hover{color:var(--ink);background:color-mix(in srgb,var(--panel) 70%,transparent)}.docs-nav a[aria-current]{color:var(--ink)}.docs-nav a[aria-current=page]{background:var(--panel);font-weight:500}.docs-nav-drawer{display:none}.doc-main{width:100%;max-width:72ch;margin-inline:auto;min-width:0;font-size:1rem}.doc-toc{position:sticky;top:calc(54px + 1.5rem);max-height:calc(100vh - 54px - 4rem);max-height:calc(100dvh - 54px - 4rem);overflow-y:auto;padding-bottom:var(--space-6);display:grid;align-content:start;font-size:.8125rem}.doc-toc-heading{margin:0 0 .625rem;font-family:var(--font-mono);font-size:var(--fs-micro, 10.5px);font-weight:500;text-transform:uppercase;letter-spacing:var(--tracking-micro, .06em);color:var(--muted)}.doc-toc ul{margin:0;padding:0;list-style:none;display:grid;gap:.375rem;border-left:1px solid var(--line)}.doc-toc li{min-width:0}.doc-toc a{display:block;padding-left:.75rem;margin-left:-1px;border-left:1px solid transparent;color:var(--muted);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.doc-toc li[data-depth="3"] a{padding-left:1.5rem}.doc-toc a:hover{color:var(--ink)}.doc-toc a.active{color:var(--accent);border-left-color:var(--accent)}.docs-search{position:relative}.docs-search-field{display:flex;align-items:center;gap:var(--space-2);min-height:2.125rem;padding:0 var(--space-3);border:1px solid var(--line);border-radius:.375rem;background:var(--panel)}.docs-search-icon{flex-shrink:0;color:var(--faint)}.docs-search-input{flex:1;min-width:0;border:none;outline:none;background:transparent;color:var(--ink);font:inherit;font-size:.8125rem}.docs-search-input::placeholder{color:var(--faint)}.docs-search-kbd{flex-shrink:0;font-family:var(--font-mono);font-size:var(--fs-micro, 10.5px);color:var(--faint);border:1px solid var(--line);border-radius:.25rem;padding:.0625rem .3125rem;background:var(--elevated)}.docs-search-results{position:absolute;top:calc(100% + var(--space-1));left:0;right:0;z-index:20;margin:0;padding:var(--space-1);list-style:none;display:grid;gap:2px;background:var(--elevated);border:1px solid var(--line);border-radius:.5rem;box-shadow:0 12px 28px #00000059;max-height:60vh;overflow-y:auto}.docs-search-results li{min-width:0}.docs-search-results a{display:grid;gap:2px;padding:var(--space-2) var(--space-3);border-radius:.375rem;text-decoration:none;color:var(--ink)}.docs-search-results a:hover{background:var(--panel)}.docs-search-result-title{font-size:.8125rem;color:var(--ink)}.docs-search-result-meta{font-size:var(--fs-caption, 11.5px);color:var(--faint)}.docs-search-empty{padding:var(--space-2) var(--space-3);color:var(--faint);font-size:.8125rem}.docs-breadcrumbs{margin:0 0 var(--rhythm-group);font-size:var(--fs-caption, 11.5px)}.docs-breadcrumbs ol{display:flex;flex-wrap:wrap;align-items:center;gap:.375rem;margin:0;padding:0;list-style:none}.docs-breadcrumbs li{display:flex;align-items:center;gap:.375rem;min-width:0}.docs-breadcrumbs a{color:var(--muted);text-decoration:none}.docs-breadcrumbs a:hover{color:var(--ink);text-decoration:underline}.docs-breadcrumbs [aria-current=page],.docs-breadcrumbs-sep{color:var(--faint)}.docs-nav,.doc-toc,.docs-search-results,pre,.prose .table-scroll{scrollbar-width:thin;scrollbar-color:var(--line-2) transparent}.docs-nav::-webkit-scrollbar,.doc-toc::-webkit-scrollbar,.docs-search-results::-webkit-scrollbar,pre::-webkit-scrollbar,.prose .table-scroll::-webkit-scrollbar{width:8px;height:8px}.docs-nav::-webkit-scrollbar-track,.doc-toc::-webkit-scrollbar-track,.docs-search-results::-webkit-scrollbar-track,pre::-webkit-scrollbar-track,.prose .table-scroll::-webkit-scrollbar-track{background:transparent}.docs-nav::-webkit-scrollbar-thumb,.doc-toc::-webkit-scrollbar-thumb,.docs-search-results::-webkit-scrollbar-thumb,pre::-webkit-scrollbar-thumb,.prose .table-scroll::-webkit-scrollbar-thumb{background-color:var(--line-2);border-radius:999px;border:2px solid transparent;background-clip:content-box}.prose h1,.prose h2,.prose h3,.prose h4{font-family:var(--font-display)}.prose h1{font-size:1.75rem;font-weight:650;line-height:1.25;letter-spacing:-.02em}.prose h2{font-size:1.3125rem;font-weight:600;line-height:1.3;letter-spacing:-.01em}.prose h3{font-size:1.0625rem;font-weight:600;line-height:1.35}.prose h4{font-size:.9375rem;font-weight:600}.prose a{color:var(--accent);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--accent) 40%,transparent);text-underline-offset:2px}.prose a:hover{text-decoration-color:var(--accent)}a.external-link:after{content:"";display:inline-block;vertical-align:baseline;width:.625em;height:.625em;margin-left:.2em;background-color:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4.5 2.5h9v9h-2V5.91l-6.8 6.8-1.41-1.42 6.79-6.79H4.5v-2z'/%3E%3C/svg%3E") no-repeat center / contain;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4.5 2.5h9v9h-2V5.91l-6.8 6.8-1.41-1.42 6.79-6.79H4.5v-2z'/%3E%3C/svg%3E") no-repeat center / contain}.prose strong{font-weight:600;color:var(--ink)}.prose code{font-family:var(--font-mono);font-size:.85em;background:var(--panel);border:1px solid var(--line);border-radius:.25rem;padding:.0625rem .3125rem}.prose pre{border:1px solid var(--line);border-radius:.375rem;padding:.875rem 1rem;overflow-x:auto;font-size:.8125rem;line-height:1.6}.prose pre.astro-code{background-color:var(--code-bg)!important}.prose pre code{background:none;border:none;padding:0;font-size:inherit}.prose ul,.prose ol{padding-inline-start:1.5rem}.prose li::marker{color:var(--muted)}.prose blockquote{position:relative;margin-inline:0;padding-inline:0;padding-block:var(--rhythm-para);color:var(--muted)}.prose blockquote:before{content:"";position:absolute;inset-block:0;left:calc(-1 * var(--space-4));width:2px;background:var(--line-2)}.prose hr{border:none;border-top:1px solid var(--line)}.prose .table-scroll{max-width:100%;overflow-x:auto}.prose table{width:auto;border-collapse:collapse;font-size:.875rem}.prose th,.prose td{border:0;border-bottom:1px solid var(--line);padding:.5rem 2rem .5rem 0;text-align:left;vertical-align:top}.prose th:last-child,.prose td:last-child{padding-right:0}.prose th{font-family:var(--font-mono);font-size:.6875rem;text-transform:uppercase;letter-spacing:var(--tracking-micro, .06em);color:var(--muted);white-space:nowrap;border-bottom-color:var(--line-2)}.prose td code{white-space:nowrap}pre,code,kbd,samp{font-variant-ligatures:none}.prose .compat-key{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-5);margin:1rem 0;font-size:var(--fs-caption);color:var(--muted)}.prose .compat-key-item{display:inline-flex;align-items:center;gap:var(--space-2);white-space:nowrap}.prose .compat-list{margin:1rem 0}.prose .compat-list--plain .compat-line{grid-template-columns:1fr}.prose .compat-line{display:grid;grid-template-columns:.75rem 1fr auto;column-gap:var(--space-3);align-items:start;padding:var(--space-2) 0}.prose .compat-main{display:flex;flex-direction:column;gap:1px;min-width:0}.prose .compat-api{font-family:var(--font-mono);font-size:.9rem;color:var(--ink);overflow-wrap:anywhere}.prose .compat-sub{font-size:.8125rem;color:var(--ink)}.prose .compat-category{color:var(--muted)}.prose .compat-row{border-bottom:1px solid var(--line)}.prose .compat-row:last-child{border-bottom:0}.prose summary.compat-line{cursor:pointer;list-style:none}.prose summary.compat-line::-webkit-details-marker{display:none}.prose summary.compat-line:after{content:"›";color:var(--faint);transition:transform .12s}.prose details[open]>summary.compat-line:after{transform:rotate(90deg)}.prose .compat-dot{width:8px;height:8px;border-radius:50%;background:var(--muted);flex-shrink:0}.prose .compat-line .compat-dot{margin-top:.4em}.prose .compat-dot[data-status=ok]{background:var(--diff-add)}.prose .compat-dot[data-status=diverged]{background:var(--accent)}.prose .compat-dot[data-status=bug]{background:var(--diff-remove)}.prose .compat-dot[data-status=unsupported]{background:var(--line-2)}.prose .compat-dot[data-status=unverified]{background:transparent;box-shadow:inset 0 0 0 1px var(--faint)}.prose .compat-status{font-family:var(--font-mono);font-size:var(--fs-caption);color:var(--muted)}.prose .compat-behavior{font-size:.875rem}.prose .compat-evidence{margin:0 0 var(--space-2) calc(.75rem + var(--space-3))}.prose .compat-probe,.prose .compat-note{margin-top:2px;font-size:var(--fs-caption);color:var(--muted);overflow-wrap:anywhere}.prose .compat-probe{font-family:var(--font-mono)}.prose .compat-list code,.prose .compat-key code{background:none;border:0;padding:0;color:inherit}.prose h1,.prose h2,.prose h3,.prose h4{scroll-margin-top:calc(54px + 1.5rem)}@media(max-width:1080px){.docs-shell{grid-template-columns:240px minmax(0,1fr)}.doc-toc{display:none}}@media(max-width:800px){.docs-shell{grid-template-columns:minmax(0,1fr);gap:1.5rem;padding-top:1.5rem}.docs-shell>.docs-nav{display:none}.docs-nav-drawer{display:block;border:1px solid var(--line);background:var(--panel)}.docs-nav-drawer>summary{cursor:pointer;padding:.625rem 1rem;font-family:var(--font-mono);font-size:.75rem;text-transform:uppercase;letter-spacing:var(--tracking-micro, .06em);color:var(--muted);list-style:none}.docs-nav-drawer>summary:after{content:" ▾"}.docs-nav-drawer .docs-nav{display:grid;position:static;max-height:none;padding:0 1rem 1rem}}.docs-nav-group-body--reference{gap:var(--space-3)}
|