@pyric/cli 0.1.0-alpha.11 → 0.1.0-alpha.13
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/dist/cli/serve.js +4 -4
- package/dist/cli/serve.js.map +1 -1
- package/dist/conformance/.generated/can-i-use-browser.d.ts.map +1 -1
- package/dist/conformance/.generated/can-i-use-browser.js +1 -1
- package/dist/conformance/.generated/can-i-use-browser.js.map +1 -1
- package/dist/conformance/.generated/can-i-use.d.ts.map +1 -1
- package/dist/conformance/.generated/can-i-use.js +2 -2
- package/dist/conformance/.generated/can-i-use.js.map +1 -1
- package/dist/serve/bundler.d.ts +13 -8
- package/dist/serve/bundler.d.ts.map +1 -1
- package/dist/serve/bundler.js +31 -36
- package/dist/serve/bundler.js.map +1 -1
- package/dist/serve/docs-ui/docs/_rhythm/index.html +1 -1
- package/dist/serve/docs-ui/docs/agent/set-up-your-agent/index.html +1 -1
- package/dist/serve/docs-ui/docs/agent/watch-and-review/index.html +1 -1
- package/dist/serve/docs-ui/docs/agent/work-with-an-agent/index.html +1 -1
- package/dist/serve/docs-ui/docs/ai-compat/index.html +1 -1
- package/dist/serve/docs-ui/docs/api-reference/index.html +2 -2
- package/dist/serve/docs-ui/docs/api-reference.md +1 -1
- package/dist/serve/docs-ui/docs/app-compat/index.html +1 -1
- package/dist/serve/docs-ui/docs/auth-compat/index.html +1 -1
- package/dist/serve/docs-ui/docs/build/ai-logic/index.html +44 -22
- package/dist/serve/docs-ui/docs/build/ai-logic.md +69 -21
- package/dist/serve/docs-ui/docs/build/authentication/index.html +1 -1
- package/dist/serve/docs-ui/docs/build/cloud-firestore/index.html +1 -1
- package/dist/serve/docs-ui/docs/build/cloud-messaging/index.html +1 -1
- package/dist/serve/docs-ui/docs/build/cloud-storage/index.html +1 -1
- package/dist/serve/docs-ui/docs/build/realtime-database/index.html +1 -1
- package/dist/serve/docs-ui/docs/conformance-scores/index.html +1 -1
- package/dist/serve/docs-ui/docs/create-pyric-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/database-compat/index.html +1 -1
- package/dist/serve/docs-ui/docs/firestore-compat/index.html +1 -1
- package/dist/serve/docs-ui/docs/functions-rtdb-compat/index.html +1 -1
- package/dist/serve/docs-ui/docs/get-started/how-the-swap-works/index.html +2 -1
- package/dist/serve/docs-ui/docs/get-started/how-the-swap-works.md +2 -0
- package/dist/serve/docs-ui/docs/get-started/start-building/index.html +3 -2
- package/dist/serve/docs-ui/docs/get-started/start-building.md +3 -1
- package/dist/serve/docs-ui/docs/index.json +349 -29
- package/dist/serve/docs-ui/docs/messaging-compat/index.html +1 -1
- package/dist/serve/docs-ui/docs/observe/resolve-runtime-status/index.html +28 -0
- package/dist/serve/docs-ui/docs/observe/resolve-runtime-status.md +47 -0
- package/dist/serve/docs-ui/docs/observe/see-whats-happening/index.html +1 -1
- package/dist/serve/docs-ui/docs/observe/shape-your-data/index.html +1 -1
- package/dist/serve/docs-ui/docs/overview/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-admin-app-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-admin-auth-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-admin-database-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-admin-messaging-reference-api/index.html +916 -0
- package/dist/serve/docs-ui/docs/pyric-admin-messaging-reference-api.md +706 -0
- package/dist/serve/docs-ui/docs/pyric-admin-storage-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-ai-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-ai-scripting-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-app-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-auth-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-cli-assurance-browser-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-cli-assurance-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-cli-bridge-client-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-cli-bridge-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-cli-conformance-browser-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-cli-conformance-docs-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-cli-conformance-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-cli-credentials-node-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-cli-discover-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-cli-register-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-cli-remote-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-cli-serve-worker-reference-api/index.html +168 -76
- package/dist/serve/docs-ui/docs/pyric-cli-serve-worker-reference-api.md +156 -73
- package/dist/serve/docs-ui/docs/pyric-cli-verify-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-cli-vite-reference-api/index.html +11 -8
- package/dist/serve/docs-ui/docs/pyric-cli-vite-reference-api.md +17 -4
- package/dist/serve/docs-ui/docs/pyric-database-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-messaging-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-messaging-sw-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-rules-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-sandbox-database-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-sandbox-firestore-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-api/index.html +37 -14
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-api.md +28 -8
- package/dist/serve/docs-ui/docs/pyric-storage-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-ui-agents-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-ui-auth-hooks-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-ui-auth-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-ui-events-hooks-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-ui-events-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-ui-firestore-hooks-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-ui-firestore-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-ui-primitives-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-ui-rtdb-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-ui-rules-hooks-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-ui-rules-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-ui-storage-hooks-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-ui-storage-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-ui-traffic-hooks-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/pyric-ui-traffic-reference-api/index.html +1 -1
- package/dist/serve/docs-ui/docs/rules-compat/index.html +1 -1
- package/dist/serve/docs-ui/docs/secure/audit-your-rules/index.html +1 -1
- package/dist/serve/docs-ui/docs/secure/firestore-rules-limits/index.html +1 -1
- package/dist/serve/docs-ui/docs/secure/read-a-denial/index.html +1 -1
- package/dist/serve/docs-ui/docs/secure/rtdb-rules-in-typescript/index.html +1 -1
- package/dist/serve/docs-ui/docs/secure/rules-standard-library/index.html +1 -1
- package/dist/serve/docs-ui/docs/secure/secure-it-with-rules/index.html +1 -1
- package/dist/serve/docs-ui/docs/secure/simulate-and-lint/index.html +1 -1
- package/dist/serve/docs-ui/docs/secure/write-a-rules-test-suite/index.html +1 -1
- package/dist/serve/docs-ui/docs/ship/ship-to-production/index.html +1 -1
- package/dist/serve/docs-ui/docs/ship/test-in-node/index.html +1 -1
- package/dist/serve/docs-ui/docs/storage-compat/index.html +1 -1
- package/dist/serve/docs-ui/docs/trust/how-we-know-it-matches-firebase/index.html +1 -1
- package/dist/serve/docs-ui/docs/trust/versioning-and-compatibility/index.html +1 -1
- package/dist/serve/docs-ui/docs/tutorial/index.html +429 -0
- package/dist/serve/docs-ui/docs/tutorial.md +701 -0
- package/dist/serve/docs-ui/llms.txt +3 -1
- package/dist/serve/entries/init.d.ts.map +1 -1
- package/dist/serve/entries/init.js +3 -0
- package/dist/serve/entries/init.js.map +1 -1
- package/dist/serve/entries/runtime.d.ts.map +1 -1
- package/dist/serve/entries/runtime.js +20 -5
- package/dist/serve/entries/runtime.js.map +1 -1
- package/dist/serve/entries/worker-runtime.d.ts +2 -2
- package/dist/serve/entries/worker-runtime.d.ts.map +1 -1
- package/dist/serve/entries/worker-runtime.js +45 -10
- package/dist/serve/entries/worker-runtime.js.map +1 -1
- package/dist/serve/runtime/chip-config.d.ts +19 -0
- package/dist/serve/runtime/chip-config.d.ts.map +1 -0
- package/dist/serve/runtime/chip-config.js +19 -0
- package/dist/serve/runtime/chip-config.js.map +1 -0
- package/dist/serve/runtime/chip-install.d.ts +10 -0
- package/dist/serve/runtime/chip-install.d.ts.map +1 -0
- package/dist/serve/runtime/chip-install.js +15 -0
- package/dist/serve/runtime/chip-install.js.map +1 -0
- package/dist/serve/runtime/chip.d.ts +17 -0
- package/dist/serve/runtime/chip.d.ts.map +1 -0
- package/dist/serve/runtime/chip.js +257 -0
- package/dist/serve/runtime/chip.js.map +1 -0
- package/dist/serve/runtime/manifest.d.ts +22 -0
- package/dist/serve/runtime/manifest.d.ts.map +1 -0
- package/dist/serve/runtime/manifest.js +20 -0
- package/dist/serve/runtime/manifest.js.map +1 -0
- package/dist/serve/runtime/status.d.ts +49 -0
- package/dist/serve/runtime/status.d.ts.map +1 -0
- package/dist/serve/runtime/status.js +164 -0
- package/dist/serve/runtime/status.js.map +1 -0
- package/dist/serve/runtime/worker-connection.d.ts +4 -0
- package/dist/serve/runtime/worker-connection.d.ts.map +1 -0
- package/dist/serve/runtime/worker-connection.js +11 -0
- package/dist/serve/runtime/worker-connection.js.map +1 -0
- package/dist/serve/runtime/worker-generation.d.ts +14 -0
- package/dist/serve/runtime/worker-generation.d.ts.map +1 -0
- package/dist/serve/runtime/worker-generation.js +56 -0
- package/dist/serve/runtime/worker-generation.js.map +1 -0
- package/dist/serve/runtime/worker-replacement.d.ts +18 -0
- package/dist/serve/runtime/worker-replacement.d.ts.map +1 -0
- package/dist/serve/runtime/worker-replacement.js +29 -0
- package/dist/serve/runtime/worker-replacement.js.map +1 -0
- package/dist/serve/standalone-assets.d.ts +2 -2
- package/dist/serve/standalone-assets.d.ts.map +1 -1
- package/dist/serve/standalone-assets.js +1 -1
- package/dist/serve/standalone-assets.js.map +1 -1
- package/dist/serve/studio-ui/assets/{RulesCodeEditor-CxVYcZXw.js → RulesCodeEditor-BDlH-5lp.js} +1 -1
- package/dist/serve/studio-ui/assets/{index-cpSfgQ7H.js → index-Bf9SSE8L.js} +5 -5
- package/dist/serve/studio-ui/assets/{seed-DeuFKi4J.js → seed-D_UjxfOU.js} +1 -1
- package/dist/serve/studio-ui/index.html +1 -1
- package/dist/serve/vite-ai-config.d.ts +25 -0
- package/dist/serve/vite-ai-config.d.ts.map +1 -0
- package/dist/serve/vite-ai-config.js +45 -0
- package/dist/serve/vite-ai-config.js.map +1 -0
- package/dist/serve/vite-plugin.d.ts +17 -36
- package/dist/serve/vite-plugin.d.ts.map +1 -1
- package/dist/serve/vite-plugin.js +38 -57
- package/dist/serve/vite-plugin.js.map +1 -1
- package/dist/serve/vite-rules-source.d.ts +8 -0
- package/dist/serve/vite-rules-source.d.ts.map +1 -0
- package/dist/serve/vite-rules-source.js +23 -0
- package/dist/serve/vite-rules-source.js.map +1 -0
- package/dist/serve/vite-worker-runtime.d.ts +20 -0
- package/dist/serve/vite-worker-runtime.d.ts.map +1 -0
- package/dist/serve/vite-worker-runtime.js +25 -0
- package/dist/serve/vite-worker-runtime.js.map +1 -0
- package/dist/serve/worker/client/connection.d.ts +7 -2
- package/dist/serve/worker/client/connection.d.ts.map +1 -1
- package/dist/serve/worker/client/connection.js +13 -16
- package/dist/serve/worker/client/connection.js.map +1 -1
- package/dist/serve/worker/client/core.d.ts +7 -0
- package/dist/serve/worker/client/core.d.ts.map +1 -1
- package/dist/serve/worker/client/core.js +28 -0
- package/dist/serve/worker/client/core.js.map +1 -1
- package/dist/serve/worker/client/runtime-control.d.ts +8 -0
- package/dist/serve/worker/client/runtime-control.d.ts.map +1 -0
- package/dist/serve/worker/client/runtime-control.js +11 -0
- package/dist/serve/worker/client/runtime-control.js.map +1 -0
- package/dist/serve/worker/entry.js +44 -2
- package/dist/serve/worker/entry.js.map +1 -1
- package/dist/serve/worker/host/core.js +1 -1
- package/dist/serve/worker/host/core.js.map +1 -1
- package/dist/serve/worker/host/firestore-writes.d.ts.map +1 -1
- package/dist/serve/worker/host/firestore-writes.js +3 -2
- package/dist/serve/worker/host/firestore-writes.js.map +1 -1
- package/dist/serve/worker/host/studio.js +1 -1
- package/dist/serve/worker/host/studio.js.map +1 -1
- package/dist/serve/worker/host-context.d.ts +1 -1
- package/dist/serve/worker/host-context.d.ts.map +1 -1
- package/dist/serve/worker/index.d.ts +2 -1
- package/dist/serve/worker/index.d.ts.map +1 -1
- package/dist/serve/worker/index.js +2 -1
- package/dist/serve/worker/index.js.map +1 -1
- package/dist/serve/worker/protocol.d.ts +15 -1
- package/dist/serve/worker/protocol.d.ts.map +1 -1
- package/dist/serve/worker/protocol.js +2 -2
- package/dist/serve/worker/protocol.js.map +1 -1
- package/dist/serve/worker/retirement.d.ts +21 -0
- package/dist/serve/worker/retirement.d.ts.map +1 -0
- package/dist/serve/worker/retirement.js +97 -0
- package/dist/serve/worker/retirement.js.map +1 -0
- package/dist/serve/worker/serve-init.d.ts.map +1 -1
- package/dist/serve/worker/serve-init.js +5 -6
- package/dist/serve/worker/serve-init.js.map +1 -1
- package/dist/vite.d.ts +1 -0
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js.map +1 -1
- package/package.json +6 -4
- package/src/assurance/.generated/conformance-verdicts.ts +1090 -0
- package/src/assurance/attachment.ts +211 -0
- package/src/assurance/browser.ts +80 -0
- package/src/assurance/campaign.ts +496 -0
- package/src/assurance/capabilities.ts +446 -0
- package/src/assurance/cases.ts +43 -0
- package/src/assurance/index.ts +75 -0
- package/src/assurance/runner.ts +885 -0
- package/src/assurance/tool-names.ts +15 -0
- package/src/assurance/tools.ts +830 -0
- package/src/assurance/types.ts +352 -0
- package/src/assurance/validation.ts +434 -0
- package/src/bridge/client/bridge.ts +550 -0
- package/src/bridge/client/dispatch.ts +137 -0
- package/src/bridge/client.ts +45 -0
- package/src/bridge/protocol.ts +351 -0
- package/src/bridge/server/audit.ts +53 -0
- package/src/bridge/server/bridge.ts +597 -0
- package/src/bridge/server/headless.ts +160 -0
- package/src/bridge/server/json-schema-to-zod.ts +108 -0
- package/src/bridge/server/local-bridge.ts +66 -0
- package/src/bridge/server/logger.ts +50 -0
- package/src/bridge/server/mcp-contract.ts +93 -0
- package/src/bridge/server/mcp.ts +129 -0
- package/src/bridge/server/peer.ts +232 -0
- package/src/bridge/server/standalone.ts +347 -0
- package/src/bridge/server/tool-metadata.ts +99 -0
- package/src/bridge/server.ts +28 -0
- package/src/cli/can-i-use.ts +50 -0
- package/src/cli/cli.test.ts +493 -0
- package/src/cli/database-rules.ts +329 -0
- package/src/cli/dev-runner.ts +282 -0
- package/src/cli/firebase-json.ts +100 -0
- package/src/cli/firestore-indexes.ts +70 -0
- package/src/cli/index.ts +425 -0
- package/src/cli/init.ts +260 -0
- package/src/cli/mcp-proxy.ts +196 -0
- package/src/cli/parse-args.ts +80 -0
- package/src/cli/rules.ts +259 -0
- package/src/cli/scope.ts +67 -0
- package/src/cli/serve.ts +996 -0
- package/src/cli/service-commands.ts +73 -0
- package/src/cli/snapshot.ts +164 -0
- package/src/cli/storage-rules.ts +172 -0
- package/src/cli/verify.ts +416 -0
- package/src/conformance/.generated/can-i-use-browser.ts +113 -0
- package/src/conformance/.generated/can-i-use.ts +117 -0
- package/src/conformance/.generated/conformance-docs.ts +14 -0
- package/src/conformance/browser.ts +24 -0
- package/src/conformance/can-i-use-tool.ts +51 -0
- package/src/conformance/can-i-use.ts +18 -0
- package/src/conformance/docs.ts +8 -0
- package/src/conformance/index.ts +20 -0
- package/src/conformance/tools.ts +16 -0
- package/src/credentials/core/memoize-ttl.ts +142 -0
- package/src/credentials/core/types.ts +10 -0
- package/src/credentials/node/from-adc.ts +96 -0
- package/src/credentials/node/from-service-account.ts +133 -0
- package/src/credentials/node/index.ts +6 -0
- package/src/discover/concurrency.ts +127 -0
- package/src/discover/crawler-adapter.ts +142 -0
- package/src/discover/crawler.ts +1127 -0
- package/src/discover/credential-free.ts +27 -0
- package/src/discover/findCollectionGroup.ts +131 -0
- package/src/discover/firestore-source.ts +59 -0
- package/src/discover/index.ts +5 -0
- package/src/discover/merge.ts +523 -0
- package/src/discover/session.ts +402 -0
- package/src/discover/tools.ts +201 -0
- package/src/discover/types.ts +187 -0
- package/src/discover/wire.ts +324 -0
- package/src/functions-rtdb/child.ts +382 -0
- package/src/functions-rtdb/delivery.ts +7 -0
- package/src/functions-rtdb/discovery.ts +136 -0
- package/src/functions-rtdb/event.ts +64 -0
- package/src/functions-rtdb/execution.ts +111 -0
- package/src/functions-rtdb/in-memory-delivery.ts +40 -0
- package/src/functions-rtdb/project.ts +74 -0
- package/src/functions-rtdb/projection.ts +104 -0
- package/src/functions-rtdb/reference-pattern.ts +20 -0
- package/src/functions-rtdb/remote-delivery.ts +23 -0
- package/src/pkg-version.ts +49 -0
- package/src/register/esm-exports.ts +63 -0
- package/src/register/hooks.ts +30 -0
- package/src/register/index.ts +150 -0
- package/src/register/mapping.ts +33 -0
- package/src/remote/index.ts +1050 -0
- package/src/rtdb/crawl-snapshot.ts +118 -0
- package/src/rtdb/inspection.ts +137 -0
- package/src/rtdb/load-rules-document.ts +56 -0
- package/src/rtdb/rules-generation-tool.ts +38 -0
- package/src/rtdb/rules-json.ts +29 -0
- package/src/serve/activity-guard.ts +29 -0
- package/src/serve/activity-route.ts +164 -0
- package/src/serve/activity-warning.ts +26 -0
- package/src/serve/bridge-mount.ts +200 -0
- package/src/serve/bundler.ts +519 -0
- package/src/serve/capture-store.ts +65 -0
- package/src/serve/discovery.ts +199 -0
- package/src/serve/entries/ai.ts +292 -0
- package/src/serve/entries/app-backend.ts +4 -0
- package/src/serve/entries/app-client.ts +26 -0
- package/src/serve/entries/app-session-store.ts +47 -0
- package/src/serve/entries/app.ts +11 -0
- package/src/serve/entries/auth-helper-core.ts +181 -0
- package/src/serve/entries/auth-helper-dom.ts +134 -0
- package/src/serve/entries/auth-helper-runtime.ts +20 -0
- package/src/serve/entries/auth.ts +255 -0
- package/src/serve/entries/bridge-url.ts +31 -0
- package/src/serve/entries/database.ts +129 -0
- package/src/serve/entries/firestore.ts +232 -0
- package/src/serve/entries/init.ts +49 -0
- package/src/serve/entries/keepalive.ts +46 -0
- package/src/serve/entries/messaging-sw.ts +75 -0
- package/src/serve/entries/messaging.ts +96 -0
- package/src/serve/entries/runtime.ts +556 -0
- package/src/serve/entries/session-store.ts +97 -0
- package/src/serve/entries/storage.ts +92 -0
- package/src/serve/entries/tab-sync-wiring.ts +274 -0
- package/src/serve/entries/worker-runtime.ts +135 -0
- package/src/serve/init-payload.ts +42 -0
- package/src/serve/namespace.ts +675 -0
- package/src/serve/open-browser.ts +68 -0
- package/src/serve/rules.ts +272 -0
- package/src/serve/runtime/chip-config.ts +30 -0
- package/src/serve/runtime/chip-install.ts +27 -0
- package/src/serve/runtime/chip.ts +282 -0
- package/src/serve/runtime/manifest.ts +37 -0
- package/src/serve/runtime/status.ts +216 -0
- package/src/serve/runtime/worker-connection.ts +14 -0
- package/src/serve/runtime/worker-generation.ts +75 -0
- package/src/serve/runtime/worker-replacement.ts +42 -0
- package/src/serve/sandbox-marker.ts +31 -0
- package/src/serve/server.ts +428 -0
- package/src/serve/standalone-assets.ts +180 -0
- package/src/serve/state-store.ts +166 -0
- package/src/serve/studio/disk-project-store.ts +185 -0
- package/src/serve/studio/disk-workspace.ts +162 -0
- package/src/serve/studio/index.ts +20 -0
- package/src/serve/studio/routes.ts +237 -0
- package/src/serve/studio/store-types.ts +48 -0
- package/src/serve/studio/studio-storage.test.ts +289 -0
- package/src/serve/vite-ai-config.ts +77 -0
- package/src/serve/vite-plugin.ts +1075 -0
- package/src/serve/vite-rules-source.ts +28 -0
- package/src/serve/vite-worker-runtime.ts +51 -0
- package/src/serve/worker/activity-bootstrap.ts +24 -0
- package/src/serve/worker/client/admin-firestore.ts +38 -0
- package/src/serve/worker/client/ai.ts +124 -0
- package/src/serve/worker/client/auth.ts +489 -0
- package/src/serve/worker/client/connection.ts +227 -0
- package/src/serve/worker/client/core.ts +384 -0
- package/src/serve/worker/client/disconnect.ts +45 -0
- package/src/serve/worker/client/firestore-reads.ts +181 -0
- package/src/serve/worker/client/firestore-refs.ts +226 -0
- package/src/serve/worker/client/firestore-writes.ts +232 -0
- package/src/serve/worker/client/handles.ts +91 -0
- package/src/serve/worker/client/messaging.ts +119 -0
- package/src/serve/worker/client/presence.ts +174 -0
- package/src/serve/worker/client/rtdb.ts +311 -0
- package/src/serve/worker/client/rules.ts +63 -0
- package/src/serve/worker/client/runtime-control.ts +22 -0
- package/src/serve/worker/client/service-worker-connection.ts +59 -0
- package/src/serve/worker/client/snapshots.ts +86 -0
- package/src/serve/worker/client/storage.ts +195 -0
- package/src/serve/worker/client/studio.ts +88 -0
- package/src/serve/worker/client.ts +57 -0
- package/src/serve/worker/durable-persistence.ts +137 -0
- package/src/serve/worker/entry.ts +223 -0
- package/src/serve/worker/host/admin-firestore.ts +88 -0
- package/src/serve/worker/host/connection.ts +179 -0
- package/src/serve/worker/host/core.ts +387 -0
- package/src/serve/worker/host/dispatch.ts +316 -0
- package/src/serve/worker/host/firestore-reads.ts +117 -0
- package/src/serve/worker/host/firestore-writes.ts +456 -0
- package/src/serve/worker/host/presence.ts +312 -0
- package/src/serve/worker/host/rtdb.ts +136 -0
- package/src/serve/worker/host/rules.ts +128 -0
- package/src/serve/worker/host/storage.ts +312 -0
- package/src/serve/worker/host/studio.ts +75 -0
- package/src/serve/worker/host/subscriptions.ts +238 -0
- package/src/serve/worker/host-ai.ts +165 -0
- package/src/serve/worker/host-auth.ts +469 -0
- package/src/serve/worker/host-context.ts +273 -0
- package/src/serve/worker/host-events.ts +94 -0
- package/src/serve/worker/host-messaging.ts +240 -0
- package/src/serve/worker/host.ts +47 -0
- package/src/serve/worker/index.ts +196 -0
- package/src/serve/worker/presence-timing.ts +15 -0
- package/src/serve/worker/protocol.ts +1124 -0
- package/src/serve/worker/retirement.ts +125 -0
- package/src/serve/worker/serve-init.ts +605 -0
- package/src/serve/worker/service-worker-channel.ts +33 -0
- package/src/serve/worker/service-worker-relay.ts +86 -0
- package/src/serve/writer-lock.ts +53 -0
- package/src/verify/cases.ts +233 -0
- package/src/verify/fixture.ts +258 -0
- package/src/verify/index.ts +519 -0
- package/src/verify/tools.ts +108 -0
- package/src/version/compat-target.ts +17 -0
- package/src/vite.ts +18 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-values-reference-api/index.html +0 -31
- package/dist/serve/docs-ui/docs/pyric-firestore-values-reference-api.md +0 -29
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
const styles = `
|
|
2
|
+
:host {
|
|
3
|
+
--pyric-bg: #1e1e24;
|
|
4
|
+
--pyric-content: #16161a;
|
|
5
|
+
--pyric-border: #33333f;
|
|
6
|
+
--pyric-border-soft: #2a2a35;
|
|
7
|
+
--pyric-text: #fbfbfe;
|
|
8
|
+
--pyric-muted: #89899f;
|
|
9
|
+
--pyric-accent: #19cc61;
|
|
10
|
+
--pyric-warning: #e6c79c;
|
|
11
|
+
--pyric-error: #f0a0a0;
|
|
12
|
+
all: initial;
|
|
13
|
+
position: fixed;
|
|
14
|
+
right: max(20px, env(safe-area-inset-right));
|
|
15
|
+
bottom: max(20px, env(safe-area-inset-bottom));
|
|
16
|
+
z-index: 2147483000;
|
|
17
|
+
color: var(--pyric-text);
|
|
18
|
+
font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
19
|
+
font-synthesis: none;
|
|
20
|
+
}
|
|
21
|
+
*, *::before, *::after { box-sizing: border-box; }
|
|
22
|
+
.announcer { height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; clip: rect(0 0 0 0); white-space: nowrap; }
|
|
23
|
+
button, a { font: inherit; }
|
|
24
|
+
button { margin: 0; }
|
|
25
|
+
.chip {
|
|
26
|
+
align-items: center;
|
|
27
|
+
background: var(--pyric-bg);
|
|
28
|
+
border: 1px solid var(--pyric-border);
|
|
29
|
+
border-radius: 999px;
|
|
30
|
+
box-shadow: 0 12px 34px rgba(0, 0, 0, .38);
|
|
31
|
+
color: var(--pyric-text);
|
|
32
|
+
cursor: pointer;
|
|
33
|
+
display: flex;
|
|
34
|
+
gap: 10px;
|
|
35
|
+
height: 36px;
|
|
36
|
+
padding: 0 12px;
|
|
37
|
+
}
|
|
38
|
+
.chip:hover { border-color: #4a4a58; }
|
|
39
|
+
.brand, .signals, .signal, .panel-title, .worker-state { align-items: center; display: flex; }
|
|
40
|
+
.brand { gap: 8px; }
|
|
41
|
+
.brand-mark { color: rgba(251, 251, 254, .78); font: 600 11px/1 ui-monospace, monospace; }
|
|
42
|
+
.brand-label, .signals, .worker-state, code, .button { font-family: "JetBrains Mono", ui-monospace, monospace; }
|
|
43
|
+
.brand-label { font-size: 11px; }
|
|
44
|
+
.signals { color: var(--pyric-muted); font-size: 10px; gap: 8px; }
|
|
45
|
+
.signal { gap: 4px; white-space: nowrap; }
|
|
46
|
+
.dot { background: var(--pyric-accent); border-radius: 50%; height: 8px; width: 8px; }
|
|
47
|
+
.dot.error { background: var(--pyric-error); box-shadow: 0 0 0 3px rgba(240,160,160,.12); }
|
|
48
|
+
.signal.update { color: var(--pyric-warning); }
|
|
49
|
+
.chevron { color: var(--pyric-muted); height: 14px; width: 14px; }
|
|
50
|
+
.panel {
|
|
51
|
+
background: var(--pyric-bg);
|
|
52
|
+
border: 1px solid var(--pyric-border);
|
|
53
|
+
border-radius: 8px;
|
|
54
|
+
box-shadow: 0 18px 60px rgba(0, 0, 0, .48);
|
|
55
|
+
max-width: calc(100vw - 40px);
|
|
56
|
+
overflow: hidden;
|
|
57
|
+
width: 380px;
|
|
58
|
+
}
|
|
59
|
+
.panel-header { align-items: center; display: flex; height: 44px; justify-content: space-between; padding: 0 12px; }
|
|
60
|
+
.panel-title { gap: 8px; min-width: 0; }
|
|
61
|
+
.panel-title strong { font: 500 12px/1 ui-monospace, monospace; }
|
|
62
|
+
.count { background: rgba(58,42,42,.3); border: 1px solid #3a2a2a; border-radius: 999px; color: var(--pyric-error); font: 9px/1 ui-monospace, monospace; padding: 4px 6px; }
|
|
63
|
+
.icon-button { align-items: center; background: transparent; border: 0; border-radius: 4px; color: var(--pyric-muted); cursor: pointer; display: inline-flex; height: 28px; justify-content: center; padding: 0; width: 28px; }
|
|
64
|
+
.icon-button:hover { background: rgba(255,255,255,.05); color: var(--pyric-text); }
|
|
65
|
+
.icon-button:disabled { cursor: not-allowed; opacity: .42; }
|
|
66
|
+
.icon-button[data-copy-failed] { color: var(--pyric-error); }
|
|
67
|
+
.icon { height: 15px; width: 15px; }
|
|
68
|
+
.worker-state { border-top: 1px solid var(--pyric-border-soft); color: var(--pyric-muted); font-size: 10px; justify-content: space-between; min-height: 34px; padding: 7px 12px; }
|
|
69
|
+
.worker-state .available { color: var(--pyric-warning); }
|
|
70
|
+
.worker-state .state-label { align-items: center; display: flex; gap: 7px; }
|
|
71
|
+
.mini-dot { background: var(--pyric-accent); border-radius: 50%; height: 6px; width: 6px; }
|
|
72
|
+
.available .mini-dot { background: var(--pyric-warning); }
|
|
73
|
+
.epochs { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
74
|
+
.errors { background: var(--pyric-content); border-bottom: 1px solid var(--pyric-border-soft); border-top: 1px solid var(--pyric-border-soft); max-height: 184px; min-height: 58px; overflow-y: auto; }
|
|
75
|
+
.errors::-webkit-scrollbar { width: 8px; }
|
|
76
|
+
.errors::-webkit-scrollbar-thumb { background: #33333f; border-radius: 4px; }
|
|
77
|
+
.error-row { align-items: flex-start; border-bottom: 1px solid rgba(42,42,53,.7); display: grid; gap: 8px; grid-template-columns: 18px minmax(0,1fr) 28px; padding: 10px 8px 10px 12px; }
|
|
78
|
+
.error-row:last-child { border-bottom: 0; }
|
|
79
|
+
.error-number { color: var(--pyric-error); font: 10px/20px ui-monospace, monospace; }
|
|
80
|
+
.error-body { min-width: 0; }
|
|
81
|
+
.error-body code { color: #d7d7df; display: block; font-size: 11px; line-height: 1.55; overflow-wrap: anywhere; white-space: pre-wrap; }
|
|
82
|
+
.error-meta { color: var(--pyric-muted); font: 9px/1.4 ui-monospace, monospace; margin-top: 4px; overflow-wrap: anywhere; }
|
|
83
|
+
.empty { align-items: center; color: var(--pyric-muted); display: flex; font: 11px/1.5 ui-monospace, monospace; min-height: 57px; padding: 12px; }
|
|
84
|
+
.actions { display: grid; gap: 8px; grid-template-columns: 1fr 1fr; min-height: 56px; padding: 10px 12px; }
|
|
85
|
+
.button { align-items: center; background: transparent; border: 1px solid var(--pyric-border-soft); border-radius: 4px; color: var(--pyric-muted); display: inline-flex; font-size: 10px; justify-content: center; letter-spacing: .06em; min-height: 34px; padding: 6px 8px; text-decoration: none; text-transform: uppercase; }
|
|
86
|
+
button.button { cursor: pointer; }
|
|
87
|
+
.button:hover:not(:disabled):not([aria-disabled="true"]), a.button:hover { border-color: #3a3a48; color: var(--pyric-text); }
|
|
88
|
+
.button.update:not(:disabled):not([aria-disabled="true"]) { background: rgba(230,199,156,.1); border-color: rgba(230,199,156,.4); color: var(--pyric-warning); }
|
|
89
|
+
.button.update:not(:disabled):not([aria-disabled="true"]):hover { background: rgba(230,199,156,.15); }
|
|
90
|
+
.button:disabled, .button[aria-disabled="true"] { cursor: not-allowed; opacity: .42; }
|
|
91
|
+
.button svg { height: 14px; margin-left: 6px; width: 14px; }
|
|
92
|
+
@media (max-width: 460px) {
|
|
93
|
+
:host { bottom: max(12px, env(safe-area-inset-bottom)); right: 12px; }
|
|
94
|
+
.panel { max-width: calc(100vw - 24px); }
|
|
95
|
+
.worker-state { align-items: flex-start; flex-direction: column; gap: 4px; }
|
|
96
|
+
}
|
|
97
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
98
|
+
.chip, .panel { animation: pyric-enter 120ms ease-out; transform-origin: bottom right; }
|
|
99
|
+
@keyframes pyric-enter { from { opacity: 0; transform: translateY(4px) scale(.98); } }
|
|
100
|
+
}
|
|
101
|
+
`;
|
|
102
|
+
const icons = {
|
|
103
|
+
close: '<svg class="icon" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="m6 6 12 12M18 6 6 18"/></svg>',
|
|
104
|
+
copy: '<svg class="icon" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><rect x="8" y="8" width="11" height="11" rx="1"/><path d="M16 8V5H5v11h3"/></svg>',
|
|
105
|
+
chevron: '<svg class="chevron" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="m6 15 6-6 6 6"/></svg>',
|
|
106
|
+
external: '<svg aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M14 5h5v5M19 5l-8 8"/><path d="M19 13v6H5V5h6"/></svg>',
|
|
107
|
+
};
|
|
108
|
+
function escapeAttribute(value) {
|
|
109
|
+
return value.replaceAll('&', '&').replaceAll('"', '"').replaceAll('<', '<');
|
|
110
|
+
}
|
|
111
|
+
export function formatPyricRuntimeError(error) {
|
|
112
|
+
const context = [
|
|
113
|
+
error.source,
|
|
114
|
+
error.service && error.method ? `${error.service}.${error.method}` : error.service ?? error.method,
|
|
115
|
+
error.path,
|
|
116
|
+
error.code,
|
|
117
|
+
].filter(Boolean).join(' · ');
|
|
118
|
+
return `${error.message}${context ? `\n${context}` : ''}${error.stack ? `\n${error.stack}` : ''}`;
|
|
119
|
+
}
|
|
120
|
+
function renderErrors(snapshot, canCopy) {
|
|
121
|
+
if (snapshot.errors.length === 0)
|
|
122
|
+
return '<div class="empty">No sandbox errors.</div>';
|
|
123
|
+
return snapshot.errors.map((error, index) => `
|
|
124
|
+
<div class="error-row" data-error-id="${escapeAttribute(error.id)}">
|
|
125
|
+
<span class="error-number">${String(index + 1).padStart(2, '0')}</span>
|
|
126
|
+
<div class="error-body"><code></code><div class="error-meta"></div></div>
|
|
127
|
+
<button class="icon-button" type="button" data-copy-error="${escapeAttribute(error.id)}" aria-label="${canCopy ? `Copy error ${index + 1}` : 'Copy unavailable'}" title="${canCopy ? 'Copy error' : 'Clipboard unavailable'}" ${canCopy ? '' : 'disabled'}>${icons.copy}</button>
|
|
128
|
+
</div>
|
|
129
|
+
`).join('');
|
|
130
|
+
}
|
|
131
|
+
/** Mount the framework-independent runtime chip in an isolated shadow root. */
|
|
132
|
+
export function mountPyricRuntimeChip(options) {
|
|
133
|
+
const documentLike = options.document ?? document;
|
|
134
|
+
const host = documentLike.createElement('div');
|
|
135
|
+
host.setAttribute('data-pyric-runtime-chip-host', '');
|
|
136
|
+
const root = host.attachShadow({ mode: 'open' });
|
|
137
|
+
root.innerHTML = `<style>${styles}</style><div class="announcer" role="status" aria-live="polite" aria-atomic="true"></div><div data-view></div>`;
|
|
138
|
+
const view = root.querySelector('[data-view]');
|
|
139
|
+
const announcer = root.querySelector('.announcer');
|
|
140
|
+
const clipboard = options.clipboard
|
|
141
|
+
?? documentLike.defaultView?.navigator.clipboard;
|
|
142
|
+
const studioUrl = 'studioUrl' in options
|
|
143
|
+
? options.studioUrl
|
|
144
|
+
: options.runtime.getSnapshot().manifest.studioUrl;
|
|
145
|
+
let open = options.initiallyOpen ?? false;
|
|
146
|
+
let snapshot = options.runtime.getSnapshot();
|
|
147
|
+
const render = (next = snapshot) => {
|
|
148
|
+
const active = root.activeElement;
|
|
149
|
+
const oldViewport = view.querySelector('[data-error-viewport]');
|
|
150
|
+
const oldScroll = oldViewport
|
|
151
|
+
? {
|
|
152
|
+
top: oldViewport.scrollTop,
|
|
153
|
+
atBottom: oldViewport.scrollHeight - oldViewport.scrollTop - oldViewport.clientHeight <= 8,
|
|
154
|
+
}
|
|
155
|
+
: null;
|
|
156
|
+
const activeCopyId = active?.getAttribute('data-copy-error');
|
|
157
|
+
const activeControl = ['data-expand', 'data-collapse', 'data-update-worker', 'data-open-studio']
|
|
158
|
+
.find((attribute) => active?.hasAttribute(attribute));
|
|
159
|
+
const focusToken = activeCopyId !== null && activeCopyId !== undefined
|
|
160
|
+
? { attribute: 'data-copy-error', value: activeCopyId }
|
|
161
|
+
: activeControl
|
|
162
|
+
? { attribute: activeControl, value: null }
|
|
163
|
+
: null;
|
|
164
|
+
snapshot = next;
|
|
165
|
+
const errorCount = snapshot.errors.length;
|
|
166
|
+
const workerLabel = snapshot.updateAvailable
|
|
167
|
+
? 'New worker available'
|
|
168
|
+
: snapshot.mode === 'starting'
|
|
169
|
+
? 'Sandbox starting'
|
|
170
|
+
: snapshot.mode === 'in-page'
|
|
171
|
+
? 'In-page sandbox'
|
|
172
|
+
: 'Worker current';
|
|
173
|
+
const epochs = snapshot.updateAvailable
|
|
174
|
+
? `${snapshot.runningEpoch?.slice(0, 8) ?? 'unknown'} → ${snapshot.servedEpoch?.slice(0, 8) ?? 'unknown'}`
|
|
175
|
+
: snapshot.runningEpoch?.slice(0, 8) ?? '';
|
|
176
|
+
view.innerHTML = `${open ? `
|
|
177
|
+
<section class="panel" role="dialog" aria-label="Pyric runtime">
|
|
178
|
+
<header class="panel-header">
|
|
179
|
+
<div class="panel-title"><span class="brand-mark">>_</span><strong>Pyric runtime</strong>${errorCount > 0 ? `<span class="count">${errorCount} ${errorCount === 1 ? 'error' : 'errors'}</span>` : ''}</div>
|
|
180
|
+
<button class="icon-button" type="button" data-collapse aria-label="Collapse Pyric runtime">${icons.close}</button>
|
|
181
|
+
</header>
|
|
182
|
+
<div class="worker-state"><span class="state-label${snapshot.updateAvailable ? ' available' : ''}"><span class="mini-dot"></span>${workerLabel}</span><span class="epochs">${epochs}</span></div>
|
|
183
|
+
<div class="errors" data-error-viewport>${renderErrors(snapshot, Boolean(clipboard))}</div>
|
|
184
|
+
<div class="actions">
|
|
185
|
+
<button class="button update" type="button" data-update-worker ${snapshot.updateAvailable ? '' : 'disabled'} aria-disabled="${snapshot.updateAvailable && !snapshot.updatingWorker ? 'false' : 'true'}">${snapshot.updatingWorker ? 'Updating…' : 'Update worker'}</button>
|
|
186
|
+
${studioUrl
|
|
187
|
+
? `<a class="button" data-open-studio href="${escapeAttribute(studioUrl)}" target="_blank" rel="noopener noreferrer">Studio${icons.external}</a>`
|
|
188
|
+
: `<span class="button" data-open-studio aria-disabled="true" title="Pyric Studio is disabled">Studio${icons.external}</span>`}
|
|
189
|
+
</div>
|
|
190
|
+
</section>
|
|
191
|
+
` : `
|
|
192
|
+
<button class="chip" type="button" data-expand aria-label="Open Pyric runtime" aria-expanded="false">
|
|
193
|
+
<span class="brand"><span class="dot${errorCount > 0 ? ' error' : ''}"></span><span class="brand-label">Pyric</span></span>
|
|
194
|
+
<span class="signals">${snapshot.updateAvailable ? '<span class="signal update">update</span>' : ''}${errorCount > 0 ? `<span class="signal">${errorCount} ${errorCount === 1 ? 'error' : 'errors'}</span>` : '<span class="signal">ready</span>'}${icons.chevron}</span>
|
|
195
|
+
</button>
|
|
196
|
+
`}`;
|
|
197
|
+
const announcement = `${workerLabel}. ${errorCount === 0 ? 'No runtime errors' : `${errorCount} runtime ${errorCount === 1 ? 'error' : 'errors'}`}.`;
|
|
198
|
+
if (announcer.textContent !== announcement)
|
|
199
|
+
announcer.textContent = announcement;
|
|
200
|
+
const newViewport = view.querySelector('[data-error-viewport]');
|
|
201
|
+
if (oldScroll && newViewport) {
|
|
202
|
+
newViewport.scrollTop = oldScroll.atBottom ? newViewport.scrollHeight : oldScroll.top;
|
|
203
|
+
}
|
|
204
|
+
for (const error of snapshot.errors) {
|
|
205
|
+
const row = [...root.querySelectorAll('[data-error-id]')]
|
|
206
|
+
.find((candidate) => candidate.getAttribute('data-error-id') === error.id);
|
|
207
|
+
const code = row?.querySelector('code');
|
|
208
|
+
const meta = row?.querySelector('.error-meta');
|
|
209
|
+
if (code)
|
|
210
|
+
code.textContent = error.message;
|
|
211
|
+
if (meta)
|
|
212
|
+
meta.textContent = [error.source, error.service && error.method ? `${error.service}.${error.method}` : error.service ?? error.method, error.path, error.code].filter(Boolean).join(' · ');
|
|
213
|
+
}
|
|
214
|
+
root.querySelector('[data-expand]')?.addEventListener('click', () => {
|
|
215
|
+
open = true;
|
|
216
|
+
render();
|
|
217
|
+
root.querySelector('[data-collapse]')?.focus();
|
|
218
|
+
});
|
|
219
|
+
root.querySelector('[data-collapse]')?.addEventListener('click', () => {
|
|
220
|
+
open = false;
|
|
221
|
+
render();
|
|
222
|
+
root.querySelector('[data-expand]')?.focus();
|
|
223
|
+
});
|
|
224
|
+
root.querySelector('[data-update-worker]')?.addEventListener('click', () => {
|
|
225
|
+
if (!snapshot.updateAvailable || snapshot.updatingWorker)
|
|
226
|
+
return;
|
|
227
|
+
void options.runtime.updateWorker().catch(() => { });
|
|
228
|
+
});
|
|
229
|
+
for (const button of root.querySelectorAll('[data-copy-error]')) {
|
|
230
|
+
button.addEventListener('click', () => {
|
|
231
|
+
const error = snapshot.errors.find((item) => item.id === button.dataset.copyError);
|
|
232
|
+
if (!error || !clipboard)
|
|
233
|
+
return;
|
|
234
|
+
void clipboard.writeText(formatPyricRuntimeError(error)).catch(() => {
|
|
235
|
+
button.setAttribute('data-copy-failed', '');
|
|
236
|
+
button.setAttribute('aria-label', 'Copy failed');
|
|
237
|
+
button.title = 'Copy failed';
|
|
238
|
+
});
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
if (focusToken) {
|
|
242
|
+
const candidates = root.querySelectorAll(`[${focusToken.attribute}]`);
|
|
243
|
+
const replacement = [...candidates].find((candidate) => focusToken.value === null || candidate.getAttribute(focusToken.attribute) === focusToken.value);
|
|
244
|
+
replacement?.focus();
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
documentLike.body.append(host);
|
|
248
|
+
const unsubscribe = options.runtime.subscribe(render);
|
|
249
|
+
return {
|
|
250
|
+
element: host,
|
|
251
|
+
dispose() {
|
|
252
|
+
unsubscribe();
|
|
253
|
+
host.remove();
|
|
254
|
+
},
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=chip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chip.js","sourceRoot":"","sources":["../../../src/serve/runtime/chip.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** Stable routes and identity used by the served runtime and its UI. */
|
|
2
|
+
export declare const PYRIC_WORKER_URL = "/__pyric/sdk/worker.js";
|
|
3
|
+
export declare const PYRIC_WORKER_NAME = "pyric-shared-worker";
|
|
4
|
+
export declare const PYRIC_STUDIO_URL = "/__pyric/ui/";
|
|
5
|
+
export interface PyricRuntimeManifest {
|
|
6
|
+
studioUrl: string;
|
|
7
|
+
worker: {
|
|
8
|
+
url: string;
|
|
9
|
+
name: string;
|
|
10
|
+
/** Content epoch served by the current dev server; null in in-page mode. */
|
|
11
|
+
servedEpoch: string | null;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
interface RuntimeDocument {
|
|
15
|
+
querySelector(selector: string): {
|
|
16
|
+
getAttribute(name: string): string | null;
|
|
17
|
+
} | null;
|
|
18
|
+
}
|
|
19
|
+
/** Read the server-stamped worker epoch before application code starts. */
|
|
20
|
+
export declare function readPyricRuntimeManifest(documentLike?: RuntimeDocument | undefined): PyricRuntimeManifest;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=manifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/serve/runtime/manifest.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,eAAO,MAAM,gBAAgB,2BAA2B,CAAC;AACzD,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAE/C,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,4EAA4E;QAC5E,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,CAAC;CACH;AAED,UAAU,eAAe;IACvB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG;QAAE,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;CACvF;AAED,2EAA2E;AAC3E,wBAAgB,wBAAwB,CACtC,YAAY,GAAE,eAAe,GAAG,SAAkE,GACjG,oBAAoB,CActB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** Stable routes and identity used by the served runtime and its UI. */
|
|
2
|
+
export const PYRIC_WORKER_URL = '/__pyric/sdk/worker.js';
|
|
3
|
+
export const PYRIC_WORKER_NAME = 'pyric-shared-worker';
|
|
4
|
+
export const PYRIC_STUDIO_URL = '/__pyric/ui/';
|
|
5
|
+
/** Read the server-stamped worker epoch before application code starts. */
|
|
6
|
+
export function readPyricRuntimeManifest(documentLike = typeof document === 'undefined' ? undefined : document) {
|
|
7
|
+
const servedEpoch = documentLike
|
|
8
|
+
?.querySelector('meta[name="pyric-worker-v"]')
|
|
9
|
+
?.getAttribute('content')
|
|
10
|
+
?.trim() || null;
|
|
11
|
+
return {
|
|
12
|
+
studioUrl: PYRIC_STUDIO_URL,
|
|
13
|
+
worker: {
|
|
14
|
+
url: PYRIC_WORKER_URL,
|
|
15
|
+
name: PYRIC_WORKER_NAME,
|
|
16
|
+
servedEpoch,
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/serve/runtime/manifest.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,MAAM,CAAC,MAAM,gBAAgB,GAAG,wBAAwB,CAAC;AACzD,MAAM,CAAC,MAAM,iBAAiB,GAAG,qBAAqB,CAAC;AACvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAgB/C,2EAA2E;AAC3E,MAAM,UAAU,wBAAwB,CACtC,eAA4C,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;IAElG,MAAM,WAAW,GAAG,YAAY;QAC9B,EAAE,aAAa,CAAC,6BAA6B,CAAC;QAC9C,EAAE,YAAY,CAAC,SAAS,CAAC;QACzB,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;IAEnB,OAAO;QACL,SAAS,EAAE,gBAAgB;QAC3B,MAAM,EAAE;YACN,GAAG,EAAE,gBAAgB;YACrB,IAAI,EAAE,iBAAiB;YACvB,WAAW;SACZ;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { SandboxEvent } from 'pyric/sandbox';
|
|
2
|
+
import type { PyricRuntimeManifest } from './manifest.js';
|
|
3
|
+
export type PyricRuntimeMode = 'starting' | 'shared-worker' | 'in-page';
|
|
4
|
+
export type PyricRuntimeErrorSource = 'sandbox' | 'worker' | 'runtime';
|
|
5
|
+
export interface PyricRuntimeError {
|
|
6
|
+
id: string;
|
|
7
|
+
source: PyricRuntimeErrorSource;
|
|
8
|
+
at: number;
|
|
9
|
+
message: string;
|
|
10
|
+
code?: string;
|
|
11
|
+
stack?: string;
|
|
12
|
+
service?: string;
|
|
13
|
+
method?: string;
|
|
14
|
+
path?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface PyricRuntimeSnapshot {
|
|
17
|
+
manifest: PyricRuntimeManifest;
|
|
18
|
+
mode: PyricRuntimeMode;
|
|
19
|
+
servedEpoch: string | null;
|
|
20
|
+
runningEpoch: string | null;
|
|
21
|
+
updateAvailable: boolean;
|
|
22
|
+
updatingWorker: boolean;
|
|
23
|
+
errors: readonly PyricRuntimeError[];
|
|
24
|
+
}
|
|
25
|
+
export interface PyricRuntimeStatus {
|
|
26
|
+
getSnapshot(): PyricRuntimeSnapshot;
|
|
27
|
+
subscribe(listener: (snapshot: PyricRuntimeSnapshot) => void): () => void;
|
|
28
|
+
setWorker(input: {
|
|
29
|
+
mode: Exclude<PyricRuntimeMode, 'starting'>;
|
|
30
|
+
runningEpoch?: string | null;
|
|
31
|
+
}): void;
|
|
32
|
+
setWorkerUpdater(update: (() => Promise<void>) | null): void;
|
|
33
|
+
updateWorker(): Promise<void>;
|
|
34
|
+
reportError(error: unknown, source: PyricRuntimeErrorSource): void;
|
|
35
|
+
recordSandboxEvents(events: readonly SandboxEvent[]): void;
|
|
36
|
+
clearErrors(): void;
|
|
37
|
+
}
|
|
38
|
+
/** Convert thrown values into a serializable, copyable runtime error. */
|
|
39
|
+
export declare function normalizePyricRuntimeError(value: unknown, source: PyricRuntimeErrorSource, at?: number, id?: string): PyricRuntimeError;
|
|
40
|
+
/** Observable, bounded status model shared by the runtime and injected UI. */
|
|
41
|
+
export declare function createPyricRuntimeStatus(manifest: PyricRuntimeManifest, options?: {
|
|
42
|
+
maxErrors?: number;
|
|
43
|
+
}): PyricRuntimeStatus;
|
|
44
|
+
declare global {
|
|
45
|
+
var __pyricRuntime: PyricRuntimeStatus | undefined;
|
|
46
|
+
}
|
|
47
|
+
/** One global status source even when the runtime and UI are separate bundles. */
|
|
48
|
+
export declare function getPyricRuntimeStatus(): PyricRuntimeStatus;
|
|
49
|
+
//# sourceMappingURL=status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/serve/runtime/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAG1D,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,eAAe,GAAG,SAAS,CAAC;AACxE,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEvE,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,uBAAuB,CAAC;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,IAAI,EAAE,gBAAgB,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,IAAI,oBAAoB,CAAC;IACpC,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC1E,SAAS,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IACtG,gBAAgB,CAAC,MAAM,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IAC7D,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACnE,mBAAmB,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,IAAI,CAAC;IAC3D,WAAW,IAAI,IAAI,CAAC;CACrB;AAUD,yEAAyE;AACzE,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,uBAAuB,EAC/B,EAAE,SAAa,EACf,EAAE,SAAmC,GACpC,iBAAiB,CAuBnB;AA0CD,8EAA8E;AAC9E,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACnC,kBAAkB,CAiFpB;AAED,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,cAAc,EAAE,kBAAkB,GAAG,SAAS,CAAC;CACpD;AAED,kFAAkF;AAClF,wBAAgB,qBAAqB,IAAI,kBAAkB,CAG1D"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { readPyricRuntimeManifest } from './manifest.js';
|
|
2
|
+
let nextErrorId = 0;
|
|
3
|
+
function errorCode(value) {
|
|
4
|
+
if (!value || typeof value !== 'object')
|
|
5
|
+
return undefined;
|
|
6
|
+
const code = value.code;
|
|
7
|
+
return typeof code === 'string' ? code : undefined;
|
|
8
|
+
}
|
|
9
|
+
/** Convert thrown values into a serializable, copyable runtime error. */
|
|
10
|
+
export function normalizePyricRuntimeError(value, source, at = Date.now(), id = `runtime-error-${++nextErrorId}`) {
|
|
11
|
+
if (value instanceof Error) {
|
|
12
|
+
return {
|
|
13
|
+
id,
|
|
14
|
+
source,
|
|
15
|
+
at,
|
|
16
|
+
message: value.message,
|
|
17
|
+
...(errorCode(value) ? { code: errorCode(value) } : {}),
|
|
18
|
+
...(value.stack ? { stack: value.stack } : {}),
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
if (typeof value === 'string')
|
|
22
|
+
return { id, source, at, message: value };
|
|
23
|
+
if (value && typeof value === 'object') {
|
|
24
|
+
const message = value.message;
|
|
25
|
+
return {
|
|
26
|
+
id,
|
|
27
|
+
source,
|
|
28
|
+
at,
|
|
29
|
+
message: typeof message === 'string' ? message : String(value),
|
|
30
|
+
...(errorCode(value) ? { code: errorCode(value) } : {}),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
return { id, source, at, message: String(value) };
|
|
34
|
+
}
|
|
35
|
+
function sandboxError(event) {
|
|
36
|
+
if (event.kind === 'runtime_error') {
|
|
37
|
+
return {
|
|
38
|
+
id: event.id,
|
|
39
|
+
source: 'sandbox',
|
|
40
|
+
at: event.at,
|
|
41
|
+
service: event.service,
|
|
42
|
+
method: event.method,
|
|
43
|
+
...(event.path ? { path: event.path } : {}),
|
|
44
|
+
...(event.error.code ? { code: event.error.code } : {}),
|
|
45
|
+
message: event.error.message,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
if (event.kind === 'listener_errored' && event.error) {
|
|
49
|
+
return {
|
|
50
|
+
id: event.id,
|
|
51
|
+
source: 'sandbox',
|
|
52
|
+
at: event.at,
|
|
53
|
+
service: 'firestore',
|
|
54
|
+
method: 'listener',
|
|
55
|
+
...('path' in event.target ? { path: event.target.path } : {}),
|
|
56
|
+
code: event.error.code,
|
|
57
|
+
message: event.error.message,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
if (event.kind === 'listener' && event.phase === 'errored' && event.error) {
|
|
61
|
+
return {
|
|
62
|
+
id: event.id,
|
|
63
|
+
source: 'sandbox',
|
|
64
|
+
at: event.at,
|
|
65
|
+
service: event.service,
|
|
66
|
+
method: 'listener',
|
|
67
|
+
...(event.target.path ? { path: event.target.path } : {}),
|
|
68
|
+
...(event.error.code ? { code: event.error.code } : {}),
|
|
69
|
+
message: event.error.message,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
/** Observable, bounded status model shared by the runtime and injected UI. */
|
|
75
|
+
export function createPyricRuntimeStatus(manifest, options = {}) {
|
|
76
|
+
const maxErrors = Math.max(1, options.maxErrors ?? 50);
|
|
77
|
+
const listeners = new Set();
|
|
78
|
+
const errorIds = new Set();
|
|
79
|
+
let snapshot = {
|
|
80
|
+
manifest,
|
|
81
|
+
mode: 'starting',
|
|
82
|
+
servedEpoch: manifest.worker.servedEpoch,
|
|
83
|
+
runningEpoch: null,
|
|
84
|
+
updateAvailable: false,
|
|
85
|
+
updatingWorker: false,
|
|
86
|
+
errors: [],
|
|
87
|
+
};
|
|
88
|
+
let workerUpdater = null;
|
|
89
|
+
const publish = (next) => {
|
|
90
|
+
snapshot = next;
|
|
91
|
+
for (const listener of listeners)
|
|
92
|
+
listener(snapshot);
|
|
93
|
+
};
|
|
94
|
+
const appendError = (error) => {
|
|
95
|
+
if (errorIds.has(error.id))
|
|
96
|
+
return;
|
|
97
|
+
errorIds.add(error.id);
|
|
98
|
+
const errors = [...snapshot.errors, error].slice(-maxErrors);
|
|
99
|
+
const retained = new Set(errors.map((item) => item.id));
|
|
100
|
+
for (const id of errorIds)
|
|
101
|
+
if (!retained.has(id))
|
|
102
|
+
errorIds.delete(id);
|
|
103
|
+
publish({ ...snapshot, errors });
|
|
104
|
+
};
|
|
105
|
+
return {
|
|
106
|
+
getSnapshot: () => snapshot,
|
|
107
|
+
subscribe(listener) {
|
|
108
|
+
listeners.add(listener);
|
|
109
|
+
listener(snapshot);
|
|
110
|
+
return () => listeners.delete(listener);
|
|
111
|
+
},
|
|
112
|
+
setWorker({ mode, runningEpoch = null }) {
|
|
113
|
+
const servedEpoch = manifest.worker.servedEpoch;
|
|
114
|
+
publish({
|
|
115
|
+
...snapshot,
|
|
116
|
+
mode,
|
|
117
|
+
runningEpoch,
|
|
118
|
+
updateAvailable: Boolean(mode === 'shared-worker'
|
|
119
|
+
&& servedEpoch
|
|
120
|
+
&& runningEpoch
|
|
121
|
+
&& runningEpoch !== 'dev'
|
|
122
|
+
&& servedEpoch !== runningEpoch),
|
|
123
|
+
updatingWorker: false,
|
|
124
|
+
});
|
|
125
|
+
},
|
|
126
|
+
setWorkerUpdater(update) {
|
|
127
|
+
workerUpdater = update;
|
|
128
|
+
},
|
|
129
|
+
async updateWorker() {
|
|
130
|
+
if (!snapshot.updateAvailable || snapshot.updatingWorker || !workerUpdater) {
|
|
131
|
+
throw new Error('No Pyric worker update is available.');
|
|
132
|
+
}
|
|
133
|
+
publish({ ...snapshot, updatingWorker: true });
|
|
134
|
+
try {
|
|
135
|
+
await workerUpdater();
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
publish({ ...snapshot, updatingWorker: false });
|
|
139
|
+
appendError(normalizePyricRuntimeError(error, 'worker'));
|
|
140
|
+
throw error;
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
reportError(error, source) {
|
|
144
|
+
appendError(normalizePyricRuntimeError(error, source));
|
|
145
|
+
},
|
|
146
|
+
recordSandboxEvents(events) {
|
|
147
|
+
for (const event of events) {
|
|
148
|
+
const normalized = sandboxError(event);
|
|
149
|
+
if (normalized)
|
|
150
|
+
appendError(normalized);
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
clearErrors() {
|
|
154
|
+
errorIds.clear();
|
|
155
|
+
publish({ ...snapshot, errors: [] });
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
/** One global status source even when the runtime and UI are separate bundles. */
|
|
160
|
+
export function getPyricRuntimeStatus() {
|
|
161
|
+
return globalThis.__pyricRuntime
|
|
162
|
+
??= createPyricRuntimeStatus(readPyricRuntimeManifest());
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/serve/runtime/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ClientDb } from '../worker/client/handles.js';
|
|
2
|
+
/** Construct the control connection without letting a browser policy failure abort runtime boot. */
|
|
3
|
+
export declare function connectRuntimeWorker(connect: () => ClientDb, reportError: (error: unknown) => void): ClientDb | null;
|
|
4
|
+
//# sourceMappingURL=worker-connection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-connection.d.ts","sourceRoot":"","sources":["../../../src/serve/runtime/worker-connection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE5D,oGAAoG;AACpG,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,QAAQ,EACvB,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GACpC,QAAQ,GAAG,IAAI,CAOjB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Construct the control connection without letting a browser policy failure abort runtime boot. */
|
|
2
|
+
export function connectRuntimeWorker(connect, reportError) {
|
|
3
|
+
try {
|
|
4
|
+
return connect();
|
|
5
|
+
}
|
|
6
|
+
catch (error) {
|
|
7
|
+
reportError(error);
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=worker-connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-connection.js","sourceRoot":"","sources":["../../../src/serve/runtime/worker-connection.ts"],"names":[],"mappings":"AAEA,oGAAoG;AACpG,MAAM,UAAU,oBAAoB,CAClC,OAAuB,EACvB,WAAqC;IAErC,IAAI,CAAC;QACH,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const PYRIC_WORKER_GENERATION_KEY = "pyric:worker-generation";
|
|
2
|
+
interface EpochStorage {
|
|
3
|
+
getItem(key: string): string | null;
|
|
4
|
+
setItem(key: string, value: string): void;
|
|
5
|
+
removeItem?(key: string): void;
|
|
6
|
+
}
|
|
7
|
+
/** Select the replacement generation only after this page was told to move. */
|
|
8
|
+
export declare function workerNameForEpoch(_servedEpoch: string | null, storage: EpochStorage | undefined): string;
|
|
9
|
+
/** Persist the generation boundary before a page reloads. */
|
|
10
|
+
export declare function rememberWorkerEpoch(epoch: string, storage: EpochStorage | undefined): void;
|
|
11
|
+
/** Prove origin storage works without publishing a successor generation. */
|
|
12
|
+
export declare function preflightWorkerEpochStorage(storage: EpochStorage | undefined): void;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=worker-generation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-generation.d.ts","sourceRoot":"","sources":["../../../src/serve/runtime/worker-generation.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,2BAA2B,4BAA4B,CAAC;AAGrE,UAAU,YAAY;IACpB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACpC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,UAAU,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,OAAO,EAAE,YAAY,GAAG,SAAS,GAChC,MAAM,CAUR;AAED,6DAA6D;AAC7D,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,YAAY,GAAG,SAAS,GAChC,IAAI,CAoBN;AAED,4EAA4E;AAC5E,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI,CAoBnF"}
|