@pyric/cli 0.1.0-alpha.9
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/LICENSE +216 -0
- package/README.md +156 -0
- package/README.md.orig +138 -0
- package/dist/assurance/attachment.d.ts +24 -0
- package/dist/assurance/attachment.d.ts.map +1 -0
- package/dist/assurance/attachment.js +138 -0
- package/dist/assurance/attachment.js.map +1 -0
- package/dist/assurance/browser.d.ts +7 -0
- package/dist/assurance/browser.d.ts.map +1 -0
- package/dist/assurance/browser.js +68 -0
- package/dist/assurance/browser.js.map +1 -0
- package/dist/assurance/campaign.d.ts +41 -0
- package/dist/assurance/campaign.d.ts.map +1 -0
- package/dist/assurance/campaign.js +364 -0
- package/dist/assurance/campaign.js.map +1 -0
- package/dist/assurance/capabilities.d.ts +7 -0
- package/dist/assurance/capabilities.d.ts.map +1 -0
- package/dist/assurance/capabilities.js +295 -0
- package/dist/assurance/capabilities.js.map +1 -0
- package/dist/assurance/cases.d.ts +14 -0
- package/dist/assurance/cases.d.ts.map +1 -0
- package/dist/assurance/cases.js +27 -0
- package/dist/assurance/cases.js.map +1 -0
- package/dist/assurance/generated-capabilities.d.ts +52 -0
- package/dist/assurance/generated-capabilities.d.ts.map +1 -0
- package/dist/assurance/generated-capabilities.js +329 -0
- package/dist/assurance/generated-capabilities.js.map +1 -0
- package/dist/assurance/index.d.ts +11 -0
- package/dist/assurance/index.d.ts.map +1 -0
- package/dist/assurance/index.js +9 -0
- package/dist/assurance/index.js.map +1 -0
- package/dist/assurance/runner.d.ts +3 -0
- package/dist/assurance/runner.d.ts.map +1 -0
- package/dist/assurance/runner.js +633 -0
- package/dist/assurance/runner.js.map +1 -0
- package/dist/assurance/tool-names.d.ts +4 -0
- package/dist/assurance/tool-names.d.ts.map +1 -0
- package/dist/assurance/tool-names.js +14 -0
- package/dist/assurance/tool-names.js.map +1 -0
- package/dist/assurance/tools.d.ts +19 -0
- package/dist/assurance/tools.d.ts.map +1 -0
- package/dist/assurance/tools.js +740 -0
- package/dist/assurance/tools.js.map +1 -0
- package/dist/assurance/types.d.ts +348 -0
- package/dist/assurance/types.d.ts.map +1 -0
- package/dist/assurance/types.js +7 -0
- package/dist/assurance/types.js.map +1 -0
- package/dist/assurance/validation.d.ts +8 -0
- package/dist/assurance/validation.d.ts.map +1 -0
- package/dist/assurance/validation.js +269 -0
- package/dist/assurance/validation.js.map +1 -0
- package/dist/bridge/client/bridge.d.ts +133 -0
- package/dist/bridge/client/bridge.d.ts.map +1 -0
- package/dist/bridge/client/bridge.js +429 -0
- package/dist/bridge/client/bridge.js.map +1 -0
- package/dist/bridge/client/dispatch.d.ts +41 -0
- package/dist/bridge/client/dispatch.d.ts.map +1 -0
- package/dist/bridge/client/dispatch.js +111 -0
- package/dist/bridge/client/dispatch.js.map +1 -0
- package/dist/bridge/client.d.ts +24 -0
- package/dist/bridge/client.d.ts.map +1 -0
- package/dist/bridge/client.js +26 -0
- package/dist/bridge/client.js.map +1 -0
- package/dist/bridge/protocol.d.ts +227 -0
- package/dist/bridge/protocol.d.ts.map +1 -0
- package/dist/bridge/protocol.js +131 -0
- package/dist/bridge/protocol.js.map +1 -0
- package/dist/bridge/server/audit.d.ts +19 -0
- package/dist/bridge/server/audit.d.ts.map +1 -0
- package/dist/bridge/server/audit.js +46 -0
- package/dist/bridge/server/audit.js.map +1 -0
- package/dist/bridge/server/bridge.d.ts +126 -0
- package/dist/bridge/server/bridge.d.ts.map +1 -0
- package/dist/bridge/server/bridge.js +383 -0
- package/dist/bridge/server/bridge.js.map +1 -0
- package/dist/bridge/server/headless.d.ts +36 -0
- package/dist/bridge/server/headless.d.ts.map +1 -0
- package/dist/bridge/server/headless.js +142 -0
- package/dist/bridge/server/headless.js.map +1 -0
- package/dist/bridge/server/json-schema-to-zod.d.ts +37 -0
- package/dist/bridge/server/json-schema-to-zod.d.ts.map +1 -0
- package/dist/bridge/server/json-schema-to-zod.js +93 -0
- package/dist/bridge/server/json-schema-to-zod.js.map +1 -0
- package/dist/bridge/server/local-bridge.d.ts +33 -0
- package/dist/bridge/server/local-bridge.d.ts.map +1 -0
- package/dist/bridge/server/local-bridge.js +41 -0
- package/dist/bridge/server/local-bridge.js.map +1 -0
- package/dist/bridge/server/logger.d.ts +28 -0
- package/dist/bridge/server/logger.d.ts.map +1 -0
- package/dist/bridge/server/logger.js +42 -0
- package/dist/bridge/server/logger.js.map +1 -0
- package/dist/bridge/server/mcp-contract.d.ts +21 -0
- package/dist/bridge/server/mcp-contract.d.ts.map +1 -0
- package/dist/bridge/server/mcp-contract.js +62 -0
- package/dist/bridge/server/mcp-contract.js.map +1 -0
- package/dist/bridge/server/mcp.d.ts +26 -0
- package/dist/bridge/server/mcp.d.ts.map +1 -0
- package/dist/bridge/server/mcp.js +102 -0
- package/dist/bridge/server/mcp.js.map +1 -0
- package/dist/bridge/server/peer.d.ts +39 -0
- package/dist/bridge/server/peer.d.ts.map +1 -0
- package/dist/bridge/server/peer.js +189 -0
- package/dist/bridge/server/peer.js.map +1 -0
- package/dist/bridge/server/standalone.d.ts +49 -0
- package/dist/bridge/server/standalone.d.ts.map +1 -0
- package/dist/bridge/server/standalone.js +267 -0
- package/dist/bridge/server/standalone.js.map +1 -0
- package/dist/bridge/server/tool-metadata.d.ts +38 -0
- package/dist/bridge/server/tool-metadata.d.ts.map +1 -0
- package/dist/bridge/server/tool-metadata.js +81 -0
- package/dist/bridge/server/tool-metadata.js.map +1 -0
- package/dist/bridge/server.d.ts +21 -0
- package/dist/bridge/server.d.ts.map +1 -0
- package/dist/bridge/server.js +18 -0
- package/dist/bridge/server.js.map +1 -0
- package/dist/cli/database-rules.d.ts +43 -0
- package/dist/cli/database-rules.d.ts.map +1 -0
- package/dist/cli/database-rules.js +261 -0
- package/dist/cli/database-rules.js.map +1 -0
- package/dist/cli/dev-runner.d.ts +112 -0
- package/dist/cli/dev-runner.d.ts.map +1 -0
- package/dist/cli/dev-runner.js +239 -0
- package/dist/cli/dev-runner.js.map +1 -0
- package/dist/cli/firebase-json.d.ts +66 -0
- package/dist/cli/firebase-json.d.ts.map +1 -0
- package/dist/cli/firebase-json.js +60 -0
- package/dist/cli/firebase-json.js.map +1 -0
- package/dist/cli/firestore-indexes.d.ts +21 -0
- package/dist/cli/firestore-indexes.d.ts.map +1 -0
- package/dist/cli/firestore-indexes.js +39 -0
- package/dist/cli/firestore-indexes.js.map +1 -0
- package/dist/cli/index.d.ts +56 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +379 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init.d.ts +50 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +182 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/mcp-proxy.d.ts +10 -0
- package/dist/cli/mcp-proxy.d.ts.map +1 -0
- package/dist/cli/mcp-proxy.js +129 -0
- package/dist/cli/mcp-proxy.js.map +1 -0
- package/dist/cli/parse-args.d.ts +20 -0
- package/dist/cli/parse-args.d.ts.map +1 -0
- package/dist/cli/parse-args.js +69 -0
- package/dist/cli/parse-args.js.map +1 -0
- package/dist/cli/rules.d.ts +55 -0
- package/dist/cli/rules.d.ts.map +1 -0
- package/dist/cli/rules.js +199 -0
- package/dist/cli/rules.js.map +1 -0
- package/dist/cli/scope.d.ts +12 -0
- package/dist/cli/scope.d.ts.map +1 -0
- package/dist/cli/scope.js +44 -0
- package/dist/cli/scope.js.map +1 -0
- package/dist/cli/serve.d.ts +122 -0
- package/dist/cli/serve.d.ts.map +1 -0
- package/dist/cli/serve.js +844 -0
- package/dist/cli/serve.js.map +1 -0
- package/dist/cli/service-commands.d.ts +8 -0
- package/dist/cli/service-commands.d.ts.map +1 -0
- package/dist/cli/service-commands.js +58 -0
- package/dist/cli/service-commands.js.map +1 -0
- package/dist/cli/snapshot.d.ts +22 -0
- package/dist/cli/snapshot.d.ts.map +1 -0
- package/dist/cli/snapshot.js +139 -0
- package/dist/cli/snapshot.js.map +1 -0
- package/dist/cli/storage-rules.d.ts +21 -0
- package/dist/cli/storage-rules.d.ts.map +1 -0
- package/dist/cli/storage-rules.js +121 -0
- package/dist/cli/storage-rules.js.map +1 -0
- package/dist/cli/verify.d.ts +23 -0
- package/dist/cli/verify.d.ts.map +1 -0
- package/dist/cli/verify.js +349 -0
- package/dist/cli/verify.js.map +1 -0
- package/dist/credentials/core/memoize-ttl.d.ts +58 -0
- package/dist/credentials/core/memoize-ttl.d.ts.map +1 -0
- package/dist/credentials/core/memoize-ttl.js +88 -0
- package/dist/credentials/core/memoize-ttl.js.map +1 -0
- package/dist/credentials/core/types.d.ts +11 -0
- package/dist/credentials/core/types.d.ts.map +1 -0
- package/dist/credentials/core/types.js +2 -0
- package/dist/credentials/core/types.js.map +1 -0
- package/dist/credentials/node/from-adc.d.ts +10 -0
- package/dist/credentials/node/from-adc.d.ts.map +1 -0
- package/dist/credentials/node/from-adc.js +76 -0
- package/dist/credentials/node/from-adc.js.map +1 -0
- package/dist/credentials/node/from-service-account.d.ts +24 -0
- package/dist/credentials/node/from-service-account.d.ts.map +1 -0
- package/dist/credentials/node/from-service-account.js +108 -0
- package/dist/credentials/node/from-service-account.js.map +1 -0
- package/dist/credentials/node/index.d.ts +7 -0
- package/dist/credentials/node/index.d.ts.map +1 -0
- package/dist/credentials/node/index.js +7 -0
- package/dist/credentials/node/index.js.map +1 -0
- package/dist/discover/concurrency.d.ts +42 -0
- package/dist/discover/concurrency.d.ts.map +1 -0
- package/dist/discover/concurrency.js +113 -0
- package/dist/discover/concurrency.js.map +1 -0
- package/dist/discover/crawler-adapter.d.ts +48 -0
- package/dist/discover/crawler-adapter.d.ts.map +1 -0
- package/dist/discover/crawler-adapter.js +92 -0
- package/dist/discover/crawler-adapter.js.map +1 -0
- package/dist/discover/crawler.d.ts +294 -0
- package/dist/discover/crawler.d.ts.map +1 -0
- package/dist/discover/crawler.js +764 -0
- package/dist/discover/crawler.js.map +1 -0
- package/dist/discover/credential-free.d.ts +19 -0
- package/dist/discover/credential-free.d.ts.map +1 -0
- package/dist/discover/credential-free.js +18 -0
- package/dist/discover/credential-free.js.map +1 -0
- package/dist/discover/findCollectionGroup.d.ts +44 -0
- package/dist/discover/findCollectionGroup.d.ts.map +1 -0
- package/dist/discover/findCollectionGroup.js +81 -0
- package/dist/discover/findCollectionGroup.js.map +1 -0
- package/dist/discover/firestore-source.d.ts +60 -0
- package/dist/discover/firestore-source.d.ts.map +1 -0
- package/dist/discover/firestore-source.js +11 -0
- package/dist/discover/firestore-source.js.map +1 -0
- package/dist/discover/index.d.ts +3 -0
- package/dist/discover/index.d.ts.map +1 -0
- package/dist/discover/index.js +5 -0
- package/dist/discover/index.js.map +1 -0
- package/dist/discover/merge.d.ts +108 -0
- package/dist/discover/merge.d.ts.map +1 -0
- package/dist/discover/merge.js +394 -0
- package/dist/discover/merge.js.map +1 -0
- package/dist/discover/session.d.ts +116 -0
- package/dist/discover/session.d.ts.map +1 -0
- package/dist/discover/session.js +331 -0
- package/dist/discover/session.js.map +1 -0
- package/dist/discover/tools.d.ts +58 -0
- package/dist/discover/tools.d.ts.map +1 -0
- package/dist/discover/tools.js +115 -0
- package/dist/discover/tools.js.map +1 -0
- package/dist/discover/types.d.ts +190 -0
- package/dist/discover/types.d.ts.map +1 -0
- package/dist/discover/types.js +12 -0
- package/dist/discover/types.js.map +1 -0
- package/dist/discover/wire.d.ts +70 -0
- package/dist/discover/wire.d.ts.map +1 -0
- package/dist/discover/wire.js +309 -0
- package/dist/discover/wire.js.map +1 -0
- package/dist/functions-rtdb/child.d.ts +52 -0
- package/dist/functions-rtdb/child.d.ts.map +1 -0
- package/dist/functions-rtdb/child.js +283 -0
- package/dist/functions-rtdb/child.js.map +1 -0
- package/dist/functions-rtdb/delivery.d.ts +4 -0
- package/dist/functions-rtdb/delivery.d.ts.map +1 -0
- package/dist/functions-rtdb/delivery.js +2 -0
- package/dist/functions-rtdb/delivery.js.map +1 -0
- package/dist/functions-rtdb/discovery.d.ts +41 -0
- package/dist/functions-rtdb/discovery.d.ts.map +1 -0
- package/dist/functions-rtdb/discovery.js +86 -0
- package/dist/functions-rtdb/discovery.js.map +1 -0
- package/dist/functions-rtdb/event.d.ts +20 -0
- package/dist/functions-rtdb/event.d.ts.map +1 -0
- package/dist/functions-rtdb/event.js +45 -0
- package/dist/functions-rtdb/event.js.map +1 -0
- package/dist/functions-rtdb/execution.d.ts +20 -0
- package/dist/functions-rtdb/execution.d.ts.map +1 -0
- package/dist/functions-rtdb/execution.js +70 -0
- package/dist/functions-rtdb/execution.js.map +1 -0
- package/dist/functions-rtdb/in-memory-delivery.d.ts +9 -0
- package/dist/functions-rtdb/in-memory-delivery.d.ts.map +1 -0
- package/dist/functions-rtdb/in-memory-delivery.js +36 -0
- package/dist/functions-rtdb/in-memory-delivery.js.map +1 -0
- package/dist/functions-rtdb/project.d.ts +7 -0
- package/dist/functions-rtdb/project.d.ts.map +1 -0
- package/dist/functions-rtdb/project.js +54 -0
- package/dist/functions-rtdb/project.js.map +1 -0
- package/dist/functions-rtdb/projection.d.ts +14 -0
- package/dist/functions-rtdb/projection.d.ts.map +1 -0
- package/dist/functions-rtdb/projection.js +65 -0
- package/dist/functions-rtdb/projection.js.map +1 -0
- package/dist/functions-rtdb/reference-pattern.d.ts +5 -0
- package/dist/functions-rtdb/reference-pattern.d.ts.map +1 -0
- package/dist/functions-rtdb/reference-pattern.js +14 -0
- package/dist/functions-rtdb/reference-pattern.js.map +1 -0
- package/dist/functions-rtdb/remote-delivery.d.ts +9 -0
- package/dist/functions-rtdb/remote-delivery.d.ts.map +1 -0
- package/dist/functions-rtdb/remote-delivery.js +11 -0
- package/dist/functions-rtdb/remote-delivery.js.map +1 -0
- package/dist/pkg-version.d.ts +2 -0
- package/dist/pkg-version.d.ts.map +1 -0
- package/dist/pkg-version.js +47 -0
- package/dist/pkg-version.js.map +1 -0
- package/dist/register/esm-exports.d.ts +26 -0
- package/dist/register/esm-exports.d.ts.map +1 -0
- package/dist/register/esm-exports.js +61 -0
- package/dist/register/esm-exports.js.map +1 -0
- package/dist/register/hooks.d.ts +13 -0
- package/dist/register/hooks.d.ts.map +1 -0
- package/dist/register/hooks.js +15 -0
- package/dist/register/hooks.js.map +1 -0
- package/dist/register/index.d.ts +5 -0
- package/dist/register/index.d.ts.map +1 -0
- package/dist/register/index.js +124 -0
- package/dist/register/index.js.map +1 -0
- package/dist/register/mapping.d.ts +19 -0
- package/dist/register/mapping.d.ts.map +1 -0
- package/dist/register/mapping.js +35 -0
- package/dist/register/mapping.js.map +1 -0
- package/dist/remote/index.d.ts +232 -0
- package/dist/remote/index.d.ts.map +1 -0
- package/dist/remote/index.js +720 -0
- package/dist/remote/index.js.map +1 -0
- package/dist/rtdb/crawl-snapshot.d.ts +17 -0
- package/dist/rtdb/crawl-snapshot.d.ts.map +1 -0
- package/dist/rtdb/crawl-snapshot.js +72 -0
- package/dist/rtdb/crawl-snapshot.js.map +1 -0
- package/dist/rtdb/inspection.d.ts +8 -0
- package/dist/rtdb/inspection.d.ts.map +1 -0
- package/dist/rtdb/inspection.js +111 -0
- package/dist/rtdb/inspection.js.map +1 -0
- package/dist/rtdb/load-rules-document.d.ts +25 -0
- package/dist/rtdb/load-rules-document.d.ts.map +1 -0
- package/dist/rtdb/load-rules-document.js +38 -0
- package/dist/rtdb/load-rules-document.js.map +1 -0
- package/dist/rtdb/rules-generation-tool.d.ts +4 -0
- package/dist/rtdb/rules-generation-tool.d.ts.map +1 -0
- package/dist/rtdb/rules-generation-tool.js +35 -0
- package/dist/rtdb/rules-generation-tool.js.map +1 -0
- package/dist/rtdb/rules-json.d.ts +8 -0
- package/dist/rtdb/rules-json.d.ts.map +1 -0
- package/dist/rtdb/rules-json.js +17 -0
- package/dist/rtdb/rules-json.js.map +1 -0
- package/dist/serve/bridge-mount.d.ts +36 -0
- package/dist/serve/bridge-mount.d.ts.map +1 -0
- package/dist/serve/bridge-mount.js +162 -0
- package/dist/serve/bridge-mount.js.map +1 -0
- package/dist/serve/bundler.d.ts +110 -0
- package/dist/serve/bundler.d.ts.map +1 -0
- package/dist/serve/bundler.js +432 -0
- package/dist/serve/bundler.js.map +1 -0
- package/dist/serve/capture-store.d.ts +27 -0
- package/dist/serve/capture-store.d.ts.map +1 -0
- package/dist/serve/capture-store.js +47 -0
- package/dist/serve/capture-store.js.map +1 -0
- package/dist/serve/discovery.d.ts +71 -0
- package/dist/serve/discovery.d.ts.map +1 -0
- package/dist/serve/discovery.js +158 -0
- package/dist/serve/discovery.js.map +1 -0
- package/dist/serve/docs-ui/_astro/_slug_.CQYSemvw.css +1 -0
- package/dist/serve/docs-ui/docs/_rhythm/index.html +99 -0
- package/dist/serve/docs-ui/docs/_rhythm.md +101 -0
- package/dist/serve/docs-ui/docs/api-reference/index.html +64 -0
- package/dist/serve/docs-ui/docs/api-reference.md +67 -0
- package/dist/serve/docs-ui/docs/audit-your-rules/index.html +34 -0
- package/dist/serve/docs-ui/docs/audit-your-rules.md +50 -0
- package/dist/serve/docs-ui/docs/create-pyric-reference-api/index.html +498 -0
- package/dist/serve/docs-ui/docs/create-pyric-reference-api.md +345 -0
- package/dist/serve/docs-ui/docs/firestore-rules-limits/index.html +59 -0
- package/dist/serve/docs-ui/docs/firestore-rules-limits.md +54 -0
- package/dist/serve/docs-ui/docs/how-the-swap-works/index.html +47 -0
- package/dist/serve/docs-ui/docs/how-the-swap-works.md +43 -0
- package/dist/serve/docs-ui/docs/how-we-know-it-matches-firebase/index.html +131 -0
- package/dist/serve/docs-ui/docs/how-we-know-it-matches-firebase.md +169 -0
- package/dist/serve/docs-ui/docs/index.html +2 -0
- package/dist/serve/docs-ui/docs/index.json +18637 -0
- package/dist/serve/docs-ui/docs/overview/index.html +23 -0
- package/dist/serve/docs-ui/docs/overview.md +40 -0
- package/dist/serve/docs-ui/docs/pyric-admin-app/index.html +19 -0
- package/dist/serve/docs-ui/docs/pyric-admin-app-reference-api/index.html +185 -0
- package/dist/serve/docs-ui/docs/pyric-admin-app-reference-api.md +206 -0
- package/dist/serve/docs-ui/docs/pyric-admin-app.md +27 -0
- package/dist/serve/docs-ui/docs/pyric-admin-auth/index.html +24 -0
- package/dist/serve/docs-ui/docs/pyric-admin-auth-reference-api/index.html +617 -0
- package/dist/serve/docs-ui/docs/pyric-admin-auth-reference-api.md +441 -0
- package/dist/serve/docs-ui/docs/pyric-admin-auth.md +29 -0
- package/dist/serve/docs-ui/docs/pyric-admin-database/index.html +26 -0
- package/dist/serve/docs-ui/docs/pyric-admin-database-reference-api/index.html +583 -0
- package/dist/serve/docs-ui/docs/pyric-admin-database-reference-api.md +597 -0
- package/dist/serve/docs-ui/docs/pyric-admin-database.md +31 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore/index.html +38 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-error-translation/index.html +57 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-error-translation.md +95 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-per-call-delegate/index.html +58 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-per-call-delegate.md +94 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-why-mirror-admin-shape/index.html +59 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-why-mirror-admin-shape.md +88 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-run-a-transaction/index.html +53 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-run-a-transaction.md +76 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-seed-and-set-rules/index.html +62 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-seed-and-set-rules.md +96 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-translate-denials/index.html +80 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-translate-denials.md +98 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-use-onsnapshot/index.html +57 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-use-onsnapshot.md +88 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-write-a-batch/index.html +50 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-write-a-batch.md +73 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-api/index.html +32 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-api.md +30 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-onsnapshot/index.html +68 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-onsnapshot.md +81 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-re-exported-types/index.html +76 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-re-exported-types.md +103 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-sandbox-firestore/index.html +40 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-sandbox-firestore.md +77 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-tutorials-01-first-admin-session/index.html +118 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-tutorials-01-first-admin-session.md +166 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore.md +53 -0
- package/dist/serve/docs-ui/docs/pyric-admin-storage/index.html +25 -0
- package/dist/serve/docs-ui/docs/pyric-admin-storage-reference-api/index.html +317 -0
- package/dist/serve/docs-ui/docs/pyric-admin-storage-reference-api.md +285 -0
- package/dist/serve/docs-ui/docs/pyric-admin-storage.md +30 -0
- package/dist/serve/docs-ui/docs/pyric-ai-compat/index.html +436 -0
- package/dist/serve/docs-ui/docs/pyric-ai-compat.md +471 -0
- package/dist/serve/docs-ui/docs/pyric-ai-reference-api/index.html +5831 -0
- package/dist/serve/docs-ui/docs/pyric-ai-reference-api.md +5440 -0
- package/dist/serve/docs-ui/docs/pyric-ai-scripting-reference-api/index.html +159 -0
- package/dist/serve/docs-ui/docs/pyric-ai-scripting-reference-api.md +122 -0
- package/dist/serve/docs-ui/docs/pyric-app-compat/index.html +180 -0
- package/dist/serve/docs-ui/docs/pyric-app-compat.md +199 -0
- package/dist/serve/docs-ui/docs/pyric-app-reference-api/index.html +420 -0
- package/dist/serve/docs-ui/docs/pyric-app-reference-api.md +326 -0
- package/dist/serve/docs-ui/docs/pyric-auth/index.html +59 -0
- package/dist/serve/docs-ui/docs/pyric-auth-compat/index.html +804 -0
- package/dist/serve/docs-ui/docs/pyric-auth-compat.md +847 -0
- package/dist/serve/docs-ui/docs/pyric-auth-reference-api/index.html +5452 -0
- package/dist/serve/docs-ui/docs/pyric-auth-reference-api.md +5271 -0
- package/dist/serve/docs-ui/docs/pyric-auth-reference-feature-matrix/index.html +781 -0
- package/dist/serve/docs-ui/docs/pyric-auth-reference-feature-matrix.md +198 -0
- package/dist/serve/docs-ui/docs/pyric-auth-reference-sandbox-test-driver/index.html +71 -0
- package/dist/serve/docs-ui/docs/pyric-auth-reference-sandbox-test-driver.md +108 -0
- package/dist/serve/docs-ui/docs/pyric-auth.md +86 -0
- package/dist/serve/docs-ui/docs/pyric-cli/index.html +40 -0
- package/dist/serve/docs-ui/docs/pyric-cli-assurance-browser-reference-api/index.html +98 -0
- package/dist/serve/docs-ui/docs/pyric-cli-assurance-browser-reference-api.md +88 -0
- package/dist/serve/docs-ui/docs/pyric-cli-assurance-reference-api/index.html +2355 -0
- package/dist/serve/docs-ui/docs/pyric-cli-assurance-reference-api.md +1554 -0
- package/dist/serve/docs-ui/docs/pyric-cli-bridge/index.html +69 -0
- package/dist/serve/docs-ui/docs/pyric-cli-bridge-client-reference-api/index.html +546 -0
- package/dist/serve/docs-ui/docs/pyric-cli-bridge-client-reference-api.md +485 -0
- package/dist/serve/docs-ui/docs/pyric-cli-bridge-reference-api/index.html +506 -0
- package/dist/serve/docs-ui/docs/pyric-cli-bridge-reference-api.md +419 -0
- package/dist/serve/docs-ui/docs/pyric-cli-bridge.md +99 -0
- package/dist/serve/docs-ui/docs/pyric-cli-credentials-node-reference-api/index.html +67 -0
- package/dist/serve/docs-ui/docs/pyric-cli-credentials-node-reference-api.md +59 -0
- package/dist/serve/docs-ui/docs/pyric-cli-discover-reference-api/index.html +2355 -0
- package/dist/serve/docs-ui/docs/pyric-cli-discover-reference-api.md +2036 -0
- package/dist/serve/docs-ui/docs/pyric-cli-functions-rtdb-compat/index.html +112 -0
- package/dist/serve/docs-ui/docs/pyric-cli-functions-rtdb-compat.md +124 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-build-a-standalone-binary/index.html +91 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-build-a-standalone-binary.md +105 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-promote-sandbox-state-to-a-fixture/index.html +52 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-promote-sandbox-state-to-a-fixture.md +98 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-run-rtdb-onvaluecreated/index.html +66 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-run-rtdb-onvaluecreated.md +100 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-serve-persistence-and-multi-tab/index.html +228 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-serve-persistence-and-multi-tab.md +179 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-use-the-vite-plugin/index.html +341 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-use-the-vite-plugin.md +309 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-verify-against-a-captured-session/index.html +128 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-verify-against-a-captured-session.md +207 -0
- package/dist/serve/docs-ui/docs/pyric-cli-reference-cli/index.html +404 -0
- package/dist/serve/docs-ui/docs/pyric-cli-reference-cli.md +249 -0
- package/dist/serve/docs-ui/docs/pyric-cli-reference-package-and-resolution/index.html +93 -0
- package/dist/serve/docs-ui/docs/pyric-cli-reference-package-and-resolution.md +65 -0
- package/dist/serve/docs-ui/docs/pyric-cli-reference-verify/index.html +81 -0
- package/dist/serve/docs-ui/docs/pyric-cli-reference-verify.md +110 -0
- package/dist/serve/docs-ui/docs/pyric-cli-register-reference-api/index.html +10 -0
- package/dist/serve/docs-ui/docs/pyric-cli-register-reference-api.md +16 -0
- package/dist/serve/docs-ui/docs/pyric-cli-remote-reference-api/index.html +1044 -0
- package/dist/serve/docs-ui/docs/pyric-cli-remote-reference-api.md +952 -0
- package/dist/serve/docs-ui/docs/pyric-cli-serve-worker-reference-api/index.html +5041 -0
- package/dist/serve/docs-ui/docs/pyric-cli-serve-worker-reference-api.md +4739 -0
- package/dist/serve/docs-ui/docs/pyric-cli-tutorials-server-adoption/index.html +219 -0
- package/dist/serve/docs-ui/docs/pyric-cli-tutorials-server-adoption.md +251 -0
- package/dist/serve/docs-ui/docs/pyric-cli-tutorials-wire-claude-code/index.html +136 -0
- package/dist/serve/docs-ui/docs/pyric-cli-tutorials-wire-claude-code.md +217 -0
- package/dist/serve/docs-ui/docs/pyric-cli-verify-reference-api/index.html +926 -0
- package/dist/serve/docs-ui/docs/pyric-cli-verify-reference-api.md +586 -0
- package/dist/serve/docs-ui/docs/pyric-cli-vite-reference-api/index.html +102 -0
- package/dist/serve/docs-ui/docs/pyric-cli-vite-reference-api.md +76 -0
- package/dist/serve/docs-ui/docs/pyric-cli.md +42 -0
- package/dist/serve/docs-ui/docs/pyric-conformance-scores/index.html +180 -0
- package/dist/serve/docs-ui/docs/pyric-conformance-scores.md +184 -0
- package/dist/serve/docs-ui/docs/pyric-database/index.html +43 -0
- package/dist/serve/docs-ui/docs/pyric-database-compat/index.html +1224 -0
- package/dist/serve/docs-ui/docs/pyric-database-compat.md +1289 -0
- package/dist/serve/docs-ui/docs/pyric-database-explanation-rules-authoring-and-deploy-are-separate/index.html +16 -0
- package/dist/serve/docs-ui/docs/pyric-database-explanation-rules-authoring-and-deploy-are-separate.md +23 -0
- package/dist/serve/docs-ui/docs/pyric-database-reference-api/index.html +1851 -0
- package/dist/serve/docs-ui/docs/pyric-database-reference-api.md +1842 -0
- package/dist/serve/docs-ui/docs/pyric-database-reference-constraints/index.html +381 -0
- package/dist/serve/docs-ui/docs/pyric-database-reference-constraints.md +168 -0
- package/dist/serve/docs-ui/docs/pyric-database-reference-rules-tooling/index.html +218 -0
- package/dist/serve/docs-ui/docs/pyric-database-reference-rules-tooling.md +303 -0
- package/dist/serve/docs-ui/docs/pyric-database-tutorials-01-author-rtdb-rules-with-constraints/index.html +125 -0
- package/dist/serve/docs-ui/docs/pyric-database-tutorials-01-author-rtdb-rules-with-constraints.md +171 -0
- package/dist/serve/docs-ui/docs/pyric-database.md +26 -0
- package/dist/serve/docs-ui/docs/pyric-explanation-versioning-and-compatibility/index.html +40 -0
- package/dist/serve/docs-ui/docs/pyric-explanation-versioning-and-compatibility.md +68 -0
- package/dist/serve/docs-ui/docs/pyric-firestore/index.html +48 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-compat/index.html +868 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-compat.md +939 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-rules-tooling-is-separate/index.html +92 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-rules-tooling-is-separate.md +70 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-target-symbol-opacity/index.html +59 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-target-symbol-opacity.md +91 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-two-backends-one-surface/index.html +43 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-two-backends-one-surface.md +58 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-migrate-from-firebase-firestore/index.html +58 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-migrate-from-firebase-firestore.md +86 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-pick-a-backend/index.html +52 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-pick-a-backend.md +83 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-run-a-transaction/index.html +42 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-run-a-transaction.md +59 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-onsnapshot/index.html +66 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-onsnapshot.md +96 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-sandbox-ops/index.html +61 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-sandbox-ops.md +92 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-api/index.html +3623 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-api.md +3399 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-feature-matrix/index.html +80 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-feature-matrix.md +66 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-getfirestore/index.html +46 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-getfirestore.md +73 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-query-constraints/index.html +80 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-query-constraints.md +129 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-sandbox-ops/index.html +58 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-sandbox-ops.md +88 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-tool-factories/index.html +51 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-tool-factories.md +71 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-01-write-a-sandbox-demo/index.html +130 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-01-write-a-sandbox-demo.md +180 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-02-swap-to-prod-backend/index.html +59 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-02-swap-to-prod-backend.md +92 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-values-reference-api/index.html +30 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-values-reference-api.md +30 -0
- package/dist/serve/docs-ui/docs/pyric-firestore.md +72 -0
- package/dist/serve/docs-ui/docs/pyric-messaging-compat/index.html +300 -0
- package/dist/serve/docs-ui/docs/pyric-messaging-compat.md +321 -0
- package/dist/serve/docs-ui/docs/pyric-messaging-reference-api/index.html +508 -0
- package/dist/serve/docs-ui/docs/pyric-messaging-reference-api.md +374 -0
- package/dist/serve/docs-ui/docs/pyric-messaging-sw-reference-api/index.html +482 -0
- package/dist/serve/docs-ui/docs/pyric-messaging-sw-reference-api.md +348 -0
- package/dist/serve/docs-ui/docs/pyric-rules/index.html +87 -0
- package/dist/serve/docs-ui/docs/pyric-rules-compat/index.html +328 -0
- package/dist/serve/docs-ui/docs/pyric-rules-compat.md +347 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-agent-failure-modes/index.html +50 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-agent-failure-modes.md +78 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-lint-vs-validate-vs-simulate-vs-test/index.html +79 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-lint-vs-validate-vs-simulate-vs-test.md +69 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-runtime-budget-and-shared-gates/index.html +67 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-runtime-budget-and-shared-gates.md +75 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-sentinel-expression-engine/index.html +49 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-sentinel-expression-engine.md +74 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-simulator-vs-rules-test-api/index.html +95 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-simulator-vs-rules-test-api.md +80 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-the-2-plus-modules-extension/index.html +58 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-the-2-plus-modules-extension.md +79 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-value-wrappers-design/index.html +63 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-value-wrappers-design.md +84 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-why-this-package-exists/index.html +34 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-why-this-package-exists.md +43 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-compare-rulesets-for-weakening/index.html +55 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-compare-rulesets-for-weakening.md +77 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-inspect-rules-via-the-ast/index.html +90 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-inspect-rules-via-the-ast.md +129 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-lint-rules-source/index.html +55 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-lint-rules-source.md +84 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-pin-request-time/index.html +49 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-pin-request-time.md +64 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-register-tools-with-an-agent/index.html +61 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-register-tools-with-an-agent.md +87 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-resolve-module-imports/index.html +93 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-resolve-module-imports.md +105 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-simulate-rules-locally/index.html +89 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-simulate-rules-locally.md +134 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-test-rules-against-firebase/index.html +66 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-test-rules-against-firebase.md +102 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-api/index.html +2629 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-api.md +2213 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-ast/index.html +85 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-ast.md +121 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-conformance-gaps/index.html +277 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-conformance-gaps.md +360 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-errors/index.html +76 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-errors.md +123 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-lint-rules/index.html +148 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-lint-rules.md +159 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-simulator-context/index.html +66 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-simulator-context.md +104 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-stdlib-modules/index.html +241 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-stdlib-modules.md +143 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-test-case-schema/index.html +94 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-test-case-schema.md +121 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-validator-findings/index.html +87 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-validator-findings.md +117 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-value-wrappers/index.html +102 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-value-wrappers.md +152 -0
- package/dist/serve/docs-ui/docs/pyric-rules.md +93 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox/index.html +67 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-database-reference-api/index.html +120 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-database-reference-api.md +110 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-every-op-is-a-request/index.html +141 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-every-op-is-a-request.md +161 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-identity-is-a-context/index.html +66 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-identity-is-a-context.md +110 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-internal-adapter-protocol/index.html +71 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-internal-adapter-protocol.md +111 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-listener-re-evaluation/index.html +56 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-listener-re-evaluation.md +82 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-local-backend-vs-firestore-offline/index.html +64 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-local-backend-vs-firestore-offline.md +56 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-adapters-are-siblings/index.html +92 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-adapters-are-siblings.md +90 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-this-package-exists/index.html +69 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-this-package-exists.md +57 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-firestore-reference-api/index.html +202 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-firestore-reference-api.md +134 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-multiple-isolated-sandboxes/index.html +63 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-multiple-isolated-sandboxes.md +89 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-observe-events/index.html +159 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-observe-events.md +168 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-pick-an-adapter/index.html +79 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-pick-an-adapter.md +75 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-replay-events/index.html +88 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-replay-events.md +92 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-reset-between-tests/index.html +68 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-reset-between-tests.md +92 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-seed-data-and-rules/index.html +91 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-seed-data-and-rules.md +122 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-switch-users/index.html +50 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-switch-users.md +78 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-use-admin-reads/index.html +54 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-use-admin-reads.md +85 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-api/index.html +5019 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-api.md +4060 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-divergences/index.html +125 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-divergences.md +151 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-error-codes/index.html +110 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-error-codes.md +118 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-internal-protocol/index.html +72 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-internal-protocol.md +109 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-and-context/index.html +90 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-and-context.md +140 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-event/index.html +146 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-event.md +204 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-snapshot-and-admin/index.html +53 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-snapshot-and-admin.md +89 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-tutorials-01-your-first-sandbox-session/index.html +115 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-tutorials-01-your-first-sandbox-session.md +176 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox.md +69 -0
- package/dist/serve/docs-ui/docs/pyric-storage/index.html +65 -0
- package/dist/serve/docs-ui/docs/pyric-storage-compat/index.html +676 -0
- package/dist/serve/docs-ui/docs/pyric-storage-compat.md +699 -0
- package/dist/serve/docs-ui/docs/pyric-storage-explanation-implementation-scope/index.html +52 -0
- package/dist/serve/docs-ui/docs/pyric-storage-explanation-implementation-scope.md +85 -0
- package/dist/serve/docs-ui/docs/pyric-storage-explanation-session-archive-use-case/index.html +58 -0
- package/dist/serve/docs-ui/docs/pyric-storage-explanation-session-archive-use-case.md +82 -0
- package/dist/serve/docs-ui/docs/pyric-storage-explanation-why-indexeddb/index.html +50 -0
- package/dist/serve/docs-ui/docs/pyric-storage-explanation-why-indexeddb.md +82 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-enforce-rules/index.html +120 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-enforce-rules.md +127 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-list-and-delete/index.html +53 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-list-and-delete.md +86 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-switch-backends/index.html +43 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-switch-backends.md +65 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-test-rule-expressions/index.html +70 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-test-rule-expressions.md +88 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-api/index.html +2120 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-api.md +1687 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-conformance-gaps/index.html +137 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-conformance-gaps.md +171 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-error-codes/index.html +37 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-error-codes.md +57 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-rules-subset/index.html +96 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-rules-subset.md +134 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-storage-options/index.html +39 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-storage-options.md +61 -0
- package/dist/serve/docs-ui/docs/pyric-storage.md +67 -0
- package/dist/serve/docs-ui/docs/pyric-ui-agents-reference-api/index.html +638 -0
- package/dist/serve/docs-ui/docs/pyric-ui-agents-reference-api.md +430 -0
- package/dist/serve/docs-ui/docs/pyric-ui-auth-hooks-reference-api/index.html +813 -0
- package/dist/serve/docs-ui/docs/pyric-ui-auth-hooks-reference-api.md +634 -0
- package/dist/serve/docs-ui/docs/pyric-ui-auth-reference-api/index.html +1708 -0
- package/dist/serve/docs-ui/docs/pyric-ui-auth-reference-api.md +1300 -0
- package/dist/serve/docs-ui/docs/pyric-ui-events-hooks-reference-api/index.html +177 -0
- package/dist/serve/docs-ui/docs/pyric-ui-events-hooks-reference-api.md +111 -0
- package/dist/serve/docs-ui/docs/pyric-ui-events-reference-api/index.html +1542 -0
- package/dist/serve/docs-ui/docs/pyric-ui-events-reference-api.md +903 -0
- package/dist/serve/docs-ui/docs/pyric-ui-firestore-hooks-reference-api/index.html +1024 -0
- package/dist/serve/docs-ui/docs/pyric-ui-firestore-hooks-reference-api.md +640 -0
- package/dist/serve/docs-ui/docs/pyric-ui-firestore-reference-api/index.html +2753 -0
- package/dist/serve/docs-ui/docs/pyric-ui-firestore-reference-api.md +2171 -0
- package/dist/serve/docs-ui/docs/pyric-ui-primitives-reference-api/index.html +1005 -0
- package/dist/serve/docs-ui/docs/pyric-ui-primitives-reference-api.md +693 -0
- package/dist/serve/docs-ui/docs/pyric-ui-rtdb-reference-api/index.html +1388 -0
- package/dist/serve/docs-ui/docs/pyric-ui-rtdb-reference-api.md +1340 -0
- package/dist/serve/docs-ui/docs/pyric-ui-rules-hooks-reference-api/index.html +131 -0
- package/dist/serve/docs-ui/docs/pyric-ui-rules-hooks-reference-api.md +76 -0
- package/dist/serve/docs-ui/docs/pyric-ui-rules-reference-api/index.html +648 -0
- package/dist/serve/docs-ui/docs/pyric-ui-rules-reference-api.md +508 -0
- package/dist/serve/docs-ui/docs/pyric-ui-storage-hooks-reference-api/index.html +1457 -0
- package/dist/serve/docs-ui/docs/pyric-ui-storage-hooks-reference-api.md +1029 -0
- package/dist/serve/docs-ui/docs/pyric-ui-storage-reference-api/index.html +2476 -0
- package/dist/serve/docs-ui/docs/pyric-ui-storage-reference-api.md +1919 -0
- package/dist/serve/docs-ui/docs/pyric-ui-traffic-hooks-reference-api/index.html +1241 -0
- package/dist/serve/docs-ui/docs/pyric-ui-traffic-hooks-reference-api.md +817 -0
- package/dist/serve/docs-ui/docs/pyric-ui-traffic-reference-api/index.html +2289 -0
- package/dist/serve/docs-ui/docs/pyric-ui-traffic-reference-api.md +1489 -0
- package/dist/serve/docs-ui/docs/read-a-denial/index.html +40 -0
- package/dist/serve/docs-ui/docs/read-a-denial.md +62 -0
- package/dist/serve/docs-ui/docs/receive-messages/index.html +28 -0
- package/dist/serve/docs-ui/docs/receive-messages.md +43 -0
- package/dist/serve/docs-ui/docs/rtdb-rules-in-typescript/index.html +67 -0
- package/dist/serve/docs-ui/docs/rtdb-rules-in-typescript.md +101 -0
- package/dist/serve/docs-ui/docs/rules-patterns/index.html +68 -0
- package/dist/serve/docs-ui/docs/rules-patterns.md +104 -0
- package/dist/serve/docs-ui/docs/rules-standard-library/index.html +87 -0
- package/dist/serve/docs-ui/docs/rules-standard-library.md +93 -0
- package/dist/serve/docs-ui/docs/run-ai-logic-locally/index.html +27 -0
- package/dist/serve/docs-ui/docs/run-ai-logic-locally.md +43 -0
- package/dist/serve/docs-ui/docs/secure-it-with-rules/index.html +69 -0
- package/dist/serve/docs-ui/docs/secure-it-with-rules.md +101 -0
- package/dist/serve/docs-ui/docs/see-whats-happening/index.html +73 -0
- package/dist/serve/docs-ui/docs/see-whats-happening.md +77 -0
- package/dist/serve/docs-ui/docs/set-up-the-project/index.html +14 -0
- package/dist/serve/docs-ui/docs/set-up-the-project.md +19 -0
- package/dist/serve/docs-ui/docs/set-up-your-agent/index.html +42 -0
- package/dist/serve/docs-ui/docs/set-up-your-agent.md +86 -0
- package/dist/serve/docs-ui/docs/shape-your-data/index.html +44 -0
- package/dist/serve/docs-ui/docs/shape-your-data.md +88 -0
- package/dist/serve/docs-ui/docs/ship-to-production/index.html +36 -0
- package/dist/serve/docs-ui/docs/ship-to-production.md +80 -0
- package/dist/serve/docs-ui/docs/sign-in-and-manage-users/index.html +31 -0
- package/dist/serve/docs-ui/docs/sign-in-and-manage-users.md +50 -0
- package/dist/serve/docs-ui/docs/simulate-and-lint/index.html +95 -0
- package/dist/serve/docs-ui/docs/simulate-and-lint.md +99 -0
- package/dist/serve/docs-ui/docs/skills/index.html +20 -0
- package/dist/serve/docs-ui/docs/skills.md +34 -0
- package/dist/serve/docs-ui/docs/start-building/index.html +32 -0
- package/dist/serve/docs-ui/docs/start-building.md +64 -0
- package/dist/serve/docs-ui/docs/store-and-query-data/index.html +16 -0
- package/dist/serve/docs-ui/docs/store-and-query-data.md +33 -0
- package/dist/serve/docs-ui/docs/store-files/index.html +13 -0
- package/dist/serve/docs-ui/docs/store-files.md +25 -0
- package/dist/serve/docs-ui/docs/sync-realtime-data/index.html +15 -0
- package/dist/serve/docs-ui/docs/sync-realtime-data.md +27 -0
- package/dist/serve/docs-ui/docs/test-in-node/index.html +74 -0
- package/dist/serve/docs-ui/docs/test-in-node.md +100 -0
- package/dist/serve/docs-ui/docs/ui/index.html +76 -0
- package/dist/serve/docs-ui/docs/ui-auth-authsigninhelper/index.html +194 -0
- package/dist/serve/docs-ui/docs/ui-auth-authsigninhelper.md +114 -0
- package/dist/serve/docs-ui/docs/ui-auth-authusers/index.html +263 -0
- package/dist/serve/docs-ui/docs/ui-auth-authusers.md +183 -0
- package/dist/serve/docs-ui/docs/ui-firestore-collectionlist/index.html +92 -0
- package/dist/serve/docs-ui/docs/ui-firestore-collectionlist.md +79 -0
- package/dist/serve/docs-ui/docs/ui-firestore-deletewithconfirm/index.html +128 -0
- package/dist/serve/docs-ui/docs/ui-firestore-deletewithconfirm.md +104 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documenteditor/index.html +154 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documenteditor.md +117 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documentlist/index.html +132 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documentlist.md +92 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documentpreview/index.html +159 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documentpreview.md +84 -0
- package/dist/serve/docs-ui/docs/ui-firestore-querybuilder/index.html +104 -0
- package/dist/serve/docs-ui/docs/ui-firestore-querybuilder.md +103 -0
- package/dist/serve/docs-ui/docs/ui-firestore-referencepicker/index.html +113 -0
- package/dist/serve/docs-ui/docs/ui-firestore-referencepicker.md +93 -0
- package/dist/serve/docs-ui/docs/ui-primitives-badge/index.html +56 -0
- package/dist/serve/docs-ui/docs/ui-primitives-badge.md +40 -0
- package/dist/serve/docs-ui/docs/ui-primitives-confirmdialog/index.html +140 -0
- package/dist/serve/docs-ui/docs/ui-primitives-confirmdialog.md +108 -0
- package/dist/serve/docs-ui/docs/ui-primitives-copybutton/index.html +58 -0
- package/dist/serve/docs-ui/docs/ui-primitives-copybutton.md +37 -0
- package/dist/serve/docs-ui/docs/ui-primitives-jsonview/index.html +58 -0
- package/dist/serve/docs-ui/docs/ui-primitives-jsonview.md +47 -0
- package/dist/serve/docs-ui/docs/ui-primitives-segmentedcontrol/index.html +70 -0
- package/dist/serve/docs-ui/docs/ui-primitives-segmentedcontrol.md +50 -0
- package/dist/serve/docs-ui/docs/ui-primitives-toast/index.html +87 -0
- package/dist/serve/docs-ui/docs/ui-primitives-toast.md +82 -0
- package/dist/serve/docs-ui/docs/ui-primitives-virtuallist/index.html +85 -0
- package/dist/serve/docs-ui/docs/ui-primitives-virtuallist.md +54 -0
- package/dist/serve/docs-ui/docs/ui-storage/index.html +150 -0
- package/dist/serve/docs-ui/docs/ui-storage-deleteselectionwithconfirm/index.html +126 -0
- package/dist/serve/docs-ui/docs/ui-storage-deleteselectionwithconfirm.md +88 -0
- package/dist/serve/docs-ui/docs/ui-storage-objectbrowser/index.html +137 -0
- package/dist/serve/docs-ui/docs/ui-storage-objectbrowser.md +90 -0
- package/dist/serve/docs-ui/docs/ui-storage-objectinspector/index.html +139 -0
- package/dist/serve/docs-ui/docs/ui-storage-objectinspector.md +93 -0
- package/dist/serve/docs-ui/docs/ui-storage-pathbreadcrumb/index.html +72 -0
- package/dist/serve/docs-ui/docs/ui-storage-pathbreadcrumb.md +57 -0
- package/dist/serve/docs-ui/docs/ui-storage-rules-aware-affordances/index.html +60 -0
- package/dist/serve/docs-ui/docs/ui-storage-rules-aware-affordances.md +52 -0
- package/dist/serve/docs-ui/docs/ui-storage-uploaddropzone/index.html +93 -0
- package/dist/serve/docs-ui/docs/ui-storage-uploaddropzone.md +78 -0
- package/dist/serve/docs-ui/docs/ui-storage-usestoragerulesgate/index.html +144 -0
- package/dist/serve/docs-ui/docs/ui-storage-usestoragerulesgate.md +101 -0
- package/dist/serve/docs-ui/docs/ui-storage.md +165 -0
- package/dist/serve/docs-ui/docs/ui-traffic/index.html +88 -0
- package/dist/serve/docs-ui/docs/ui-traffic-ruleheatmap/index.html +79 -0
- package/dist/serve/docs-ui/docs/ui-traffic-ruleheatmap.md +60 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficdetail/index.html +78 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficdetail.md +59 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficlog/index.html +118 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficlog.md +69 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficstats/index.html +51 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficstats.md +46 -0
- package/dist/serve/docs-ui/docs/ui-traffic.md +102 -0
- package/dist/serve/docs-ui/docs/ui.md +90 -0
- package/dist/serve/docs-ui/docs/watch-and-review/index.html +25 -0
- package/dist/serve/docs-ui/docs/watch-and-review.md +40 -0
- package/dist/serve/docs-ui/docs/what-your-agent-can-do/index.html +81 -0
- package/dist/serve/docs-ui/docs/what-your-agent-can-do.md +78 -0
- package/dist/serve/docs-ui/docs/whats-experimental/index.html +22 -0
- package/dist/serve/docs-ui/docs/whats-experimental.md +33 -0
- package/dist/serve/docs-ui/docs/whats-possible/index.html +63 -0
- package/dist/serve/docs-ui/docs/whats-possible.md +53 -0
- package/dist/serve/docs-ui/docs/which-data-service/index.html +8 -0
- package/dist/serve/docs-ui/docs/which-data-service.md +11 -0
- package/dist/serve/docs-ui/docs/write-a-rules-test-suite/index.html +85 -0
- package/dist/serve/docs-ui/docs/write-a-rules-test-suite.md +119 -0
- package/dist/serve/docs-ui/index.html +1 -0
- package/dist/serve/docs-ui/llms.txt +308 -0
- package/dist/serve/entries/ai.d.ts +4 -0
- package/dist/serve/entries/ai.d.ts.map +1 -0
- package/dist/serve/entries/ai.js +184 -0
- package/dist/serve/entries/ai.js.map +1 -0
- package/dist/serve/entries/app-backend.d.ts +2 -0
- package/dist/serve/entries/app-backend.d.ts.map +1 -0
- package/dist/serve/entries/app-backend.js +4 -0
- package/dist/serve/entries/app-backend.js.map +1 -0
- package/dist/serve/entries/app-client.d.ts +5 -0
- package/dist/serve/entries/app-client.d.ts.map +1 -0
- package/dist/serve/entries/app-client.js +23 -0
- package/dist/serve/entries/app-client.js.map +1 -0
- package/dist/serve/entries/app-session-store.d.ts +14 -0
- package/dist/serve/entries/app-session-store.d.ts.map +1 -0
- package/dist/serve/entries/app-session-store.js +37 -0
- package/dist/serve/entries/app-session-store.js.map +1 -0
- package/dist/serve/entries/app.d.ts +2 -0
- package/dist/serve/entries/app.d.ts.map +1 -0
- package/dist/serve/entries/app.js +10 -0
- package/dist/serve/entries/app.js.map +1 -0
- package/dist/serve/entries/auth-helper-core.d.ts +52 -0
- package/dist/serve/entries/auth-helper-core.d.ts.map +1 -0
- package/dist/serve/entries/auth-helper-core.js +118 -0
- package/dist/serve/entries/auth-helper-core.js.map +1 -0
- package/dist/serve/entries/auth-helper-dom.d.ts +14 -0
- package/dist/serve/entries/auth-helper-dom.d.ts.map +1 -0
- package/dist/serve/entries/auth-helper-dom.js +116 -0
- package/dist/serve/entries/auth-helper-dom.js.map +1 -0
- package/dist/serve/entries/auth-helper-runtime.d.ts +5 -0
- package/dist/serve/entries/auth-helper-runtime.d.ts.map +1 -0
- package/dist/serve/entries/auth-helper-runtime.js +11 -0
- package/dist/serve/entries/auth-helper-runtime.js.map +1 -0
- package/dist/serve/entries/auth.d.ts +77 -0
- package/dist/serve/entries/auth.d.ts.map +1 -0
- package/dist/serve/entries/auth.js +201 -0
- package/dist/serve/entries/auth.js.map +1 -0
- package/dist/serve/entries/bridge-url.d.ts +25 -0
- package/dist/serve/entries/bridge-url.d.ts.map +1 -0
- package/dist/serve/entries/bridge-url.js +30 -0
- package/dist/serve/entries/bridge-url.js.map +1 -0
- package/dist/serve/entries/database.d.ts +46 -0
- package/dist/serve/entries/database.d.ts.map +1 -0
- package/dist/serve/entries/database.js +80 -0
- package/dist/serve/entries/database.js.map +1 -0
- package/dist/serve/entries/firestore.d.ts +104 -0
- package/dist/serve/entries/firestore.d.ts.map +1 -0
- package/dist/serve/entries/firestore.js +202 -0
- package/dist/serve/entries/firestore.js.map +1 -0
- package/dist/serve/entries/init.d.ts +2 -0
- package/dist/serve/entries/init.d.ts.map +1 -0
- package/dist/serve/entries/init.js +40 -0
- package/dist/serve/entries/init.js.map +1 -0
- package/dist/serve/entries/keepalive.d.ts +20 -0
- package/dist/serve/entries/keepalive.d.ts.map +1 -0
- package/dist/serve/entries/keepalive.js +38 -0
- package/dist/serve/entries/keepalive.js.map +1 -0
- package/dist/serve/entries/messaging-sw.d.ts +10 -0
- package/dist/serve/entries/messaging-sw.d.ts.map +1 -0
- package/dist/serve/entries/messaging-sw.js +36 -0
- package/dist/serve/entries/messaging-sw.js.map +1 -0
- package/dist/serve/entries/messaging.d.ts +11 -0
- package/dist/serve/entries/messaging.d.ts.map +1 -0
- package/dist/serve/entries/messaging.js +53 -0
- package/dist/serve/entries/messaging.js.map +1 -0
- package/dist/serve/entries/runtime.d.ts +46 -0
- package/dist/serve/entries/runtime.d.ts.map +1 -0
- package/dist/serve/entries/runtime.js +435 -0
- package/dist/serve/entries/runtime.js.map +1 -0
- package/dist/serve/entries/session-store.d.ts +48 -0
- package/dist/serve/entries/session-store.d.ts.map +1 -0
- package/dist/serve/entries/session-store.js +82 -0
- package/dist/serve/entries/session-store.js.map +1 -0
- package/dist/serve/entries/storage.d.ts +25 -0
- package/dist/serve/entries/storage.d.ts.map +1 -0
- package/dist/serve/entries/storage.js +61 -0
- package/dist/serve/entries/storage.js.map +1 -0
- package/dist/serve/entries/tab-sync-wiring.d.ts +88 -0
- package/dist/serve/entries/tab-sync-wiring.d.ts.map +1 -0
- package/dist/serve/entries/tab-sync-wiring.js +217 -0
- package/dist/serve/entries/tab-sync-wiring.js.map +1 -0
- package/dist/serve/entries/worker-runtime.d.ts +10 -0
- package/dist/serve/entries/worker-runtime.d.ts.map +1 -0
- package/dist/serve/entries/worker-runtime.js +59 -0
- package/dist/serve/entries/worker-runtime.js.map +1 -0
- package/dist/serve/init-payload.d.ts +21 -0
- package/dist/serve/init-payload.d.ts.map +1 -0
- package/dist/serve/init-payload.js +2 -0
- package/dist/serve/init-payload.js.map +1 -0
- package/dist/serve/namespace.d.ts +73 -0
- package/dist/serve/namespace.d.ts.map +1 -0
- package/dist/serve/namespace.js +470 -0
- package/dist/serve/namespace.js.map +1 -0
- package/dist/serve/open-browser.d.ts +23 -0
- package/dist/serve/open-browser.d.ts.map +1 -0
- package/dist/serve/open-browser.js +58 -0
- package/dist/serve/open-browser.js.map +1 -0
- package/dist/serve/rules.d.ts +77 -0
- package/dist/serve/rules.d.ts.map +1 -0
- package/dist/serve/rules.js +202 -0
- package/dist/serve/rules.js.map +1 -0
- package/dist/serve/sandbox-marker.d.ts +9 -0
- package/dist/serve/sandbox-marker.d.ts.map +1 -0
- package/dist/serve/sandbox-marker.js +31 -0
- package/dist/serve/sandbox-marker.js.map +1 -0
- package/dist/serve/server.d.ts +135 -0
- package/dist/serve/server.d.ts.map +1 -0
- package/dist/serve/server.js +328 -0
- package/dist/serve/server.js.map +1 -0
- package/dist/serve/standalone-assets.d.ts +67 -0
- package/dist/serve/standalone-assets.d.ts.map +1 -0
- package/dist/serve/standalone-assets.js +134 -0
- package/dist/serve/standalone-assets.js.map +1 -0
- package/dist/serve/state-store.d.ts +45 -0
- package/dist/serve/state-store.d.ts.map +1 -0
- package/dist/serve/state-store.js +120 -0
- package/dist/serve/state-store.js.map +1 -0
- package/dist/serve/studio/disk-project-store.d.ts +9 -0
- package/dist/serve/studio/disk-project-store.d.ts.map +1 -0
- package/dist/serve/studio/disk-project-store.js +173 -0
- package/dist/serve/studio/disk-project-store.js.map +1 -0
- package/dist/serve/studio/disk-workspace.d.ts +14 -0
- package/dist/serve/studio/disk-workspace.d.ts.map +1 -0
- package/dist/serve/studio/disk-workspace.js +152 -0
- package/dist/serve/studio/disk-workspace.js.map +1 -0
- package/dist/serve/studio/index.d.ts +10 -0
- package/dist/serve/studio/index.d.ts.map +1 -0
- package/dist/serve/studio/index.js +9 -0
- package/dist/serve/studio/index.js.map +1 -0
- package/dist/serve/studio/routes.d.ts +40 -0
- package/dist/serve/studio/routes.d.ts.map +1 -0
- package/dist/serve/studio/routes.js +182 -0
- package/dist/serve/studio/routes.js.map +1 -0
- package/dist/serve/studio/store-types.d.ts +45 -0
- package/dist/serve/studio/store-types.d.ts.map +1 -0
- package/dist/serve/studio/store-types.js +11 -0
- package/dist/serve/studio/store-types.js.map +1 -0
- package/dist/serve/studio-ui/assets/RulesCodeEditor-BZpD57II.js +23 -0
- package/dist/serve/studio-ui/assets/index-Bsa-TQNK.css +1 -0
- package/dist/serve/studio-ui/assets/index-DGaVuOhE.js +1211 -0
- package/dist/serve/studio-ui/assets/seed-CTmn6YuO.js +2 -0
- package/dist/serve/studio-ui/index.html +32 -0
- package/dist/serve/studio-ui/pyric-logo.svg +76 -0
- package/dist/serve/vite-plugin.d.ts +57 -0
- package/dist/serve/vite-plugin.d.ts.map +1 -0
- package/dist/serve/vite-plugin.js +658 -0
- package/dist/serve/vite-plugin.js.map +1 -0
- package/dist/serve/worker/client/admin-firestore.d.ts +18 -0
- package/dist/serve/worker/client/admin-firestore.d.ts.map +1 -0
- package/dist/serve/worker/client/admin-firestore.js +26 -0
- package/dist/serve/worker/client/admin-firestore.js.map +1 -0
- package/dist/serve/worker/client/ai.d.ts +31 -0
- package/dist/serve/worker/client/ai.d.ts.map +1 -0
- package/dist/serve/worker/client/ai.js +89 -0
- package/dist/serve/worker/client/ai.js.map +1 -0
- package/dist/serve/worker/client/auth.d.ts +168 -0
- package/dist/serve/worker/client/auth.d.ts.map +1 -0
- package/dist/serve/worker/client/auth.js +322 -0
- package/dist/serve/worker/client/auth.js.map +1 -0
- package/dist/serve/worker/client/connection.d.ts +80 -0
- package/dist/serve/worker/client/connection.d.ts.map +1 -0
- package/dist/serve/worker/client/connection.js +148 -0
- package/dist/serve/worker/client/connection.js.map +1 -0
- package/dist/serve/worker/client/core.d.ts +109 -0
- package/dist/serve/worker/client/core.d.ts.map +1 -0
- package/dist/serve/worker/client/core.js +248 -0
- package/dist/serve/worker/client/core.js.map +1 -0
- package/dist/serve/worker/client/disconnect.d.ts +7 -0
- package/dist/serve/worker/client/disconnect.d.ts.map +1 -0
- package/dist/serve/worker/client/disconnect.js +26 -0
- package/dist/serve/worker/client/disconnect.js.map +1 -0
- package/dist/serve/worker/client/firestore-reads.d.ts +49 -0
- package/dist/serve/worker/client/firestore-reads.d.ts.map +1 -0
- package/dist/serve/worker/client/firestore-reads.js +139 -0
- package/dist/serve/worker/client/firestore-reads.js.map +1 -0
- package/dist/serve/worker/client/firestore-refs.d.ts +54 -0
- package/dist/serve/worker/client/firestore-refs.d.ts.map +1 -0
- package/dist/serve/worker/client/firestore-refs.js +167 -0
- package/dist/serve/worker/client/firestore-refs.js.map +1 -0
- package/dist/serve/worker/client/firestore-writes.d.ts +70 -0
- package/dist/serve/worker/client/firestore-writes.d.ts.map +1 -0
- package/dist/serve/worker/client/firestore-writes.js +169 -0
- package/dist/serve/worker/client/firestore-writes.js.map +1 -0
- package/dist/serve/worker/client/handles.d.ts +73 -0
- package/dist/serve/worker/client/handles.d.ts.map +1 -0
- package/dist/serve/worker/client/handles.js +4 -0
- package/dist/serve/worker/client/handles.js.map +1 -0
- package/dist/serve/worker/client/messaging.d.ts +16 -0
- package/dist/serve/worker/client/messaging.d.ts.map +1 -0
- package/dist/serve/worker/client/messaging.js +60 -0
- package/dist/serve/worker/client/messaging.js.map +1 -0
- package/dist/serve/worker/client/presence.d.ts +43 -0
- package/dist/serve/worker/client/presence.d.ts.map +1 -0
- package/dist/serve/worker/client/presence.js +132 -0
- package/dist/serve/worker/client/presence.js.map +1 -0
- package/dist/serve/worker/client/rtdb.d.ts +36 -0
- package/dist/serve/worker/client/rtdb.d.ts.map +1 -0
- package/dist/serve/worker/client/rtdb.js +241 -0
- package/dist/serve/worker/client/rtdb.js.map +1 -0
- package/dist/serve/worker/client/rules.d.ts +24 -0
- package/dist/serve/worker/client/rules.d.ts.map +1 -0
- package/dist/serve/worker/client/rules.js +44 -0
- package/dist/serve/worker/client/rules.js.map +1 -0
- package/dist/serve/worker/client/service-worker-connection.d.ts +3 -0
- package/dist/serve/worker/client/service-worker-connection.d.ts.map +1 -0
- package/dist/serve/worker/client/service-worker-connection.js +53 -0
- package/dist/serve/worker/client/service-worker-connection.js.map +1 -0
- package/dist/serve/worker/client/snapshots.d.ts +32 -0
- package/dist/serve/worker/client/snapshots.d.ts.map +1 -0
- package/dist/serve/worker/client/snapshots.js +46 -0
- package/dist/serve/worker/client/snapshots.js.map +1 -0
- package/dist/serve/worker/client/storage.d.ts +64 -0
- package/dist/serve/worker/client/storage.d.ts.map +1 -0
- package/dist/serve/worker/client/storage.js +125 -0
- package/dist/serve/worker/client/storage.js.map +1 -0
- package/dist/serve/worker/client/studio.d.ts +32 -0
- package/dist/serve/worker/client/studio.d.ts.map +1 -0
- package/dist/serve/worker/client/studio.js +61 -0
- package/dist/serve/worker/client/studio.js.map +1 -0
- package/dist/serve/worker/client.d.ts +43 -0
- package/dist/serve/worker/client.d.ts.map +1 -0
- package/dist/serve/worker/client.js +44 -0
- package/dist/serve/worker/client.js.map +1 -0
- package/dist/serve/worker/entry.d.ts +40 -0
- package/dist/serve/worker/entry.d.ts.map +1 -0
- package/dist/serve/worker/entry.js +144 -0
- package/dist/serve/worker/entry.js.map +1 -0
- package/dist/serve/worker/host/admin-firestore.d.ts +17 -0
- package/dist/serve/worker/host/admin-firestore.d.ts.map +1 -0
- package/dist/serve/worker/host/admin-firestore.js +92 -0
- package/dist/serve/worker/host/admin-firestore.js.map +1 -0
- package/dist/serve/worker/host/connection.d.ts +40 -0
- package/dist/serve/worker/host/connection.d.ts.map +1 -0
- package/dist/serve/worker/host/connection.js +153 -0
- package/dist/serve/worker/host/connection.js.map +1 -0
- package/dist/serve/worker/host/core.d.ts +159 -0
- package/dist/serve/worker/host/core.d.ts.map +1 -0
- package/dist/serve/worker/host/core.js +296 -0
- package/dist/serve/worker/host/core.js.map +1 -0
- package/dist/serve/worker/host/dispatch.d.ts +34 -0
- package/dist/serve/worker/host/dispatch.d.ts.map +1 -0
- package/dist/serve/worker/host/dispatch.js +267 -0
- package/dist/serve/worker/host/dispatch.js.map +1 -0
- package/dist/serve/worker/host/firestore-reads.d.ts +17 -0
- package/dist/serve/worker/host/firestore-reads.d.ts.map +1 -0
- package/dist/serve/worker/host/firestore-reads.js +108 -0
- package/dist/serve/worker/host/firestore-reads.js.map +1 -0
- package/dist/serve/worker/host/firestore-writes.d.ts +37 -0
- package/dist/serve/worker/host/firestore-writes.d.ts.map +1 -0
- package/dist/serve/worker/host/firestore-writes.js +409 -0
- package/dist/serve/worker/host/firestore-writes.js.map +1 -0
- package/dist/serve/worker/host/presence.d.ts +38 -0
- package/dist/serve/worker/host/presence.d.ts.map +1 -0
- package/dist/serve/worker/host/presence.js +280 -0
- package/dist/serve/worker/host/presence.js.map +1 -0
- package/dist/serve/worker/host/rtdb.d.ts +18 -0
- package/dist/serve/worker/host/rtdb.d.ts.map +1 -0
- package/dist/serve/worker/host/rtdb.js +128 -0
- package/dist/serve/worker/host/rtdb.js.map +1 -0
- package/dist/serve/worker/host/rules.d.ts +17 -0
- package/dist/serve/worker/host/rules.d.ts.map +1 -0
- package/dist/serve/worker/host/rules.js +118 -0
- package/dist/serve/worker/host/rules.js.map +1 -0
- package/dist/serve/worker/host/storage.d.ts +19 -0
- package/dist/serve/worker/host/storage.d.ts.map +1 -0
- package/dist/serve/worker/host/storage.js +260 -0
- package/dist/serve/worker/host/storage.js.map +1 -0
- package/dist/serve/worker/host/studio.d.ts +13 -0
- package/dist/serve/worker/host/studio.d.ts.map +1 -0
- package/dist/serve/worker/host/studio.js +30 -0
- package/dist/serve/worker/host/studio.js.map +1 -0
- package/dist/serve/worker/host/subscriptions.d.ts +21 -0
- package/dist/serve/worker/host/subscriptions.d.ts.map +1 -0
- package/dist/serve/worker/host/subscriptions.js +162 -0
- package/dist/serve/worker/host/subscriptions.js.map +1 -0
- package/dist/serve/worker/host-ai.d.ts +59 -0
- package/dist/serve/worker/host-ai.d.ts.map +1 -0
- package/dist/serve/worker/host-ai.js +158 -0
- package/dist/serve/worker/host-ai.js.map +1 -0
- package/dist/serve/worker/host-auth.d.ts +47 -0
- package/dist/serve/worker/host-auth.d.ts.map +1 -0
- package/dist/serve/worker/host-auth.js +464 -0
- package/dist/serve/worker/host-auth.js.map +1 -0
- package/dist/serve/worker/host-context.d.ts +220 -0
- package/dist/serve/worker/host-context.d.ts.map +1 -0
- package/dist/serve/worker/host-context.js +45 -0
- package/dist/serve/worker/host-context.js.map +1 -0
- package/dist/serve/worker/host-events.d.ts +21 -0
- package/dist/serve/worker/host-events.d.ts.map +1 -0
- package/dist/serve/worker/host-events.js +87 -0
- package/dist/serve/worker/host-events.js.map +1 -0
- package/dist/serve/worker/host-messaging.d.ts +60 -0
- package/dist/serve/worker/host-messaging.d.ts.map +1 -0
- package/dist/serve/worker/host-messaging.js +226 -0
- package/dist/serve/worker/host-messaging.js.map +1 -0
- package/dist/serve/worker/host.d.ts +36 -0
- package/dist/serve/worker/host.d.ts.map +1 -0
- package/dist/serve/worker/host.js +39 -0
- package/dist/serve/worker/host.js.map +1 -0
- package/dist/serve/worker/index.d.ts +22 -0
- package/dist/serve/worker/index.d.ts.map +1 -0
- package/dist/serve/worker/index.js +61 -0
- package/dist/serve/worker/index.js.map +1 -0
- package/dist/serve/worker/presence-timing.d.ts +14 -0
- package/dist/serve/worker/presence-timing.d.ts.map +1 -0
- package/dist/serve/worker/presence-timing.js +14 -0
- package/dist/serve/worker/presence-timing.js.map +1 -0
- package/dist/serve/worker/protocol.d.ts +1150 -0
- package/dist/serve/worker/protocol.d.ts.map +1 -0
- package/dist/serve/worker/protocol.js +228 -0
- package/dist/serve/worker/protocol.js.map +1 -0
- package/dist/serve/worker/serve-init.d.ts +201 -0
- package/dist/serve/worker/serve-init.d.ts.map +1 -0
- package/dist/serve/worker/serve-init.js +579 -0
- package/dist/serve/worker/serve-init.js.map +1 -0
- package/dist/serve/worker/service-worker-channel.d.ts +23 -0
- package/dist/serve/worker/service-worker-channel.d.ts.map +1 -0
- package/dist/serve/worker/service-worker-channel.js +9 -0
- package/dist/serve/worker/service-worker-channel.js.map +1 -0
- package/dist/serve/worker/service-worker-relay.d.ts +22 -0
- package/dist/serve/worker/service-worker-relay.d.ts.map +1 -0
- package/dist/serve/worker/service-worker-relay.js +63 -0
- package/dist/serve/worker/service-worker-relay.js.map +1 -0
- package/dist/serve/writer-lock.d.ts +32 -0
- package/dist/serve/writer-lock.d.ts.map +1 -0
- package/dist/serve/writer-lock.js +43 -0
- package/dist/serve/writer-lock.js.map +1 -0
- package/dist/verify/cases.d.ts +37 -0
- package/dist/verify/cases.d.ts.map +1 -0
- package/dist/verify/cases.js +173 -0
- package/dist/verify/cases.js.map +1 -0
- package/dist/verify/fixture.d.ts +100 -0
- package/dist/verify/fixture.d.ts.map +1 -0
- package/dist/verify/fixture.js +156 -0
- package/dist/verify/fixture.js.map +1 -0
- package/dist/verify/index.d.ts +102 -0
- package/dist/verify/index.d.ts.map +1 -0
- package/dist/verify/index.js +318 -0
- package/dist/verify/index.js.map +1 -0
- package/dist/verify/tools.d.ts +7 -0
- package/dist/verify/tools.d.ts.map +1 -0
- package/dist/verify/tools.js +83 -0
- package/dist/verify/tools.js.map +1 -0
- package/dist/version/compat-target.d.ts +18 -0
- package/dist/version/compat-target.d.ts.map +1 -0
- package/dist/version/compat-target.js +18 -0
- package/dist/version/compat-target.js.map +1 -0
- package/dist/vite.d.ts +12 -0
- package/dist/vite.d.ts.map +1 -0
- package/dist/vite.js +16 -0
- package/dist/vite.js.map +1 -0
- package/package.json +133 -0
|
@@ -0,0 +1,2120 @@
|
|
|
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/storage · Pyric Studio</title><meta name="description" content="Published declarations for pyric/storage."><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet"><link rel="stylesheet" href="/__pyric/ui/_astro/_slug_.CQYSemvw.css"></head> <body> <header class="studio__bar"> <div class="studio__bar-inner"> <a class="studio__brand" href="/__pyric/ui/" aria-label="Pyric Studio">Pyric</a> <nav class="studio__nav" aria-label="Studio tabs"> <a class="studio__nav-tab" href="/__pyric/ui/"> Home </a><a class="studio__nav-tab" href="/__pyric/ui/firestore"> Firestore </a><a class="studio__nav-tab" href="/__pyric/ui/auth"> Auth </a><a class="studio__nav-tab" href="/__pyric/ui/rtdb"> RTDB </a><a class="studio__nav-tab" href="/__pyric/ui/storage"> Storage </a><a class="studio__nav-tab" href="/__pyric/ui/traffic"> Traffic </a><a class="studio__nav-tab" href="/__pyric/ui/settings"> Settings </a><a class="studio__nav-tab" href="/__pyric/ui/docs" aria-current="page"> Docs </a> </nav> </div> </header> <div class="docs-shell"> <details class="docs-nav-drawer"> <summary>Navigate</summary> <nav class="docs-nav" aria-label="Documentation"> <div class="docs-search" data-index-url="/__pyric/ui/docs/index.json"> <div class="docs-search-field"> <svg class="docs-search-icon" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"> <path d="M11.5 11.5 15 15M13 7A6 6 0 1 1 1 7a6 6 0 0 1 12 0Z" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path> </svg> <input type="text" class="docs-search-input" placeholder="Search docs" aria-label="Search docs" autocomplete="off" spellcheck="false"> <kbd class="docs-search-kbd">⌘K</kbd> </div> <ul class="docs-search-results" hidden></ul> </div> <script type="module">let i=null;function d(t){return i||(i=fetch(t).then(e=>e.json())),i}function l(t,e){return t.title.toLowerCase().includes(e)||t.excerpt.toLowerCase().includes(e)?!0:t.headings.some(r=>r.text.toLowerCase().includes(e))}function u(t,e,r){if(e.innerHTML="",t.length===0){e.hidden=!1;{const n=document.createElement("li");n.className="docs-search-empty",n.textContent="No matches",e.appendChild(n)}return}e.hidden=!1;for(const n of t.slice(0,8)){const s=document.createElement("li"),c=document.createElement("a");c.href=n.path;const o=document.createElement("span");o.className="docs-search-result-title",o.textContent=n.title;const a=document.createElement("span");a.className="docs-search-result-meta",a.textContent=[n.group,n.section].filter(Boolean).join(" / "),c.append(o,a),s.appendChild(c),e.appendChild(s)}}document.querySelectorAll(".docs-search").forEach(t=>{const e=t.dataset.indexUrl,r=t.querySelector(".docs-search-input"),n=t.querySelector(".docs-search-results");r.addEventListener("input",async()=>{const s=r.value.trim().toLowerCase();if(!s){n.hidden=!0,n.innerHTML="";return}const{pages:c}=await d(e);r.value.trim().toLowerCase()===s&&u(c.filter(o=>l(o,s)),n)}),r.addEventListener("focus",()=>{d(e),n.childElementCount>0&&(n.hidden=!1)}),r.addEventListener("keydown",s=>{s.key==="Escape"&&(r.value="",n.hidden=!0,n.innerHTML="",r.blur())}),r.addEventListener("blur",()=>{window.setTimeout(()=>{n.hidden=!0},150)})});document.addEventListener("keydown",t=>{if(!(t.metaKey||t.ctrlKey)||t.key.toLowerCase()!=="k")return;const e=[...document.querySelectorAll(".docs-search-input")].find(r=>r.offsetParent!==null);e&&(t.preventDefault(),e.focus(),e.select())});</script> <a class="docs-nav-toplink" href="/__pyric/ui/docs/overview/"> Overview </a><details class="docs-nav-group"> <summary>Run locally</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/start-building/"> Quickstart </a> </li><li> <a href="/__pyric/ui/docs/how-the-swap-works/"> How the swap works </a> </li><li> <a href="/__pyric/ui/docs/set-up-your-agent/"> Connect an agent </a> </li><li> <a href="/__pyric/ui/docs/test-in-node/"> Test in Node </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Develop with Firebase APIs</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/sign-in-and-manage-users/"> Sign in and manage users </a> </li><li> <a href="/__pyric/ui/docs/store-and-query-data/"> Store and query data </a> </li><li> <a href="/__pyric/ui/docs/sync-realtime-data/"> Sync realtime data </a> </li><li> <a href="/__pyric/ui/docs/store-files/"> Store files </a> </li><li> <a href="/__pyric/ui/docs/receive-messages/"> Receive messages </a> </li><li> <a href="/__pyric/ui/docs/run-ai-logic-locally/"> Run AI Logic locally </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-how-to-run-rtdb-onvaluecreated/"> Run an RTDB function locally </a> </li><li> <a href="/__pyric/ui/docs/which-data-service/"> Which data service? </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Inspect and correct</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <h2 class="docs-nav-heading"> Inspect the sandbox </h2> <ul> <li> <a href="/__pyric/ui/docs/see-whats-happening/"> Traffic & rule verdicts </a> </li><li> <a href="/__pyric/ui/docs/read-a-denial/"> Read a denial and understand it </a> </li><li> <a href="/__pyric/ui/docs/shape-your-data/"> Seed, snapshot, replay </a> </li><li> <a href="/__pyric/ui/docs/watch-and-review/"> Review agent activity </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading"> Correct Security Rules </h2> <ul> <li> <a href="/__pyric/ui/docs/secure-it-with-rules/"> Security Rules </a> </li><li> <a href="/__pyric/ui/docs/simulate-and-lint/"> Simulate and lint before you deploy </a> </li><li> <a href="/__pyric/ui/docs/rules-patterns/"> Rules patterns </a> </li><li> <a href="/__pyric/ui/docs/rules-standard-library/"> The rules standard library </a> </li><li> <a href="/__pyric/ui/docs/rtdb-rules-in-typescript/"> RTDB rules in TypeScript </a> </li><li> <a href="/__pyric/ui/docs/firestore-rules-limits/"> Rules limits </a> </li><li> <a href="/__pyric/ui/docs/whats-possible/"> Case studies </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading"> Work with an agent </h2> <ul> <li> <a href="/__pyric/ui/docs/what-your-agent-can-do/"> Work through an agent </a> </li><li> <a href="/__pyric/ui/docs/skills/"> Agent skills </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Verify the boundary</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli-how-to-verify-against-a-captured-session/"> Verify a captured session </a> </li><li> <a href="/__pyric/ui/docs/write-a-rules-test-suite/"> Write a rules test suite </a> </li><li> <a href="/__pyric/ui/docs/audit-your-rules/"> Audit rules and data </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Ship unchanged</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/ship-to-production/"> Ship to production </a> </li><li> <a href="/__pyric/ui/docs/set-up-the-project/"> Set up the Firebase project </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/how-we-know-it-matches-firebase/"> Conformance </a> </li><li> <a href="/__pyric/ui/docs/whats-experimental/"> What's experimental </a> </li><li> <a href="/__pyric/ui/docs/pyric-conformance-scores/"> Conformance scores </a> </li><li> <a href="/__pyric/ui/docs/pyric-app-compat/"> App </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-compat/"> Firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth-compat/"> Auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-database-compat/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage-compat/"> Storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules-compat/"> Rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-compat/"> Messaging </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-compat/"> AI Logic </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-functions-rtdb-compat/"> Functions · RTDB </a> </li> </ul> </div> </div> </details> <details class="docs-nav-group" open> <summary>Reference</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli/"> @pyric/cli </a> </li><li> <a href="/__pyric/ui/docs/pyric-explanation-versioning-and-compatibility/"> pyric </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore/"> pyric / firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules/"> pyric / rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox/"> pyric / sandbox </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage/"> pyric / storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth/"> pyric / auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-database/"> pyric / database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-app/"> pyric-admin / app </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-firestore/"> pyric-admin / firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-auth/"> pyric-admin / auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-database/"> pyric-admin / database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-storage/"> pyric-admin / storage </a> </li><li> <a href="/__pyric/ui/docs/ui/"> @pyric/ui </a> </li><li> <a href="/__pyric/ui/docs/api-reference/" aria-current="true"> API reference </a> </li> </ul> </div> </div> </details> </nav> </details> <nav class="docs-nav" aria-label="Documentation"> <div class="docs-search" data-index-url="/__pyric/ui/docs/index.json"> <div class="docs-search-field"> <svg class="docs-search-icon" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"> <path d="M11.5 11.5 15 15M13 7A6 6 0 1 1 1 7a6 6 0 0 1 12 0Z" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path> </svg> <input type="text" class="docs-search-input" placeholder="Search docs" aria-label="Search docs" autocomplete="off" spellcheck="false"> <kbd class="docs-search-kbd">⌘K</kbd> </div> <ul class="docs-search-results" hidden></ul> </div> <a class="docs-nav-toplink" href="/__pyric/ui/docs/overview/" id="nav-group-overview"> Overview </a><details class="docs-nav-group" id="nav-group-run-locally"> <summary>Run locally</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/start-building/"> Quickstart </a> </li><li> <a href="/__pyric/ui/docs/how-the-swap-works/"> How the swap works </a> </li><li> <a href="/__pyric/ui/docs/set-up-your-agent/"> Connect an agent </a> </li><li> <a href="/__pyric/ui/docs/test-in-node/"> Test in Node </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-develop-with-firebase-apis"> <summary>Develop with Firebase APIs</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/sign-in-and-manage-users/"> Sign in and manage users </a> </li><li> <a href="/__pyric/ui/docs/store-and-query-data/"> Store and query data </a> </li><li> <a href="/__pyric/ui/docs/sync-realtime-data/"> Sync realtime data </a> </li><li> <a href="/__pyric/ui/docs/store-files/"> Store files </a> </li><li> <a href="/__pyric/ui/docs/receive-messages/"> Receive messages </a> </li><li> <a href="/__pyric/ui/docs/run-ai-logic-locally/"> Run AI Logic locally </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-how-to-run-rtdb-onvaluecreated/"> Run an RTDB function locally </a> </li><li> <a href="/__pyric/ui/docs/which-data-service/"> Which data service? </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-inspect-and-correct"> <summary>Inspect and correct</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <h2 class="docs-nav-heading" id="nav-section-inspect-and-correct-inspect-the-sandbox"> Inspect the sandbox </h2> <ul> <li> <a href="/__pyric/ui/docs/see-whats-happening/"> Traffic & rule verdicts </a> </li><li> <a href="/__pyric/ui/docs/read-a-denial/"> Read a denial and understand it </a> </li><li> <a href="/__pyric/ui/docs/shape-your-data/"> Seed, snapshot, replay </a> </li><li> <a href="/__pyric/ui/docs/watch-and-review/"> Review agent activity </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading" id="nav-section-inspect-and-correct-correct-security-rules"> Correct Security Rules </h2> <ul> <li> <a href="/__pyric/ui/docs/secure-it-with-rules/"> Security Rules </a> </li><li> <a href="/__pyric/ui/docs/simulate-and-lint/"> Simulate and lint before you deploy </a> </li><li> <a href="/__pyric/ui/docs/rules-patterns/"> Rules patterns </a> </li><li> <a href="/__pyric/ui/docs/rules-standard-library/"> The rules standard library </a> </li><li> <a href="/__pyric/ui/docs/rtdb-rules-in-typescript/"> RTDB rules in TypeScript </a> </li><li> <a href="/__pyric/ui/docs/firestore-rules-limits/"> Rules limits </a> </li><li> <a href="/__pyric/ui/docs/whats-possible/"> Case studies </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading" id="nav-section-inspect-and-correct-work-with-an-agent"> Work with an agent </h2> <ul> <li> <a href="/__pyric/ui/docs/what-your-agent-can-do/"> Work through an agent </a> </li><li> <a href="/__pyric/ui/docs/skills/"> Agent skills </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-verify-the-boundary"> <summary>Verify the boundary</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli-how-to-verify-against-a-captured-session/"> Verify a captured session </a> </li><li> <a href="/__pyric/ui/docs/write-a-rules-test-suite/"> Write a rules test suite </a> </li><li> <a href="/__pyric/ui/docs/audit-your-rules/"> Audit rules and data </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-ship-unchanged"> <summary>Ship unchanged</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/ship-to-production/"> Ship to production </a> </li><li> <a href="/__pyric/ui/docs/set-up-the-project/"> Set up the Firebase project </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/how-we-know-it-matches-firebase/"> Conformance </a> </li><li> <a href="/__pyric/ui/docs/whats-experimental/"> What's experimental </a> </li><li> <a href="/__pyric/ui/docs/pyric-conformance-scores/"> Conformance scores </a> </li><li> <a href="/__pyric/ui/docs/pyric-app-compat/"> App </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-compat/"> Firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth-compat/"> Auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-database-compat/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage-compat/"> Storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules-compat/"> Rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-compat/"> Messaging </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-compat/"> AI Logic </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-functions-rtdb-compat/"> Functions · RTDB </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"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli/"> @pyric/cli </a> </li><li> <a href="/__pyric/ui/docs/pyric-explanation-versioning-and-compatibility/"> pyric </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore/"> pyric / firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules/"> pyric / rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox/"> pyric / sandbox </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage/"> pyric / storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth/"> pyric / auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-database/"> pyric / database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-app/"> pyric-admin / app </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-firestore/"> pyric-admin / firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-auth/"> pyric-admin / auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-database/"> pyric-admin / database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-storage/"> pyric-admin / storage </a> </li><li> <a href="/__pyric/ui/docs/ui/"> @pyric/ui </a> </li><li> <a href="/__pyric/ui/docs/api-reference/" aria-current="true"> API reference </a> </li> </ul> </div> </div> </details> </nav> <main class="doc-main"> <nav class="docs-breadcrumbs" aria-label="Breadcrumb"> <ol> <li> <a href="/__pyric/ui/docs/api-reference/">API reference</a> </li><li> <span class="docs-breadcrumbs-sep" aria-hidden="true">/</span> <span>pyric</span> </li><li> <span class="docs-breadcrumbs-sep" aria-hidden="true">/</span> <span aria-current="page">pyric/storage</span> </li> </ol> </nav> <header class="api-reference-header"> <p class="api-reference-kicker">API reference</p> <h1><code>pyric/storage</code></h1> <p class="api-reference-meta"> 64 published symbols from <code>pyric</code> </p> <p class="api-reference-source">
|
|
2
|
+
Generated from the TypeScript declarations shipped at this import path.
|
|
3
|
+
</p> <a class="api-reference-evidence" href="/__pyric/ui/docs/pyric-storage-compat/">
|
|
4
|
+
Check behavioral conformance
|
|
5
|
+
</a> </header> <article class="prose api-reference-body"> <!-- Generated from published package declarations via TypeDoc. Do not edit by hand; run bun run docs:api:generate. -->
|
|
6
|
+
<h2 id="classes">Classes</h2>
|
|
7
|
+
<p><a id="inspectstoragehandler"></a></p>
|
|
8
|
+
<h3 id="inspectstoragehandler">InspectStorageHandler</h3>
|
|
9
|
+
<h4 id="constructors">Constructors</h4>
|
|
10
|
+
<p><a id="constructor"></a></p>
|
|
11
|
+
<h5 id="constructor">Constructor</h5>
|
|
12
|
+
<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">new</span><span style="color:#61AFEF"> InspectStorageHandler</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">InspectStorageHandler</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
13
|
+
<h6 id="returns">Returns</h6>
|
|
14
|
+
<p><a href="#inspectstoragehandler"><code>InspectStorageHandler</code></a></p>
|
|
15
|
+
<h4 id="methods">Methods</h4>
|
|
16
|
+
<p><a id="execute"></a></p>
|
|
17
|
+
<h5 id="execute">execute()</h5>
|
|
18
|
+
<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">execute</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">scope</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">ProjectScope</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#56B6C2"><</span><span style="color:#E06C75">InspectStorageResult</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
19
|
+
<h6 id="parameters">Parameters</h6>
|
|
20
|
+
<div class="table-scroll">
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>scope</code></td><td align="left"><code>ProjectScope</code></td></tr></tbody></table></div>
|
|
34
|
+
<h6 id="returns-1">Returns</h6>
|
|
35
|
+
<p><code>Promise</code><<a href="#inspectstorageresult"><code>InspectStorageResult</code></a>></p>
|
|
36
|
+
<hr>
|
|
37
|
+
<p><a id="provisionstoragehandler"></a></p>
|
|
38
|
+
<h3 id="provisionstoragehandler">ProvisionStorageHandler</h3>
|
|
39
|
+
<h4 id="constructors-1">Constructors</h4>
|
|
40
|
+
<p><a id="constructor-1"></a></p>
|
|
41
|
+
<h5 id="constructor-1">Constructor</h5>
|
|
42
|
+
<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">new</span><span style="color:#61AFEF"> ProvisionStorageHandler</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">ProvisionStorageHandler</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
43
|
+
<h6 id="returns-2">Returns</h6>
|
|
44
|
+
<p><a href="#provisionstoragehandler"><code>ProvisionStorageHandler</code></a></p>
|
|
45
|
+
<h4 id="methods-1">Methods</h4>
|
|
46
|
+
<p><a id="execute-2"></a></p>
|
|
47
|
+
<h5 id="execute-1">execute()</h5>
|
|
48
|
+
<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">execute</span><span style="color:#ABB2BF">(</span></span>
|
|
49
|
+
<span class="line"><span style="color:#E06C75"> scope</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">ProjectScope</span><span style="color:#ABB2BF">,</span></span>
|
|
50
|
+
<span class="line"><span style="color:#E06C75"> input</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">ProvisionStorageInput</span><span style="color:#ABB2BF">,</span></span>
|
|
51
|
+
<span class="line"><span style="color:#E06C75">onProgress</span><span style="color:#C678DD">?:</span><span style="color:#E06C75"> ProvisionProgress</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#56B6C2"><</span><span style="color:#E06C75">ProvisionStorageOutcome</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
52
|
+
<h6 id="parameters-1">Parameters</h6>
|
|
53
|
+
<div class="table-scroll">
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>scope</code></td><td align="left"><code>ProjectScope</code></td></tr><tr><td align="left"><code>input</code></td><td align="left"><a href="#provisionstorageinput"><code>ProvisionStorageInput</code></a></td></tr><tr><td align="left"><code>onProgress?</code></td><td align="left"><code>ProvisionProgress</code></td></tr></tbody></table></div>
|
|
75
|
+
<h6 id="returns-3">Returns</h6>
|
|
76
|
+
<p><code>Promise</code><<a href="#provisionstorageoutcome"><code>ProvisionStorageOutcome</code></a>></p>
|
|
77
|
+
<hr>
|
|
78
|
+
<p><a id="storageerror"></a></p>
|
|
79
|
+
<h3 id="storageerror">StorageError</h3>
|
|
80
|
+
<p>Storage error carrying a prefixed <code>storage/<code></code> on <code>.code</code>.
|
|
81
|
+
Drop-in for <code>err.code === 'storage/object-not-found'</code> branching.</p>
|
|
82
|
+
<h4 id="extends">Extends</h4>
|
|
83
|
+
<ul>
|
|
84
|
+
<li><code>Error</code></li>
|
|
85
|
+
</ul>
|
|
86
|
+
<h4 id="constructors-2">Constructors</h4>
|
|
87
|
+
<p><a id="constructor-2"></a></p>
|
|
88
|
+
<h5 id="constructor-2">Constructor</h5>
|
|
89
|
+
<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">new</span><span style="color:#61AFEF"> StorageError</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">code</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">StorageErrorCode</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">message</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">StorageError</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
90
|
+
<h6 id="parameters-2">Parameters</h6>
|
|
91
|
+
<div class="table-scroll">
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>code</code></td><td align="left"><a href="#storageerrorcode-1"><code>StorageErrorCode</code></a></td></tr><tr><td align="left"><code>message</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
109
|
+
<h6 id="returns-4">Returns</h6>
|
|
110
|
+
<p><a href="#storageerror"><code>StorageError</code></a></p>
|
|
111
|
+
<h6 id="overrides">Overrides</h6>
|
|
112
|
+
<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">Error</span><span style="color:#ABB2BF">.</span><span style="color:#E06C75">constructor</span></span></code></pre>
|
|
113
|
+
<h4 id="properties">Properties</h4>
|
|
114
|
+
<div class="table-scroll">
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Modifier</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="code"></a> <code>code</code></td><td align="left"><code>readonly</code></td><td align="left">| <code>"storage/unknown"</code> | <code>"storage/object-not-found"</code> | <code>"storage/quota-exceeded"</code> | <code>"storage/unauthenticated"</code> | <code>"storage/unauthorized"</code> | <code>"storage/invalid-root-operation"</code> | <code>"storage/invalid-format"</code> | <code>"storage/invalid-argument"</code></td><td align="left">Prefixed code, e.g. <code>storage/object-not-found</code>.</td></tr></tbody></table></div>
|
|
132
|
+
<hr>
|
|
133
|
+
<p><a id="storageprovisioningerror"></a></p>
|
|
134
|
+
<h3 id="storageprovisioningerror">StorageProvisioningError</h3>
|
|
135
|
+
<p>Pure-fetch client for the Firebase Storage provisioning APIs.
|
|
136
|
+
Takes an OAuth access token directly — works equally from a Node
|
|
137
|
+
agent runtime or a browser. Used by:</p>
|
|
138
|
+
<ul>
|
|
139
|
+
<li><code>ProvisionStorageHandler</code> server-side via the agent SDK</li>
|
|
140
|
+
<li>Consumers like the multi-tenant playground via direct import</li>
|
|
141
|
+
</ul>
|
|
142
|
+
<p>The caller is responsible for token scope. <code>firebase</code> scope is
|
|
143
|
+
enough for the <code>:addFirebase</code> + <code>defaultLocation:finalize</code> calls,
|
|
144
|
+
but <strong>NOT</strong> for enabling the underlying <code>firebasestorage.googleapis.com</code>
|
|
145
|
+
service (which is the first-time gate). Service-enable requires
|
|
146
|
+
<code>cloud-platform</code> scope OR a service account with
|
|
147
|
+
<code>roles/serviceusage.serviceUsageAdmin</code>. Each function below
|
|
148
|
+
documents which scope it needs.</p>
|
|
149
|
+
<p>Endpoints under play:</p>
|
|
150
|
+
<ul>
|
|
151
|
+
<li>serviceusage.googleapis.com/v1/projects/{p}/services/{s}:enable</li>
|
|
152
|
+
<li>firebase.googleapis.com/v1beta1/projects/{p}/defaultLocation:finalize</li>
|
|
153
|
+
<li>firebasestorage.googleapis.com/v1beta/projects/{p}/buckets</li>
|
|
154
|
+
<li>firebasestorage.googleapis.com/v1beta/projects/{p}/buckets/{b}:addFirebase</li>
|
|
155
|
+
<li>firebaserules.googleapis.com/v1/projects/{p}/releases/firebase.storage</li>
|
|
156
|
+
</ul>
|
|
157
|
+
<h4 id="extends-1">Extends</h4>
|
|
158
|
+
<ul>
|
|
159
|
+
<li><code>Error</code></li>
|
|
160
|
+
</ul>
|
|
161
|
+
<h4 id="constructors-3">Constructors</h4>
|
|
162
|
+
<p><a id="constructor-3"></a></p>
|
|
163
|
+
<h5 id="constructor-3">Constructor</h5>
|
|
164
|
+
<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">new</span><span style="color:#61AFEF"> StorageProvisioningError</span><span style="color:#ABB2BF">(</span></span>
|
|
165
|
+
<span class="line"><span style="color:#E06C75"> status</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">number</span><span style="color:#ABB2BF">,</span></span>
|
|
166
|
+
<span class="line"><span style="color:#E06C75"> body</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">,</span></span>
|
|
167
|
+
<span class="line"><span style="color:#E06C75"> reason</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">,</span></span>
|
|
168
|
+
<span class="line"><span style="color:#E06C75"> message</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">StorageProvisioningError</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
169
|
+
<h6 id="parameters-3">Parameters</h6>
|
|
170
|
+
<div class="table-scroll">
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>status</code></td><td align="left"><code>number</code></td></tr><tr><td align="left"><code>body</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>reason</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>message</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
196
|
+
<h6 id="returns-5">Returns</h6>
|
|
197
|
+
<p><a href="#storageprovisioningerror"><code>StorageProvisioningError</code></a></p>
|
|
198
|
+
<h6 id="overrides-1">Overrides</h6>
|
|
199
|
+
<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">Error</span><span style="color:#ABB2BF">.</span><span style="color:#E06C75">constructor</span></span></code></pre>
|
|
200
|
+
<h4 id="properties-1">Properties</h4>
|
|
201
|
+
<div class="table-scroll">
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Modifier</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="body"></a> <code>body</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="reason"></a> <code>reason</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="status"></a> <code>status</code></td><td align="left"><code>readonly</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
|
|
227
|
+
<h2 id="interfaces">Interfaces</h2>
|
|
228
|
+
<p><a id="corsrule"></a></p>
|
|
229
|
+
<h3 id="corsrule">CorsRule</h3>
|
|
230
|
+
<p>A single CORS rule entry, mirroring the GCS bucket CORS schema.
|
|
231
|
+
See <a href="https://cloud.google.com/storage/docs/cross-origin#cors-elements" target="_blank" rel="noopener noreferrer" class="external-link">https://cloud.google.com/storage/docs/cross-origin#cors-elements</a>.</p>
|
|
232
|
+
<h4 id="properties-2">Properties</h4>
|
|
233
|
+
<div class="table-scroll">
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="maxageseconds"></a> <code>maxAgeSeconds?</code></td><td align="left"><code>number</code></td></tr><tr><td align="left"><a id="method"></a> <code>method</code></td><td align="left"><code>string</code>[]</td></tr><tr><td align="left"><a id="origin"></a> <code>origin</code></td><td align="left"><code>string</code>[]</td></tr><tr><td align="left"><a id="responseheader"></a> <code>responseHeader?</code></td><td align="left"><code>string</code>[]</td></tr></tbody></table></div>
|
|
259
|
+
<hr>
|
|
260
|
+
<p><a id="evaluationinput"></a></p>
|
|
261
|
+
<h3 id="evaluationinput">EvaluationInput</h3>
|
|
262
|
+
<h4 id="properties-3">Properties</h4>
|
|
263
|
+
<div class="table-scroll">
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="request"></a> <code>request</code></td><td align="left"><a href="#storagerequest"><code>StorageRequest</code></a></td></tr><tr><td align="left"><a id="resource"></a> <code>resource</code></td><td align="left"><a href="#storageresource"><code>StorageResource</code></a></td></tr></tbody></table></div>
|
|
281
|
+
<hr>
|
|
282
|
+
<p><a id="evaluationresult"></a></p>
|
|
283
|
+
<h3 id="evaluationresult">EvaluationResult</h3>
|
|
284
|
+
<h4 id="properties-4">Properties</h4>
|
|
285
|
+
<div class="table-scroll">
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="allowed"></a> <code>allowed</code></td><td align="left"><code>boolean</code></td><td align="left">-</td></tr><tr><td align="left"><a id="reasons"></a> <code>reasons</code></td><td align="left"><code>string</code>[]</td><td align="left">Human-readable explanation of why — used by Slice 8’s integration to populate <code>storage/unauthorized</code> error messages.</td></tr></tbody></table></div>
|
|
306
|
+
<hr>
|
|
307
|
+
<p><a id="firebasestorage"></a></p>
|
|
308
|
+
<h3 id="firebasestorage">FirebaseStorage</h3>
|
|
309
|
+
<p>Public opaque handle. Carries a <a href="#target">Target</a> via
|
|
310
|
+
<a href="#target_symbol-1">TARGET_SYMBOL</a>; never inspected by consumer code, which
|
|
311
|
+
interacts with storage only through <a href="#ref-1">ref</a> and the operation
|
|
312
|
+
free functions.</p>
|
|
313
|
+
<h4 id="properties-5">Properties</h4>
|
|
314
|
+
<div class="table-scroll">
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Modifier</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="target_symbol"></a> <code>[TARGET_SYMBOL]</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#sandboxtarget"><code>SandboxTarget</code></a></td></tr><tr><td align="left"><a id="app"></a> <code>app?</code></td><td align="left"><code>readonly</code></td><td align="left"><code>FirebaseApp</code></td></tr></tbody></table></div>
|
|
335
|
+
<hr>
|
|
336
|
+
<p><a id="firebasestoragebucket"></a></p>
|
|
337
|
+
<h3 id="firebasestoragebucket">FirebaseStorageBucket</h3>
|
|
338
|
+
<h4 id="properties-6">Properties</h4>
|
|
339
|
+
<div class="table-scroll">
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
|
|
349
|
+
|
|
350
|
+
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="bucketid"></a> <code>bucketId</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="name"></a> <code>name</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="reconciling"></a> <code>reconciling?</code></td><td align="left"><code>boolean</code></td></tr></tbody></table></div>
|
|
361
|
+
<hr>
|
|
362
|
+
<p><a id="firestorelookup"></a></p>
|
|
363
|
+
<h3 id="firestorelookup">FirestoreLookup</h3>
|
|
364
|
+
<p>Injected capability that lets a Storage rule read Firestore documents
|
|
365
|
+
(<code>firestore.get(path)</code> / <code>firestore.exists(path)</code>), WITHOUT the pure
|
|
366
|
+
evaluator importing the Firestore sandbox. The enforcement layer builds
|
|
367
|
+
one from the sandbox’s admin Firestore accessor (a synchronous in-memory
|
|
368
|
+
read) and passes it into <a href="#evaluatestoragerules">evaluateStorageRules</a>; pure/test callers
|
|
369
|
+
that omit it get the deny-with-reason “unsupported” behavior instead.</p>
|
|
370
|
+
<p>Paths are the document path RELATIVE to the database — the
|
|
371
|
+
<code>collection/doc</code> form <code>sandbox.admin.getDocument</code> expects — after the
|
|
372
|
+
evaluator has stripped the <code>/databases/<db>/documents/</code> prefix from the
|
|
373
|
+
rule’s path literal.</p>
|
|
374
|
+
<h4 id="methods-2">Methods</h4>
|
|
375
|
+
<p><a id="exists"></a></p>
|
|
376
|
+
<h5 id="exists">exists()</h5>
|
|
377
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">exists</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">path</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">boolean</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
378
|
+
<p>Whether a document exists at <code>path</code>.</p>
|
|
379
|
+
<h6 id="parameters-4">Parameters</h6>
|
|
380
|
+
<div class="table-scroll">
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
|
|
384
|
+
|
|
385
|
+
|
|
386
|
+
|
|
387
|
+
|
|
388
|
+
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
<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>
|
|
394
|
+
<h6 id="returns-6">Returns</h6>
|
|
395
|
+
<p><code>boolean</code></p>
|
|
396
|
+
<p><a id="get"></a></p>
|
|
397
|
+
<h5 id="get">get()</h5>
|
|
398
|
+
<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">get</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">path</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">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>
|
|
399
|
+
<p>The document’s fields, or <code>null</code> when the document does not exist.</p>
|
|
400
|
+
<h6 id="parameters-5">Parameters</h6>
|
|
401
|
+
<div class="table-scroll">
|
|
402
|
+
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
|
|
414
|
+
<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>
|
|
415
|
+
<h6 id="returns-7">Returns</h6>
|
|
416
|
+
<p><code>Record</code><<code>string</code>, <code>unknown</code>></p>
|
|
417
|
+
<hr>
|
|
418
|
+
<p><a id="fullmetadata"></a></p>
|
|
419
|
+
<h3 id="fullmetadata">FullMetadata</h3>
|
|
420
|
+
<p>Server-set + client-settable fields read back from
|
|
421
|
+
<code>uploadBytes</code> / <code>getMetadata</code> / <code>updateMetadata</code>. Server-set
|
|
422
|
+
fields (<code>bucket</code>, <code>fullPath</code>, <code>name</code>, <code>generation</code>,
|
|
423
|
+
<code>metageneration</code>, <code>timeCreated</code>, <code>updated</code>, <code>size</code>) are populated
|
|
424
|
+
by the upload pipeline; client-settable fields round-trip from
|
|
425
|
+
<code>SettableMetadata</code>.</p>
|
|
426
|
+
<h4 id="extends-2">Extends</h4>
|
|
427
|
+
<ul>
|
|
428
|
+
<li><a href="#settablemetadata"><code>SettableMetadata</code></a></li>
|
|
429
|
+
</ul>
|
|
430
|
+
<h4 id="properties-7">Properties</h4>
|
|
431
|
+
<div class="table-scroll">
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+
|
|
445
|
+
|
|
446
|
+
|
|
447
|
+
|
|
448
|
+
|
|
449
|
+
|
|
450
|
+
|
|
451
|
+
|
|
452
|
+
|
|
453
|
+
|
|
454
|
+
|
|
455
|
+
|
|
456
|
+
|
|
457
|
+
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
|
|
461
|
+
|
|
462
|
+
|
|
463
|
+
|
|
464
|
+
|
|
465
|
+
|
|
466
|
+
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
|
|
470
|
+
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
|
|
474
|
+
|
|
475
|
+
|
|
476
|
+
|
|
477
|
+
|
|
478
|
+
|
|
479
|
+
|
|
480
|
+
|
|
481
|
+
|
|
482
|
+
|
|
483
|
+
|
|
484
|
+
|
|
485
|
+
|
|
486
|
+
|
|
487
|
+
|
|
488
|
+
|
|
489
|
+
|
|
490
|
+
|
|
491
|
+
|
|
492
|
+
|
|
493
|
+
|
|
494
|
+
|
|
495
|
+
|
|
496
|
+
|
|
497
|
+
|
|
498
|
+
|
|
499
|
+
|
|
500
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="bucket"></a> <code>bucket</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="cachecontrol"></a> <code>cacheControl?</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="contentdisposition"></a> <code>contentDisposition?</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="contentencoding"></a> <code>contentEncoding?</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="contentlanguage"></a> <code>contentLanguage?</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="contenttype"></a> <code>contentType?</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="custommetadata"></a> <code>customMetadata?</code></td><td align="left">{ [<code>key</code>: <code>string</code>]: <code>string</code>; }</td></tr><tr><td align="left"><a id="fullpath"></a> <code>fullPath</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="generation"></a> <code>generation</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="md5hash"></a> <code>md5Hash?</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="metageneration"></a> <code>metageneration</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="name-1"></a> <code>name</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="size"></a> <code>size</code></td><td align="left"><code>number</code></td></tr><tr><td align="left"><a id="timecreated"></a> <code>timeCreated</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="updated"></a> <code>updated</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
501
|
+
<hr>
|
|
502
|
+
<p><a id="inspectstorageresult"></a></p>
|
|
503
|
+
<h3 id="inspectstorageresult">InspectStorageResult</h3>
|
|
504
|
+
<h4 id="properties-8">Properties</h4>
|
|
505
|
+
<div class="table-scroll">
|
|
506
|
+
|
|
507
|
+
|
|
508
|
+
|
|
509
|
+
|
|
510
|
+
|
|
511
|
+
|
|
512
|
+
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
|
|
516
|
+
|
|
517
|
+
|
|
518
|
+
|
|
519
|
+
|
|
520
|
+
|
|
521
|
+
|
|
522
|
+
|
|
523
|
+
|
|
524
|
+
|
|
525
|
+
|
|
526
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="buckets"></a> <code>buckets</code></td><td align="left">{ <code>bucketId</code>: <code>string</code>; <code>name</code>: <code>string</code>; }[]</td></tr><tr><td align="left"><a id="defaultlocation"></a> <code>defaultLocation</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="servicestate"></a> <code>serviceState</code></td><td align="left"><code>"unknown"</code> | <code>"enabled"</code> | <code>"disabled"</code></td></tr></tbody></table></div>
|
|
527
|
+
<hr>
|
|
528
|
+
<p><a id="listresult"></a></p>
|
|
529
|
+
<h3 id="listresult">ListResult</h3>
|
|
530
|
+
<p>Mirrors <code>firebase/storage</code>’s <code>ListResult</code>. <code>nextPageToken</code> is
|
|
531
|
+
<code>undefined</code> for <code>listAll</code>; pagination via <code>list()</code> is deferred.</p>
|
|
532
|
+
<h4 id="properties-9">Properties</h4>
|
|
533
|
+
<div class="table-scroll">
|
|
534
|
+
|
|
535
|
+
|
|
536
|
+
|
|
537
|
+
|
|
538
|
+
|
|
539
|
+
|
|
540
|
+
|
|
541
|
+
|
|
542
|
+
|
|
543
|
+
|
|
544
|
+
|
|
545
|
+
|
|
546
|
+
|
|
547
|
+
|
|
548
|
+
|
|
549
|
+
|
|
550
|
+
|
|
551
|
+
|
|
552
|
+
|
|
553
|
+
|
|
554
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="items"></a> <code>items</code></td><td align="left"><a href="#storagereference"><code>StorageReference</code></a>[]</td></tr><tr><td align="left"><a id="nextpagetoken"></a> <code>nextPageToken?</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="prefixes"></a> <code>prefixes</code></td><td align="left"><a href="#storagereference"><code>StorageReference</code></a>[]</td></tr></tbody></table></div>
|
|
555
|
+
<hr>
|
|
556
|
+
<p><a id="provisionstorageinput"></a></p>
|
|
557
|
+
<h3 id="provisionstorageinput">ProvisionStorageInput</h3>
|
|
558
|
+
<p>Shapes for the Storage provisioning + status tools.</p>
|
|
559
|
+
<p>Types only — the agent-tool parameter schemas live inline in
|
|
560
|
+
<code>tools.ts</code> as JSON Schema (the <code>ToolHandler</code> contract).</p>
|
|
561
|
+
<h4 id="properties-10">Properties</h4>
|
|
562
|
+
<div class="table-scroll">
|
|
563
|
+
|
|
564
|
+
|
|
565
|
+
|
|
566
|
+
|
|
567
|
+
|
|
568
|
+
|
|
569
|
+
|
|
570
|
+
|
|
571
|
+
|
|
572
|
+
|
|
573
|
+
|
|
574
|
+
|
|
575
|
+
|
|
576
|
+
|
|
577
|
+
|
|
578
|
+
|
|
579
|
+
|
|
580
|
+
|
|
581
|
+
|
|
582
|
+
|
|
583
|
+
|
|
584
|
+
|
|
585
|
+
|
|
586
|
+
|
|
587
|
+
|
|
588
|
+
|
|
589
|
+
|
|
590
|
+
|
|
591
|
+
|
|
592
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="bucketid-1"></a> <code>bucketId?</code></td><td align="left"><code>string</code></td><td align="left">Override the default Firebase Storage bucket ID. Defaults to <code>{projectId}.firebasestorage.app</code>.</td></tr><tr><td align="left"><a id="cors"></a> <code>cors?</code></td><td align="left">{ <code>maxAgeSeconds?</code>: <code>number</code>; <code>method</code>: <code>string</code>[]; <code>origin</code>: <code>string</code>[]; <code>responseHeader?</code>: <code>string</code>[]; }[]</td><td align="left">CORS rules to apply to the bucket. Required for browser-side reads/writes from a non-Firebase origin. Omit to leave existing CORS untouched.</td></tr><tr><td align="left"><a id="locationid"></a> <code>locationId?</code></td><td align="left"><code>string</code></td><td align="left">Default GCP resources location to use when the project has not been finalized yet. IRREVERSIBLE once set. Common values: <code>us-central</code>, <code>nam5</code>, <code>eur3</code>. Default: <code>us-central</code>.</td></tr><tr><td align="left"><a id="rules"></a> <code>rules?</code></td><td align="left"><code>string</code></td><td align="left">Storage rules source to deploy after the bucket is linked. Optional; when omitted, whatever rules are currently released (possibly the deny-all default) stay in place.</td></tr></tbody></table></div>
|
|
593
|
+
<hr>
|
|
594
|
+
<p><a id="provisionstorageoptions"></a></p>
|
|
595
|
+
<h3 id="provisionstorageoptions">ProvisionStorageOptions</h3>
|
|
596
|
+
<h4 id="properties-11">Properties</h4>
|
|
597
|
+
<div class="table-scroll">
|
|
598
|
+
|
|
599
|
+
|
|
600
|
+
|
|
601
|
+
|
|
602
|
+
|
|
603
|
+
|
|
604
|
+
|
|
605
|
+
|
|
606
|
+
|
|
607
|
+
|
|
608
|
+
|
|
609
|
+
|
|
610
|
+
|
|
611
|
+
|
|
612
|
+
|
|
613
|
+
|
|
614
|
+
|
|
615
|
+
|
|
616
|
+
|
|
617
|
+
|
|
618
|
+
|
|
619
|
+
|
|
620
|
+
|
|
621
|
+
|
|
622
|
+
|
|
623
|
+
|
|
624
|
+
|
|
625
|
+
|
|
626
|
+
|
|
627
|
+
|
|
628
|
+
|
|
629
|
+
|
|
630
|
+
|
|
631
|
+
|
|
632
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="bucketid-2"></a> <code>bucketId?</code></td><td align="left"><code>string</code></td><td align="left">Override the default Firebase Storage bucket ID. Defaults to <code>{projectId}.firebasestorage.app</code> — the bucket Firebase Console creates automatically.</td></tr><tr><td align="left"><a id="cors-1"></a> <code>cors?</code></td><td align="left"><a href="#corsrule"><code>CorsRule</code></a>[]</td><td align="left">CORS rules to apply to the bucket after it’s linked. Required for browser-side reads/writes from a non-Firebase origin — buckets created via the Cloud Console (vs Firebase Console) often ship with no CORS configuration, which manifests as <code>No 'Access-Control-Allow-Origin' header</code> on the first <code>XMLHttpRequest</code> from a hosted page. Pass <code>defaultPlaygroundCors(origin)</code> for a sensible starter config, or a custom array. Omit to leave the bucket’s CORS alone.</td></tr><tr><td align="left"><a id="locationid-1"></a> <code>locationId?</code></td><td align="left"><code>string</code></td><td align="left">Default GCP resources location to use if the project hasn’t been finalized yet. Ignored when the location is already set. Default: <code>'us-central'</code>.</td></tr><tr><td align="left"><a id="onprogress"></a> <code>onProgress?</code></td><td align="left"><code>ProvisionProgress</code></td><td align="left">Optional progress callback, invoked at each provisioning step boundary.</td></tr><tr><td align="left"><a id="rules-1"></a> <code>rules?</code></td><td align="left"><code>string</code></td><td align="left">Storage rules source to deploy after the bucket is linked. When omitted, no rules are deployed (the project keeps whatever rules were last released — possibly the default deny-all).</td></tr></tbody></table></div>
|
|
633
|
+
<hr>
|
|
634
|
+
<p><a id="provisionstorageresult"></a></p>
|
|
635
|
+
<h3 id="provisionstorageresult">ProvisionStorageResult</h3>
|
|
636
|
+
<h4 id="properties-12">Properties</h4>
|
|
637
|
+
<div class="table-scroll">
|
|
638
|
+
|
|
639
|
+
|
|
640
|
+
|
|
641
|
+
|
|
642
|
+
|
|
643
|
+
|
|
644
|
+
|
|
645
|
+
|
|
646
|
+
|
|
647
|
+
|
|
648
|
+
|
|
649
|
+
|
|
650
|
+
|
|
651
|
+
|
|
652
|
+
|
|
653
|
+
|
|
654
|
+
|
|
655
|
+
|
|
656
|
+
|
|
657
|
+
|
|
658
|
+
|
|
659
|
+
|
|
660
|
+
|
|
661
|
+
|
|
662
|
+
|
|
663
|
+
|
|
664
|
+
|
|
665
|
+
|
|
666
|
+
|
|
667
|
+
|
|
668
|
+
|
|
669
|
+
|
|
670
|
+
|
|
671
|
+
|
|
672
|
+
|
|
673
|
+
|
|
674
|
+
|
|
675
|
+
|
|
676
|
+
|
|
677
|
+
|
|
678
|
+
|
|
679
|
+
|
|
680
|
+
|
|
681
|
+
|
|
682
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="bucketcreated"></a> <code>bucketCreated</code></td><td align="left"><code>boolean</code></td></tr><tr><td align="left"><a id="bucketid-3"></a> <code>bucketId</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="corsapplied"></a> <code>corsApplied</code></td><td align="left"><code>boolean</code></td></tr><tr><td align="left"><a id="locationfinalized"></a> <code>locationFinalized</code></td><td align="left"><code>boolean</code></td></tr><tr><td align="left"><a id="locationid-2"></a> <code>locationId</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="ok"></a> <code>ok</code></td><td align="left"><code>true</code></td></tr><tr><td align="left"><a id="rulesdeployed"></a> <code>rulesDeployed</code></td><td align="left"><code>boolean</code></td></tr><tr><td align="left"><a id="rulesetname"></a> <code>rulesetName?</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="serviceenabled"></a> <code>serviceEnabled</code></td><td align="left"><code>boolean</code></td></tr></tbody></table></div>
|
|
683
|
+
<hr>
|
|
684
|
+
<p><a id="sandboxtarget"></a></p>
|
|
685
|
+
<h3 id="sandboxtarget">SandboxTarget</h3>
|
|
686
|
+
<p>Sandbox target — IDB-backed, identity from <code>SandboxContext</code>, rules
|
|
687
|
+
enforced in-process via <code>enforce.ts</code>.</p>
|
|
688
|
+
<h4 id="properties-13">Properties</h4>
|
|
689
|
+
<div class="table-scroll">
|
|
690
|
+
|
|
691
|
+
|
|
692
|
+
|
|
693
|
+
|
|
694
|
+
|
|
695
|
+
|
|
696
|
+
|
|
697
|
+
|
|
698
|
+
|
|
699
|
+
|
|
700
|
+
|
|
701
|
+
|
|
702
|
+
|
|
703
|
+
|
|
704
|
+
|
|
705
|
+
|
|
706
|
+
|
|
707
|
+
|
|
708
|
+
|
|
709
|
+
|
|
710
|
+
|
|
711
|
+
|
|
712
|
+
|
|
713
|
+
|
|
714
|
+
|
|
715
|
+
|
|
716
|
+
|
|
717
|
+
|
|
718
|
+
|
|
719
|
+
|
|
720
|
+
|
|
721
|
+
|
|
722
|
+
|
|
723
|
+
|
|
724
|
+
|
|
725
|
+
|
|
726
|
+
|
|
727
|
+
|
|
728
|
+
|
|
729
|
+
|
|
730
|
+
|
|
731
|
+
|
|
732
|
+
|
|
733
|
+
|
|
734
|
+
|
|
735
|
+
|
|
736
|
+
|
|
737
|
+
|
|
738
|
+
|
|
739
|
+
|
|
740
|
+
|
|
741
|
+
|
|
742
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Modifier</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="admin"></a> <code>admin?</code></td><td align="left"><code>readonly</code></td><td align="left"><code>boolean</code></td><td align="left">Rules-bypass admin plane. <code>true</code> only on handles minted by the INTERNAL getAdminStorageSandbox factory (exported via <code>pyric/storage/internal</code>, never the public surface): operations on an admin handle skip rule evaluation entirely — the storage mirror of <code>getAdminFirestore</code> / <code>getAdminDatabase</code>. The public modular surface stays rules-honest; this exists so hosts (the SharedWorker’s <code>actAs: { mode: 'admin' }</code> lens) can serve firebase-admin semantics against the same shared store.</td></tr><tr><td align="left"><a id="bucket-1"></a> <code>bucket</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td><td align="left">-</td></tr><tr><td align="left"><a id="context"></a> <code>context</code></td><td align="left"><code>readonly</code></td><td align="left"><code>SandboxContext</code></td><td align="left">-</td></tr><tr><td align="left"><a id="currentauth"></a> <code>currentAuth?</code></td><td align="left"><code>readonly</code></td><td align="left">() => <code>AuthState</code></td><td align="left">App handles resolve auth at operation time; explicit contexts stay frozen.</td></tr><tr><td align="left"><a id="kind"></a> <code>kind</code></td><td align="left"><code>readonly</code></td><td align="left"><code>"sandbox"</code></td><td align="left">-</td></tr><tr><td align="left"><a id="sandbox"></a> <code>sandbox</code></td><td align="left"><code>readonly</code></td><td align="left"><code>Sandbox</code></td><td align="left">-</td></tr><tr><td align="left"><a id="servicepromise"></a> <code>servicePromise</code></td><td align="left"><code>readonly</code></td><td align="left"><code>Promise</code><<code>StorageService</code>></td><td align="left">-</td></tr></tbody></table></div>
|
|
743
|
+
<hr>
|
|
744
|
+
<p><a id="settablemetadata"></a></p>
|
|
745
|
+
<h3 id="settablemetadata">SettableMetadata</h3>
|
|
746
|
+
<p>Client-settable fields. Passed to <code>uploadBytes</code> /
|
|
747
|
+
<code>uploadString</code> / <code>updateMetadata</code>. Every field is optional — the
|
|
748
|
+
upload pipeline fills any unsupplied client fields with sane
|
|
749
|
+
defaults (e.g. <code>contentType</code> falls back to <code>application/octet-stream</code>).</p>
|
|
750
|
+
<h4 id="extended-by">Extended by</h4>
|
|
751
|
+
<ul>
|
|
752
|
+
<li><a href="#fullmetadata"><code>FullMetadata</code></a></li>
|
|
753
|
+
</ul>
|
|
754
|
+
<h4 id="properties-14">Properties</h4>
|
|
755
|
+
<div class="table-scroll">
|
|
756
|
+
|
|
757
|
+
|
|
758
|
+
|
|
759
|
+
|
|
760
|
+
|
|
761
|
+
|
|
762
|
+
|
|
763
|
+
|
|
764
|
+
|
|
765
|
+
|
|
766
|
+
|
|
767
|
+
|
|
768
|
+
|
|
769
|
+
|
|
770
|
+
|
|
771
|
+
|
|
772
|
+
|
|
773
|
+
|
|
774
|
+
|
|
775
|
+
|
|
776
|
+
|
|
777
|
+
|
|
778
|
+
|
|
779
|
+
|
|
780
|
+
|
|
781
|
+
|
|
782
|
+
|
|
783
|
+
|
|
784
|
+
|
|
785
|
+
|
|
786
|
+
|
|
787
|
+
|
|
788
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="cachecontrol-1"></a> <code>cacheControl?</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="contentdisposition-1"></a> <code>contentDisposition?</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="contentencoding-1"></a> <code>contentEncoding?</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="contentlanguage-1"></a> <code>contentLanguage?</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="contenttype-1"></a> <code>contentType?</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="custommetadata-1"></a> <code>customMetadata?</code></td><td align="left">{ [<code>key</code>: <code>string</code>]: <code>string</code>; }</td></tr></tbody></table></div>
|
|
789
|
+
<hr>
|
|
790
|
+
<p><a id="storageadmintooldeps"></a></p>
|
|
791
|
+
<h3 id="storageadmintooldeps">StorageAdminToolDeps</h3>
|
|
792
|
+
<h4 id="properties-15">Properties</h4>
|
|
793
|
+
<div class="table-scroll">
|
|
794
|
+
|
|
795
|
+
|
|
796
|
+
|
|
797
|
+
|
|
798
|
+
|
|
799
|
+
|
|
800
|
+
|
|
801
|
+
|
|
802
|
+
|
|
803
|
+
|
|
804
|
+
|
|
805
|
+
|
|
806
|
+
|
|
807
|
+
|
|
808
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="scope"></a> <code>scope</code></td><td align="left"><code>ProjectScope</code></td><td align="left">Project identity + token resolver.</td></tr></tbody></table></div>
|
|
809
|
+
<hr>
|
|
810
|
+
<p><a id="storageauth"></a></p>
|
|
811
|
+
<h3 id="storageauth">StorageAuth</h3>
|
|
812
|
+
<p>Identity passed in with the request. <code>null</code> is anonymous.</p>
|
|
813
|
+
<h4 id="properties-16">Properties</h4>
|
|
814
|
+
<div class="table-scroll">
|
|
815
|
+
|
|
816
|
+
|
|
817
|
+
|
|
818
|
+
|
|
819
|
+
|
|
820
|
+
|
|
821
|
+
|
|
822
|
+
|
|
823
|
+
|
|
824
|
+
|
|
825
|
+
|
|
826
|
+
|
|
827
|
+
|
|
828
|
+
|
|
829
|
+
|
|
830
|
+
|
|
831
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="token"></a> <code>token?</code></td><td align="left"><code>Record</code><<code>string</code>, <code>unknown</code>></td></tr><tr><td align="left"><a id="uid"></a> <code>uid</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
832
|
+
<hr>
|
|
833
|
+
<p><a id="storageoptions"></a></p>
|
|
834
|
+
<h3 id="storageoptions">StorageOptions</h3>
|
|
835
|
+
<p>Options for <a href="#getstoragesandbox">getStorageSandbox</a>.</p>
|
|
836
|
+
<h4 id="properties-17">Properties</h4>
|
|
837
|
+
<div class="table-scroll">
|
|
838
|
+
|
|
839
|
+
|
|
840
|
+
|
|
841
|
+
|
|
842
|
+
|
|
843
|
+
|
|
844
|
+
|
|
845
|
+
|
|
846
|
+
|
|
847
|
+
|
|
848
|
+
|
|
849
|
+
|
|
850
|
+
|
|
851
|
+
|
|
852
|
+
|
|
853
|
+
|
|
854
|
+
|
|
855
|
+
|
|
856
|
+
|
|
857
|
+
|
|
858
|
+
|
|
859
|
+
|
|
860
|
+
|
|
861
|
+
|
|
862
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="bucket-2"></a> <code>bucket?</code></td><td align="left"><code>string</code></td><td align="left">Bucket identifier recorded on uploaded metadata. v1 has a single implicit bucket and does not enforce cross-bucket isolation — passing different values per call is accepted and round-trips in metadata, but the data store is shared.</td></tr><tr><td align="left"><a id="dbname"></a> <code>dbName?</code></td><td align="left"><code>string</code></td><td align="left">Override the IndexedDB database name. Tests pass per-case unique names so state doesn’t leak between runs. Only takes effect on the FIRST call per <code>Sandbox</code>.</td></tr><tr><td align="left"><a id="rules-2"></a> <code>rules?</code></td><td align="left"><code>string</code></td><td align="left">Storage rules source. Parsed eagerly so a malformed string throws at config time. Only honored on the FIRST call per <code>Sandbox</code>.</td></tr></tbody></table></div>
|
|
863
|
+
<hr>
|
|
864
|
+
<p><a id="storagereference"></a></p>
|
|
865
|
+
<h3 id="storagereference">StorageReference</h3>
|
|
866
|
+
<p>Public reference shape. Methods are inherited from the impl
|
|
867
|
+
classes below; the interface is exported so consumer code can
|
|
868
|
+
name the type without depending on the impls.</p>
|
|
869
|
+
<h4 id="properties-18">Properties</h4>
|
|
870
|
+
<div class="table-scroll">
|
|
871
|
+
|
|
872
|
+
|
|
873
|
+
|
|
874
|
+
|
|
875
|
+
|
|
876
|
+
|
|
877
|
+
|
|
878
|
+
|
|
879
|
+
|
|
880
|
+
|
|
881
|
+
|
|
882
|
+
|
|
883
|
+
|
|
884
|
+
|
|
885
|
+
|
|
886
|
+
|
|
887
|
+
|
|
888
|
+
|
|
889
|
+
|
|
890
|
+
|
|
891
|
+
|
|
892
|
+
|
|
893
|
+
|
|
894
|
+
|
|
895
|
+
|
|
896
|
+
|
|
897
|
+
|
|
898
|
+
|
|
899
|
+
|
|
900
|
+
|
|
901
|
+
|
|
902
|
+
|
|
903
|
+
|
|
904
|
+
|
|
905
|
+
|
|
906
|
+
|
|
907
|
+
|
|
908
|
+
|
|
909
|
+
|
|
910
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Modifier</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="bucket-3"></a> <code>bucket</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="fullpath-1"></a> <code>fullPath</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="name-2"></a> <code>name</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="parent"></a> <code>parent</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#storagereference"><code>StorageReference</code></a></td></tr><tr><td align="left"><a id="root"></a> <code>root</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#storagereference"><code>StorageReference</code></a></td></tr><tr><td align="left"><a id="storage"></a> <code>storage</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#firebasestorage"><code>FirebaseStorage</code></a></td></tr></tbody></table></div>
|
|
911
|
+
<h4 id="methods-3">Methods</h4>
|
|
912
|
+
<p><a id="tostring"></a></p>
|
|
913
|
+
<h5 id="tostring">toString()</h5>
|
|
914
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">toString</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
915
|
+
<h6 id="returns-8">Returns</h6>
|
|
916
|
+
<p><code>string</code></p>
|
|
917
|
+
<hr>
|
|
918
|
+
<p><a id="storagerequest"></a></p>
|
|
919
|
+
<h3 id="storagerequest">StorageRequest</h3>
|
|
920
|
+
<p>Inbound request bindings the rules see.</p>
|
|
921
|
+
<h4 id="properties-19">Properties</h4>
|
|
922
|
+
<div class="table-scroll">
|
|
923
|
+
|
|
924
|
+
|
|
925
|
+
|
|
926
|
+
|
|
927
|
+
|
|
928
|
+
|
|
929
|
+
|
|
930
|
+
|
|
931
|
+
|
|
932
|
+
|
|
933
|
+
|
|
934
|
+
|
|
935
|
+
|
|
936
|
+
|
|
937
|
+
|
|
938
|
+
|
|
939
|
+
|
|
940
|
+
|
|
941
|
+
|
|
942
|
+
|
|
943
|
+
|
|
944
|
+
|
|
945
|
+
|
|
946
|
+
|
|
947
|
+
|
|
948
|
+
|
|
949
|
+
|
|
950
|
+
|
|
951
|
+
|
|
952
|
+
|
|
953
|
+
|
|
954
|
+
|
|
955
|
+
|
|
956
|
+
|
|
957
|
+
|
|
958
|
+
|
|
959
|
+
|
|
960
|
+
|
|
961
|
+
|
|
962
|
+
|
|
963
|
+
|
|
964
|
+
|
|
965
|
+
|
|
966
|
+
|
|
967
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="auth"></a> <code>auth</code></td><td align="left"><a href="#storageauth"><code>StorageAuth</code></a></td><td align="left">-</td></tr><tr><td align="left"><a id="method-1"></a> <code>method</code></td><td align="left"><a href="#storagerequestmethod-1"><code>StorageRequestMethod</code></a></td><td align="left">-</td></tr><tr><td align="left"><a id="path"></a> <code>path</code></td><td align="left"><code>string</code></td><td align="left">Path of the object the request targets.</td></tr><tr><td align="left"><a id="resource-1"></a> <code>resource?</code></td><td align="left">{ <code>contentType?</code>: <code>string</code>; <code>metadata?</code>: <code>Record</code><<code>string</code>, <code>string</code>>; <code>size</code>: <code>number</code>; }</td><td align="left">Per-Firebase: on writes, <code>request.resource</code> describes the about-to-write object. Omit for reads (the rules language treats <code>request.resource</code> as unset there).</td></tr><tr><td align="left"><code>resource.contentType?</code></td><td align="left"><code>string</code></td><td align="left">-</td></tr><tr><td align="left"><code>resource.metadata?</code></td><td align="left"><code>Record</code><<code>string</code>, <code>string</code>></td><td align="left">-</td></tr><tr><td align="left"><code>resource.size</code></td><td align="left"><code>number</code></td><td align="left">-</td></tr></tbody></table></div>
|
|
968
|
+
<hr>
|
|
969
|
+
<p><a id="storageresource"></a></p>
|
|
970
|
+
<h3 id="storageresource">StorageResource</h3>
|
|
971
|
+
<p>Existing-object bindings (for <code>resource.*</code>). <code>null</code> when no object exists
|
|
972
|
+
yet (creates).</p>
|
|
973
|
+
<p>The object-identity/time fields carry GOOGLE CLOUD STORAGE semantics, not
|
|
974
|
+
the client SDK’s <code>FullMetadata</code> semantics — the two disagree on <code>name</code>:</p>
|
|
975
|
+
<ul>
|
|
976
|
+
<li>rules <code>resource.name</code> is the object’s FULL path within the bucket
|
|
977
|
+
(<code>uploads/pic.png</code>), the GCS object-name convention. The client SDK’s
|
|
978
|
+
<code>FullMetadata.name</code> is the LAST path segment (<code>pic.png</code>). The adapter
|
|
979
|
+
(<code>resourceFromStored</code>) therefore sources <code>name</code> from the persisted
|
|
980
|
+
record’s <code>fullPath</code>, NOT its <code>name</code>.</li>
|
|
981
|
+
<li><code>timeCreated</code> / <code>updated</code> are ISO-8601 strings here (the persisted
|
|
982
|
+
shape); the evaluator converts them to epoch millis when it builds the
|
|
983
|
+
binding, so they compare numerically against <code>request.time</code> and against
|
|
984
|
+
each other. Production types them as <code>timestamp</code> and rejects an int in
|
|
985
|
+
their place (“Received: int < timestamp”).</li>
|
|
986
|
+
<li>The update-time field is <code>updated</code>. There is NO <code>resource.timeUpdated</code>
|
|
987
|
+
in the Storage rules language.</li>
|
|
988
|
+
</ul>
|
|
989
|
+
<p>A field left <code>undefined</code> reads as ABSENT, which production treats as an
|
|
990
|
+
evaluation error that denies (see RuleError).</p>
|
|
991
|
+
<h4 id="properties-20">Properties</h4>
|
|
992
|
+
<div class="table-scroll">
|
|
993
|
+
|
|
994
|
+
|
|
995
|
+
|
|
996
|
+
|
|
997
|
+
|
|
998
|
+
|
|
999
|
+
|
|
1000
|
+
|
|
1001
|
+
|
|
1002
|
+
|
|
1003
|
+
|
|
1004
|
+
|
|
1005
|
+
|
|
1006
|
+
|
|
1007
|
+
|
|
1008
|
+
|
|
1009
|
+
|
|
1010
|
+
|
|
1011
|
+
|
|
1012
|
+
|
|
1013
|
+
|
|
1014
|
+
|
|
1015
|
+
|
|
1016
|
+
|
|
1017
|
+
|
|
1018
|
+
|
|
1019
|
+
|
|
1020
|
+
|
|
1021
|
+
|
|
1022
|
+
|
|
1023
|
+
|
|
1024
|
+
|
|
1025
|
+
|
|
1026
|
+
|
|
1027
|
+
|
|
1028
|
+
|
|
1029
|
+
|
|
1030
|
+
|
|
1031
|
+
|
|
1032
|
+
|
|
1033
|
+
|
|
1034
|
+
|
|
1035
|
+
|
|
1036
|
+
|
|
1037
|
+
|
|
1038
|
+
|
|
1039
|
+
|
|
1040
|
+
|
|
1041
|
+
|
|
1042
|
+
|
|
1043
|
+
|
|
1044
|
+
|
|
1045
|
+
|
|
1046
|
+
|
|
1047
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="bucket-4"></a> <code>bucket?</code></td><td align="left"><code>string</code></td><td align="left">Bucket the object lives in.</td></tr><tr><td align="left"><a id="contenttype-2"></a> <code>contentType?</code></td><td align="left"><code>string</code></td><td align="left">-</td></tr><tr><td align="left"><a id="generation-1"></a> <code>generation?</code></td><td align="left"><code>number</code></td><td align="left">Content generation (production types it <code>int</code>).</td></tr><tr><td align="left"><a id="metadata"></a> <code>metadata?</code></td><td align="left"><code>Record</code><<code>string</code>, <code>string</code>></td><td align="left">-</td></tr><tr><td align="left"><a id="metageneration-1"></a> <code>metageneration?</code></td><td align="left"><code>number</code></td><td align="left">Metadata generation (production types it <code>int</code>).</td></tr><tr><td align="left"><a id="name-3"></a> <code>name?</code></td><td align="left"><code>string</code></td><td align="left">Full object path within the bucket, e.g. <code>uploads/pic.png</code>.</td></tr><tr><td align="left"><a id="size-1"></a> <code>size</code></td><td align="left"><code>number</code></td><td align="left">-</td></tr><tr><td align="left"><a id="timecreated-1"></a> <code>timeCreated?</code></td><td align="left"><code>string</code></td><td align="left">ISO-8601 creation time.</td></tr><tr><td align="left"><a id="updated-1"></a> <code>updated?</code></td><td align="left"><code>string</code></td><td align="left">ISO-8601 time of the most recent content/metadata update.</td></tr></tbody></table></div>
|
|
1048
|
+
<hr>
|
|
1049
|
+
<p><a id="storagerules"></a></p>
|
|
1050
|
+
<h3 id="storagerules">StorageRules</h3>
|
|
1051
|
+
<p>Opaque parsed-rules handle returned by <code>parseStorageRules</code>.</p>
|
|
1052
|
+
<hr>
|
|
1053
|
+
<p><a id="uploadresult"></a></p>
|
|
1054
|
+
<h3 id="uploadresult">UploadResult</h3>
|
|
1055
|
+
<p>Return shape of <code>uploadBytes</code> / <code>uploadString</code>.</p>
|
|
1056
|
+
<h4 id="properties-21">Properties</h4>
|
|
1057
|
+
<div class="table-scroll">
|
|
1058
|
+
|
|
1059
|
+
|
|
1060
|
+
|
|
1061
|
+
|
|
1062
|
+
|
|
1063
|
+
|
|
1064
|
+
|
|
1065
|
+
|
|
1066
|
+
|
|
1067
|
+
|
|
1068
|
+
|
|
1069
|
+
|
|
1070
|
+
|
|
1071
|
+
|
|
1072
|
+
|
|
1073
|
+
|
|
1074
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="metadata-1"></a> <code>metadata</code></td><td align="left"><a href="#fullmetadata"><code>FullMetadata</code></a></td></tr><tr><td align="left"><a id="ref"></a> <code>ref</code></td><td align="left"><a href="#storagereference"><code>StorageReference</code></a></td></tr></tbody></table></div>
|
|
1075
|
+
<h2 id="type-aliases">Type Aliases</h2>
|
|
1076
|
+
<p><a id="provisionstorageerrorcode"></a></p>
|
|
1077
|
+
<h3 id="provisionstorageerrorcode">ProvisionStorageErrorCode</h3>
|
|
1078
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> ProvisionStorageErrorCode</span><span style="color:#56B6C2"> =</span></span>
|
|
1079
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"PERMISSION_DENIED"</span></span>
|
|
1080
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"SERVICE_DISABLED"</span></span>
|
|
1081
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"LOCATION_FINALIZE_FAILED"</span></span>
|
|
1082
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"BUCKET_CREATE_FAILED"</span></span>
|
|
1083
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"RULES_DEPLOY_FAILED"</span></span>
|
|
1084
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"CORS_UPDATE_FAILED"</span></span>
|
|
1085
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"UNKNOWN"</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1086
|
+
<hr>
|
|
1087
|
+
<p><a id="provisionstorageoutcome"></a></p>
|
|
1088
|
+
<h3 id="provisionstorageoutcome">ProvisionStorageOutcome</h3>
|
|
1089
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> ProvisionStorageOutcome</span><span style="color:#56B6C2"> =</span></span>
|
|
1090
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1091
|
+
<span class="line"><span style="color:#E06C75"> bucketCreated</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">boolean</span><span style="color:#ABB2BF">;</span></span>
|
|
1092
|
+
<span class="line"><span style="color:#E06C75"> bucketId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1093
|
+
<span class="line"><span style="color:#E06C75"> corsApplied</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">boolean</span><span style="color:#ABB2BF">;</span></span>
|
|
1094
|
+
<span class="line"><span style="color:#E06C75"> locationFinalized</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">boolean</span><span style="color:#ABB2BF">;</span></span>
|
|
1095
|
+
<span class="line"><span style="color:#E06C75"> locationId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">null</span><span style="color:#ABB2BF">;</span></span>
|
|
1096
|
+
<span class="line"><span style="color:#E06C75"> rulesDeployed</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">boolean</span><span style="color:#ABB2BF">;</span></span>
|
|
1097
|
+
<span class="line"><span style="color:#E06C75"> rulesetName</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1098
|
+
<span class="line"><span style="color:#E06C75"> serviceEnabled</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">boolean</span><span style="color:#ABB2BF">;</span></span>
|
|
1099
|
+
<span class="line"><span style="color:#E06C75"> success</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">true</span><span style="color:#ABB2BF">;</span></span>
|
|
1100
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span>
|
|
1101
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1102
|
+
<span class="line"><span style="color:#E06C75"> error</span><span style="color:#ABB2BF">: {</span></span>
|
|
1103
|
+
<span class="line"><span style="color:#E06C75"> code</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ProvisionStorageErrorCode</span><span style="color:#ABB2BF">;</span></span>
|
|
1104
|
+
<span class="line"><span style="color:#E06C75"> message</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1105
|
+
<span class="line"><span style="color:#E06C75"> recoverable</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">boolean</span><span style="color:#ABB2BF">;</span></span>
|
|
1106
|
+
<span class="line"><span style="color:#ABB2BF"> };</span></span>
|
|
1107
|
+
<span class="line"><span style="color:#E06C75"> success</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">false</span><span style="color:#ABB2BF">;</span></span>
|
|
1108
|
+
<span class="line"><span style="color:#ABB2BF">};</span></span></code></pre>
|
|
1109
|
+
<hr>
|
|
1110
|
+
<p><a id="serviceenablestate"></a></p>
|
|
1111
|
+
<h3 id="serviceenablestate">ServiceEnableState</h3>
|
|
1112
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> ServiceEnableState</span><span style="color:#56B6C2"> =</span><span style="color:#98C379"> "enabled"</span><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"disabled"</span><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"unknown"</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1113
|
+
<hr>
|
|
1114
|
+
<p><a id="storageerrorcode-1"></a></p>
|
|
1115
|
+
<h3 id="storageerrorcode">StorageErrorCode</h3>
|
|
1116
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> StorageErrorCode</span><span style="color:#56B6C2"> =</span></span>
|
|
1117
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"unknown"</span></span>
|
|
1118
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"object-not-found"</span></span>
|
|
1119
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"quota-exceeded"</span></span>
|
|
1120
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"unauthenticated"</span></span>
|
|
1121
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"unauthorized"</span></span>
|
|
1122
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"invalid-root-operation"</span></span>
|
|
1123
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"invalid-format"</span></span>
|
|
1124
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"invalid-argument"</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1125
|
+
<p>The unprefixed storage error codes the sandbox can raise. Mirrors
|
|
1126
|
+
the subset of <code>StorageErrorCode</code> the implemented operations use;
|
|
1127
|
+
resumable uploads and checksums remain out of scope.</p>
|
|
1128
|
+
<hr>
|
|
1129
|
+
<p><a id="storagegrantverb"></a></p>
|
|
1130
|
+
<h3 id="storagegrantverb">StorageGrantVerb</h3>
|
|
1131
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> StorageGrantVerb</span><span style="color:#56B6C2"> =</span><span style="color:#E5C07B"> StorageMethod</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">StorageVerb</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1132
|
+
<p>A verb token that may appear in an <code>allow</code> clause.</p>
|
|
1133
|
+
<hr>
|
|
1134
|
+
<p><a id="storagemethod"></a></p>
|
|
1135
|
+
<h3 id="storagemethod">StorageMethod</h3>
|
|
1136
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> StorageMethod</span><span style="color:#56B6C2"> =</span><span style="color:#98C379"> "read"</span><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"write"</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1137
|
+
<p>Coarse permission umbrellas. <code>read</code> covers get + list; <code>write</code>
|
|
1138
|
+
covers create + update + delete.</p>
|
|
1139
|
+
<hr>
|
|
1140
|
+
<p><a id="storagerequestmethod-1"></a></p>
|
|
1141
|
+
<h3 id="storagerequestmethod">StorageRequestMethod</h3>
|
|
1142
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> StorageRequestMethod</span><span style="color:#56B6C2"> =</span><span style="color:#E5C07B"> StorageMethod</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">StorageVerb</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1143
|
+
<p>What a caller records as the request’s operation. Callers pass the
|
|
1144
|
+
precise granular verb; the coarse forms remain accepted so the
|
|
1145
|
+
umbrella semantics are symmetric.</p>
|
|
1146
|
+
<hr>
|
|
1147
|
+
<p><a id="storageverb"></a></p>
|
|
1148
|
+
<h3 id="storageverb">StorageVerb</h3>
|
|
1149
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> StorageVerb</span><span style="color:#56B6C2"> =</span><span style="color:#98C379"> "get"</span><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"list"</span><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"create"</span><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"update"</span><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"delete"</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1150
|
+
<p>Granular operation verbs. Production Storage maps each operation to
|
|
1151
|
+
exactly one of these:
|
|
1152
|
+
download / getMetadata → get
|
|
1153
|
+
list → list
|
|
1154
|
+
upload to NONEXISTENT path → create
|
|
1155
|
+
upload / updateMetadata over
|
|
1156
|
+
an EXISTING object → update
|
|
1157
|
+
delete → delete</p>
|
|
1158
|
+
<hr>
|
|
1159
|
+
<p><a id="stringformat"></a></p>
|
|
1160
|
+
<h3 id="stringformat">StringFormat</h3>
|
|
1161
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> StringFormat</span><span style="color:#56B6C2"> =</span><span style="color:#98C379"> "raw"</span><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"base64"</span><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"data_url"</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1162
|
+
<p><code>uploadString</code> format selector.</p>
|
|
1163
|
+
<hr>
|
|
1164
|
+
<p><a id="target"></a></p>
|
|
1165
|
+
<h3 id="target">Target</h3>
|
|
1166
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> Target</span><span style="color:#56B6C2"> =</span><span style="color:#E5C07B"> SandboxTarget</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1167
|
+
<h2 id="variables">Variables</h2>
|
|
1168
|
+
<p><a id="target_symbol-1"></a></p>
|
|
1169
|
+
<h3 id="target_symbol">TARGET_SYMBOL</h3>
|
|
1170
|
+
<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"> TARGET_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>
|
|
1171
|
+
<p>Hidden property on every <a href="#firebasestorage">FirebaseStorage</a> handle. Carries
|
|
1172
|
+
the sandbox state free functions share without exposing it publicly.</p>
|
|
1173
|
+
<h2 id="functions">Functions</h2>
|
|
1174
|
+
<p><a id="addfirebasetobucket"></a></p>
|
|
1175
|
+
<h3 id="addfirebasetobucket">addFirebaseToBucket()</h3>
|
|
1176
|
+
<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"> addFirebaseToBucket</span><span style="color:#ABB2BF">(</span></span>
|
|
1177
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> accessToken</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
|
|
1178
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> projectId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
|
|
1179
|
+
<span class="line"><span style="color:#E06C75;font-style:italic">bucketId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">FirebaseStorageBucket</span><span style="color:#ABB2BF">>;</span></span></code></pre>
|
|
1180
|
+
<p>Link a Cloud Storage bucket to Firebase Storage. Idempotent — if
|
|
1181
|
+
the bucket is already Firebase-linked, the API returns 200 with
|
|
1182
|
+
the existing record. The bucket must already exist as a GCS
|
|
1183
|
+
resource; for the default Firebase bucket name
|
|
1184
|
+
(<code>{projectId}.firebasestorage.app</code>), Firebase auto-creates it on
|
|
1185
|
+
first <code>:addFirebase</code> call.</p>
|
|
1186
|
+
<h4 id="parameters-6">Parameters</h4>
|
|
1187
|
+
<div class="table-scroll">
|
|
1188
|
+
|
|
1189
|
+
|
|
1190
|
+
|
|
1191
|
+
|
|
1192
|
+
|
|
1193
|
+
|
|
1194
|
+
|
|
1195
|
+
|
|
1196
|
+
|
|
1197
|
+
|
|
1198
|
+
|
|
1199
|
+
|
|
1200
|
+
|
|
1201
|
+
|
|
1202
|
+
|
|
1203
|
+
|
|
1204
|
+
|
|
1205
|
+
|
|
1206
|
+
|
|
1207
|
+
|
|
1208
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>accessToken</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>projectId</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>bucketId</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
1209
|
+
<h4 id="returns-9">Returns</h4>
|
|
1210
|
+
<p><code>Promise</code><<a href="#firebasestoragebucket"><code>FirebaseStorageBucket</code></a>></p>
|
|
1211
|
+
<hr>
|
|
1212
|
+
<p><a id="connectstorageemulator"></a></p>
|
|
1213
|
+
<h3 id="connectstorageemulator">connectStorageEmulator()</h3>
|
|
1214
|
+
<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"> connectStorageEmulator</span><span style="color:#ABB2BF">(</span></span>
|
|
1215
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> _storage</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FirebaseStorage</span><span style="color:#ABB2BF">,</span></span>
|
|
1216
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> _host</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
|
|
1217
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> _port</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">,</span></span>
|
|
1218
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> _options</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: {</span></span>
|
|
1219
|
+
<span class="line"><span style="color:#E06C75"> mockUserToken</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">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>
|
|
1220
|
+
<span class="line"><span style="color:#ABB2BF">}): </span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1221
|
+
<p>Accepted no-op because the selected Storage backend already is local.</p>
|
|
1222
|
+
<h4 id="parameters-7">Parameters</h4>
|
|
1223
|
+
<div class="table-scroll">
|
|
1224
|
+
|
|
1225
|
+
|
|
1226
|
+
|
|
1227
|
+
|
|
1228
|
+
|
|
1229
|
+
|
|
1230
|
+
|
|
1231
|
+
|
|
1232
|
+
|
|
1233
|
+
|
|
1234
|
+
|
|
1235
|
+
|
|
1236
|
+
|
|
1237
|
+
|
|
1238
|
+
|
|
1239
|
+
|
|
1240
|
+
|
|
1241
|
+
|
|
1242
|
+
|
|
1243
|
+
|
|
1244
|
+
|
|
1245
|
+
|
|
1246
|
+
|
|
1247
|
+
|
|
1248
|
+
|
|
1249
|
+
|
|
1250
|
+
|
|
1251
|
+
|
|
1252
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>_storage</code></td><td align="left"><a href="#firebasestorage"><code>FirebaseStorage</code></a></td></tr><tr><td align="left"><code>_host</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>_port</code></td><td align="left"><code>number</code></td></tr><tr><td align="left"><code>_options?</code></td><td align="left">{ <code>mockUserToken?</code>: <code>string</code> | <code>Record</code><<code>string</code>, <code>unknown</code>>; }</td></tr><tr><td align="left"><code>_options.mockUserToken?</code></td><td align="left"><code>string</code> | <code>Record</code><<code>string</code>, <code>unknown</code>></td></tr></tbody></table></div>
|
|
1253
|
+
<h4 id="returns-10">Returns</h4>
|
|
1254
|
+
<p><code>void</code></p>
|
|
1255
|
+
<hr>
|
|
1256
|
+
<p><a id="createstorageadmintools"></a></p>
|
|
1257
|
+
<h3 id="createstorageadmintools">createStorageAdminTools()</h3>
|
|
1258
|
+
<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"> createStorageAdminTools</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">deps</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StorageAdminToolDeps</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">ToolHandler</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">>[];</span></span></code></pre>
|
|
1259
|
+
<p>Bundles:</p>
|
|
1260
|
+
<ul>
|
|
1261
|
+
<li><code>storage_get_status</code></li>
|
|
1262
|
+
<li><code>storage_provision</code></li>
|
|
1263
|
+
</ul>
|
|
1264
|
+
<h4 id="parameters-8">Parameters</h4>
|
|
1265
|
+
<div class="table-scroll">
|
|
1266
|
+
|
|
1267
|
+
|
|
1268
|
+
|
|
1269
|
+
|
|
1270
|
+
|
|
1271
|
+
|
|
1272
|
+
|
|
1273
|
+
|
|
1274
|
+
|
|
1275
|
+
|
|
1276
|
+
|
|
1277
|
+
|
|
1278
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>deps</code></td><td align="left"><a href="#storageadmintooldeps"><code>StorageAdminToolDeps</code></a></td></tr></tbody></table></div>
|
|
1279
|
+
<h4 id="returns-11">Returns</h4>
|
|
1280
|
+
<p><code>ToolHandler</code><<code>unknown</code>, <code>unknown</code>>[]</p>
|
|
1281
|
+
<hr>
|
|
1282
|
+
<p><a id="defaultplaygroundcors"></a></p>
|
|
1283
|
+
<h3 id="defaultplaygroundcors">defaultPlaygroundCors()</h3>
|
|
1284
|
+
<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"> defaultPlaygroundCors</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">hostingOrigin</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">CorsRule</span><span style="color:#ABB2BF">[];</span></span></code></pre>
|
|
1285
|
+
<p>Default rule for a browser playground hosted on Firebase Hosting.
|
|
1286
|
+
Allows GET/POST/PUT/DELETE/HEAD/OPTIONS from the Hosting origin</p>
|
|
1287
|
+
<ul>
|
|
1288
|
+
<li>common localhost dev ports, with response headers needed by the
|
|
1289
|
+
Firebase Storage Web SDK.</li>
|
|
1290
|
+
</ul>
|
|
1291
|
+
<h4 id="parameters-9">Parameters</h4>
|
|
1292
|
+
<div class="table-scroll">
|
|
1293
|
+
|
|
1294
|
+
|
|
1295
|
+
|
|
1296
|
+
|
|
1297
|
+
|
|
1298
|
+
|
|
1299
|
+
|
|
1300
|
+
|
|
1301
|
+
|
|
1302
|
+
|
|
1303
|
+
|
|
1304
|
+
|
|
1305
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>hostingOrigin</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
1306
|
+
<h4 id="returns-12">Returns</h4>
|
|
1307
|
+
<p><a href="#corsrule"><code>CorsRule</code></a>[]</p>
|
|
1308
|
+
<hr>
|
|
1309
|
+
<p><a id="deleteobject"></a></p>
|
|
1310
|
+
<h3 id="deleteobject">deleteObject()</h3>
|
|
1311
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> deleteObject</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StorageReference</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">provenance</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">EventProvenance</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>
|
|
1312
|
+
<p>Delete the object at <code>ref</code> — removes both the blob and the
|
|
1313
|
+
metadata atomically. No-op when the path doesn’t exist (the
|
|
1314
|
+
persistence layer’s <code>delete</code> is no-op on missing keys).</p>
|
|
1315
|
+
<p>NOTE: the JS SDK’s <code>deleteObject</code> throws
|
|
1316
|
+
<code>storage/object-not-found</code> when the path is missing. The v1 scope
|
|
1317
|
+
keeps the persistence-layer no-op behavior for now; Slice 8 will
|
|
1318
|
+
reconsider whether to mirror the strict throw.</p>
|
|
1319
|
+
<p><code>provenance</code> (host-only): op EventProvenance bound at ISSUE time,
|
|
1320
|
+
threaded EXPLICITLY onto the emitted <code>object_delete</code> event. The delete
|
|
1321
|
+
awaits the backend before emitting, so it escapes the sandbox’s
|
|
1322
|
+
synchronous ambient-provenance window — see the note on <code>uploadBytes</code>.</p>
|
|
1323
|
+
<h4 id="parameters-10">Parameters</h4>
|
|
1324
|
+
<div class="table-scroll">
|
|
1325
|
+
|
|
1326
|
+
|
|
1327
|
+
|
|
1328
|
+
|
|
1329
|
+
|
|
1330
|
+
|
|
1331
|
+
|
|
1332
|
+
|
|
1333
|
+
|
|
1334
|
+
|
|
1335
|
+
|
|
1336
|
+
|
|
1337
|
+
|
|
1338
|
+
|
|
1339
|
+
|
|
1340
|
+
|
|
1341
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>ref</code></td><td align="left"><a href="#storagereference"><code>StorageReference</code></a></td></tr><tr><td align="left"><code>provenance?</code></td><td align="left"><code>EventProvenance</code></td></tr></tbody></table></div>
|
|
1342
|
+
<h4 id="returns-13">Returns</h4>
|
|
1343
|
+
<p><code>Promise</code><<code>void</code>></p>
|
|
1344
|
+
<hr>
|
|
1345
|
+
<p><a id="deploystoragerules"></a></p>
|
|
1346
|
+
<h3 id="deploystoragerules">deployStorageRules()</h3>
|
|
1347
|
+
<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"> deployStorageRules</span><span style="color:#ABB2BF">(</span></span>
|
|
1348
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> accessToken</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
|
|
1349
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> projectId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
|
|
1350
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> source</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
|
|
1351
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> bucketId</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">Promise</span><span style="color:#ABB2BF"><{</span></span>
|
|
1352
|
+
<span class="line"><span style="color:#E06C75"> rulesetName</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1353
|
+
<span class="line"><span style="color:#ABB2BF">}>;</span></span></code></pre>
|
|
1354
|
+
<p>Deploy a Storage rules source for a specific bucket. Firebase
|
|
1355
|
+
Storage uses <strong>per-bucket</strong> release names —
|
|
1356
|
+
<code>projects/{p}/releases/firebase.storage/{bucketId}</code> — for actual
|
|
1357
|
+
rule application. The project-wide <code>firebase.storage</code> release
|
|
1358
|
+
exists as a legacy alias but isn’t bound to any bucket in modern
|
|
1359
|
+
projects; deploying to it leaves the bucket’s deny-all rule
|
|
1360
|
+
unchanged.</p>
|
|
1361
|
+
<p>Defaults <code>bucketId</code> to <code>{projectId}.firebasestorage.app</code> (the
|
|
1362
|
+
Firebase default bucket name). Pass an override when targeting a
|
|
1363
|
+
non-default bucket.</p>
|
|
1364
|
+
<h4 id="parameters-11">Parameters</h4>
|
|
1365
|
+
<div class="table-scroll">
|
|
1366
|
+
|
|
1367
|
+
|
|
1368
|
+
|
|
1369
|
+
|
|
1370
|
+
|
|
1371
|
+
|
|
1372
|
+
|
|
1373
|
+
|
|
1374
|
+
|
|
1375
|
+
|
|
1376
|
+
|
|
1377
|
+
|
|
1378
|
+
|
|
1379
|
+
|
|
1380
|
+
|
|
1381
|
+
|
|
1382
|
+
|
|
1383
|
+
|
|
1384
|
+
|
|
1385
|
+
|
|
1386
|
+
|
|
1387
|
+
|
|
1388
|
+
|
|
1389
|
+
|
|
1390
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>accessToken</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>projectId</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>source</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>bucketId?</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
1391
|
+
<h4 id="returns-14">Returns</h4>
|
|
1392
|
+
<p><code>Promise</code><{
|
|
1393
|
+
<code>rulesetName</code>: <code>string</code>;
|
|
1394
|
+
}></p>
|
|
1395
|
+
<hr>
|
|
1396
|
+
<p><a id="enablestorageservice"></a></p>
|
|
1397
|
+
<h3 id="enablestorageservice">enableStorageService()</h3>
|
|
1398
|
+
<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"> enableStorageService</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">accessToken</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">projectId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">>;</span></span></code></pre>
|
|
1399
|
+
<p>Enable <code>firebasestorage.googleapis.com</code> on the project. Requires
|
|
1400
|
+
<code>serviceusage.services.enable</code> IAM permission — included in
|
|
1401
|
+
<code>roles/owner</code>, <code>roles/editor</code> (deprecated), or
|
|
1402
|
+
<code>roles/serviceusage.serviceUsageAdmin</code>. The default Firebase Admin
|
|
1403
|
+
SDK service account does NOT have this; the caller’s token must
|
|
1404
|
+
either be a user-OAuth with <code>cloud-platform</code> scope or a SA with
|
|
1405
|
+
the elevated role.</p>
|
|
1406
|
+
<p>Long-running operation under the hood; the response carries an
|
|
1407
|
+
operation name. We don’t poll — the response 200 is enough signal
|
|
1408
|
+
for our purposes, and a brief settle delay handles propagation.</p>
|
|
1409
|
+
<h4 id="parameters-12">Parameters</h4>
|
|
1410
|
+
<div class="table-scroll">
|
|
1411
|
+
|
|
1412
|
+
|
|
1413
|
+
|
|
1414
|
+
|
|
1415
|
+
|
|
1416
|
+
|
|
1417
|
+
|
|
1418
|
+
|
|
1419
|
+
|
|
1420
|
+
|
|
1421
|
+
|
|
1422
|
+
|
|
1423
|
+
|
|
1424
|
+
|
|
1425
|
+
|
|
1426
|
+
|
|
1427
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>accessToken</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>projectId</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
1428
|
+
<h4 id="returns-15">Returns</h4>
|
|
1429
|
+
<p><code>Promise</code><<code>void</code>></p>
|
|
1430
|
+
<hr>
|
|
1431
|
+
<p><a id="evaluatestoragerules"></a></p>
|
|
1432
|
+
<h3 id="evaluatestoragerules">evaluateStorageRules()</h3>
|
|
1433
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> evaluateStorageRules</span><span style="color:#ABB2BF">(</span></span>
|
|
1434
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> rules</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StorageRules</span><span style="color:#ABB2BF">,</span></span>
|
|
1435
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> input</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">EvaluationInput</span><span style="color:#ABB2BF">,</span></span>
|
|
1436
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> now</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Date</span><span style="color:#ABB2BF">,</span></span>
|
|
1437
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> firestoreLookup</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FirestoreLookup</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">EvaluationResult</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1438
|
+
<p>Evaluate the rules against a request + resource binding. Returns
|
|
1439
|
+
<code>{ allowed, reasons }</code>. <code>allowed</code> is true iff any <code>allow</code> clause
|
|
1440
|
+
at any matching match block evaluates to a truthy condition.</p>
|
|
1441
|
+
<p>Path-matching strategy: the request’s path is segmented and
|
|
1442
|
+
walked against the AST’s match tree. Wildcards (<code>{p=**}</code>) match
|
|
1443
|
+
zero or more remaining segments; named params bind one segment.</p>
|
|
1444
|
+
<p>Multi-clause failure mode: when no clause matches, <code>reasons</code>
|
|
1445
|
+
contains a short trace (“no match found for path X” or “rule at
|
|
1446
|
+
match /sessions/{id} denied: condition false”). Helpful for the
|
|
1447
|
+
playground’s error surface.</p>
|
|
1448
|
+
<h4 id="parameters-13">Parameters</h4>
|
|
1449
|
+
<div class="table-scroll">
|
|
1450
|
+
|
|
1451
|
+
|
|
1452
|
+
|
|
1453
|
+
|
|
1454
|
+
|
|
1455
|
+
|
|
1456
|
+
|
|
1457
|
+
|
|
1458
|
+
|
|
1459
|
+
|
|
1460
|
+
|
|
1461
|
+
|
|
1462
|
+
|
|
1463
|
+
|
|
1464
|
+
|
|
1465
|
+
|
|
1466
|
+
|
|
1467
|
+
|
|
1468
|
+
|
|
1469
|
+
|
|
1470
|
+
|
|
1471
|
+
|
|
1472
|
+
|
|
1473
|
+
|
|
1474
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>rules</code></td><td align="left"><a href="#storagerules"><code>StorageRules</code></a></td></tr><tr><td align="left"><code>input</code></td><td align="left"><a href="#evaluationinput"><code>EvaluationInput</code></a></td></tr><tr><td align="left"><code>now?</code></td><td align="left"><code>Date</code></td></tr><tr><td align="left"><code>firestoreLookup?</code></td><td align="left"><a href="#firestorelookup"><code>FirestoreLookup</code></a></td></tr></tbody></table></div>
|
|
1475
|
+
<h4 id="returns-16">Returns</h4>
|
|
1476
|
+
<p><a href="#evaluationresult"><code>EvaluationResult</code></a></p>
|
|
1477
|
+
<hr>
|
|
1478
|
+
<p><a id="finalizedefaultlocation"></a></p>
|
|
1479
|
+
<h3 id="finalizedefaultlocation">finalizeDefaultLocation()</h3>
|
|
1480
|
+
<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"> finalizeDefaultLocation</span><span style="color:#ABB2BF">(</span></span>
|
|
1481
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> accessToken</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
|
|
1482
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> projectId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
|
|
1483
|
+
<span class="line"><span style="color:#E06C75;font-style:italic">locationId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">>;</span></span></code></pre>
|
|
1484
|
+
<p>Set the project’s default GCP resources location. IRREVERSIBLE —
|
|
1485
|
+
once set, the location cannot be changed. Skip-if-set is the
|
|
1486
|
+
caller’s job; this function unconditionally calls <code>:finalize</code>.</p>
|
|
1487
|
+
<p>Per observed behavior, <code>:finalize</code> 404s on projects that already
|
|
1488
|
+
have resources provisioned (RTDB, Hosting) without a default
|
|
1489
|
+
location. The error path surfaces that to the caller.</p>
|
|
1490
|
+
<h4 id="parameters-14">Parameters</h4>
|
|
1491
|
+
<div class="table-scroll">
|
|
1492
|
+
|
|
1493
|
+
|
|
1494
|
+
|
|
1495
|
+
|
|
1496
|
+
|
|
1497
|
+
|
|
1498
|
+
|
|
1499
|
+
|
|
1500
|
+
|
|
1501
|
+
|
|
1502
|
+
|
|
1503
|
+
|
|
1504
|
+
|
|
1505
|
+
|
|
1506
|
+
|
|
1507
|
+
|
|
1508
|
+
|
|
1509
|
+
|
|
1510
|
+
|
|
1511
|
+
|
|
1512
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>accessToken</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>projectId</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>locationId</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
1513
|
+
<h4 id="returns-17">Returns</h4>
|
|
1514
|
+
<p><code>Promise</code><<code>void</code>></p>
|
|
1515
|
+
<hr>
|
|
1516
|
+
<p><a id="getblob"></a></p>
|
|
1517
|
+
<h3 id="getblob">getBlob()</h3>
|
|
1518
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> getBlob</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StorageReference</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">maxDownloadSizeBytes</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">Blob</span><span style="color:#ABB2BF">>;</span></span></code></pre>
|
|
1519
|
+
<p>Read the blob at <code>ref</code> and return it as a <code>Blob</code>. Same semantics
|
|
1520
|
+
as <code>getBytes</code> but skips the <code>arrayBuffer()</code> conversion when the
|
|
1521
|
+
caller wants a <code>Blob</code> directly (e.g. for streaming or
|
|
1522
|
+
<code>URL.createObjectURL</code>). Note: this is the browser-side
|
|
1523
|
+
counterpart of the JS SDK’s <code>getBlob</code> — the v1 scope doesn’t ship
|
|
1524
|
+
a Node-stream variant.</p>
|
|
1525
|
+
<h4 id="parameters-15">Parameters</h4>
|
|
1526
|
+
<div class="table-scroll">
|
|
1527
|
+
|
|
1528
|
+
|
|
1529
|
+
|
|
1530
|
+
|
|
1531
|
+
|
|
1532
|
+
|
|
1533
|
+
|
|
1534
|
+
|
|
1535
|
+
|
|
1536
|
+
|
|
1537
|
+
|
|
1538
|
+
|
|
1539
|
+
|
|
1540
|
+
|
|
1541
|
+
|
|
1542
|
+
|
|
1543
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>ref</code></td><td align="left"><a href="#storagereference"><code>StorageReference</code></a></td></tr><tr><td align="left"><code>maxDownloadSizeBytes?</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
|
|
1544
|
+
<h4 id="returns-18">Returns</h4>
|
|
1545
|
+
<p><code>Promise</code><<code>Blob</code>></p>
|
|
1546
|
+
<hr>
|
|
1547
|
+
<p><a id="getbucketcors"></a></p>
|
|
1548
|
+
<h3 id="getbucketcors">getBucketCors()</h3>
|
|
1549
|
+
<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"> getBucketCors</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">accessToken</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">bucketId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">CorsRule</span><span style="color:#ABB2BF">[]>;</span></span></code></pre>
|
|
1550
|
+
<p>Read the current CORS configuration for a bucket.</p>
|
|
1551
|
+
<h4 id="parameters-16">Parameters</h4>
|
|
1552
|
+
<div class="table-scroll">
|
|
1553
|
+
|
|
1554
|
+
|
|
1555
|
+
|
|
1556
|
+
|
|
1557
|
+
|
|
1558
|
+
|
|
1559
|
+
|
|
1560
|
+
|
|
1561
|
+
|
|
1562
|
+
|
|
1563
|
+
|
|
1564
|
+
|
|
1565
|
+
|
|
1566
|
+
|
|
1567
|
+
|
|
1568
|
+
|
|
1569
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>accessToken</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>bucketId</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
1570
|
+
<h4 id="returns-19">Returns</h4>
|
|
1571
|
+
<p><code>Promise</code><<a href="#corsrule"><code>CorsRule</code></a>[]></p>
|
|
1572
|
+
<hr>
|
|
1573
|
+
<p><a id="getbytes"></a></p>
|
|
1574
|
+
<h3 id="getbytes">getBytes()</h3>
|
|
1575
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> getBytes</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StorageReference</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">maxDownloadSizeBytes</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">ArrayBuffer</span><span style="color:#ABB2BF">>;</span></span></code></pre>
|
|
1576
|
+
<p>Read the blob at <code>ref</code> and return its contents as an
|
|
1577
|
+
<code>ArrayBuffer</code>. Honors the optional <code>maxDownloadSizeBytes</code> cap by
|
|
1578
|
+
truncating to that length.</p>
|
|
1579
|
+
<h4 id="parameters-17">Parameters</h4>
|
|
1580
|
+
<div class="table-scroll">
|
|
1581
|
+
|
|
1582
|
+
|
|
1583
|
+
|
|
1584
|
+
|
|
1585
|
+
|
|
1586
|
+
|
|
1587
|
+
|
|
1588
|
+
|
|
1589
|
+
|
|
1590
|
+
|
|
1591
|
+
|
|
1592
|
+
|
|
1593
|
+
|
|
1594
|
+
|
|
1595
|
+
|
|
1596
|
+
|
|
1597
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>ref</code></td><td align="left"><a href="#storagereference"><code>StorageReference</code></a></td></tr><tr><td align="left"><code>maxDownloadSizeBytes?</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
|
|
1598
|
+
<h4 id="returns-20">Returns</h4>
|
|
1599
|
+
<p><code>Promise</code><<code>ArrayBuffer</code>></p>
|
|
1600
|
+
<hr>
|
|
1601
|
+
<p><a id="getdefaultlocation"></a></p>
|
|
1602
|
+
<h3 id="getdefaultlocation">getDefaultLocation()</h3>
|
|
1603
|
+
<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"> getDefaultLocation</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">accessToken</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">projectId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">>;</span></span></code></pre>
|
|
1604
|
+
<p>Read the project’s current default GCP resources location. Returns
|
|
1605
|
+
null when the project hasn’t been finalized yet — e.g. brand-new
|
|
1606
|
+
Firebase projects with no resources. <code>firebase</code> scope is sufficient.</p>
|
|
1607
|
+
<h4 id="parameters-18">Parameters</h4>
|
|
1608
|
+
<div class="table-scroll">
|
|
1609
|
+
|
|
1610
|
+
|
|
1611
|
+
|
|
1612
|
+
|
|
1613
|
+
|
|
1614
|
+
|
|
1615
|
+
|
|
1616
|
+
|
|
1617
|
+
|
|
1618
|
+
|
|
1619
|
+
|
|
1620
|
+
|
|
1621
|
+
|
|
1622
|
+
|
|
1623
|
+
|
|
1624
|
+
|
|
1625
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>accessToken</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>projectId</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
1626
|
+
<h4 id="returns-21">Returns</h4>
|
|
1627
|
+
<p><code>Promise</code><<code>string</code>></p>
|
|
1628
|
+
<hr>
|
|
1629
|
+
<p><a id="getdownloadurl"></a></p>
|
|
1630
|
+
<h3 id="getdownloadurl">getDownloadURL()</h3>
|
|
1631
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> getDownloadURL</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StorageReference</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">>;</span></span></code></pre>
|
|
1632
|
+
<p>Return a URL the current page can use to read the sandbox object. The URL is
|
|
1633
|
+
created from the same rules-checked blob as <a href="#getblob">getBlob</a>. It is a
|
|
1634
|
+
snapshot, cannot be shared outside the page, and stays
|
|
1635
|
+
alive until the caller revokes it or the page unloads.</p>
|
|
1636
|
+
<h4 id="parameters-19">Parameters</h4>
|
|
1637
|
+
<div class="table-scroll">
|
|
1638
|
+
|
|
1639
|
+
|
|
1640
|
+
|
|
1641
|
+
|
|
1642
|
+
|
|
1643
|
+
|
|
1644
|
+
|
|
1645
|
+
|
|
1646
|
+
|
|
1647
|
+
|
|
1648
|
+
|
|
1649
|
+
|
|
1650
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>ref</code></td><td align="left"><a href="#storagereference"><code>StorageReference</code></a></td></tr></tbody></table></div>
|
|
1651
|
+
<h4 id="returns-22">Returns</h4>
|
|
1652
|
+
<p><code>Promise</code><<code>string</code>></p>
|
|
1653
|
+
<hr>
|
|
1654
|
+
<p><a id="getmetadata"></a></p>
|
|
1655
|
+
<h3 id="getmetadata">getMetadata()</h3>
|
|
1656
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> getMetadata</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StorageReference</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">FullMetadata</span><span style="color:#ABB2BF">>;</span></span></code></pre>
|
|
1657
|
+
<p>Read the full metadata record at <code>ref</code>. Throws when no object
|
|
1658
|
+
exists at the path (<code>storage/object-not-found</code>).</p>
|
|
1659
|
+
<p>Mirrors <code>firebase/storage</code>’s <code>getMetadata</code>. Returns the same
|
|
1660
|
+
<code>FullMetadata</code> shape <code>uploadBytes</code> produced — server-set fields
|
|
1661
|
+
pinned at upload time, client-settable fields whatever the latest
|
|
1662
|
+
write left them as.</p>
|
|
1663
|
+
<h4 id="parameters-20">Parameters</h4>
|
|
1664
|
+
<div class="table-scroll">
|
|
1665
|
+
|
|
1666
|
+
|
|
1667
|
+
|
|
1668
|
+
|
|
1669
|
+
|
|
1670
|
+
|
|
1671
|
+
|
|
1672
|
+
|
|
1673
|
+
|
|
1674
|
+
|
|
1675
|
+
|
|
1676
|
+
|
|
1677
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>ref</code></td><td align="left"><a href="#storagereference"><code>StorageReference</code></a></td></tr></tbody></table></div>
|
|
1678
|
+
<h4 id="returns-23">Returns</h4>
|
|
1679
|
+
<p><code>Promise</code><<a href="#fullmetadata"><code>FullMetadata</code></a>></p>
|
|
1680
|
+
<hr>
|
|
1681
|
+
<p><a id="getstorage"></a></p>
|
|
1682
|
+
<h3 id="getstorage">getStorage()</h3>
|
|
1683
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> getStorage</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">app</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FirebaseApp</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">bucketUrl</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">AppFirebaseStorage</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1684
|
+
<p>Resolve the Firebase-shaped Storage service associated with an app.</p>
|
|
1685
|
+
<h4 id="parameters-21">Parameters</h4>
|
|
1686
|
+
<div class="table-scroll">
|
|
1687
|
+
|
|
1688
|
+
|
|
1689
|
+
|
|
1690
|
+
|
|
1691
|
+
|
|
1692
|
+
|
|
1693
|
+
|
|
1694
|
+
|
|
1695
|
+
|
|
1696
|
+
|
|
1697
|
+
|
|
1698
|
+
|
|
1699
|
+
|
|
1700
|
+
|
|
1701
|
+
|
|
1702
|
+
|
|
1703
|
+
<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"><code>FirebaseApp</code></td></tr><tr><td align="left"><code>bucketUrl?</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
1704
|
+
<h4 id="returns-24">Returns</h4>
|
|
1705
|
+
<p><code>AppFirebaseStorage</code></p>
|
|
1706
|
+
<hr>
|
|
1707
|
+
<p><a id="getstoragesandbox"></a></p>
|
|
1708
|
+
<h3 id="getstoragesandbox">getStorageSandbox()</h3>
|
|
1709
|
+
<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"> getStorageSandbox</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">target</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">any</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">options</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StorageOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">FirebaseStorage</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1710
|
+
<p>Construct (or return cached) a sandbox-backed <code>FirebaseStorage</code>
|
|
1711
|
+
handle. Accepts either a bare <code>Sandbox</code> (anonymous identity wired
|
|
1712
|
+
up via <code>sandbox.withAuth(null)</code>) or an explicit <code>SandboxContext</code>.
|
|
1713
|
+
Idempotent on <code>SandboxContext</code> identity.</p>
|
|
1714
|
+
<h4 id="parameters-22">Parameters</h4>
|
|
1715
|
+
<div class="table-scroll">
|
|
1716
|
+
|
|
1717
|
+
|
|
1718
|
+
|
|
1719
|
+
|
|
1720
|
+
|
|
1721
|
+
|
|
1722
|
+
|
|
1723
|
+
|
|
1724
|
+
|
|
1725
|
+
|
|
1726
|
+
|
|
1727
|
+
|
|
1728
|
+
|
|
1729
|
+
|
|
1730
|
+
|
|
1731
|
+
|
|
1732
|
+
<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>any</code></td></tr><tr><td align="left"><code>options?</code></td><td align="left"><a href="#storageoptions"><code>StorageOptions</code></a></td></tr></tbody></table></div>
|
|
1733
|
+
<h4 id="returns-25">Returns</h4>
|
|
1734
|
+
<p><a href="#firebasestorage"><code>FirebaseStorage</code></a></p>
|
|
1735
|
+
<hr>
|
|
1736
|
+
<p><a id="getstorageservicestate"></a></p>
|
|
1737
|
+
<h3 id="getstorageservicestate">getStorageServiceState()</h3>
|
|
1738
|
+
<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"> getStorageServiceState</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">accessToken</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">projectId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">ServiceEnableState</span><span style="color:#ABB2BF">>;</span></span></code></pre>
|
|
1739
|
+
<p>Probe whether the <code>firebasestorage.googleapis.com</code> service is
|
|
1740
|
+
enabled on the project. Cheap, uses Service Usage <code>GET</code>. Requires
|
|
1741
|
+
<code>serviceusage.services.get</code> permission (the default Firebase Admin
|
|
1742
|
+
SDK SA has this; user OAuth tokens with <code>firebase</code> scope do not).</p>
|
|
1743
|
+
<p>Returns <code>'unknown'</code> on permission failures so callers can downgrade
|
|
1744
|
+
to “try the operation; observe SERVICE_DISABLED” rather than block.</p>
|
|
1745
|
+
<h4 id="parameters-23">Parameters</h4>
|
|
1746
|
+
<div class="table-scroll">
|
|
1747
|
+
|
|
1748
|
+
|
|
1749
|
+
|
|
1750
|
+
|
|
1751
|
+
|
|
1752
|
+
|
|
1753
|
+
|
|
1754
|
+
|
|
1755
|
+
|
|
1756
|
+
|
|
1757
|
+
|
|
1758
|
+
|
|
1759
|
+
|
|
1760
|
+
|
|
1761
|
+
|
|
1762
|
+
|
|
1763
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>accessToken</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>projectId</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
1764
|
+
<h4 id="returns-26">Returns</h4>
|
|
1765
|
+
<p><code>Promise</code><<a href="#serviceenablestate"><code>ServiceEnableState</code></a>></p>
|
|
1766
|
+
<hr>
|
|
1767
|
+
<p><a id="listall"></a></p>
|
|
1768
|
+
<h3 id="listall">listAll()</h3>
|
|
1769
|
+
<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"> listAll</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">refIn</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StorageReference</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">ListResult</span><span style="color:#ABB2BF">>;</span></span></code></pre>
|
|
1770
|
+
<p>Enumerate every immediate child item + sub-prefix under <code>refIn</code>.
|
|
1771
|
+
Works on the root reference too — pass <code>ref(storage)</code> to scan the
|
|
1772
|
+
whole bucket.</p>
|
|
1773
|
+
<h4 id="parameters-24">Parameters</h4>
|
|
1774
|
+
<div class="table-scroll">
|
|
1775
|
+
|
|
1776
|
+
|
|
1777
|
+
|
|
1778
|
+
|
|
1779
|
+
|
|
1780
|
+
|
|
1781
|
+
|
|
1782
|
+
|
|
1783
|
+
|
|
1784
|
+
|
|
1785
|
+
|
|
1786
|
+
|
|
1787
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>refIn</code></td><td align="left"><a href="#storagereference"><code>StorageReference</code></a></td></tr></tbody></table></div>
|
|
1788
|
+
<h4 id="returns-27">Returns</h4>
|
|
1789
|
+
<p><code>Promise</code><<a href="#listresult"><code>ListResult</code></a>></p>
|
|
1790
|
+
<hr>
|
|
1791
|
+
<p><a id="listfirebasebuckets"></a></p>
|
|
1792
|
+
<h3 id="listfirebasebuckets">listFirebaseBuckets()</h3>
|
|
1793
|
+
<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"> listFirebaseBuckets</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">accessToken</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">projectId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">FirebaseStorageBucket</span><span style="color:#ABB2BF">[]>;</span></span></code></pre>
|
|
1794
|
+
<p>List Firebase-linked Storage buckets on the project. Returns an
|
|
1795
|
+
empty list when none exist yet. Throws when the underlying service
|
|
1796
|
+
is disabled — callers should check <code>getStorageServiceState</code> first
|
|
1797
|
+
if they want to distinguish.</p>
|
|
1798
|
+
<h4 id="parameters-25">Parameters</h4>
|
|
1799
|
+
<div class="table-scroll">
|
|
1800
|
+
|
|
1801
|
+
|
|
1802
|
+
|
|
1803
|
+
|
|
1804
|
+
|
|
1805
|
+
|
|
1806
|
+
|
|
1807
|
+
|
|
1808
|
+
|
|
1809
|
+
|
|
1810
|
+
|
|
1811
|
+
|
|
1812
|
+
|
|
1813
|
+
|
|
1814
|
+
|
|
1815
|
+
|
|
1816
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>accessToken</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>projectId</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
1817
|
+
<h4 id="returns-28">Returns</h4>
|
|
1818
|
+
<p><code>Promise</code><<a href="#firebasestoragebucket"><code>FirebaseStorageBucket</code></a>[]></p>
|
|
1819
|
+
<hr>
|
|
1820
|
+
<p><a id="parsestoragerules"></a></p>
|
|
1821
|
+
<h3 id="parsestoragerules">parseStorageRules()</h3>
|
|
1822
|
+
<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"> parseStorageRules</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">source</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">StorageRules</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1823
|
+
<p>Parse a Storage rules source into an opaque handle. Throws
|
|
1824
|
+
<code>SyntaxError</code> on malformed input. Used by Slice 8’s
|
|
1825
|
+
<code>getStorage(ctx, { rules })</code> to validate upfront.</p>
|
|
1826
|
+
<h4 id="parameters-26">Parameters</h4>
|
|
1827
|
+
<div class="table-scroll">
|
|
1828
|
+
|
|
1829
|
+
|
|
1830
|
+
|
|
1831
|
+
|
|
1832
|
+
|
|
1833
|
+
|
|
1834
|
+
|
|
1835
|
+
|
|
1836
|
+
|
|
1837
|
+
|
|
1838
|
+
|
|
1839
|
+
|
|
1840
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>source</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
1841
|
+
<h4 id="returns-29">Returns</h4>
|
|
1842
|
+
<p><a href="#storagerules"><code>StorageRules</code></a></p>
|
|
1843
|
+
<hr>
|
|
1844
|
+
<p><a id="provisionstorage"></a></p>
|
|
1845
|
+
<h3 id="provisionstorage">provisionStorage()</h3>
|
|
1846
|
+
<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"> provisionStorage</span><span style="color:#ABB2BF">(</span></span>
|
|
1847
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> accessToken</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
|
|
1848
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> projectId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
|
|
1849
|
+
<span class="line"><span style="color:#E06C75;font-style:italic">options</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ProvisionStorageOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">ProvisionStorageResult</span><span style="color:#ABB2BF">>;</span></span></code></pre>
|
|
1850
|
+
<p>End-to-end Storage enablement + provisioning. Each step is
|
|
1851
|
+
idempotent (probe before mutating); the result reports what was
|
|
1852
|
+
actually done.</p>
|
|
1853
|
+
<p>Permission requirements (caller’s token):</p>
|
|
1854
|
+
<ul>
|
|
1855
|
+
<li><code>roles/serviceusage.serviceUsageAdmin</code> (or Owner) — to enable
|
|
1856
|
+
the service when it’s disabled</li>
|
|
1857
|
+
<li><code>cloud-platform</code> OAuth scope (or <code>firebase</code> if service already
|
|
1858
|
+
enabled)</li>
|
|
1859
|
+
</ul>
|
|
1860
|
+
<p>The handler throws <code>StorageProvisioningError</code> with the
|
|
1861
|
+
underlying <code>reason</code> (e.g. <code>AUTH_PERMISSION_DENIED</code>,
|
|
1862
|
+
<code>SERVICE_DISABLED</code>) so the caller can route to actionable UX.</p>
|
|
1863
|
+
<h4 id="parameters-27">Parameters</h4>
|
|
1864
|
+
<div class="table-scroll">
|
|
1865
|
+
|
|
1866
|
+
|
|
1867
|
+
|
|
1868
|
+
|
|
1869
|
+
|
|
1870
|
+
|
|
1871
|
+
|
|
1872
|
+
|
|
1873
|
+
|
|
1874
|
+
|
|
1875
|
+
|
|
1876
|
+
|
|
1877
|
+
|
|
1878
|
+
|
|
1879
|
+
|
|
1880
|
+
|
|
1881
|
+
|
|
1882
|
+
|
|
1883
|
+
|
|
1884
|
+
|
|
1885
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>accessToken</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>projectId</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>options?</code></td><td align="left"><a href="#provisionstorageoptions"><code>ProvisionStorageOptions</code></a></td></tr></tbody></table></div>
|
|
1886
|
+
<h4 id="returns-30">Returns</h4>
|
|
1887
|
+
<p><code>Promise</code><<a href="#provisionstorageresult"><code>ProvisionStorageResult</code></a>></p>
|
|
1888
|
+
<hr>
|
|
1889
|
+
<p><a id="ref-1"></a></p>
|
|
1890
|
+
<h3 id="ref">ref()</h3>
|
|
1891
|
+
<h4 id="call-signature">Call Signature</h4>
|
|
1892
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> ref</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">storage</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FirebaseStorage</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">path</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">StorageReference</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1893
|
+
<p>Construct a reference. Two overloads matching Firebase:</p>
|
|
1894
|
+
<p><code>ref(storage, path?)</code> — <code>path</code> is bucket-rooted. Omit for root.
|
|
1895
|
+
<code>ref(parent, path)</code> — <code>path</code> is relative to <code>parent.fullPath</code>.</p>
|
|
1896
|
+
<h5 id="parameters-28">Parameters</h5>
|
|
1897
|
+
<div class="table-scroll">
|
|
1898
|
+
|
|
1899
|
+
|
|
1900
|
+
|
|
1901
|
+
|
|
1902
|
+
|
|
1903
|
+
|
|
1904
|
+
|
|
1905
|
+
|
|
1906
|
+
|
|
1907
|
+
|
|
1908
|
+
|
|
1909
|
+
|
|
1910
|
+
|
|
1911
|
+
|
|
1912
|
+
|
|
1913
|
+
|
|
1914
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>storage</code></td><td align="left"><a href="#firebasestorage"><code>FirebaseStorage</code></a></td></tr><tr><td align="left"><code>path?</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
1915
|
+
<h5 id="returns-31">Returns</h5>
|
|
1916
|
+
<p><a href="#storagereference"><code>StorageReference</code></a></p>
|
|
1917
|
+
<h4 id="call-signature-1">Call Signature</h4>
|
|
1918
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> ref</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">parent</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StorageReference</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">path</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">StorageReference</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1919
|
+
<p>Construct a reference. Two overloads matching Firebase:</p>
|
|
1920
|
+
<p><code>ref(storage, path?)</code> — <code>path</code> is bucket-rooted. Omit for root.
|
|
1921
|
+
<code>ref(parent, path)</code> — <code>path</code> is relative to <code>parent.fullPath</code>.</p>
|
|
1922
|
+
<h5 id="parameters-29">Parameters</h5>
|
|
1923
|
+
<div class="table-scroll">
|
|
1924
|
+
|
|
1925
|
+
|
|
1926
|
+
|
|
1927
|
+
|
|
1928
|
+
|
|
1929
|
+
|
|
1930
|
+
|
|
1931
|
+
|
|
1932
|
+
|
|
1933
|
+
|
|
1934
|
+
|
|
1935
|
+
|
|
1936
|
+
|
|
1937
|
+
|
|
1938
|
+
|
|
1939
|
+
|
|
1940
|
+
<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="#storagereference"><code>StorageReference</code></a></td></tr><tr><td align="left"><code>path</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
1941
|
+
<h5 id="returns-32">Returns</h5>
|
|
1942
|
+
<p><a href="#storagereference"><code>StorageReference</code></a></p>
|
|
1943
|
+
<hr>
|
|
1944
|
+
<p><a id="setbucketcors"></a></p>
|
|
1945
|
+
<h3 id="setbucketcors">setBucketCors()</h3>
|
|
1946
|
+
<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"> setBucketCors</span><span style="color:#ABB2BF">(</span></span>
|
|
1947
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> accessToken</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
|
|
1948
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> bucketId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
|
|
1949
|
+
<span class="line"><span style="color:#E06C75;font-style:italic">cors</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">CorsRule</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>
|
|
1950
|
+
<p>Replace the bucket’s CORS configuration. Pass an empty array to
|
|
1951
|
+
clear all rules. The GCS API replaces (not merges) the cors field
|
|
1952
|
+
on PATCH.</p>
|
|
1953
|
+
<h4 id="parameters-30">Parameters</h4>
|
|
1954
|
+
<div class="table-scroll">
|
|
1955
|
+
|
|
1956
|
+
|
|
1957
|
+
|
|
1958
|
+
|
|
1959
|
+
|
|
1960
|
+
|
|
1961
|
+
|
|
1962
|
+
|
|
1963
|
+
|
|
1964
|
+
|
|
1965
|
+
|
|
1966
|
+
|
|
1967
|
+
|
|
1968
|
+
|
|
1969
|
+
|
|
1970
|
+
|
|
1971
|
+
|
|
1972
|
+
|
|
1973
|
+
|
|
1974
|
+
|
|
1975
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>accessToken</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>bucketId</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>cors</code></td><td align="left"><a href="#corsrule"><code>CorsRule</code></a>[]</td></tr></tbody></table></div>
|
|
1976
|
+
<h4 id="returns-33">Returns</h4>
|
|
1977
|
+
<p><code>Promise</code><<code>void</code>></p>
|
|
1978
|
+
<hr>
|
|
1979
|
+
<p><a id="updatemetadata"></a></p>
|
|
1980
|
+
<h3 id="updatemetadata">updateMetadata()</h3>
|
|
1981
|
+
<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"> updateMetadata</span><span style="color:#ABB2BF">(</span></span>
|
|
1982
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StorageReference</span><span style="color:#ABB2BF">,</span></span>
|
|
1983
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> patch</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">SettableMetadata</span><span style="color:#ABB2BF">,</span></span>
|
|
1984
|
+
<span class="line"><span style="color:#E06C75;font-style:italic">provenance</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">EventProvenance</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">FullMetadata</span><span style="color:#ABB2BF">>;</span></span></code></pre>
|
|
1985
|
+
<p>Update the client-settable metadata at <code>ref</code>. Server-set fields
|
|
1986
|
+
(<code>bucket</code>, <code>fullPath</code>, <code>name</code>, <code>generation</code>, <code>timeCreated</code>,
|
|
1987
|
+
<code>size</code>, <code>md5Hash</code>) are preserved; <code>metageneration</code> bumps and
|
|
1988
|
+
<code>updated</code> refreshes. The blob is untouched.</p>
|
|
1989
|
+
<p>Pass <code>undefined</code> for a field to leave the previous value in
|
|
1990
|
+
place. To explicitly clear a field, the JS SDK accepts <code>null</code> —
|
|
1991
|
+
we don’t model that in the v1 scope to keep the patch logic simple.
|
|
1992
|
+
Documented for Slice 9’s deferred-features section.</p>
|
|
1993
|
+
<p><code>provenance</code> (host-only): op EventProvenance bound at ISSUE time,
|
|
1994
|
+
threaded EXPLICITLY onto the emitted <code>metadata_update</code> event. Emit runs
|
|
1995
|
+
after the backend awaits, escaping the sandbox’s synchronous
|
|
1996
|
+
ambient-provenance window — see the note on <code>uploadBytes</code>.</p>
|
|
1997
|
+
<h4 id="parameters-31">Parameters</h4>
|
|
1998
|
+
<div class="table-scroll">
|
|
1999
|
+
|
|
2000
|
+
|
|
2001
|
+
|
|
2002
|
+
|
|
2003
|
+
|
|
2004
|
+
|
|
2005
|
+
|
|
2006
|
+
|
|
2007
|
+
|
|
2008
|
+
|
|
2009
|
+
|
|
2010
|
+
|
|
2011
|
+
|
|
2012
|
+
|
|
2013
|
+
|
|
2014
|
+
|
|
2015
|
+
|
|
2016
|
+
|
|
2017
|
+
|
|
2018
|
+
|
|
2019
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>ref</code></td><td align="left"><a href="#storagereference"><code>StorageReference</code></a></td></tr><tr><td align="left"><code>patch</code></td><td align="left"><a href="#settablemetadata"><code>SettableMetadata</code></a></td></tr><tr><td align="left"><code>provenance?</code></td><td align="left"><code>EventProvenance</code></td></tr></tbody></table></div>
|
|
2020
|
+
<h4 id="returns-34">Returns</h4>
|
|
2021
|
+
<p><code>Promise</code><<a href="#fullmetadata"><code>FullMetadata</code></a>></p>
|
|
2022
|
+
<hr>
|
|
2023
|
+
<p><a id="uploadbytes"></a></p>
|
|
2024
|
+
<h3 id="uploadbytes">uploadBytes()</h3>
|
|
2025
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> uploadBytes</span><span style="color:#ABB2BF">(</span></span>
|
|
2026
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StorageReference</span><span style="color:#ABB2BF">,</span></span>
|
|
2027
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> data</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Blob</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">ArrayBuffer</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">Uint8Array</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">ArrayBufferLike</span><span style="color:#ABB2BF">>,</span></span>
|
|
2028
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> metadata</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">SettableMetadata</span><span style="color:#ABB2BF">,</span></span>
|
|
2029
|
+
<span class="line"><span style="color:#E06C75;font-style:italic">provenance</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">EventProvenance</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">UploadResult</span><span style="color:#ABB2BF">>;</span></span></code></pre>
|
|
2030
|
+
<p>Upload bytes to the reference’s <code>fullPath</code>. Replaces any existing
|
|
2031
|
+
object at the path. Returns the populated <code>FullMetadata</code> and the
|
|
2032
|
+
same <code>ref</code> for chaining.</p>
|
|
2033
|
+
<p>Throws when the reference targets the root (<code>fullPath === ''</code>) —
|
|
2034
|
+
uploads need a non-empty path, matching Firebase’s
|
|
2035
|
+
<code>invalid-root-operation</code> precondition.</p>
|
|
2036
|
+
<p>Provenance is captured from the reference’s operation-scoped Storage
|
|
2037
|
+
handle before the first await. The optional <code>provenance</code> argument remains
|
|
2038
|
+
as a compatibility override for internal callers. Either way, concurrent
|
|
2039
|
+
uploads cannot exchange source or auth-lens identity, and
|
|
2040
|
+
<code>service: 'storage'</code> always wins.</p>
|
|
2041
|
+
<h4 id="parameters-32">Parameters</h4>
|
|
2042
|
+
<div class="table-scroll">
|
|
2043
|
+
|
|
2044
|
+
|
|
2045
|
+
|
|
2046
|
+
|
|
2047
|
+
|
|
2048
|
+
|
|
2049
|
+
|
|
2050
|
+
|
|
2051
|
+
|
|
2052
|
+
|
|
2053
|
+
|
|
2054
|
+
|
|
2055
|
+
|
|
2056
|
+
|
|
2057
|
+
|
|
2058
|
+
|
|
2059
|
+
|
|
2060
|
+
|
|
2061
|
+
|
|
2062
|
+
|
|
2063
|
+
|
|
2064
|
+
|
|
2065
|
+
|
|
2066
|
+
|
|
2067
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>ref</code></td><td align="left"><a href="#storagereference"><code>StorageReference</code></a></td></tr><tr><td align="left"><code>data</code></td><td align="left"><code>Blob</code> | <code>ArrayBuffer</code> | <code>Uint8Array</code><<code>ArrayBufferLike</code>></td></tr><tr><td align="left"><code>metadata?</code></td><td align="left"><a href="#settablemetadata"><code>SettableMetadata</code></a></td></tr><tr><td align="left"><code>provenance?</code></td><td align="left"><code>EventProvenance</code></td></tr></tbody></table></div>
|
|
2068
|
+
<h4 id="returns-35">Returns</h4>
|
|
2069
|
+
<p><code>Promise</code><<a href="#uploadresult"><code>UploadResult</code></a>></p>
|
|
2070
|
+
<hr>
|
|
2071
|
+
<p><a id="uploadstring"></a></p>
|
|
2072
|
+
<h3 id="uploadstring">uploadString()</h3>
|
|
2073
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> uploadString</span><span style="color:#ABB2BF">(</span></span>
|
|
2074
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StorageReference</span><span style="color:#ABB2BF">,</span></span>
|
|
2075
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> value</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
|
|
2076
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> format</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StringFormat</span><span style="color:#ABB2BF">,</span></span>
|
|
2077
|
+
<span class="line"><span style="color:#E06C75;font-style:italic"> metadata</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">SettableMetadata</span><span style="color:#ABB2BF">,</span></span>
|
|
2078
|
+
<span class="line"><span style="color:#E06C75;font-style:italic">provenance</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">EventProvenance</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">UploadResult</span><span style="color:#ABB2BF">>;</span></span></code></pre>
|
|
2079
|
+
<p>Upload a string in one of three formats:</p>
|
|
2080
|
+
<ul>
|
|
2081
|
+
<li><code>raw</code> (default): UTF-8 text. Defaults <code>contentType</code> to
|
|
2082
|
+
<code>text/plain;charset=utf-8</code> if neither metadata nor the data
|
|
2083
|
+
specify one.</li>
|
|
2084
|
+
<li><code>base64</code>: standard base64-encoded bytes.</li>
|
|
2085
|
+
<li><code>data_url</code>: a <code>data:</code> URL — the MIME prefix is honored as
|
|
2086
|
+
<code>contentType</code> unless the caller overrides it explicitly.</li>
|
|
2087
|
+
</ul>
|
|
2088
|
+
<h4 id="parameters-33">Parameters</h4>
|
|
2089
|
+
<div class="table-scroll">
|
|
2090
|
+
|
|
2091
|
+
|
|
2092
|
+
|
|
2093
|
+
|
|
2094
|
+
|
|
2095
|
+
|
|
2096
|
+
|
|
2097
|
+
|
|
2098
|
+
|
|
2099
|
+
|
|
2100
|
+
|
|
2101
|
+
|
|
2102
|
+
|
|
2103
|
+
|
|
2104
|
+
|
|
2105
|
+
|
|
2106
|
+
|
|
2107
|
+
|
|
2108
|
+
|
|
2109
|
+
|
|
2110
|
+
|
|
2111
|
+
|
|
2112
|
+
|
|
2113
|
+
|
|
2114
|
+
|
|
2115
|
+
|
|
2116
|
+
|
|
2117
|
+
|
|
2118
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>ref</code></td><td align="left"><a href="#storagereference"><code>StorageReference</code></a></td></tr><tr><td align="left"><code>value</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>format?</code></td><td align="left"><a href="#stringformat"><code>StringFormat</code></a></td></tr><tr><td align="left"><code>metadata?</code></td><td align="left"><a href="#settablemetadata"><code>SettableMetadata</code></a></td></tr><tr><td align="left"><code>provenance?</code></td><td align="left"><code>EventProvenance</code></td></tr></tbody></table></div>
|
|
2119
|
+
<h4 id="returns-36">Returns</h4>
|
|
2120
|
+
<p><code>Promise</code><<a href="#uploadresult"><code>UploadResult</code></a>></p> </article> </main> <aside class="doc-toc api-symbols" aria-label="API symbols"> <h2 class="doc-toc-heading">Symbols</h2> <input class="api-symbol-filter" type="search" placeholder="Filter symbols" aria-label="Filter API symbols" data-api-symbol-filter> <div class="api-symbol-groups" data-api-symbol-groups> <section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#classes"> Classes </a> <ul> <li data-api-symbol="inspectstoragehandler"> <a href="#inspectstoragehandler">InspectStorageHandler</a> </li><li data-api-symbol="provisionstoragehandler"> <a href="#provisionstoragehandler">ProvisionStorageHandler</a> </li><li data-api-symbol="storageerror"> <a href="#storageerror">StorageError</a> </li><li data-api-symbol="storageprovisioningerror"> <a href="#storageprovisioningerror">StorageProvisioningError</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#interfaces"> Interfaces </a> <ul> <li data-api-symbol="corsrule"> <a href="#corsrule">CorsRule</a> </li><li data-api-symbol="evaluationinput"> <a href="#evaluationinput">EvaluationInput</a> </li><li data-api-symbol="evaluationresult"> <a href="#evaluationresult">EvaluationResult</a> </li><li data-api-symbol="firebasestorage"> <a href="#firebasestorage">FirebaseStorage</a> </li><li data-api-symbol="firebasestoragebucket"> <a href="#firebasestoragebucket">FirebaseStorageBucket</a> </li><li data-api-symbol="firestorelookup"> <a href="#firestorelookup">FirestoreLookup</a> </li><li data-api-symbol="fullmetadata"> <a href="#fullmetadata">FullMetadata</a> </li><li data-api-symbol="inspectstorageresult"> <a href="#inspectstorageresult">InspectStorageResult</a> </li><li data-api-symbol="listresult"> <a href="#listresult">ListResult</a> </li><li data-api-symbol="provisionstorageinput"> <a href="#provisionstorageinput">ProvisionStorageInput</a> </li><li data-api-symbol="provisionstorageoptions"> <a href="#provisionstorageoptions">ProvisionStorageOptions</a> </li><li data-api-symbol="provisionstorageresult"> <a href="#provisionstorageresult">ProvisionStorageResult</a> </li><li data-api-symbol="sandboxtarget"> <a href="#sandboxtarget">SandboxTarget</a> </li><li data-api-symbol="settablemetadata"> <a href="#settablemetadata">SettableMetadata</a> </li><li data-api-symbol="storageadmintooldeps"> <a href="#storageadmintooldeps">StorageAdminToolDeps</a> </li><li data-api-symbol="storageauth"> <a href="#storageauth">StorageAuth</a> </li><li data-api-symbol="storageoptions"> <a href="#storageoptions">StorageOptions</a> </li><li data-api-symbol="storagereference"> <a href="#storagereference">StorageReference</a> </li><li data-api-symbol="storagerequest"> <a href="#storagerequest">StorageRequest</a> </li><li data-api-symbol="storageresource"> <a href="#storageresource">StorageResource</a> </li><li data-api-symbol="storagerules"> <a href="#storagerules">StorageRules</a> </li><li data-api-symbol="uploadresult"> <a href="#uploadresult">UploadResult</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#type-aliases"> Type Aliases </a> <ul> <li data-api-symbol="provisionstorageerrorcode"> <a href="#provisionstorageerrorcode">ProvisionStorageErrorCode</a> </li><li data-api-symbol="provisionstorageoutcome"> <a href="#provisionstorageoutcome">ProvisionStorageOutcome</a> </li><li data-api-symbol="serviceenablestate"> <a href="#serviceenablestate">ServiceEnableState</a> </li><li data-api-symbol="storageerrorcode"> <a href="#storageerrorcode">StorageErrorCode</a> </li><li data-api-symbol="storagegrantverb"> <a href="#storagegrantverb">StorageGrantVerb</a> </li><li data-api-symbol="storagemethod"> <a href="#storagemethod">StorageMethod</a> </li><li data-api-symbol="storagerequestmethod"> <a href="#storagerequestmethod">StorageRequestMethod</a> </li><li data-api-symbol="storageverb"> <a href="#storageverb">StorageVerb</a> </li><li data-api-symbol="stringformat"> <a href="#stringformat">StringFormat</a> </li><li data-api-symbol="target"> <a href="#target">Target</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#variables"> Variables </a> <ul> <li data-api-symbol="target_symbol"> <a href="#target_symbol">TARGET_SYMBOL</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#functions"> Functions </a> <ul> <li data-api-symbol="addfirebasetobucket()"> <a href="#addfirebasetobucket">addFirebaseToBucket()</a> </li><li data-api-symbol="connectstorageemulator()"> <a href="#connectstorageemulator">connectStorageEmulator()</a> </li><li data-api-symbol="createstorageadmintools()"> <a href="#createstorageadmintools">createStorageAdminTools()</a> </li><li data-api-symbol="defaultplaygroundcors()"> <a href="#defaultplaygroundcors">defaultPlaygroundCors()</a> </li><li data-api-symbol="deleteobject()"> <a href="#deleteobject">deleteObject()</a> </li><li data-api-symbol="deploystoragerules()"> <a href="#deploystoragerules">deployStorageRules()</a> </li><li data-api-symbol="enablestorageservice()"> <a href="#enablestorageservice">enableStorageService()</a> </li><li data-api-symbol="evaluatestoragerules()"> <a href="#evaluatestoragerules">evaluateStorageRules()</a> </li><li data-api-symbol="finalizedefaultlocation()"> <a href="#finalizedefaultlocation">finalizeDefaultLocation()</a> </li><li data-api-symbol="getblob()"> <a href="#getblob">getBlob()</a> </li><li data-api-symbol="getbucketcors()"> <a href="#getbucketcors">getBucketCors()</a> </li><li data-api-symbol="getbytes()"> <a href="#getbytes">getBytes()</a> </li><li data-api-symbol="getdefaultlocation()"> <a href="#getdefaultlocation">getDefaultLocation()</a> </li><li data-api-symbol="getdownloadurl()"> <a href="#getdownloadurl">getDownloadURL()</a> </li><li data-api-symbol="getmetadata()"> <a href="#getmetadata">getMetadata()</a> </li><li data-api-symbol="getstorage()"> <a href="#getstorage">getStorage()</a> </li><li data-api-symbol="getstoragesandbox()"> <a href="#getstoragesandbox">getStorageSandbox()</a> </li><li data-api-symbol="getstorageservicestate()"> <a href="#getstorageservicestate">getStorageServiceState()</a> </li><li data-api-symbol="listall()"> <a href="#listall">listAll()</a> </li><li data-api-symbol="listfirebasebuckets()"> <a href="#listfirebasebuckets">listFirebaseBuckets()</a> </li><li data-api-symbol="parsestoragerules()"> <a href="#parsestoragerules">parseStorageRules()</a> </li><li data-api-symbol="provisionstorage()"> <a href="#provisionstorage">provisionStorage()</a> </li><li data-api-symbol="ref()"> <a href="#ref">ref()</a> </li><li data-api-symbol="setbucketcors()"> <a href="#setbucketcors">setBucketCors()</a> </li><li data-api-symbol="updatemetadata()"> <a href="#updatemetadata">updateMetadata()</a> </li><li data-api-symbol="uploadbytes()"> <a href="#uploadbytes">uploadBytes()</a> </li><li data-api-symbol="uploadstring()"> <a href="#uploadstring">uploadString()</a> </li> </ul> </section> <p class="api-symbol-empty" data-api-symbol-empty hidden>No matching symbols</p> </div> </aside> </div> <script type="module">const a=document.querySelector("[data-api-symbol-filter]"),d=[...document.querySelectorAll("[data-api-symbol-group]")],n=document.querySelector("[data-api-symbol-empty]");a?.addEventListener("input",()=>{const t=a.value.trim().toLowerCase();let o=0;for(const i of d){let e=0;i.querySelectorAll("[data-api-symbol]").forEach(l=>{const r=!t||(l.dataset.apiSymbol??"").includes(t);l.hidden=!r,r&&e++}),i.hidden=e===0,o+=e}n&&(n.hidden=o>0)});</script> <script type="module">const s=new Map;document.querySelectorAll('.doc-toc a[href^="#"]').forEach(t=>s.set(decodeURIComponent(t.hash.slice(1)),t));if(s.size>0){const t=new Set,n=()=>{let o=null;for(const e of s.keys())if(t.has(e)){o=e;break}s.forEach((e,c)=>e.classList.toggle("active",c===o))},r=new IntersectionObserver(o=>{for(const e of o)e.isIntersecting?t.add(e.target.id):t.delete(e.target.id);n()},{rootMargin:"-72px 0px -60% 0px"});s.forEach((o,e)=>{const c=document.getElementById(e);c&&r.observe(c)})}</script> <script type="module">document.querySelector('.studio__nav [aria-current="page"]')?.scrollIntoView({block:"nearest",inline:"center"});</script> </body> </html>
|