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,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth session persistence for `pyric dev` — the one genuine
|
|
3
|
+
* client-fidelity item in the persistence model (flow doc section 3c): real
|
|
4
|
+
* Firebase keeps you signed in across reloads by DEFAULT
|
|
5
|
+
* (`browserLocalPersistence`), so the served sandbox does too.
|
|
6
|
+
*
|
|
7
|
+
* The user *database* persists with the substrate (`--persist`); the
|
|
8
|
+
* *session* persists like the real client — independent of data mode, in
|
|
9
|
+
* web storage, honoring `setPersistence` semantics:
|
|
10
|
+
*
|
|
11
|
+
* LOCAL (default) → localStorage (survives reload + browser restart)
|
|
12
|
+
* SESSION → sessionStorage (survives reload, not the tab)
|
|
13
|
+
* NONE → nothing stored
|
|
14
|
+
*
|
|
15
|
+
* A restored session only resolves when the referenced uid still exists in
|
|
16
|
+
* the sandbox user DB — so ephemeral mode drops helper-created sessions on
|
|
17
|
+
* reload, consistently (`sandbox.restoreSession` throws, we clear).
|
|
18
|
+
*
|
|
19
|
+
* Pure over injected Storage objects so the logic is bun-testable; the
|
|
20
|
+
* browser wiring (real storages, `onAuthStateChanged` recording, restore at
|
|
21
|
+
* init) lives in the entries that import this.
|
|
22
|
+
*/
|
|
23
|
+
const KEY = 'pyric:serve:auth-session';
|
|
24
|
+
export class SessionStore {
|
|
25
|
+
stores;
|
|
26
|
+
mode = 'LOCAL'; // firebase's default persistence
|
|
27
|
+
constructor(stores) {
|
|
28
|
+
this.stores = stores;
|
|
29
|
+
}
|
|
30
|
+
/** `setPersistence` parity: switch the backing store and MIGRATE any
|
|
31
|
+
* current session into it (the real SDK carries the session over). */
|
|
32
|
+
setMode(mode) {
|
|
33
|
+
const current = this.load();
|
|
34
|
+
this.clear();
|
|
35
|
+
this.mode = mode;
|
|
36
|
+
if (current)
|
|
37
|
+
this.save(current.uid);
|
|
38
|
+
}
|
|
39
|
+
save(uid) {
|
|
40
|
+
this.clear(); // a session lives in exactly one store
|
|
41
|
+
if (this.mode === 'NONE')
|
|
42
|
+
return;
|
|
43
|
+
this.backing().setItem(KEY, JSON.stringify({ uid }));
|
|
44
|
+
}
|
|
45
|
+
/** Reads BOTH storages (localStorage first — matches lookup order when a
|
|
46
|
+
* prior page used a different mode). */
|
|
47
|
+
load() {
|
|
48
|
+
for (const store of [this.stores.local, this.stores.session]) {
|
|
49
|
+
const raw = store.getItem(KEY);
|
|
50
|
+
if (!raw)
|
|
51
|
+
continue;
|
|
52
|
+
try {
|
|
53
|
+
const parsed = JSON.parse(raw);
|
|
54
|
+
if (parsed && typeof parsed.uid === 'string')
|
|
55
|
+
return parsed;
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
store.removeItem(KEY); // corrupt → drop, never throw at page init
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
clear() {
|
|
64
|
+
this.stores.local.removeItem(KEY);
|
|
65
|
+
this.stores.session.removeItem(KEY);
|
|
66
|
+
}
|
|
67
|
+
backing() {
|
|
68
|
+
return this.mode === 'SESSION' ? this.stores.session : this.stores.local;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=session-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../../src/serve/entries/session-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,MAAM,GAAG,GAAG,0BAA0B,CAAC;AAWvC,MAAM,OAAO,YAAY;IAGM;IAFrB,IAAI,GAAgB,OAAO,CAAC,CAAC,iCAAiC;IAEtE,YAA6B,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAEtD;2EACuE;IACvE,OAAO,CAAC,IAAiB;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,OAAO;YAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,GAAW;QACd,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,uCAAuC;QACrD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO;QACjC,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAA0B,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED;6CACyC;IACzC,IAAI;QACF,KAAK,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7D,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAkB,CAAC;gBAChD,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ;oBAAE,OAAO,MAAM,CAAC;YAC9D,CAAC;YAAC,MAAM,CAAC;gBACP,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,2CAA2C;YACpE,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAEO,OAAO;QACb,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IAC3E,CAAC;CACF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The bundle the import map serves for `firebase/storage`.
|
|
3
|
+
*
|
|
4
|
+
* Served apps keep their normal Firebase Storage imports. In worker mode, browse
|
|
5
|
+
* and metadata reads use the shared worker-hosted object store; operations that
|
|
6
|
+
* still lack a worker protocol fail loudly. In in-page fallback mode, the entry
|
|
7
|
+
* delegates to `pyric/storage` against the page sandbox.
|
|
8
|
+
*/
|
|
9
|
+
import * as ip from 'pyric/storage';
|
|
10
|
+
import { type FirebaseStorage } from 'pyric/storage';
|
|
11
|
+
export declare function getStorage(app?: unknown, _bucketUrl?: string): FirebaseStorage;
|
|
12
|
+
export declare const ref: typeof ip.ref;
|
|
13
|
+
export declare const listAll: typeof ip.listAll;
|
|
14
|
+
export declare const getMetadata: typeof ip.getMetadata;
|
|
15
|
+
export declare const getBlob: typeof ip.getBlob;
|
|
16
|
+
export declare const StorageError: typeof ip.StorageError;
|
|
17
|
+
export declare function connectStorageEmulator(_storage: unknown, _host: string, _port: number, _options?: unknown): void;
|
|
18
|
+
export declare const uploadBytes: typeof ip.uploadBytes;
|
|
19
|
+
export declare const getBytes: typeof ip.getBytes;
|
|
20
|
+
export declare const deleteObject: typeof ip.deleteObject;
|
|
21
|
+
export declare const uploadString: typeof ip.uploadString;
|
|
22
|
+
export declare const updateMetadata: typeof ip.updateMetadata;
|
|
23
|
+
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/serve/entries/storage.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,eAAe,CAAC;AAavB,wBAAgB,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,eAAe,CAG9E;AAED,eAAO,MAAM,GAAG,EAAuC,OAAO,EAAE,CAAC,GAAG,CAAC;AACrE,eAAO,MAAM,OAAO,EAA+C,OAAO,EAAE,CAAC,OAAO,CAAC;AACrF,eAAO,MAAM,WAAW,EAEnB,OAAO,EAAE,CAAC,WAAW,CAAC;AAC3B,eAAO,MAAM,OAAO,EAA+C,OAAO,EAAE,CAAC,OAAO,CAAC;AAErF,eAAO,MAAM,YAAY,wBAAkB,CAAC;AAM5C,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,OAAO,EACjB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,OAAO,GACjB,IAAI,CAEN;AAqBD,eAAO,MAAM,WAAW,EAAuD,OAAO,EAAE,CAAC,WAAW,CAAC;AACrG,eAAO,MAAM,QAAQ,EAAiD,OAAO,EAAE,CAAC,QAAQ,CAAC;AACzF,eAAO,MAAM,YAAY,EAAyD,OAAO,EAAE,CAAC,YAAY,CAAC;AAEzG,eAAO,MAAM,YAAY,wBAAkD,CAAC;AAC5E,eAAO,MAAM,cAAc,0BAAsD,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The bundle the import map serves for `firebase/storage`.
|
|
3
|
+
*
|
|
4
|
+
* Served apps keep their normal Firebase Storage imports. In worker mode, browse
|
|
5
|
+
* and metadata reads use the shared worker-hosted object store; operations that
|
|
6
|
+
* still lack a worker protocol fail loudly. In in-page fallback mode, the entry
|
|
7
|
+
* delegates to `pyric/storage` against the page sandbox.
|
|
8
|
+
*/
|
|
9
|
+
import * as ip from 'pyric/storage';
|
|
10
|
+
import { getStorage as pyricGetStorage, getStorageSandbox, } from 'pyric/storage';
|
|
11
|
+
import { getStorage as workerGetStorage, getBlob as workerGetBlob, getBytes as workerGetBytes, getMetadata as workerGetMetadata, listAll as workerListAll, ref as workerRef, uploadBytes as workerUploadBytes, deleteObject as workerDeleteObject, } from '../worker/client.js';
|
|
12
|
+
import { sandbox, useWorker, workerDb } from './runtime.js';
|
|
13
|
+
export function getStorage(app, _bucketUrl) {
|
|
14
|
+
if (useWorker)
|
|
15
|
+
return workerGetStorage(workerDb);
|
|
16
|
+
return app ? pyricGetStorage(app) : getStorageSandbox(sandbox);
|
|
17
|
+
}
|
|
18
|
+
export const ref = (useWorker ? workerRef : ip.ref);
|
|
19
|
+
export const listAll = (useWorker ? workerListAll : ip.listAll);
|
|
20
|
+
export const getMetadata = (useWorker ? workerGetMetadata : ip.getMetadata);
|
|
21
|
+
export const getBlob = (useWorker ? workerGetBlob : ip.getBlob);
|
|
22
|
+
export const StorageError = ip.StorageError;
|
|
23
|
+
function acceptedNoOp(name) {
|
|
24
|
+
console.info(`[pyric dev] firebase/storage ${name}() is ignored; this page already uses the pyric sandbox.`);
|
|
25
|
+
}
|
|
26
|
+
export function connectStorageEmulator(_storage, _host, _port, _options) {
|
|
27
|
+
acceptedNoOp('connectStorageEmulator');
|
|
28
|
+
}
|
|
29
|
+
function unsupportedWorkerApi(name) {
|
|
30
|
+
throw new Error(`firebase/storage ${name}() is not supported over the pyric SharedWorker yet. ` +
|
|
31
|
+
'Use the in-page fallback for this operation.');
|
|
32
|
+
}
|
|
33
|
+
function workerOrInPage(name, fn) {
|
|
34
|
+
return (useWorker ? (() => unsupportedWorkerApi(name)) : fn);
|
|
35
|
+
}
|
|
36
|
+
// Byte ops now have a worker protocol (base64 `storage.putBytes` /
|
|
37
|
+
// `storage.getBytes` / `storage.deleteObject`), so worker mode routes them to
|
|
38
|
+
// the shared object store instead of throwing. No lens is attached: storage
|
|
39
|
+
// rules apply only when the HOST configured them on the sandbox's storage
|
|
40
|
+
// service — the served worker currently configures none (setRules deploys
|
|
41
|
+
// Firestore/RTDB only), so worker-mode storage is effectively open today.
|
|
42
|
+
// The admin lens matters for embedding/test hosts that pre-open the service
|
|
43
|
+
// with rules. Payloads are capped at 8 MiB per op.
|
|
44
|
+
export const uploadBytes = (useWorker ? workerUploadBytes : ip.uploadBytes);
|
|
45
|
+
export const getBytes = (useWorker ? workerGetBytes : ip.getBytes);
|
|
46
|
+
export const deleteObject = (useWorker ? workerDeleteObject : ip.deleteObject);
|
|
47
|
+
export const uploadString = workerOrInPage('uploadString', ip.uploadString);
|
|
48
|
+
export const updateMetadata = workerOrInPage('updateMetadata', ip.updateMetadata);
|
|
49
|
+
//# sourceMappingURL=storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/serve/entries/storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-tab realtime sync wiring for `pyric dev`.
|
|
3
|
+
*
|
|
4
|
+
* Two independent channels carry two independent kinds of state:
|
|
5
|
+
*
|
|
6
|
+
* 1. Firestore data — delegated entirely to `sandbox.enableTabSync()`.
|
|
7
|
+
* That call attaches a BroadcastChannel-based write-propagation and
|
|
8
|
+
* late-join handshake (hello/state) internally; we just supply the
|
|
9
|
+
* channel so the name is under our control.
|
|
10
|
+
*
|
|
11
|
+
* 2. Auth state — `enableTabSync` only carries Firestore write events;
|
|
12
|
+
* auth sign-in / sign-out lives entirely outside the Firestore environment.
|
|
13
|
+
* We bridge it on a SECOND channel using a simple full-state protocol:
|
|
14
|
+
* any auth change broadcasts the complete user DB + current UID; a new tab
|
|
15
|
+
* announces itself with `hello` and receives the current state in reply.
|
|
16
|
+
*
|
|
17
|
+
* Why full-state instead of deltas?
|
|
18
|
+
* Auth payloads are tiny (a handful of users). Broadcasting the entire user DB
|
|
19
|
+
* + current UID on every change avoids ordering bugs where a `seedUsers` arrives
|
|
20
|
+
* before a `restoreSession` (or vice versa) and leaves the receiving tab in an
|
|
21
|
+
* inconsistent partial state. One atomic message = one safe apply.
|
|
22
|
+
*
|
|
23
|
+
* Echo-loop prevention (load-bearing):
|
|
24
|
+
* Applying a received auth state calls `seedUsers` + `restoreSession`, which
|
|
25
|
+
* fire `subscribeUsers` / `onAuthStateChanged` callbacks — the same callbacks
|
|
26
|
+
* that trigger outbound broadcasts. Without a guard this creates an infinite
|
|
27
|
+
* cross-tab loop. The `applyingRemoteAuth` boolean breaks it: set to `true`
|
|
28
|
+
* immediately before the apply and `false` in the `finally` block; both
|
|
29
|
+
* broadcast callbacks check the flag and no-op while it is set.
|
|
30
|
+
* JavaScript is single-threaded, and `seedUsers` + `restoreSession` are
|
|
31
|
+
* synchronous (they resolve before any pending microtask can enter), so the
|
|
32
|
+
* boolean is collision-free.
|
|
33
|
+
*
|
|
34
|
+
* Late-join (hello/state):
|
|
35
|
+
* A tab that opens AFTER others have already signed in broadcasts `hello` on
|
|
36
|
+
* init. Any peer that receives it replies with `state` (full user DB +
|
|
37
|
+
* currentUid). The joining tab receives that `state` and calls
|
|
38
|
+
* `seedUsers` + `restoreSession` to catch up — same as if those ops had
|
|
39
|
+
* happened locally. The existing tabs' `onAuthStateChanged` listeners in the
|
|
40
|
+
* joining tab fire as a result, exactly as they would in production.
|
|
41
|
+
*
|
|
42
|
+
* Origin tagging:
|
|
43
|
+
* Every message carries an `origin` equal to the sending tab's random ID.
|
|
44
|
+
* Receiving tabs drop messages whose `origin` equals their own ID — both to
|
|
45
|
+
* comply with the echo guard and to be correct on injected test channels that
|
|
46
|
+
* may deliver messages back to the sender (the real BroadcastChannel spec does
|
|
47
|
+
* NOT deliver to the sender, but test stubs may differ).
|
|
48
|
+
*/
|
|
49
|
+
import type { Auth, SeedUser } from 'pyric/auth';
|
|
50
|
+
/**
|
|
51
|
+
* The subset of `pyric/auth`'s `sandbox` namespace that we need.
|
|
52
|
+
* Injected so tests can stub without a real sandbox.
|
|
53
|
+
*/
|
|
54
|
+
export interface AuthOps {
|
|
55
|
+
exportUsers(auth: Auth): SeedUser[];
|
|
56
|
+
seedUsers(auth: Auth, users: ReadonlyArray<SeedUser>): void;
|
|
57
|
+
restoreSession(auth: Auth, uid: string): void;
|
|
58
|
+
subscribeUsers(auth: Auth, callback: () => void): () => void;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Wire cross-tab auth synchronization.
|
|
62
|
+
*
|
|
63
|
+
* Call once, after the sandbox and auth are initialised, near the END of
|
|
64
|
+
* `runtime.ts` init. The function is a no-op when `BroadcastChannel` is
|
|
65
|
+
* not available (SSR / old Node environments stay inert).
|
|
66
|
+
*
|
|
67
|
+
* @param auth The `Auth` handle for this page (from `getAuth(sandbox)`).
|
|
68
|
+
* @param authOps The `sandbox` namespace from `pyric/auth`.
|
|
69
|
+
* @param onAuthStateChanged `onAuthStateChanged` from `pyric/auth`.
|
|
70
|
+
* @param signOut `signOut` from `pyric/auth`.
|
|
71
|
+
* @param channel Optional injected channel (omit in production — a real
|
|
72
|
+
* `BroadcastChannel('pyric:serve:auth-sync')` is created).
|
|
73
|
+
* @param originId Optional injected origin ID (omit in production).
|
|
74
|
+
*
|
|
75
|
+
* @returns A disable function that removes all listeners and closes the channel.
|
|
76
|
+
* Safe to ignore in `pyric dev` — the tab is the lifetime.
|
|
77
|
+
*/
|
|
78
|
+
export declare function wireAuthTabSync(auth: Auth, authOps: AuthOps, onAuthStateChanged: (auth: Auth, cb: (user: unknown) => void) => () => void, signOut: (auth: Auth) => Promise<void>, channel?: {
|
|
79
|
+
postMessage(msg: unknown): void;
|
|
80
|
+
addEventListener(type: 'message', l: (ev: {
|
|
81
|
+
data: unknown;
|
|
82
|
+
}) => void): void;
|
|
83
|
+
removeEventListener(type: 'message', l: (ev: {
|
|
84
|
+
data: unknown;
|
|
85
|
+
}) => void): void;
|
|
86
|
+
close(): void;
|
|
87
|
+
}, originId?: string): () => void;
|
|
88
|
+
//# sourceMappingURL=tab-sync-wiring.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tab-sync-wiring.d.ts","sourceRoot":"","sources":["../../../src/serve/entries/tab-sync-wiring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAoCjD;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,QAAQ,EAAE,CAAC;IACpC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IAC5D,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;CAC9D;AAID;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,kBAAkB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,KAAK,MAAM,IAAI,EAC3E,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,EACtC,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;IAAC,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IAAC,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IAAC,KAAK,IAAI,IAAI,CAAA;CAAE,EACzN,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,IAAI,CAsJZ"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-tab realtime sync wiring for `pyric dev`.
|
|
3
|
+
*
|
|
4
|
+
* Two independent channels carry two independent kinds of state:
|
|
5
|
+
*
|
|
6
|
+
* 1. Firestore data — delegated entirely to `sandbox.enableTabSync()`.
|
|
7
|
+
* That call attaches a BroadcastChannel-based write-propagation and
|
|
8
|
+
* late-join handshake (hello/state) internally; we just supply the
|
|
9
|
+
* channel so the name is under our control.
|
|
10
|
+
*
|
|
11
|
+
* 2. Auth state — `enableTabSync` only carries Firestore write events;
|
|
12
|
+
* auth sign-in / sign-out lives entirely outside the Firestore environment.
|
|
13
|
+
* We bridge it on a SECOND channel using a simple full-state protocol:
|
|
14
|
+
* any auth change broadcasts the complete user DB + current UID; a new tab
|
|
15
|
+
* announces itself with `hello` and receives the current state in reply.
|
|
16
|
+
*
|
|
17
|
+
* Why full-state instead of deltas?
|
|
18
|
+
* Auth payloads are tiny (a handful of users). Broadcasting the entire user DB
|
|
19
|
+
* + current UID on every change avoids ordering bugs where a `seedUsers` arrives
|
|
20
|
+
* before a `restoreSession` (or vice versa) and leaves the receiving tab in an
|
|
21
|
+
* inconsistent partial state. One atomic message = one safe apply.
|
|
22
|
+
*
|
|
23
|
+
* Echo-loop prevention (load-bearing):
|
|
24
|
+
* Applying a received auth state calls `seedUsers` + `restoreSession`, which
|
|
25
|
+
* fire `subscribeUsers` / `onAuthStateChanged` callbacks — the same callbacks
|
|
26
|
+
* that trigger outbound broadcasts. Without a guard this creates an infinite
|
|
27
|
+
* cross-tab loop. The `applyingRemoteAuth` boolean breaks it: set to `true`
|
|
28
|
+
* immediately before the apply and `false` in the `finally` block; both
|
|
29
|
+
* broadcast callbacks check the flag and no-op while it is set.
|
|
30
|
+
* JavaScript is single-threaded, and `seedUsers` + `restoreSession` are
|
|
31
|
+
* synchronous (they resolve before any pending microtask can enter), so the
|
|
32
|
+
* boolean is collision-free.
|
|
33
|
+
*
|
|
34
|
+
* Late-join (hello/state):
|
|
35
|
+
* A tab that opens AFTER others have already signed in broadcasts `hello` on
|
|
36
|
+
* init. Any peer that receives it replies with `state` (full user DB +
|
|
37
|
+
* currentUid). The joining tab receives that `state` and calls
|
|
38
|
+
* `seedUsers` + `restoreSession` to catch up — same as if those ops had
|
|
39
|
+
* happened locally. The existing tabs' `onAuthStateChanged` listeners in the
|
|
40
|
+
* joining tab fire as a result, exactly as they would in production.
|
|
41
|
+
*
|
|
42
|
+
* Origin tagging:
|
|
43
|
+
* Every message carries an `origin` equal to the sending tab's random ID.
|
|
44
|
+
* Receiving tabs drop messages whose `origin` equals their own ID — both to
|
|
45
|
+
* comply with the echo guard and to be correct on injected test channels that
|
|
46
|
+
* may deliver messages back to the sender (the real BroadcastChannel spec does
|
|
47
|
+
* NOT deliver to the sender, but test stubs may differ).
|
|
48
|
+
*/
|
|
49
|
+
/** Loose type guard — checks the discriminant fields only. */
|
|
50
|
+
function isAuthSyncMessage(v) {
|
|
51
|
+
return (typeof v === 'object' &&
|
|
52
|
+
v !== null &&
|
|
53
|
+
typeof v.kind === 'string' &&
|
|
54
|
+
typeof v.origin === 'string');
|
|
55
|
+
}
|
|
56
|
+
// ─── Public entry point ───────────────────────────────────────────────────────
|
|
57
|
+
/**
|
|
58
|
+
* Wire cross-tab auth synchronization.
|
|
59
|
+
*
|
|
60
|
+
* Call once, after the sandbox and auth are initialised, near the END of
|
|
61
|
+
* `runtime.ts` init. The function is a no-op when `BroadcastChannel` is
|
|
62
|
+
* not available (SSR / old Node environments stay inert).
|
|
63
|
+
*
|
|
64
|
+
* @param auth The `Auth` handle for this page (from `getAuth(sandbox)`).
|
|
65
|
+
* @param authOps The `sandbox` namespace from `pyric/auth`.
|
|
66
|
+
* @param onAuthStateChanged `onAuthStateChanged` from `pyric/auth`.
|
|
67
|
+
* @param signOut `signOut` from `pyric/auth`.
|
|
68
|
+
* @param channel Optional injected channel (omit in production — a real
|
|
69
|
+
* `BroadcastChannel('pyric:serve:auth-sync')` is created).
|
|
70
|
+
* @param originId Optional injected origin ID (omit in production).
|
|
71
|
+
*
|
|
72
|
+
* @returns A disable function that removes all listeners and closes the channel.
|
|
73
|
+
* Safe to ignore in `pyric dev` — the tab is the lifetime.
|
|
74
|
+
*/
|
|
75
|
+
export function wireAuthTabSync(auth, authOps, onAuthStateChanged, signOut, channel, originId) {
|
|
76
|
+
// Guard: BroadcastChannel is browser-only. Non-browser imports (SSR, bundler
|
|
77
|
+
// tree-shaking analysis) must stay inert.
|
|
78
|
+
if (!channel && typeof BroadcastChannel === 'undefined') {
|
|
79
|
+
return () => { };
|
|
80
|
+
}
|
|
81
|
+
const bc = channel ?? new BroadcastChannel('pyric:serve:auth-sync');
|
|
82
|
+
const ownedByUs = !channel;
|
|
83
|
+
const origin = originId ??
|
|
84
|
+
(typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function'
|
|
85
|
+
? crypto.randomUUID()
|
|
86
|
+
: `auth-tab-${Date.now()}-${Math.random().toString(36).slice(2)}`);
|
|
87
|
+
// ── Echo / loop guard ────────────────────────────────────────────────────
|
|
88
|
+
//
|
|
89
|
+
// WHY: applying a received `state` calls `seedUsers` (fires `subscribeUsers`
|
|
90
|
+
// callbacks) and `restoreSession` (fires `onAuthStateChanged` callbacks).
|
|
91
|
+
// Both of those callbacks are hooked to broadcast the current state outward.
|
|
92
|
+
// Without this guard, the sequence would loop: Tab A signs in → broadcasts →
|
|
93
|
+
// Tab B receives → applies → subscribeUsers/onAuthStateChanged fire in Tab B
|
|
94
|
+
// → Tab B broadcasts → Tab A receives → applies → loops.
|
|
95
|
+
//
|
|
96
|
+
// Setting this flag to `true` around the synchronous apply block prevents
|
|
97
|
+
// the outbound broadcast callbacks from posting. Both `seedUsers` and
|
|
98
|
+
// `restoreSession` are synchronous; JS is single-threaded — the flag is
|
|
99
|
+
// reset to `false` before any micro/macrotask can re-enter.
|
|
100
|
+
let applyingRemoteAuth = false;
|
|
101
|
+
// ── Debounced outbound broadcast ─────────────────────────────────────────
|
|
102
|
+
//
|
|
103
|
+
// We debounce (~100ms) to coalesce a `seedUsers` + `restoreSession` pair
|
|
104
|
+
// (which fires both subscribeUsers AND onAuthStateChanged in quick succession)
|
|
105
|
+
// into a single outbound message. Without debounce the two callbacks could
|
|
106
|
+
// send two rapid-fire broadcasts to peers, causing redundant double-applies.
|
|
107
|
+
let broadcastTimer = null;
|
|
108
|
+
function scheduleBroadcast() {
|
|
109
|
+
// Skip if we're currently applying a remote state — that would echo.
|
|
110
|
+
if (applyingRemoteAuth)
|
|
111
|
+
return;
|
|
112
|
+
if (broadcastTimer !== null)
|
|
113
|
+
clearTimeout(broadcastTimer);
|
|
114
|
+
broadcastTimer = setTimeout(() => {
|
|
115
|
+
broadcastTimer = null;
|
|
116
|
+
if (applyingRemoteAuth)
|
|
117
|
+
return; // double-check after the debounce delay
|
|
118
|
+
broadcastCurrentState();
|
|
119
|
+
}, 100);
|
|
120
|
+
}
|
|
121
|
+
function broadcastCurrentState() {
|
|
122
|
+
const msg = {
|
|
123
|
+
kind: 'state',
|
|
124
|
+
origin,
|
|
125
|
+
users: authOps.exportUsers(auth),
|
|
126
|
+
currentUid: auth.currentUser?.uid ?? null,
|
|
127
|
+
};
|
|
128
|
+
bc.postMessage(msg);
|
|
129
|
+
}
|
|
130
|
+
// ── Subscribe to local auth changes ──────────────────────────────────────
|
|
131
|
+
//
|
|
132
|
+
// Two hooks cover the two dimensions of auth state:
|
|
133
|
+
// - `subscribeUsers` fires when the user DB changes (new user created,
|
|
134
|
+
// user properties changed, user deleted). This carries the FULL user DB.
|
|
135
|
+
// - `onAuthStateChanged` fires when the signed-in session changes (sign in,
|
|
136
|
+
// sign out, session swap). This carries `currentUid`.
|
|
137
|
+
//
|
|
138
|
+
// Broadcasting on BOTH ensures sign-in (changes currentUid without touching
|
|
139
|
+
// users DB), sign-up (creates a user AND changes currentUid), and user-DB
|
|
140
|
+
// edits all propagate. They share the debounce so a sign-up that fires
|
|
141
|
+
// subscribeUsers first and onAuthStateChanged second sends one message, not two.
|
|
142
|
+
const unsubUsers = authOps.subscribeUsers(auth, scheduleBroadcast);
|
|
143
|
+
const unsubAuthState = onAuthStateChanged(auth, scheduleBroadcast);
|
|
144
|
+
// ── Receive remote auth state ─────────────────────────────────────────────
|
|
145
|
+
const handleMessage = async (ev) => {
|
|
146
|
+
if (!isAuthSyncMessage(ev.data))
|
|
147
|
+
return;
|
|
148
|
+
const msg = ev.data;
|
|
149
|
+
// Echo suppression: ignore messages from ourselves.
|
|
150
|
+
if (msg.origin === origin)
|
|
151
|
+
return;
|
|
152
|
+
if (msg.kind === 'hello') {
|
|
153
|
+
// A new tab joined and wants the current state. Reply immediately (no
|
|
154
|
+
// debounce — this is a direct reply to a single event, not a user write).
|
|
155
|
+
broadcastCurrentState();
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
if (msg.kind === 'state') {
|
|
159
|
+
// Apply received full auth state under the echo guard.
|
|
160
|
+
//
|
|
161
|
+
// Order is critical:
|
|
162
|
+
// 1. seedUsers FIRST — ensures the uid in `currentUid` exists in the DB.
|
|
163
|
+
// restoreSession throws 'user-not-found' if the uid is absent, which
|
|
164
|
+
// would leave the tab signed out even though the peer is signed in.
|
|
165
|
+
// 2. restoreSession SECOND — re-establishes the signed-in session.
|
|
166
|
+
// If `currentUid` is null, sign out instead (sign-out in Tab A must
|
|
167
|
+
// flow through to Tab B).
|
|
168
|
+
applyingRemoteAuth = true;
|
|
169
|
+
try {
|
|
170
|
+
authOps.seedUsers(auth, msg.users);
|
|
171
|
+
if (msg.currentUid) {
|
|
172
|
+
try {
|
|
173
|
+
authOps.restoreSession(auth, msg.currentUid);
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
// uid was in the exported list but restoreSession still failed
|
|
177
|
+
// (e.g. user disabled between export and apply). Sign out to stay
|
|
178
|
+
// consistent with the peer's next broadcast rather than silently
|
|
179
|
+
// leaving the tab in a stale signed-in state.
|
|
180
|
+
await signOut(auth).catch(() => { });
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
// Peer signed out — mirror that here.
|
|
185
|
+
await signOut(auth).catch(() => { });
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
finally {
|
|
189
|
+
applyingRemoteAuth = false;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
bc.addEventListener('message', handleMessage);
|
|
194
|
+
// ── Late-join hello ───────────────────────────────────────────────────────
|
|
195
|
+
//
|
|
196
|
+
// Post a `hello` AFTER wiring the message listener so we don't miss a `state`
|
|
197
|
+
// reply that arrives while still setting up (relevant on injected synchronous
|
|
198
|
+
// test channels). Peers reply with their current auth state; we apply it in
|
|
199
|
+
// `handleMessage` above. This lets a freshly-opened tab immediately inherit
|
|
200
|
+
// the signed-in user from an already-open tab without waiting for the next
|
|
201
|
+
// user-driven auth change.
|
|
202
|
+
const helloMsg = { kind: 'hello', origin };
|
|
203
|
+
bc.postMessage(helloMsg);
|
|
204
|
+
// ── Disable ───────────────────────────────────────────────────────────────
|
|
205
|
+
return () => {
|
|
206
|
+
if (broadcastTimer !== null) {
|
|
207
|
+
clearTimeout(broadcastTimer);
|
|
208
|
+
broadcastTimer = null;
|
|
209
|
+
}
|
|
210
|
+
unsubUsers();
|
|
211
|
+
unsubAuthState();
|
|
212
|
+
bc.removeEventListener('message', handleMessage);
|
|
213
|
+
if (ownedByUs)
|
|
214
|
+
bc.close();
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=tab-sync-wiring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tab-sync-wiring.js","sourceRoot":"","sources":["../../../src/serve/entries/tab-sync-wiring.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
+
import { type StateStore } from './state-store.js';
|
|
3
|
+
import { type StudioRouteOptions } from './studio/index.js';
|
|
4
|
+
/** Mirrors the runtime entry's `InitPayload` — keep in lockstep with
|
|
5
|
+
* `entries/runtime.ts`. */
|
|
6
|
+
export interface InitPayload {
|
|
7
|
+
rules: string | null;
|
|
8
|
+
rulesHash: string | null;
|
|
9
|
+
databaseRules?: {
|
|
10
|
+
rules: Record<string, unknown>;
|
|
11
|
+
} | null;
|
|
12
|
+
databaseRulesHash?: string | null;
|
|
13
|
+
databaseUrl?: string | null;
|
|
14
|
+
bridgeUrl: string | null;
|
|
15
|
+
/** `--seed` documents (path → fields), applied admin-style at page init.
|
|
16
|
+
* Null in persist mode once a state file exists — the lived state wins. */
|
|
17
|
+
seed: Record<string, Record<string, unknown>> | null;
|
|
18
|
+
/** `--persist`: the page enables sandbox persistence over /__pyric/state. */
|
|
19
|
+
persist?: boolean;
|
|
20
|
+
/** Ephemeral fixture restore (`--seed <state-file>` without --persist):
|
|
21
|
+
* the controller blob, restored in-page via a read-only backend so
|
|
22
|
+
* wrapper types re-hydrate. Null otherwise. */
|
|
23
|
+
seedState?: unknown | null;
|
|
24
|
+
/** Persisted auth users (sandbox.exportUsers shape), seeded at page init
|
|
25
|
+
* before any session restore. Null when none / persist off. */
|
|
26
|
+
authUsers?: ReadonlyArray<Record<string, unknown>> | null;
|
|
27
|
+
/** `--capture`: the page pushes its session fixture to /__pyric/capture
|
|
28
|
+
* so `pyric verify` can replay it. Default-on; suppressed by --no-capture. */
|
|
29
|
+
capture?: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Server-sent-events hub for `/__pyric/events` — the hot-reload channel
|
|
33
|
+
* (P3). The runtime opens an EventSource; the rules watcher broadcasts
|
|
34
|
+
* `rules-changed` and connected pages re-deploy without a refresh.
|
|
35
|
+
*/
|
|
36
|
+
export interface ServeEventHub {
|
|
37
|
+
/** Mounted inside the namespace handler. */
|
|
38
|
+
handle(req: IncomingMessage, res: ServerResponse): void;
|
|
39
|
+
broadcast(event: string, data: unknown): void;
|
|
40
|
+
clientCount(): number;
|
|
41
|
+
}
|
|
42
|
+
export declare function createEventHub(): ServeEventHub;
|
|
43
|
+
export interface NamespaceOptions {
|
|
44
|
+
/** The bundle output dir (`BundleResult.outDir`). */
|
|
45
|
+
sdkDir: string;
|
|
46
|
+
/** Producer for `/__pyric/init.json` — a function so hot-reload serves
|
|
47
|
+
* the latest rules without server restart. */
|
|
48
|
+
initPayload: () => InitPayload;
|
|
49
|
+
/** Hot-reload channel; serves `/__pyric/events` when present. */
|
|
50
|
+
events?: ServeEventHub;
|
|
51
|
+
/** `--persist`: mounts GET/POST /__pyric/state (the state channel). */
|
|
52
|
+
state?: StateStore;
|
|
53
|
+
/** `--capture`: mounts GET/POST /__pyric/capture. POST — the page/worker
|
|
54
|
+
* pushes its session fixture here; the handler writes it verbatim to
|
|
55
|
+
* `.pyric/last-session.json` for `pyric verify` to replay. GET — returns the
|
|
56
|
+
* current fixture JSON (200) or 404 when nothing is captured yet, so the
|
|
57
|
+
* served worker can re-hydrate its event history on boot after a death. */
|
|
58
|
+
capture?: {
|
|
59
|
+
write(json: string): void;
|
|
60
|
+
read(): string | null;
|
|
61
|
+
};
|
|
62
|
+
/** `--ui` (Pyric Studio): mounts `/__pyric/workspace` + `/__pyric/projects`
|
|
63
|
+
* (disk-backed `WorkspaceStore`/`ProjectStore`, plus the SSE watch stream)
|
|
64
|
+
* that `@pyric/studio`'s `local` mode talks to. */
|
|
65
|
+
studio?: StudioRouteOptions;
|
|
66
|
+
/** `--ui` (Pyric Studio): the dir of the built Studio app, served under
|
|
67
|
+
* `/__pyric/ui/`. Resolved by file path in the CLI (pyric-tools never
|
|
68
|
+
* imports `@pyric/studio`). Absent when `--ui` is off or the build is
|
|
69
|
+
* missing. */
|
|
70
|
+
studioUiDir?: string;
|
|
71
|
+
/** `--ui` (Pyric Studio): the built playground app, mounted under
|
|
72
|
+
* `/__pyric/playground/` for Studio's Playground tab. */
|
|
73
|
+
playgroundUiDir?: string;
|
|
74
|
+
/** `--ui` (Pyric Studio): the built docs site (site-docs), served so the
|
|
75
|
+
* Studio Docs tab has local docs without the hosted site. Built with base
|
|
76
|
+
* `/__pyric/ui/`, so its output straddles two subtrees under the mount:
|
|
77
|
+
* the pages/twins/index.json live under `/__pyric/ui/docs/`, but the shared
|
|
78
|
+
* assets live at `/__pyric/ui/_astro/` (Astro's asset dir, at the base
|
|
79
|
+
* root — NOT under `docs/`). Both are served from this one dir. */
|
|
80
|
+
docsUiDir?: string;
|
|
81
|
+
}
|
|
82
|
+
export declare function createPyricNamespace(opts: NamespaceOptions): (req: IncomingMessage, res: ServerResponse, url: URL) => boolean | Promise<boolean>;
|
|
83
|
+
/** The import-map targets. Spec → served URL. */
|
|
84
|
+
export declare function sdkImportMap(): Record<string, string>;
|
|
85
|
+
/**
|
|
86
|
+
* Inject the import map + init script into an HTML document. The import map
|
|
87
|
+
* MUST precede any module script that imports a mapped specifier, so both
|
|
88
|
+
* tags go at the very start of `<head>` (fallbacks: after `<html>`, else
|
|
89
|
+
* prepended). Idempotent — a page already carrying the marker is untouched
|
|
90
|
+
* (matters when transformHtml runs over an SPA fallback repeatedly).
|
|
91
|
+
*/
|
|
92
|
+
export declare function injectServeTags(html: string, importMap?: Record<string, string>, workerVersion?: string, forceInPage?: boolean): string;
|
|
93
|
+
//# sourceMappingURL=namespace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../src/serve/namespace.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEjE,OAAO,EAAqC,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEtF,OAAO,EAAsB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAIhF;4BAC4B;AAC5B,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC;IAC1D,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;gFAC4E;IAC5E,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IACrD,6EAA6E;IAC7E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;oDAEgD;IAChD,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B;oEACgE;IAChE,SAAS,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAC1D;mFAC+E;IAC/E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAAC;IACxD,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9C,WAAW,IAAI,MAAM,CAAC;CACvB;AAED,wBAAgB,cAAc,IAAI,aAAa,CA4B9C;AAED,MAAM,WAAW,gBAAgB;IAC/B,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf;mDAC+C;IAC/C,WAAW,EAAE,MAAM,WAAW,CAAC;IAC/B,iEAAiE;IACjE,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,uEAAuE;IACvE,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB;;;;gFAI4E;IAC5E,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,IAAI,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAC/D;;wDAEoD;IACpD,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B;;;mBAGe;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;8DAC0D;IAC1D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;wEAKoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAqID,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,IAGjD,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,KAAK,GAAG,KAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CA2HzF;AAID,iDAAiD;AACjD,wBAAgB,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQrD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAkB,EAClD,aAAa,CAAC,EAAE,MAAM,EACtB,WAAW,UAAQ,GAClB,MAAM,CAuDR"}
|