pyric-tools 0.1.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +125 -0
- package/dist/auth/domains/handler.d.ts +6 -0
- package/dist/auth/domains/handler.d.ts.map +1 -0
- package/dist/auth/domains/handler.js +75 -0
- package/dist/auth/domains/handler.js.map +1 -0
- package/dist/auth/domains/spec.d.ts +25 -0
- package/dist/auth/domains/spec.d.ts.map +1 -0
- package/dist/auth/domains/spec.js +6 -0
- package/dist/auth/domains/spec.js.map +1 -0
- package/dist/auth/index.d.ts +34 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +30 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/mapper.d.ts +5 -0
- package/dist/auth/mapper.d.ts.map +1 -0
- package/dist/auth/mapper.js +49 -0
- package/dist/auth/mapper.js.map +1 -0
- package/dist/auth/provider/handler.d.ts +9 -0
- package/dist/auth/provider/handler.d.ts.map +1 -0
- package/dist/auth/provider/handler.js +128 -0
- package/dist/auth/provider/handler.js.map +1 -0
- package/dist/auth/provider/spec.d.ts +29 -0
- package/dist/auth/provider/spec.d.ts.map +1 -0
- package/dist/auth/provider/spec.js +12 -0
- package/dist/auth/provider/spec.js.map +1 -0
- package/dist/auth/resolver.d.ts +16 -0
- package/dist/auth/resolver.d.ts.map +1 -0
- package/dist/auth/resolver.js +32 -0
- package/dist/auth/resolver.js.map +1 -0
- package/dist/auth/tools.d.ts +23 -0
- package/dist/auth/tools.d.ts.map +1 -0
- package/dist/auth/tools.js +71 -0
- package/dist/auth/tools.js.map +1 -0
- package/dist/auth/types.d.ts +37 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +17 -0
- package/dist/auth/types.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 +430 -0
- package/dist/bridge/client/bridge.js.map +1 -0
- package/dist/bridge/client/dispatch.d.ts +49 -0
- package/dist/bridge/client/dispatch.d.ts.map +1 -0
- package/dist/bridge/client/dispatch.js +103 -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 +228 -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 +165 -0
- package/dist/bridge/server/bridge.d.ts.map +1 -0
- package/dist/bridge/server/bridge.js +410 -0
- package/dist/bridge/server/bridge.js.map +1 -0
- package/dist/bridge/server/confirm-policy.d.ts +56 -0
- package/dist/bridge/server/confirm-policy.d.ts.map +1 -0
- package/dist/bridge/server/confirm-policy.js +107 -0
- package/dist/bridge/server/confirm-policy.js.map +1 -0
- package/dist/bridge/server/confirm-prompt.d.ts +73 -0
- package/dist/bridge/server/confirm-prompt.d.ts.map +1 -0
- package/dist/bridge/server/confirm-prompt.js +199 -0
- package/dist/bridge/server/confirm-prompt.js.map +1 -0
- package/dist/bridge/server/confirm.d.ts +92 -0
- package/dist/bridge/server/confirm.d.ts.map +1 -0
- package/dist/bridge/server/confirm.js +210 -0
- package/dist/bridge/server/confirm.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 +132 -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 +42 -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.d.ts +33 -0
- package/dist/bridge/server/mcp.d.ts.map +1 -0
- package/dist/bridge/server/mcp.js +159 -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 +102 -0
- package/dist/bridge/server/standalone.d.ts.map +1 -0
- package/dist/bridge/server/standalone.js +352 -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 +79 -0
- package/dist/bridge/server/tool-metadata.js.map +1 -0
- package/dist/bridge/server.d.ts +25 -0
- package/dist/bridge/server.d.ts.map +1 -0
- package/dist/bridge/server.js +23 -0
- package/dist/bridge/server.js.map +1 -0
- package/dist/cli/auth.d.ts +37 -0
- package/dist/cli/auth.d.ts.map +1 -0
- package/dist/cli/auth.js +119 -0
- package/dist/cli/auth.js.map +1 -0
- package/dist/cli/database-rules.d.ts +25 -0
- package/dist/cli/database-rules.d.ts.map +1 -0
- package/dist/cli/database-rules.js +215 -0
- package/dist/cli/database-rules.js.map +1 -0
- package/dist/cli/deploy-progress.d.ts +35 -0
- package/dist/cli/deploy-progress.d.ts.map +1 -0
- package/dist/cli/deploy-progress.js +69 -0
- package/dist/cli/deploy-progress.js.map +1 -0
- package/dist/cli/deploy.d.ts +81 -0
- package/dist/cli/deploy.d.ts.map +1 -0
- package/dist/cli/deploy.js +413 -0
- package/dist/cli/deploy.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 +227 -0
- package/dist/cli/dev-runner.js.map +1 -0
- package/dist/cli/discover.d.ts +47 -0
- package/dist/cli/discover.d.ts.map +1 -0
- package/dist/cli/discover.js +77 -0
- package/dist/cli/discover.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/index.d.ts +55 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +500 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init-templates.d.ts +37 -0
- package/dist/cli/init-templates.d.ts.map +1 -0
- package/dist/cli/init-templates.js +638 -0
- package/dist/cli/init-templates.js.map +1 -0
- package/dist/cli/init.d.ts +124 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +423 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/login.d.ts +18 -0
- package/dist/cli/login.d.ts.map +1 -0
- package/dist/cli/login.js +59 -0
- package/dist/cli/login.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 +126 -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 +40 -0
- package/dist/cli/rules.d.ts.map +1 -0
- package/dist/cli/rules.js +162 -0
- package/dist/cli/rules.js.map +1 -0
- package/dist/cli/scope.d.ts +38 -0
- package/dist/cli/scope.d.ts.map +1 -0
- package/dist/cli/scope.js +63 -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 +685 -0
- package/dist/cli/serve.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/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/authorize.d.ts +22 -0
- package/dist/credentials/core/authorize.d.ts.map +1 -0
- package/dist/credentials/core/authorize.js +39 -0
- package/dist/credentials/core/authorize.js.map +1 -0
- package/dist/credentials/core/client.d.ts +14 -0
- package/dist/credentials/core/client.d.ts.map +1 -0
- package/dist/credentials/core/client.js +13 -0
- package/dist/credentials/core/client.js.map +1 -0
- package/dist/credentials/core/exchange.d.ts +24 -0
- package/dist/credentials/core/exchange.d.ts.map +1 -0
- package/dist/credentials/core/exchange.js +46 -0
- package/dist/credentials/core/exchange.js.map +1 -0
- package/dist/credentials/core/flow.d.ts +15 -0
- package/dist/credentials/core/flow.d.ts.map +1 -0
- package/dist/credentials/core/flow.js +40 -0
- package/dist/credentials/core/flow.js.map +1 -0
- package/dist/credentials/core/from-user-credential.d.ts +3 -0
- package/dist/credentials/core/from-user-credential.d.ts.map +1 -0
- package/dist/credentials/core/from-user-credential.js +19 -0
- package/dist/credentials/core/from-user-credential.js.map +1 -0
- package/dist/credentials/core/scopes.d.ts +26 -0
- package/dist/credentials/core/scopes.d.ts.map +1 -0
- package/dist/credentials/core/scopes.js +32 -0
- package/dist/credentials/core/scopes.js.map +1 -0
- package/dist/credentials/core/types.d.ts +72 -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/index.d.ts +14 -0
- package/dist/credentials/index.d.ts.map +1 -0
- package/dist/credentials/index.js +13 -0
- package/dist/credentials/index.js.map +1 -0
- package/dist/credentials/node/ensure-scope.d.ts +29 -0
- package/dist/credentials/node/ensure-scope.d.ts.map +1 -0
- package/dist/credentials/node/ensure-scope.js +42 -0
- package/dist/credentials/node/ensure-scope.js.map +1 -0
- package/dist/credentials/node/file-store.d.ts +4 -0
- package/dist/credentials/node/file-store.d.ts.map +1 -0
- package/dist/credentials/node/file-store.js +52 -0
- package/dist/credentials/node/file-store.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 +60 -0
- package/dist/credentials/node/from-adc.js.map +1 -0
- package/dist/credentials/node/index.d.ts +10 -0
- package/dist/credentials/node/index.d.ts.map +1 -0
- package/dist/credentials/node/index.js +10 -0
- package/dist/credentials/node/index.js.map +1 -0
- package/dist/credentials/node/loopback-authorizer.d.ts +12 -0
- package/dist/credentials/node/loopback-authorizer.d.ts.map +1 -0
- package/dist/credentials/node/loopback-authorizer.js +61 -0
- package/dist/credentials/node/loopback-authorizer.js.map +1 -0
- package/dist/credentials/node/resolve-local-token.d.ts +20 -0
- package/dist/credentials/node/resolve-local-token.d.ts.map +1 -0
- package/dist/credentials/node/resolve-local-token.js +97 -0
- package/dist/credentials/node/resolve-local-token.js.map +1 -0
- package/dist/credentials/server/bff.d.ts +44 -0
- package/dist/credentials/server/bff.d.ts.map +1 -0
- package/dist/credentials/server/bff.js +43 -0
- package/dist/credentials/server/bff.js.map +1 -0
- package/dist/deploy/api-enablement.d.ts +45 -0
- package/dist/deploy/api-enablement.d.ts.map +1 -0
- package/dist/deploy/api-enablement.js +125 -0
- package/dist/deploy/api-enablement.js.map +1 -0
- package/dist/deploy/firestore/databases.d.ts +41 -0
- package/dist/deploy/firestore/databases.d.ts.map +1 -0
- package/dist/deploy/firestore/databases.js +63 -0
- package/dist/deploy/firestore/databases.js.map +1 -0
- package/dist/deploy/firestore/indexes.d.ts +120 -0
- package/dist/deploy/firestore/indexes.d.ts.map +1 -0
- package/dist/deploy/firestore/indexes.js +243 -0
- package/dist/deploy/firestore/indexes.js.map +1 -0
- package/dist/deploy/firestore/recipes.d.ts +21 -0
- package/dist/deploy/firestore/recipes.d.ts.map +1 -0
- package/dist/deploy/firestore/recipes.js +34 -0
- package/dist/deploy/firestore/recipes.js.map +1 -0
- package/dist/deploy/firestore/rules.d.ts +76 -0
- package/dist/deploy/firestore/rules.d.ts.map +1 -0
- package/dist/deploy/firestore/rules.js +180 -0
- package/dist/deploy/firestore/rules.js.map +1 -0
- package/dist/deploy/from-admin-app.d.ts +20 -0
- package/dist/deploy/from-admin-app.d.ts.map +1 -0
- package/dist/deploy/from-admin-app.js +18 -0
- package/dist/deploy/from-admin-app.js.map +1 -0
- package/dist/deploy/from-service-account.d.ts +29 -0
- package/dist/deploy/from-service-account.d.ts.map +1 -0
- package/dist/deploy/from-service-account.js +115 -0
- package/dist/deploy/from-service-account.js.map +1 -0
- package/dist/deploy/functions/bundle.d.ts +37 -0
- package/dist/deploy/functions/bundle.d.ts.map +1 -0
- package/dist/deploy/functions/bundle.js +181 -0
- package/dist/deploy/functions/bundle.js.map +1 -0
- package/dist/deploy/functions/core.d.ts +18 -0
- package/dist/deploy/functions/core.d.ts.map +1 -0
- package/dist/deploy/functions/core.js +211 -0
- package/dist/deploy/functions/core.js.map +1 -0
- package/dist/deploy/functions/iam.d.ts +17 -0
- package/dist/deploy/functions/iam.d.ts.map +1 -0
- package/dist/deploy/functions/iam.js +40 -0
- package/dist/deploy/functions/iam.js.map +1 -0
- package/dist/deploy/functions/operation.d.ts +39 -0
- package/dist/deploy/functions/operation.d.ts.map +1 -0
- package/dist/deploy/functions/operation.js +37 -0
- package/dist/deploy/functions/operation.js.map +1 -0
- package/dist/deploy/functions/spec.d.ts +69 -0
- package/dist/deploy/functions/spec.d.ts.map +1 -0
- package/dist/deploy/functions/spec.js +7 -0
- package/dist/deploy/functions/spec.js.map +1 -0
- package/dist/deploy/functions/types.d.ts +50 -0
- package/dist/deploy/functions/types.d.ts.map +1 -0
- package/dist/deploy/functions/types.js +3 -0
- package/dist/deploy/functions/types.js.map +1 -0
- package/dist/deploy/hosting/channels.d.ts +93 -0
- package/dist/deploy/hosting/channels.d.ts.map +1 -0
- package/dist/deploy/hosting/channels.js +134 -0
- package/dist/deploy/hosting/channels.js.map +1 -0
- package/dist/deploy/hosting/config.d.ts +28 -0
- package/dist/deploy/hosting/config.d.ts.map +1 -0
- package/dist/deploy/hosting/config.js +261 -0
- package/dist/deploy/hosting/config.js.map +1 -0
- package/dist/deploy/hosting/core.d.ts +38 -0
- package/dist/deploy/hosting/core.d.ts.map +1 -0
- package/dist/deploy/hosting/core.js +311 -0
- package/dist/deploy/hosting/core.js.map +1 -0
- package/dist/deploy/hosting/gzip.d.ts +11 -0
- package/dist/deploy/hosting/gzip.d.ts.map +1 -0
- package/dist/deploy/hosting/gzip.js +20 -0
- package/dist/deploy/hosting/gzip.js.map +1 -0
- package/dist/deploy/hosting/hash.d.ts +6 -0
- package/dist/deploy/hosting/hash.d.ts.map +1 -0
- package/dist/deploy/hosting/hash.js +17 -0
- package/dist/deploy/hosting/hash.js.map +1 -0
- package/dist/deploy/hosting/sites.d.ts +77 -0
- package/dist/deploy/hosting/sites.d.ts.map +1 -0
- package/dist/deploy/hosting/sites.js +73 -0
- package/dist/deploy/hosting/sites.js.map +1 -0
- package/dist/deploy/hosting/spec.d.ts +140 -0
- package/dist/deploy/hosting/spec.d.ts.map +1 -0
- package/dist/deploy/hosting/spec.js +8 -0
- package/dist/deploy/hosting/spec.js.map +1 -0
- package/dist/deploy/hosting/types.d.ts +71 -0
- package/dist/deploy/hosting/types.d.ts.map +1 -0
- package/dist/deploy/hosting/types.js +3 -0
- package/dist/deploy/hosting/types.js.map +1 -0
- package/dist/deploy/hosting/walk.d.ts +31 -0
- package/dist/deploy/hosting/walk.d.ts.map +1 -0
- package/dist/deploy/hosting/walk.js +167 -0
- package/dist/deploy/hosting/walk.js.map +1 -0
- package/dist/deploy/index.d.ts +51 -0
- package/dist/deploy/index.d.ts.map +1 -0
- package/dist/deploy/index.js +50 -0
- package/dist/deploy/index.js.map +1 -0
- package/dist/deploy/memoize-ttl.d.ts +58 -0
- package/dist/deploy/memoize-ttl.d.ts.map +1 -0
- package/dist/deploy/memoize-ttl.js +88 -0
- package/dist/deploy/memoize-ttl.js.map +1 -0
- package/dist/deploy/namespaces.d.ts +119 -0
- package/dist/deploy/namespaces.d.ts.map +1 -0
- package/dist/deploy/namespaces.js +192 -0
- package/dist/deploy/namespaces.js.map +1 -0
- package/dist/deploy/preflight.d.ts +119 -0
- package/dist/deploy/preflight.d.ts.map +1 -0
- package/dist/deploy/preflight.js +440 -0
- package/dist/deploy/preflight.js.map +1 -0
- package/dist/deploy/provider.d.ts +130 -0
- package/dist/deploy/provider.d.ts.map +1 -0
- package/dist/deploy/provider.js +21 -0
- package/dist/deploy/provider.js.map +1 -0
- package/dist/deploy/providers/database.d.ts +8 -0
- package/dist/deploy/providers/database.d.ts.map +1 -0
- package/dist/deploy/providers/database.js +37 -0
- package/dist/deploy/providers/database.js.map +1 -0
- package/dist/deploy/providers/firestore.d.ts +11 -0
- package/dist/deploy/providers/firestore.d.ts.map +1 -0
- package/dist/deploy/providers/firestore.js +43 -0
- package/dist/deploy/providers/firestore.js.map +1 -0
- package/dist/deploy/providers/functions.d.ts +9 -0
- package/dist/deploy/providers/functions.d.ts.map +1 -0
- package/dist/deploy/providers/functions.js +49 -0
- package/dist/deploy/providers/functions.js.map +1 -0
- package/dist/deploy/providers/hosting.d.ts +13 -0
- package/dist/deploy/providers/hosting.d.ts.map +1 -0
- package/dist/deploy/providers/hosting.js +149 -0
- package/dist/deploy/providers/hosting.js.map +1 -0
- package/dist/deploy/providers/storage.d.ts +9 -0
- package/dist/deploy/providers/storage.d.ts.map +1 -0
- package/dist/deploy/providers/storage.js +46 -0
- package/dist/deploy/providers/storage.js.map +1 -0
- package/dist/deploy/registry.d.ts +17 -0
- package/dist/deploy/registry.d.ts.map +1 -0
- package/dist/deploy/registry.js +15 -0
- package/dist/deploy/registry.js.map +1 -0
- package/dist/deploy/rtdb/rules.d.ts +21 -0
- package/dist/deploy/rtdb/rules.d.ts.map +1 -0
- package/dist/deploy/rtdb/rules.js +104 -0
- package/dist/deploy/rtdb/rules.js.map +1 -0
- package/dist/deploy/scope.d.ts +81 -0
- package/dist/deploy/scope.d.ts.map +1 -0
- package/dist/deploy/scope.js +44 -0
- package/dist/deploy/scope.js.map +1 -0
- package/dist/deploy/tools.d.ts +55 -0
- package/dist/deploy/tools.d.ts.map +1 -0
- package/dist/deploy/tools.js +329 -0
- package/dist/deploy/tools.js.map +1 -0
- package/dist/deploy/with-resolved-scope.d.ts +31 -0
- package/dist/deploy/with-resolved-scope.d.ts.map +1 -0
- package/dist/deploy/with-resolved-scope.js +73 -0
- package/dist/deploy/with-resolved-scope.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 +49 -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 +333 -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/findCollectionGroup.d.ts +80 -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/index.d.ts +15 -0
- package/dist/discover/index.d.ts.map +1 -0
- package/dist/discover/index.js +24 -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/rest-crawler-firestore.d.ts +51 -0
- package/dist/discover/rest-crawler-firestore.d.ts.map +1 -0
- package/dist/discover/rest-crawler-firestore.js +154 -0
- package/dist/discover/rest-crawler-firestore.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 +59 -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 +191 -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 +81 -0
- package/dist/discover/wire.d.ts.map +1 -0
- package/dist/discover/wire.js +308 -0
- package/dist/discover/wire.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/exempt.d.ts +11 -0
- package/dist/register/exempt.d.ts.map +1 -0
- package/dist/register/exempt.js +74 -0
- package/dist/register/exempt.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 +126 -0
- package/dist/register/index.js.map +1 -0
- package/dist/register/mapping.d.ts +17 -0
- package/dist/register/mapping.d.ts.map +1 -0
- package/dist/register/mapping.js +31 -0
- package/dist/register/mapping.js.map +1 -0
- package/dist/registry/admin-deps.d.ts +17 -0
- package/dist/registry/admin-deps.d.ts.map +1 -0
- package/dist/registry/admin-deps.js +68 -0
- package/dist/registry/admin-deps.js.map +1 -0
- package/dist/registry/compose.d.ts +68 -0
- package/dist/registry/compose.d.ts.map +1 -0
- package/dist/registry/compose.js +113 -0
- package/dist/registry/compose.js.map +1 -0
- package/dist/registry/index.d.ts +11 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +11 -0
- package/dist/registry/index.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 +719 -0
- package/dist/remote/index.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 +38 -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 +134 -0
- package/dist/serve/bundler.d.ts.map +1 -0
- package/dist/serve/bundler.js +452 -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_.BsN3bPok.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/index.html +1 -0
- package/dist/serve/docs-ui/docs/index.json +9914 -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 +87 -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 +86 -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 +82 -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 +70 -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 +86 -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 +92 -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 +78 -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 +67 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-api/index.html +53 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-api.md +73 -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 +75 -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 +95 -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 +73 -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 +146 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore.md +49 -0
- package/dist/serve/docs-ui/docs/pyric-auth/index.html +64 -0
- package/dist/serve/docs-ui/docs/pyric-auth-compat/index.html +874 -0
- package/dist/serve/docs-ui/docs/pyric-auth-compat.md +265 -0
- package/dist/serve/docs-ui/docs/pyric-auth-reference-api/index.html +112 -0
- package/dist/serve/docs-ui/docs/pyric-auth-reference-api.md +129 -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 +80 -0
- package/dist/serve/docs-ui/docs/pyric-auth-reference-sandbox-test-driver.md +107 -0
- package/dist/serve/docs-ui/docs/pyric-auth.md +84 -0
- package/dist/serve/docs-ui/docs/pyric-database/index.html +36 -0
- package/dist/serve/docs-ui/docs/pyric-database-compat/index.html +2428 -0
- package/dist/serve/docs-ui/docs/pyric-database-compat.md +850 -0
- package/dist/serve/docs-ui/docs/pyric-database-explanation-rules-authoring-and-deploy-are-separate/index.html +23 -0
- package/dist/serve/docs-ui/docs/pyric-database-explanation-rules-authoring-and-deploy-are-separate.md +29 -0
- package/dist/serve/docs-ui/docs/pyric-database-reference-rules-tooling/index.html +263 -0
- package/dist/serve/docs-ui/docs/pyric-database-reference-rules-tooling.md +288 -0
- package/dist/serve/docs-ui/docs/pyric-database-tutorials-01-author-rtdb-rules-with-constraints/index.html +116 -0
- package/dist/serve/docs-ui/docs/pyric-database-tutorials-01-author-rtdb-rules-with-constraints.md +142 -0
- package/dist/serve/docs-ui/docs/pyric-database.md +18 -0
- package/dist/serve/docs-ui/docs/pyric-firestore/index.html +54 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-compat/index.html +1345 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-compat.md +366 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-rules-tooling-is-separate/index.html +79 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-rules-tooling-is-separate.md +62 -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 +85 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-two-backends-one-surface/index.html +61 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-two-backends-one-surface.md +87 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-build-queries/index.html +105 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-build-queries.md +138 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-migrate-from-firebase-firestore/index.html +65 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-migrate-from-firebase-firestore.md +93 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-pick-a-backend/index.html +112 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-pick-a-backend.md +100 -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 +55 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-onsnapshot/index.html +61 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-onsnapshot.md +83 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-sandbox-ops/index.html +52 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-sandbox-ops.md +73 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-api/index.html +132 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-api.md +160 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-feature-matrix/index.html +793 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-feature-matrix.md +239 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-getfirestore/index.html +55 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-getfirestore.md +76 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-query-constraints/index.html +78 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-query-constraints.md +115 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-sandbox-ops/index.html +53 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-sandbox-ops.md +76 -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 +65 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-01-write-a-sandbox-demo/index.html +127 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-01-write-a-sandbox-demo.md +157 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-02-swap-to-prod-backend/index.html +85 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-02-swap-to-prod-backend.md +122 -0
- package/dist/serve/docs-ui/docs/pyric-firestore.md +69 -0
- package/dist/serve/docs-ui/docs/pyric-rules/index.html +93 -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 +74 -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 +71 -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 +70 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-simulator-vs-rules-test-api/index.html +96 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-simulator-vs-rules-test-api.md +76 -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 +75 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-value-wrappers-design/index.html +62 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-value-wrappers-design.md +80 -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 +54 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-compare-rulesets-for-weakening.md +69 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-inspect-rules-via-the-ast/index.html +89 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-inspect-rules-via-the-ast.md +113 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-lint-rules-source/index.html +50 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-lint-rules-source.md +73 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-pin-request-time/index.html +47 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-pin-request-time.md +58 -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 +78 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-resolve-module-imports/index.html +92 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-resolve-module-imports.md +93 -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 +117 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-test-rules-against-firebase/index.html +70 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-test-rules-against-firebase.md +93 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-api/index.html +129 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-api.md +176 -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 +105 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-errors/index.html +63 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-errors.md +89 -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 +98 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-stdlib-modules/index.html +239 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-stdlib-modules.md +135 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-test-case-schema/index.html +93 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-test-case-schema.md +109 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-validator-findings/index.html +86 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-validator-findings.md +113 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-value-wrappers/index.html +101 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-value-wrappers.md +134 -0
- package/dist/serve/docs-ui/docs/pyric-rules-tutorials-01-lint-your-first-rules-file/index.html +107 -0
- package/dist/serve/docs-ui/docs/pyric-rules-tutorials-01-lint-your-first-rules-file.md +142 -0
- package/dist/serve/docs-ui/docs/pyric-rules-tutorials-02-write-a-test-suite-for-your-rules/index.html +151 -0
- package/dist/serve/docs-ui/docs/pyric-rules-tutorials-02-write-a-test-suite-for-your-rules.md +194 -0
- package/dist/serve/docs-ui/docs/pyric-rules.md +88 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox/index.html +67 -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 +157 -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 +98 -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 +105 -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 +80 -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 +88 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-adapters-are-siblings.md +87 -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-how-to-multiple-isolated-sandboxes/index.html +63 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-multiple-isolated-sandboxes.md +83 -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 +154 -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 +69 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-replay-events/index.html +89 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-replay-events.md +87 -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 +86 -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 +112 -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 +70 -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 +73 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-api/index.html +77 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-api.md +117 -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 +137 -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 +114 -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 +99 -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 +128 -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 +188 -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 +77 -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 +154 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-tutorials-02-use-the-sandbox-in-a-test-harness/index.html +191 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-tutorials-02-use-the-sandbox-in-a-test-harness.md +222 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-tutorials-03-build-a-traffic-monitor/index.html +163 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-tutorials-03-build-a-traffic-monitor.md +192 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox.md +63 -0
- package/dist/serve/docs-ui/docs/pyric-storage/index.html +65 -0
- package/dist/serve/docs-ui/docs/pyric-storage-compat/index.html +1076 -0
- package/dist/serve/docs-ui/docs/pyric-storage-compat.md +337 -0
- package/dist/serve/docs-ui/docs/pyric-storage-explanation-implementation-scope/index.html +63 -0
- package/dist/serve/docs-ui/docs/pyric-storage-explanation-implementation-scope.md +104 -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 +80 -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 +104 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-enforce-rules.md +111 -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 +76 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-round-trip-metadata/index.html +77 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-round-trip-metadata.md +100 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-switch-backends/index.html +65 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-switch-backends.md +82 -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 +82 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-api/index.html +92 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-api.md +152 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-error-codes/index.html +46 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-error-codes.md +66 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-rules-subset/index.html +73 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-rules-subset.md +90 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-storage-options/index.html +45 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-storage-options.md +65 -0
- package/dist/serve/docs-ui/docs/pyric-storage-tutorials-01-upload-and-download/index.html +114 -0
- package/dist/serve/docs-ui/docs/pyric-storage-tutorials-01-upload-and-download.md +141 -0
- package/dist/serve/docs-ui/docs/pyric-storage.md +63 -0
- package/dist/serve/docs-ui/docs/pyric-tools/index.html +45 -0
- package/dist/serve/docs-ui/docs/pyric-tools-bridge/index.html +71 -0
- package/dist/serve/docs-ui/docs/pyric-tools-bridge.md +90 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy/index.html +59 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-explanation-primitives-vs-orchestrators/index.html +63 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-explanation-primitives-vs-orchestrators.md +83 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-explanation-token-caching/index.html +47 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-explanation-token-caching.md +70 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-explanation-why-no-firebase-cli/index.html +36 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-explanation-why-no-firebase-cli.md +50 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-explanation-why-this-package-exists/index.html +47 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-explanation-why-this-package-exists.md +60 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-build-projectscope-from-firebase-auth/index.html +55 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-build-projectscope-from-firebase-auth.md +68 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-build-projectscope-from-service-account/index.html +35 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-build-projectscope-from-service-account.md +52 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-bundle-and-deploy-a-function/index.html +81 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-bundle-and-deploy-a-function.md +98 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-deploy-firestore-indexes/index.html +71 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-deploy-firestore-indexes.md +91 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-deploy-firestore-rules/index.html +100 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-deploy-firestore-rules.md +105 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-deploy-hosting-rewrites/index.html +86 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-deploy-hosting-rewrites.md +92 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-deploy-realtime-database-rules/index.html +132 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-deploy-realtime-database-rules.md +165 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-deploy-to-a-preview-channel/index.html +46 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-deploy-to-a-preview-channel.md +62 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-handle-errors-and-outcomes/index.html +75 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-handle-errors-and-outcomes.md +94 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-provision-a-firestore-database/index.html +48 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-provision-a-firestore-database.md +65 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-register-tools-with-an-agent/index.html +65 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-register-tools-with-an-agent.md +82 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-api/index.html +155 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-api.md +190 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-cli-agent-io/index.html +84 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-cli-agent-io.md +66 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-error-codes/index.html +71 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-error-codes.md +102 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-firestore-namespace/index.html +138 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-firestore-namespace.md +175 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-functions-namespace/index.html +105 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-functions-namespace.md +133 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-hosting-config/index.html +194 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-hosting-config.md +95 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-hosting-namespace/index.html +99 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-hosting-namespace.md +126 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-rtdb-namespace/index.html +110 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-rtdb-namespace.md +133 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-scope-and-outcome/index.html +68 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-scope-and-outcome.md +88 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-tool-factories/index.html +160 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-tool-factories.md +104 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-tutorials-01-deploy-a-cloud-function/index.html +88 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy-tutorials-01-deploy-a-cloud-function.md +119 -0
- package/dist/serve/docs-ui/docs/pyric-tools-deploy.md +52 -0
- package/dist/serve/docs-ui/docs/pyric-tools-how-to-build-a-standalone-binary/index.html +92 -0
- package/dist/serve/docs-ui/docs/pyric-tools-how-to-build-a-standalone-binary.md +95 -0
- package/dist/serve/docs-ui/docs/pyric-tools-how-to-configure-auth-providers-and-domains/index.html +101 -0
- package/dist/serve/docs-ui/docs/pyric-tools-how-to-configure-auth-providers-and-domains.md +126 -0
- package/dist/serve/docs-ui/docs/pyric-tools-how-to-discover-a-schema-from-firestore/index.html +95 -0
- package/dist/serve/docs-ui/docs/pyric-tools-how-to-discover-a-schema-from-firestore.md +119 -0
- package/dist/serve/docs-ui/docs/pyric-tools-how-to-promote-sandbox-state-to-a-fixture/index.html +52 -0
- package/dist/serve/docs-ui/docs/pyric-tools-how-to-promote-sandbox-state-to-a-fixture.md +83 -0
- package/dist/serve/docs-ui/docs/pyric-tools-how-to-serve-persistence-and-multi-tab/index.html +232 -0
- package/dist/serve/docs-ui/docs/pyric-tools-how-to-serve-persistence-and-multi-tab.md +178 -0
- package/dist/serve/docs-ui/docs/pyric-tools-how-to-use-the-vite-plugin/index.html +340 -0
- package/dist/serve/docs-ui/docs/pyric-tools-how-to-use-the-vite-plugin.md +288 -0
- package/dist/serve/docs-ui/docs/pyric-tools-how-to-verify-against-a-captured-session/index.html +128 -0
- package/dist/serve/docs-ui/docs/pyric-tools-how-to-verify-against-a-captured-session.md +173 -0
- package/dist/serve/docs-ui/docs/pyric-tools-reference-cli/index.html +433 -0
- package/dist/serve/docs-ui/docs/pyric-tools-reference-cli.md +252 -0
- package/dist/serve/docs-ui/docs/pyric-tools-reference-verify/index.html +81 -0
- package/dist/serve/docs-ui/docs/pyric-tools-reference-verify.md +98 -0
- package/dist/serve/docs-ui/docs/pyric-tools-tutorials-getting-started/index.html +92 -0
- package/dist/serve/docs-ui/docs/pyric-tools-tutorials-getting-started.md +117 -0
- package/dist/serve/docs-ui/docs/pyric-tools-tutorials-server-adoption/index.html +221 -0
- package/dist/serve/docs-ui/docs/pyric-tools-tutorials-server-adoption.md +239 -0
- package/dist/serve/docs-ui/docs/pyric-tools-tutorials-wire-claude-code/index.html +205 -0
- package/dist/serve/docs-ui/docs/pyric-tools-tutorials-wire-claude-code.md +250 -0
- package/dist/serve/docs-ui/docs/pyric-tools.md +47 -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 +108 -0
- package/dist/serve/docs-ui/docs/ui-auth-authusers/index.html +258 -0
- package/dist/serve/docs-ui/docs/ui-auth-authusers.md +174 -0
- package/dist/serve/docs-ui/docs/ui-firestore-collectionlist/index.html +92 -0
- package/dist/serve/docs-ui/docs/ui-firestore-collectionlist.md +71 -0
- package/dist/serve/docs-ui/docs/ui-firestore-deletewithconfirm/index.html +128 -0
- package/dist/serve/docs-ui/docs/ui-firestore-deletewithconfirm.md +94 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documenteditor/index.html +154 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documenteditor.md +107 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documentlist/index.html +132 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documentlist.md +86 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documentpreview/index.html +159 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documentpreview.md +78 -0
- package/dist/serve/docs-ui/docs/ui-firestore-querybuilder/index.html +104 -0
- package/dist/serve/docs-ui/docs/ui-firestore-querybuilder.md +95 -0
- package/dist/serve/docs-ui/docs/ui-firestore-referencepicker/index.html +113 -0
- package/dist/serve/docs-ui/docs/ui-firestore-referencepicker.md +85 -0
- package/dist/serve/docs-ui/docs/ui-primitives-badge/index.html +56 -0
- package/dist/serve/docs-ui/docs/ui-primitives-badge.md +34 -0
- package/dist/serve/docs-ui/docs/ui-primitives-confirmdialog/index.html +140 -0
- package/dist/serve/docs-ui/docs/ui-primitives-confirmdialog.md +98 -0
- package/dist/serve/docs-ui/docs/ui-primitives-copybutton/index.html +58 -0
- package/dist/serve/docs-ui/docs/ui-primitives-copybutton.md +31 -0
- package/dist/serve/docs-ui/docs/ui-primitives-jsonview/index.html +58 -0
- package/dist/serve/docs-ui/docs/ui-primitives-jsonview.md +41 -0
- package/dist/serve/docs-ui/docs/ui-primitives-segmentedcontrol/index.html +70 -0
- package/dist/serve/docs-ui/docs/ui-primitives-segmentedcontrol.md +44 -0
- package/dist/serve/docs-ui/docs/ui-primitives-toast/index.html +87 -0
- package/dist/serve/docs-ui/docs/ui-primitives-toast.md +74 -0
- package/dist/serve/docs-ui/docs/ui-primitives-virtuallist/index.html +85 -0
- package/dist/serve/docs-ui/docs/ui-primitives-virtuallist.md +48 -0
- package/dist/serve/docs-ui/docs/ui-storage/index.html +154 -0
- package/dist/serve/docs-ui/docs/ui-storage-deleteselectionwithconfirm/index.html +127 -0
- package/dist/serve/docs-ui/docs/ui-storage-deleteselectionwithconfirm.md +83 -0
- package/dist/serve/docs-ui/docs/ui-storage-objectbrowser/index.html +137 -0
- package/dist/serve/docs-ui/docs/ui-storage-objectbrowser.md +84 -0
- package/dist/serve/docs-ui/docs/ui-storage-objectinspector/index.html +139 -0
- package/dist/serve/docs-ui/docs/ui-storage-objectinspector.md +87 -0
- package/dist/serve/docs-ui/docs/ui-storage-pathbreadcrumb/index.html +72 -0
- package/dist/serve/docs-ui/docs/ui-storage-pathbreadcrumb.md +51 -0
- package/dist/serve/docs-ui/docs/ui-storage-rules-aware-affordances/index.html +65 -0
- package/dist/serve/docs-ui/docs/ui-storage-rules-aware-affordances.md +53 -0
- package/dist/serve/docs-ui/docs/ui-storage-uploaddropzone/index.html +93 -0
- package/dist/serve/docs-ui/docs/ui-storage-uploaddropzone.md +72 -0
- package/dist/serve/docs-ui/docs/ui-storage-usestoragerulesgate/index.html +153 -0
- package/dist/serve/docs-ui/docs/ui-storage-usestoragerulesgate.md +105 -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 +54 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficdetail/index.html +78 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficdetail.md +53 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficlog/index.html +118 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficlog.md +63 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficstats/index.html +51 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficstats.md +40 -0
- package/dist/serve/docs-ui/docs/ui-traffic.md +96 -0
- package/dist/serve/docs-ui/docs/ui.md +88 -0
- package/dist/serve/docs-ui/index.html +1 -0
- package/dist/serve/docs-ui/llms.txt +221 -0
- package/dist/serve/entries/app.d.ts +26 -0
- package/dist/serve/entries/app.d.ts.map +1 -0
- package/dist/serve/entries/app.js +51 -0
- package/dist/serve/entries/app.js.map +1 -0
- package/dist/serve/entries/auth-helper-core.d.ts +47 -0
- package/dist/serve/entries/auth-helper-core.d.ts.map +1 -0
- package/dist/serve/entries/auth-helper-core.js +121 -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.d.ts +62 -0
- package/dist/serve/entries/auth.d.ts.map +1 -0
- package/dist/serve/entries/auth.js +128 -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 +34 -0
- package/dist/serve/entries/database.d.ts.map +1 -0
- package/dist/serve/entries/database.js +42 -0
- package/dist/serve/entries/database.js.map +1 -0
- package/dist/serve/entries/firestore.d.ts +68 -0
- package/dist/serve/entries/firestore.d.ts.map +1 -0
- package/dist/serve/entries/firestore.js +115 -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 +14 -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/runtime.d.ts +60 -0
- package/dist/serve/entries/runtime.d.ts.map +1 -0
- package/dist/serve/entries/runtime.js +555 -0
- package/dist/serve/entries/runtime.js.map +1 -0
- package/dist/serve/entries/session-store.d.ts +45 -0
- package/dist/serve/entries/session-store.d.ts.map +1 -0
- package/dist/serve/entries/session-store.js +71 -0
- package/dist/serve/entries/session-store.js.map +1 -0
- package/dist/serve/entries/storage.d.ts +23 -0
- package/dist/serve/entries/storage.d.ts.map +1 -0
- package/dist/serve/entries/storage.js +49 -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/namespace.d.ts +93 -0
- package/dist/serve/namespace.d.ts.map +1 -0
- package/dist/serve/namespace.js +367 -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/playground-ui/_astro/HomePage.BFOjZGZp.js +2 -0
- package/dist/serve/playground-ui/_astro/PlaygroundPage.3jki8il0.js +3300 -0
- package/dist/serve/playground-ui/_astro/PlaygroundPage.MhP_vFvK.css +32 -0
- package/dist/serve/playground-ui/_astro/TopBar.ChifCjLD.js +5025 -0
- package/dist/serve/playground-ui/_astro/client.D61DpmEZ.js +274 -0
- package/dist/serve/playground-ui/_astro/client.GCK88uRs.js +1 -0
- package/dist/serve/playground-ui/_astro/esbuild.BHljloGq.wasm +0 -0
- package/dist/serve/playground-ui/_astro/index.B9aLOeXL.js +29 -0
- package/dist/serve/playground-ui/_astro/index.BTKE7uRF.js +1227 -0
- package/dist/serve/playground-ui/_astro/index.BfCthstx.css +1 -0
- package/dist/serve/playground-ui/_astro/index.Mr0Dtjih.js +342 -0
- package/dist/serve/playground-ui/_astro/ort-wasm-simd-threaded.asyncify.DMmc6YqF.wasm +0 -0
- package/dist/serve/playground-ui/favicon.svg +4 -0
- package/dist/serve/playground-ui/index.html +2 -0
- package/dist/serve/playground-ui/playground/index.html +2 -0
- package/dist/serve/rules.d.ts +45 -0
- package/dist/serve/rules.d.ts.map +1 -0
- package/dist/serve/rules.js +139 -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 +32 -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 +66 -0
- package/dist/serve/standalone-assets.d.ts.map +1 -0
- package/dist/serve/standalone-assets.js +144 -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-Bncteb8z.js +23 -0
- package/dist/serve/studio-ui/assets/index-CmkJxFcG.js +4577 -0
- package/dist/serve/studio-ui/assets/index-DNK39P6C.css +1 -0
- package/dist/serve/studio-ui/assets/seed-Bab4ArXQ.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 +687 -0
- package/dist/serve/vite-plugin.js.map +1 -0
- package/dist/serve/worker/client.d.ts +668 -0
- package/dist/serve/worker/client.d.ts.map +1 -0
- package/dist/serve/worker/client.js +1635 -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 +122 -0
- package/dist/serve/worker/entry.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 +434 -0
- package/dist/serve/worker/host-auth.js.map +1 -0
- package/dist/serve/worker/host-context.d.ts +180 -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.d.ts +81 -0
- package/dist/serve/worker/host.d.ts.map +1 -0
- package/dist/serve/worker/host.js +1605 -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/protocol.d.ts +955 -0
- package/dist/serve/worker/protocol.d.ts.map +1 -0
- package/dist/serve/worker/protocol.js +197 -0
- package/dist/serve/worker/protocol.js.map +1 -0
- package/dist/serve/worker/serve-init.d.ts +192 -0
- package/dist/serve/worker/serve-init.d.ts.map +1 -0
- package/dist/serve/worker/serve-init.js +555 -0
- package/dist/serve/worker/serve-init.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 +79 -0
- package/dist/verify/fixture.d.ts.map +1 -0
- package/dist/verify/fixture.js +114 -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/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 +127 -0
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
import{L as $,_ as Et,N as Pt,O as Rt,Q as Ve,U as xt,V as St,X as Tt,Y as vt,Z as It,$ as At,a0 as Ae,a1 as Ot,a2 as $t,a3 as be,a4 as we,a5 as Ct}from"./TopBar.ChifCjLD.js";import"./index.B9aLOeXL.js";/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2017 Google LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/const ze="firebasestorage.googleapis.com",We="storageBucket",Nt=120*1e3,Ut=600*1e3;/**
|
|
17
|
+
* @license
|
|
18
|
+
* Copyright 2017 Google LLC
|
|
19
|
+
*
|
|
20
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
21
|
+
* you may not use this file except in compliance with the License.
|
|
22
|
+
* You may obtain a copy of the License at
|
|
23
|
+
*
|
|
24
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
25
|
+
*
|
|
26
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
27
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
28
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
29
|
+
* See the License for the specific language governing permissions and
|
|
30
|
+
* limitations under the License.
|
|
31
|
+
*/let p=class Ge extends vt{constructor(t,n,s=0){super(ce(t),`Firebase Storage: ${n} (${ce(t)})`),this.status_=s,this.customData={serverResponse:null},this._baseMessage=this.message,Object.setPrototypeOf(this,Ge.prototype)}get status(){return this.status_}set status(t){this.status_=t}_codeEquals(t){return ce(t)===this.code}get serverResponse(){return this.customData.serverResponse}set serverResponse(t){this.customData.serverResponse=t,this.customData.serverResponse?this.message=`${this._baseMessage}
|
|
32
|
+
${this.customData.serverResponse}`:this.message=this._baseMessage}};var f;(function(e){e.UNKNOWN="unknown",e.OBJECT_NOT_FOUND="object-not-found",e.BUCKET_NOT_FOUND="bucket-not-found",e.PROJECT_NOT_FOUND="project-not-found",e.QUOTA_EXCEEDED="quota-exceeded",e.UNAUTHENTICATED="unauthenticated",e.UNAUTHORIZED="unauthorized",e.UNAUTHORIZED_APP="unauthorized-app",e.RETRY_LIMIT_EXCEEDED="retry-limit-exceeded",e.INVALID_CHECKSUM="invalid-checksum",e.CANCELED="canceled",e.INVALID_EVENT_NAME="invalid-event-name",e.INVALID_URL="invalid-url",e.INVALID_DEFAULT_BUCKET="invalid-default-bucket",e.NO_DEFAULT_BUCKET="no-default-bucket",e.CANNOT_SLICE_BLOB="cannot-slice-blob",e.SERVER_FILE_WRONG_SIZE="server-file-wrong-size",e.NO_DOWNLOAD_URL="no-download-url",e.INVALID_ARGUMENT="invalid-argument",e.INVALID_ARGUMENT_COUNT="invalid-argument-count",e.APP_DELETED="app-deleted",e.INVALID_ROOT_OPERATION="invalid-root-operation",e.INVALID_FORMAT="invalid-format",e.INTERNAL_ERROR="internal-error",e.UNSUPPORTED_ENVIRONMENT="unsupported-environment"})(f||(f={}));function ce(e){return"storage/"+e}function ye(){const e="An unknown error occurred, please check the error payload for server response.";return new p(f.UNKNOWN,e)}function Dt(e){return new p(f.OBJECT_NOT_FOUND,"Object '"+e+"' does not exist.")}function Bt(e){return new p(f.QUOTA_EXCEEDED,"Quota for bucket '"+e+"' exceeded, please view quota on https://firebase.google.com/pricing/.")}function Lt(){const e="User is not authenticated, please authenticate using Firebase Authentication and try again.";return new p(f.UNAUTHENTICATED,e)}function Mt(){return new p(f.UNAUTHORIZED_APP,"This app does not have permission to access Firebase Storage on this project.")}function jt(e){return new p(f.UNAUTHORIZED,"User does not have permission to access '"+e+"'.")}function Ft(){return new p(f.RETRY_LIMIT_EXCEEDED,"Max retry time for operation exceeded, please try again.")}function qt(){return new p(f.CANCELED,"User canceled the upload/download.")}function Ht(e){return new p(f.INVALID_URL,"Invalid URL '"+e+"'.")}function Vt(e){return new p(f.INVALID_DEFAULT_BUCKET,"Invalid default bucket '"+e+"'.")}function zt(){return new p(f.NO_DEFAULT_BUCKET,"No default bucket found. Did you set the '"+We+"' property when initializing the app?")}function Wt(){return new p(f.CANNOT_SLICE_BLOB,"Cannot slice blob for upload. Please retry the upload.")}function Gt(e){return new p(f.UNSUPPORTED_ENVIRONMENT,`${e} is missing. Make sure to install the required polyfills. See https://firebase.google.com/docs/web/environments-js-sdk#polyfills for more information.`)}function pe(e){return new p(f.INVALID_ARGUMENT,e)}function Ke(){return new p(f.APP_DELETED,"The Firebase app was deleted.")}function Kt(e){return new p(f.INVALID_ROOT_OPERATION,"The operation '"+e+"' cannot be performed on a root reference, create a non-root reference using child, such as .child('file.png').")}function V(e,t){return new p(f.INVALID_FORMAT,"String does not match format '"+e+"': "+t)}function H(e){throw new p(f.INTERNAL_ERROR,"Internal error: "+e)}/**
|
|
33
|
+
* @license
|
|
34
|
+
* Copyright 2017 Google LLC
|
|
35
|
+
*
|
|
36
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
37
|
+
* you may not use this file except in compliance with the License.
|
|
38
|
+
* You may obtain a copy of the License at
|
|
39
|
+
*
|
|
40
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
41
|
+
*
|
|
42
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
43
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
44
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
45
|
+
* See the License for the specific language governing permissions and
|
|
46
|
+
* limitations under the License.
|
|
47
|
+
*/class w{constructor(t,n){this.bucket=t,this.path_=n}get path(){return this.path_}get isRoot(){return this.path.length===0}fullServerUrl(){const t=encodeURIComponent;return"/b/"+t(this.bucket)+"/o/"+t(this.path)}bucketOnlyServerUrl(){return"/b/"+encodeURIComponent(this.bucket)+"/o"}static makeFromBucketSpec(t,n){let s;try{s=w.makeFromUrl(t,n)}catch{return new w(t,"")}if(s.path==="")return s;throw Vt(t)}static makeFromUrl(t,n){let s=null;const r="([A-Za-z0-9.\\-_]+)";function o(y){y.path.charAt(y.path.length-1)==="/"&&(y.path_=y.path_.slice(0,-1))}const a="(/(.*))?$",i=new RegExp("^gs://"+r+a,"i"),c={bucket:1,path:3};function u(y){y.path_=decodeURIComponent(y.path)}const l="v[A-Za-z0-9_]+",h=n.replace(/[.]/g,"\\."),d="(/([^?#]*).*)?$",g=new RegExp(`^https?://${h}/${l}/b/${r}/o${d}`,"i"),P={bucket:1,path:3},R=n===ze?"(?:storage.googleapis.com|storage.cloud.google.com)":n,m="([^?#]*)",k=new RegExp(`^https?://${R}/${r}/${m}`,"i"),v=[{regex:i,indices:c,postModify:o},{regex:g,indices:P,postModify:u},{regex:k,indices:{bucket:1,path:2},postModify:u}];for(let y=0;y<v.length;y++){const K=v[y],ae=K.regex.exec(t);if(ae){const kt=ae[K.indices.bucket];let ie=ae[K.indices.path];ie||(ie=""),s=new w(kt,ie),K.postModify(s);break}}if(s==null)throw Ht(t);return s}}class Xt{constructor(t){this.promise_=Promise.reject(t)}getPromise(){return this.promise_}cancel(t=!1){}}/**
|
|
48
|
+
* @license
|
|
49
|
+
* Copyright 2017 Google LLC
|
|
50
|
+
*
|
|
51
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
52
|
+
* you may not use this file except in compliance with the License.
|
|
53
|
+
* You may obtain a copy of the License at
|
|
54
|
+
*
|
|
55
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
56
|
+
*
|
|
57
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
58
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
59
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
60
|
+
* See the License for the specific language governing permissions and
|
|
61
|
+
* limitations under the License.
|
|
62
|
+
*/function Jt(e,t,n){let s=1,r=null,o=null,a=!1,i=0;function c(){return i===2}let u=!1;function l(...m){u||(u=!0,t.apply(null,m))}function h(m){r=setTimeout(()=>{r=null,e(g,c())},m)}function d(){o&&clearTimeout(o)}function g(m,...k){if(u){d();return}if(m){d(),l.call(null,m,...k);return}if(c()||a){d(),l.call(null,m,...k);return}s<64&&(s*=2);let v;i===1?(i=2,v=0):v=(s+Math.random())*1e3,h(v)}let P=!1;function R(m){P||(P=!0,d(),!u&&(r!==null?(m||(i=2),clearTimeout(r),h(0)):m||(i=1)))}return h(0),o=setTimeout(()=>{a=!0,R(!0)},n),R}function Yt(e){e(!1)}/**
|
|
63
|
+
* @license
|
|
64
|
+
* Copyright 2017 Google LLC
|
|
65
|
+
*
|
|
66
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
67
|
+
* you may not use this file except in compliance with the License.
|
|
68
|
+
* You may obtain a copy of the License at
|
|
69
|
+
*
|
|
70
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
71
|
+
*
|
|
72
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
73
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
74
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
75
|
+
* See the License for the specific language governing permissions and
|
|
76
|
+
* limitations under the License.
|
|
77
|
+
*/function Zt(e){return e!==void 0}function Qt(e){return typeof e=="object"&&!Array.isArray(e)}function Xe(e){return typeof e=="string"||e instanceof String}function Oe(e){return _e()&&e instanceof Blob}function _e(){return typeof Blob<"u"}function ge(e,t,n,s){if(s<t)throw pe(`Invalid value for '${e}'. Expected ${t} or greater.`);if(s>n)throw pe(`Invalid value for '${e}'. Expected ${n} or less.`)}/**
|
|
78
|
+
* @license
|
|
79
|
+
* Copyright 2017 Google LLC
|
|
80
|
+
*
|
|
81
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
82
|
+
* you may not use this file except in compliance with the License.
|
|
83
|
+
* You may obtain a copy of the License at
|
|
84
|
+
*
|
|
85
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
86
|
+
*
|
|
87
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
88
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
89
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
90
|
+
* See the License for the specific language governing permissions and
|
|
91
|
+
* limitations under the License.
|
|
92
|
+
*/function M(e,t,n){let s=t;return n==null&&(s=`https://${t}`),`${n}://${s}/v0${e}`}function en(e){const t=encodeURIComponent;let n="?";for(const s in e)if(e.hasOwnProperty(s)){const r=t(s)+"="+t(e[s]);n=n+r+"&"}return n=n.slice(0,-1),n}var D;(function(e){e[e.NO_ERROR=0]="NO_ERROR",e[e.NETWORK_ERROR=1]="NETWORK_ERROR",e[e.ABORT=2]="ABORT"})(D||(D={}));/**
|
|
93
|
+
* @license
|
|
94
|
+
* Copyright 2022 Google LLC
|
|
95
|
+
*
|
|
96
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
97
|
+
* you may not use this file except in compliance with the License.
|
|
98
|
+
* You may obtain a copy of the License at
|
|
99
|
+
*
|
|
100
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
101
|
+
*
|
|
102
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
103
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
104
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
105
|
+
* See the License for the specific language governing permissions and
|
|
106
|
+
* limitations under the License.
|
|
107
|
+
*/function tn(e,t){const n=e>=500&&e<600,r=[408,429].indexOf(e)!==-1,o=t.indexOf(e)!==-1;return n||r||o}/**
|
|
108
|
+
* @license
|
|
109
|
+
* Copyright 2017 Google LLC
|
|
110
|
+
*
|
|
111
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
112
|
+
* you may not use this file except in compliance with the License.
|
|
113
|
+
* You may obtain a copy of the License at
|
|
114
|
+
*
|
|
115
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
116
|
+
*
|
|
117
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
118
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
119
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
120
|
+
* See the License for the specific language governing permissions and
|
|
121
|
+
* limitations under the License.
|
|
122
|
+
*/class nn{constructor(t,n,s,r,o,a,i,c,u,l,h,d=!0,g=!1){this.url_=t,this.method_=n,this.headers_=s,this.body_=r,this.successCodes_=o,this.additionalRetryCodes_=a,this.callback_=i,this.errorCallback_=c,this.timeout_=u,this.progressCallback_=l,this.connectionFactory_=h,this.retry=d,this.isUsingEmulator=g,this.pendingConnection_=null,this.backoffId_=null,this.canceled_=!1,this.appDelete_=!1,this.promise_=new Promise((P,R)=>{this.resolve_=P,this.reject_=R,this.start_()})}start_(){const t=(s,r)=>{if(r){s(!1,new X(!1,null,!0));return}const o=this.connectionFactory_();this.pendingConnection_=o;const a=i=>{const c=i.loaded,u=i.lengthComputable?i.total:-1;this.progressCallback_!==null&&this.progressCallback_(c,u)};this.progressCallback_!==null&&o.addUploadProgressListener(a),o.send(this.url_,this.method_,this.isUsingEmulator,this.body_,this.headers_).then(()=>{this.progressCallback_!==null&&o.removeUploadProgressListener(a),this.pendingConnection_=null;const i=o.getErrorCode()===D.NO_ERROR,c=o.getStatus();if(!i||tn(c,this.additionalRetryCodes_)&&this.retry){const l=o.getErrorCode()===D.ABORT;s(!1,new X(!1,null,l));return}const u=this.successCodes_.indexOf(c)!==-1;s(!0,new X(u,o))})},n=(s,r)=>{const o=this.resolve_,a=this.reject_,i=r.connection;if(r.wasSuccessCode)try{const c=this.callback_(i,i.getResponse());Zt(c)?o(c):o()}catch(c){a(c)}else if(i!==null){const c=ye();c.serverResponse=i.getErrorText(),this.errorCallback_?a(this.errorCallback_(i,c)):a(c)}else if(r.canceled){const c=this.appDelete_?Ke():qt();a(c)}else{const c=Ft();a(c)}};this.canceled_?n(!1,new X(!1,null,!0)):this.backoffId_=Jt(t,n,this.timeout_)}getPromise(){return this.promise_}cancel(t){this.canceled_=!0,this.appDelete_=t||!1,this.backoffId_!==null&&Yt(this.backoffId_),this.pendingConnection_!==null&&this.pendingConnection_.abort()}}class X{constructor(t,n,s){this.wasSuccessCode=t,this.connection=n,this.canceled=!!s}}function sn(e,t){t!==null&&t.length>0&&(e.Authorization="Firebase "+t)}function rn(e,t){e["X-Firebase-Storage-Version"]="webjs/"+(t??"AppManager")}function on(e,t){t&&(e["X-Firebase-GMPID"]=t)}function an(e,t){t!==null&&(e["X-Firebase-AppCheck"]=t)}function cn(e,t,n,s,r,o,a=!0,i=!1){const c=en(e.urlParams),u=e.url+c,l=Object.assign({},e.headers);return on(l,t),sn(l,n),rn(l,o),an(l,s),new nn(u,e.method,l,e.body,e.successCodes,e.additionalRetryCodes,e.handler,e.errorHandler,e.timeout,e.progressCallback,r,a,i)}/**
|
|
123
|
+
* @license
|
|
124
|
+
* Copyright 2017 Google LLC
|
|
125
|
+
*
|
|
126
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
127
|
+
* you may not use this file except in compliance with the License.
|
|
128
|
+
* You may obtain a copy of the License at
|
|
129
|
+
*
|
|
130
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
131
|
+
*
|
|
132
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
133
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
134
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
135
|
+
* See the License for the specific language governing permissions and
|
|
136
|
+
* limitations under the License.
|
|
137
|
+
*/function un(){return typeof BlobBuilder<"u"?BlobBuilder:typeof WebKitBlobBuilder<"u"?WebKitBlobBuilder:void 0}function ln(...e){const t=un();if(t!==void 0){const n=new t;for(let s=0;s<e.length;s++)n.append(e[s]);return n.getBlob()}else{if(_e())return new Blob(e);throw new p(f.UNSUPPORTED_ENVIRONMENT,"This browser doesn't seem to support creating Blobs")}}function dn(e,t,n){return e.webkitSlice?e.webkitSlice(t,n):e.mozSlice?e.mozSlice(t,n):e.slice?e.slice(t,n):null}/**
|
|
138
|
+
* @license
|
|
139
|
+
* Copyright 2021 Google LLC
|
|
140
|
+
*
|
|
141
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
142
|
+
* you may not use this file except in compliance with the License.
|
|
143
|
+
* You may obtain a copy of the License at
|
|
144
|
+
*
|
|
145
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
146
|
+
*
|
|
147
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
148
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
149
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
150
|
+
* See the License for the specific language governing permissions and
|
|
151
|
+
* limitations under the License.
|
|
152
|
+
*/function hn(e){if(typeof atob>"u")throw Gt("base-64");return atob(e)}/**
|
|
153
|
+
* @license
|
|
154
|
+
* Copyright 2017 Google LLC
|
|
155
|
+
*
|
|
156
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
157
|
+
* you may not use this file except in compliance with the License.
|
|
158
|
+
* You may obtain a copy of the License at
|
|
159
|
+
*
|
|
160
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
161
|
+
*
|
|
162
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
163
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
164
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
165
|
+
* See the License for the specific language governing permissions and
|
|
166
|
+
* limitations under the License.
|
|
167
|
+
*/const A={RAW:"raw",BASE64:"base64",BASE64URL:"base64url",DATA_URL:"data_url"};class ue{constructor(t,n){this.data=t,this.contentType=n||null}}function fn(e,t){switch(e){case A.RAW:return new ue(Je(t));case A.BASE64:case A.BASE64URL:return new ue(Ye(e,t));case A.DATA_URL:return new ue(gn(t),mn(t))}throw ye()}function Je(e){const t=[];for(let n=0;n<e.length;n++){let s=e.charCodeAt(n);if(s<=127)t.push(s);else if(s<=2047)t.push(192|s>>6,128|s&63);else if((s&64512)===55296)if(!(n<e.length-1&&(e.charCodeAt(n+1)&64512)===56320))t.push(239,191,189);else{const o=s,a=e.charCodeAt(++n);s=65536|(o&1023)<<10|a&1023,t.push(240|s>>18,128|s>>12&63,128|s>>6&63,128|s&63)}else(s&64512)===56320?t.push(239,191,189):t.push(224|s>>12,128|s>>6&63,128|s&63)}return new Uint8Array(t)}function pn(e){let t;try{t=decodeURIComponent(e)}catch{throw V(A.DATA_URL,"Malformed data URL.")}return Je(t)}function Ye(e,t){switch(e){case A.BASE64:{const r=t.indexOf("-")!==-1,o=t.indexOf("_")!==-1;if(r||o)throw V(e,"Invalid character '"+(r?"-":"_")+"' found: is it base64url encoded?");break}case A.BASE64URL:{const r=t.indexOf("+")!==-1,o=t.indexOf("/")!==-1;if(r||o)throw V(e,"Invalid character '"+(r?"+":"/")+"' found: is it base64 encoded?");t=t.replace(/-/g,"+").replace(/_/g,"/");break}}let n;try{n=hn(t)}catch(r){throw r.message.includes("polyfill")?r:V(e,"Invalid character found")}const s=new Uint8Array(n.length);for(let r=0;r<n.length;r++)s[r]=n.charCodeAt(r);return s}class Ze{constructor(t){this.base64=!1,this.contentType=null;const n=t.match(/^data:([^,]+)?,/);if(n===null)throw V(A.DATA_URL,"Must be formatted 'data:[<mediatype>][;base64],<data>");const s=n[1]||null;s!=null&&(this.base64=bn(s,";base64"),this.contentType=this.base64?s.substring(0,s.length-7):s),this.rest=t.substring(t.indexOf(",")+1)}}function gn(e){const t=new Ze(e);return t.base64?Ye(A.BASE64,t.rest):pn(t.rest)}function mn(e){return new Ze(e).contentType}function bn(e,t){return e.length>=t.length?e.substring(e.length-t.length)===t:!1}/**
|
|
168
|
+
* @license
|
|
169
|
+
* Copyright 2017 Google LLC
|
|
170
|
+
*
|
|
171
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
172
|
+
* you may not use this file except in compliance with the License.
|
|
173
|
+
* You may obtain a copy of the License at
|
|
174
|
+
*
|
|
175
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
176
|
+
*
|
|
177
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
178
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
179
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
180
|
+
* See the License for the specific language governing permissions and
|
|
181
|
+
* limitations under the License.
|
|
182
|
+
*/class C{constructor(t,n){let s=0,r="";Oe(t)?(this.data_=t,s=t.size,r=t.type):t instanceof ArrayBuffer?(n?this.data_=new Uint8Array(t):(this.data_=new Uint8Array(t.byteLength),this.data_.set(new Uint8Array(t))),s=this.data_.length):t instanceof Uint8Array&&(n?this.data_=t:(this.data_=new Uint8Array(t.length),this.data_.set(t)),s=t.length),this.size_=s,this.type_=r}size(){return this.size_}type(){return this.type_}slice(t,n){if(Oe(this.data_)){const s=this.data_,r=dn(s,t,n);return r===null?null:new C(r)}else{const s=new Uint8Array(this.data_.buffer,t,n-t);return new C(s,!0)}}static getBlob(...t){if(_e()){const n=t.map(s=>s instanceof C?s.data_:s);return new C(ln.apply(null,n))}else{const n=t.map(a=>Xe(a)?fn(A.RAW,a).data:a.data_);let s=0;n.forEach(a=>{s+=a.byteLength});const r=new Uint8Array(s);let o=0;return n.forEach(a=>{for(let i=0;i<a.length;i++)r[o++]=a[i]}),new C(r,!0)}}uploadData(){return this.data_}}/**
|
|
183
|
+
* @license
|
|
184
|
+
* Copyright 2017 Google LLC
|
|
185
|
+
*
|
|
186
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
187
|
+
* you may not use this file except in compliance with the License.
|
|
188
|
+
* You may obtain a copy of the License at
|
|
189
|
+
*
|
|
190
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
191
|
+
*
|
|
192
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
193
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
194
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
195
|
+
* See the License for the specific language governing permissions and
|
|
196
|
+
* limitations under the License.
|
|
197
|
+
*/function Qe(e){let t;try{t=JSON.parse(e)}catch{return null}return Qt(t)?t:null}/**
|
|
198
|
+
* @license
|
|
199
|
+
* Copyright 2017 Google LLC
|
|
200
|
+
*
|
|
201
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
202
|
+
* you may not use this file except in compliance with the License.
|
|
203
|
+
* You may obtain a copy of the License at
|
|
204
|
+
*
|
|
205
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
206
|
+
*
|
|
207
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
208
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
209
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
210
|
+
* See the License for the specific language governing permissions and
|
|
211
|
+
* limitations under the License.
|
|
212
|
+
*/function wn(e){if(e.length===0)return null;const t=e.lastIndexOf("/");return t===-1?"":e.slice(0,t)}function yn(e,t){const n=t.split("/").filter(s=>s.length>0).join("/");return e.length===0?n:e+"/"+n}function et(e){const t=e.lastIndexOf("/",e.length-2);return t===-1?e:e.slice(t+1)}/**
|
|
213
|
+
* @license
|
|
214
|
+
* Copyright 2017 Google LLC
|
|
215
|
+
*
|
|
216
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
217
|
+
* you may not use this file except in compliance with the License.
|
|
218
|
+
* You may obtain a copy of the License at
|
|
219
|
+
*
|
|
220
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
221
|
+
*
|
|
222
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
223
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
224
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
225
|
+
* See the License for the specific language governing permissions and
|
|
226
|
+
* limitations under the License.
|
|
227
|
+
*/function _n(e,t){return t}class b{constructor(t,n,s,r){this.server=t,this.local=n||t,this.writable=!!s,this.xform=r||_n}}let J=null;function kn(e){return!Xe(e)||e.length<2?e:et(e)}function ke(){if(J)return J;const e=[];e.push(new b("bucket")),e.push(new b("generation")),e.push(new b("metageneration")),e.push(new b("name","fullPath",!0));function t(o,a){return kn(a)}const n=new b("name");n.xform=t,e.push(n);function s(o,a){return a!==void 0?Number(a):a}const r=new b("size");return r.xform=s,e.push(r),e.push(new b("timeCreated")),e.push(new b("updated")),e.push(new b("md5Hash",null,!0)),e.push(new b("cacheControl",null,!0)),e.push(new b("contentDisposition",null,!0)),e.push(new b("contentEncoding",null,!0)),e.push(new b("contentLanguage",null,!0)),e.push(new b("contentType",null,!0)),e.push(new b("metadata","customMetadata",!0)),J=e,J}function En(e,t){function n(){const s=e.bucket,r=e.fullPath,o=new w(s,r);return t._makeStorageReference(o)}Object.defineProperty(e,"ref",{get:n})}function Pn(e,t,n){const s={};s.type="file";const r=n.length;for(let o=0;o<r;o++){const a=n[o];s[a.local]=a.xform(s,t[a.server])}return En(s,e),s}function Rn(e,t,n){const s=Qe(t);return s===null?null:Pn(e,s,n)}function tt(e,t){const n={},s=t.length;for(let r=0;r<s;r++){const o=t[r];o.writable&&(n[o.server]=e[o.local])}return JSON.stringify(n)}/**
|
|
228
|
+
* @license
|
|
229
|
+
* Copyright 2019 Google LLC
|
|
230
|
+
*
|
|
231
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
232
|
+
* you may not use this file except in compliance with the License.
|
|
233
|
+
* You may obtain a copy of the License at
|
|
234
|
+
*
|
|
235
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
236
|
+
*
|
|
237
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
238
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
239
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
240
|
+
* See the License for the specific language governing permissions and
|
|
241
|
+
* limitations under the License.
|
|
242
|
+
*/const $e="prefixes",Ce="items";function xn(e,t,n){const s={prefixes:[],items:[],nextPageToken:n.nextPageToken};if(n[$e])for(const r of n[$e]){const o=r.replace(/\/$/,""),a=e._makeStorageReference(new w(t,o));s.prefixes.push(a)}if(n[Ce])for(const r of n[Ce]){const o=e._makeStorageReference(new w(t,r.name));s.items.push(o)}return s}function Sn(e,t,n){const s=Qe(n);return s===null?null:xn(e,t,s)}class j{constructor(t,n,s,r){this.url=t,this.method=n,this.handler=s,this.timeout=r,this.urlParams={},this.headers={},this.body=null,this.errorHandler=null,this.progressCallback=null,this.successCodes=[200],this.additionalRetryCodes=[]}}/**
|
|
243
|
+
* @license
|
|
244
|
+
* Copyright 2017 Google LLC
|
|
245
|
+
*
|
|
246
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
247
|
+
* you may not use this file except in compliance with the License.
|
|
248
|
+
* You may obtain a copy of the License at
|
|
249
|
+
*
|
|
250
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
251
|
+
*
|
|
252
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
253
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
254
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
255
|
+
* See the License for the specific language governing permissions and
|
|
256
|
+
* limitations under the License.
|
|
257
|
+
*/function nt(e){if(!e)throw ye()}function Ee(e,t){function n(s,r){const o=Rn(e,r,t);return nt(o!==null),o}return n}function Tn(e,t){function n(s,r){const o=Sn(e,t,r);return nt(o!==null),o}return n}function Pe(e){function t(n,s){let r;return n.getStatus()===401?n.getErrorText().includes("Firebase App Check token is invalid")?r=Mt():r=Lt():n.getStatus()===402?r=Bt(e.bucket):n.getStatus()===403?r=jt(e.path):r=s,r.status=n.getStatus(),r.serverResponse=s.serverResponse,r}return t}function re(e){const t=Pe(e);function n(s,r){let o=t(s,r);return s.getStatus()===404&&(o=Dt(e.path)),o.serverResponse=r.serverResponse,o}return n}function vn(e,t,n){const s=t.fullServerUrl(),r=M(s,e.host,e._protocol),o="GET",a=e.maxOperationRetryTime,i=new j(r,o,Ee(e,n),a);return i.errorHandler=re(t),i}function In(e,t,n,s,r){const o={};t.isRoot?o.prefix="":o.prefix=t.path+"/",n.length>0&&(o.delimiter=n),s&&(o.pageToken=s),r&&(o.maxResults=r);const a=t.bucketOnlyServerUrl(),i=M(a,e.host,e._protocol),c="GET",u=e.maxOperationRetryTime,l=new j(i,c,Tn(e,t.bucket),u);return l.urlParams=o,l.errorHandler=Pe(t),l}function st(e,t,n){const s=t.fullServerUrl(),r=M(s,e.host,e._protocol)+"?alt=media",o="GET",a=e.maxOperationRetryTime,i=new j(r,o,(c,u)=>u,a);return i.errorHandler=re(t),n!==void 0&&(i.headers.Range=`bytes=0-${n}`,i.successCodes=[200,206]),i}function An(e,t,n,s){const r=t.fullServerUrl(),o=M(r,e.host,e._protocol),a="PATCH",i=tt(n,s),c={"Content-Type":"application/json; charset=utf-8"},u=e.maxOperationRetryTime,l=new j(o,a,Ee(e,s),u);return l.headers=c,l.body=i,l.errorHandler=re(t),l}function On(e,t){const n=t.fullServerUrl(),s=M(n,e.host,e._protocol),r="DELETE",o=e.maxOperationRetryTime;function a(c,u){}const i=new j(s,r,a,o);return i.successCodes=[200,204],i.errorHandler=re(t),i}function $n(e,t){return e&&e.contentType||t&&t.type()||"application/octet-stream"}function Cn(e,t,n){const s=Object.assign({},n);return s.fullPath=e.path,s.size=t.size(),s.contentType||(s.contentType=$n(null,t)),s}function Nn(e,t,n,s,r){const o=t.bucketOnlyServerUrl(),a={"X-Goog-Upload-Protocol":"multipart"};function i(){let v="";for(let y=0;y<2;y++)v=v+Math.random().toString().slice(2);return v}const c=i();a["Content-Type"]="multipart/related; boundary="+c;const u=Cn(t,s,r),l=tt(u,n),h="--"+c+`\r
|
|
258
|
+
Content-Type: application/json; charset=utf-8\r
|
|
259
|
+
\r
|
|
260
|
+
`+l+`\r
|
|
261
|
+
--`+c+`\r
|
|
262
|
+
Content-Type: `+u.contentType+`\r
|
|
263
|
+
\r
|
|
264
|
+
`,d=`\r
|
|
265
|
+
--`+c+"--",g=C.getBlob(h,s,d);if(g===null)throw Wt();const P={name:u.fullPath},R=M(o,e.host,e._protocol),m="POST",k=e.maxUploadRetryTime,U=new j(R,m,Ee(e,n),k);return U.urlParams=P,U.headers=a,U.body=g.uploadData(),U.errorHandler=Pe(t),U}class Re{constructor(){this.sent_=!1,this.xhr_=new XMLHttpRequest,this.initXhr(),this.errorCode_=D.NO_ERROR,this.sendPromise_=new Promise(t=>{this.xhr_.addEventListener("abort",()=>{this.errorCode_=D.ABORT,t()}),this.xhr_.addEventListener("error",()=>{this.errorCode_=D.NETWORK_ERROR,t()}),this.xhr_.addEventListener("load",()=>{t()})})}send(t,n,s,r,o){if(this.sent_)throw H("cannot .send() more than once");if(Ve(t)&&s&&(this.xhr_.withCredentials=!0),this.sent_=!0,this.xhr_.open(n,t,!0),o!==void 0)for(const a in o)o.hasOwnProperty(a)&&this.xhr_.setRequestHeader(a,o[a].toString());return r!==void 0?this.xhr_.send(r):this.xhr_.send(),this.sendPromise_}getErrorCode(){if(!this.sent_)throw H("cannot .getErrorCode() before sending");return this.errorCode_}getStatus(){if(!this.sent_)throw H("cannot .getStatus() before sending");try{return this.xhr_.status}catch{return-1}}getResponse(){if(!this.sent_)throw H("cannot .getResponse() before sending");return this.xhr_.response}getErrorText(){if(!this.sent_)throw H("cannot .getErrorText() before sending");return this.xhr_.statusText}abort(){this.xhr_.abort()}getResponseHeader(t){return this.xhr_.getResponseHeader(t)}addUploadProgressListener(t){this.xhr_.upload!=null&&this.xhr_.upload.addEventListener("progress",t)}removeUploadProgressListener(t){this.xhr_.upload!=null&&this.xhr_.upload.removeEventListener("progress",t)}}class Un extends Re{initXhr(){this.xhr_.responseType="text"}}function W(){return new Un}class Dn extends Re{initXhr(){this.xhr_.responseType="arraybuffer"}}function Bn(){return new Dn}class Ln extends Re{initXhr(){this.xhr_.responseType="blob"}}function Mn(){return new Ln}/**
|
|
266
|
+
* @license
|
|
267
|
+
* Copyright 2019 Google LLC
|
|
268
|
+
*
|
|
269
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
270
|
+
* you may not use this file except in compliance with the License.
|
|
271
|
+
* You may obtain a copy of the License at
|
|
272
|
+
*
|
|
273
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
274
|
+
*
|
|
275
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
276
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
277
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
278
|
+
* See the License for the specific language governing permissions and
|
|
279
|
+
* limitations under the License.
|
|
280
|
+
*/class B{constructor(t,n){this._service=t,n instanceof w?this._location=n:this._location=w.makeFromUrl(n,t.host)}toString(){return"gs://"+this._location.bucket+"/"+this._location.path}_newRef(t,n){return new B(t,n)}get root(){const t=new w(this._location.bucket,"");return this._newRef(this._service,t)}get bucket(){return this._location.bucket}get fullPath(){return this._location.path}get name(){return et(this._location.path)}get storage(){return this._service}get parent(){const t=wn(this._location.path);if(t===null)return null;const n=new w(this._location.bucket,t);return new B(this._service,n)}_throwIfRoot(t){if(this._location.path==="")throw Kt(t)}}function jn(e,t){e._throwIfRoot("getBytes");const n=st(e.storage,e._location,t);return e.storage.makeRequestWithTokens(n,Bn).then(s=>t!==void 0?s.slice(0,t):s)}function Fn(e,t){e._throwIfRoot("getBlob");const n=st(e.storage,e._location,t);return e.storage.makeRequestWithTokens(n,Mn).then(s=>t!==void 0?s.slice(0,t):s)}function qn(e,t,n){e._throwIfRoot("uploadBytes");const s=Nn(e.storage,e._location,ke(),new C(t,!0),n);return e.storage.makeRequestWithTokens(s,W).then(r=>({metadata:r,ref:e}))}function Hn(e){const t={prefixes:[],items:[]};return rt(e,t).then(()=>t)}async function rt(e,t,n){const r=await Vn(e,{pageToken:n});t.prefixes.push(...r.prefixes),t.items.push(...r.items),r.nextPageToken!=null&&await rt(e,t,r.nextPageToken)}function Vn(e,t){t!=null&&typeof t.maxResults=="number"&&ge("options.maxResults",1,1e3,t.maxResults);const n=t||{},s=In(e.storage,e._location,"/",n.pageToken,n.maxResults);return e.storage.makeRequestWithTokens(s,W)}function zn(e){e._throwIfRoot("getMetadata");const t=vn(e.storage,e._location,ke());return e.storage.makeRequestWithTokens(t,W)}function Wn(e,t){e._throwIfRoot("updateMetadata");const n=An(e.storage,e._location,t,ke());return e.storage.makeRequestWithTokens(n,W)}function Gn(e){e._throwIfRoot("deleteObject");const t=On(e.storage,e._location);return e.storage.makeRequestWithTokens(t,W)}function Kn(e,t){const n=yn(e._location.path,t),s=new w(e._location.bucket,n);return new B(e.storage,s)}/**
|
|
281
|
+
* @license
|
|
282
|
+
* Copyright 2017 Google LLC
|
|
283
|
+
*
|
|
284
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
285
|
+
* you may not use this file except in compliance with the License.
|
|
286
|
+
* You may obtain a copy of the License at
|
|
287
|
+
*
|
|
288
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
289
|
+
*
|
|
290
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
291
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
292
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
293
|
+
* See the License for the specific language governing permissions and
|
|
294
|
+
* limitations under the License.
|
|
295
|
+
*/function Xn(e){return/^[A-Za-z]+:\/\//.test(e)}function Jn(e,t){return new B(e,t)}function ot(e,t){if(e instanceof xe){const n=e;if(n._bucket==null)throw zt();const s=new B(n,n._bucket);return t!=null?ot(s,t):s}else return t!==void 0?Kn(e,t):e}function Yn(e,t){if(t&&Xn(t)){if(e instanceof xe)return Jn(e,t);throw pe("To use ref(service, url), the first argument must be a Storage instance.")}else return ot(e,t)}function Ne(e,t){const n=t?.[We];return n==null?null:w.makeFromBucketSpec(n,e)}function Zn(e,t,n,s={}){e.host=`${t}:${n}`;const r=Ve(t);r&&xt(`https://${e.host}/b`),e._isUsingEmulator=!0,e._protocol=r?"https":"http";const{mockUserToken:o}=s;o&&(e._overrideAuthToken=typeof o=="string"?o:St(o,e.app.options.projectId))}class xe{constructor(t,n,s,r,o,a=!1){this.app=t,this._authProvider=n,this._appCheckProvider=s,this._url=r,this._firebaseVersion=o,this._isUsingEmulator=a,this._bucket=null,this._host=ze,this._protocol="https",this._appId=null,this._deleted=!1,this._maxOperationRetryTime=Nt,this._maxUploadRetryTime=Ut,this._requests=new Set,r!=null?this._bucket=w.makeFromBucketSpec(r,this._host):this._bucket=Ne(this._host,this.app.options)}get host(){return this._host}set host(t){this._host=t,this._url!=null?this._bucket=w.makeFromBucketSpec(this._url,t):this._bucket=Ne(t,this.app.options)}get maxUploadRetryTime(){return this._maxUploadRetryTime}set maxUploadRetryTime(t){ge("time",0,Number.POSITIVE_INFINITY,t),this._maxUploadRetryTime=t}get maxOperationRetryTime(){return this._maxOperationRetryTime}set maxOperationRetryTime(t){ge("time",0,Number.POSITIVE_INFINITY,t),this._maxOperationRetryTime=t}async _getAuthToken(){if(this._overrideAuthToken)return this._overrideAuthToken;const t=this._authProvider.getImmediate({optional:!0});if(t){const n=await t.getToken();if(n!==null)return n.accessToken}return null}async _getAppCheckToken(){if(Tt(this.app)&&this.app.settings.appCheckToken)return this.app.settings.appCheckToken;const t=this._appCheckProvider.getImmediate({optional:!0});return t?(await t.getToken()).token:null}_delete(){return this._deleted||(this._deleted=!0,this._requests.forEach(t=>t.cancel()),this._requests.clear()),Promise.resolve()}_makeStorageReference(t){return new B(this,t)}_makeRequest(t,n,s,r,o=!0){if(this._deleted)return new Xt(Ke());{const a=cn(t,this._appId,s,r,n,this._firebaseVersion,o,this._isUsingEmulator);return this._requests.add(a),a.getPromise().then(()=>this._requests.delete(a),()=>this._requests.delete(a)),a}}async makeRequestWithTokens(t,n){const[s,r]=await Promise.all([this._getAuthToken(),this._getAppCheckToken()]);return this._makeRequest(t,n,s,r).getPromise()}}const Ue="@firebase/storage",De="0.14.3";/**
|
|
296
|
+
* @license
|
|
297
|
+
* Copyright 2020 Google LLC
|
|
298
|
+
*
|
|
299
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
300
|
+
* you may not use this file except in compliance with the License.
|
|
301
|
+
* You may obtain a copy of the License at
|
|
302
|
+
*
|
|
303
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
304
|
+
*
|
|
305
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
306
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
307
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
308
|
+
* See the License for the specific language governing permissions and
|
|
309
|
+
* limitations under the License.
|
|
310
|
+
*/const at="storage";/**
|
|
311
|
+
* @license
|
|
312
|
+
* Copyright 2020 Google LLC
|
|
313
|
+
*
|
|
314
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
315
|
+
* you may not use this file except in compliance with the License.
|
|
316
|
+
* You may obtain a copy of the License at
|
|
317
|
+
*
|
|
318
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
319
|
+
*
|
|
320
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
321
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
322
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
323
|
+
* See the License for the specific language governing permissions and
|
|
324
|
+
* limitations under the License.
|
|
325
|
+
*/function Qn(e,t){return e=$(e),jn(e,t)}function es(e,t,n){return e=$(e),qn(e,t,n)}function ts(e){return e=$(e),zn(e)}function ns(e,t){return e=$(e),Wn(e,t)}function ss(e){return e=$(e),Hn(e)}function rs(e){return e=$(e),Gn(e)}function te(e,t){return e=$(e),Yn(e,t)}function Be(e=Rt(),t){e=$(e);const s=Et(e,at).getImmediate({identifier:t}),r=Pt("storage");return r&&os(s,...r),s}function os(e,t,n,s={}){Zn(e,t,n,s)}/**
|
|
326
|
+
* @license
|
|
327
|
+
* Copyright 2021 Google LLC
|
|
328
|
+
*
|
|
329
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
330
|
+
* you may not use this file except in compliance with the License.
|
|
331
|
+
* You may obtain a copy of the License at
|
|
332
|
+
*
|
|
333
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
334
|
+
*
|
|
335
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
336
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
337
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
338
|
+
* See the License for the specific language governing permissions and
|
|
339
|
+
* limitations under the License.
|
|
340
|
+
*/function as(e,t){return e=$(e),Fn(e,t)}function is(e,{instanceIdentifier:t}){const n=e.getProvider("app").getImmediate(),s=e.getProvider("auth-internal"),r=e.getProvider("app-check-internal");return new xe(n,s,r,t,Ot)}function cs(){It(new At(at,is,"PUBLIC").setMultipleInstances(!0)),Ae(Ue,De,""),Ae(Ue,De,"esm2020")}cs();const us="pyric-storage",ls=1,I="blobs",_="metadata";function ds(e=us){return fs(e).then(t=>new hs(t))}class hs{db;constructor(t){this.db=t}async put(t,n,s){const r=this.db.transaction([I,_],"readwrite");r.objectStore(I).put(n,t),r.objectStore(_).put(s,t),await Y(r)}async getBlob(t){const n=this.db.transaction(I,"readonly");return le(n.objectStore(I).get(t))}async getMetadata(t){const n=this.db.transaction(_,"readonly");return le(n.objectStore(_).get(t))}async putMetadata(t,n){const s=this.db.transaction(_,"readwrite");s.objectStore(_).put(n,t),await Y(s)}async delete(t){const n=this.db.transaction([I,_],"readwrite");n.objectStore(I).delete(t),n.objectStore(_).delete(t),await Y(n)}async listByPrefix(t){const n=this.db.transaction(_,"readonly"),s=IDBKeyRange.bound(t,t+"",!1,!1);return le(n.objectStore(_).getAll(s))}async reset(){const t=this.db.transaction([I,_],"readwrite");t.objectStore(I).clear(),t.objectStore(_).clear(),await Y(t)}close(){this.db.close()}}function fs(e){return new Promise((t,n)=>{const s=indexedDB.open(e,ls);s.addEventListener("upgradeneeded",()=>{const r=s.result;r.objectStoreNames.contains(I)||r.createObjectStore(I),r.objectStoreNames.contains(_)||r.createObjectStore(_)}),s.addEventListener("success",()=>t(s.result)),s.addEventListener("error",()=>n(s.error)),s.addEventListener("blocked",()=>n(new Error(`IndexedDB open blocked for db "${e}"`)))})}function le(e){return new Promise((t,n)=>{e.addEventListener("success",()=>t(e.result)),e.addEventListener("error",()=>n(e.error))})}function Y(e){return new Promise((t,n)=>{e.addEventListener("complete",()=>t()),e.addEventListener("error",()=>n(e.error)),e.addEventListener("abort",()=>n(e.error??new Error("IndexedDB transaction aborted")))})}const ps=["==","!=","<=",">=","&&","||"];function gs(e){const t=[];let n=0;for(;n<e.length;){const s=e[n];if(s===" "||s===" "||s===`
|
|
341
|
+
`||s==="\r"){n++;continue}if(s==="/"&&e[n+1]==="/"){for(;n<e.length&&e[n]!==`
|
|
342
|
+
`;)n++;continue}if(s==="'"||s==='"'){const o=s,a=n;n++;let i="";for(;n<e.length&&e[n]!==o;)i+=e[n],n++;if(n>=e.length)throw new SyntaxError(`Unterminated string literal starting at offset ${a}.`);n++,t.push({kind:"string",value:i,pos:a});continue}if(s>="0"&&s<="9"){const o=n;let a="";for(;n<e.length&&e[n]>="0"&&e[n]<="9";)a+=e[n],n++;t.push({kind:"number",value:Number(a),pos:o});continue}if(it(s)){const o=n;let a="";for(;n<e.length&&ms(e[n]);)a+=e[n],n++;t.push({kind:"ident",value:a,pos:o});continue}const r=e.slice(n,n+2);if(ps.includes(r)){t.push({kind:"punct",value:r,pos:n}),n+=2;continue}if("{}()[].,;:=*+-/<>!|&".includes(s)){t.push({kind:"punct",value:s,pos:n}),n++;continue}throw new SyntaxError(`Unexpected character "${s}" at offset ${n}.`)}return t.push({kind:"eof",pos:e.length}),t}function it(e){return e>="a"&&e<="z"||e>="A"&&e<="Z"||e==="_"}function ms(e){return it(e)||e>="0"&&e<="9"}class bs{tokens;pos=0;constructor(t){this.tokens=t}parseService(){this.expectIdent("service"),this.expectIdent("firebase"),this.expectPunct("."),this.expectIdent("storage"),this.expectPunct("{");const t={segments:[],children:[],allows:[]};for(;!this.atPunct("}");)this.parseMatchInto(t);return this.expectPunct("}"),t}parseMatchInto(t){this.expectIdent("match");const n=this.parsePath();this.expectPunct("{");const s={segments:n,children:[],allows:[]};for(;!this.atPunct("}");)if(this.atIdent("match"))this.parseMatchInto(s);else if(this.atIdent("allow"))s.allows.push(this.parseAllow());else{const r=this.peek();throw new SyntaxError(`Expected 'match' or 'allow' inside match block at offset ${r.pos}, got "${de(r)}".`)}this.expectPunct("}"),t.children.push(s)}parsePath(){const t=[];for(;this.atPunct("/");){this.expectPunct("/");const n=this.peek();if(n.kind==="punct"&&n.value==="{"){this.expectPunct("{");const s=this.expectIdentValue();this.atPunct("=")?(this.expectPunct("="),this.expectPunct("*"),this.expectPunct("*"),this.expectPunct("}"),t.push({kind:"wildcard",name:s})):(this.expectPunct("}"),t.push({kind:"param",name:s}))}else if(n.kind==="ident")t.push({kind:"literal",value:n.value}),this.pos++;else throw new SyntaxError(`Expected path segment after '/' at offset ${n.pos}.`)}if(t.length===0)throw new SyntaxError(`Empty match path at offset ${this.peek().pos}.`);return t}parseAllow(){this.expectIdent("allow");const t=[];for(t.push(this.parseVerb());this.atPunct(",");)this.expectPunct(","),t.push(this.parseVerb());this.expectPunct(":");let n=null;return this.atIdent("if")&&(this.expectIdent("if"),n=this.parseExpression()),this.expectPunct(";"),{verbs:t,condition:n}}parseVerb(){const t=this.expect("ident");if(t.value==="read"||t.value==="write")return t.value;throw new SyntaxError(`Unsupported verb "${t.value}" at offset ${t.pos}. V1 scope supports only 'read' and 'write'; the granular forms (get/list/create/update/delete) defer to follow-up work.`)}parseExpression(){return this.parseOr()}parseOr(){let t=this.parseAnd();for(;this.atPunct("||");)this.expectPunct("||"),t={kind:"binary",op:"||",left:t,right:this.parseAnd()};return t}parseAnd(){let t=this.parseEq();for(;this.atPunct("&&");)this.expectPunct("&&"),t={kind:"binary",op:"&&",left:t,right:this.parseEq()};return t}parseEq(){let t=this.parseRel();for(;this.atPunct("==")||this.atPunct("!=");)t={kind:"binary",op:this.expect("punct").value,left:t,right:this.parseRel()};return t}parseRel(){let t=this.parseAdd();for(;this.atPunct("<")||this.atPunct(">")||this.atPunct("<=")||this.atPunct(">=");)t={kind:"binary",op:this.expect("punct").value,left:t,right:this.parseAdd()};return t}parseAdd(){let t=this.parseMul();for(;this.atPunct("+")||this.atPunct("-");)t={kind:"binary",op:this.expect("punct").value,left:t,right:this.parseMul()};return t}parseMul(){let t=this.parseUnary();for(;this.atPunct("*")||this.atPunct("/");)t={kind:"binary",op:this.expect("punct").value,left:t,right:this.parseUnary()};return t}parseUnary(){return this.atPunct("!")?(this.expectPunct("!"),{kind:"unary",op:"!",arg:this.parseUnary()}):this.parsePostfix()}parsePostfix(){let t=this.parsePrimary();for(;;)if(this.atPunct(".")){this.expectPunct(".");const n=this.expectIdentValue();t={kind:"member",target:t,name:n}}else if(this.atPunct("[")){this.expectPunct("[");const n=this.parseExpression();this.expectPunct("]"),t={kind:"index",target:t,index:n}}else return t}parsePrimary(){const t=this.peek();if(t.kind==="punct"&&t.value==="("){this.expectPunct("(");const n=this.parseExpression();return this.expectPunct(")"),n}if(t.kind==="number")return this.pos++,{kind:"literal",value:t.value};if(t.kind==="string")return this.pos++,{kind:"literal",value:t.value};if(t.kind==="ident")return this.pos++,t.value==="true"?{kind:"literal",value:!0}:t.value==="false"?{kind:"literal",value:!1}:t.value==="null"?{kind:"literal",value:null}:{kind:"ident",name:t.value};throw new SyntaxError(`Unexpected token "${de(t)}" at offset ${t.pos}.`)}peek(){return this.tokens[this.pos]}atPunct(t){const n=this.tokens[this.pos];return n.kind==="punct"&&n.value===t}atIdent(t){const n=this.tokens[this.pos];return n.kind==="ident"&&n.value===t}expect(t){const n=this.tokens[this.pos];if(n.kind!==t)throw new SyntaxError(`Expected ${t} at offset ${n.pos}, got "${de(n)}".`);return this.pos++,n}expectIdent(t){const n=this.expect("ident");if(n.value!==t)throw new SyntaxError(`Expected keyword "${t}" at offset ${n.pos}, got "${n.value}".`)}expectIdentValue(){return this.expect("ident").value}expectPunct(t){const n=this.expect("punct");if(n.value!==t)throw new SyntaxError(`Expected "${t}" at offset ${n.pos}, got "${n.value}".`)}}function de(e){return e.kind==="eof"?"<eof>":e.kind==="string"?JSON.stringify(e.value):String(e.value)}function ws(e){const t=gs(e);return{_root:new bs(t).parseService()}}function G(e){return e?{size:e.size,contentType:e.contentType,metadata:e.customMetadata}:null}function ct(e){return{size:e.size,contentType:e.contentType,metadata:e.customMetadata}}function ys(e,t){const n=_s(t.request.path),s=[];function r(a,i,c){const u=Es(a.segments,i,c);if(!u)return!1;const l=u.params,h=u.left;if(h.length===0)for(const d of a.allows){if(!d.verbs.includes(t.request.method))continue;if(d.condition?ne(x(d.condition,t,l)):!0)return!0;s.push(`match ${ks(a.segments)} ${d.verbs.join(", ")}: condition false`)}for(const d of a.children)if(r(d,h,l))return!0;return!1}const o=r(e._root,n,{});return!o&&s.length===0&&s.push(`no rule matches ${t.request.method} /${n.join("/")}`),{allowed:o,reasons:s}}function _s(e){return e.split("/").filter(t=>t.length>0)}function ks(e){return"/"+e.map(t=>t.kind==="literal"?t.value:t.kind==="param"?`{${t.name}}`:`{${t.name}=**}`).join("/")}function Es(e,t,n){let s=0;const r={...n};for(let o=0;o<e.length;o++){const a=e[o];if(a.kind==="wildcard")return r[a.name]=t.slice(s),{left:[],params:r};if(s>=t.length)return null;if(a.kind==="literal"){if(t[s]!==a.value)return null;s++}else r[a.name]=t[s],s++}return{left:t.slice(s),params:r}}function ne(e){return e!==!1&&e!==null&&e!==void 0&&!(typeof e=="number"&&Number.isNaN(e))}function x(e,t,n){switch(e.kind){case"literal":return e.value;case"ident":return e.name==="request"?Ps(t):e.name==="resource"?t.resource:e.name in n?n[e.name]:void 0;case"member":{const s=x(e.target,t,n);return s?.[e.name]}case"index":{const s=x(e.target,t,n);if(s==null)return;const r=x(e.index,t,n);return s[r]}case"unary":return!ne(x(e.arg,t,n));case"binary":{if(e.op==="&&"){const o=x(e.left,t,n);return ne(o)?x(e.right,t,n):o}if(e.op==="||"){const o=x(e.left,t,n);return ne(o)?o:x(e.right,t,n)}const s=x(e.left,t,n),r=x(e.right,t,n);switch(e.op){case"==":return s===r||s==null&&r==null;case"!=":return!(s===r||s==null&&r==null);case"<":return Z(s,r)<0;case">":return Z(s,r)>0;case"<=":return Z(s,r)<=0;case">=":return Z(s,r)>=0;case"+":return Q(s,r,(o,a)=>o+a);case"-":return Q(s,r,(o,a)=>o-a);case"*":return Q(s,r,(o,a)=>o*a);case"/":return Q(s,r,(o,a)=>o/a)}}}}function Z(e,t){return typeof e=="number"&&typeof t=="number"?e-t:typeof e=="string"&&typeof t=="string"?e<t?-1:e>t?1:0:Number.NaN}function Q(e,t,n){if(!(typeof e!="number"||typeof t!="number"))return n(e,t)}function Ps(e){return{auth:e.request.auth,resource:e.request.resource,method:e.request.method,path:e.request.path}}const Rs="pyric-default",oe=Symbol("pyric/storage/target");class xs{backend;rules;constructor(t,n=null){this.backend=t,this.rules=n}}const Le=new WeakMap,Me=new WeakMap,je=new WeakMap,Fe=new WeakMap;function Ss(e,t,n){const s=Le.get(e);if(s){const a=Fe.get(e)??null;if(t.rules!==void 0&&t.rules!==a)throw new Error(`pyric/storage: ${n} received a rules source, but this sandbox's storage service is already open ${a===null?"without rules":"with a different rules source"} — rules are honored only on the FIRST storage call per Sandbox, so these rules would be silently discarded. Configure rules on the first storage call for this sandbox.`);return s}const r=t.rules?ws(t.rules):null,o=ds(t.dbName).then(a=>new xs(a,r));return Le.set(e,o),Fe.set(e,t.rules??null),o}function he(e){return e instanceof $t}function Ts(e,t={}){const n=!he(e),s=he(e)?e.sandbox:e,r=Ss(s,t,"getStorageSandbox");if(n){const l=je.get(s);if(l)return l}const o=he(e)?e:e.withAuth(null),a=t.bucket??Rs,i=Me.get(o);if(i)return i;const c={kind:"sandbox",sandbox:s,context:o,bucket:a,servicePromise:r},u=Object.freeze({[oe]:c});return Me.set(o,u),n&&je.set(s,u),u}function vs(e,t={}){const n=t.bucket?Be(e,t.bucket):Be(e),s=Is(n),r={kind:"prod",app:e,fbStorage:n,bucket:s};return Object.freeze({[oe]:r})}function Is(e){return te(e).bucket}function E(e){const t=e[oe];if(!t)throw new TypeError("pyric/storage: not a FirebaseStorage handle — was it produced by getStorageSandbox or getStorageProd?");return t}function F(e){const t=E(e);if(t.kind!=="sandbox")throw new Error("getStorageService called on a prod-target handle — sandbox-only API");return t.servicePromise}function As(e){return`storage/${e}`}class L extends Error{code;constructor(t,n){const s=As(t);super(`${s}: ${n}`),this.name="StorageError",this.code=s,Object.setPrototypeOf(this,L.prototype)}}function Se(e){return new L("object-not-found",`no object at "${e}".`)}function Os(e,t,n){return new L("unauthorized",`${e} "${t}" denied by rules${n}.`)}function $s(e,t,n){return new L("quota-exceeded",`object at "${e}" is ${t} bytes, exceeds maxDownloadSizeBytes ${n}.`)}function Te(e){return new L("invalid-root-operation",`${e} cannot operate on the root reference.`)}function qe(e,t){return new L("invalid-format",`string does not match format "${e}": ${t}`)}const ut=new WeakMap;function N(e){const t=ut.get(e);if(!t)throw new Error("pyric/storage: expected a prod-target reference but the WeakMap had no entry. Mixing sandbox + prod refs in the same call?");return t}function ee(e,t){if(Ns(e)){if(E(e.storage).kind==="prod"){const r=te(N(e),t??"");return se(e.storage,r)}return new z(e.storage,Cs(e.fullPath,t??""))}const n=E(e);if(n.kind==="prod"){const s=t===void 0?te(n.fbStorage):te(n.fbStorage,t);return se(e,s)}return new z(e,lt(t??""))}class z{storage;bucket;fullPath;constructor(t,n){this.storage=t;const s=E(t);this.bucket=s.bucket,this.fullPath=n}get name(){if(this.fullPath==="")return"";const t=this.fullPath.lastIndexOf("/");return t===-1?this.fullPath:this.fullPath.slice(t+1)}get parent(){if(this.fullPath==="")return null;const t=this.fullPath.lastIndexOf("/"),n=t===-1?"":this.fullPath.slice(0,t);return new z(this.storage,n)}get root(){return this.fullPath===""?this:new z(this.storage,"")}toString(){return`gs://${this.bucket}/${this.fullPath}`}}function se(e,t){const n={storage:e,get bucket(){return t.bucket},get fullPath(){return t.fullPath},get name(){return t.name},get parent(){const s=t.parent;return s?se(e,s):null},get root(){return se(e,t.root)},toString(){return t.toString()}};return ut.set(n,t),n}function lt(e){return e===""?"":e.split("/").filter(t=>t.length>0).join("/")}function Cs(e,t){const n=lt(t);return e===""?n:n===""?e:`${e}/${n}`}function Ns(e){if(e===null||typeof e!="object"||oe in e)return!1;const t=e;return typeof t.fullPath=="string"&&t.storage!==void 0}function q(e,t,n){if(n?.kind==="sandbox"&&n.admin===!0||!e.rules)return;const s=ys(e.rules,t);if(s.allowed)return;const r=s.reasons.length>0?` — ${s.reasons.join("; ")}`:"";throw Os(t.request.method,t.request.path,r)}function ve(e){return{...e}}function Us(e,t,n=new Date){return{...e,contentType:t.contentType??e.contentType,cacheControl:t.cacheControl??e.cacheControl,contentDisposition:t.contentDisposition??e.contentDisposition,contentEncoding:t.contentEncoding??e.contentEncoding,contentLanguage:t.contentLanguage??e.contentLanguage,customMetadata:t.customMetadata??e.customMetadata,metageneration:Ds(e.metageneration),updated:n.toISOString()}}function Ds(e){const t=Number.parseInt(e,10);return Number.isFinite(t)?String(t+1):"1"}async function tr(e){dt(e,"getMetadata");const t=E(e.storage);if(t.kind==="prod")return await ts(N(e));const n=await F(e.storage),s=await n.backend.getMetadata(e.fullPath);if(q(n,{request:{auth:t.context.auth,method:"read",path:e.fullPath},resource:G(s)},t),!s)throw Se(e.fullPath);return ve(s)}async function nr(e,t){dt(e,"updateMetadata");const n=E(e.storage);if(n.kind==="prod")return await ns(N(e),t);const s=await F(e.storage),r=await s.backend.getMetadata(e.fullPath);if(q(s,{request:{auth:n.context.auth,method:"write",path:e.fullPath,resource:r?ct({size:r.size,contentType:t.contentType??r.contentType,customMetadata:t.customMetadata??r.customMetadata}):void 0},resource:G(r)},n),!r)throw Se(e.fullPath);const o=Us(r,t);if(await s.backend.putMetadata(e.fullPath,o),n.kind==="sandbox")try{be(n.sandbox,we({service:"storage",op:"metadata_update",path:e.fullPath,auth:n.context.auth,before:r,after:o,detail:{bucket:e.bucket}}),{service:"storage"})}catch{}return ve(o)}function dt(e,t){if(e.fullPath==="")throw Te(t)}const ht="application/octet-stream";async function Bs(e,t,n){Hs(e,"uploadBytes");const s=E(e.storage);if(s.kind==="prod"){const c=await es(N(e),t,n);return{ref:e,metadata:c.metadata}}const r=Ms(t,n?.contentType),o=Ls({ref:e,blob:r,settable:n}),a=await F(e.storage),i=await a.backend.getMetadata(e.fullPath);q(a,{request:{auth:s.context.auth,method:"write",path:e.fullPath,resource:ct({size:o.size,contentType:o.contentType,customMetadata:o.customMetadata})},resource:G(i)},s),await a.backend.put(e.fullPath,r,o);try{be(s.sandbox,we({service:"storage",op:"object_put",path:e.fullPath,auth:s.context.auth,before:i??void 0,after:o,detail:{bucket:e.bucket,size:o.size,contentType:o.contentType,overwrite:i!=null}}),{service:"storage"})}catch{}return{ref:e,metadata:ve(o)}}async function sr(e,t,n="raw",s){const{bytes:r,inferredType:o}=js(t,n),a={...s,contentType:s?.contentType??o??Fs(n)};return Bs(e,r,a)}function Ls(e){const{ref:t,blob:n,settable:s}=e,r=(e.now??new Date).toISOString(),o=qs(e.now??new Date),a=t.name;return{fullPath:t.fullPath,name:a,bucket:t.bucket,generation:o,metageneration:"1",timeCreated:r,updated:r,size:n.size,contentType:s?.contentType||n.type||ht,cacheControl:s?.cacheControl,contentDisposition:s?.contentDisposition,contentEncoding:s?.contentEncoding,contentLanguage:s?.contentLanguage,customMetadata:s?.customMetadata}}function Ms(e,t){return e instanceof Blob?t&&t!==e.type?new Blob([e],{type:t}):e:new Blob([e],{type:t??""})}function js(e,t){if(t==="raw")return{bytes:new TextEncoder().encode(e),inferredType:void 0};if(t==="base64")return{bytes:He(e),inferredType:void 0};if(t!=="data_url")throw qe(String(t),'unknown uploadString format — expected "raw", "base64", or "data_url".');const n=e.indexOf(",");if(!e.startsWith("data:")||n===-1)throw qe("data_url",'data_url requires a string starting with "data:" and containing a comma.');const s=e.slice(5,n),r=e.slice(n+1),o=s.endsWith(";base64"),a=(o?s.slice(0,-7):s)||"application/octet-stream";return{bytes:o?He(r):new TextEncoder().encode(decodeURIComponent(r)),inferredType:a}}function He(e){const t=atob(e),n=new Uint8Array(t.length);for(let s=0;s<t.length;s++)n[s]=t.charCodeAt(s);return n}function Fs(e){return e==="raw"?"text/plain;charset=utf-8":ht}function qs(e){return String(e.getTime())}function Hs(e,t){if(e.fullPath==="")throw Te(t)}async function rr(e,t){return Ie(e,"getBytes"),E(e.storage).kind==="prod"?Qn(N(e),t):(await ft(e,t)).arrayBuffer()}async function or(e,t){return Ie(e,"getBlob"),E(e.storage).kind==="prod"?as(N(e),t):ft(e,t)}async function ar(e){Ie(e,"deleteObject");const t=E(e.storage);if(t.kind==="prod"){await rs(N(e));return}const n=await F(e.storage),s=await n.backend.getMetadata(e.fullPath);q(n,{request:{auth:t.context.auth,method:"write",path:e.fullPath},resource:G(s)},t),await n.backend.delete(e.fullPath);try{be(t.sandbox,we({service:"storage",op:"object_delete",path:e.fullPath,auth:t.context.auth,before:s??void 0,detail:{bucket:e.bucket}}),{service:"storage"})}catch{}}async function ft(e,t){const n=E(e.storage);if(n.kind!=="sandbox")throw new Error("fetchBlob: sandbox-only helper called with prod target");const s=await F(e.storage),r=await s.backend.getMetadata(e.fullPath);q(s,{request:{auth:n.context.auth,method:"read",path:e.fullPath},resource:G(r)},n);const o=await s.backend.getBlob(e.fullPath);if(!o)throw Se(e.fullPath);if(typeof t=="number"&&o.size>t)throw $s(e.fullPath,o.size,t);return o}function Ie(e,t){if(e.fullPath==="")throw Te(t)}async function ir(e){const t=e.storage,n=E(t);if(n.kind==="prod"){const u=await ss(N(e));return{items:u.items.map(l=>ee(t,l.fullPath)),prefixes:u.prefixes.map(l=>ee(t,l.fullPath))}}const s=await F(t);q(s,{request:{auth:n.context.auth,method:"read",path:e.fullPath},resource:null},n);const r=e.fullPath===""?"":`${e.fullPath}/`,o=await s.backend.listByPrefix(r),a=[],i=new Set,c=[];for(const u of o){if(!u.fullPath.startsWith(r))continue;const l=u.fullPath.slice(r.length);if(l==="")continue;const h=l.indexOf("/");if(h===-1)a.push(ee(t,u.fullPath));else{const d=l.slice(0,h),g=`${r}${d}`;i.has(g)||(i.add(g),c.push(ee(t,g)))}}return c.sort((u,l)=>u.fullPath<l.fullPath?-1:u.fullPath>l.fullPath?1:0),{items:a,prefixes:c}}const pt="https://serviceusage.googleapis.com/v1",gt="https://firebase.googleapis.com/v1beta1",mt="https://firebasestorage.googleapis.com/v1beta",fe="https://firebaserules.googleapis.com/v1",bt="https://storage.googleapis.com/storage/v1",me="firebasestorage.googleapis.com";class S extends Error{status;body;reason;constructor(t,n,s,r){super(r),this.status=t,this.body=n,this.reason=s,this.name="StorageProvisioningError"}}function O(e){try{const t=JSON.parse(e);return{reason:t.error?.details?.find(s=>s.reason)?.reason,message:t.error?.message??e.slice(0,400)}}catch{return{reason:void 0,message:e.slice(0,400)}}}async function T(e,t,n){const s=await fetch(t,{...n,headers:{Authorization:`Bearer ${e}`,...n?.body?{"Content-Type":"application/json"}:{},...n?.headers??{}}}),r=s.ok?"":await s.text().catch(()=>"");return{status:s.status,ok:s.ok,body:r,response:s}}async function wt(e,t){const n=await T(e,`${pt}/projects/${encodeURIComponent(t)}/services/${me}`);if(!n.ok)return"unknown";const s=await n.response.json();return s.state==="ENABLED"?"enabled":s.state==="DISABLED"?"disabled":"unknown"}async function Vs(e,t){const n=await T(e,`${pt}/projects/${encodeURIComponent(t)}/services/${me}:enable`,{method:"POST",body:JSON.stringify({})});if(!n.ok){const{reason:s,message:r}=O(n.body);throw new S(n.status,n.body,s,`Failed to enable ${me}: ${n.status} ${r}`)}}async function yt(e,t){const n=await T(e,`${gt}/projects/${encodeURIComponent(t)}`);if(!n.ok){const{message:r}=O(n.body);throw new S(n.status,n.body,void 0,`getProject: ${n.status} ${r}`)}return(await n.response.json()).resources?.locationId??null}async function zs(e,t,n){const s=await T(e,`${gt}/projects/${encodeURIComponent(t)}/defaultLocation:finalize`,{method:"POST",body:JSON.stringify({locationId:n})});if(!s.ok){const{reason:r,message:o}=O(s.body);throw new S(s.status,s.body,r,`defaultLocation:finalize ${n}: ${s.status} ${o}`)}}async function _t(e,t){const n=await T(e,`${mt}/projects/${encodeURIComponent(t)}/buckets`);if(!n.ok){const{reason:r,message:o}=O(n.body);throw new S(n.status,n.body,r,`listBuckets: ${n.status} ${o}`)}return((await n.response.json()).buckets??[]).map(r=>({name:r.name,bucketId:r.name.split("/").pop()??r.name}))}async function Ws(e,t,n){const s=await T(e,`${mt}/projects/${encodeURIComponent(t)}/buckets/${encodeURIComponent(n)}:addFirebase`,{method:"POST",body:JSON.stringify({})});if(!s.ok){const{reason:o,message:a}=O(s.body);throw new S(s.status,s.body,o,`addFirebase ${n}: ${s.status} ${a}`)}return{name:(await s.response.json()).name??`projects/${t}/buckets/${n}`,bucketId:n}}async function Gs(e,t,n,s=`${t}.firebasestorage.app`){const r={"Content-Type":"application/json"},o=await T(e,`${fe}/projects/${encodeURIComponent(t)}/rulesets`,{method:"POST",headers:r,body:JSON.stringify({source:{files:[{name:"storage.rules",content:n}]}})});if(!o.ok){const{reason:h,message:d}=O(o.body);throw new S(o.status,o.body,h,`createRuleset: ${o.status} ${d}`)}const a=await o.response.json(),i=`projects/${t}/releases/firebase.storage/${s}`,c=await T(e,`${fe}/${i}`,{method:"PATCH",headers:r,body:JSON.stringify({release:{name:i,rulesetName:a.name}})});if(c.ok)return{rulesetName:a.name};if(c.status===404){const h=await T(e,`${fe}/projects/${encodeURIComponent(t)}/releases`,{method:"POST",headers:r,body:JSON.stringify({name:i,rulesetName:a.name})});if(!h.ok){const{reason:d,message:g}=O(h.body);throw new S(h.status,h.body,d,`createRelease firebase.storage/${s}: ${h.status} ${g}`)}return{rulesetName:a.name}}const{reason:u,message:l}=O(c.body);throw new S(c.status,c.body,u,`updateRelease firebase.storage/${s}: ${c.status} ${l}`)}function cr(e){return[{origin:[e,"http://localhost:5173","http://localhost:3000","http://localhost:4173"],method:["GET","POST","PUT","DELETE","HEAD","OPTIONS"],responseHeader:["Content-Type","Authorization","x-goog-meta-*","x-firebase-storage-version","x-goog-upload-*"],maxAgeSeconds:3600}]}async function ur(e,t){const n=await T(e,`${bt}/b/${encodeURIComponent(t)}?fields=cors`);if(!n.ok){const{reason:r,message:o}=O(n.body);throw new S(n.status,n.body,r,`getBucketCors ${t}: ${n.status} ${o}`)}return(await n.response.json()).cors??[]}async function Ks(e,t,n){const s=await T(e,`${bt}/b/${encodeURIComponent(t)}?fields=cors`,{method:"PATCH",body:JSON.stringify({cors:n})});if(!s.ok){const{reason:r,message:o}=O(s.body);throw new S(s.status,s.body,r,`setBucketCors ${t}: ${s.status} ${o}`)}}async function Xs(e,t,n={}){const s=n.locationId??"us-central",r=n.bucketId??`${t}.firebasestorage.app`,o=n.onProgress;let a=!1;await wt(e,t)!=="enabled"?(o?.({step:"enable-service",status:"start",message:"enabling Storage API"}),await Vs(e,t),a=!0,o?.({step:"settle",status:"start",message:"waiting for service propagation"}),await new Promise(k=>setTimeout(k,5e3))):o?.({step:"enable-service",status:"skip",message:"Storage API already enabled"});const c=await yt(e,t);let u=!1,l=c;c||(await zs(e,t,s),u=!0,l=s);const d=(await _t(e,t)).some(k=>k.bucketId===r);let g=!1;d||(o?.({step:"bucket",status:"start",message:`creating bucket ${r}`}),await Ws(e,t,r),g=!0);let P=!1,R;if(n.rules){o?.({step:"rules",status:"start",message:"deploying Storage rules"});const k=await Gs(e,t,n.rules,r);P=!0,R=k.rulesetName}let m=!1;return n.cors&&(await Ks(e,r,n.cors),m=!0),{ok:!0,serviceEnabled:a,locationFinalized:u,locationId:l,bucketCreated:g,bucketId:r,rulesDeployed:P,rulesetName:R,corsApplied:m}}class Js{async execute(t){const n=await t.resolveToken(),[s,r]=await Promise.all([wt(n,t.projectId),yt(n,t.projectId)]);let o=[];if(s==="enabled")try{o=(await _t(n,t.projectId)).map(i=>({name:i.name,bucketId:i.bucketId}))}catch{o=[]}return{serviceState:s,defaultLocation:r,buckets:o}}}class Ys{async execute(t,n,s){const r=await t.resolveToken();try{return{success:!0,...await Xs(r,t.projectId,{...n,onProgress:s})}}catch(o){return o instanceof S?{success:!1,error:Zs(o)}:{success:!1,error:{code:"UNKNOWN",message:o instanceof Error?o.message:String(o),recoverable:!1}}}}}function Zs(e){const t=e.reason??"",n=e.message;return t==="AUTH_PERMISSION_DENIED"||/serviceusage\.services\.enable/.test(n)?{code:"PERMISSION_DENIED",message:`${n} — the caller's identity needs roles/serviceusage.serviceUsageAdmin (or roles/owner). The default Firebase Admin SDK service account does NOT have this.`,recoverable:!1}:t==="SERVICE_DISABLED"||/SERVICE_DISABLED/.test(n)||/has not been used in project .* before or it is disabled/.test(n)?{code:"SERVICE_DISABLED",message:n,recoverable:!0}:/defaultLocation:finalize/.test(n)?{code:"LOCATION_FINALIZE_FAILED",message:n,recoverable:!1}:/addFirebase/.test(n)?{code:"BUCKET_CREATE_FAILED",message:n,recoverable:!1}:/createRuleset|updateRelease/.test(n)?{code:"RULES_DEPLOY_FAILED",message:n,recoverable:!0}:/setBucketCors|getBucketCors/.test(n)?{code:"CORS_UPDATE_FAILED",message:n,recoverable:!1}:{code:"UNKNOWN",message:n,recoverable:!1}}function lr(e){const{scope:t}=e,n=new Js,s=new Ys;return[{name:"storage_get_status",description:"Probe whether Firebase Storage is enabled on the project. Returns the underlying service state (enabled/disabled/unknown), the default GCP resources location, and the list of Firebase-linked Storage buckets. Use this before `storage_provision` to see what work is actually needed.",parameters:{type:"object",properties:{}},async execute(){const r=await n.execute(t);return{ok:!0,summary:`Storage service is ${r.serviceState}; ${r.buckets.length} linked bucket(s)`,data:r}}},{name:"storage_provision",description:"Enable Firebase Storage on the project end-to-end: enable the underlying `firebasestorage.googleapis.com` service, set the default GCP resources location (one-time, irreversible), and create + link the default Firebase Storage bucket. Optionally deploys a Storage rules source as the final step. Idempotent — each sub-step probes state before mutating. **Caller identity requirements**: enabling the service requires `roles/serviceusage.serviceUsageAdmin` or `roles/owner`. The default Firebase Admin SDK service account does NOT have this — returns `PERMISSION_DENIED` in that case. Grant the role manually via IAM Console once if you want this tool to work server-side, or call the underlying `provisionStorage(token, projectId)` function directly from a browser context using a `cloud-platform`-scoped user OAuth token.",parameters:{type:"object",properties:{locationId:{type:"string",description:'Default GCP resources location to use when the project has not been finalized yet. IRREVERSIBLE once set. Common values: "us-central", "nam5", "eur3". Default: "us-central".'},bucketId:{type:"string",description:'Override the default Firebase Storage bucket ID. Defaults to "{projectId}.firebasestorage.app".'},rules:{type:"string",description:"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."},cors:{type:"array",description:"CORS rules to apply to the bucket. Required for browser-side reads/writes from a non-Firebase origin. Omit to leave existing CORS untouched.",items:{type:"object",properties:{origin:{type:"array",items:{type:"string"}},method:{type:"array",items:{type:"string"}},responseHeader:{type:"array",items:{type:"string"}},maxAgeSeconds:{type:"number"}},required:["origin","method"]}}}},async execute(r,o){const a=o.report,i=await s.execute(t,r??{},a);return{ok:i.success,summary:i.success?`Provisioned Storage bucket ${i.bucketId}`:`Storage provisioning failed (${i.error.code}): ${i.error.message}`,data:i}}}]}function dr(e){return e[Ct]==="sandbox"?Ts(e.sandbox):vs(e.firebaseApp)}export{Js as InspectStorageHandler,Ys as ProvisionStorageHandler,L as StorageError,S as StorageProvisioningError,oe as TARGET_SYMBOL,Ws as addFirebaseToBucket,lr as createStorageAdminTools,cr as defaultPlaygroundCors,ar as deleteObject,Gs as deployStorageRules,Vs as enableStorageService,ys as evaluateStorageRules,zs as finalizeDefaultLocation,or as getBlob,ur as getBucketCors,rr as getBytes,yt as getDefaultLocation,tr as getMetadata,dr as getStorage,vs as getStorageProd,Ts as getStorageSandbox,wt as getStorageServiceState,ir as listAll,_t as listFirebaseBuckets,ws as parseStorageRules,Xs as provisionStorage,ee as ref,Ks as setBucketCors,nr as updateMetadata,Bs as uploadBytes,sr as uploadString};
|
|
Binary file
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"><link rel="icon" type="image/svg+xml" href="/__pyric/playground/favicon.svg"><title>Playground — Home</title><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 href="https://fonts.googleapis.com/icon?family=Material+Symbols+Outlined" rel="stylesheet"><link rel="stylesheet" href="/__pyric/playground/_astro/index.BfCthstx.css">
|
|
2
|
+
<link rel="stylesheet" href="/__pyric/playground/_astro/PlaygroundPage.MhP_vFvK.css"></head> <body> <div id="root"> <style>astro-island,astro-slot,astro-static-slot{display:contents}</style><script>(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).only=e;window.dispatchEvent(new Event("astro:only"));})();</script><script>(()=>{var A=Object.defineProperty;var g=(i,o,a)=>o in i?A(i,o,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[o]=a;var d=(i,o,a)=>g(i,typeof o!="symbol"?o+"":o,a);{let i={0:t=>m(t),1:t=>a(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(a(t)),5:t=>new Set(a(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t),11:t=>1/0*t},o=t=>{let[l,e]=t;return l in i?i[l](e):void 0},a=t=>t.map(o),m=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([l,e])=>[l,o(e)]));class y extends HTMLElement{constructor(){super(...arguments);d(this,"Component");d(this,"hydrator");d(this,"hydrate",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let c=this.querySelectorAll("astro-slot"),n={},h=this.querySelectorAll("template[data-astro-template]");for(let r of h){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("data-astro-template")||"default"]=r.innerHTML,r.remove())}for(let r of c){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("name")||"default"]=r.innerHTML)}let p;try{p=this.hasAttribute("props")?m(JSON.parse(this.getAttribute("props"))):{}}catch(r){let s=this.getAttribute("component-url")||"<unknown>",v=this.getAttribute("component-export");throw v&&(s+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute("props"),r),r}let u;await this.hydrator(this)(this.Component,p,n,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});d(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),c.disconnect(),this.childrenConnectedCallback()},c=new MutationObserver(()=>{var n;((n=this.lastChild)==null?void 0:n.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});c.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}async start(){let e=JSON.parse(this.getAttribute("opts")),c=this.getAttribute("client");if(Astro[c]===void 0){window.addEventListener(`astro:${c}`,()=>this.start(),{once:!0});return}try{await Astro[c](async()=>{let n=this.getAttribute("renderer-url"),[h,{default:p}]=await Promise.all([import(this.getAttribute("component-url")),n?import(n):()=>()=>{}]),u=this.getAttribute("component-export")||"default";if(!u.includes("."))this.Component=h[u];else{this.Component=h;for(let f of u.split("."))this.Component=this.Component[f]}return this.hydrator=p,this.hydrate},e,this)}catch(n){console.error(`[astro-island] Error hydrating ${this.getAttribute("component-url")}`,n)}}attributeChangedCallback(){this.hydrate()}}d(y,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",y)}})();</script><astro-island uid="Z1RKo38" component-url="/__pyric/playground/_astro/HomePage.BFOjZGZp.js" component-export="HomePage" renderer-url="/__pyric/playground/_astro/client.GCK88uRs.js" props="{}" ssr client="only" opts="{"name":"HomePage","value":"react"}"></astro-island> </div> </body></html>
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"><link rel="icon" type="image/svg+xml" href="/__pyric/playground/favicon.svg"><title>Playground</title><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 href="https://fonts.googleapis.com/icon?family=Material+Symbols+Outlined" rel="stylesheet"><link rel="stylesheet" href="/__pyric/playground/_astro/index.BfCthstx.css">
|
|
2
|
+
<link rel="stylesheet" href="/__pyric/playground/_astro/PlaygroundPage.MhP_vFvK.css"></head> <body> <div id="root"> <style>astro-island,astro-slot,astro-static-slot{display:contents}</style><script>(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).only=e;window.dispatchEvent(new Event("astro:only"));})();</script><script>(()=>{var A=Object.defineProperty;var g=(i,o,a)=>o in i?A(i,o,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[o]=a;var d=(i,o,a)=>g(i,typeof o!="symbol"?o+"":o,a);{let i={0:t=>m(t),1:t=>a(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(a(t)),5:t=>new Set(a(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t),11:t=>1/0*t},o=t=>{let[l,e]=t;return l in i?i[l](e):void 0},a=t=>t.map(o),m=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([l,e])=>[l,o(e)]));class y extends HTMLElement{constructor(){super(...arguments);d(this,"Component");d(this,"hydrator");d(this,"hydrate",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let c=this.querySelectorAll("astro-slot"),n={},h=this.querySelectorAll("template[data-astro-template]");for(let r of h){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("data-astro-template")||"default"]=r.innerHTML,r.remove())}for(let r of c){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("name")||"default"]=r.innerHTML)}let p;try{p=this.hasAttribute("props")?m(JSON.parse(this.getAttribute("props"))):{}}catch(r){let s=this.getAttribute("component-url")||"<unknown>",v=this.getAttribute("component-export");throw v&&(s+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute("props"),r),r}let u;await this.hydrator(this)(this.Component,p,n,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});d(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),c.disconnect(),this.childrenConnectedCallback()},c=new MutationObserver(()=>{var n;((n=this.lastChild)==null?void 0:n.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});c.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}async start(){let e=JSON.parse(this.getAttribute("opts")),c=this.getAttribute("client");if(Astro[c]===void 0){window.addEventListener(`astro:${c}`,()=>this.start(),{once:!0});return}try{await Astro[c](async()=>{let n=this.getAttribute("renderer-url"),[h,{default:p}]=await Promise.all([import(this.getAttribute("component-url")),n?import(n):()=>()=>{}]),u=this.getAttribute("component-export")||"default";if(!u.includes("."))this.Component=h[u];else{this.Component=h;for(let f of u.split("."))this.Component=this.Component[f]}return this.hydrator=p,this.hydrate},e,this)}catch(n){console.error(`[astro-island] Error hydrating ${this.getAttribute("component-url")}`,n)}}attributeChangedCallback(){this.hydrate()}}d(y,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",y)}})();</script><astro-island uid="1r9Njk" component-url="/__pyric/playground/_astro/PlaygroundPage.3jki8il0.js" component-export="PlaygroundPage" renderer-url="/__pyric/playground/_astro/client.GCK88uRs.js" props="{}" ssr client="only" opts="{"name":"PlaygroundPage","value":"react"}"></astro-island> </div> </body></html>
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type FSWatcher } from 'node:fs';
|
|
2
|
+
import type { FirebaseJson } from '../cli/firebase-json.js';
|
|
3
|
+
export interface LoadedRules {
|
|
4
|
+
/** Plain-v2 source ready for the sandbox, or null when the project has no
|
|
5
|
+
* rules file configured/present. */
|
|
6
|
+
rules: string | null;
|
|
7
|
+
rulesHash: string | null;
|
|
8
|
+
/** Where it came from (diagnostics + the P3 watcher target). */
|
|
9
|
+
sourcePath: string | null;
|
|
10
|
+
}
|
|
11
|
+
export interface LoadedDatabaseRules {
|
|
12
|
+
rules: {
|
|
13
|
+
rules: Record<string, unknown>;
|
|
14
|
+
} | null;
|
|
15
|
+
rulesHash: string | null;
|
|
16
|
+
sourcePath: string | null;
|
|
17
|
+
databaseUrl: string | null;
|
|
18
|
+
}
|
|
19
|
+
export declare function rulesHashOf(source: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* Resolve + lint a raw rules source into sandbox-ready plain v2.
|
|
22
|
+
* Throws with an actionable message on unresolvable imports or lint errors.
|
|
23
|
+
*/
|
|
24
|
+
export declare function prepareRulesSource(raw: string, sourcePath: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* Load the project rules per `firebase.json` (`firestore.rules` path,
|
|
27
|
+
* defaulting to `firestore.rules` in cwd when the key is absent but the file
|
|
28
|
+
* exists). Missing file with no explicit config → `{ rules: null }` (serving
|
|
29
|
+
* without rules is fine; the runtime logs it). Missing file that IS
|
|
30
|
+
* explicitly configured → throw (the project says it should exist).
|
|
31
|
+
*/
|
|
32
|
+
export declare function loadProjectRules(cwd: string, config: FirebaseJson | null): Promise<LoadedRules>;
|
|
33
|
+
export declare function loadProjectDatabaseRules(cwd: string, config: FirebaseJson | null): Promise<LoadedDatabaseRules>;
|
|
34
|
+
/**
|
|
35
|
+
* Watch the rules file and invoke `onChange` with freshly prepared
|
|
36
|
+
* (resolved + linted) source. Broken intermediate saves are LOGGED and
|
|
37
|
+
* skipped — the last-good ruleset stays live (the write_file lesson:
|
|
38
|
+
* never replace a working ruleset with un-evaluatable source).
|
|
39
|
+
* Debounced; returns the watcher for shutdown.
|
|
40
|
+
*/
|
|
41
|
+
export declare function watchProjectRules(sourcePath: string, onChange: (next: {
|
|
42
|
+
rules: string;
|
|
43
|
+
rulesHash: string;
|
|
44
|
+
}) => void, onError: (message: string) => void, debounceMs?: number): FSWatcher;
|
|
45
|
+
//# sourceMappingURL=rules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/serve/rules.ts"],"names":[],"mappings":"AAYA,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAIhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5D,MAAM,WAAW,WAAW;IAC1B;yCACqC;IACrC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,gEAAgE;IAChE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC;IACjD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CA0B1E;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,YAAY,GAAG,IAAI,GAC1B,OAAO,CAAC,WAAW,CAAC,CAkBtB;AAED,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,YAAY,GAAG,IAAI,GAC1B,OAAO,CAAC,mBAAmB,CAAC,CAuC9B;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,KAAK,IAAI,EAC9D,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EAClC,UAAU,SAAM,GACf,SAAS,CAyBX"}
|