@relkit/runtime-hono 0.5.3 → 0.5.5
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 +44 -0
- 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
|
@@ -1,14 +1,29 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { runHttp } from "./http-effect.js";
|
|
3
|
+
import { RequestBodyReader, RequestBodyReaderLive } from "./request-body-service.js";
|
|
1
4
|
export const MISSING = Symbol("relkit.mapping.missing");
|
|
5
|
+
/** Shares the request body's first JSON parse among all mapping fields.
|
|
6
|
+
* @param state - State owned by the current request or operation.
|
|
7
|
+
* @returns The memoized JSON value, or MISSING with any body or parsing issue.
|
|
8
|
+
*/
|
|
2
9
|
export async function parseJson(state) {
|
|
3
10
|
if (state.json === undefined)
|
|
4
11
|
state.json = parseJsonBody(state);
|
|
5
12
|
return state.json;
|
|
6
13
|
}
|
|
14
|
+
/** Shares the request body's first multipart parse among all mapping fields.
|
|
15
|
+
* @param state - State owned by the current request or operation.
|
|
16
|
+
* @returns The memoized form data, or MISSING with any body or parsing issue.
|
|
17
|
+
*/
|
|
7
18
|
export async function parseForm(state) {
|
|
8
19
|
if (state.form === undefined)
|
|
9
20
|
state.form = parseFormBody(state);
|
|
10
21
|
return state.form;
|
|
11
22
|
}
|
|
23
|
+
/** Decodes bounded JSON bytes and reports malformed or incompatible input as mapping issues.
|
|
24
|
+
* @param state - State owned by the current request or operation.
|
|
25
|
+
* @returns The parsed JSON value, or MISSING with a bounded content-type or decoding issue.
|
|
26
|
+
*/
|
|
12
27
|
async function parseJsonBody(state) {
|
|
13
28
|
const body = await readBody(state);
|
|
14
29
|
if (body.issue !== undefined || body.bytes === undefined)
|
|
@@ -31,6 +46,10 @@ async function parseJsonBody(state) {
|
|
|
31
46
|
};
|
|
32
47
|
}
|
|
33
48
|
}
|
|
49
|
+
/** Decodes bounded multipart bytes while retaining uploaded field values.
|
|
50
|
+
* @param state - State owned by the current request or operation.
|
|
51
|
+
* @returns Parsed multipart fields, or MISSING with a bounded content-type or decoding issue.
|
|
52
|
+
*/
|
|
34
53
|
async function parseFormBody(state) {
|
|
35
54
|
const body = await readBody(state);
|
|
36
55
|
if (body.issue !== undefined || body.bytes === undefined)
|
|
@@ -57,44 +76,31 @@ async function parseFormBody(state) {
|
|
|
57
76
|
};
|
|
58
77
|
}
|
|
59
78
|
}
|
|
79
|
+
/** Shares one bounded body read across JSON and multipart mapping branches.
|
|
80
|
+
* @param state - State owned by the current request or operation.
|
|
81
|
+
* @returns The shared byte buffer or the body-reading issue.
|
|
82
|
+
*/
|
|
60
83
|
async function readBody(state) {
|
|
61
84
|
if (state.body !== undefined)
|
|
62
85
|
return state.body;
|
|
63
86
|
state.body = readBodyBytes(state.request, state.maxBodyBytes);
|
|
64
87
|
return state.body;
|
|
65
88
|
}
|
|
89
|
+
/** Reads native request bytes through the scoped body-reader service.
|
|
90
|
+
* @param request - Native request whose headers, body and cancellation signal define this operation.
|
|
91
|
+
* @param maxBytes - Positive maximum number of body bytes permitted for materialization.
|
|
92
|
+
* @returns The bounded bytes or reading issue produced by RequestBodyReader.
|
|
93
|
+
*/
|
|
66
94
|
async function readBodyBytes(request, maxBytes) {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
return { issue: { code: "body-too-large", message: `Request body exceeds ${maxBytes} bytes` } };
|
|
72
|
-
if (request.body === null)
|
|
73
|
-
return { bytes: new Uint8Array() };
|
|
74
|
-
const reader = request.body.getReader();
|
|
75
|
-
const chunks = [];
|
|
76
|
-
let total = 0;
|
|
77
|
-
while (true) {
|
|
78
|
-
const part = await reader.read();
|
|
79
|
-
if (part.done)
|
|
80
|
-
break;
|
|
81
|
-
total += part.value.byteLength;
|
|
82
|
-
if (total > maxBytes) {
|
|
83
|
-
await reader.cancel();
|
|
84
|
-
return {
|
|
85
|
-
issue: { code: "body-too-large", message: `Request body exceeds ${maxBytes} bytes` },
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
chunks.push(part.value);
|
|
89
|
-
}
|
|
90
|
-
const bytes = new Uint8Array(total);
|
|
91
|
-
let offset = 0;
|
|
92
|
-
for (const chunk of chunks) {
|
|
93
|
-
bytes.set(chunk, offset);
|
|
94
|
-
offset += chunk.byteLength;
|
|
95
|
-
}
|
|
96
|
-
return { bytes };
|
|
95
|
+
return runHttp(Effect.gen(function* () {
|
|
96
|
+
const body = yield* RequestBodyReader;
|
|
97
|
+
return yield* body.read(request, maxBytes);
|
|
98
|
+
}).pipe(Effect.provide(RequestBodyReaderLive)), request.signal);
|
|
97
99
|
}
|
|
100
|
+
/** Normalizes the media type without parameters for body decoder selection.
|
|
101
|
+
* @param value - Value inspected, validated or projected by this operation.
|
|
102
|
+
* @returns The lowercase media type without parameters, or an empty string when absent.
|
|
103
|
+
*/
|
|
98
104
|
function mediaType(value) {
|
|
99
105
|
return value?.split(";", 1)[0]?.trim().toLowerCase() ?? "";
|
|
100
106
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-mapping-body.js","sourceRoot":"","sources":["../src/request-mapping-body.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"request-mapping-body.js","sourceRoot":"","sources":["../src/request-mapping-body.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
/** Stable public body-decoding issue categories. */
|
|
3
|
+
export declare const BodyIssueCode: Schema.Literals<readonly ["content-type", "body-too-large", "malformed-json", "malformed-multipart"]>;
|
|
4
|
+
/** Public validation issue returned instead of throwing for malformed request bodies. */
|
|
5
|
+
export declare const BodyIssue: Schema.Struct<{
|
|
6
|
+
readonly code: Schema.Literals<readonly ["content-type", "body-too-large", "malformed-json", "malformed-multipart"]>;
|
|
7
|
+
readonly message: Schema.String;
|
|
8
|
+
}>;
|
|
9
|
+
//# sourceMappingURL=request-mapping-body.schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-mapping-body.schemas.d.ts","sourceRoot":"","sources":["../src/request-mapping-body.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,oDAAoD;AACpD,eAAO,MAAM,aAAa,uGAKxB,CAAC;AAEH,yFAAyF;AACzF,eAAO,MAAM,SAAS;;;EAAiE,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
/** Stable public body-decoding issue categories. */
|
|
3
|
+
export const BodyIssueCode = Schema.Literals([
|
|
4
|
+
"content-type",
|
|
5
|
+
"body-too-large",
|
|
6
|
+
"malformed-json",
|
|
7
|
+
"malformed-multipart",
|
|
8
|
+
]);
|
|
9
|
+
/** Public validation issue returned instead of throwing for malformed request bodies. */
|
|
10
|
+
export const BodyIssue = Schema.Struct({ code: BodyIssueCode, message: Schema.String });
|
|
11
|
+
//# sourceMappingURL=request-mapping-body.schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-mapping-body.schemas.js","sourceRoot":"","sources":["../src/request-mapping-body.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,oDAAoD;AACpD,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC3C,cAAc;IACd,gBAAgB;IAChB,gBAAgB;IAChB,qBAAqB;CACtB,CAAC,CAAC;AAEH,yFAAyF;AACzF,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { MISSING } from "./request-mapping-body.js";
|
|
2
|
+
import type * as Schemas from "./request-mapping-body.schemas.js";
|
|
3
|
+
/** Contract for missing used by request mapping body. */
|
|
4
|
+
export type Missing = typeof MISSING;
|
|
5
|
+
/** Contract for body issue code used by request mapping body. */
|
|
6
|
+
export type BodyIssueCode = typeof Schemas.BodyIssueCode.Type;
|
|
7
|
+
/** Contract for body issue used by request mapping body. */
|
|
8
|
+
export type BodyIssue = typeof Schemas.BodyIssue.Type;
|
|
9
|
+
/** Contract for form data like used by request mapping body. */
|
|
10
|
+
export interface FormDataLike {
|
|
11
|
+
readonly getAll: (name: string) => readonly unknown[];
|
|
12
|
+
}
|
|
13
|
+
/** Contract for body value used by request mapping body.
|
|
14
|
+
* @typeParam T - Value type retained by this operation.
|
|
15
|
+
*/
|
|
16
|
+
export interface BodyValue<T> {
|
|
17
|
+
readonly value: T | Missing;
|
|
18
|
+
readonly issue?: BodyIssue;
|
|
19
|
+
}
|
|
20
|
+
/** State owned by request mapping body. */
|
|
21
|
+
export interface BodyState {
|
|
22
|
+
readonly request: Request;
|
|
23
|
+
readonly maxBodyBytes: number;
|
|
24
|
+
body?: Promise<{
|
|
25
|
+
readonly bytes?: Uint8Array;
|
|
26
|
+
readonly issue?: BodyIssue;
|
|
27
|
+
}>;
|
|
28
|
+
json?: Promise<BodyValue<unknown>>;
|
|
29
|
+
form?: Promise<BodyValue<FormDataLike>>;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=request-mapping-body.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-mapping-body.types.d.ts","sourceRoot":"","sources":["../src/request-mapping-body.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,KAAK,OAAO,MAAM,mCAAmC,CAAC;AAElE,yDAAyD;AACzD,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC;AAErC,iEAAiE;AACjE,MAAM,MAAM,aAAa,GAAG,OAAO,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC;AAE9D,4DAA4D;AAC5D,MAAM,MAAM,SAAS,GAAG,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;AAEtD,gEAAgE;AAChE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,OAAO,EAAE,CAAC;CACvD;AAED;;GAEG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;CAC5B;AAED,2CAA2C;AAC3C,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;QAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;QAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IAC5E,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;CACzC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-mapping-body.types.js","sourceRoot":"","sources":["../src/request-mapping-body.types.ts"],"names":[],"mappings":""}
|
|
@@ -1,8 +1,25 @@
|
|
|
1
1
|
import { type Missing } from "./request-mapping-body.js";
|
|
2
2
|
import type { MappingState } from "./request-mapping-object.js";
|
|
3
3
|
import type { RequestIssueCode, RequestMappingFailure } from "./request-mapping.js";
|
|
4
|
+
/** Read one JSON field, preferring middleware-validated input.
|
|
5
|
+
* @param name - Field, job or stream name.
|
|
6
|
+
* @param state - Shared body parsing, validation and issue state.
|
|
7
|
+
* @param path - Request path or issue location.
|
|
8
|
+
* @returns The own field value or the missing-value sentinel.
|
|
9
|
+
*/
|
|
4
10
|
export declare function bodyField(name: string, state: MappingState, path: readonly (string | number)[]): Promise<unknown | Missing>;
|
|
11
|
+
/** Read validated JSON or parse the request body once and record errors.
|
|
12
|
+
* @param state - Shared body parsing, validation and issue state.
|
|
13
|
+
* @param path - Request path or issue location.
|
|
14
|
+
* @returns The parsed value or the missing-value sentinel.
|
|
15
|
+
*/
|
|
5
16
|
export declare function jsonValue(state: MappingState, path: readonly (string | number)[]): Promise<unknown | Missing>;
|
|
17
|
+
/** Look up an own field in a middleware-validated request source.
|
|
18
|
+
* @param state - Shared body parsing, validation and issue state.
|
|
19
|
+
* @param target - Target descriptor or validated request source.
|
|
20
|
+
* @param name - Field, job or stream name.
|
|
21
|
+
* @returns A found flag and the validated value when present.
|
|
22
|
+
*/
|
|
6
23
|
export declare function validatedSource(state: MappingState, target: string, name: string): {
|
|
7
24
|
found: boolean;
|
|
8
25
|
value: unknown;
|
|
@@ -10,7 +27,25 @@ export declare function validatedSource(state: MappingState, target: string, nam
|
|
|
10
27
|
found: boolean;
|
|
11
28
|
value?: never;
|
|
12
29
|
};
|
|
30
|
+
/** Read validated or parsed multipart values and report duplicate scalars.
|
|
31
|
+
* @param name - Multipart field name to read.
|
|
32
|
+
* @param state - Shared body parsing, validation and issue state.
|
|
33
|
+
* @param path - Request path or issue location.
|
|
34
|
+
* @param all - Whether repeated multipart values are accepted.
|
|
35
|
+
* @returns One field, all field values, or the missing-value sentinel.
|
|
36
|
+
*/
|
|
13
37
|
export declare function formField(name: string, state: MappingState, path: readonly (string | number)[], all: boolean): Promise<unknown | Missing>;
|
|
38
|
+
/** Freeze accumulated request mapping issues for the public failure result.
|
|
39
|
+
* @param state - Shared body parsing, validation and issue state.
|
|
40
|
+
* @returns An immutable failed mapping result.
|
|
41
|
+
*/
|
|
14
42
|
export declare function mappingFailure(state: MappingState): RequestMappingFailure;
|
|
43
|
+
/** Record one mapping issue, deduplicating by code, path and message.
|
|
44
|
+
* @param state - Shared body parsing, validation and issue state.
|
|
45
|
+
* @param code - Stable public error or mapping issue code.
|
|
46
|
+
* @param message - Public diagnostic message or browser message.
|
|
47
|
+
* @param path - Request path or issue location.
|
|
48
|
+
* @returns Nothing; appends a frozen issue only once.
|
|
49
|
+
*/
|
|
15
50
|
export declare function addMappingIssue(state: MappingState, code: RequestIssueCode, message: string, path: readonly (string | number)[]): void;
|
|
16
51
|
//# sourceMappingURL=request-mapping-fields.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-mapping-fields.d.ts","sourceRoot":"","sources":["../src/request-mapping-fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAEpF,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GACjC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,CAK5B;AAED,wBAAsB,SAAS,CAC7B,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GACjC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,CAO5B;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;;;;EAKhF;AAED,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAClC,GAAG,EAAE,OAAO,GACX,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,CAgB5B;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,qBAAqB,CAEzE;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GACjC,IAAI,CAKN"}
|
|
1
|
+
{"version":3,"file":"request-mapping-fields.d.ts","sourceRoot":"","sources":["../src/request-mapping-fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAEpF;;;;;GAKG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GACjC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,CAK5B;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAC7B,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GACjC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,CAO5B;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;;;;EAKhF;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAClC,GAAG,EAAE,OAAO,GACX,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,CAgB5B;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,qBAAqB,CAEzE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GACjC,IAAI,CAKN"}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { MISSING, parseForm, parseJson } from "./request-mapping-body.js";
|
|
2
|
+
/** Read one JSON field, preferring middleware-validated input.
|
|
3
|
+
* @param name - Field, job or stream name.
|
|
4
|
+
* @param state - Shared body parsing, validation and issue state.
|
|
5
|
+
* @param path - Request path or issue location.
|
|
6
|
+
* @returns The own field value or the missing-value sentinel.
|
|
7
|
+
*/
|
|
2
8
|
export async function bodyField(name, state, path) {
|
|
3
9
|
const validated = validatedTarget(state, "json");
|
|
4
10
|
if (isRecord(validated) && Object.hasOwn(validated, name))
|
|
@@ -6,6 +12,11 @@ export async function bodyField(name, state, path) {
|
|
|
6
12
|
const value = await jsonValue(state, path);
|
|
7
13
|
return value !== MISSING && isRecord(value) && Object.hasOwn(value, name) ? value[name] : MISSING;
|
|
8
14
|
}
|
|
15
|
+
/** Read validated JSON or parse the request body once and record errors.
|
|
16
|
+
* @param state - Shared body parsing, validation and issue state.
|
|
17
|
+
* @param path - Request path or issue location.
|
|
18
|
+
* @returns The parsed value or the missing-value sentinel.
|
|
19
|
+
*/
|
|
9
20
|
export async function jsonValue(state, path) {
|
|
10
21
|
const validated = validatedTarget(state, "json");
|
|
11
22
|
if (validated !== undefined)
|
|
@@ -15,12 +26,25 @@ export async function jsonValue(state, path) {
|
|
|
15
26
|
addMappingIssue(state, result.issue.code, result.issue.message, path);
|
|
16
27
|
return result.value;
|
|
17
28
|
}
|
|
29
|
+
/** Look up an own field in a middleware-validated request source.
|
|
30
|
+
* @param state - Shared body parsing, validation and issue state.
|
|
31
|
+
* @param target - Target descriptor or validated request source.
|
|
32
|
+
* @param name - Field, job or stream name.
|
|
33
|
+
* @returns A found flag and the validated value when present.
|
|
34
|
+
*/
|
|
18
35
|
export function validatedSource(state, target, name) {
|
|
19
36
|
const validated = validatedTarget(state, target);
|
|
20
37
|
return isRecord(validated) && Object.hasOwn(validated, name)
|
|
21
38
|
? { found: true, value: validated[name] }
|
|
22
39
|
: { found: false };
|
|
23
40
|
}
|
|
41
|
+
/** Read validated or parsed multipart values and report duplicate scalars.
|
|
42
|
+
* @param name - Multipart field name to read.
|
|
43
|
+
* @param state - Shared body parsing, validation and issue state.
|
|
44
|
+
* @param path - Request path or issue location.
|
|
45
|
+
* @param all - Whether repeated multipart values are accepted.
|
|
46
|
+
* @returns One field, all field values, or the missing-value sentinel.
|
|
47
|
+
*/
|
|
24
48
|
export async function formField(name, state, path, all) {
|
|
25
49
|
const validated = validatedTarget(state, "form");
|
|
26
50
|
if (isRecord(validated) && Object.hasOwn(validated, name))
|
|
@@ -41,9 +65,20 @@ export async function formField(name, state, path, all) {
|
|
|
41
65
|
addMappingIssue(state, "duplicate", `Duplicate multipart field "${name}"`, path);
|
|
42
66
|
return values.length === 1 ? values[0] : MISSING;
|
|
43
67
|
}
|
|
68
|
+
/** Freeze accumulated request mapping issues for the public failure result.
|
|
69
|
+
* @param state - Shared body parsing, validation and issue state.
|
|
70
|
+
* @returns An immutable failed mapping result.
|
|
71
|
+
*/
|
|
44
72
|
export function mappingFailure(state) {
|
|
45
73
|
return { ok: false, issues: Object.freeze(state.issues.map((item) => Object.freeze(item))) };
|
|
46
74
|
}
|
|
75
|
+
/** Record one mapping issue, deduplicating by code, path and message.
|
|
76
|
+
* @param state - Shared body parsing, validation and issue state.
|
|
77
|
+
* @param code - Stable public error or mapping issue code.
|
|
78
|
+
* @param message - Public diagnostic message or browser message.
|
|
79
|
+
* @param path - Request path or issue location.
|
|
80
|
+
* @returns Nothing; appends a frozen issue only once.
|
|
81
|
+
*/
|
|
47
82
|
export function addMappingIssue(state, code, message, path) {
|
|
48
83
|
const key = `${code}:${path.join(".")}:${message}`;
|
|
49
84
|
if (state.reported.has(key))
|
|
@@ -51,12 +86,25 @@ export function addMappingIssue(state, code, message, path) {
|
|
|
51
86
|
state.reported.add(key);
|
|
52
87
|
state.issues.push(Object.freeze({ code, message, path: Object.freeze([...path]) }));
|
|
53
88
|
}
|
|
89
|
+
/** Retrieve the middleware-validated value for a request source.
|
|
90
|
+
* @param state - Shared body parsing, validation and issue state.
|
|
91
|
+
* @param target - Target descriptor or validated request source.
|
|
92
|
+
* @returns The source value, or undefined if no validation result exists.
|
|
93
|
+
*/
|
|
54
94
|
function validatedTarget(state, target) {
|
|
55
95
|
return state.request.validated?.[target];
|
|
56
96
|
}
|
|
97
|
+
/** Check whether a value is a non-null object suitable for field inspection.
|
|
98
|
+
* @param value - Value to validate or project.
|
|
99
|
+
* @returns Whether object fields can be inspected.
|
|
100
|
+
*/
|
|
57
101
|
function isRecord(value) {
|
|
58
102
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
59
103
|
}
|
|
104
|
+
/** Recognize a validated form source supporting getAll.
|
|
105
|
+
* @param value - Value to validate or project.
|
|
106
|
+
* @returns Whether all values for a field can be read.
|
|
107
|
+
*/
|
|
60
108
|
function isFormDataLike(value) {
|
|
61
109
|
return isRecord(value) && typeof value.getAll === "function";
|
|
62
110
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-mapping-fields.js","sourceRoot":"","sources":["../src/request-mapping-fields.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"request-mapping-fields.js","sourceRoot":"","sources":["../src/request-mapping-fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAgB,MAAM,2BAA2B,CAAC;AAIxF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAY,EACZ,KAAmB,EACnB,IAAkC;IAElC,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjD,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IAClF,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3C,OAAO,KAAK,KAAK,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AACpG,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,KAAmB,EACnB,IAAkC;IAElC,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjD,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;QAC5B,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACxE,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,KAAmB,EAAE,MAAc,EAAE,IAAY;IAC/E,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjD,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC;QAC1D,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE;QACzC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACvB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAY,EACZ,KAAmB,EACnB,IAAkC,EAClC,GAAY;IAEZ,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjD,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IAClF,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC;IACjF,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;QAC5B,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACxE,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,GAAG;QAAE,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAC3E,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QACnB,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,8BAA8B,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC;IACnF,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AACnD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAmB;IAChD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/F,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAmB,EACnB,IAAsB,EACtB,OAAe,EACf,IAAkC;IAElC,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC;IACnD,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO;IACpC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtF,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,KAAmB,EAAE,MAAc;IAC1D,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC;AAC/D,CAAC"}
|
|
@@ -1,14 +1,24 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { MISSING } from "./request-mapping-body.js";
|
|
3
|
+
import type { EffectVisit, MappingState, Path, Visit } from "./request-mapping-object.types.js";
|
|
4
|
+
import type { RequestIssueCode } from "./request-mapping.js";
|
|
5
|
+
export type { MappingState } from "./request-mapping-object.types.js";
|
|
6
|
+
/** Maps object fields sequentially and preserves accumulated validation issues.
|
|
7
|
+
* @param fields - Serialized object-mapping fields evaluated in declaration order.
|
|
8
|
+
* @param state - State owned by the current request or operation.
|
|
9
|
+
* @param path - Ordered validation path or confined resource path.
|
|
10
|
+
* @param visit - Recursive visitor used to evaluate each mapping node.
|
|
11
|
+
* @param report - Issue callback retaining validation paths and public messages.
|
|
12
|
+
* @returns An Effect yielding mapped fields, or MISSING when the field declaration is invalid.
|
|
13
|
+
*/
|
|
14
|
+
export declare const mapObjectEffect: (fields: unknown, state: MappingState, path: Path, visit: EffectVisit, report: (code: RequestIssueCode, message: string, path: Path) => void) => Effect.Effect<Record<string, unknown> | typeof MISSING, import("./http-effect.js").HttpBoundaryError, never>;
|
|
15
|
+
/** Promise compatibility edge for custom mapping visitors.
|
|
16
|
+
* @param fields - Serialized object-mapping fields evaluated in declaration order.
|
|
17
|
+
* @param state - State owned by the current request or operation.
|
|
18
|
+
* @param path - Ordered validation path or confined resource path.
|
|
19
|
+
* @param visit - Recursive visitor used to evaluate each mapping node.
|
|
20
|
+
* @param report - Issue callback retaining validation paths and public messages.
|
|
21
|
+
* @returns The mapped object or MISSING, with validation issues retained in the supplied state.
|
|
22
|
+
*/
|
|
12
23
|
export declare function mapObject(fields: unknown, state: MappingState, path: Path, visit: Visit, report: (code: RequestIssueCode, message: string, path: Path) => void): Promise<unknown>;
|
|
13
|
-
export {};
|
|
14
24
|
//# sourceMappingURL=request-mapping-object.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-mapping-object.d.ts","sourceRoot":"","sources":["../src/request-mapping-object.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"request-mapping-object.d.ts","sourceRoot":"","sources":["../src/request-mapping-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAChG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,YAAY,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEtE;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,wFAKX,gBAAgB,WAAW,MAAM,QAAQ,IAAI,KAAK,IAAI,iHAqBrE,CAAC;AAEH;;;;;;;GAOG;AACH,wBAAgB,SAAS,CACvB,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,GACpE,OAAO,CAAC,OAAO,CAAC,CAUlB"}
|
|
@@ -1,25 +1,55 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { httpBoundary, runHttp } from "./http-effect.js";
|
|
1
3
|
import { MISSING } from "./request-mapping-body.js";
|
|
2
|
-
|
|
4
|
+
/** Maps object fields sequentially and preserves accumulated validation issues.
|
|
5
|
+
* @param fields - Serialized object-mapping fields evaluated in declaration order.
|
|
6
|
+
* @param state - State owned by the current request or operation.
|
|
7
|
+
* @param path - Ordered validation path or confined resource path.
|
|
8
|
+
* @param visit - Recursive visitor used to evaluate each mapping node.
|
|
9
|
+
* @param report - Issue callback retaining validation paths and public messages.
|
|
10
|
+
* @returns An Effect yielding mapped fields, or MISSING when the field declaration is invalid.
|
|
11
|
+
*/
|
|
12
|
+
export const mapObjectEffect = Effect.fn("RequestMapping.object")(function* (fields, state, path, visit, report) {
|
|
3
13
|
if (!isRecord(fields)) {
|
|
4
14
|
report("mapping", "Mapping fields must be an object", path);
|
|
5
15
|
return MISSING;
|
|
6
16
|
}
|
|
7
17
|
const result = {};
|
|
8
|
-
|
|
18
|
+
yield* Effect.forEach(Object.entries(fields), ([name, node]) => Effect.gen(function* () {
|
|
9
19
|
const valuePath = [...path, name];
|
|
10
|
-
const value =
|
|
20
|
+
const value = yield* visit(node, state, valuePath);
|
|
11
21
|
if (value === MISSING) {
|
|
12
22
|
if (!state.issues.some((issue) => samePath(issue.path, valuePath)))
|
|
13
23
|
report("missing", `Missing request value "${name}"`, valuePath);
|
|
14
24
|
}
|
|
15
25
|
else
|
|
16
26
|
result[name] = value;
|
|
17
|
-
}
|
|
27
|
+
}), { discard: true });
|
|
18
28
|
return result;
|
|
29
|
+
});
|
|
30
|
+
/** Promise compatibility edge for custom mapping visitors.
|
|
31
|
+
* @param fields - Serialized object-mapping fields evaluated in declaration order.
|
|
32
|
+
* @param state - State owned by the current request or operation.
|
|
33
|
+
* @param path - Ordered validation path or confined resource path.
|
|
34
|
+
* @param visit - Recursive visitor used to evaluate each mapping node.
|
|
35
|
+
* @param report - Issue callback retaining validation paths and public messages.
|
|
36
|
+
* @returns The mapped object or MISSING, with validation issues retained in the supplied state.
|
|
37
|
+
*/
|
|
38
|
+
export function mapObject(fields, state, path, visit, report) {
|
|
39
|
+
return runHttp(mapObjectEffect(fields, state, path, (...args) => httpBoundary("request.mapping.visit", () => visit(...args)), report));
|
|
19
40
|
}
|
|
41
|
+
/** Compares validation issue paths by their ordered segments.
|
|
42
|
+
* @param left - First value or path participating in the comparison.
|
|
43
|
+
* @param right - Second value or path participating in the comparison.
|
|
44
|
+
* @returns Whether the value satisfies the required public contract.
|
|
45
|
+
*/
|
|
20
46
|
function samePath(left, right) {
|
|
21
47
|
return left.length === right.length && left.every((value, index) => value === right[index]);
|
|
22
48
|
}
|
|
49
|
+
/** Recognizes a non-null object before reading its named properties.
|
|
50
|
+
* @param value - Value inspected, validated or projected by this operation.
|
|
51
|
+
* @returns Whether the inspected value satisfies the declared type guard.
|
|
52
|
+
*/
|
|
23
53
|
function isRecord(value) {
|
|
24
54
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
25
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-mapping-object.js","sourceRoot":"","sources":["../src/request-mapping-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"request-mapping-object.js","sourceRoot":"","sources":["../src/request-mapping-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAKpD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,QAAQ,CAAC,EACzE,MAAe,EACf,KAAmB,EACnB,IAAU,EACV,KAAkB,EAClB,MAAqE;IAErE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,MAAM,CAAC,SAAS,EAAE,kCAAkC,EAAE,IAAI,CAAC,CAAC;QAC5D,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CACnB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EACtB,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CACf,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QACnD,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBAChE,MAAM,CAAC,SAAS,EAAE,0BAA0B,IAAI,GAAG,EAAE,SAAS,CAAC,CAAC;QACpE,CAAC;;YAAM,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IAC9B,CAAC,CAAC,EACJ,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CACvB,MAAe,EACf,KAAmB,EACnB,IAAU,EACV,KAAY,EACZ,MAAqE;IAErE,OAAO,OAAO,CACZ,eAAe,CACb,MAAM,EACN,KAAK,EACL,IAAI,EACJ,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,EACxE,MAAM,CACP,CACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,QAAQ,CAAC,IAAU,EAAE,KAAW;IACvC,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9F,CAAC;AACD;;;GAGG;AACH,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { BodyState, Missing } from "./request-mapping-body.js";
|
|
2
|
+
import type { MappingRequest, RequestMappingIssue, RequestMappingOptions } from "./request-mapping.js";
|
|
3
|
+
import type { Effect } from "effect";
|
|
4
|
+
import type { HttpBoundaryError } from "./http-effect.js";
|
|
5
|
+
/** State owned by request mapping object. */
|
|
6
|
+
export interface MappingState {
|
|
7
|
+
readonly request: MappingRequest;
|
|
8
|
+
readonly body: BodyState;
|
|
9
|
+
readonly options: RequestMappingOptions;
|
|
10
|
+
readonly issues: RequestMappingIssue[];
|
|
11
|
+
readonly reported: Set<string>;
|
|
12
|
+
}
|
|
13
|
+
/** Contract for path used by request mapping object. */
|
|
14
|
+
export type Path = readonly (string | number)[];
|
|
15
|
+
/** Contract for visit used by request mapping object. */
|
|
16
|
+
export type Visit = (node: unknown, state: MappingState, path: Path) => Promise<unknown | Missing>;
|
|
17
|
+
/** Lazy recursive mapping visitor; fields are evaluated sequentially against shared issues. */
|
|
18
|
+
export type EffectVisit = (node: unknown, state: MappingState, path: Path) => Effect.Effect<unknown | Missing, HttpBoundaryError>;
|
|
19
|
+
//# sourceMappingURL=request-mapping-object.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-mapping-object.types.d.ts","sourceRoot":"","sources":["../src/request-mapping-object.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,6CAA6C;AAC7C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAChC;AAED,wDAAwD;AACxD,MAAM,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;AAEhD,yDAAyD;AACzD,MAAM,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC;AAEnG,+FAA+F;AAC/F,MAAM,MAAM,WAAW,GAAG,CACxB,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,IAAI,KACP,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,OAAO,EAAE,iBAAiB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-mapping-object.types.js","sourceRoot":"","sources":["../src/request-mapping-object.types.ts"],"names":[],"mappings":""}
|
|
@@ -1,7 +1,34 @@
|
|
|
1
|
-
import type { MappingValue, RequestIssueCode } from "./request-mapping.js";
|
|
2
1
|
import { type Missing } from "./request-mapping-body.js";
|
|
2
|
+
import type { MappingValue, RequestIssueCode } from "./request-mapping.js";
|
|
3
|
+
/** Read a request header using case-insensitive field names.
|
|
4
|
+
* @param headers - Response or request header values.
|
|
5
|
+
* @param name - Field, job or stream name.
|
|
6
|
+
* @returns The first matching header value, or undefined.
|
|
7
|
+
*/
|
|
3
8
|
export declare function readHeader(headers: Readonly<Record<string, MappingValue>>, name: string): MappingValue | undefined;
|
|
9
|
+
/** Read a single request value and reject repeated values.
|
|
10
|
+
* @param value - Value to validate or project.
|
|
11
|
+
* @param source - Fixed data or a callback producing the data.
|
|
12
|
+
* @param path - Request path or issue location.
|
|
13
|
+
* @param report - Callback recording a request mapping issue.
|
|
14
|
+
* @returns The scalar value or the missing-value sentinel.
|
|
15
|
+
*/
|
|
4
16
|
export declare function readScalar(value: MappingValue | undefined, source: string, path: readonly (string | number)[], report: (code: RequestIssueCode, message: string, path: readonly (string | number)[]) => void): unknown | Missing;
|
|
17
|
+
/** Decode the route's named catch-all path segments.
|
|
18
|
+
* @param url - Absolute request URL.
|
|
19
|
+
* @param pattern - Declared route path pattern.
|
|
20
|
+
* @param name - Field, job or stream name.
|
|
21
|
+
* @param path - Request path or issue location.
|
|
22
|
+
* @param report - Callback recording a request mapping issue.
|
|
23
|
+
* @returns Frozen decoded segments, or the missing-value sentinel on absence/error.
|
|
24
|
+
*/
|
|
5
25
|
export declare function readPathSegments(url: string, pattern: string | undefined, name: string, path: readonly (string | number)[], report: (code: RequestIssueCode, message: string, path: readonly (string | number)[]) => void): readonly string[] | Missing;
|
|
26
|
+
/** Read one URI-decoded cookie and report duplicates or invalid escapes.
|
|
27
|
+
* @param name - Field, job or stream name.
|
|
28
|
+
* @param headers - Response or request header values.
|
|
29
|
+
* @param path - Request path or issue location.
|
|
30
|
+
* @param report - Callback recording a request mapping issue.
|
|
31
|
+
* @returns The cookie value or the missing-value sentinel.
|
|
32
|
+
*/
|
|
6
33
|
export declare function readCookie(name: string, headers: Readonly<Record<string, MappingValue>>, path: readonly (string | number)[], report: (code: RequestIssueCode, message: string, path: readonly (string | number)[]) => void): unknown | Missing;
|
|
7
34
|
//# sourceMappingURL=request-mapping-sources.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-mapping-sources.d.ts","sourceRoot":"","sources":["../src/request-mapping-sources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"request-mapping-sources.d.ts","sourceRoot":"","sources":["../src/request-mapping-sources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE3E;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,EAC/C,IAAI,EAAE,MAAM,GACX,YAAY,GAAG,SAAS,CAK1B;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,YAAY,GAAG,SAAS,EAC/B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAClC,MAAM,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,KAAK,IAAI,GAC5F,OAAO,GAAG,OAAO,CAOnB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAClC,MAAM,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,KAAK,IAAI,GAC5F,SAAS,MAAM,EAAE,GAAG,OAAO,CAgB7B;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,EAC/C,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAClC,MAAM,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,KAAK,IAAI,GAC5F,OAAO,GAAG,OAAO,CAuBnB"}
|
|
@@ -1,8 +1,20 @@
|
|
|
1
1
|
import { MISSING } from "./request-mapping-body.js";
|
|
2
|
+
/** Read a request header using case-insensitive field names.
|
|
3
|
+
* @param headers - Response or request header values.
|
|
4
|
+
* @param name - Field, job or stream name.
|
|
5
|
+
* @returns The first matching header value, or undefined.
|
|
6
|
+
*/
|
|
2
7
|
export function readHeader(headers, name) {
|
|
3
8
|
const key = Object.keys(headers).find((candidate) => candidate.toLowerCase() === name.toLowerCase());
|
|
4
9
|
return key === undefined ? undefined : headers[key];
|
|
5
10
|
}
|
|
11
|
+
/** Read a single request value and reject repeated values.
|
|
12
|
+
* @param value - Value to validate or project.
|
|
13
|
+
* @param source - Fixed data or a callback producing the data.
|
|
14
|
+
* @param path - Request path or issue location.
|
|
15
|
+
* @param report - Callback recording a request mapping issue.
|
|
16
|
+
* @returns The scalar value or the missing-value sentinel.
|
|
17
|
+
*/
|
|
6
18
|
export function readScalar(value, source, path, report) {
|
|
7
19
|
if (value === undefined)
|
|
8
20
|
return MISSING;
|
|
@@ -13,6 +25,14 @@ export function readScalar(value, source, path, report) {
|
|
|
13
25
|
}
|
|
14
26
|
return value;
|
|
15
27
|
}
|
|
28
|
+
/** Decode the route's named catch-all path segments.
|
|
29
|
+
* @param url - Absolute request URL.
|
|
30
|
+
* @param pattern - Declared route path pattern.
|
|
31
|
+
* @param name - Field, job or stream name.
|
|
32
|
+
* @param path - Request path or issue location.
|
|
33
|
+
* @param report - Callback recording a request mapping issue.
|
|
34
|
+
* @returns Frozen decoded segments, or the missing-value sentinel on absence/error.
|
|
35
|
+
*/
|
|
16
36
|
export function readPathSegments(url, pattern, name, path, report) {
|
|
17
37
|
const token = pattern?.split("/").findIndex((segment) => {
|
|
18
38
|
return segment === `*${name}` || segment === `*${name}?`;
|
|
@@ -32,6 +52,13 @@ export function readPathSegments(url, pattern, name, path, report) {
|
|
|
32
52
|
return MISSING;
|
|
33
53
|
}
|
|
34
54
|
}
|
|
55
|
+
/** Read one URI-decoded cookie and report duplicates or invalid escapes.
|
|
56
|
+
* @param name - Field, job or stream name.
|
|
57
|
+
* @param headers - Response or request header values.
|
|
58
|
+
* @param path - Request path or issue location.
|
|
59
|
+
* @param report - Callback recording a request mapping issue.
|
|
60
|
+
* @returns The cookie value or the missing-value sentinel.
|
|
61
|
+
*/
|
|
35
62
|
export function readCookie(name, headers, path, report) {
|
|
36
63
|
const raw = readHeader(headers, "cookie");
|
|
37
64
|
if (raw === undefined)
|