@lostgradient/weft 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +493 -0
- package/dist/alerting/alert-manager.d.ts +42 -0
- package/dist/alerting/alert-manager.js +167 -0
- package/dist/alerting/index.d.ts +2 -0
- package/dist/alerting/index.js +1 -0
- package/dist/alerting/sliding-window.d.ts +26 -0
- package/dist/alerting/sliding-window.js +97 -0
- package/dist/alerting/types.d.ts +157 -0
- package/dist/alerting/types.js +0 -0
- package/dist/cli/api-arguments.d.ts +2 -0
- package/dist/cli/api-arguments.js +48 -0
- package/dist/cli/api.d.ts +13 -0
- package/dist/cli/api.js +191 -0
- package/dist/cli/codegen-arguments.d.ts +10 -0
- package/dist/cli/codegen-arguments.js +50 -0
- package/dist/cli/codegen-emit-keywords.d.ts +28 -0
- package/dist/cli/codegen-emit-keywords.js +48 -0
- package/dist/cli/codegen-emit.d.ts +50 -0
- package/dist/cli/codegen-emit.js +280 -0
- package/dist/cli/codegen.d.ts +38 -0
- package/dist/cli/codegen.js +268 -0
- package/dist/cli/command-suggestions.d.ts +9 -0
- package/dist/cli/command-suggestions.js +27 -0
- package/dist/cli/completions.d.ts +17 -0
- package/dist/cli/completions.js +112 -0
- package/dist/cli/conformance.d.ts +9 -0
- package/dist/cli/conformance.js +226 -0
- package/dist/cli/doctor.d.ts +6 -0
- package/dist/cli/doctor.js +9 -0
- package/dist/cli/generated/operation-client.generated.d.ts +605 -0
- package/dist/cli/generated/operation-client.generated.js +60 -0
- package/dist/cli/help-text.d.ts +13 -0
- package/dist/cli/help-text.js +269 -0
- package/dist/cli/index.d.ts +23 -0
- package/dist/cli/index.js +34 -0
- package/dist/cli/json-rpc-client.d.ts +15 -0
- package/dist/cli/json-rpc-client.js +37 -0
- package/dist/cli/noun-verb-arguments.d.ts +15 -0
- package/dist/cli/noun-verb-arguments.js +190 -0
- package/dist/cli/operation-catalog-snapshot.d.ts +38 -0
- package/dist/cli/operation-catalog-snapshot.js +48 -0
- package/dist/cli/operation-client-runtime.d.ts +47 -0
- package/dist/cli/operation-client-runtime.js +33 -0
- package/dist/cli/output.d.ts +66 -0
- package/dist/cli/output.js +83 -0
- package/dist/cli/parse-arguments.d.ts +3 -0
- package/dist/cli/parse-arguments.js +214 -0
- package/dist/cli/parse-schedule-arguments.d.ts +9 -0
- package/dist/cli/parse-schedule-arguments.js +132 -0
- package/dist/cli/schedule.d.ts +3 -0
- package/dist/cli/schedule.js +128 -0
- package/dist/cli/serve-registrations.d.ts +15 -0
- package/dist/cli/serve-registrations.js +23 -0
- package/dist/cli/server-client.d.ts +45 -0
- package/dist/cli/server-client.js +33 -0
- package/dist/cli/server-commands.d.ts +19 -0
- package/dist/cli/server-commands.js +151 -0
- package/dist/cli/storage-backend-arguments.d.ts +15 -0
- package/dist/cli/storage-backend-arguments.js +16 -0
- package/dist/cli/storage-factory.d.ts +8 -0
- package/dist/cli/storage-factory.js +18 -0
- package/dist/cli/subcommand-detection.d.ts +2 -0
- package/dist/cli/subcommand-detection.js +38 -0
- package/dist/cli/tail.d.ts +50 -0
- package/dist/cli/tail.js +161 -0
- package/dist/cli/timeline.d.ts +9 -0
- package/dist/cli/timeline.js +78 -0
- package/dist/cli/types.d.ts +224 -0
- package/dist/cli/types.js +0 -0
- package/dist/cli/utilities.d.ts +9 -0
- package/dist/cli/utilities.js +120 -0
- package/dist/cli/validate.d.ts +6 -0
- package/dist/cli/validate.js +70 -0
- package/dist/cli/version-check.d.ts +7 -0
- package/dist/cli/version-check.js +16 -0
- package/dist/cli/version.d.ts +7 -0
- package/dist/cli/version.js +4 -0
- package/dist/cli/workflow-commands.d.ts +15 -0
- package/dist/cli/workflow-commands.js +195 -0
- package/dist/cli-main.d.ts +2 -0
- package/dist/cli-main.js +402 -0
- package/dist/client/event-stream-transport.d.ts +73 -0
- package/dist/client/event-stream-transport.js +59 -0
- package/dist/client/event-stream.d.ts +90 -0
- package/dist/client/event-stream.js +221 -0
- package/dist/client/event-tail.d.ts +50 -0
- package/dist/client/event-tail.js +0 -0
- package/dist/client/handle-delegation.d.ts +73 -0
- package/dist/client/handle-delegation.js +66 -0
- package/dist/client/http-client-requests.d.ts +65 -0
- package/dist/client/http-client-requests.js +178 -0
- package/dist/client/http-client.d.ts +130 -0
- package/dist/client/http-client.js +217 -0
- package/dist/client/http-handle.d.ts +27 -0
- package/dist/client/http-handle.js +43 -0
- package/dist/client/http-operations.d.ts +29 -0
- package/dist/client/http-operations.js +36 -0
- package/dist/client/http-request.d.ts +101 -0
- package/dist/client/http-request.js +73 -0
- package/dist/client/http-schedule-handle.d.ts +5 -0
- package/dist/client/http-schedule-handle.js +5 -0
- package/dist/client/in-process-operations.d.ts +30 -0
- package/dist/client/in-process-operations.js +17 -0
- package/dist/client/index.d.ts +15 -0
- package/dist/client/index.js +2 -0
- package/dist/client/interface.d.ts +333 -0
- package/dist/client/interface.js +0 -0
- package/dist/client/local-event-tail.d.ts +30 -0
- package/dist/client/local-event-tail.js +131 -0
- package/dist/client/local.d.ts +115 -0
- package/dist/client/local.js +178 -0
- package/dist/client/open-event-subscription.d.ts +33 -0
- package/dist/client/open-event-subscription.js +5 -0
- package/dist/client/schedule-list-search-params.d.ts +3 -0
- package/dist/client/schedule-list-search-params.js +18 -0
- package/dist/client/search-params.d.ts +3 -0
- package/dist/client/search-params.js +54 -0
- package/dist/client/start-body.d.ts +9 -0
- package/dist/client/start-body.js +23 -0
- package/dist/client/workflow-name-typing.d.ts +33 -0
- package/dist/client/workflow-name-typing.js +0 -0
- package/dist/connection.d.ts +121 -0
- package/dist/connection.js +161 -0
- package/dist/core/activity-registry.d.ts +135 -0
- package/dist/core/activity-registry.js +174 -0
- package/dist/core/activity.d.ts +2 -0
- package/dist/core/activity.js +1 -0
- package/dist/core/aggregate-validation.d.ts +85 -0
- package/dist/core/aggregate-validation.js +48 -0
- package/dist/core/atomic-state-events.d.ts +214 -0
- package/dist/core/atomic-state-events.js +39 -0
- package/dist/core/atomic-state.d.ts +79 -0
- package/dist/core/atomic-state.js +231 -0
- package/dist/core/bulk-workflow-filter.d.ts +23 -0
- package/dist/core/bulk-workflow-filter.js +38 -0
- package/dist/core/checkpoint/comparison.d.ts +2 -0
- package/dist/core/checkpoint/comparison.js +137 -0
- package/dist/core/checkpoint/index.d.ts +4 -0
- package/dist/core/checkpoint/index.js +3 -0
- package/dist/core/checkpoint/interfaces.d.ts +11 -0
- package/dist/core/checkpoint/interfaces.js +0 -0
- package/dist/core/checkpoint/lifecycle.d.ts +49 -0
- package/dist/core/checkpoint/lifecycle.js +36 -0
- package/dist/core/checkpoint/serialization.d.ts +31 -0
- package/dist/core/checkpoint/serialization.js +155 -0
- package/dist/core/checkpoint/validation.d.ts +4 -0
- package/dist/core/checkpoint/validation.js +26 -0
- package/dist/core/checkpoint.d.ts +1 -0
- package/dist/core/checkpoint.js +1 -0
- package/dist/core/codec/api.d.ts +32 -0
- package/dist/core/codec/api.js +9 -0
- package/dist/core/codec/extension-codec.d.ts +7 -0
- package/dist/core/codec/extension-codec.js +145 -0
- package/dist/core/codec/index.d.ts +3 -0
- package/dist/core/codec/index.js +2 -0
- package/dist/core/codec/validation.d.ts +28 -0
- package/dist/core/codec/validation.js +139 -0
- package/dist/core/codec-helpers.d.ts +8 -0
- package/dist/core/codec-helpers.js +19 -0
- package/dist/core/codec.d.ts +1 -0
- package/dist/core/codec.js +1 -0
- package/dist/core/compression.d.ts +127 -0
- package/dist/core/compression.js +88 -0
- package/dist/core/concurrency-lock-record.d.ts +122 -0
- package/dist/core/concurrency-lock-record.js +53 -0
- package/dist/core/concurrency.d.ts +221 -0
- package/dist/core/concurrency.js +93 -0
- package/dist/core/constraint.d.ts +144 -0
- package/dist/core/constraint.js +3 -0
- package/dist/core/context/attributes.d.ts +7 -0
- package/dist/core/context/attributes.js +29 -0
- package/dist/core/context/child-workflow-pipe.d.ts +18 -0
- package/dist/core/context/child-workflow-pipe.js +111 -0
- package/dist/core/context/durable-operations.d.ts +29 -0
- package/dist/core/context/durable-operations.js +166 -0
- package/dist/core/context/index.d.ts +114 -0
- package/dist/core/context/index.js +224 -0
- package/dist/core/context/internals.d.ts +30 -0
- package/dist/core/context/internals.js +36 -0
- package/dist/core/context/operation-request.d.ts +160 -0
- package/dist/core/context/operation-request.js +0 -0
- package/dist/core/context/parallel-cache-entry.d.ts +91 -0
- package/dist/core/context/parallel-cache-entry.js +92 -0
- package/dist/core/context/parallel-operations.d.ts +9 -0
- package/dist/core/context/parallel-operations.js +202 -0
- package/dist/core/context/run-operation.d.ts +21 -0
- package/dist/core/context/run-operation.js +231 -0
- package/dist/core/context/saga.d.ts +4 -0
- package/dist/core/context/saga.js +65 -0
- package/dist/core/context/session-state.d.ts +22 -0
- package/dist/core/context/session-state.js +154 -0
- package/dist/core/context/speculate-operations.d.ts +4 -0
- package/dist/core/context/speculate-operations.js +14 -0
- package/dist/core/context/speculative-child.d.ts +6 -0
- package/dist/core/context/speculative-child.js +67 -0
- package/dist/core/context/state-namespace.d.ts +27 -0
- package/dist/core/context/state-namespace.js +138 -0
- package/dist/core/context/types.d.ts +181 -0
- package/dist/core/context/types.js +0 -0
- package/dist/core/context/updates.d.ts +46 -0
- package/dist/core/context/updates.js +21 -0
- package/dist/core/context/validation.d.ts +2 -0
- package/dist/core/context/validation.js +12 -0
- package/dist/core/context.d.ts +1 -0
- package/dist/core/context.js +1 -0
- package/dist/core/debug-output.d.ts +3 -0
- package/dist/core/debug-output.js +112 -0
- package/dist/core/effect-log/index.d.ts +194 -0
- package/dist/core/effect-log/index.js +104 -0
- package/dist/core/engine/activity-reconciliation.d.ts +108 -0
- package/dist/core/engine/activity-reconciliation.js +182 -0
- package/dist/core/engine/aggregate.d.ts +47 -0
- package/dist/core/engine/aggregate.js +132 -0
- package/dist/core/engine/anonymous-signal-sequence.d.ts +4 -0
- package/dist/core/engine/anonymous-signal-sequence.js +101 -0
- package/dist/core/engine/async-activity-completion.d.ts +141 -0
- package/dist/core/engine/async-activity-completion.js +131 -0
- package/dist/core/engine/attributes-tags.d.ts +31 -0
- package/dist/core/engine/attributes-tags.js +178 -0
- package/dist/core/engine/broadcast.d.ts +8 -0
- package/dist/core/engine/broadcast.js +26 -0
- package/dist/core/engine/bulk-operations-purge.d.ts +11 -0
- package/dist/core/engine/bulk-operations-purge.js +246 -0
- package/dist/core/engine/bulk-operations-shared.d.ts +28 -0
- package/dist/core/engine/bulk-operations-shared.js +198 -0
- package/dist/core/engine/bulk-operations.d.ts +21 -0
- package/dist/core/engine/bulk-operations.js +128 -0
- package/dist/core/engine/callback-creators-bundles.d.ts +25 -0
- package/dist/core/engine/callback-creators-bundles.js +154 -0
- package/dist/core/engine/callback-creators-core.d.ts +39 -0
- package/dist/core/engine/callback-creators-core.js +136 -0
- package/dist/core/engine/callback-creators-router-registry.d.ts +4 -0
- package/dist/core/engine/callback-creators-router-registry.js +9 -0
- package/dist/core/engine/callback-creators-router.d.ts +3 -0
- package/dist/core/engine/callback-creators-router.js +68 -0
- package/dist/core/engine/callback-creators-schedule.d.ts +13 -0
- package/dist/core/engine/callback-creators-schedule.js +65 -0
- package/dist/core/engine/callback-creators.d.ts +9 -0
- package/dist/core/engine/callback-creators.js +87 -0
- package/dist/core/engine/cancel-handlers.d.ts +6 -0
- package/dist/core/engine/cancel-handlers.js +32 -0
- package/dist/core/engine/checkpoint-commit-snapshots.d.ts +4 -0
- package/dist/core/engine/checkpoint-commit-snapshots.js +16 -0
- package/dist/core/engine/checkpoint-io.d.ts +34 -0
- package/dist/core/engine/checkpoint-io.js +183 -0
- package/dist/core/engine/checkpoint-reads.d.ts +22 -0
- package/dist/core/engine/checkpoint-reads.js +98 -0
- package/dist/core/engine/child-workflow.d.ts +20 -0
- package/dist/core/engine/child-workflow.js +72 -0
- package/dist/core/engine/completed-review-storage.d.ts +14 -0
- package/dist/core/engine/completed-review-storage.js +61 -0
- package/dist/core/engine/constraints.d.ts +24 -0
- package/dist/core/engine/constraints.js +57 -0
- package/dist/core/engine/construction.d.ts +60 -0
- package/dist/core/engine/construction.js +213 -0
- package/dist/core/engine/disposal.d.ts +9 -0
- package/dist/core/engine/disposal.js +58 -0
- package/dist/core/engine/engine-create-types.d.ts +70 -0
- package/dist/core/engine/engine-create-types.js +0 -0
- package/dist/core/engine/engine-internal-types.d.ts +59 -0
- package/dist/core/engine/engine-internal-types.js +0 -0
- package/dist/core/engine/engine-leak-warnings.d.ts +26 -0
- package/dist/core/engine/engine-leak-warnings.js +42 -0
- package/dist/core/engine/engine-runtime-helpers.d.ts +8 -0
- package/dist/core/engine/engine-runtime-helpers.js +52 -0
- package/dist/core/engine/engine-state-namespace.d.ts +20 -0
- package/dist/core/engine/engine-state-namespace.js +0 -0
- package/dist/core/engine/errors.d.ts +215 -0
- package/dist/core/engine/errors.js +90 -0
- package/dist/core/engine/event-log-compaction.d.ts +102 -0
- package/dist/core/engine/event-log-compaction.js +76 -0
- package/dist/core/engine/guards.d.ts +17 -0
- package/dist/core/engine/guards.js +43 -0
- package/dist/core/engine/handle-iteration.d.ts +2 -0
- package/dist/core/engine/handle-iteration.js +59 -0
- package/dist/core/engine/handle-result.d.ts +8 -0
- package/dist/core/engine/handle-result.js +74 -0
- package/dist/core/engine/handles.d.ts +137 -0
- package/dist/core/engine/handles.js +173 -0
- package/dist/core/engine/index.d.ts +311 -0
- package/dist/core/engine/index.js +595 -0
- package/dist/core/engine/inline-launch-queue.d.ts +17 -0
- package/dist/core/engine/inline-launch-queue.js +93 -0
- package/dist/core/engine/inline-parking.d.ts +26 -0
- package/dist/core/engine/inline-parking.js +86 -0
- package/dist/core/engine/internals.d.ts +167 -0
- package/dist/core/engine/internals.js +11 -0
- package/dist/core/engine/lifecycle/fork-helpers.d.ts +9 -0
- package/dist/core/engine/lifecycle/fork-helpers.js +66 -0
- package/dist/core/engine/lifecycle/persist.d.ts +22 -0
- package/dist/core/engine/lifecycle/persist.js +80 -0
- package/dist/core/engine/lifecycle/resume.d.ts +4 -0
- package/dist/core/engine/lifecycle/resume.js +136 -0
- package/dist/core/engine/lifecycle/shared.d.ts +79 -0
- package/dist/core/engine/lifecycle/shared.js +49 -0
- package/dist/core/engine/lifecycle/start-batch.d.ts +7 -0
- package/dist/core/engine/lifecycle/start-batch.js +70 -0
- package/dist/core/engine/lifecycle/start-exec.d.ts +5 -0
- package/dist/core/engine/lifecycle/start-exec.js +39 -0
- package/dist/core/engine/lifecycle/start.d.ts +13 -0
- package/dist/core/engine/lifecycle/start.js +163 -0
- package/dist/core/engine/lifecycle/transition.d.ts +8 -0
- package/dist/core/engine/lifecycle/transition.js +183 -0
- package/dist/core/engine/lifecycle.d.ts +8 -0
- package/dist/core/engine/lifecycle.js +40 -0
- package/dist/core/engine/list-candidate-resolution.d.ts +15 -0
- package/dist/core/engine/list-candidate-resolution.js +88 -0
- package/dist/core/engine/listing.d.ts +17 -0
- package/dist/core/engine/listing.js +186 -0
- package/dist/core/engine/operations-activity.d.ts +40 -0
- package/dist/core/engine/operations-activity.js +194 -0
- package/dist/core/engine/operations-coordination.d.ts +39 -0
- package/dist/core/engine/operations-coordination.js +162 -0
- package/dist/core/engine/operations-data.d.ts +23 -0
- package/dist/core/engine/operations-data.js +38 -0
- package/dist/core/engine/operations-router.d.ts +75 -0
- package/dist/core/engine/operations-router.js +90 -0
- package/dist/core/engine/operations-speculate.d.ts +16 -0
- package/dist/core/engine/operations-speculate.js +40 -0
- package/dist/core/engine/operations-state.d.ts +16 -0
- package/dist/core/engine/operations-state.js +27 -0
- package/dist/core/engine/operations-stream.d.ts +20 -0
- package/dist/core/engine/operations-stream.js +54 -0
- package/dist/core/engine/operations-time.d.ts +28 -0
- package/dist/core/engine/operations-time.js +167 -0
- package/dist/core/engine/parallel-dispatch.d.ts +92 -0
- package/dist/core/engine/parallel-dispatch.js +45 -0
- package/dist/core/engine/pending-updates.d.ts +18 -0
- package/dist/core/engine/pending-updates.js +109 -0
- package/dist/core/engine/persisted-data-version.d.ts +24 -0
- package/dist/core/engine/persisted-data-version.js +25 -0
- package/dist/core/engine/queries.d.ts +3 -0
- package/dist/core/engine/queries.js +17 -0
- package/dist/core/engine/registration.d.ts +6 -0
- package/dist/core/engine/registration.js +107 -0
- package/dist/core/engine/retention.d.ts +15 -0
- package/dist/core/engine/retention.js +76 -0
- package/dist/core/engine/review-list-entries.d.ts +6 -0
- package/dist/core/engine/review-list-entries.js +117 -0
- package/dist/core/engine/reviews.d.ts +34 -0
- package/dist/core/engine/reviews.js +242 -0
- package/dist/core/engine/schedule-occurrence.d.ts +35 -0
- package/dist/core/engine/schedule-occurrence.js +26 -0
- package/dist/core/engine/schedule-timer.d.ts +4 -0
- package/dist/core/engine/schedule-timer.js +77 -0
- package/dist/core/engine/schedules.d.ts +34 -0
- package/dist/core/engine/schedules.js +204 -0
- package/dist/core/engine/signals.d.ts +40 -0
- package/dist/core/engine/signals.js +185 -0
- package/dist/core/engine/speculative-execution-state.d.ts +8 -0
- package/dist/core/engine/speculative-execution-state.js +26 -0
- package/dist/core/engine/state-utilities.d.ts +62 -0
- package/dist/core/engine/state-utilities.js +306 -0
- package/dist/core/engine/storage-io.d.ts +21 -0
- package/dist/core/engine/storage-io.js +82 -0
- package/dist/core/engine/strategy-helpers.d.ts +27 -0
- package/dist/core/engine/strategy-helpers.js +47 -0
- package/dist/core/engine/stream-chunk-loading.d.ts +5 -0
- package/dist/core/engine/stream-chunk-loading.js +22 -0
- package/dist/core/engine/sub-operation.d.ts +24 -0
- package/dist/core/engine/sub-operation.js +78 -0
- package/dist/core/engine/termination/cleanup.d.ts +67 -0
- package/dist/core/engine/termination/cleanup.js +167 -0
- package/dist/core/engine/termination/complete.d.ts +13 -0
- package/dist/core/engine/termination/complete.js +249 -0
- package/dist/core/engine/termination.d.ts +7 -0
- package/dist/core/engine/termination.js +23 -0
- package/dist/core/engine/updates.d.ts +56 -0
- package/dist/core/engine/updates.js +230 -0
- package/dist/core/engine/validation/schedule.d.ts +38 -0
- package/dist/core/engine/validation/schedule.js +258 -0
- package/dist/core/engine/validation.d.ts +40 -0
- package/dist/core/engine/validation.js +144 -0
- package/dist/core/engine/workflow-feed.d.ts +82 -0
- package/dist/core/engine/workflow-feed.js +96 -0
- package/dist/core/engine/workflow-indexes.d.ts +103 -0
- package/dist/core/engine/workflow-indexes.js +93 -0
- package/dist/core/engine/workflow-state-stream.d.ts +9 -0
- package/dist/core/engine/workflow-state-stream.js +126 -0
- package/dist/core/engine/workflow-visibility-queries.d.ts +40 -0
- package/dist/core/engine/workflow-visibility-queries.js +56 -0
- package/dist/core/engine-helpers.d.ts +56 -0
- package/dist/core/engine-helpers.js +52 -0
- package/dist/core/engine.d.ts +1 -0
- package/dist/core/engine.js +1 -0
- package/dist/core/event-log-shared.d.ts +65 -0
- package/dist/core/event-log-shared.js +31 -0
- package/dist/core/event-log-verify.d.ts +51 -0
- package/dist/core/event-log-verify.js +64 -0
- package/dist/core/event-log.d.ts +112 -0
- package/dist/core/event-log.js +81 -0
- package/dist/core/events/activity-events.d.ts +104 -0
- package/dist/core/events/activity-events.js +63 -0
- package/dist/core/events/attribute-events.d.ts +22 -0
- package/dist/core/events/attribute-events.js +10 -0
- package/dist/core/events/event-map.d.ts +80 -0
- package/dist/core/events/event-map.js +0 -0
- package/dist/core/events/index.d.ts +7 -0
- package/dist/core/events/index.js +7 -0
- package/dist/core/events/signal-events.d.ts +45 -0
- package/dist/core/events/signal-events.js +23 -0
- package/dist/core/events/system-events.d.ts +149 -0
- package/dist/core/events/system-events.js +92 -0
- package/dist/core/events/update-events.d.ts +53 -0
- package/dist/core/events/update-events.js +31 -0
- package/dist/core/events/workflow-events.d.ts +198 -0
- package/dist/core/events/workflow-events.js +91 -0
- package/dist/core/events.d.ts +1 -0
- package/dist/core/events.js +1 -0
- package/dist/core/execution-strategy.d.ts +107 -0
- package/dist/core/execution-strategy.js +0 -0
- package/dist/core/failure-categories.d.ts +18 -0
- package/dist/core/failure-categories.js +70 -0
- package/dist/core/fault-code.d.ts +92 -0
- package/dist/core/fault-code.js +21 -0
- package/dist/core/inline-execution-strategy.d.ts +76 -0
- package/dist/core/inline-execution-strategy.js +264 -0
- package/dist/core/interceptor/activity-composition.d.ts +20 -0
- package/dist/core/interceptor/activity-composition.js +17 -0
- package/dist/core/interceptor/index.d.ts +25 -0
- package/dist/core/interceptor/index.js +8 -0
- package/dist/core/interceptor/interception-contexts.d.ts +200 -0
- package/dist/core/interceptor/interception-contexts.js +0 -0
- package/dist/core/interceptor/interceptor-interfaces.d.ts +149 -0
- package/dist/core/interceptor/interceptor-interfaces.js +9 -0
- package/dist/core/interceptor/split.d.ts +11 -0
- package/dist/core/interceptor/split.js +14 -0
- package/dist/core/interceptor/workflow-composition.d.ts +21 -0
- package/dist/core/interceptor/workflow-composition.js +116 -0
- package/dist/core/interceptor.d.ts +1 -0
- package/dist/core/interceptor.js +1 -0
- package/dist/core/json.d.ts +56 -0
- package/dist/core/json.js +77 -0
- package/dist/core/list-filter-validation.d.ts +78 -0
- package/dist/core/list-filter-validation.js +75 -0
- package/dist/core/payload-size.d.ts +78 -0
- package/dist/core/payload-size.js +27 -0
- package/dist/core/persisted-data-incompatible-error.d.ts +48 -0
- package/dist/core/persisted-data-incompatible-error.js +12 -0
- package/dist/core/registry-snapshot.d.ts +69 -0
- package/dist/core/registry-snapshot.js +70 -0
- package/dist/core/review/events.d.ts +73 -0
- package/dist/core/review/events.js +31 -0
- package/dist/core/review/index.d.ts +265 -0
- package/dist/core/review/index.js +96 -0
- package/dist/core/runtime-workflow-engine.d.ts +16 -0
- package/dist/core/runtime-workflow-engine.js +6 -0
- package/dist/core/schedule/cron-formatter.d.ts +10 -0
- package/dist/core/schedule/cron-formatter.js +103 -0
- package/dist/core/schedule/cron-occurrence.d.ts +3 -0
- package/dist/core/schedule/cron-occurrence.js +129 -0
- package/dist/core/schedule/cron-parser.d.ts +2 -0
- package/dist/core/schedule/cron-parser.js +93 -0
- package/dist/core/schedule/cron-types.d.ts +35 -0
- package/dist/core/schedule/cron-types.js +0 -0
- package/dist/core/schedule/index.d.ts +3 -0
- package/dist/core/schedule/index.js +2 -0
- package/dist/core/schedule/interval-occurrence.d.ts +31 -0
- package/dist/core/schedule/interval-occurrence.js +26 -0
- package/dist/core/schedule.d.ts +1 -0
- package/dist/core/schedule.js +1 -0
- package/dist/core/scheduler/duration.d.ts +44 -0
- package/dist/core/scheduler/duration.js +48 -0
- package/dist/core/scheduler/index.d.ts +4 -0
- package/dist/core/scheduler/index.js +3 -0
- package/dist/core/scheduler/scheduler-class.d.ts +52 -0
- package/dist/core/scheduler/scheduler-class.js +167 -0
- package/dist/core/scheduler/timer-batch.d.ts +10 -0
- package/dist/core/scheduler/timer-batch.js +42 -0
- package/dist/core/scheduler/timer-sources.d.ts +17 -0
- package/dist/core/scheduler/timer-sources.js +61 -0
- package/dist/core/scheduler.d.ts +1 -0
- package/dist/core/scheduler.js +1 -0
- package/dist/core/search-attributes.d.ts +67 -0
- package/dist/core/search-attributes.js +196 -0
- package/dist/core/session-state.d.ts +18 -0
- package/dist/core/session-state.js +71 -0
- package/dist/core/signal-id.d.ts +2 -0
- package/dist/core/signal-id.js +10 -0
- package/dist/core/start-workflow-validation.d.ts +14 -0
- package/dist/core/start-workflow-validation.js +63 -0
- package/dist/core/step-context.d.ts +97 -0
- package/dist/core/step-context.js +113 -0
- package/dist/core/timeouts.d.ts +98 -0
- package/dist/core/timeouts.js +38 -0
- package/dist/core/types/activity.d.ts +316 -0
- package/dist/core/types/activity.js +15 -0
- package/dist/core/types/archive-adapter.d.ts +49 -0
- package/dist/core/types/archive-adapter.js +0 -0
- package/dist/core/types/bulk.d.ts +312 -0
- package/dist/core/types/bulk.js +1 -0
- package/dist/core/types/checkpoint.d.ts +237 -0
- package/dist/core/types/checkpoint.js +12 -0
- package/dist/core/types/clone-plain.d.ts +17 -0
- package/dist/core/types/clone-plain.js +25 -0
- package/dist/core/types/constants.d.ts +54 -0
- package/dist/core/types/constants.js +1 -0
- package/dist/core/types/deep-freeze.d.ts +31 -0
- package/dist/core/types/deep-freeze.js +31 -0
- package/dist/core/types/definition-schema-to-json.d.ts +41 -0
- package/dist/core/types/definition-schema-to-json.js +56 -0
- package/dist/core/types/definition-schema.d.ts +341 -0
- package/dist/core/types/definition-schema.js +45 -0
- package/dist/core/types/history-policy.d.ts +92 -0
- package/dist/core/types/history-policy.js +1 -0
- package/dist/core/types/identity.d.ts +55 -0
- package/dist/core/types/identity.js +0 -0
- package/dist/core/types/message-handles.d.ts +229 -0
- package/dist/core/types/message-handles.js +36 -0
- package/dist/core/types/name-grammar.d.ts +30 -0
- package/dist/core/types/name-grammar.js +9 -0
- package/dist/core/types/options.d.ts +360 -0
- package/dist/core/types/options.js +0 -0
- package/dist/core/types/payload-size-policy.d.ts +47 -0
- package/dist/core/types/payload-size-policy.js +0 -0
- package/dist/core/types/registry-type-helpers.d.ts +1 -0
- package/dist/core/types/registry-type-helpers.js +0 -0
- package/dist/core/types/retry-retention.d.ts +163 -0
- package/dist/core/types/retry-retention.js +6 -0
- package/dist/core/types/reviews.d.ts +170 -0
- package/dist/core/types/reviews.js +0 -0
- package/dist/core/types/schedules.d.ts +176 -0
- package/dist/core/types/schedules.js +3 -0
- package/dist/core/types/search-attributes.d.ts +127 -0
- package/dist/core/types/search-attributes.js +8 -0
- package/dist/core/types/serializer.d.ts +30 -0
- package/dist/core/types/serializer.js +0 -0
- package/dist/core/types/standard-schema-validate.d.ts +113 -0
- package/dist/core/types/standard-schema-validate.js +60 -0
- package/dist/core/types/state.d.ts +261 -0
- package/dist/core/types/state.js +0 -0
- package/dist/core/types/workflow-builder-helpers.d.ts +310 -0
- package/dist/core/types/workflow-builder-helpers.js +0 -0
- package/dist/core/types/workflow-builder-runtime.d.ts +97 -0
- package/dist/core/types/workflow-builder-runtime.js +137 -0
- package/dist/core/types/workflow-builder.d.ts +343 -0
- package/dist/core/types/workflow-builder.js +0 -0
- package/dist/core/types/workflow-context.d.ts +168 -0
- package/dist/core/types/workflow-context.js +0 -0
- package/dist/core/types/workflow-definition.d.ts +61 -0
- package/dist/core/types/workflow-definition.js +0 -0
- package/dist/core/types/workflow-function.d.ts +330 -0
- package/dist/core/types/workflow-function.js +9 -0
- package/dist/core/types/workflow-registries.d.ts +203 -0
- package/dist/core/types/workflow-registries.js +0 -0
- package/dist/core/types/workflow-registry.d.ts +31 -0
- package/dist/core/types/workflow-registry.js +0 -0
- package/dist/core/types.d.ts +26 -0
- package/dist/core/types.js +26 -0
- package/dist/core/updates.d.ts +183 -0
- package/dist/core/updates.js +141 -0
- package/dist/core/versioning.d.ts +153 -0
- package/dist/core/versioning.js +94 -0
- package/dist/core/weft-error.d.ts +82 -0
- package/dist/core/weft-error.js +43 -0
- package/dist/core/worker-checkpoint-resume-state.d.ts +11 -0
- package/dist/core/worker-checkpoint-resume-state.js +40 -0
- package/dist/core/worker-execution-dispatcher.d.ts +42 -0
- package/dist/core/worker-execution-dispatcher.js +95 -0
- package/dist/core/worker-execution-ownership.d.ts +20 -0
- package/dist/core/worker-execution-ownership.js +91 -0
- package/dist/core/worker-execution-strategy-options.d.ts +7 -0
- package/dist/core/worker-execution-strategy-options.js +0 -0
- package/dist/core/worker-execution-strategy.d.ts +29 -0
- package/dist/core/worker-execution-strategy.js +356 -0
- package/dist/core/worker-listener-registry.d.ts +11 -0
- package/dist/core/worker-listener-registry.js +35 -0
- package/dist/core/worker-message-helpers.d.ts +5 -0
- package/dist/core/worker-message-helpers.js +14 -0
- package/dist/core/worker-protocol-guard.d.ts +20 -0
- package/dist/core/worker-protocol-guard.js +69 -0
- package/dist/core/worker-protocol.d.ts +27 -0
- package/dist/core/worker-protocol.js +346 -0
- package/dist/core/worker-turn-watchdog.d.ts +14 -0
- package/dist/core/worker-turn-watchdog.js +40 -0
- package/dist/core/workflow-identifiers.d.ts +1 -0
- package/dist/core/workflow-identifiers.js +19 -0
- package/dist/core/workflow-tags.d.ts +9 -0
- package/dist/core/workflow-tags.js +37 -0
- package/dist/core/workflow-version-tuple.d.ts +67 -0
- package/dist/core/workflow-version-tuple.js +77 -0
- package/dist/diagnostics/doctor.d.ts +30 -0
- package/dist/diagnostics/doctor.js +173 -0
- package/dist/diagnostics/format.d.ts +77 -0
- package/dist/diagnostics/format.js +115 -0
- package/dist/diagnostics/index.d.ts +15 -0
- package/dist/diagnostics/index.js +10 -0
- package/dist/diagnostics/memory-profiler.d.ts +136 -0
- package/dist/diagnostics/memory-profiler.js +93 -0
- package/dist/diagnostics/recommendations.d.ts +37 -0
- package/dist/diagnostics/recommendations.js +116 -0
- package/dist/diagnostics/types.d.ts +178 -0
- package/dist/diagnostics/types.js +9 -0
- package/dist/diagnostics/validate.d.ts +79 -0
- package/dist/diagnostics/validate.js +88 -0
- package/dist/diagnostics/version-check.d.ts +34 -0
- package/dist/diagnostics/version-check.js +61 -0
- package/dist/index.d.ts +109 -0
- package/dist/index.js +182 -0
- package/dist/json-schema.d.ts +55 -0
- package/dist/json-schema.js +4 -0
- package/dist/mcp/access.d.ts +21 -0
- package/dist/mcp/access.js +22 -0
- package/dist/mcp/cli.d.ts +2 -0
- package/dist/mcp/cli.js +72 -0
- package/dist/mcp/dispatcher.d.ts +13 -0
- package/dist/mcp/dispatcher.js +198 -0
- package/dist/mcp/http.d.ts +64 -0
- package/dist/mcp/http.js +272 -0
- package/dist/mcp/index.d.ts +17 -0
- package/dist/mcp/index.js +26 -0
- package/dist/mcp/list-filter.d.ts +10 -0
- package/dist/mcp/list-filter.js +116 -0
- package/dist/mcp/protocol.d.ts +89 -0
- package/dist/mcp/protocol.js +64 -0
- package/dist/mcp/resources.d.ts +40 -0
- package/dist/mcp/resources.js +141 -0
- package/dist/mcp/session.d.ts +138 -0
- package/dist/mcp/session.js +204 -0
- package/dist/mcp/stdio.d.ts +89 -0
- package/dist/mcp/stdio.js +204 -0
- package/dist/mcp/tools.d.ts +27 -0
- package/dist/mcp/tools.js +262 -0
- package/dist/observability/activity-interceptor.d.ts +3 -0
- package/dist/observability/activity-interceptor.js +34 -0
- package/dist/observability/index.d.ts +60 -0
- package/dist/observability/index.js +4 -0
- package/dist/observability/metrics-catalog.d.ts +128 -0
- package/dist/observability/metrics-catalog.js +110 -0
- package/dist/observability/metrics-snapshot.d.ts +106 -0
- package/dist/observability/metrics-snapshot.js +0 -0
- package/dist/observability/metrics.d.ts +156 -0
- package/dist/observability/metrics.js +152 -0
- package/dist/observability/no-op-telemetry.d.ts +168 -0
- package/dist/observability/no-op-telemetry.js +96 -0
- package/dist/observability/propagation.d.ts +121 -0
- package/dist/observability/propagation.js +41 -0
- package/dist/observability/span-helpers.d.ts +50 -0
- package/dist/observability/span-helpers.js +83 -0
- package/dist/observability/types.d.ts +92 -0
- package/dist/observability/types.js +0 -0
- package/dist/observability/workflow-interceptor.d.ts +3 -0
- package/dist/observability/workflow-interceptor.js +106 -0
- package/dist/observability/workflow-lifecycle.d.ts +8 -0
- package/dist/observability/workflow-lifecycle.js +103 -0
- package/dist/runtime/portable.d.ts +119 -0
- package/dist/runtime/portable.js +90 -0
- package/dist/server/api-catalog.d.ts +85 -0
- package/dist/server/api-catalog.js +47 -0
- package/dist/server/asyncapi-channels.d.ts +40 -0
- package/dist/server/asyncapi-channels.js +264 -0
- package/dist/server/asyncapi.d.ts +25 -0
- package/dist/server/asyncapi.js +110 -0
- package/dist/server/attribute-filters.d.ts +37 -0
- package/dist/server/attribute-filters.js +39 -0
- package/dist/server/authentication/api-key.d.ts +3 -0
- package/dist/server/authentication/api-key.js +80 -0
- package/dist/server/authentication/audit.d.ts +116 -0
- package/dist/server/authentication/audit.js +25 -0
- package/dist/server/authentication/crypto.d.ts +7 -0
- package/dist/server/authentication/crypto.js +99 -0
- package/dist/server/authentication/index.d.ts +68 -0
- package/dist/server/authentication/index.js +144 -0
- package/dist/server/authentication/rate-limiter.d.ts +126 -0
- package/dist/server/authentication/rate-limiter.js +61 -0
- package/dist/server/authentication/redaction.d.ts +72 -0
- package/dist/server/authentication/redaction.js +30 -0
- package/dist/server/authentication/rotating-api-key-store.d.ts +107 -0
- package/dist/server/authentication/rotating-api-key-store.js +43 -0
- package/dist/server/authentication/types.d.ts +290 -0
- package/dist/server/authentication/types.js +13 -0
- package/dist/server/authentication.d.ts +1 -0
- package/dist/server/authentication.js +1 -0
- package/dist/server/authorization-scope.d.ts +43 -0
- package/dist/server/authorization-scope.js +53 -0
- package/dist/server/authorization.d.ts +55 -0
- package/dist/server/authorization.js +87 -0
- package/dist/server/deadline-tracker.d.ts +47 -0
- package/dist/server/deadline-tracker.js +106 -0
- package/dist/server/discovery-filter.d.ts +13 -0
- package/dist/server/discovery-filter.js +5 -0
- package/dist/server/discovery-info.d.ts +69 -0
- package/dist/server/discovery-info.js +12 -0
- package/dist/server/engine-event-feed-backend.d.ts +31 -0
- package/dist/server/engine-event-feed-backend.js +36 -0
- package/dist/server/fault-to-http.d.ts +14 -0
- package/dist/server/fault-to-http.js +29 -0
- package/dist/server/fault-to-json-rpc.d.ts +23 -0
- package/dist/server/fault-to-json-rpc.js +60 -0
- package/dist/server/handler/binding-dispatch.d.ts +11 -0
- package/dist/server/handler/binding-dispatch.js +13 -0
- package/dist/server/handler/index.d.ts +31 -0
- package/dist/server/handler/index.js +78 -0
- package/dist/server/handler/response-helpers.d.ts +5 -0
- package/dist/server/handler/response-helpers.js +28 -0
- package/dist/server/handler/route-dispatch.d.ts +144 -0
- package/dist/server/handler/route-dispatch.js +192 -0
- package/dist/server/handler/route-matching.d.ts +55 -0
- package/dist/server/handler/route-matching.js +45 -0
- package/dist/server/handler.d.ts +1 -0
- package/dist/server/handler.js +56 -0
- package/dist/server/index.d.ts +346 -0
- package/dist/server/index.js +64 -0
- package/dist/server/interactive-operations.d.ts +18 -0
- package/dist/server/interactive-operations.js +28 -0
- package/dist/server/json-rpc-dispatch.d.ts +49 -0
- package/dist/server/json-rpc-dispatch.js +92 -0
- package/dist/server/json-rpc-framing.d.ts +42 -0
- package/dist/server/json-rpc-framing.js +15 -0
- package/dist/server/json-rpc-http.d.ts +33 -0
- package/dist/server/json-rpc-http.js +112 -0
- package/dist/server/json-rpc-parse.d.ts +69 -0
- package/dist/server/json-rpc-parse.js +139 -0
- package/dist/server/json-rpc-protocol.d.ts +76 -0
- package/dist/server/json-rpc-protocol.js +27 -0
- package/dist/server/json-rpc-transport-helpers.d.ts +17 -0
- package/dist/server/json-rpc-transport-helpers.js +26 -0
- package/dist/server/json-rpc-websocket-runtime.d.ts +37 -0
- package/dist/server/json-rpc-websocket-runtime.js +51 -0
- package/dist/server/json-rpc-websocket-validation.d.ts +38 -0
- package/dist/server/json-rpc-websocket-validation.js +96 -0
- package/dist/server/json-rpc-websocket.d.ts +60 -0
- package/dist/server/json-rpc-websocket.js +268 -0
- package/dist/server/json-schema-utilities.d.ts +4 -0
- package/dist/server/json-schema-utilities.js +16 -0
- package/dist/server/mcp-discovery.d.ts +57 -0
- package/dist/server/mcp-discovery.js +50 -0
- package/dist/server/openapi-canonical-json.d.ts +10 -0
- package/dist/server/openapi-canonical-json.js +13 -0
- package/dist/server/openapi-error-responses.d.ts +15 -0
- package/dist/server/openapi-error-responses.js +36 -0
- package/dist/server/openapi-schemas.d.ts +17 -0
- package/dist/server/openapi-schemas.js +69 -0
- package/dist/server/openapi.d.ts +48 -0
- package/dist/server/openapi.js +290 -0
- package/dist/server/openrpc-document-schema.d.ts +112 -0
- package/dist/server/openrpc-document-schema.js +65 -0
- package/dist/server/openrpc-errors.d.ts +73 -0
- package/dist/server/openrpc-errors.js +57 -0
- package/dist/server/openrpc.d.ts +53 -0
- package/dist/server/openrpc.js +179 -0
- package/dist/server/operation-catalog/activity-adapter.d.ts +11 -0
- package/dist/server/operation-catalog/activity-adapter.js +9 -0
- package/dist/server/operation-catalog/dispatch-allowlist.d.ts +4 -0
- package/dist/server/operation-catalog/dispatch-allowlist.js +4 -0
- package/dist/server/operation-catalog/dispatch-preparation.d.ts +39 -0
- package/dist/server/operation-catalog/dispatch-preparation.js +52 -0
- package/dist/server/operation-catalog/index.d.ts +22 -0
- package/dist/server/operation-catalog/index.js +17 -0
- package/dist/server/operation-catalog/pipeline-helpers.d.ts +66 -0
- package/dist/server/operation-catalog/pipeline-helpers.js +179 -0
- package/dist/server/operation-catalog/pipeline-stages.d.ts +23 -0
- package/dist/server/operation-catalog/pipeline-stages.js +189 -0
- package/dist/server/operation-catalog/pipeline.d.ts +7 -0
- package/dist/server/operation-catalog/pipeline.js +32 -0
- package/dist/server/operation-catalog/raise-fault.d.ts +32 -0
- package/dist/server/operation-catalog/raise-fault.js +18 -0
- package/dist/server/operation-catalog/registry.d.ts +6 -0
- package/dist/server/operation-catalog/registry.js +93 -0
- package/dist/server/operation-catalog/stream-pipeline.d.ts +25 -0
- package/dist/server/operation-catalog/stream-pipeline.js +122 -0
- package/dist/server/operation-catalog/types.d.ts +246 -0
- package/dist/server/operation-catalog/types.js +9 -0
- package/dist/server/operation-catalog/workflow-adapter.d.ts +55 -0
- package/dist/server/operation-catalog/workflow-adapter.js +85 -0
- package/dist/server/operation-catalog.d.ts +1 -0
- package/dist/server/operation-catalog.js +1 -0
- package/dist/server/operation-fault.d.ts +153 -0
- package/dist/server/operation-fault.js +50 -0
- package/dist/server/operation-registry.d.ts +100 -0
- package/dist/server/operation-registry.js +56 -0
- package/dist/server/operations/add-workflow-tags.d.ts +15 -0
- package/dist/server/operations/add-workflow-tags.js +13 -0
- package/dist/server/operations/aggregate-workflows.d.ts +81 -0
- package/dist/server/operations/aggregate-workflows.js +110 -0
- package/dist/server/operations/async-activity.d.ts +44 -0
- package/dist/server/operations/async-activity.js +134 -0
- package/dist/server/operations/bulk-cancel-workflows.d.ts +7 -0
- package/dist/server/operations/bulk-cancel-workflows.js +64 -0
- package/dist/server/operations/bulk-delete-workflows.d.ts +7 -0
- package/dist/server/operations/bulk-delete-workflows.js +71 -0
- package/dist/server/operations/bulk-filter-helpers.d.ts +62 -0
- package/dist/server/operations/bulk-filter-helpers.js +334 -0
- package/dist/server/operations/bulk-mutate-workflow-tags.d.ts +94 -0
- package/dist/server/operations/bulk-mutate-workflow-tags.js +100 -0
- package/dist/server/operations/bulk-operation-helpers.d.ts +27 -0
- package/dist/server/operations/bulk-operation-helpers.js +29 -0
- package/dist/server/operations/bulk-signal-workflows.d.ts +87 -0
- package/dist/server/operations/bulk-signal-workflows.js +80 -0
- package/dist/server/operations/cancel-schedule.d.ts +13 -0
- package/dist/server/operations/cancel-schedule.js +43 -0
- package/dist/server/operations/cancel-workflow.d.ts +13 -0
- package/dist/server/operations/cancel-workflow.js +34 -0
- package/dist/server/operations/create-schedule.d.ts +29 -0
- package/dist/server/operations/create-schedule.js +116 -0
- package/dist/server/operations/failure-category-filter.d.ts +2 -0
- package/dist/server/operations/failure-category-filter.js +19 -0
- package/dist/server/operations/fork-workflow.d.ts +29 -0
- package/dist/server/operations/fork-workflow.js +88 -0
- package/dist/server/operations/get-checkpoint-at.d.ts +15 -0
- package/dist/server/operations/get-checkpoint-at.js +74 -0
- package/dist/server/operations/get-registry.d.ts +26 -0
- package/dist/server/operations/get-registry.js +56 -0
- package/dist/server/operations/get-retention-overview.d.ts +9 -0
- package/dist/server/operations/get-retention-overview.js +39 -0
- package/dist/server/operations/get-review.d.ts +15 -0
- package/dist/server/operations/get-review.js +57 -0
- package/dist/server/operations/get-schedule.d.ts +20 -0
- package/dist/server/operations/get-schedule.js +48 -0
- package/dist/server/operations/get-stream-chunks.d.ts +19 -0
- package/dist/server/operations/get-stream-chunks.js +71 -0
- package/dist/server/operations/get-system-metrics.d.ts +42 -0
- package/dist/server/operations/get-system-metrics.js +43 -0
- package/dist/server/operations/get-task-diagnostics.d.ts +184 -0
- package/dist/server/operations/get-task-diagnostics.js +340 -0
- package/dist/server/operations/get-update-result.d.ts +18 -0
- package/dist/server/operations/get-update-result.js +55 -0
- package/dist/server/operations/get-workflow-attributes.d.ts +13 -0
- package/dist/server/operations/get-workflow-attributes.js +51 -0
- package/dist/server/operations/get-workflow-events.d.ts +15 -0
- package/dist/server/operations/get-workflow-events.js +51 -0
- package/dist/server/operations/get-workflow-result.d.ts +14 -0
- package/dist/server/operations/get-workflow-result.js +93 -0
- package/dist/server/operations/get-workflow-timeline.d.ts +13 -0
- package/dist/server/operations/get-workflow-timeline.js +51 -0
- package/dist/server/operations/get-workflow.d.ts +36 -0
- package/dist/server/operations/get-workflow.js +49 -0
- package/dist/server/operations/list-checkpoints.d.ts +13 -0
- package/dist/server/operations/list-checkpoints.js +43 -0
- package/dist/server/operations/list-filter-query-extractor.d.ts +23 -0
- package/dist/server/operations/list-filter-query-extractor.js +87 -0
- package/dist/server/operations/list-reviews.d.ts +19 -0
- package/dist/server/operations/list-reviews.js +77 -0
- package/dist/server/operations/list-schedules.d.ts +28 -0
- package/dist/server/operations/list-schedules.js +108 -0
- package/dist/server/operations/list-task-queues.d.ts +71 -0
- package/dist/server/operations/list-task-queues.js +105 -0
- package/dist/server/operations/list-workers.d.ts +56 -0
- package/dist/server/operations/list-workers.js +92 -0
- package/dist/server/operations/list-workflows.d.ts +79 -0
- package/dist/server/operations/list-workflows.js +136 -0
- package/dist/server/operations/operation-helpers.d.ts +21 -0
- package/dist/server/operations/operation-helpers.js +22 -0
- package/dist/server/operations/pause-schedule.d.ts +13 -0
- package/dist/server/operations/pause-schedule.js +43 -0
- package/dist/server/operations/purge-workflows.d.ts +41 -0
- package/dist/server/operations/purge-workflows.js +57 -0
- package/dist/server/operations/query-workflow.d.ts +19 -0
- package/dist/server/operations/query-workflow.js +99 -0
- package/dist/server/operations/recover-all.d.ts +13 -0
- package/dist/server/operations/recover-all.js +65 -0
- package/dist/server/operations/remove-workflow-tags.d.ts +15 -0
- package/dist/server/operations/remove-workflow-tags.js +13 -0
- package/dist/server/operations/replay-workflow.d.ts +28 -0
- package/dist/server/operations/replay-workflow.js +69 -0
- package/dist/server/operations/resume-schedule.d.ts +13 -0
- package/dist/server/operations/resume-schedule.js +43 -0
- package/dist/server/operations/resume-workflow.d.ts +17 -0
- package/dist/server/operations/resume-workflow.js +40 -0
- package/dist/server/operations/schedule-faults.d.ts +14 -0
- package/dist/server/operations/schedule-faults.js +41 -0
- package/dist/server/operations/set-workflow-attributes.d.ts +19 -0
- package/dist/server/operations/set-workflow-attributes.js +67 -0
- package/dist/server/operations/signal-workflow.d.ts +23 -0
- package/dist/server/operations/signal-workflow.js +58 -0
- package/dist/server/operations/single-workflow-control-operation.d.ts +32 -0
- package/dist/server/operations/single-workflow-control-operation.js +44 -0
- package/dist/server/operations/single-workflow-tag-mutation.d.ts +27 -0
- package/dist/server/operations/single-workflow-tag-mutation.js +108 -0
- package/dist/server/operations/sse-stream.d.ts +13 -0
- package/dist/server/operations/sse-stream.js +42 -0
- package/dist/server/operations/start-workflow.d.ts +33 -0
- package/dist/server/operations/start-workflow.js +181 -0
- package/dist/server/operations/storage.d.ts +112 -0
- package/dist/server/operations/storage.js +358 -0
- package/dist/server/operations/stream-workflow-sse.d.ts +17 -0
- package/dist/server/operations/stream-workflow-sse.js +94 -0
- package/dist/server/operations/submit-review-decision.d.ts +25 -0
- package/dist/server/operations/submit-review-decision.js +113 -0
- package/dist/server/operations/timeout-workflow.d.ts +11 -0
- package/dist/server/operations/timeout-workflow.js +34 -0
- package/dist/server/operations/update-schedule.d.ts +15 -0
- package/dist/server/operations/update-schedule.js +60 -0
- package/dist/server/operations/update-workflow.d.ts +27 -0
- package/dist/server/operations/update-workflow.js +109 -0
- package/dist/server/operations/worker-drain.d.ts +69 -0
- package/dist/server/operations/worker-drain.js +214 -0
- package/dist/server/operations/workflow-events-subscription.d.ts +47 -0
- package/dist/server/operations/workflow-events-subscription.js +51 -0
- package/dist/server/principal.d.ts +176 -0
- package/dist/server/principal.js +59 -0
- package/dist/server/rest-binding.d.ts +158 -0
- package/dist/server/rest-binding.js +35 -0
- package/dist/server/rest-bindings.d.ts +76 -0
- package/dist/server/rest-bindings.js +376 -0
- package/dist/server/route-model.d.ts +268 -0
- package/dist/server/route-model.js +166 -0
- package/dist/server/runtime/authentication-bridge.d.ts +22 -0
- package/dist/server/runtime/authentication-bridge.js +194 -0
- package/dist/server/runtime/context.d.ts +73 -0
- package/dist/server/runtime/context.js +0 -0
- package/dist/server/runtime/cors.d.ts +149 -0
- package/dist/server/runtime/cors.js +123 -0
- package/dist/server/runtime/event-broadcasting.d.ts +71 -0
- package/dist/server/runtime/event-broadcasting.js +205 -0
- package/dist/server/runtime/request-gate.d.ts +54 -0
- package/dist/server/runtime/request-gate.js +71 -0
- package/dist/server/runtime/shutdown.d.ts +10 -0
- package/dist/server/runtime/shutdown.js +18 -0
- package/dist/server/runtime/stop-server.d.ts +3 -0
- package/dist/server/runtime/stop-server.js +19 -0
- package/dist/server/runtime/task-dispatch.d.ts +8 -0
- package/dist/server/runtime/task-dispatch.js +157 -0
- package/dist/server/runtime/task-metrics.d.ts +12 -0
- package/dist/server/runtime/task-metrics.js +36 -0
- package/dist/server/runtime/task-polling.d.ts +9 -0
- package/dist/server/runtime/task-polling.js +132 -0
- package/dist/server/runtime/task-reconciliation.d.ts +17 -0
- package/dist/server/runtime/task-reconciliation.js +163 -0
- package/dist/server/runtime/websocket-stream.d.ts +15 -0
- package/dist/server/runtime/websocket-stream.js +79 -0
- package/dist/server/runtime/websocket-upgrade.d.ts +8 -0
- package/dist/server/runtime/websocket-upgrade.js +76 -0
- package/dist/server/runtime/websocket-worker.d.ts +7 -0
- package/dist/server/runtime/websocket-worker.js +224 -0
- package/dist/server/runtime-helpers.d.ts +18 -0
- package/dist/server/runtime-helpers.js +23 -0
- package/dist/server/sequence-cursor.d.ts +5 -0
- package/dist/server/sequence-cursor.js +19 -0
- package/dist/server/serve-internals.d.ts +83 -0
- package/dist/server/serve-internals.js +203 -0
- package/dist/server/stdio-session.d.ts +51 -0
- package/dist/server/stdio-session.js +245 -0
- package/dist/server/task-queue-summary.d.ts +27 -0
- package/dist/server/task-queue-summary.js +34 -0
- package/dist/server/task-queue-types.d.ts +95 -0
- package/dist/server/task-queue-types.js +0 -0
- package/dist/server/task-queue.d.ts +90 -0
- package/dist/server/task-queue.js +247 -0
- package/dist/server/task-resolved-record.d.ts +12 -0
- package/dist/server/task-resolved-record.js +35 -0
- package/dist/server/task-state.d.ts +152 -0
- package/dist/server/task-state.js +178 -0
- package/dist/server/workflow-event-feed.d.ts +166 -0
- package/dist/server/workflow-event-feed.js +193 -0
- package/dist/service-worker/index.d.ts +123 -0
- package/dist/service-worker/index.js +56 -0
- package/dist/service-worker/scheduler.d.ts +37 -0
- package/dist/service-worker/scheduler.js +117 -0
- package/dist/service-worker/setup.d.ts +127 -0
- package/dist/service-worker/setup.js +129 -0
- package/dist/service-worker/shared.d.ts +94 -0
- package/dist/service-worker/shared.js +15 -0
- package/dist/storage/auto.d.ts +45 -0
- package/dist/storage/auto.js +2 -0
- package/dist/storage/bun-sql.d.ts +64 -0
- package/dist/storage/bun-sql.js +575 -0
- package/dist/storage/byte-encoding.d.ts +6 -0
- package/dist/storage/byte-encoding.js +16 -0
- package/dist/storage/capabilities.d.ts +187 -0
- package/dist/storage/capabilities.js +19 -0
- package/dist/storage/compressed-storage.d.ts +45 -0
- package/dist/storage/compressed-storage.js +2 -0
- package/dist/storage/default-scope.d.ts +17 -0
- package/dist/storage/default-scope.js +1 -0
- package/dist/storage/delete-range.d.ts +109 -0
- package/dist/storage/delete-range.js +64 -0
- package/dist/storage/derived-operations.d.ts +53 -0
- package/dist/storage/derived-operations.js +31 -0
- package/dist/storage/http.d.ts +67 -0
- package/dist/storage/http.js +2 -0
- package/dist/storage/index.d.ts +292 -0
- package/dist/storage/index.js +51 -0
- package/dist/storage/indexeddb.d.ts +49 -0
- package/dist/storage/indexeddb.js +1 -0
- package/dist/storage/interface.d.ts +340 -0
- package/dist/storage/interface.js +2 -0
- package/dist/storage/key-prefixes.d.ts +19 -0
- package/dist/storage/key-prefixes.js +35 -0
- package/dist/storage/lmdb.d.ts +40 -0
- package/dist/storage/lmdb.js +2 -0
- package/dist/storage/memory.d.ts +46 -0
- package/dist/storage/memory.js +2 -0
- package/dist/storage/node-sqlite.d.ts +85 -0
- package/dist/storage/node-sqlite.js +323 -0
- package/dist/storage/read-only-query.d.ts +2 -0
- package/dist/storage/read-only-query.js +19 -0
- package/dist/storage/resolve.d.ts +180 -0
- package/dist/storage/resolve.js +2 -0
- package/dist/storage/scoped-storage.d.ts +68 -0
- package/dist/storage/scoped-storage.js +2 -0
- package/dist/storage/sqlite-key-value-queries.d.ts +40 -0
- package/dist/storage/sqlite-key-value-queries.js +64 -0
- package/dist/storage/sqlite.d.ts +31 -0
- package/dist/storage/sqlite.js +0 -0
- package/dist/storage/text-value-import.d.ts +87 -0
- package/dist/storage/text-value-import.js +50 -0
- package/dist/storage/text-value-store.d.ts +171 -0
- package/dist/storage/text-value-store.js +55 -0
- package/dist/storage/turso.d.ts +60 -0
- package/dist/storage/turso.js +5 -0
- package/dist/storage/typed-storage.d.ts +258 -0
- package/dist/storage/typed-storage.js +2 -0
- package/dist/storage/web-extension.d.ts +55 -0
- package/dist/storage/web-extension.js +1 -0
- package/dist/testing/chaos.d.ts +157 -0
- package/dist/testing/chaos.js +69 -0
- package/dist/testing/event-loop.d.ts +4 -0
- package/dist/testing/event-loop.js +21 -0
- package/dist/testing/index.d.ts +126 -0
- package/dist/testing/index.js +61 -0
- package/dist/testing/mocks.d.ts +145 -0
- package/dist/testing/mocks.js +136 -0
- package/dist/testing/subprocess-engine.d.ts +100 -0
- package/dist/testing/subprocess-engine.js +291 -0
- package/dist/testing/test-engine.d.ts +145 -0
- package/dist/testing/test-engine.js +147 -0
- package/dist/testing/time-control.d.ts +59 -0
- package/dist/testing/time-control.js +68 -0
- package/dist/version.d.ts +12 -0
- package/dist/version.js +1 -0
- package/dist/worker/activity-table.d.ts +33 -0
- package/dist/worker/activity-table.js +20 -0
- package/dist/worker/execute-with-interceptors.d.ts +28 -0
- package/dist/worker/execute-with-interceptors.js +21 -0
- package/dist/worker/heartbeat.d.ts +34 -0
- package/dist/worker/heartbeat.js +31 -0
- package/dist/worker/index.d.ts +57 -0
- package/dist/worker/index.js +334 -0
- package/dist/worker/long-poll.d.ts +54 -0
- package/dist/worker/long-poll.js +134 -0
- package/dist/worker/options.d.ts +66 -0
- package/dist/worker/options.js +19 -0
- package/dist/worker/protocol-internals.d.ts +82 -0
- package/dist/worker/protocol-internals.js +56 -0
- package/dist/worker/protocol-messages.d.ts +264 -0
- package/dist/worker/protocol-messages.js +0 -0
- package/dist/worker/protocol-schemas.d.ts +559 -0
- package/dist/worker/protocol-schemas.js +180 -0
- package/dist/worker/protocol-version.d.ts +71 -0
- package/dist/worker/protocol-version.js +1 -0
- package/dist/worker/protocol.d.ts +72 -0
- package/dist/worker/protocol.js +2 -0
- package/dist/worker/registry/fair-share.d.ts +59 -0
- package/dist/worker/registry/fair-share.js +15 -0
- package/dist/worker/registry/routing.d.ts +17 -0
- package/dist/worker/registry/routing.js +16 -0
- package/dist/worker/registry/summary.d.ts +87 -0
- package/dist/worker/registry/summary.js +81 -0
- package/dist/worker/registry/types.d.ts +123 -0
- package/dist/worker/registry/types.js +0 -0
- package/dist/worker/registry.d.ts +94 -0
- package/dist/worker/registry.js +305 -0
- package/dist/worker/remote-activity-context.d.ts +15 -0
- package/dist/worker/remote-activity-context.js +0 -0
- package/dist/worker/task-result-outbox.d.ts +40 -0
- package/dist/worker/task-result-outbox.js +42 -0
- package/dist/worker/worker-protocol-incompatible-error.d.ts +52 -0
- package/dist/worker/worker-protocol-incompatible-error.js +15 -0
- package/dist/worker/workflow-activity-binding.d.ts +96 -0
- package/dist/worker/workflow-activity-binding.js +22 -0
- package/dist/workers/activity-runner.d.ts +87 -0
- package/dist/workers/activity-runner.js +29 -0
- package/dist/workers/activity-worker-dispatcher.d.ts +85 -0
- package/dist/workers/activity-worker-dispatcher.js +68 -0
- package/dist/workers/activity-worker-entry.d.ts +99 -0
- package/dist/workers/activity-worker-entry.js +59 -0
- package/dist/workers/pool.d.ts +83 -0
- package/dist/workers/pool.js +174 -0
- package/dist/workers/workflow-runner.d.ts +79 -0
- package/dist/workers/workflow-runner.js +245 -0
- package/dist/workers/workflow-worker-entry.d.ts +24 -0
- package/dist/workers/workflow-worker-entry.js +70 -0
- package/package.json +297 -0
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { tryAdmitApiKey } from "./api-key.js";
|
|
2
|
+
import { defaultAuthAuditSink, emitAuthAuditEvent } from "./audit.js";
|
|
3
|
+
import { importJWTKey, verifyJWT } from "./crypto.js";
|
|
4
|
+
import {
|
|
5
|
+
DEFAULT_PUBLIC_PATHS,
|
|
6
|
+
normalizeRequestPathname
|
|
7
|
+
} from "./types.js";
|
|
8
|
+
export {
|
|
9
|
+
defaultAuthAuditSink,
|
|
10
|
+
emitAuthAuditEvent
|
|
11
|
+
} from "./audit.js";
|
|
12
|
+
export { importJWTKey, signJWT, verifyJWT } from "./crypto.js";
|
|
13
|
+
export {
|
|
14
|
+
createRateLimiter,
|
|
15
|
+
validateRateLimitConfig
|
|
16
|
+
} from "./rate-limiter.js";
|
|
17
|
+
export { isSensitiveHeader, redactCredential, redactHeaders } from "./redaction.js";
|
|
18
|
+
export {
|
|
19
|
+
createRotatingApiKeyStore
|
|
20
|
+
} from "./rotating-api-key-store.js";
|
|
21
|
+
export {
|
|
22
|
+
DEFAULT_CLOCK_TOLERANCE,
|
|
23
|
+
DEFAULT_PUBLIC_PATHS
|
|
24
|
+
} from "./types.js";
|
|
25
|
+
function extractBearerToken(request) {
|
|
26
|
+
const authorization = request.headers.get("Authorization");
|
|
27
|
+
if (authorization?.startsWith("Bearer "))
|
|
28
|
+
return authorization.slice(7);
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
function extractApiKey(request) {
|
|
32
|
+
const headerKey = request.headers.get("X-API-Key");
|
|
33
|
+
if (headerKey)
|
|
34
|
+
return headerKey;
|
|
35
|
+
return extractBearerToken(request);
|
|
36
|
+
}
|
|
37
|
+
function validateJwtConfig(config) {
|
|
38
|
+
if (config === void 0)
|
|
39
|
+
return;
|
|
40
|
+
const algorithm = config.algorithm ?? "HS256";
|
|
41
|
+
if (algorithm.startsWith("HS") && !config.secret)
|
|
42
|
+
throw Error('JWT configuration requires "secret" for HMAC algorithms');
|
|
43
|
+
if ((algorithm.startsWith("RS") || algorithm.startsWith("ES")) && !config.publicKey)
|
|
44
|
+
throw Error('JWT configuration requires "publicKey" for RSA/ECDSA algorithms');
|
|
45
|
+
}
|
|
46
|
+
function assertAtLeastOneMethod(config) {
|
|
47
|
+
if (!(config.apiKeys && config.apiKeys.length > 0 || config.jwt !== void 0 || config.mtls !== void 0 || config.resolveApiKeyPrincipal !== void 0))
|
|
48
|
+
throw Error("AuthConfig must specify at least one authentication method (apiKeys, resolveApiKeyPrincipal, jwt, or mtls)");
|
|
49
|
+
}
|
|
50
|
+
function assertNoConflictingMethods(config) {
|
|
51
|
+
if (config.resolveApiKeyPrincipal !== void 0 && config.jwt !== void 0)
|
|
52
|
+
throw Error("AuthConfig cannot combine resolveApiKeyPrincipal with jwt: the resolver consumes every Authorization: Bearer token before JWT verification, so the JWT method would be unreachable.");
|
|
53
|
+
}
|
|
54
|
+
async function authenticateViaApiKey(request, options) {
|
|
55
|
+
const presentedKey = extractApiKey(request), hasApiKeyPath = options.resolver !== void 0 || options.apiKeySet !== null;
|
|
56
|
+
if (!presentedKey || !hasApiKeyPath)
|
|
57
|
+
return { explicitAuthAttempted: !1, result: null };
|
|
58
|
+
const result = await tryAdmitApiKey(presentedKey, options.resolver, options.apiKeySet, options.defaultApiKeyScopes);
|
|
59
|
+
return {
|
|
60
|
+
explicitAuthAttempted: !0,
|
|
61
|
+
result: result === "continue" ? null : result
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
async function authenticateViaJwt(request, jwtKey, jwtConfig) {
|
|
65
|
+
if (!jwtKey || !jwtConfig)
|
|
66
|
+
return { explicitAuthAttempted: !1, result: null };
|
|
67
|
+
const token = extractBearerToken(request);
|
|
68
|
+
if (!token)
|
|
69
|
+
return { explicitAuthAttempted: !1, result: null };
|
|
70
|
+
if (!token.includes("."))
|
|
71
|
+
return { explicitAuthAttempted: !0, result: null };
|
|
72
|
+
try {
|
|
73
|
+
return { explicitAuthAttempted: !0, result: { authenticated: !0, method: "jwt", claims: await verifyJWT(token, jwtKey, jwtConfig) } };
|
|
74
|
+
} catch (error) {
|
|
75
|
+
console.warn("JWT verification failed:", error instanceof Error ? error.message : error);
|
|
76
|
+
return { explicitAuthAttempted: !0, result: null };
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
export function validateAuthConfig(config) {
|
|
80
|
+
validateJwtConfig(config.jwt);
|
|
81
|
+
assertAtLeastOneMethod(config);
|
|
82
|
+
assertNoConflictingMethods(config);
|
|
83
|
+
}
|
|
84
|
+
export async function createAuthenticator(config) {
|
|
85
|
+
validateAuthConfig(config);
|
|
86
|
+
const apiKeySet = config.apiKeys?.length ? new Set(config.apiKeys) : null, resolver = config.resolveApiKeyPrincipal, defaultApiKeyScopes = config.defaultApiKeyScopes ?? [], jwtKey = config.jwt ? await importJWTKey(config.jwt) : null, publicPaths = new Set(config.publicPaths ?? DEFAULT_PUBLIC_PATHS), auditSink = config.auditSink ?? defaultAuthAuditSink;
|
|
87
|
+
return async (request) => {
|
|
88
|
+
if (publicPaths.has(normalizeRequestPathname(request)))
|
|
89
|
+
return { authenticated: !0, method: "public" };
|
|
90
|
+
const apiKeyAttempt = await authenticateViaApiKey(request, {
|
|
91
|
+
resolver,
|
|
92
|
+
apiKeySet,
|
|
93
|
+
defaultApiKeyScopes
|
|
94
|
+
});
|
|
95
|
+
if (apiKeyAttempt.result !== null)
|
|
96
|
+
return auditDecision(auditSink, request, apiKeyAttempt.result);
|
|
97
|
+
const jwtAttempt = await authenticateViaJwt(request, jwtKey, config.jwt);
|
|
98
|
+
if (jwtAttempt.result !== null)
|
|
99
|
+
return auditDecision(auditSink, request, jwtAttempt.result);
|
|
100
|
+
const explicitAuthAttempted = apiKeyAttempt.explicitAuthAttempted || jwtAttempt.explicitAuthAttempted;
|
|
101
|
+
if (config.mtls && !explicitAuthAttempted)
|
|
102
|
+
return auditDecision(auditSink, request, { authenticated: !0, method: "mtls" });
|
|
103
|
+
return auditDecision(auditSink, request, {
|
|
104
|
+
authenticated: !1,
|
|
105
|
+
error: "No valid credentials provided"
|
|
106
|
+
});
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
function auditDecision(sink, request, result) {
|
|
110
|
+
if (result.authenticated)
|
|
111
|
+
emitAuthAuditEvent(sink, {
|
|
112
|
+
outcome: "success",
|
|
113
|
+
method: result.method,
|
|
114
|
+
subject: subjectFromResult(result),
|
|
115
|
+
request
|
|
116
|
+
});
|
|
117
|
+
else
|
|
118
|
+
emitAuthAuditEvent(sink, {
|
|
119
|
+
outcome: "failure",
|
|
120
|
+
method: "unknown",
|
|
121
|
+
subject: void 0,
|
|
122
|
+
request,
|
|
123
|
+
reason: result.error,
|
|
124
|
+
presentedCredential: extractApiKey(request)
|
|
125
|
+
});
|
|
126
|
+
return result;
|
|
127
|
+
}
|
|
128
|
+
function subjectFromResult(result) {
|
|
129
|
+
if (result.principal?.subject !== void 0)
|
|
130
|
+
return result.principal.subject;
|
|
131
|
+
const sub = result.claims?.sub;
|
|
132
|
+
return typeof sub === "string" ? sub : void 0;
|
|
133
|
+
}
|
|
134
|
+
export function buildTLSOptions(config) {
|
|
135
|
+
if (!config?.mtls)
|
|
136
|
+
return;
|
|
137
|
+
return {
|
|
138
|
+
cert: config.mtls.cert,
|
|
139
|
+
key: config.mtls.key,
|
|
140
|
+
ca: config.mtls.ca,
|
|
141
|
+
requestCert: !0,
|
|
142
|
+
rejectUnauthorized: config.mtls.rejectUnauthorized ?? !0
|
|
143
|
+
};
|
|
144
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-process request rate limiting keyed by principal or client address.
|
|
3
|
+
*
|
|
4
|
+
* Weft's request pipeline previously capped only body size (1 MB) and JSON-RPC
|
|
5
|
+
* batch length (100 items); a single principal or IP could otherwise flood the
|
|
6
|
+
* server with unbounded request volume. This limiter adds a configurable
|
|
7
|
+
* fixed-window counter so a hostile or runaway caller is throttled with HTTP
|
|
8
|
+
* 429 once it exceeds its budget.
|
|
9
|
+
*
|
|
10
|
+
* **Scope and trust posture.** This is a single-process, in-memory limiter — it
|
|
11
|
+
* is a load-shedding guardrail, not a distributed quota. Behind multiple server
|
|
12
|
+
* instances each process keeps its own counters; deployments that need a global
|
|
13
|
+
* budget should still front Weft with a shared reverse-proxy limiter. The
|
|
14
|
+
* in-process limiter exists so a single instance cannot be trivially flooded
|
|
15
|
+
* even when no proxy is present.
|
|
16
|
+
*
|
|
17
|
+
* The window clock is injectable so tests advance time deterministically rather
|
|
18
|
+
* than sleeping against the wall clock.
|
|
19
|
+
*
|
|
20
|
+
* @module server/authentication/rate-limiter
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* Configuration for the request rate limiter, supplied via
|
|
24
|
+
* `serve({ rateLimit })`. Omitting `rateLimit` entirely disables limiting (the
|
|
25
|
+
* historical behavior), so it is opt-in and never silently changes an existing
|
|
26
|
+
* deployment.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* import { type RateLimitConfig } from '@lostgradient/weft/server';
|
|
31
|
+
*
|
|
32
|
+
* const rateLimit: RateLimitConfig = {
|
|
33
|
+
* maxRequests: 100,
|
|
34
|
+
* windowMs: 60_000,
|
|
35
|
+
* };
|
|
36
|
+
* void rateLimit;
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export type RateLimitConfig = {
|
|
40
|
+
/** Maximum requests permitted per key within each `windowMs` window. Must be a positive integer. */
|
|
41
|
+
maxRequests: number;
|
|
42
|
+
/** Length of the fixed window in milliseconds. Must be positive. */
|
|
43
|
+
windowMs: number;
|
|
44
|
+
/**
|
|
45
|
+
* Upper bound on the number of distinct keys tracked at once. When exceeded,
|
|
46
|
+
* the oldest-expiring entries are evicted so a high-cardinality flood of
|
|
47
|
+
* unique keys cannot grow memory without bound. Defaults to 10 000.
|
|
48
|
+
*/
|
|
49
|
+
maxTrackedKeys?: number;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Outcome of a single {@link RateLimiter.check} call.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```ts
|
|
56
|
+
* import { type RateLimitDecision } from '@lostgradient/weft/server';
|
|
57
|
+
*
|
|
58
|
+
* function describe(decision: RateLimitDecision): string {
|
|
59
|
+
* return decision.allowed ? 'ok' : `retry after ${decision.retryAfterSeconds}s`;
|
|
60
|
+
* }
|
|
61
|
+
* void describe;
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export type RateLimitDecision = {
|
|
65
|
+
/** Whether the request is within budget and may proceed. */
|
|
66
|
+
allowed: boolean;
|
|
67
|
+
/** Requests still available in the current window after this one. */
|
|
68
|
+
remaining: number;
|
|
69
|
+
/** Seconds until the current window resets — surfaced as the `Retry-After` header on a 429. */
|
|
70
|
+
retryAfterSeconds: number;
|
|
71
|
+
/** The configured per-window ceiling, surfaced as `X-RateLimit-Limit`. */
|
|
72
|
+
limit: number;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* A request rate limiter. Call {@link RateLimiter.check} once per request with
|
|
76
|
+
* a stable key (principal subject when authenticated, otherwise client
|
|
77
|
+
* address). `dispose` clears the internal state and is invoked on server
|
|
78
|
+
* shutdown.
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```ts
|
|
82
|
+
* import { createRateLimiter, type RateLimiter } from '@lostgradient/weft/server';
|
|
83
|
+
*
|
|
84
|
+
* const limiter: RateLimiter = createRateLimiter({ maxRequests: 2, windowMs: 1_000 });
|
|
85
|
+
* console.log(limiter.check('caller-1').allowed); // true
|
|
86
|
+
* console.log(limiter.check('caller-1').allowed); // true
|
|
87
|
+
* console.log(limiter.check('caller-1').allowed); // false
|
|
88
|
+
* limiter.dispose();
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
export type RateLimiter = {
|
|
92
|
+
check(key: string): RateLimitDecision;
|
|
93
|
+
dispose(): void;
|
|
94
|
+
};
|
|
95
|
+
/**
|
|
96
|
+
* Validate a {@link RateLimitConfig}, throwing on invalid values so a
|
|
97
|
+
* misconfiguration fails fast at `serve()` time rather than admitting an
|
|
98
|
+
* accidentally-unlimited or always-zero limiter.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```ts
|
|
102
|
+
* import { validateRateLimitConfig } from '@lostgradient/weft/server';
|
|
103
|
+
*
|
|
104
|
+
* validateRateLimitConfig({ maxRequests: 100, windowMs: 60_000 });
|
|
105
|
+
* console.log('config is valid');
|
|
106
|
+
* ```
|
|
107
|
+
*/
|
|
108
|
+
export declare function validateRateLimitConfig(config: RateLimitConfig): void;
|
|
109
|
+
/**
|
|
110
|
+
* Create a fixed-window {@link RateLimiter}. The optional `now` clock is for
|
|
111
|
+
* deterministic testing; production callers omit it and the limiter reads
|
|
112
|
+
* `Date.now()`.
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```ts
|
|
116
|
+
* import { createRateLimiter } from '@lostgradient/weft/server';
|
|
117
|
+
*
|
|
118
|
+
* let clock = 0;
|
|
119
|
+
* const limiter = createRateLimiter({ maxRequests: 1, windowMs: 1_000 }, () => clock);
|
|
120
|
+
* console.log(limiter.check('a').allowed); // true
|
|
121
|
+
* console.log(limiter.check('a').allowed); // false — window not yet reset
|
|
122
|
+
* clock = 1_000;
|
|
123
|
+
* console.log(limiter.check('a').allowed); // true — window rolled over
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
export declare function createRateLimiter(config: RateLimitConfig, now?: () => number): RateLimiter;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
const DEFAULT_MAX_TRACKED_KEYS = 1e4;
|
|
2
|
+
export function validateRateLimitConfig(config) {
|
|
3
|
+
if (!Number.isInteger(config.maxRequests) || config.maxRequests <= 0)
|
|
4
|
+
throw Error("rateLimit.maxRequests must be a positive integer");
|
|
5
|
+
if (!Number.isFinite(config.windowMs) || config.windowMs <= 0)
|
|
6
|
+
throw Error("rateLimit.windowMs must be a positive number");
|
|
7
|
+
if (config.maxTrackedKeys !== void 0 && (!Number.isInteger(config.maxTrackedKeys) || config.maxTrackedKeys <= 0))
|
|
8
|
+
throw Error("rateLimit.maxTrackedKeys must be a positive integer when set");
|
|
9
|
+
}
|
|
10
|
+
export function createRateLimiter(config, now = Date.now) {
|
|
11
|
+
validateRateLimitConfig(config);
|
|
12
|
+
const maxTrackedKeys = config.maxTrackedKeys ?? DEFAULT_MAX_TRACKED_KEYS, windows = new Map;
|
|
13
|
+
function evictIfOverCapacity() {
|
|
14
|
+
if (windows.size <= maxTrackedKeys)
|
|
15
|
+
return;
|
|
16
|
+
const overflow = windows.size - maxTrackedKeys;
|
|
17
|
+
let removed = 0;
|
|
18
|
+
for (const key of windows.keys()) {
|
|
19
|
+
windows.delete(key);
|
|
20
|
+
removed += 1;
|
|
21
|
+
if (removed >= overflow)
|
|
22
|
+
break;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
check(key) {
|
|
27
|
+
const currentTime = now(), existing = windows.get(key);
|
|
28
|
+
if (existing === void 0 || currentTime >= existing.resetAt) {
|
|
29
|
+
if (existing !== void 0)
|
|
30
|
+
windows.delete(key);
|
|
31
|
+
const resetAt = currentTime + config.windowMs;
|
|
32
|
+
windows.set(key, { count: 1, resetAt });
|
|
33
|
+
evictIfOverCapacity();
|
|
34
|
+
return {
|
|
35
|
+
allowed: !0,
|
|
36
|
+
remaining: config.maxRequests - 1,
|
|
37
|
+
retryAfterSeconds: Math.ceil(config.windowMs / 1000),
|
|
38
|
+
limit: config.maxRequests
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
const retryAfterSeconds = Math.max(1, Math.ceil((existing.resetAt - currentTime) / 1000));
|
|
42
|
+
if (existing.count >= config.maxRequests)
|
|
43
|
+
return {
|
|
44
|
+
allowed: !1,
|
|
45
|
+
remaining: 0,
|
|
46
|
+
retryAfterSeconds,
|
|
47
|
+
limit: config.maxRequests
|
|
48
|
+
};
|
|
49
|
+
existing.count += 1;
|
|
50
|
+
return {
|
|
51
|
+
allowed: !0,
|
|
52
|
+
remaining: config.maxRequests - existing.count,
|
|
53
|
+
retryAfterSeconds,
|
|
54
|
+
limit: config.maxRequests
|
|
55
|
+
};
|
|
56
|
+
},
|
|
57
|
+
dispose() {
|
|
58
|
+
windows.clear();
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Credential redaction for logs and audit events.
|
|
3
|
+
*
|
|
4
|
+
* Authentication code logs request context (auth outcomes, JWT failures,
|
|
5
|
+
* resolver throws) and the audit trail records who called what. None of that
|
|
6
|
+
* may ever carry a live credential: an `Authorization: Bearer <token>` value,
|
|
7
|
+
* an `X-API-Key`, or a `Cookie`/`Set-Cookie` session token leaking into a log
|
|
8
|
+
* line is a credential disclosure. These helpers mask such values *before* they
|
|
9
|
+
* reach `console.*` or an audit sink.
|
|
10
|
+
*
|
|
11
|
+
* The redaction is one-way and irreversible. A masked value keeps just enough
|
|
12
|
+
* shape to correlate two log lines about the same credential (a short stable
|
|
13
|
+
* fingerprint) without revealing the secret itself.
|
|
14
|
+
*
|
|
15
|
+
* @module server/authentication/redaction
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Mask a credential value so it can appear in a log or audit record without
|
|
19
|
+
* disclosing the secret. The result reveals only the length bucket and a short
|
|
20
|
+
* non-reversible fingerprint, which is enough to tell whether two log lines
|
|
21
|
+
* concern the same credential without exposing it.
|
|
22
|
+
*
|
|
23
|
+
* The fingerprint is derived from a non-cryptographic hash of the value. It is
|
|
24
|
+
* deliberately *not* the raw prefix of the token — revealing even a prefix of a
|
|
25
|
+
* high-entropy API key narrows a brute-force search. Equal inputs produce equal
|
|
26
|
+
* fingerprints; differing inputs almost always differ.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* import { redactCredential } from '@lostgradient/weft/server';
|
|
31
|
+
*
|
|
32
|
+
* const masked = redactCredential('weft_key_super_secret_value');
|
|
33
|
+
* console.log(masked.startsWith('<redacted:')); // true
|
|
34
|
+
* console.log(masked.includes('secret')); // false
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare function redactCredential(value: string | null | undefined): string;
|
|
38
|
+
/**
|
|
39
|
+
* Produce a plain object snapshot of a request's headers with every sensitive
|
|
40
|
+
* value masked via {@link redactCredential}. Use this when attaching request
|
|
41
|
+
* headers to a log line or audit record — it guarantees no credential header
|
|
42
|
+
* passes through verbatim.
|
|
43
|
+
*
|
|
44
|
+
* Header names are lower-cased (the `Headers` iterator already lower-cases
|
|
45
|
+
* them) so the result is stable regardless of the casing the client sent.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```ts
|
|
49
|
+
* import { redactHeaders } from '@lostgradient/weft/server';
|
|
50
|
+
*
|
|
51
|
+
* const request = new Request('http://localhost/v1/workflows', {
|
|
52
|
+
* headers: { Authorization: 'Bearer secret-token', 'X-Trace-Id': 'abc' },
|
|
53
|
+
* });
|
|
54
|
+
* const safe = redactHeaders(request.headers);
|
|
55
|
+
* console.log(safe['x-trace-id']); // 'abc'
|
|
56
|
+
* console.log(safe['authorization']?.startsWith('<redacted:')); // true
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
export declare function redactHeaders(headers: Headers): Record<string, string>;
|
|
60
|
+
/**
|
|
61
|
+
* Whether a header name is treated as credential-bearing and therefore masked
|
|
62
|
+
* by {@link redactHeaders}. Comparison is case-insensitive.
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```ts
|
|
66
|
+
* import { isSensitiveHeader } from '@lostgradient/weft/server';
|
|
67
|
+
*
|
|
68
|
+
* console.log(isSensitiveHeader('Authorization')); // true
|
|
69
|
+
* console.log(isSensitiveHeader('X-Trace-Id')); // false
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export declare function isSensitiveHeader(name: string): boolean;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
const SENSITIVE_HEADER_NAMES = new Set([
|
|
2
|
+
"authorization",
|
|
3
|
+
"x-api-key",
|
|
4
|
+
"cookie",
|
|
5
|
+
"set-cookie",
|
|
6
|
+
"proxy-authorization"
|
|
7
|
+
]), EMPTY_REDACTION = "<redacted:empty>";
|
|
8
|
+
export function redactCredential(value) {
|
|
9
|
+
if (value === null || value === void 0 || value.length === 0)
|
|
10
|
+
return EMPTY_REDACTION;
|
|
11
|
+
const token = value.startsWith("Bearer ") ? value.slice(7) : value, fingerprint = fingerprintToken(token);
|
|
12
|
+
return `<redacted:len=${token.length}:fp=${fingerprint}>`;
|
|
13
|
+
}
|
|
14
|
+
function fingerprintToken(token) {
|
|
15
|
+
let hash = 2166136261;
|
|
16
|
+
for (let index = 0;index < token.length; index++) {
|
|
17
|
+
hash ^= token.charCodeAt(index);
|
|
18
|
+
hash = Math.imul(hash, 16777619) >>> 0;
|
|
19
|
+
}
|
|
20
|
+
return hash.toString(16).padStart(8, "0");
|
|
21
|
+
}
|
|
22
|
+
export function redactHeaders(headers) {
|
|
23
|
+
const snapshot = {};
|
|
24
|
+
for (const [name, value] of headers)
|
|
25
|
+
snapshot[name] = SENSITIVE_HEADER_NAMES.has(name) ? redactCredential(value) : value;
|
|
26
|
+
return snapshot;
|
|
27
|
+
}
|
|
28
|
+
export function isSensitiveHeader(name) {
|
|
29
|
+
return SENSITIVE_HEADER_NAMES.has(name.toLowerCase());
|
|
30
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rotatable API-key store with overlapping-validity windows.
|
|
3
|
+
*
|
|
4
|
+
* Static `apiKeys` are fixed for the lifetime of a `serve()` call — rotating
|
|
5
|
+
* them means a config change and a restart, which forces downtime or a
|
|
6
|
+
* flag-day cutover. This store closes that gap: it is a mutable, in-process key
|
|
7
|
+
* registry that the authenticator consults on every request through the
|
|
8
|
+
* existing `resolveApiKeyPrincipal` hook, so an operator can introduce a new
|
|
9
|
+
* key, let it run alongside the old one, and revoke the old key — all without
|
|
10
|
+
* restarting the server.
|
|
11
|
+
*
|
|
12
|
+
* Overlapping validity is the core rotation primitive: add the replacement key
|
|
13
|
+
* (clients begin presenting it), keep the outgoing key valid until traffic has
|
|
14
|
+
* migrated, then revoke the outgoing key. During the overlap window both keys
|
|
15
|
+
* authenticate. Each key may also carry an absolute `expiresAt`, after which it
|
|
16
|
+
* is rejected automatically without an explicit revoke.
|
|
17
|
+
*
|
|
18
|
+
* Lookups are constant-time map reads; the comparison is the map key itself,
|
|
19
|
+
* not a per-byte string compare, so no early-exit timing channel is introduced
|
|
20
|
+
* beyond what the JS engine's map hashing already does.
|
|
21
|
+
*
|
|
22
|
+
* @module server/authentication/rotating-api-key-store
|
|
23
|
+
*/
|
|
24
|
+
import type { AuthorizationScope } from '../authorization-scope.ts';
|
|
25
|
+
import { type AuthenticatedPrincipal } from '../principal.ts';
|
|
26
|
+
/**
|
|
27
|
+
* Registration options for a single key in a {@link RotatingApiKeyStore}.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```ts
|
|
31
|
+
* import { type ApiKeyRegistration } from '@lostgradient/weft/server';
|
|
32
|
+
*
|
|
33
|
+
* const registration: ApiKeyRegistration = {
|
|
34
|
+
* subject: 'service-account-7',
|
|
35
|
+
* scopes: ['workflows:read', 'workflows:write'],
|
|
36
|
+
* expiresAt: Date.now() + 86_400_000,
|
|
37
|
+
* };
|
|
38
|
+
* void registration;
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export type ApiKeyRegistration = {
|
|
42
|
+
/** Principal subject minted for callers presenting this key. */
|
|
43
|
+
subject: string;
|
|
44
|
+
/** Authorization scopes granted to this key's principal. Defaults to `[]`. */
|
|
45
|
+
scopes?: ReadonlyArray<AuthorizationScope>;
|
|
46
|
+
/**
|
|
47
|
+
* Absolute expiry timestamp (epoch ms). After this instant the key is
|
|
48
|
+
* rejected automatically. Omit for a key with no scheduled expiry.
|
|
49
|
+
*/
|
|
50
|
+
expiresAt?: number;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* A mutable, rotatable API-key registry. Wire it into authentication by passing
|
|
54
|
+
* its {@link RotatingApiKeyStore.resolve} method as `resolveApiKeyPrincipal`.
|
|
55
|
+
* Mutate the live set with {@link RotatingApiKeyStore.add} and
|
|
56
|
+
* {@link RotatingApiKeyStore.revoke} to rotate keys without restarting.
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```ts
|
|
60
|
+
* import { createRotatingApiKeyStore, type RotatingApiKeyStore } from '@lostgradient/weft/server';
|
|
61
|
+
*
|
|
62
|
+
* const store: RotatingApiKeyStore = createRotatingApiKeyStore();
|
|
63
|
+
* store.add('key-old', { subject: 'svc', scopes: ['workflows:read'] });
|
|
64
|
+
* store.add('key-new', { subject: 'svc', scopes: ['workflows:read'] });
|
|
65
|
+
* // Both authenticate during the overlap window.
|
|
66
|
+
* store.revoke('key-old');
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
export type RotatingApiKeyStore = {
|
|
70
|
+
/** Register or replace a key. Replacing an existing key updates its registration in place. */
|
|
71
|
+
add(key: string, registration: ApiKeyRegistration): void;
|
|
72
|
+
/** Remove a key immediately. Returns `true` if the key was present. */
|
|
73
|
+
revoke(key: string): boolean;
|
|
74
|
+
/** Whether `key` is currently registered and not expired (evaluated against `now()`). */
|
|
75
|
+
has(key: string): boolean;
|
|
76
|
+
/** Number of currently-registered keys (including not-yet-expired ones). */
|
|
77
|
+
readonly size: number;
|
|
78
|
+
/**
|
|
79
|
+
* Resolve a presented key to a principal, or `null` when the key is unknown,
|
|
80
|
+
* revoked, or expired. Shaped to drop directly into
|
|
81
|
+
* `AuthConfig.resolveApiKeyPrincipal`.
|
|
82
|
+
*/
|
|
83
|
+
resolve(presentedKey: string): Promise<AuthenticatedPrincipal | null>;
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Create an empty {@link RotatingApiKeyStore}. The optional `now` clock is for
|
|
87
|
+
* deterministic testing of expiry; production callers omit it and the store
|
|
88
|
+
* reads `Date.now()`.
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```ts
|
|
92
|
+
* import { createRotatingApiKeyStore } from '@lostgradient/weft/server';
|
|
93
|
+
* import { serve } from '@lostgradient/weft/server';
|
|
94
|
+
* import { Engine, MemoryStorage } from '@lostgradient/weft';
|
|
95
|
+
*
|
|
96
|
+
* const store = createRotatingApiKeyStore();
|
|
97
|
+
* store.add('initial-key', { subject: 'svc', scopes: ['workflows:read'] });
|
|
98
|
+
*
|
|
99
|
+
* await using engine = new Engine({ storage: new MemoryStorage() });
|
|
100
|
+
* await using server = serve({
|
|
101
|
+
* engine,
|
|
102
|
+
* auth: { resolveApiKeyPrincipal: store.resolve },
|
|
103
|
+
* });
|
|
104
|
+
* void server;
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
export declare function createRotatingApiKeyStore(now?: () => number): RotatingApiKeyStore;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { principalFromApiKey } from "../principal.js";
|
|
2
|
+
function isExpired(stored, currentTime) {
|
|
3
|
+
return stored.expiresAt !== void 0 && currentTime >= stored.expiresAt;
|
|
4
|
+
}
|
|
5
|
+
export function createRotatingApiKeyStore(now = Date.now) {
|
|
6
|
+
const keys = new Map;
|
|
7
|
+
return {
|
|
8
|
+
add(key, registration) {
|
|
9
|
+
if (key.length === 0)
|
|
10
|
+
throw Error("Cannot register an empty API key");
|
|
11
|
+
keys.set(key, {
|
|
12
|
+
subject: registration.subject,
|
|
13
|
+
scopes: registration.scopes ?? [],
|
|
14
|
+
expiresAt: registration.expiresAt
|
|
15
|
+
});
|
|
16
|
+
},
|
|
17
|
+
revoke(key) {
|
|
18
|
+
return keys.delete(key);
|
|
19
|
+
},
|
|
20
|
+
has(key) {
|
|
21
|
+
const stored = keys.get(key);
|
|
22
|
+
if (stored === void 0)
|
|
23
|
+
return !1;
|
|
24
|
+
if (isExpired(stored, now())) {
|
|
25
|
+
keys.delete(key);
|
|
26
|
+
return !1;
|
|
27
|
+
}
|
|
28
|
+
return !0;
|
|
29
|
+
},
|
|
30
|
+
get size() {
|
|
31
|
+
return keys.size;
|
|
32
|
+
},
|
|
33
|
+
resolve(presentedKey) {
|
|
34
|
+
const stored = keys.get(presentedKey);
|
|
35
|
+
if (stored === void 0 || isExpired(stored, now())) {
|
|
36
|
+
if (stored !== void 0)
|
|
37
|
+
keys.delete(presentedKey);
|
|
38
|
+
return Promise.resolve(null);
|
|
39
|
+
}
|
|
40
|
+
return Promise.resolve(principalFromApiKey({ subject: stored.subject, scopes: stored.scopes }));
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
}
|