@relkit/runtime-hono 0.5.4 → 0.5.6
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/agent-active-execution.d.ts +5 -11
- package/dist/agent-active-execution.d.ts.map +1 -1
- package/dist/agent-active-execution.js +3 -0
- package/dist/agent-active-execution.js.map +1 -1
- package/dist/agent-active-execution.types.d.ts +14 -0
- package/dist/agent-active-execution.types.d.ts.map +1 -0
- package/dist/agent-active-execution.types.js +2 -0
- package/dist/agent-active-execution.types.js.map +1 -0
- package/dist/agent-approval-coordinator.d.ts +17 -6
- package/dist/agent-approval-coordinator.d.ts.map +1 -1
- package/dist/agent-approval-coordinator.js +56 -53
- package/dist/agent-approval-coordinator.js.map +1 -1
- package/dist/agent-approval-coordinator.types.d.ts +14 -0
- package/dist/agent-approval-coordinator.types.d.ts.map +1 -0
- package/dist/agent-approval-coordinator.types.js +2 -0
- package/dist/agent-approval-coordinator.types.js.map +1 -0
- package/dist/agent-approval-support.d.ts +26 -0
- package/dist/agent-approval-support.d.ts.map +1 -0
- package/dist/agent-approval-support.js +47 -0
- package/dist/agent-approval-support.js.map +1 -0
- package/dist/agent-capability-negotiation.d.ts +4 -0
- package/dist/agent-capability-negotiation.d.ts.map +1 -1
- package/dist/agent-capability-negotiation.js +4 -0
- package/dist/agent-capability-negotiation.js.map +1 -1
- package/dist/agent-command-validation.d.ts +22 -0
- package/dist/agent-command-validation.d.ts.map +1 -0
- package/dist/agent-command-validation.js +35 -0
- package/dist/agent-command-validation.js.map +1 -0
- package/dist/agent-compatibility.d.ts +14 -0
- package/dist/agent-compatibility.d.ts.map +1 -1
- package/dist/agent-compatibility.js +18 -0
- package/dist/agent-compatibility.js.map +1 -1
- package/dist/agent-content-sink.d.ts +68 -7
- package/dist/agent-content-sink.d.ts.map +1 -1
- package/dist/agent-content-sink.js +136 -123
- package/dist/agent-content-sink.js.map +1 -1
- package/dist/agent-content-sink.types.d.ts +10 -0
- package/dist/agent-content-sink.types.d.ts.map +1 -0
- package/dist/agent-content-sink.types.js +2 -0
- package/dist/agent-content-sink.types.js.map +1 -0
- package/dist/agent-control-admission.d.ts +13 -0
- package/dist/agent-control-admission.d.ts.map +1 -0
- package/dist/agent-control-admission.js +70 -0
- package/dist/agent-control-admission.js.map +1 -0
- package/dist/agent-control-application.d.ts +32 -0
- package/dist/agent-control-application.d.ts.map +1 -0
- package/dist/agent-control-application.js +114 -0
- package/dist/agent-control-application.js.map +1 -0
- package/dist/agent-control-worker.d.ts +43 -2
- package/dist/agent-control-worker.d.ts.map +1 -1
- package/dist/agent-control-worker.js +39 -104
- package/dist/agent-control-worker.js.map +1 -1
- package/dist/agent-control-worker.types.d.ts +4 -0
- package/dist/agent-control-worker.types.d.ts.map +1 -0
- package/dist/agent-control-worker.types.js +2 -0
- package/dist/agent-control-worker.types.js.map +1 -0
- package/dist/agent-conversation.d.ts +18 -0
- package/dist/agent-conversation.d.ts.map +1 -0
- package/dist/agent-conversation.js +33 -0
- package/dist/agent-conversation.js.map +1 -0
- package/dist/agent-follow-up.d.ts +43 -7
- package/dist/agent-follow-up.d.ts.map +1 -1
- package/dist/agent-follow-up.js +59 -25
- package/dist/agent-follow-up.js.map +1 -1
- package/dist/agent-follow-up.types.d.ts +10 -0
- package/dist/agent-follow-up.types.d.ts.map +1 -0
- package/dist/agent-follow-up.types.js +2 -0
- package/dist/agent-follow-up.types.js.map +1 -0
- package/dist/agent-inspector-projection.d.ts +23 -0
- package/dist/agent-inspector-projection.d.ts.map +1 -1
- package/dist/agent-inspector-projection.js +39 -0
- package/dist/agent-inspector-projection.js.map +1 -1
- package/dist/agent-inspector.d.ts +6 -0
- package/dist/agent-inspector.d.ts.map +1 -1
- package/dist/agent-inspector.js +28 -0
- package/dist/agent-inspector.js.map +1 -1
- package/dist/agent-journal.d.ts +118 -0
- package/dist/agent-journal.d.ts.map +1 -0
- package/dist/agent-journal.js +138 -0
- package/dist/agent-journal.js.map +1 -0
- package/dist/agent-observation.d.ts +32 -0
- package/dist/agent-observation.d.ts.map +1 -0
- package/dist/agent-observation.js +96 -0
- package/dist/agent-observation.js.map +1 -0
- package/dist/agent-observation.types.d.ts +16 -0
- package/dist/agent-observation.types.d.ts.map +1 -0
- package/dist/agent-observation.types.js +2 -0
- package/dist/agent-observation.types.js.map +1 -0
- package/dist/agent-progress-sink.d.ts +37 -2
- package/dist/agent-progress-sink.d.ts.map +1 -1
- package/dist/agent-progress-sink.js +81 -46
- package/dist/agent-progress-sink.js.map +1 -1
- package/dist/agent-progress-sink.types.d.ts +4 -0
- package/dist/agent-progress-sink.types.d.ts.map +1 -0
- package/dist/agent-progress-sink.types.js +2 -0
- package/dist/agent-progress-sink.types.js.map +1 -0
- package/dist/agent-protocol-encoding.d.ts +4 -0
- package/dist/agent-protocol-encoding.d.ts.map +1 -1
- package/dist/agent-protocol-encoding.js +24 -0
- package/dist/agent-protocol-encoding.js.map +1 -1
- package/dist/agent-protocol-encoding.types.d.ts +6 -0
- package/dist/agent-protocol-encoding.types.d.ts.map +1 -0
- package/dist/agent-protocol-encoding.types.js +2 -0
- package/dist/agent-protocol-encoding.types.js.map +1 -0
- package/dist/agent-protocol-frame-state.d.ts +34 -0
- package/dist/agent-protocol-frame-state.d.ts.map +1 -1
- package/dist/agent-protocol-frame-state.js +51 -0
- package/dist/agent-protocol-frame-state.js.map +1 -1
- package/dist/agent-protocol-progress.d.ts +7 -5
- package/dist/agent-protocol-progress.d.ts.map +1 -1
- package/dist/agent-protocol-progress.js +6 -0
- package/dist/agent-protocol-progress.js.map +1 -1
- package/dist/agent-protocol-progress.types.d.ts +6 -0
- package/dist/agent-protocol-progress.types.d.ts.map +1 -0
- package/dist/agent-protocol-progress.types.js +2 -0
- package/dist/agent-protocol-progress.types.js.map +1 -0
- package/dist/agent-protocol-stream.d.ts +13 -50
- package/dist/agent-protocol-stream.d.ts.map +1 -1
- package/dist/agent-protocol-stream.js +22 -0
- package/dist/agent-protocol-stream.js.map +1 -1
- package/dist/agent-protocol-stream.types.d.ts +53 -0
- package/dist/agent-protocol-stream.types.d.ts.map +1 -0
- package/dist/agent-protocol-stream.types.js +2 -0
- package/dist/agent-protocol-stream.types.js.map +1 -0
- package/dist/agent-protocol-support.d.ts +52 -4
- package/dist/agent-protocol-support.d.ts.map +1 -1
- package/dist/agent-protocol-support.js +58 -0
- package/dist/agent-protocol-support.js.map +1 -1
- package/dist/agent-protocol-support.types.d.ts +6 -0
- package/dist/agent-protocol-support.types.d.ts.map +1 -0
- package/dist/agent-protocol-support.types.js +2 -0
- package/dist/agent-protocol-support.types.js.map +1 -0
- package/dist/agent-protocol-tool.d.ts +17 -9
- package/dist/agent-protocol-tool.d.ts.map +1 -1
- package/dist/agent-protocol-tool.js +15 -0
- package/dist/agent-protocol-tool.js.map +1 -1
- package/dist/agent-protocol-tool.types.d.ts +11 -0
- package/dist/agent-protocol-tool.types.d.ts.map +1 -0
- package/dist/agent-protocol-tool.types.js +2 -0
- package/dist/agent-protocol-tool.types.js.map +1 -0
- package/dist/agent-protocol.d.ts +5 -0
- package/dist/agent-protocol.d.ts.map +1 -1
- package/dist/agent-protocol.js +30 -0
- package/dist/agent-protocol.js.map +1 -1
- package/dist/agent-reads.d.ts +64 -0
- package/dist/agent-reads.d.ts.map +1 -0
- package/dist/agent-reads.js +119 -0
- package/dist/agent-reads.js.map +1 -0
- package/dist/agent-request-validation.d.ts +50 -0
- package/dist/agent-request-validation.d.ts.map +1 -0
- package/dist/agent-request-validation.js +87 -0
- package/dist/agent-request-validation.js.map +1 -0
- package/dist/agent-rpc-errors.d.ts +14 -0
- package/dist/agent-rpc-errors.d.ts.map +1 -1
- package/dist/agent-rpc-errors.js +22 -0
- package/dist/agent-rpc-errors.js.map +1 -1
- package/dist/agent-rpc-read.d.ts +26 -16
- package/dist/agent-rpc-read.d.ts.map +1 -1
- package/dist/agent-rpc-read.js +50 -122
- package/dist/agent-rpc-read.js.map +1 -1
- package/dist/agent-rpc-resume.d.ts +49 -2
- package/dist/agent-rpc-resume.d.ts.map +1 -1
- package/dist/agent-rpc-resume.js +57 -23
- package/dist/agent-rpc-resume.js.map +1 -1
- package/dist/agent-rpc-resume.types.d.ts +4 -0
- package/dist/agent-rpc-resume.types.d.ts.map +1 -0
- package/dist/agent-rpc-resume.types.js +2 -0
- package/dist/agent-rpc-resume.types.js.map +1 -0
- package/dist/agent-rpc-support.d.ts +60 -23
- package/dist/agent-rpc-support.d.ts.map +1 -1
- package/dist/agent-rpc-support.js +75 -65
- package/dist/agent-rpc-support.js.map +1 -1
- package/dist/agent-rpc-support.schemas.d.ts +4 -0
- package/dist/agent-rpc-support.schemas.d.ts.map +1 -0
- package/dist/agent-rpc-support.schemas.js +4 -0
- package/dist/agent-rpc-support.schemas.js.map +1 -0
- package/dist/agent-rpc-support.types.d.ts +18 -0
- package/dist/agent-rpc-support.types.d.ts.map +1 -0
- package/dist/agent-rpc-support.types.js +2 -0
- package/dist/agent-rpc-support.types.js.map +1 -0
- package/dist/agent-rpc-worker.d.ts +43 -2
- package/dist/agent-rpc-worker.d.ts.map +1 -1
- package/dist/agent-rpc-worker.js +120 -117
- package/dist/agent-rpc-worker.js.map +1 -1
- package/dist/agent-rpc-worker.types.d.ts +4 -0
- package/dist/agent-rpc-worker.types.d.ts.map +1 -0
- package/dist/agent-rpc-worker.types.js +2 -0
- package/dist/agent-rpc-worker.types.js.map +1 -0
- package/dist/agent-rpc-write.d.ts +25 -0
- package/dist/agent-rpc-write.d.ts.map +1 -1
- package/dist/agent-rpc-write.js +34 -105
- package/dist/agent-rpc-write.js.map +1 -1
- package/dist/agent-rpc.d.ts +4 -0
- package/dist/agent-rpc.d.ts.map +1 -1
- package/dist/agent-rpc.js +10 -0
- package/dist/agent-rpc.js.map +1 -1
- package/dist/agent-run-admission.d.ts +13 -0
- package/dist/agent-run-admission.d.ts.map +1 -0
- package/dist/agent-run-admission.js +60 -0
- package/dist/agent-run-admission.js.map +1 -0
- package/dist/agent-run-journal.d.ts +41 -3
- package/dist/agent-run-journal.d.ts.map +1 -1
- package/dist/agent-run-journal.js +63 -81
- package/dist/agent-run-journal.js.map +1 -1
- package/dist/agent-run-journal.types.d.ts +4 -0
- package/dist/agent-run-journal.types.d.ts.map +1 -0
- package/dist/agent-run-journal.types.js +2 -0
- package/dist/agent-run-journal.types.js.map +1 -0
- package/dist/agent-run-supervision.d.ts +20 -0
- package/dist/agent-run-supervision.d.ts.map +1 -0
- package/dist/agent-run-supervision.js +42 -0
- package/dist/agent-run-supervision.js.map +1 -0
- package/dist/agent-run-supervision.types.d.ts +7 -0
- package/dist/agent-run-supervision.types.d.ts.map +1 -0
- package/dist/agent-run-supervision.types.js +2 -0
- package/dist/agent-run-supervision.types.js.map +1 -0
- package/dist/agent-run-tasks.d.ts +35 -1
- package/dist/agent-run-tasks.d.ts.map +1 -1
- package/dist/agent-run-tasks.js +72 -4
- package/dist/agent-run-tasks.js.map +1 -1
- package/dist/agent-run-tasks.types.d.ts +5 -0
- package/dist/agent-run-tasks.types.d.ts.map +1 -0
- package/dist/agent-run-tasks.types.js +2 -0
- package/dist/agent-run-tasks.types.js.map +1 -0
- package/dist/agent-runtime.d.ts +1 -16
- package/dist/agent-runtime.d.ts.map +1 -1
- package/dist/agent-runtime.types.d.ts +18 -0
- package/dist/agent-runtime.types.d.ts.map +1 -0
- package/dist/agent-runtime.types.js +2 -0
- package/dist/agent-runtime.types.js.map +1 -0
- package/dist/agent-tool-content.d.ts +17 -0
- package/dist/agent-tool-content.d.ts.map +1 -0
- package/dist/agent-tool-content.js +61 -0
- package/dist/agent-tool-content.js.map +1 -0
- package/dist/api-docs.d.ts +8 -13
- package/dist/api-docs.d.ts.map +1 -1
- package/dist/api-docs.js +38 -2
- package/dist/api-docs.js.map +1 -1
- package/dist/api-docs.types.d.ts +14 -0
- package/dist/api-docs.types.d.ts.map +1 -0
- package/dist/api-docs.types.js +2 -0
- package/dist/api-docs.types.js.map +1 -0
- package/dist/auth.d.ts +26 -15
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +46 -4
- package/dist/auth.js.map +1 -1
- package/dist/auth.types.d.ts +20 -0
- package/dist/auth.types.d.ts.map +1 -0
- package/dist/auth.types.js +2 -0
- package/dist/auth.types.js.map +1 -0
- package/dist/client-authorization.d.ts +22 -0
- package/dist/client-authorization.d.ts.map +1 -1
- package/dist/client-authorization.js +26 -12
- package/dist/client-authorization.js.map +1 -1
- package/dist/client-contract.d.ts +8 -4
- package/dist/client-contract.d.ts.map +1 -1
- package/dist/client-contract.js +6 -0
- package/dist/client-contract.js.map +1 -1
- package/dist/client-contract.types.d.ts +8 -0
- package/dist/client-contract.types.d.ts.map +1 -0
- package/dist/client-contract.types.js +2 -0
- package/dist/client-contract.types.js.map +1 -0
- package/dist/client-identity.d.ts +39 -15
- package/dist/client-identity.d.ts.map +1 -1
- package/dist/client-identity.js +50 -4
- package/dist/client-identity.js.map +1 -1
- package/dist/client-identity.types.d.ts +19 -0
- package/dist/client-identity.types.d.ts.map +1 -0
- package/dist/client-identity.types.js +2 -0
- package/dist/client-identity.types.js.map +1 -0
- package/dist/control-plane.d.ts +4 -0
- package/dist/control-plane.d.ts.map +1 -1
- package/dist/control-plane.js +4 -0
- package/dist/control-plane.js.map +1 -1
- package/dist/create-app.d.ts +11 -20
- package/dist/create-app.d.ts.map +1 -1
- package/dist/create-app.js +25 -8
- package/dist/create-app.js.map +1 -1
- package/dist/create-app.types.d.ts +21 -0
- package/dist/create-app.types.d.ts.map +1 -0
- package/dist/create-app.types.js +2 -0
- package/dist/create-app.types.js.map +1 -0
- package/dist/http-effect.d.ts +43 -0
- package/dist/http-effect.d.ts.map +1 -0
- package/dist/http-effect.js +67 -0
- package/dist/http-effect.js.map +1 -0
- package/dist/http-invocation.d.ts +22 -0
- package/dist/http-invocation.d.ts.map +1 -0
- package/dist/http-invocation.js +44 -0
- package/dist/http-invocation.js.map +1 -0
- package/dist/http-logging.d.ts +23 -0
- package/dist/http-logging.d.ts.map +1 -0
- package/dist/http-logging.js +69 -0
- package/dist/http-logging.js.map +1 -0
- package/dist/http-logging.types.d.ts +8 -0
- package/dist/http-logging.types.d.ts.map +1 -0
- package/dist/http-logging.types.js +2 -0
- package/dist/http-logging.types.js.map +1 -0
- package/dist/http-response.d.ts +22 -0
- package/dist/http-response.d.ts.map +1 -1
- package/dist/http-response.js +55 -8
- package/dist/http-response.js.map +1 -1
- package/dist/http-span-record.d.ts +5 -0
- package/dist/http-span-record.d.ts.map +1 -1
- package/dist/http-span-record.js +5 -0
- package/dist/http-span-record.js.map +1 -1
- package/dist/http-span.d.ts +18 -0
- package/dist/http-span.d.ts.map +1 -1
- package/dist/http-span.js +37 -3
- package/dist/http-span.js.map +1 -1
- package/dist/http-stream-observation.d.ts +13 -0
- package/dist/http-stream-observation.d.ts.map +1 -0
- package/dist/http-stream-observation.js +15 -0
- package/dist/http-stream-observation.js.map +1 -0
- package/dist/http-validation.d.ts +12 -0
- package/dist/http-validation.d.ts.map +1 -0
- package/dist/http-validation.js +17 -0
- package/dist/http-validation.js.map +1 -0
- package/dist/internal-endpoint-paths.d.ts +3 -0
- package/dist/internal-endpoint-paths.d.ts.map +1 -1
- package/dist/internal-endpoint-paths.js +3 -0
- package/dist/internal-endpoint-paths.js.map +1 -1
- package/dist/internal-endpoint-query.d.ts +18 -0
- package/dist/internal-endpoint-query.d.ts.map +1 -0
- package/dist/internal-endpoint-query.js +88 -0
- package/dist/internal-endpoint-query.js.map +1 -0
- package/dist/internal-endpoints-utils.d.ts +39 -4
- package/dist/internal-endpoints-utils.d.ts.map +1 -1
- package/dist/internal-endpoints-utils.js +48 -52
- package/dist/internal-endpoints-utils.js.map +1 -1
- package/dist/internal-endpoints.d.ts +11 -46
- package/dist/internal-endpoints.d.ts.map +1 -1
- package/dist/internal-endpoints.js +25 -2
- package/dist/internal-endpoints.js.map +1 -1
- package/dist/internal-endpoints.types.d.ts +57 -0
- package/dist/internal-endpoints.types.d.ts.map +1 -0
- package/dist/internal-endpoints.types.js +2 -0
- package/dist/internal-endpoints.types.js.map +1 -0
- package/dist/jobs/authorization.d.ts +22 -8
- package/dist/jobs/authorization.d.ts.map +1 -1
- package/dist/jobs/authorization.js +29 -16
- package/dist/jobs/authorization.js.map +1 -1
- package/dist/jobs/authorization.types.d.ts +9 -0
- package/dist/jobs/authorization.types.d.ts.map +1 -0
- package/dist/jobs/authorization.types.js +2 -0
- package/dist/jobs/authorization.types.js.map +1 -0
- package/dist/jobs/common.d.ts +54 -3
- package/dist/jobs/common.d.ts.map +1 -1
- package/dist/jobs/common.js +63 -23
- package/dist/jobs/common.js.map +1 -1
- package/dist/jobs/common.schemas.d.ts +6 -0
- package/dist/jobs/common.schemas.d.ts.map +1 -0
- package/dist/jobs/common.schemas.js +41 -0
- package/dist/jobs/common.schemas.js.map +1 -0
- package/dist/jobs/cursors.d.ts +38 -0
- package/dist/jobs/cursors.d.ts.map +1 -1
- package/dist/jobs/cursors.js +50 -0
- package/dist/jobs/cursors.js.map +1 -1
- package/dist/jobs/handlers-mutations-cancel.d.ts +15 -0
- package/dist/jobs/handlers-mutations-cancel.d.ts.map +1 -0
- package/dist/jobs/handlers-mutations-cancel.js +49 -0
- package/dist/jobs/handlers-mutations-cancel.js.map +1 -0
- package/dist/jobs/handlers-mutations-retry.d.ts +14 -0
- package/dist/jobs/handlers-mutations-retry.d.ts.map +1 -0
- package/dist/jobs/handlers-mutations-retry.js +37 -0
- package/dist/jobs/handlers-mutations-retry.js.map +1 -0
- package/dist/jobs/handlers-mutations-trigger.d.ts +14 -0
- package/dist/jobs/handlers-mutations-trigger.d.ts.map +1 -0
- package/dist/jobs/handlers-mutations-trigger.js +33 -0
- package/dist/jobs/handlers-mutations-trigger.js.map +1 -0
- package/dist/jobs/handlers-mutations.d.ts +33 -0
- package/dist/jobs/handlers-mutations.d.ts.map +1 -1
- package/dist/jobs/handlers-mutations.js +53 -69
- package/dist/jobs/handlers-mutations.js.map +1 -1
- package/dist/jobs/handlers-mutations.types.d.ts +10 -0
- package/dist/jobs/handlers-mutations.types.d.ts.map +1 -0
- package/dist/jobs/handlers-mutations.types.js +2 -0
- package/dist/jobs/handlers-mutations.types.js.map +1 -0
- package/dist/jobs/handlers-read-get.d.ts +14 -0
- package/dist/jobs/handlers-read-get.d.ts.map +1 -0
- package/dist/jobs/handlers-read-get.js +33 -0
- package/dist/jobs/handlers-read-get.js.map +1 -0
- package/dist/jobs/handlers-read-list.d.ts +14 -0
- package/dist/jobs/handlers-read-list.d.ts.map +1 -0
- package/dist/jobs/handlers-read-list.js +42 -0
- package/dist/jobs/handlers-read-list.js.map +1 -0
- package/dist/jobs/handlers-read-watch.d.ts +15 -0
- package/dist/jobs/handlers-read-watch.d.ts.map +1 -0
- package/dist/jobs/handlers-read-watch.js +39 -0
- package/dist/jobs/handlers-read-watch.js.map +1 -0
- package/dist/jobs/handlers-read.d.ts +33 -0
- package/dist/jobs/handlers-read.d.ts.map +1 -1
- package/dist/jobs/handlers-read.js +53 -66
- package/dist/jobs/handlers-read.js.map +1 -1
- package/dist/jobs/handlers-read.types.d.ts +10 -0
- package/dist/jobs/handlers-read.types.d.ts.map +1 -0
- package/dist/jobs/handlers-read.types.js +2 -0
- package/dist/jobs/handlers-read.types.js.map +1 -0
- package/dist/jobs/handlers-stream.d.ts +28 -0
- package/dist/jobs/handlers-stream.d.ts.map +1 -1
- package/dist/jobs/handlers-stream.js +77 -31
- package/dist/jobs/handlers-stream.js.map +1 -1
- package/dist/jobs/handlers-validation.d.ts +16 -0
- package/dist/jobs/handlers-validation.d.ts.map +1 -1
- package/dist/jobs/handlers-validation.js +21 -0
- package/dist/jobs/handlers-validation.js.map +1 -1
- package/dist/jobs/projection-stream.d.ts +11 -0
- package/dist/jobs/projection-stream.d.ts.map +1 -1
- package/dist/jobs/projection-stream.js +37 -0
- package/dist/jobs/projection-stream.js.map +1 -1
- package/dist/jobs/projection-validation.d.ts +12 -0
- package/dist/jobs/projection-validation.d.ts.map +1 -1
- package/dist/jobs/projection-validation.js +51 -1
- package/dist/jobs/projection-validation.js.map +1 -1
- package/dist/jobs/projection.d.ts +29 -0
- package/dist/jobs/projection.d.ts.map +1 -1
- package/dist/jobs/projection.js +34 -1
- package/dist/jobs/projection.js.map +1 -1
- package/dist/jobs/rpc.d.ts +4 -0
- package/dist/jobs/rpc.d.ts.map +1 -1
- package/dist/jobs/rpc.js +51 -1
- package/dist/jobs/rpc.js.map +1 -1
- package/dist/jobs/runtime.types.d.ts +49 -0
- package/dist/jobs/runtime.types.d.ts.map +1 -0
- package/dist/jobs/runtime.types.js +2 -0
- package/dist/jobs/runtime.types.js.map +1 -0
- package/dist/jobs/support-lookups.d.ts +20 -0
- package/dist/jobs/support-lookups.d.ts.map +1 -0
- package/dist/jobs/support-lookups.js +34 -0
- package/dist/jobs/support-lookups.js.map +1 -0
- package/dist/jobs/support.d.ts +56 -1
- package/dist/jobs/support.d.ts.map +1 -1
- package/dist/jobs/support.js +61 -20
- package/dist/jobs/support.js.map +1 -1
- package/dist/jobs/types.d.ts +17 -42
- package/dist/jobs/types.d.ts.map +1 -1
- package/dist/jobs/types.js +20 -0
- package/dist/jobs/types.js.map +1 -1
- package/dist/manifest-validation.d.ts +12 -1
- package/dist/manifest-validation.d.ts.map +1 -1
- package/dist/manifest-validation.js +17 -0
- package/dist/manifest-validation.js.map +1 -1
- package/dist/manifest-validation.types.d.ts +3 -0
- package/dist/manifest-validation.types.d.ts.map +1 -0
- package/dist/manifest-validation.types.js +2 -0
- package/dist/manifest-validation.types.js.map +1 -0
- package/dist/materialize-routes-utils.d.ts +41 -1
- package/dist/materialize-routes-utils.d.ts.map +1 -1
- package/dist/materialize-routes-utils.js +80 -22
- package/dist/materialize-routes-utils.js.map +1 -1
- package/dist/materialize-routes-validation.d.ts +4 -0
- package/dist/materialize-routes-validation.d.ts.map +1 -1
- package/dist/materialize-routes-validation.js +5 -1
- package/dist/materialize-routes-validation.js.map +1 -1
- package/dist/materialize-routes.d.ts +9 -100
- package/dist/materialize-routes.d.ts.map +1 -1
- package/dist/materialize-routes.js +24 -9
- package/dist/materialize-routes.js.map +1 -1
- package/dist/materialize-routes.types.d.ts +110 -0
- package/dist/materialize-routes.types.d.ts.map +1 -0
- package/dist/materialize-routes.types.js +2 -0
- package/dist/materialize-routes.types.js.map +1 -0
- package/dist/mcp.d.ts +39 -4
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +56 -10
- package/dist/mcp.js.map +1 -1
- package/dist/mcp.types.d.ts +15 -0
- package/dist/mcp.types.d.ts.map +1 -0
- package/dist/mcp.types.js +2 -0
- package/dist/mcp.types.js.map +1 -0
- package/dist/middleware-limits.d.ts +4 -0
- package/dist/middleware-limits.d.ts.map +1 -1
- package/dist/middleware-limits.js +16 -7
- package/dist/middleware-limits.js.map +1 -1
- package/dist/middleware-utils.d.ts +62 -53
- package/dist/middleware-utils.d.ts.map +1 -1
- package/dist/middleware-utils.js +72 -1
- package/dist/middleware-utils.js.map +1 -1
- package/dist/middleware-utils.types.d.ts +59 -0
- package/dist/middleware-utils.types.d.ts.map +1 -0
- package/dist/middleware-utils.types.js +2 -0
- package/dist/middleware-utils.types.js.map +1 -0
- package/dist/middleware.d.ts +19 -7
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +28 -6
- package/dist/middleware.js.map +1 -1
- package/dist/middleware.types.d.ts +10 -0
- package/dist/middleware.types.d.ts.map +1 -0
- package/dist/middleware.types.js +2 -0
- package/dist/middleware.types.js.map +1 -0
- package/dist/native-stream.d.ts +18 -1
- package/dist/native-stream.d.ts.map +1 -1
- package/dist/native-stream.js +55 -4
- package/dist/native-stream.js.map +1 -1
- package/dist/native-stream.schemas.d.ts +6 -0
- package/dist/native-stream.schemas.d.ts.map +1 -0
- package/dist/native-stream.schemas.js +6 -0
- package/dist/native-stream.schemas.js.map +1 -0
- package/dist/native-stream.types.d.ts +4 -0
- package/dist/native-stream.types.d.ts.map +1 -0
- package/dist/native-stream.types.js +2 -0
- package/dist/native-stream.types.js.map +1 -0
- package/dist/rate-limit-store.d.ts +37 -11
- package/dist/rate-limit-store.d.ts.map +1 -1
- package/dist/rate-limit-store.js +108 -43
- package/dist/rate-limit-store.js.map +1 -1
- package/dist/rate-limit-store.types.d.ts +18 -0
- package/dist/rate-limit-store.types.d.ts.map +1 -0
- package/dist/rate-limit-store.types.js +2 -0
- package/dist/rate-limit-store.types.js.map +1 -0
- package/dist/rate-limit-telemetry.d.ts +9 -0
- package/dist/rate-limit-telemetry.d.ts.map +1 -1
- package/dist/rate-limit-telemetry.js +9 -0
- package/dist/rate-limit-telemetry.js.map +1 -1
- package/dist/rate-limit.d.ts +8 -7
- package/dist/rate-limit.d.ts.map +1 -1
- package/dist/rate-limit.js +42 -0
- package/dist/rate-limit.js.map +1 -1
- package/dist/rate-limit.types.d.ts +9 -0
- package/dist/rate-limit.types.d.ts.map +1 -0
- package/dist/rate-limit.types.js +2 -0
- package/dist/rate-limit.types.js.map +1 -0
- package/dist/realtime-observation.d.ts +40 -0
- package/dist/realtime-observation.d.ts.map +1 -0
- package/dist/realtime-observation.js +147 -0
- package/dist/realtime-observation.js.map +1 -0
- package/dist/realtime-observation.types.d.ts +20 -0
- package/dist/realtime-observation.types.d.ts.map +1 -0
- package/dist/realtime-observation.types.js +2 -0
- package/dist/realtime-observation.types.js.map +1 -0
- package/dist/realtime-presence.d.ts +13 -0
- package/dist/realtime-presence.d.ts.map +1 -0
- package/dist/realtime-presence.js +24 -0
- package/dist/realtime-presence.js.map +1 -0
- package/dist/realtime-rpc-support.d.ts +15 -8
- package/dist/realtime-rpc-support.d.ts.map +1 -1
- package/dist/realtime-rpc-support.js +25 -5
- package/dist/realtime-rpc-support.js.map +1 -1
- package/dist/realtime-rpc-support.types.d.ts +9 -0
- package/dist/realtime-rpc-support.types.d.ts.map +1 -0
- package/dist/realtime-rpc-support.types.js +2 -0
- package/dist/realtime-rpc-support.types.js.map +1 -0
- package/dist/realtime-rpc.d.ts +4 -0
- package/dist/realtime-rpc.d.ts.map +1 -1
- package/dist/realtime-rpc.js +9 -124
- package/dist/realtime-rpc.js.map +1 -1
- package/dist/realtime-runtime.d.ts +1 -12
- package/dist/realtime-runtime.d.ts.map +1 -1
- package/dist/realtime-runtime.types.d.ts +14 -0
- package/dist/realtime-runtime.types.d.ts.map +1 -0
- package/dist/realtime-runtime.types.js +2 -0
- package/dist/realtime-runtime.types.js.map +1 -0
- package/dist/request-body-service.d.ts +23 -0
- package/dist/request-body-service.d.ts.map +1 -0
- package/dist/request-body-service.js +80 -0
- package/dist/request-body-service.js.map +1 -0
- package/dist/request-body-service.types.d.ts +7 -0
- package/dist/request-body-service.types.d.ts.map +1 -0
- package/dist/request-body-service.types.js +2 -0
- package/dist/request-body-service.types.js.map +1 -0
- package/dist/request-context.d.ts +5 -0
- package/dist/request-context.d.ts.map +1 -1
- package/dist/request-context.js +34 -0
- package/dist/request-context.js.map +1 -1
- package/dist/request-inference.d.ts +11 -0
- package/dist/request-inference.d.ts.map +1 -1
- package/dist/request-inference.js +33 -0
- package/dist/request-inference.js.map +1 -1
- package/dist/request-mapping-body.d.ts +10 -23
- package/dist/request-mapping-body.d.ts.map +1 -1
- package/dist/request-mapping-body.js +36 -30
- package/dist/request-mapping-body.js.map +1 -1
- package/dist/request-mapping-body.schemas.d.ts +9 -0
- package/dist/request-mapping-body.schemas.d.ts.map +1 -0
- package/dist/request-mapping-body.schemas.js +11 -0
- package/dist/request-mapping-body.schemas.js.map +1 -0
- package/dist/request-mapping-body.types.d.ts +31 -0
- package/dist/request-mapping-body.types.d.ts.map +1 -0
- package/dist/request-mapping-body.types.js +2 -0
- package/dist/request-mapping-body.types.js.map +1 -0
- package/dist/request-mapping-fields.d.ts +35 -0
- package/dist/request-mapping-fields.d.ts.map +1 -1
- package/dist/request-mapping-fields.js +48 -0
- package/dist/request-mapping-fields.js.map +1 -1
- package/dist/request-mapping-object.d.ts +22 -12
- package/dist/request-mapping-object.d.ts.map +1 -1
- package/dist/request-mapping-object.js +34 -4
- package/dist/request-mapping-object.js.map +1 -1
- package/dist/request-mapping-object.types.d.ts +19 -0
- package/dist/request-mapping-object.types.d.ts.map +1 -0
- package/dist/request-mapping-object.types.js +2 -0
- package/dist/request-mapping-object.types.js.map +1 -0
- package/dist/request-mapping-sources.d.ts +28 -1
- package/dist/request-mapping-sources.d.ts.map +1 -1
- package/dist/request-mapping-sources.js +27 -0
- package/dist/request-mapping-sources.js.map +1 -1
- package/dist/request-mapping-transform.d.ts +8 -0
- package/dist/request-mapping-transform.d.ts.map +1 -1
- package/dist/request-mapping-transform.js +20 -0
- package/dist/request-mapping-transform.js.map +1 -1
- package/dist/request-mapping.d.ts +31 -29
- package/dist/request-mapping.d.ts.map +1 -1
- package/dist/request-mapping.js +55 -15
- package/dist/request-mapping.js.map +1 -1
- package/dist/request-mapping.types.d.ts +38 -0
- package/dist/request-mapping.types.d.ts.map +1 -0
- package/dist/request-mapping.types.js +2 -0
- package/dist/request-mapping.types.js.map +1 -0
- package/dist/request-record-middleware.d.ts +14 -1
- package/dist/request-record-middleware.d.ts.map +1 -1
- package/dist/request-record-middleware.js +22 -0
- package/dist/request-record-middleware.js.map +1 -1
- package/dist/request-record-utils.d.ts +25 -2
- package/dist/request-record-utils.d.ts.map +1 -1
- package/dist/request-record-utils.js +27 -2
- package/dist/request-record-utils.js.map +1 -1
- package/dist/response-mapping-provider.d.ts +9 -0
- package/dist/response-mapping-provider.d.ts.map +1 -0
- package/dist/response-mapping-provider.js +15 -0
- package/dist/response-mapping-provider.js.map +1 -0
- package/dist/response-mapping-utils.d.ts +46 -2
- package/dist/response-mapping-utils.d.ts.map +1 -1
- package/dist/response-mapping-utils.js +56 -0
- package/dist/response-mapping-utils.js.map +1 -1
- package/dist/response-mapping-utils.types.d.ts +5 -0
- package/dist/response-mapping-utils.types.d.ts.map +1 -0
- package/dist/response-mapping-utils.types.js +2 -0
- package/dist/response-mapping-utils.types.js.map +1 -0
- package/dist/response-mapping-validation.d.ts +13 -0
- package/dist/response-mapping-validation.d.ts.map +1 -0
- package/dist/response-mapping-validation.js +20 -0
- package/dist/response-mapping-validation.js.map +1 -0
- package/dist/response-mapping.d.ts +57 -8
- package/dist/response-mapping.d.ts.map +1 -1
- package/dist/response-mapping.js +114 -72
- package/dist/response-mapping.js.map +1 -1
- package/dist/response-mapping.types.d.ts +11 -0
- package/dist/response-mapping.types.d.ts.map +1 -0
- package/dist/response-mapping.types.js +2 -0
- package/dist/response-mapping.types.js.map +1 -0
- package/dist/route-middleware.d.ts +5 -0
- package/dist/route-middleware.d.ts.map +1 -1
- package/dist/route-middleware.js +29 -5
- package/dist/route-middleware.js.map +1 -1
- package/dist/rpc-identity.d.ts +13 -6
- package/dist/rpc-identity.d.ts.map +1 -1
- package/dist/rpc-identity.js +11 -0
- package/dist/rpc-identity.js.map +1 -1
- package/dist/rpc-identity.types.d.ts +9 -0
- package/dist/rpc-identity.types.d.ts.map +1 -0
- package/dist/rpc-identity.types.js +2 -0
- package/dist/rpc-identity.types.js.map +1 -0
- package/dist/rpc-middleware-trace.d.ts +14 -0
- package/dist/rpc-middleware-trace.d.ts.map +1 -1
- package/dist/rpc-middleware-trace.js +20 -4
- package/dist/rpc-middleware-trace.js.map +1 -1
- package/dist/rpc-response.d.ts +12 -0
- package/dist/rpc-response.d.ts.map +1 -1
- package/dist/rpc-response.js +12 -0
- package/dist/rpc-response.js.map +1 -1
- package/dist/rpc-route-types.d.ts +26 -1
- package/dist/rpc-route-types.d.ts.map +1 -1
- package/dist/rpc-route-types.js +37 -0
- package/dist/rpc-route-types.js.map +1 -1
- package/dist/rpc-websocket.d.ts +6 -1
- package/dist/rpc-websocket.d.ts.map +1 -1
- package/dist/rpc-websocket.js +20 -1
- package/dist/rpc-websocket.js.map +1 -1
- package/dist/rpc.d.ts +11 -3
- package/dist/rpc.d.ts.map +1 -1
- package/dist/rpc.js +43 -6
- package/dist/rpc.js.map +1 -1
- package/dist/rpc.types.d.ts +5 -0
- package/dist/rpc.types.d.ts.map +1 -0
- package/dist/rpc.types.js +2 -0
- package/dist/rpc.types.js.map +1 -0
- package/dist/static-file-service.d.ts +22 -0
- package/dist/static-file-service.d.ts.map +1 -0
- package/dist/static-file-service.js +43 -0
- package/dist/static-file-service.js.map +1 -0
- package/dist/static-files.d.ts +7 -3
- package/dist/static-files.d.ts.map +1 -1
- package/dist/static-files.js +32 -19
- package/dist/static-files.js.map +1 -1
- package/dist/static-files.types.d.ts +5 -0
- package/dist/static-files.types.d.ts.map +1 -0
- package/dist/static-files.types.js +2 -0
- package/dist/static-files.types.js.map +1 -0
- package/dist/transport-security-errors.d.ts +10 -0
- package/dist/transport-security-errors.d.ts.map +1 -0
- package/dist/transport-security-errors.js +14 -0
- package/dist/transport-security-errors.js.map +1 -0
- package/dist/transport-security.d.ts +49 -13
- package/dist/transport-security.d.ts.map +1 -1
- package/dist/transport-security.js +86 -15
- package/dist/transport-security.js.map +1 -1
- package/dist/transport-security.types.d.ts +11 -0
- package/dist/transport-security.types.d.ts.map +1 -0
- package/dist/transport-security.types.js +2 -0
- package/dist/transport-security.types.js.map +1 -0
- package/package.json +19 -16
package/dist/rate-limit.js
CHANGED
|
@@ -10,6 +10,12 @@ export const ROUTE_MIDDLEWARE_ORDER = Object.freeze([
|
|
|
10
10
|
"target",
|
|
11
11
|
]);
|
|
12
12
|
const INFO_KEY = "relkit.rateLimit";
|
|
13
|
+
/** Applies the declared fixed-window policy before invoking a route handler.
|
|
14
|
+
* @param trigger - Registered route declaration with its target and transport contract.
|
|
15
|
+
* @param options - Application dependencies and configuration for this domain.
|
|
16
|
+
* @param handler - Native handler executed within the configured boundary.
|
|
17
|
+
* @returns The original handler without a policy, or a handler enforcing the declared limit.
|
|
18
|
+
*/
|
|
13
19
|
export function withRateLimit(trigger, options, handler) {
|
|
14
20
|
const policy = trigger.config.rateLimit;
|
|
15
21
|
if (policy === undefined || policy === null)
|
|
@@ -59,6 +65,13 @@ export function withRateLimit(trigger, options, handler) {
|
|
|
59
65
|
});
|
|
60
66
|
};
|
|
61
67
|
}
|
|
68
|
+
/** Adds standard rate-limit headers while preserving the original response body.
|
|
69
|
+
* @param response - Native response whose status, headers and body lifetime are preserved.
|
|
70
|
+
* @param policy - Declared route rate-limit policy.
|
|
71
|
+
* @param info - Limiter result used to write standard response headers.
|
|
72
|
+
* @param blocked - Whether the limiter rejected the request.
|
|
73
|
+
* @returns A response preserving the body and status with limit, remaining and reset headers.
|
|
74
|
+
*/
|
|
62
75
|
function withStandardHeaders(response, policy, info, blocked) {
|
|
63
76
|
const headers = new Headers(response.headers);
|
|
64
77
|
const resetSeconds = Math.max(0, Math.ceil((info?.resetTime === undefined ? policy.windowMs : info.resetTime.getTime() - Date.now()) /
|
|
@@ -75,6 +88,11 @@ function withStandardHeaders(response, policy, info, blocked) {
|
|
|
75
88
|
headers,
|
|
76
89
|
});
|
|
77
90
|
}
|
|
91
|
+
/** Resolves the configured counter provider or reports a missing store.
|
|
92
|
+
* @param options - Application dependencies and configuration for this domain.
|
|
93
|
+
* @param storeId - Declared provider binding supplying the counter store.
|
|
94
|
+
* @returns The configured store resolver, or a resolver that reports the missing binding when used.
|
|
95
|
+
*/
|
|
78
96
|
function requiredResolver(options, storeId) {
|
|
79
97
|
const resolver = options.rateLimitRuntime?.resolveStore;
|
|
80
98
|
if (resolver !== undefined)
|
|
@@ -83,10 +101,20 @@ function requiredResolver(options, storeId) {
|
|
|
83
101
|
throw new Error(`Rate-limit store "${storeId}" is not bound to the active runtime.`);
|
|
84
102
|
};
|
|
85
103
|
}
|
|
104
|
+
/** Builds the declared rate-limit identity from trusted request sources.
|
|
105
|
+
* @param context - Trusted Hono or oRPC request context containing request state and authentication.
|
|
106
|
+
* @param source - Native iterable or declared request-key source.
|
|
107
|
+
* @returns A serialized tuple of source kind, source name and the extracted request value.
|
|
108
|
+
*/
|
|
86
109
|
function requestKey(context, source) {
|
|
87
110
|
const value = sourceValue(context, source);
|
|
88
111
|
return JSON.stringify([projection(source, "kind"), projection(source, "name"), value]);
|
|
89
112
|
}
|
|
113
|
+
/** Reads one supported rate-limit key source from the active request.
|
|
114
|
+
* @param context - Trusted Hono or oRPC request context containing request state and authentication.
|
|
115
|
+
* @param source - Native iterable or declared request-key source.
|
|
116
|
+
* @returns The configured constant or request value, or null when the source is unavailable.
|
|
117
|
+
*/
|
|
90
118
|
function sourceValue(context, source) {
|
|
91
119
|
const kind = projection(source, "kind");
|
|
92
120
|
const name = projection(source, "name");
|
|
@@ -104,6 +132,11 @@ function sourceValue(context, source) {
|
|
|
104
132
|
return context.req.header(name) ?? null;
|
|
105
133
|
return kind === "cookie" ? cookie(context.req.header("cookie"), name) : null;
|
|
106
134
|
}
|
|
135
|
+
/** Reads a named cookie without exposing unrelated cookie values.
|
|
136
|
+
* @param header - Raw header value parsed without trusting malformed input.
|
|
137
|
+
* @param name - Declared field, header, stream or configuration key.
|
|
138
|
+
* @returns The decoded cookie value, its raw value for malformed encoding, or null when absent.
|
|
139
|
+
*/
|
|
107
140
|
function cookie(header, name) {
|
|
108
141
|
const value = header
|
|
109
142
|
?.split(";")
|
|
@@ -119,11 +152,20 @@ function cookie(header, name) {
|
|
|
119
152
|
return value;
|
|
120
153
|
}
|
|
121
154
|
}
|
|
155
|
+
/** Selects the declared property from a structured rate-limit key source.
|
|
156
|
+
* @param value - Value inspected, validated or projected by this operation.
|
|
157
|
+
* @param key - Declared property or field key.
|
|
158
|
+
* @returns The named object property, or undefined for a non-object source.
|
|
159
|
+
*/
|
|
122
160
|
function projection(value, key) {
|
|
123
161
|
return value !== null && typeof value === "object"
|
|
124
162
|
? value[key]
|
|
125
163
|
: undefined;
|
|
126
164
|
}
|
|
165
|
+
/** Reads the limiter result stored on the Hono request context.
|
|
166
|
+
* @param context - Trusted Hono or oRPC request context containing request state and authentication.
|
|
167
|
+
* @returns The limiter metadata stored on the context, or undefined before a result is available.
|
|
168
|
+
*/
|
|
127
169
|
function rateInfo(context) {
|
|
128
170
|
const value = context.var[INFO_KEY];
|
|
129
171
|
return value !== null && typeof value === "object" ? value : undefined;
|
package/dist/rate-limit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../src/rate-limit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAsB,MAAM,mBAAmB,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAA+B,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../src/rate-limit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAsB,MAAM,mBAAmB,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAA+B,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAIlE,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC;IAClD,YAAY;IACZ,qBAAqB;IACrB,iBAAiB;IACjB,QAAQ;CACA,CAAC,CAAC;AACZ,MAAM,QAAQ,GAAG,kBAAkB,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAgC,EAChC,OAAoC,EACpC,OAAqB;IAErB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;IACxC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC;IAC5D,MAAM,KAAK,GACT,MAAM,CAAC,OAAO,KAAK,SAAS;QAC1B,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,oBAAoB,CAClB,OAAO,CAAC,EAAE,EACV,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,QAAQ,EACf,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAC1C,CAAC;IACR,MAAM,UAAU,GAAG,WAAW,CAAC;QAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,eAAe,EAAE,SAAS;QAC1B,mBAAmB,EAAE,QAAQ;QAC7B,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC;QAC1D,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;QACzC,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE;YACnB,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAC3B,CAAC,EACD,IAAI,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CACxF,CAAC;YACF,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,EAAE,GAAG,CAAC,CAAC;QAClE,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,KAAK,EAAE,OAAO,EAAE,EAAE;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO,cAAc,CAAC,IAAI,CACxB,wBAAwB,EACxB;YACE,UAAU,EAAE;gBACV,iBAAiB,EAAE,OAAO,CAAC,EAAE;gBAC7B,yBAAyB,EAAE,MAAM,CAAC,KAAK;gBACvC,yBAAyB,EAAE,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;aAC9E;SACF,EACD,KAAK,IAAI,EAAE;YACT,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;gBAClD,SAAS,GAAG,IAAI,CAAC;gBACjB,OAAO,CAAC,GAAG,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,YAAY,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;YACnE,MAAM,OAAO,GAAG,CAAC,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC;YACtD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC/B,MAAM,aAAa,GAAG,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAC3E,OAAO,CAAC,GAAG,GAAG,aAAa,CAAC;YAC5B,cAAc,CAAC,aAAa,CAAC;gBAC3B,6BAA6B,EAAE,IAAI,EAAE,SAAS,IAAI,MAAM,CAAC,KAAK;gBAC9D,2BAA2B,EAAE,OAAO;aACrC,CAAC,CAAC;YACH,qBAAqB,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YAC3F,OAAO,aAAa,CAAC;QACvB,CAAC,CACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,mBAAmB,CAC1B,QAAkB,EAClB,MAAmE,EACnE,IAA+B,EAC/B,OAAgB;IAEhB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAC3B,CAAC,EACD,IAAI,CAAC,IAAI,CACP,CAAC,IAAI,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvF,KAAK,CACR,CACF,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,GAAG,MAAM,CAAC,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;IAC3F,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IACrD,IAAI,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IAC9D,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE;QACjC,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CACvB,OAAoC,EACpC,OAAe;IAEf,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,EAAE,YAAY,CAAC;IACxD,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC5C,OAAO,GAAG,EAAE;QACV,MAAM,IAAI,KAAK,CAAC,qBAAqB,OAAO,uCAAuC,CAAC,CAAC;IACvF,CAAC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU,CAAC,OAAgB,EAAE,MAAe;IACnD,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AACzF,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAAC,OAAgB,EAAE,MAAe;IACpD,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5D,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAC5D,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClE,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7C,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAC/D,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/E,CAAC;AAED;;;;GAIG;AACH,SAAS,MAAM,CAAC,MAA0B,EAAE,IAAY;IACtD,MAAM,KAAK,GAAG,MAAM;QAClB,EAAE,KAAK,CAAC,GAAG,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;QAC5C,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,CAAC;QACH,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU,CAAC,KAAc,EAAE,GAAW;IAC7C,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAChD,CAAC,CAAE,KAAiC,CAAC,GAAG,CAAC;QACzC,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,SAAS,QAAQ,CAAC,OAAgB;IAChC,MAAM,KAAK,GAAI,OAAO,CAAC,GAA+B,CAAC,QAAQ,CAAC,CAAC;IACjE,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAuB,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5F,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Context } from "hono";
|
|
2
|
+
import type { RateLimitStoreResolver } from "./rate-limit-store.js";
|
|
3
|
+
/** rate limit runtime options configuring dependencies, callbacks and runtime policy. */
|
|
4
|
+
export interface RateLimitRuntimeOptions {
|
|
5
|
+
readonly resolveStore?: RateLimitStoreResolver;
|
|
6
|
+
}
|
|
7
|
+
/** Contract for route handler used by rate limit. */
|
|
8
|
+
export type RouteHandler = (context: Context) => Promise<Response>;
|
|
9
|
+
//# sourceMappingURL=rate-limit.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limit.types.d.ts","sourceRoot":"","sources":["../src/rate-limit.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAEpE,yFAAyF;AACzF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,sBAAsB,CAAC;CAChD;AAED,qDAAqD;AACrD,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limit.types.js","sourceRoot":"","sources":["../src/rate-limit.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Context, Layer, Stream } from "effect";
|
|
2
|
+
import type { RouteMaterializationOptions } from "./materialize-routes.js";
|
|
3
|
+
import type { RealtimeFrame } from "./realtime-observation.types.js";
|
|
4
|
+
import { presence } from "./realtime-presence.js";
|
|
5
|
+
import { type SubscribeInput } from "./realtime-rpc-support.js";
|
|
6
|
+
import type { RpcContext } from "./rpc.js";
|
|
7
|
+
/** Opens a channel with scoped presence and per-observation authorization.
|
|
8
|
+
* @param input - Submitted operation input; validation and authorization occur before effects are admitted.
|
|
9
|
+
* @param context - Trusted Hono or oRPC request context containing request state and authentication.
|
|
10
|
+
* @param options - Application dependencies and configuration for this domain.
|
|
11
|
+
* @param signal - Cancellation signal inherited from the caller or owning scope.
|
|
12
|
+
* @returns A lazy stream owning presence leases and rechecking access before each emitted frame.
|
|
13
|
+
*/
|
|
14
|
+
declare function observe(input: SubscribeInput, context: RpcContext, options: RouteMaterializationOptions, signal?: AbortSignal): Stream.Stream<RealtimeFrame, import("./http-effect.js").HttpBoundaryError, never>;
|
|
15
|
+
declare const RealtimeSubscriptions_base: Context.ServiceClass<RealtimeSubscriptions, "@relkit/runtime-hono/RealtimeSubscriptions", {
|
|
16
|
+
readonly observe: typeof observe;
|
|
17
|
+
readonly presence: typeof presence;
|
|
18
|
+
}>;
|
|
19
|
+
/** Channel observations own lease cleanup, backpressure and fresh identity checks. */
|
|
20
|
+
export declare class RealtimeSubscriptions extends RealtimeSubscriptions_base {
|
|
21
|
+
}
|
|
22
|
+
/** Live channel workflows with independently observed presence reads. */
|
|
23
|
+
export declare const RealtimeSubscriptionsLive: Layer.Layer<RealtimeSubscriptions, never, never>;
|
|
24
|
+
/** Native oRPC observation edge; returning the iterator releases its presence lease.
|
|
25
|
+
* @param input - Submitted operation input; validation and authorization occur before effects are admitted.
|
|
26
|
+
* @param context - Trusted Hono or oRPC request context containing request state and authentication.
|
|
27
|
+
* @param options - Application dependencies and configuration for this domain.
|
|
28
|
+
* @param signal - Cancellation signal inherited from the caller or owning scope.
|
|
29
|
+
* @returns A native iterator retaining presence ownership until return, failure or EOF.
|
|
30
|
+
*/
|
|
31
|
+
export declare function observeRealtime(input: SubscribeInput, context: RpcContext, options: RouteMaterializationOptions, signal?: AbortSignal): AsyncIterable<RealtimeFrame>;
|
|
32
|
+
/** Native oRPC presence edge retaining the existing Promise and error contract.
|
|
33
|
+
* @param input - Submitted operation input; validation and authorization occur before effects are admitted.
|
|
34
|
+
* @param context - Trusted Hono or oRPC request context containing request state and authentication.
|
|
35
|
+
* @param options - Application dependencies and configuration for this domain.
|
|
36
|
+
* @returns A Promise for the authorized presence snapshot or the existing public failure.
|
|
37
|
+
*/
|
|
38
|
+
export declare function readRealtimePresence(input: SubscribeInput, context: RpcContext, options: RouteMaterializationOptions): Promise<import("@relkit/realtime").PresenceSnapshot>;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=realtime-observation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime-observation.d.ts","sourceRoot":"","sources":["../src/realtime-observation.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,OAAO,EAAU,KAAK,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIvE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C;;;;;;GAMG;AACH,iBAAS,OAAO,CACd,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,2BAA2B,EACpC,MAAM,CAAC,EAAE,WAAW,qFAoKrB;;sBAKqB,OAAO,OAAO;uBAAqB,OAAO,QAAQ;;AAHxE,sFAAsF;AACtF,qBAAa,qBAAsB,SAAQ,0BAGM;CAAG;AAEpD,yEAAyE;AACzE,eAAO,MAAM,yBAAyB,kDAGpC,CAAC;AAEH;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,2BAA2B,EACpC,MAAM,CAAC,EAAE,WAAW,GACnB,aAAa,CAAC,aAAa,CAAC,CAQ9B;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,2BAA2B,wDAOrC"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { REALTIME_RUNTIME_LIMITS } from "@relkit/contracts";
|
|
2
|
+
import { Clock, Context, Effect, Layer, Option, Stream } from "effect";
|
|
3
|
+
import { createHash } from "node:crypto";
|
|
4
|
+
import { httpBoundary, httpIterable, observeHttp, runHttp } from "./http-effect.js";
|
|
5
|
+
import { observeHttpStream } from "./http-stream-observation.js";
|
|
6
|
+
import { presence } from "./realtime-presence.js";
|
|
7
|
+
import { channelContext, validatePublicValue, } from "./realtime-rpc-support.js";
|
|
8
|
+
import { assertExpectedIdentity } from "./rpc-identity.js";
|
|
9
|
+
/** Opens a channel with scoped presence and per-observation authorization.
|
|
10
|
+
* @param input - Submitted operation input; validation and authorization occur before effects are admitted.
|
|
11
|
+
* @param context - Trusted Hono or oRPC request context containing request state and authentication.
|
|
12
|
+
* @param options - Application dependencies and configuration for this domain.
|
|
13
|
+
* @param signal - Cancellation signal inherited from the caller or owning scope.
|
|
14
|
+
* @returns A lazy stream owning presence leases and rechecking access before each emitted frame.
|
|
15
|
+
*/
|
|
16
|
+
function observe(input, context, options, signal) {
|
|
17
|
+
return Stream.unwrap(Effect.gen(function* () {
|
|
18
|
+
/** Revalidate session identity and channel access at the requested replay position.
|
|
19
|
+
* @param after - Optional checkpoint whose partition must match the current grant.
|
|
20
|
+
* @returns The freshly authorized channel descriptor, provider and trusted scope.
|
|
21
|
+
*/
|
|
22
|
+
const authorize = Effect.fn("RealtimeSubscriptions.authorize")(function* (after) {
|
|
23
|
+
yield* httpBoundary("realtime.identity", () => assertExpectedIdentity(context, options.clientIdentity, input.expectedIdentity));
|
|
24
|
+
return yield* httpBoundary("realtime.authorize", () => channelContext(after === undefined
|
|
25
|
+
? { channel: input.channel, params: input.params }
|
|
26
|
+
: { ...input, after }, context, options));
|
|
27
|
+
});
|
|
28
|
+
const owner = yield* authorize(input.after);
|
|
29
|
+
let after = owner.descriptor.replay === undefined ? undefined : input.after;
|
|
30
|
+
const initial = [];
|
|
31
|
+
if (input.after !== undefined && owner.descriptor.replay === undefined) {
|
|
32
|
+
const fence = yield* httpBoundary("realtime.fence", () => owner.provider.readAfter({ ...owner.scope, limit: 1, maxEncodedBytes: 64 * 1024 }));
|
|
33
|
+
initial.push({ kind: "gap", reason: "replay-disabled", checkpoint: fence.checkpoint });
|
|
34
|
+
after = fence.checkpoint;
|
|
35
|
+
}
|
|
36
|
+
const leaseId = crypto.randomUUID();
|
|
37
|
+
const lease = {
|
|
38
|
+
...owner.scope,
|
|
39
|
+
leaseId,
|
|
40
|
+
connectionId: leaseId,
|
|
41
|
+
maxMembers: typeof owner.descriptor.presence === "object"
|
|
42
|
+
? owner.descriptor.presence.maxMembers
|
|
43
|
+
: 1_000,
|
|
44
|
+
maxConnections: REALTIME_RUNTIME_LIMITS.liveConnections,
|
|
45
|
+
};
|
|
46
|
+
let renewedAt = yield* Clock.currentTimeMillis;
|
|
47
|
+
if (owner.descriptor.presence !== undefined) {
|
|
48
|
+
const presence = owner.descriptor.presence;
|
|
49
|
+
const member = typeof presence === "object"
|
|
50
|
+
? yield* httpBoundary("realtime.presence.member", async () => validatePublicValue(presence.member, await presence.resolve(owner.params, owner.trusted)))
|
|
51
|
+
: undefined;
|
|
52
|
+
const snapshot = yield* Effect.acquireRelease(observeHttp("realtime.presence.acquire", httpBoundary("realtime.presence.acquire", () => owner.provider.acquirePresence({
|
|
53
|
+
...lease,
|
|
54
|
+
expiresAt: new Date(renewedAt + 45_000).toISOString(),
|
|
55
|
+
...(member === undefined
|
|
56
|
+
? {}
|
|
57
|
+
: {
|
|
58
|
+
opaqueMemberId: createHash("sha256")
|
|
59
|
+
.update(`${owner.scope.channelId}:${owner.scope.partition}:${owner.scope.identityScope}`)
|
|
60
|
+
.digest("hex"),
|
|
61
|
+
memberInfo: member,
|
|
62
|
+
}),
|
|
63
|
+
}))), () => observeHttp("realtime.presence.release", httpBoundary("realtime.presence.release", () => owner.provider.releasePresence(lease))).pipe(Effect.catch(() => Effect.logWarning("Presence release failed; the bounded lease will expire"))));
|
|
64
|
+
initial.push({ kind: "presence", presence: snapshot });
|
|
65
|
+
}
|
|
66
|
+
const pages = Stream.paginate({ after, wait: false }, Effect.fn("RealtimeSubscriptions.readPage")(function* (state) {
|
|
67
|
+
if (signal?.aborted)
|
|
68
|
+
return [[], Option.none()];
|
|
69
|
+
const resolved = yield* authorize(state.after);
|
|
70
|
+
if (state.wait && state.after !== undefined) {
|
|
71
|
+
const checkpoint = state.after;
|
|
72
|
+
const now = yield* Clock.currentTimeMillis;
|
|
73
|
+
yield* httpBoundary("realtime.wait", (fiberSignal) => resolved.provider.waitAfter({
|
|
74
|
+
...resolved.scope,
|
|
75
|
+
after: checkpoint,
|
|
76
|
+
deadlineMs: now + 15_000,
|
|
77
|
+
signal: signal === undefined ? fiberSignal : AbortSignal.any([signal, fiberSignal]),
|
|
78
|
+
}));
|
|
79
|
+
}
|
|
80
|
+
const page = yield* observeHttp("realtime.read", httpBoundary("realtime.read", () => resolved.provider.readAfter({
|
|
81
|
+
...resolved.scope,
|
|
82
|
+
...(state.after === undefined ? {} : { after: state.after }),
|
|
83
|
+
limit: 100,
|
|
84
|
+
maxEncodedBytes: 1024 * 1024,
|
|
85
|
+
})));
|
|
86
|
+
const frames = [];
|
|
87
|
+
if (page.gap !== undefined)
|
|
88
|
+
frames.push({ kind: "gap", reason: page.gap, checkpoint: page.checkpoint });
|
|
89
|
+
for (const record of page.events) {
|
|
90
|
+
const current = yield* authorize(record.checkpoint);
|
|
91
|
+
const schema = current.descriptor.events[record.event];
|
|
92
|
+
if (schema === undefined)
|
|
93
|
+
continue;
|
|
94
|
+
const payload = yield* httpBoundary("realtime.validate", () => validatePublicValue(schema, record.payload));
|
|
95
|
+
frames.push({
|
|
96
|
+
kind: "event",
|
|
97
|
+
event: record.event,
|
|
98
|
+
payload,
|
|
99
|
+
checkpoint: record.checkpoint,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
const now = yield* Clock.currentTimeMillis;
|
|
103
|
+
if (resolved.descriptor.presence !== undefined && now - renewedAt >= 15_000) {
|
|
104
|
+
const snapshot = yield* observeHttp("realtime.presence.renew", httpBoundary("realtime.presence.renew", () => resolved.provider.renewPresence({
|
|
105
|
+
...lease,
|
|
106
|
+
...resolved.scope,
|
|
107
|
+
expiresAt: new Date(now + 45_000).toISOString(),
|
|
108
|
+
})));
|
|
109
|
+
frames.push({ kind: "presence", presence: snapshot });
|
|
110
|
+
renewedAt = now;
|
|
111
|
+
}
|
|
112
|
+
if (!page.hasMore)
|
|
113
|
+
frames.push({ kind: "caught-up", checkpoint: page.checkpoint });
|
|
114
|
+
return [frames, Option.some({ after: page.checkpoint, wait: !page.hasMore })];
|
|
115
|
+
}));
|
|
116
|
+
// Reauthorize on pull as well as page read: buffered events cannot outlive a grant.
|
|
117
|
+
return Stream.fromIterable(initial).pipe(Stream.concat(pages), Stream.mapEffect((frame) => authorize("checkpoint" in frame ? frame.checkpoint : undefined).pipe(Effect.as(frame))));
|
|
118
|
+
}));
|
|
119
|
+
}
|
|
120
|
+
/** Channel observations own lease cleanup, backpressure and fresh identity checks. */
|
|
121
|
+
export class RealtimeSubscriptions extends Context.Service()("@relkit/runtime-hono/RealtimeSubscriptions") {
|
|
122
|
+
}
|
|
123
|
+
/** Live channel workflows with independently observed presence reads. */
|
|
124
|
+
export const RealtimeSubscriptionsLive = Layer.succeed(RealtimeSubscriptions, {
|
|
125
|
+
observe: (...args) => observeHttpStream("realtime.observe", observe(...args)),
|
|
126
|
+
presence: (...args) => observeHttp("realtime.presence.read", presence(...args)),
|
|
127
|
+
});
|
|
128
|
+
/** Native oRPC observation edge; returning the iterator releases its presence lease.
|
|
129
|
+
* @param input - Submitted operation input; validation and authorization occur before effects are admitted.
|
|
130
|
+
* @param context - Trusted Hono or oRPC request context containing request state and authentication.
|
|
131
|
+
* @param options - Application dependencies and configuration for this domain.
|
|
132
|
+
* @param signal - Cancellation signal inherited from the caller or owning scope.
|
|
133
|
+
* @returns A native iterator retaining presence ownership until return, failure or EOF.
|
|
134
|
+
*/
|
|
135
|
+
export function observeRealtime(input, context, options, signal) {
|
|
136
|
+
return httpIterable(Stream.unwrap(Effect.map(RealtimeSubscriptions, (service) => service.observe(input, context, options, signal))).pipe(Stream.provide(RealtimeSubscriptionsLive)));
|
|
137
|
+
}
|
|
138
|
+
/** Native oRPC presence edge retaining the existing Promise and error contract.
|
|
139
|
+
* @param input - Submitted operation input; validation and authorization occur before effects are admitted.
|
|
140
|
+
* @param context - Trusted Hono or oRPC request context containing request state and authentication.
|
|
141
|
+
* @param options - Application dependencies and configuration for this domain.
|
|
142
|
+
* @returns A Promise for the authorized presence snapshot or the existing public failure.
|
|
143
|
+
*/
|
|
144
|
+
export function readRealtimePresence(input, context, options) {
|
|
145
|
+
return runHttp(Effect.flatMap(RealtimeSubscriptions, (service) => service.presence(input, context, options)).pipe(Effect.provide(RealtimeSubscriptionsLive)));
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=realtime-observation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime-observation.js","sourceRoot":"","sources":["../src/realtime-observation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { PresenceSnapshot } from "@relkit/realtime";
|
|
2
|
+
import type { ChannelCheckpoint } from "@relkit/realtime";
|
|
3
|
+
/** Public channel frames retain the existing replay, event and presence protocol. */
|
|
4
|
+
export type RealtimeFrame = {
|
|
5
|
+
readonly kind: "gap";
|
|
6
|
+
readonly reason: string;
|
|
7
|
+
readonly checkpoint: ChannelCheckpoint;
|
|
8
|
+
} | {
|
|
9
|
+
readonly kind: "event";
|
|
10
|
+
readonly event: string;
|
|
11
|
+
readonly payload: unknown;
|
|
12
|
+
readonly checkpoint: ChannelCheckpoint;
|
|
13
|
+
} | {
|
|
14
|
+
readonly kind: "presence";
|
|
15
|
+
readonly presence: PresenceSnapshot;
|
|
16
|
+
} | {
|
|
17
|
+
readonly kind: "caught-up";
|
|
18
|
+
readonly checkpoint: ChannelCheckpoint;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=realtime-observation.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime-observation.types.d.ts","sourceRoot":"","sources":["../src/realtime-observation.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,qFAAqF;AACrF,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAA;CAAE,GACzF;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;CACxC,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAA;CAAE,GAClE;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAA;CAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime-observation.types.js","sourceRoot":"","sources":["../src/realtime-observation.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { HttpBoundaryError } from "./http-effect.js";
|
|
3
|
+
import type { RouteMaterializationOptions } from "./materialize-routes.js";
|
|
4
|
+
import { type SubscribeInput } from "./realtime-rpc-support.js";
|
|
5
|
+
import type { RpcContext } from "./rpc.js";
|
|
6
|
+
/** Reads presence without acquiring a connection lease.
|
|
7
|
+
* @param input - Submitted operation input; validation and authorization occur before effects are admitted.
|
|
8
|
+
* @param context - Trusted Hono or oRPC request context containing request state and authentication.
|
|
9
|
+
* @param options - Application dependencies and configuration for this domain.
|
|
10
|
+
* @returns An effect yielding the current authorized presence snapshot without acquiring a lease.
|
|
11
|
+
*/
|
|
12
|
+
export declare const presence: (input: SubscribeInput, context: RpcContext, options: RouteMaterializationOptions) => Effect.Effect<import("@relkit/realtime").PresenceSnapshot, HttpBoundaryError, never>;
|
|
13
|
+
//# sourceMappingURL=realtime-presence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime-presence.d.ts","sourceRoot":"","sources":["../src/realtime-presence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAgB,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,4KAyBnB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { httpBoundary, HttpBoundaryError } from "./http-effect.js";
|
|
3
|
+
import { channelContext } from "./realtime-rpc-support.js";
|
|
4
|
+
import { assertExpectedIdentity } from "./rpc-identity.js";
|
|
5
|
+
/** Reads presence without acquiring a connection lease.
|
|
6
|
+
* @param input - Submitted operation input; validation and authorization occur before effects are admitted.
|
|
7
|
+
* @param context - Trusted Hono or oRPC request context containing request state and authentication.
|
|
8
|
+
* @param options - Application dependencies and configuration for this domain.
|
|
9
|
+
* @returns An effect yielding the current authorized presence snapshot without acquiring a lease.
|
|
10
|
+
*/
|
|
11
|
+
export const presence = Effect.fn("RealtimeSubscriptions.presence")(function* (input, context, options) {
|
|
12
|
+
yield* httpBoundary("realtime.identity", () => assertExpectedIdentity(context, options.clientIdentity));
|
|
13
|
+
const resolved = yield* httpBoundary("realtime.authorize", () => channelContext(input, context, options));
|
|
14
|
+
if (resolved.descriptor.presence === undefined)
|
|
15
|
+
return yield* Effect.fail(new HttpBoundaryError({
|
|
16
|
+
operation: "realtime.presence.read",
|
|
17
|
+
cause: new Error("Presence is not enabled."),
|
|
18
|
+
}));
|
|
19
|
+
const maxMembers = typeof resolved.descriptor.presence === "object"
|
|
20
|
+
? resolved.descriptor.presence.maxMembers
|
|
21
|
+
: 1_000;
|
|
22
|
+
return yield* httpBoundary("realtime.presence.read", () => resolved.provider.readPresence({ ...resolved.scope, maxMembers }));
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=realtime-presence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime-presence.js","sourceRoot":"","sources":["../src/realtime-presence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAuB,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAG3D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,gCAAgC,CAAC,CAAC,QAAQ,CAAC,EAC3E,KAAqB,EACrB,OAAmB,EACnB,OAAoC;IAEpC,KAAK,CAAC,CAAC,YAAY,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAC5C,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,cAAe,CAAC,CACzD,CAAC;IACF,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAC9D,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CACxC,CAAC;IACF,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,KAAK,SAAS;QAC5C,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,iBAAiB,CAAC;YACpB,SAAS,EAAE,wBAAwB;YACnC,KAAK,EAAE,IAAI,KAAK,CAAC,0BAA0B,CAAC;SAC7C,CAAC,CACH,CAAC;IACJ,MAAM,UAAU,GACd,OAAO,QAAQ,CAAC,UAAU,CAAC,QAAQ,KAAK,QAAQ;QAC9C,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU;QACzC,CAAC,CAAC,KAAK,CAAC;IACZ,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC,wBAAwB,EAAE,GAAG,EAAE,CACxD,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,CAClE,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import type { ChannelDescriptorAny,
|
|
1
|
+
import type { ChannelDescriptorAny, RealtimeScope } from "@relkit/realtime";
|
|
2
2
|
import { type StandardSchemaV1 } from "@relkit/schema";
|
|
3
|
-
import type { RpcContext } from "./rpc.js";
|
|
4
3
|
import type { RouteMaterializationOptions } from "./materialize-routes.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
4
|
+
import type { SubscribeInput } from "./realtime-rpc-support.types.js";
|
|
5
|
+
import type { RpcContext } from "./rpc.js";
|
|
6
|
+
export type { SubscribeInput } from "./realtime-rpc-support.types.js";
|
|
7
|
+
/** Resolves channel identity, partition, authorization and provider state for an observation.
|
|
8
|
+
* @param input - Submitted operation input; validation and authorization occur before effects are admitted.
|
|
9
|
+
* @param context - Trusted Hono or oRPC request context containing request state and authentication.
|
|
10
|
+
* @param options - Application dependencies and configuration for this domain.
|
|
11
|
+
* @returns The authorized descriptor, validated params, provider, scoped identity and trusted context.
|
|
12
|
+
*/
|
|
11
13
|
export declare function channelContext(input: SubscribeInput, context: RpcContext, options: RouteMaterializationOptions): Promise<{
|
|
12
14
|
descriptor: ChannelDescriptorAny;
|
|
13
15
|
params: unknown;
|
|
@@ -15,5 +17,10 @@ export declare function channelContext(input: SubscribeInput, context: RpcContex
|
|
|
15
17
|
scope: RealtimeScope;
|
|
16
18
|
trusted: unknown;
|
|
17
19
|
}>;
|
|
20
|
+
/** Validates a public realtime payload against the declared Standard Schema.
|
|
21
|
+
* @param schema - Foreign Standard Schema declaration used to validate public data.
|
|
22
|
+
* @param value - Value inspected, validated or projected by this operation.
|
|
23
|
+
* @returns The schema-validated value, rejecting when stored public data violates its schema.
|
|
24
|
+
*/
|
|
18
25
|
export declare function validatePublicValue(schema: StandardSchemaV1, value: unknown): Promise<unknown>;
|
|
19
26
|
//# sourceMappingURL=realtime-rpc-support.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realtime-rpc-support.d.ts","sourceRoot":"","sources":["../src/realtime-rpc-support.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,
|
|
1
|
+
{"version":3,"file":"realtime-rpc-support.d.ts","sourceRoot":"","sources":["../src/realtime-rpc-support.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAY,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAKjE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,YAAY,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,2BAA2B;;;;;;GAoDrC;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,OAAO,CAAC,CAIlB"}
|
|
@@ -1,10 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ORPCError } from "@orpc/server";
|
|
2
2
|
import { canonicalJson } from "@relkit/contracts";
|
|
3
3
|
import { validate } from "@relkit/schema";
|
|
4
|
+
import { createHash } from "node:crypto";
|
|
5
|
+
import { requireClientAuthorization } from "./client-authorization.js";
|
|
4
6
|
import { resolveClientIdentity } from "./client-identity.js";
|
|
5
7
|
import { getEntry, isRecord } from "./materialize-routes-utils.js";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
+
/** Resolves channel identity, partition, authorization and provider state for an observation.
|
|
9
|
+
* @param input - Submitted operation input; validation and authorization occur before effects are admitted.
|
|
10
|
+
* @param context - Trusted Hono or oRPC request context containing request state and authentication.
|
|
11
|
+
* @param options - Application dependencies and configuration for this domain.
|
|
12
|
+
* @returns The authorized descriptor, validated params, provider, scoped identity and trusted context.
|
|
13
|
+
*/
|
|
8
14
|
export async function channelContext(input, context, options) {
|
|
9
15
|
if (options.realtime === undefined || options.clientIdentity === undefined) {
|
|
10
16
|
throw new Error("Realtime client runtime is unavailable.");
|
|
@@ -15,8 +21,9 @@ export async function channelContext(input, context, options) {
|
|
|
15
21
|
throw new ORPCError("NOT_FOUND", { message: "Channel resource was not found." });
|
|
16
22
|
}
|
|
17
23
|
const parsed = await validate(descriptor.params, input.params);
|
|
18
|
-
if (!("value" in parsed))
|
|
19
|
-
throw new
|
|
24
|
+
if (!("value" in parsed)) {
|
|
25
|
+
throw new ORPCError("BAD_REQUEST", { message: "Channel params validation failed." });
|
|
26
|
+
}
|
|
20
27
|
const identity = await resolveClientIdentity(options.clientIdentity, context.hono.req.raw, context.auth, true);
|
|
21
28
|
let trusted;
|
|
22
29
|
if (descriptor.client !== undefined && "authorize" in descriptor.client) {
|
|
@@ -48,15 +55,28 @@ export async function channelContext(input, context, options) {
|
|
|
48
55
|
trusted,
|
|
49
56
|
};
|
|
50
57
|
}
|
|
58
|
+
/** Validates a public realtime payload against the declared Standard Schema.
|
|
59
|
+
* @param schema - Foreign Standard Schema declaration used to validate public data.
|
|
60
|
+
* @param value - Value inspected, validated or projected by this operation.
|
|
61
|
+
* @returns The schema-validated value, rejecting when stored public data violates its schema.
|
|
62
|
+
*/
|
|
51
63
|
export async function validatePublicValue(schema, value) {
|
|
52
64
|
const result = await validate(schema, value);
|
|
53
65
|
if (!("value" in result))
|
|
54
66
|
throw new TypeError("Stored realtime value failed validation.");
|
|
55
67
|
return result.value;
|
|
56
68
|
}
|
|
69
|
+
/** Recognizes a runtime channel descriptor with its declared event schemas.
|
|
70
|
+
* @param value - Value inspected, validated or projected by this operation.
|
|
71
|
+
* @returns Whether the inspected value satisfies the declared type guard.
|
|
72
|
+
*/
|
|
57
73
|
function isChannel(value) {
|
|
58
74
|
return isRecord(value) && value.kind === "channel" && isSchema(value.params);
|
|
59
75
|
}
|
|
76
|
+
/** Recognizes the Standard Schema contract required by runtime validation.
|
|
77
|
+
* @param value - Value inspected, validated or projected by this operation.
|
|
78
|
+
* @returns Whether the inspected value satisfies the declared type guard.
|
|
79
|
+
*/
|
|
60
80
|
function isSchema(value) {
|
|
61
81
|
return isRecord(value) && isRecord(value["~standard"]) && value["~standard"].version === 1;
|
|
62
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realtime-rpc-support.js","sourceRoot":"","sources":["../src/realtime-rpc-support.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"realtime-rpc-support.js","sourceRoot":"","sources":["../src/realtime-rpc-support.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ChannelCheckpoint } from "@relkit/realtime";
|
|
2
|
+
/** Public subscribe input validated before domain admission. */
|
|
3
|
+
export interface SubscribeInput {
|
|
4
|
+
readonly channel: string;
|
|
5
|
+
readonly params: unknown;
|
|
6
|
+
readonly after?: ChannelCheckpoint;
|
|
7
|
+
readonly expectedIdentity?: import("@relkit/contracts").ExpectedClientIdentity;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=realtime-rpc-support.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime-rpc-support.types.d.ts","sourceRoot":"","sources":["../src/realtime-rpc-support.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,gEAAgE;AAChE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,mBAAmB,EAAE,sBAAsB,CAAC;CAChF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime-rpc-support.types.js","sourceRoot":"","sources":["../src/realtime-rpc-support.types.ts"],"names":[],"mappings":""}
|
package/dist/realtime-rpc.d.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import { type AnyProcedure } from "@orpc/server";
|
|
2
2
|
import type { RouteMaterializationOptions } from "./materialize-routes.js";
|
|
3
|
+
/** Materializes channel procedures over the scoped realtime service.
|
|
4
|
+
* @param options - Channel providers and client identity configuration.
|
|
5
|
+
* @returns The existing subscribe and presence procedures, or none when disabled.
|
|
6
|
+
*/
|
|
3
7
|
export declare function realtimeProcedures(options: RouteMaterializationOptions): Readonly<Record<string, AnyProcedure>>;
|
|
4
8
|
//# sourceMappingURL=realtime-rpc.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realtime-rpc.d.ts","sourceRoot":"","sources":["../src/realtime-rpc.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"realtime-rpc.d.ts","sourceRoot":"","sources":["../src/realtime-rpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAErD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAI3E;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,2BAA2B,GACnC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAcxC"}
|