@rikalabs/akter 0.1.0-alpha.0
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/CHANGELOG.md +15 -0
- package/LICENSE +202 -0
- package/NOTICE +8 -0
- package/README.md +116 -0
- package/dist/actor/codecs.d.ts +77 -0
- package/dist/actor/codecs.js +87 -0
- package/dist/actor/connections.d.ts +34 -0
- package/dist/actor/connections.js +145 -0
- package/dist/actor/definition.d.ts +893 -0
- package/dist/actor/definition.js +147 -0
- package/dist/actor/descriptor.d.ts +172 -0
- package/dist/actor/descriptor.js +367 -0
- package/dist/actor/handles.d.ts +77 -0
- package/dist/actor/handles.js +265 -0
- package/dist/actor/jobs.d.ts +10 -0
- package/dist/actor/jobs.js +137 -0
- package/dist/actor/layers.d.ts +41 -0
- package/dist/actor/layers.js +177 -0
- package/dist/actor/reads.d.ts +47 -0
- package/dist/actor/reads.js +224 -0
- package/dist/actor/served.d.ts +120 -0
- package/dist/actor/served.js +72 -0
- package/dist/actor/turns.d.ts +13 -0
- package/dist/actor/turns.js +332 -0
- package/dist/actor/workflows.d.ts +16 -0
- package/dist/actor/workflows.js +37 -0
- package/dist/client/calls.d.ts +47 -0
- package/dist/client/calls.js +425 -0
- package/dist/client/clock.d.ts +56 -0
- package/dist/client/clock.js +119 -0
- package/dist/client/fleet-page.d.ts +15 -0
- package/dist/client/fleet-page.js +13 -0
- package/dist/client/fleet.d.ts +29 -0
- package/dist/client/fleet.js +51 -0
- package/dist/client/index.d.ts +17 -0
- package/dist/client/index.js +6 -0
- package/dist/client/make.d.ts +157 -0
- package/dist/client/make.js +221 -0
- package/dist/client/offline/queue.d.ts +118 -0
- package/dist/client/offline/queue.js +292 -0
- package/dist/client/offline/store.d.ts +74 -0
- package/dist/client/offline/store.js +78 -0
- package/dist/client/optimistic.d.ts +57 -0
- package/dist/client/optimistic.js +136 -0
- package/dist/client/report.d.ts +2 -0
- package/dist/client/report.js +8 -0
- package/dist/client/sessions/connection.d.ts +118 -0
- package/dist/client/sessions/connection.js +162 -0
- package/dist/client/sessions/feed.d.ts +42 -0
- package/dist/client/sessions/feed.js +43 -0
- package/dist/client/sessions/sse.d.ts +47 -0
- package/dist/client/sessions/sse.js +112 -0
- package/dist/client/sessions/stream.d.ts +28 -0
- package/dist/client/sessions/stream.js +35 -0
- package/dist/client/sessions/watch.d.ts +34 -0
- package/dist/client/sessions/watch.js +40 -0
- package/dist/client/transport.d.ts +37 -0
- package/dist/client/transport.js +66 -0
- package/dist/contexts/command.d.ts +132 -0
- package/dist/contexts/command.js +20 -0
- package/dist/contexts/connection.d.ts +68 -0
- package/dist/contexts/connection.js +0 -0
- package/dist/contexts/job.d.ts +49 -0
- package/dist/contexts/job.js +0 -0
- package/dist/contexts/workflow.d.ts +147 -0
- package/dist/contexts/workflow.js +22 -0
- package/dist/errors/actor.d.ts +200 -0
- package/dist/errors/actor.js +271 -0
- package/dist/errors/content.d.ts +19 -0
- package/dist/errors/content.js +14 -0
- package/dist/errors/database.d.ts +22 -0
- package/dist/errors/database.js +23 -0
- package/dist/errors/events.d.ts +17 -0
- package/dist/errors/events.js +14 -0
- package/dist/errors/subscription.d.ts +12 -0
- package/dist/errors/subscription.js +8 -0
- package/dist/errors/workflow.d.ts +28 -0
- package/dist/errors/workflow.js +17 -0
- package/dist/handles/actors.d.ts +17 -0
- package/dist/handles/actors.js +7 -0
- package/dist/handles/content.d.ts +59 -0
- package/dist/handles/content.js +36 -0
- package/dist/handles/intents.d.ts +164 -0
- package/dist/handles/intents.js +214 -0
- package/dist/handles/run.d.ts +31 -0
- package/dist/handles/run.js +21 -0
- package/dist/handles/workflow.d.ts +27 -0
- package/dist/handles/workflow.js +23 -0
- package/dist/identity/caller.d.ts +105 -0
- package/dist/identity/caller.js +68 -0
- package/dist/identity/child.d.ts +18 -0
- package/dist/identity/child.js +39 -0
- package/dist/identity/command.d.ts +19 -0
- package/dist/identity/command.js +21 -0
- package/dist/identity/connection.d.ts +24 -0
- package/dist/identity/connection.js +29 -0
- package/dist/identity/content.d.ts +18 -0
- package/dist/identity/content.js +12 -0
- package/dist/identity/digest.d.ts +4 -0
- package/dist/identity/digest.js +5 -0
- package/dist/identity/execution.d.ts +32 -0
- package/dist/identity/execution.js +63 -0
- package/dist/identity/mint.d.ts +51 -0
- package/dist/identity/mint.js +76 -0
- package/dist/identity/version.d.ts +2 -0
- package/dist/identity/version.js +3 -0
- package/dist/index.d.ts +159 -0
- package/dist/index.js +97 -0
- package/dist/members/blob.d.ts +43 -0
- package/dist/members/blob.js +29 -0
- package/dist/members/command.d.ts +109 -0
- package/dist/members/command.js +61 -0
- package/dist/members/connection.d.ts +55 -0
- package/dist/members/connection.js +49 -0
- package/dist/members/event.d.ts +36 -0
- package/dist/members/event.js +24 -0
- package/dist/members/job.d.ts +157 -0
- package/dist/members/job.js +67 -0
- package/dist/members/payload.d.ts +93 -0
- package/dist/members/payload.js +145 -0
- package/dist/members/reducer.d.ts +64 -0
- package/dist/members/reducer.js +27 -0
- package/dist/members/stream.d.ts +36 -0
- package/dist/members/stream.js +14 -0
- package/dist/members/subscription.d.ts +182 -0
- package/dist/members/subscription.js +91 -0
- package/dist/members/workflow.d.ts +99 -0
- package/dist/members/workflow.js +2 -0
- package/dist/policies/access.d.ts +35 -0
- package/dist/policies/access.js +6 -0
- package/dist/policies/command.d.ts +127 -0
- package/dist/policies/command.js +45 -0
- package/dist/policies/job.d.ts +28 -0
- package/dist/policies/job.js +60 -0
- package/dist/policies/schedules.d.ts +33 -0
- package/dist/policies/schedules.js +131 -0
- package/dist/protocol/frames.d.ts +66 -0
- package/dist/protocol/frames.js +55 -0
- package/dist/protocol/inspection.d.ts +807 -0
- package/dist/protocol/inspection.js +243 -0
- package/dist/protocol/wire.d.ts +184 -0
- package/dist/protocol/wire.js +150 -0
- package/dist/runtime/actors.d.ts +155 -0
- package/dist/runtime/actors.js +4 -0
- package/dist/runtime/admission.d.ts +34 -0
- package/dist/runtime/admission.js +72 -0
- package/dist/runtime/adoption/backfill.d.ts +27 -0
- package/dist/runtime/adoption/backfill.js +144 -0
- package/dist/runtime/adoption/enforce.d.ts +55 -0
- package/dist/runtime/adoption/enforce.js +241 -0
- package/dist/runtime/adoption/observe.d.ts +43 -0
- package/dist/runtime/adoption/observe.js +139 -0
- package/dist/runtime/adoption/plan.d.ts +45 -0
- package/dist/runtime/adoption/plan.js +192 -0
- package/dist/runtime/adoption/startup.d.ts +32 -0
- package/dist/runtime/adoption/startup.js +76 -0
- package/dist/runtime/adoption/status.d.ts +23 -0
- package/dist/runtime/adoption/status.js +47 -0
- package/dist/runtime/adoption/target.d.ts +33 -0
- package/dist/runtime/adoption/target.js +49 -0
- package/dist/runtime/connections/holder.d.ts +221 -0
- package/dist/runtime/connections/holder.js +816 -0
- package/dist/runtime/connections/owner.d.ts +263 -0
- package/dist/runtime/connections/owner.js +896 -0
- package/dist/runtime/connections/protocol.d.ts +441 -0
- package/dist/runtime/connections/protocol.js +222 -0
- package/dist/runtime/connections/reads.d.ts +24 -0
- package/dist/runtime/connections/reads.js +19 -0
- package/dist/runtime/connections/streams.d.ts +62 -0
- package/dist/runtime/connections/streams.js +128 -0
- package/dist/runtime/connections/transport.d.ts +40 -0
- package/dist/runtime/connections/transport.js +68 -0
- package/dist/runtime/connections/watch.d.ts +52 -0
- package/dist/runtime/connections/watch.js +159 -0
- package/dist/runtime/content/grant.d.ts +34 -0
- package/dist/runtime/content/grant.js +58 -0
- package/dist/runtime/content/store.d.ts +63 -0
- package/dist/runtime/content/store.js +294 -0
- package/dist/runtime/cron/key.d.ts +2 -0
- package/dist/runtime/cron/key.js +2 -0
- package/dist/runtime/cron/schedule.d.ts +69 -0
- package/dist/runtime/cron/schedule.js +144 -0
- package/dist/runtime/database/bounded.d.ts +43 -0
- package/dist/runtime/database/bounded.js +108 -0
- package/dist/runtime/database/connection.d.ts +8 -0
- package/dist/runtime/database/connection.js +18 -0
- package/dist/runtime/database/coordination.d.ts +19 -0
- package/dist/runtime/database/coordination.js +72 -0
- package/dist/runtime/database/flock.d.ts +10 -0
- package/dist/runtime/database/flock.js +60 -0
- package/dist/runtime/database/gate.d.ts +26 -0
- package/dist/runtime/database/gate.js +54 -0
- package/dist/runtime/database/keepalive.d.ts +11 -0
- package/dist/runtime/database/keepalive.js +22 -0
- package/dist/runtime/database/migrations.d.ts +177 -0
- package/dist/runtime/database/migrations.js +1018 -0
- package/dist/runtime/database/neki/migrations.d.ts +31 -0
- package/dist/runtime/database/neki/migrations.js +276 -0
- package/dist/runtime/database/neki/session.d.ts +23 -0
- package/dist/runtime/database/neki/session.js +31 -0
- package/dist/runtime/database/pglite.d.ts +21 -0
- package/dist/runtime/database/pglite.js +74 -0
- package/dist/runtime/database/replica.d.ts +41 -0
- package/dist/runtime/database/replica.js +51 -0
- package/dist/runtime/database/shards.d.ts +21 -0
- package/dist/runtime/database/shards.js +37 -0
- package/dist/runtime/database/snapshot.d.ts +7 -0
- package/dist/runtime/database/snapshot.js +7 -0
- package/dist/runtime/database/tenancy.d.ts +69 -0
- package/dist/runtime/database/tenancy.js +145 -0
- package/dist/runtime/database/transient.d.ts +10 -0
- package/dist/runtime/database/transient.js +25 -0
- package/dist/runtime/drain.d.ts +132 -0
- package/dist/runtime/drain.js +109 -0
- package/dist/runtime/entity/mailbox.d.ts +86 -0
- package/dist/runtime/entity/mailbox.js +121 -0
- package/dist/runtime/entity/register.d.ts +424 -0
- package/dist/runtime/entity/register.js +669 -0
- package/dist/runtime/events/append.d.ts +192 -0
- package/dist/runtime/events/append.js +128 -0
- package/dist/runtime/events/cursor.d.ts +2 -0
- package/dist/runtime/events/cursor.js +5 -0
- package/dist/runtime/events/replay.d.ts +20 -0
- package/dist/runtime/events/replay.js +45 -0
- package/dist/runtime/feeds.d.ts +26 -0
- package/dist/runtime/feeds.js +100 -0
- package/dist/runtime/fleet/checks.d.ts +17 -0
- package/dist/runtime/fleet/checks.js +106 -0
- package/dist/runtime/fleet/maintainer.d.ts +38 -0
- package/dist/runtime/fleet/maintainer.js +383 -0
- package/dist/runtime/fleet/pgoutput.d.ts +41 -0
- package/dist/runtime/fleet/pgoutput.js +102 -0
- package/dist/runtime/fleet/setup.d.ts +36 -0
- package/dist/runtime/fleet/setup.js +58 -0
- package/dist/runtime/fleet/subscribe.d.ts +42 -0
- package/dist/runtime/fleet/subscribe.js +147 -0
- package/dist/runtime/index.d.ts +66 -0
- package/dist/runtime/index.js +37 -0
- package/dist/runtime/inspector/http.d.ts +19 -0
- package/dist/runtime/inspector/http.js +36 -0
- package/dist/runtime/inspector/layer.d.ts +46 -0
- package/dist/runtime/inspector/layer.js +180 -0
- package/dist/runtime/inspector/queries.d.ts +711 -0
- package/dist/runtime/inspector/queries.js +494 -0
- package/dist/runtime/jobs/attempt.d.ts +254 -0
- package/dist/runtime/jobs/attempt.js +413 -0
- package/dist/runtime/jobs/isolation.d.ts +20 -0
- package/dist/runtime/jobs/isolation.js +10 -0
- package/dist/runtime/jobs/progress.d.ts +95 -0
- package/dist/runtime/jobs/progress.js +144 -0
- package/dist/runtime/layer.d.ts +260 -0
- package/dist/runtime/layer.js +876 -0
- package/dist/runtime/members.d.ts +381 -0
- package/dist/runtime/members.js +8 -0
- package/dist/runtime/operators/audit.d.ts +64 -0
- package/dist/runtime/operators/audit.js +56 -0
- package/dist/runtime/operators/auth.d.ts +29 -0
- package/dist/runtime/operators/auth.js +42 -0
- package/dist/runtime/operators/export.d.ts +68 -0
- package/dist/runtime/operators/export.js +137 -0
- package/dist/runtime/operators/grants.d.ts +45 -0
- package/dist/runtime/operators/grants.js +40 -0
- package/dist/runtime/operators/repair.d.ts +206 -0
- package/dist/runtime/operators/repair.js +226 -0
- package/dist/runtime/operators/routes.d.ts +35 -0
- package/dist/runtime/operators/routes.js +190 -0
- package/dist/runtime/operators/seed.d.ts +123 -0
- package/dist/runtime/operators/seed.js +123 -0
- package/dist/runtime/payloads/versions.d.ts +65 -0
- package/dist/runtime/payloads/versions.js +240 -0
- package/dist/runtime/peering/authority.d.ts +42 -0
- package/dist/runtime/peering/authority.js +132 -0
- package/dist/runtime/peering/credentials.d.ts +21 -0
- package/dist/runtime/peering/credentials.js +13 -0
- package/dist/runtime/peering/transport.d.ts +51 -0
- package/dist/runtime/peering/transport.js +175 -0
- package/dist/runtime/queries.d.ts +18 -0
- package/dist/runtime/queries.js +169 -0
- package/dist/runtime/readiness.d.ts +36 -0
- package/dist/runtime/readiness.js +44 -0
- package/dist/runtime/registration.d.ts +58 -0
- package/dist/runtime/registration.js +186 -0
- package/dist/runtime/request.d.ts +158 -0
- package/dist/runtime/request.js +102 -0
- package/dist/runtime/retry.d.ts +8 -0
- package/dist/runtime/retry.js +11 -0
- package/dist/runtime/runner.d.ts +93 -0
- package/dist/runtime/runner.js +122 -0
- package/dist/runtime/storage/codec.d.ts +39 -0
- package/dist/runtime/storage/codec.js +41 -0
- package/dist/runtime/storage/generation.d.ts +69 -0
- package/dist/runtime/storage/generation.js +49 -0
- package/dist/runtime/storage/placements.d.ts +15 -0
- package/dist/runtime/storage/placements.js +38 -0
- package/dist/runtime/storage/platform.d.ts +6 -0
- package/dist/runtime/storage/platform.js +9 -0
- package/dist/runtime/storage/retention.d.ts +73 -0
- package/dist/runtime/storage/retention.js +158 -0
- package/dist/runtime/subscriptions/identity.d.ts +31 -0
- package/dist/runtime/subscriptions/identity.js +45 -0
- package/dist/runtime/subscriptions/relay.d.ts +175 -0
- package/dist/runtime/subscriptions/relay.js +763 -0
- package/dist/runtime/subscriptions/storage.d.ts +40 -0
- package/dist/runtime/subscriptions/storage.js +98 -0
- package/dist/runtime/sweeps.d.ts +39 -0
- package/dist/runtime/sweeps.js +54 -0
- package/dist/runtime/telemetry/defects.d.ts +57 -0
- package/dist/runtime/telemetry/defects.js +43 -0
- package/dist/runtime/telemetry/metrics.d.ts +52 -0
- package/dist/runtime/telemetry/metrics.js +138 -0
- package/dist/runtime/telemetry/routes.d.ts +19 -0
- package/dist/runtime/telemetry/routes.js +18 -0
- package/dist/runtime/telemetry/sampler.d.ts +26 -0
- package/dist/runtime/telemetry/sampler.js +101 -0
- package/dist/runtime/telemetry/spans.d.ts +38 -0
- package/dist/runtime/telemetry/spans.js +44 -0
- package/dist/runtime/telemetry/usage.d.ts +52 -0
- package/dist/runtime/telemetry/usage.js +30 -0
- package/dist/runtime/topology/admission.d.ts +13 -0
- package/dist/runtime/topology/admission.js +36 -0
- package/dist/runtime/topology/locks.d.ts +56 -0
- package/dist/runtime/topology/locks.js +81 -0
- package/dist/runtime/topology/messages.d.ts +15 -0
- package/dist/runtime/topology/messages.js +32 -0
- package/dist/runtime/turn/admission.d.ts +22 -0
- package/dist/runtime/turn/admission.js +41 -0
- package/dist/runtime/turn/blobs.d.ts +38 -0
- package/dist/runtime/turn/blobs.js +215 -0
- package/dist/runtime/turn/execute.d.ts +208 -0
- package/dist/runtime/turn/execute.js +972 -0
- package/dist/runtime/turn/group.d.ts +165 -0
- package/dist/runtime/turn/group.js +326 -0
- package/dist/runtime/turn/hooks.d.ts +44 -0
- package/dist/runtime/turn/hooks.js +28 -0
- package/dist/runtime/turn/outbox.d.ts +159 -0
- package/dist/runtime/turn/outbox.js +269 -0
- package/dist/runtime/turn/pipeline.d.ts +68 -0
- package/dist/runtime/turn/pipeline.js +83 -0
- package/dist/runtime/turn/receipt.d.ts +81 -0
- package/dist/runtime/turn/receipt.js +32 -0
- package/dist/runtime/turn/relay.d.ts +179 -0
- package/dist/runtime/turn/relay.js +685 -0
- package/dist/runtime/turn/rows.d.ts +43 -0
- package/dist/runtime/turn/rows.js +592 -0
- package/dist/runtime/workflows/compatibility.d.ts +125 -0
- package/dist/runtime/workflows/compatibility.js +285 -0
- package/dist/runtime/workflows/engine.d.ts +107 -0
- package/dist/runtime/workflows/engine.js +826 -0
- package/dist/runtime/workflows/manifest.d.ts +34 -0
- package/dist/runtime/workflows/manifest.js +39 -0
- package/dist/runtime/workflows/steps.d.ts +33 -0
- package/dist/runtime/workflows/steps.js +152 -0
- package/dist/serve/api.d.ts +99 -0
- package/dist/serve/api.js +403 -0
- package/dist/serve/assertion/binding.d.ts +41 -0
- package/dist/serve/assertion/binding.js +92 -0
- package/dist/serve/assertion/verify.d.ts +93 -0
- package/dist/serve/assertion/verify.js +189 -0
- package/dist/serve/auth.d.ts +200 -0
- package/dist/serve/auth.js +92 -0
- package/dist/serve/clock.d.ts +10 -0
- package/dist/serve/clock.js +25 -0
- package/dist/serve/jwt.d.ts +65 -0
- package/dist/serve/jwt.js +202 -0
- package/dist/serve/layer.d.ts +98 -0
- package/dist/serve/layer.js +809 -0
- package/dist/serve/mcp/endpoint.d.ts +39 -0
- package/dist/serve/mcp/endpoint.js +187 -0
- package/dist/serve/mcp/tools.d.ts +37 -0
- package/dist/serve/mcp/tools.js +125 -0
- package/dist/serve/origin.d.ts +6 -0
- package/dist/serve/origin.js +21 -0
- package/dist/serve/sessions/feed.d.ts +79 -0
- package/dist/serve/sessions/feed.js +115 -0
- package/dist/serve/sessions/socket.d.ts +56 -0
- package/dist/serve/sessions/socket.js +212 -0
- package/dist/serve/sessions/sse.d.ts +27 -0
- package/dist/serve/sessions/sse.js +26 -0
- package/dist/serve/sessions/stream.d.ts +9 -0
- package/dist/serve/sessions/stream.js +9 -0
- package/dist/serve/sessions/watch.d.ts +12 -0
- package/dist/serve/sessions/watch.js +11 -0
- package/dist/serve/wire.d.ts +16 -0
- package/dist/serve/wire.js +50 -0
- package/dist/state/blob.d.ts +71 -0
- package/dist/state/blob.js +0 -0
- package/dist/state/migration.d.ts +53 -0
- package/dist/state/migration.js +29 -0
- package/dist/tables/fleet.d.ts +170 -0
- package/dist/tables/fleet.js +214 -0
- package/dist/tables/owned.d.ts +250 -0
- package/dist/tables/owned.js +233 -0
- package/dist/testing/actor-test.d.ts +360 -0
- package/dist/testing/actor-test.js +337 -0
- package/dist/testing/cluster.d.ts +93 -0
- package/dist/testing/cluster.js +296 -0
- package/dist/testing/conformance/access.d.ts +5 -0
- package/dist/testing/conformance/access.js +531 -0
- package/dist/testing/conformance/admission.d.ts +11 -0
- package/dist/testing/conformance/admission.js +182 -0
- package/dist/testing/conformance/adoption.d.ts +2 -0
- package/dist/testing/conformance/adoption.js +1019 -0
- package/dist/testing/conformance/assertions.d.ts +202 -0
- package/dist/testing/conformance/assertions.js +849 -0
- package/dist/testing/conformance/batches.d.ts +41 -0
- package/dist/testing/conformance/batches.js +388 -0
- package/dist/testing/conformance/blobs.d.ts +14 -0
- package/dist/testing/conformance/blobs.js +405 -0
- package/dist/testing/conformance/capacity.d.ts +8 -0
- package/dist/testing/conformance/capacity.js +433 -0
- package/dist/testing/conformance/client.d.ts +5 -0
- package/dist/testing/conformance/client.js +719 -0
- package/dist/testing/conformance/cold-serve.d.ts +16 -0
- package/dist/testing/conformance/cold-serve.js +254 -0
- package/dist/testing/conformance/connections/actors.d.ts +1143 -0
- package/dist/testing/conformance/connections/actors.js +180 -0
- package/dist/testing/conformance/connections/harness.d.ts +1754 -0
- package/dist/testing/conformance/connections/harness.js +142 -0
- package/dist/testing/conformance/connections/holders.d.ts +4 -0
- package/dist/testing/conformance/connections/holders.js +165 -0
- package/dist/testing/conformance/connections/lifecycle.d.ts +4 -0
- package/dist/testing/conformance/connections/lifecycle.js +113 -0
- package/dist/testing/conformance/connections/limits.d.ts +4 -0
- package/dist/testing/conformance/connections/limits.js +127 -0
- package/dist/testing/conformance/connections/reauthorization.d.ts +4 -0
- package/dist/testing/conformance/connections/reauthorization.js +170 -0
- package/dist/testing/conformance/connections/resync.d.ts +4 -0
- package/dist/testing/conformance/connections/resync.js +360 -0
- package/dist/testing/conformance/connections/takeover.d.ts +4 -0
- package/dist/testing/conformance/connections/takeover.js +287 -0
- package/dist/testing/conformance/connections.d.ts +4 -0
- package/dist/testing/conformance/connections.js +15 -0
- package/dist/testing/conformance/content-blobs.d.ts +16 -0
- package/dist/testing/conformance/content-blobs.js +534 -0
- package/dist/testing/conformance/counter.d.ts +16 -0
- package/dist/testing/conformance/counter.js +813 -0
- package/dist/testing/conformance/cron.d.ts +5 -0
- package/dist/testing/conformance/cron.js +665 -0
- package/dist/testing/conformance/drain.d.ts +26 -0
- package/dist/testing/conformance/drain.js +540 -0
- package/dist/testing/conformance/effect-control.d.ts +38 -0
- package/dist/testing/conformance/effect-control.js +1059 -0
- package/dist/testing/conformance/effects.d.ts +23 -0
- package/dist/testing/conformance/effects.js +432 -0
- package/dist/testing/conformance/events.d.ts +28 -0
- package/dist/testing/conformance/events.js +335 -0
- package/dist/testing/conformance/export.d.ts +2 -0
- package/dist/testing/conformance/export.js +368 -0
- package/dist/testing/conformance/fleet.d.ts +444 -0
- package/dist/testing/conformance/fleet.js +1009 -0
- package/dist/testing/conformance/groups.d.ts +7 -0
- package/dist/testing/conformance/groups.js +353 -0
- package/dist/testing/conformance/heap.d.ts +3 -0
- package/dist/testing/conformance/heap.js +149 -0
- package/dist/testing/conformance/http.d.ts +2809 -0
- package/dist/testing/conformance/http.js +1234 -0
- package/dist/testing/conformance/inspection-views.d.ts +8 -0
- package/dist/testing/conformance/inspection-views.js +272 -0
- package/dist/testing/conformance/inspector.d.ts +7 -0
- package/dist/testing/conformance/inspector.js +650 -0
- package/dist/testing/conformance/mint.d.ts +58 -0
- package/dist/testing/conformance/mint.js +692 -0
- package/dist/testing/conformance/multi-runner.d.ts +8 -0
- package/dist/testing/conformance/multi-runner.js +403 -0
- package/dist/testing/conformance/neki/plan.d.ts +19 -0
- package/dist/testing/conformance/neki/plan.js +30 -0
- package/dist/testing/conformance/observability.d.ts +3 -0
- package/dist/testing/conformance/observability.js +343 -0
- package/dist/testing/conformance/offline.d.ts +4 -0
- package/dist/testing/conformance/offline.js +474 -0
- package/dist/testing/conformance/operator-harness.d.ts +57 -0
- package/dist/testing/conformance/operator-harness.js +78 -0
- package/dist/testing/conformance/operator.d.ts +3 -0
- package/dist/testing/conformance/operator.js +379 -0
- package/dist/testing/conformance/outbox-cross-shard.d.ts +14 -0
- package/dist/testing/conformance/outbox-cross-shard.js +160 -0
- package/dist/testing/conformance/outbox.d.ts +36 -0
- package/dist/testing/conformance/outbox.js +437 -0
- package/dist/testing/conformance/payload-migrations.d.ts +3 -0
- package/dist/testing/conformance/payload-migrations.js +612 -0
- package/dist/testing/conformance/pipeline.d.ts +3 -0
- package/dist/testing/conformance/pipeline.js +1040 -0
- package/dist/testing/conformance/placement.d.ts +22 -0
- package/dist/testing/conformance/placement.js +539 -0
- package/dist/testing/conformance/platform.d.ts +40 -0
- package/dist/testing/conformance/platform.js +101 -0
- package/dist/testing/conformance/progress.d.ts +39 -0
- package/dist/testing/conformance/progress.js +666 -0
- package/dist/testing/conformance/properties.d.ts +6 -0
- package/dist/testing/conformance/properties.js +295 -0
- package/dist/testing/conformance/protocols.d.ts +4 -0
- package/dist/testing/conformance/protocols.js +618 -0
- package/dist/testing/conformance/provider/advertise.d.ts +21 -0
- package/dist/testing/conformance/provider/advertise.js +44 -0
- package/dist/testing/conformance/read-your-writes.d.ts +20 -0
- package/dist/testing/conformance/read-your-writes.js +192 -0
- package/dist/testing/conformance/reducers.d.ts +8 -0
- package/dist/testing/conformance/reducers.js +258 -0
- package/dist/testing/conformance/relay.d.ts +42 -0
- package/dist/testing/conformance/relay.js +1115 -0
- package/dist/testing/conformance/restore.d.ts +43 -0
- package/dist/testing/conformance/restore.js +341 -0
- package/dist/testing/conformance/retention.d.ts +14 -0
- package/dist/testing/conformance/retention.js +463 -0
- package/dist/testing/conformance/rls.d.ts +24 -0
- package/dist/testing/conformance/rls.js +576 -0
- package/dist/testing/conformance/simulation.d.ts +31 -0
- package/dist/testing/conformance/simulation.js +167 -0
- package/dist/testing/conformance/single-shard.d.ts +2 -0
- package/dist/testing/conformance/single-shard.js +125 -0
- package/dist/testing/conformance/singleton.d.ts +3 -0
- package/dist/testing/conformance/singleton.js +293 -0
- package/dist/testing/conformance/statements.d.ts +60 -0
- package/dist/testing/conformance/statements.js +108 -0
- package/dist/testing/conformance/streams.d.ts +7 -0
- package/dist/testing/conformance/streams.js +280 -0
- package/dist/testing/conformance/subscriptions/access.d.ts +4 -0
- package/dist/testing/conformance/subscriptions/access.js +98 -0
- package/dist/testing/conformance/subscriptions/actors.d.ts +4910 -0
- package/dist/testing/conformance/subscriptions/actors.js +372 -0
- package/dist/testing/conformance/subscriptions/cluster.d.ts +4 -0
- package/dist/testing/conformance/subscriptions/cluster.js +89 -0
- package/dist/testing/conformance/subscriptions/delivery.d.ts +4 -0
- package/dist/testing/conformance/subscriptions/delivery.js +253 -0
- package/dist/testing/conformance/subscriptions/deploys.d.ts +4 -0
- package/dist/testing/conformance/subscriptions/deploys.js +162 -0
- package/dist/testing/conformance/subscriptions/epochs.d.ts +4 -0
- package/dist/testing/conformance/subscriptions/epochs.js +169 -0
- package/dist/testing/conformance/subscriptions/failures.d.ts +4 -0
- package/dist/testing/conformance/subscriptions/failures.js +108 -0
- package/dist/testing/conformance/subscriptions/feeds.d.ts +4 -0
- package/dist/testing/conformance/subscriptions/feeds.js +218 -0
- package/dist/testing/conformance/subscriptions/harness.d.ts +124 -0
- package/dist/testing/conformance/subscriptions/harness.js +143 -0
- package/dist/testing/conformance/subscriptions/operator.d.ts +4 -0
- package/dist/testing/conformance/subscriptions/operator.js +128 -0
- package/dist/testing/conformance/subscriptions/retention.d.ts +4 -0
- package/dist/testing/conformance/subscriptions/retention.js +288 -0
- package/dist/testing/conformance/subscriptions/routing.d.ts +4 -0
- package/dist/testing/conformance/subscriptions/routing.js +179 -0
- package/dist/testing/conformance/subscriptions.d.ts +4 -0
- package/dist/testing/conformance/subscriptions.js +19 -0
- package/dist/testing/conformance/tables.d.ts +125 -0
- package/dist/testing/conformance/tables.js +664 -0
- package/dist/testing/conformance/transports/actors.d.ts +1907 -0
- package/dist/testing/conformance/transports/actors.js +163 -0
- package/dist/testing/conformance/transports/client.d.ts +3 -0
- package/dist/testing/conformance/transports/client.js +237 -0
- package/dist/testing/conformance/transports/feeds.d.ts +3 -0
- package/dist/testing/conformance/transports/feeds.js +232 -0
- package/dist/testing/conformance/transports/harness.d.ts +93 -0
- package/dist/testing/conformance/transports/harness.js +84 -0
- package/dist/testing/conformance/transports/streams.d.ts +3 -0
- package/dist/testing/conformance/transports/streams.js +96 -0
- package/dist/testing/conformance/transports/websocket.d.ts +3 -0
- package/dist/testing/conformance/transports/websocket.js +384 -0
- package/dist/testing/conformance/transports/wire.d.ts +141 -0
- package/dist/testing/conformance/transports/wire.js +204 -0
- package/dist/testing/conformance/transports.d.ts +3 -0
- package/dist/testing/conformance/transports.js +11 -0
- package/dist/testing/conformance/watch.d.ts +59 -0
- package/dist/testing/conformance/watch.js +879 -0
- package/dist/testing/conformance/workflow-engine.d.ts +97 -0
- package/dist/testing/conformance/workflow-engine.js +253 -0
- package/dist/testing/conformance/workflow-versions.d.ts +3 -0
- package/dist/testing/conformance/workflow-versions.js +545 -0
- package/dist/testing/conformance/workflows/access.d.ts +4 -0
- package/dist/testing/conformance/workflows/access.js +147 -0
- package/dist/testing/conformance/workflows/actors.d.ts +2317 -0
- package/dist/testing/conformance/workflows/actors.js +305 -0
- package/dist/testing/conformance/workflows/basics.d.ts +4 -0
- package/dist/testing/conformance/workflows/basics.js +144 -0
- package/dist/testing/conformance/workflows/engine.d.ts +4 -0
- package/dist/testing/conformance/workflows/engine.js +80 -0
- package/dist/testing/conformance/workflows/guards.d.ts +4 -0
- package/dist/testing/conformance/workflows/guards.js +172 -0
- package/dist/testing/conformance/workflows/harness.d.ts +14 -0
- package/dist/testing/conformance/workflows/harness.js +44 -0
- package/dist/testing/conformance/workflows/recovery.d.ts +4 -0
- package/dist/testing/conformance/workflows/recovery.js +181 -0
- package/dist/testing/conformance/workflows/starts.d.ts +4 -0
- package/dist/testing/conformance/workflows/starts.js +57 -0
- package/dist/testing/conformance/workflows/suspension.d.ts +4 -0
- package/dist/testing/conformance/workflows/suspension.js +106 -0
- package/dist/testing/conformance/workflows/waits.d.ts +4 -0
- package/dist/testing/conformance/workflows/waits.js +284 -0
- package/dist/testing/conformance/workflows.d.ts +4 -0
- package/dist/testing/conformance/workflows.js +19 -0
- package/dist/testing/conformance.d.ts +330 -0
- package/dist/testing/conformance.js +364 -0
- package/dist/testing/database.d.ts +31 -0
- package/dist/testing/database.js +70 -0
- package/dist/testing/foundation.d.ts +41 -0
- package/dist/testing/foundation.js +517 -0
- package/dist/testing/index.d.ts +20 -0
- package/dist/testing/index.js +12 -0
- package/dist/testing/property.d.ts +40 -0
- package/dist/testing/property.js +95 -0
- package/dist/testing/simulate-cluster.d.ts +112 -0
- package/dist/testing/simulate-cluster.js +257 -0
- package/dist/testing/simulate.d.ts +90 -0
- package/dist/testing/simulate.js +127 -0
- package/package.json +1 -0
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import { Clock, DateTime, Duration, Effect, Option, Result, Schema, Semaphore } from "effect";
|
|
2
|
+
import { Base64Url } from "effect/encoding";
|
|
3
|
+
import { HttpClient } from "effect/http";
|
|
4
|
+
import { ActorUnavailable } from "../errors/actor.js";
|
|
5
|
+
import { User } from "../identity/caller.js";
|
|
6
|
+
import { bearerToken, Credential, unauthorized } from "./auth.js";
|
|
7
|
+
/** A JSON Web Key as `Actor.auth.jwt` reads it; unrecognized members are dropped. */
|
|
8
|
+
export const Jwk = Schema.Struct({
|
|
9
|
+
kty: Schema.String,
|
|
10
|
+
kid: Schema.optionalKey(Schema.String),
|
|
11
|
+
alg: Schema.optionalKey(Schema.String),
|
|
12
|
+
use: Schema.optionalKey(Schema.String),
|
|
13
|
+
crv: Schema.optionalKey(Schema.String),
|
|
14
|
+
n: Schema.optionalKey(Schema.String),
|
|
15
|
+
e: Schema.optionalKey(Schema.String),
|
|
16
|
+
x: Schema.optionalKey(Schema.String),
|
|
17
|
+
y: Schema.optionalKey(Schema.String),
|
|
18
|
+
});
|
|
19
|
+
const JwksJson = Schema.Struct({ keys: Schema.Array(Schema.Unknown) });
|
|
20
|
+
const decodeJwk = Schema.decodeUnknownOption(Jwk);
|
|
21
|
+
const rsa = (name, bits) => ({
|
|
22
|
+
kty: "RSA",
|
|
23
|
+
importKey: { name, hash: `SHA-${bits}` },
|
|
24
|
+
verify: name === "RSA-PSS" ? { name, saltLength: bits / 8 } : { name },
|
|
25
|
+
});
|
|
26
|
+
const ALGORITHMS = {
|
|
27
|
+
RS256: rsa("RSASSA-PKCS1-v1_5", 256),
|
|
28
|
+
RS384: rsa("RSASSA-PKCS1-v1_5", 384),
|
|
29
|
+
RS512: rsa("RSASSA-PKCS1-v1_5", 512),
|
|
30
|
+
PS256: rsa("RSA-PSS", 256),
|
|
31
|
+
PS384: rsa("RSA-PSS", 384),
|
|
32
|
+
PS512: rsa("RSA-PSS", 512),
|
|
33
|
+
ES256: {
|
|
34
|
+
kty: "EC",
|
|
35
|
+
crv: "P-256",
|
|
36
|
+
importKey: { name: "ECDSA", namedCurve: "P-256" },
|
|
37
|
+
verify: { name: "ECDSA", hash: "SHA-256" },
|
|
38
|
+
},
|
|
39
|
+
ES384: {
|
|
40
|
+
kty: "EC",
|
|
41
|
+
crv: "P-384",
|
|
42
|
+
importKey: { name: "ECDSA", namedCurve: "P-384" },
|
|
43
|
+
verify: { name: "ECDSA", hash: "SHA-384" },
|
|
44
|
+
},
|
|
45
|
+
EdDSA: {
|
|
46
|
+
kty: "OKP",
|
|
47
|
+
crv: "Ed25519",
|
|
48
|
+
importKey: { name: "Ed25519" },
|
|
49
|
+
verify: { name: "Ed25519" },
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
const isAlgorithm = Schema.is(Schema.Literals(Object.keys(ALGORITHMS)));
|
|
53
|
+
const Header = Schema.Struct({
|
|
54
|
+
alg: Schema.String,
|
|
55
|
+
kid: Schema.optionalKey(Schema.String),
|
|
56
|
+
crit: Schema.optionalKey(Schema.Unknown),
|
|
57
|
+
});
|
|
58
|
+
const decodeHeader = Schema.decodeUnknownOption(Schema.fromJsonString(Header));
|
|
59
|
+
const decodeClaims = Schema.decodeUnknownOption(Schema.fromJsonString(Schema.Record(Schema.String, Schema.Json)));
|
|
60
|
+
const isNumber = Schema.is(Schema.Finite);
|
|
61
|
+
const isString = Schema.is(Schema.String);
|
|
62
|
+
const REFRESH_MS = 60_000;
|
|
63
|
+
const invalid = unauthorized("invalid_credentials");
|
|
64
|
+
const fits = (jwk, alg) => {
|
|
65
|
+
const params = ALGORITHMS[alg];
|
|
66
|
+
return (jwk.kty === params.kty &&
|
|
67
|
+
(params.crv === undefined || jwk.crv === params.crv) &&
|
|
68
|
+
(jwk.alg === undefined || jwk.alg === alg) &&
|
|
69
|
+
(jwk.use === undefined || jwk.use === "sig"));
|
|
70
|
+
};
|
|
71
|
+
const utf8 = new TextEncoder();
|
|
72
|
+
const verifySignature = Effect.fnUntraced(function* (jwk, alg, signature, signed) {
|
|
73
|
+
const params = ALGORITHMS[alg];
|
|
74
|
+
const key = yield* Effect.tryPromise({
|
|
75
|
+
try: () => crypto.subtle.importKey("jwk", jwk, params.importKey, false, ["verify"]),
|
|
76
|
+
catch: () => invalid,
|
|
77
|
+
});
|
|
78
|
+
return yield* Effect.tryPromise({
|
|
79
|
+
try: () => crypto.subtle.verify(params.verify, key, new Uint8Array(signature), utf8.encode(signed)),
|
|
80
|
+
catch: () => invalid,
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
/**
|
|
84
|
+
* Verifies `authorization: Bearer` JWTs signed with an asymmetric key. `exp`
|
|
85
|
+
* is required; `iss` must equal `issuer` and `aud` must name an `audience`;
|
|
86
|
+
* `nbf` and `exp` are checked within `clockTolerance`. Tokens with `crit`
|
|
87
|
+
* headers or an algorithm outside `algorithms` are refused. A missing
|
|
88
|
+
* `authorization` header fails `missing_credentials`, an expired token
|
|
89
|
+
* `expired`, and every other failure `invalid_credentials`. With a JWKS URL
|
|
90
|
+
* the provider needs an `HttpClient`, and an unreachable key set fails
|
|
91
|
+
* `ActorUnavailable`.
|
|
92
|
+
* The credential's `exp` becomes the session's `expiresAt`.
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```ts
|
|
96
|
+
* Actor.auth.jwt({
|
|
97
|
+
* issuer: "https://issuer.example.com",
|
|
98
|
+
* audience: "my-api",
|
|
99
|
+
* jwks: new URL("https://issuer.example.com/.well-known/jwks.json"),
|
|
100
|
+
* tenant: () => "default",
|
|
101
|
+
* })
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
export const jwt = (options) => {
|
|
105
|
+
const algorithms = new Set(options.algorithms ?? ["RS256", "ES256", "EdDSA"]);
|
|
106
|
+
for (const alg of algorithms)
|
|
107
|
+
if (!isAlgorithm(alg))
|
|
108
|
+
throw new Error(`Actor.auth.jwt: unsupported algorithm ${String(alg)}`);
|
|
109
|
+
const audiences = new Set(isString(options.audience) ? [options.audience] : options.audience);
|
|
110
|
+
const toleranceMs = Duration.toMillis(Duration.fromInputUnsafe(options.clockTolerance ?? "30 seconds"));
|
|
111
|
+
const lock = Semaphore.makeUnsafe(1);
|
|
112
|
+
const source = options.jwks;
|
|
113
|
+
let cached;
|
|
114
|
+
if (!(source instanceof URL))
|
|
115
|
+
cached = { keys: source.keys, at: Number.POSITIVE_INFINITY };
|
|
116
|
+
const fetchKeys = (url) => Effect.gen(function* () {
|
|
117
|
+
const client = HttpClient.filterStatusOk(yield* HttpClient.HttpClient);
|
|
118
|
+
const response = yield* client.get(url);
|
|
119
|
+
const body = yield* Schema.decodeUnknownEffect(JwksJson)(yield* response.json);
|
|
120
|
+
const keys = [];
|
|
121
|
+
for (const raw of body.keys) {
|
|
122
|
+
const jwk = decodeJwk(raw);
|
|
123
|
+
if (Option.isSome(jwk))
|
|
124
|
+
keys.push(jwk.value);
|
|
125
|
+
}
|
|
126
|
+
return keys;
|
|
127
|
+
}).pipe(Effect.mapError(() => ActorUnavailable.make({ cause: new Error("Actor.auth.jwt could not fetch its JWKS") })));
|
|
128
|
+
const keysFor = (refresh) => lock.withPermit(Effect.gen(function* () {
|
|
129
|
+
const now = yield* Clock.currentTimeMillis;
|
|
130
|
+
if (source instanceof URL &&
|
|
131
|
+
(cached === undefined || (refresh && now - cached.at >= REFRESH_MS)))
|
|
132
|
+
cached = { keys: yield* fetchKeys(source), at: now };
|
|
133
|
+
return cached.keys;
|
|
134
|
+
}));
|
|
135
|
+
const authenticate = Effect.fnUntraced(function* (request) {
|
|
136
|
+
const token = yield* bearerToken(request);
|
|
137
|
+
const parts = token.split(".");
|
|
138
|
+
if (parts.length !== 3)
|
|
139
|
+
return yield* invalid;
|
|
140
|
+
const [encodedHeader, encodedClaims, encodedSignature] = parts;
|
|
141
|
+
const headerText = Base64Url.decodeString(encodedHeader);
|
|
142
|
+
const claimsText = Base64Url.decodeString(encodedClaims);
|
|
143
|
+
const signature = Base64Url.decode(encodedSignature);
|
|
144
|
+
if (Result.isFailure(headerText) || Result.isFailure(claimsText) || Result.isFailure(signature))
|
|
145
|
+
return yield* invalid;
|
|
146
|
+
const header = decodeHeader(headerText.success);
|
|
147
|
+
if (Option.isNone(header) || header.value.crit !== undefined)
|
|
148
|
+
return yield* invalid;
|
|
149
|
+
const alg = header.value.alg;
|
|
150
|
+
if (!isAlgorithm(alg) || !algorithms.has(alg))
|
|
151
|
+
return yield* invalid;
|
|
152
|
+
const kid = header.value.kid;
|
|
153
|
+
const signed = `${encodedHeader}.${encodedClaims}`;
|
|
154
|
+
const candidates = (keys) => keys.filter((jwk) => fits(jwk, alg) && (kid === undefined || jwk.kid === kid));
|
|
155
|
+
let keys = candidates(yield* keysFor(false));
|
|
156
|
+
if (keys.length === 0 && kid !== undefined)
|
|
157
|
+
keys = candidates(yield* keysFor(true));
|
|
158
|
+
let verified = false;
|
|
159
|
+
for (const jwk of keys)
|
|
160
|
+
if (yield* verifySignature(jwk, alg, signature.success, signed)) {
|
|
161
|
+
verified = true;
|
|
162
|
+
break;
|
|
163
|
+
}
|
|
164
|
+
if (!verified)
|
|
165
|
+
return yield* invalid;
|
|
166
|
+
const claims = decodeClaims(claimsText.success);
|
|
167
|
+
if (Option.isNone(claims))
|
|
168
|
+
return yield* invalid;
|
|
169
|
+
const { exp, nbf, iss, aud, sub } = claims.value;
|
|
170
|
+
if (!isNumber(exp) || iss !== options.issuer)
|
|
171
|
+
return yield* invalid;
|
|
172
|
+
const audience = isString(aud) ? [aud] : Array.isArray(aud) ? aud : [];
|
|
173
|
+
if (!audience.some((value) => isString(value) && audiences.has(value)))
|
|
174
|
+
return yield* invalid;
|
|
175
|
+
const now = yield* Clock.currentTimeMillis;
|
|
176
|
+
if (nbf !== undefined && (!isNumber(nbf) || nbf * 1000 > now + toleranceMs))
|
|
177
|
+
return yield* invalid;
|
|
178
|
+
if (exp * 1000 <= now - toleranceMs)
|
|
179
|
+
return yield* unauthorized("expired");
|
|
180
|
+
const expiresAt = DateTime.make(exp * 1000);
|
|
181
|
+
if (Option.isNone(expiresAt))
|
|
182
|
+
return yield* invalid;
|
|
183
|
+
const resolved = yield* Effect.try({
|
|
184
|
+
try: () => ({
|
|
185
|
+
subject: options.subject === undefined ? sub : options.subject(claims.value),
|
|
186
|
+
tenant: options.tenant(claims.value),
|
|
187
|
+
}),
|
|
188
|
+
catch: () => invalid,
|
|
189
|
+
});
|
|
190
|
+
if (!isString(resolved.subject) || resolved.subject === "" || !isString(resolved.tenant))
|
|
191
|
+
return yield* invalid;
|
|
192
|
+
return {
|
|
193
|
+
caller: User.make({ subject: resolved.subject }),
|
|
194
|
+
tenant: resolved.tenant,
|
|
195
|
+
expiresAt: expiresAt.value,
|
|
196
|
+
};
|
|
197
|
+
});
|
|
198
|
+
return {
|
|
199
|
+
credentials: [Credential.Jwt()],
|
|
200
|
+
authenticate: authenticate,
|
|
201
|
+
};
|
|
202
|
+
};
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { HttpRouter } from "effect/http";
|
|
2
|
+
import { InternalActors } from "../runtime/actors.ts";
|
|
3
|
+
import { RuntimeControl } from "../runtime/drain.ts";
|
|
4
|
+
import { type AuthProvider } from "./auth.ts";
|
|
5
|
+
import type { AnyFleetView } from "../tables/fleet.ts";
|
|
6
|
+
/** Options of `Actor.serve`; `R` is what `auth` needs from the environment. */
|
|
7
|
+
export interface ServeOptions<R> {
|
|
8
|
+
/** Actor definitions to serve; their layers are provided as usual. */
|
|
9
|
+
readonly actors: ReadonlyArray<{
|
|
10
|
+
readonly name: string;
|
|
11
|
+
}>;
|
|
12
|
+
/** Authenticates every request this layer answers. Required: `Actor.auth.none` is the explicit public opt-out. */
|
|
13
|
+
readonly auth: AuthProvider<R>;
|
|
14
|
+
/** Prefix for every route, such as `"/api"`. */
|
|
15
|
+
readonly basePath?: `/${string}`;
|
|
16
|
+
/** Serves the OpenAPI 3.1 document at `path`; off unless given. */
|
|
17
|
+
readonly openapi?: {
|
|
18
|
+
readonly path: `/${string}`;
|
|
19
|
+
readonly title?: string;
|
|
20
|
+
readonly version?: string;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Serves an MCP endpoint at `path`, derived from the same OpenAPI document:
|
|
24
|
+
* every public command, reducer, and query is a tool, and each call is
|
|
25
|
+
* authenticated and authorized like its HTTP route. Off unless given.
|
|
26
|
+
*/
|
|
27
|
+
readonly mcp?: {
|
|
28
|
+
readonly path: `/${string}`;
|
|
29
|
+
readonly name?: string;
|
|
30
|
+
readonly version?: string;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Fleet views to serve at `GET /fleet/{View}` as server-sent events, for
|
|
34
|
+
* the caller's own tenant; each must be registered with the runtime's
|
|
35
|
+
* `fleet` option.
|
|
36
|
+
*/
|
|
37
|
+
readonly fleet?: ReadonlyArray<AnyFleetView>;
|
|
38
|
+
/** Browser origins allowed besides the server's own. Requests without `Origin` are always served. */
|
|
39
|
+
readonly origins?: ReadonlyArray<string>;
|
|
40
|
+
/** Size limits; each falls back to its default. */
|
|
41
|
+
readonly limits?: {
|
|
42
|
+
/** Largest request body in bytes. Default 1 MiB. */
|
|
43
|
+
readonly requestBytes?: number;
|
|
44
|
+
/** Largest `authorization`, `cookie` or assertion header, and frame credential, in bytes. Default 8 KiB. */
|
|
45
|
+
readonly credentialBytes?: number;
|
|
46
|
+
/**
|
|
47
|
+
* The body limit of `POST /content`, the one route exempt from
|
|
48
|
+
* `requestBytes`. Default and maximum 64 MiB, the content size limit.
|
|
49
|
+
*/
|
|
50
|
+
readonly contentBytes?: number;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
export { isSameOrigin } from "./origin.ts";
|
|
54
|
+
/**
|
|
55
|
+
* Serves `actors`' public commands, reducers, queries, streams, connections,
|
|
56
|
+
* event feeds, and content over HTTP by adding routes to the `HttpRouter`,
|
|
57
|
+
* plus `/protocol`, `/command-ids`, `/ready`, and, when configured, the
|
|
58
|
+
* OpenAPI document. Building the layer dies when an actor is listed twice, a
|
|
59
|
+
* member collides with a protocol route, the runtime's retry window is under
|
|
60
|
+
* 60 seconds, an actor's layers are not provided, `limits.contentBytes` is out
|
|
61
|
+
* of range, or the auth provider declares two credentials of one OpenAPI
|
|
62
|
+
* scheme (the document names one scheme per kind, so the second would vanish).
|
|
63
|
+
*
|
|
64
|
+
* Guarantees and ordering:
|
|
65
|
+
* - Every route checks the origin before authenticating, then the protocol
|
|
66
|
+
* version.
|
|
67
|
+
* - A credential bound to a request admits only that request, checked before
|
|
68
|
+
* any turn; a renewal binds the session's upgrade path and its own session id.
|
|
69
|
+
* - A malformed `durable-min-version` is refused, because ignoring it would
|
|
70
|
+
* silently drop the caller's read-your-writes guarantee.
|
|
71
|
+
* - A command accepted for execution continues if the client disconnects: the
|
|
72
|
+
* runtime owns its execution and only the caller's wait is interrupted.
|
|
73
|
+
* - A request with neither `content-length` nor `transfer-encoding` may carry
|
|
74
|
+
* no body stream at all, and is read as empty.
|
|
75
|
+
* - A connection is a WebSocket upgrade; nothing is authorized or woken before
|
|
76
|
+
* its `hello`. A non-browser client, or a cookie provider, may authenticate
|
|
77
|
+
* the upgrade request itself.
|
|
78
|
+
* - An event feed authorizes every tag the caller reads (there is no
|
|
79
|
+
* wildcard), answers cursor errors before any stream starts, and never
|
|
80
|
+
* creates the actor it follows. A browser's reconnect resumes from
|
|
81
|
+
* `Last-Event-ID`.
|
|
82
|
+
* - A content upload streams into the store hashed as it arrives; past the
|
|
83
|
+
* limit its transaction rolls back and nothing is stored. Under a credential
|
|
84
|
+
* bound to its request it is read whole first, up to the same limit, so the
|
|
85
|
+
* binding is checked before anything is stored. A sweep between
|
|
86
|
+
* resolving a download's name and reading its bytes ends the body before any
|
|
87
|
+
* byte, short of its declared length.
|
|
88
|
+
* - `/ready` carries no credentials and is never cached, because a stale
|
|
89
|
+
* answer would route traffic to a draining runner.
|
|
90
|
+
* - With a provider that has `refreshKeys`, the edge's push after it revokes a
|
|
91
|
+
* signing key rereads the key set at once.
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```ts
|
|
95
|
+
* const Api = Actor.serve({ actors: [Counter], auth: Actor.auth.none, basePath: "/api" })
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
export declare const serve: <R = never>(options: ServeOptions<R>) => import("effect/Layer").Layer<never, never, HttpRouter.HttpRouter | InternalActors | RuntimeControl | Exclude<R, import("effect/Scope").Scope>>;
|