@smthrs/flow 0.0.0-stage → 1.0.0-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +160 -0
- package/LICENSE +21 -0
- package/README.md +210 -2
- package/THIRD_PARTY_NOTICES.md +52 -0
- package/dist/cjs/Action/Action.d.ts +250 -0
- package/dist/cjs/Action/Action.d.ts.map +1 -0
- package/dist/cjs/Action/Action.js +42 -0
- package/dist/cjs/Action/Action.js.map +7 -0
- package/dist/cjs/Action/AttemptTimedOut.d.ts +33 -0
- package/dist/cjs/Action/AttemptTimedOut.d.ts.map +1 -0
- package/dist/cjs/Action/AttemptTimedOut.js +51 -0
- package/dist/cjs/Action/AttemptTimedOut.js.map +7 -0
- package/dist/cjs/Action/BoundaryMode.d.ts +29 -0
- package/dist/cjs/Action/BoundaryMode.d.ts.map +1 -0
- package/dist/cjs/Action/BoundaryMode.js +36 -0
- package/dist/cjs/Action/BoundaryMode.js.map +7 -0
- package/dist/cjs/Action/CacheEnvironment.d.ts +158 -0
- package/dist/cjs/Action/CacheEnvironment.d.ts.map +1 -0
- package/dist/cjs/Action/CacheEnvironment.js +57 -0
- package/dist/cjs/Action/CacheEnvironment.js.map +7 -0
- package/dist/cjs/Action/ConcurrentKeylessDispatch.d.ts +34 -0
- package/dist/cjs/Action/ConcurrentKeylessDispatch.d.ts.map +1 -0
- package/dist/cjs/Action/ConcurrentKeylessDispatch.js +46 -0
- package/dist/cjs/Action/ConcurrentKeylessDispatch.js.map +7 -0
- package/dist/cjs/Action/Context.d.ts +131 -0
- package/dist/cjs/Action/Context.d.ts.map +1 -0
- package/dist/cjs/Action/Context.js +68 -0
- package/dist/cjs/Action/Context.js.map +7 -0
- package/dist/cjs/Action/DuplicateImplementation.d.ts +20 -0
- package/dist/cjs/Action/DuplicateImplementation.d.ts.map +1 -0
- package/dist/cjs/Action/DuplicateImplementation.js +46 -0
- package/dist/cjs/Action/DuplicateImplementation.js.map +7 -0
- package/dist/cjs/Action/FileBoundary.d.ts +59 -0
- package/dist/cjs/Action/FileBoundary.d.ts.map +1 -0
- package/dist/cjs/Action/FileBoundary.js +81 -0
- package/dist/cjs/Action/FileBoundary.js.map +7 -0
- package/dist/cjs/Action/FileInput.d.ts +28 -0
- package/dist/cjs/Action/FileInput.d.ts.map +1 -0
- package/dist/cjs/Action/FileInput.js +42 -0
- package/dist/cjs/Action/FileInput.js.map +7 -0
- package/dist/cjs/Action/Filegroup.d.ts +16 -0
- package/dist/cjs/Action/Filegroup.d.ts.map +1 -0
- package/dist/cjs/Action/Filegroup.js +27 -0
- package/dist/cjs/Action/Filegroup.js.map +7 -0
- package/dist/cjs/Action/Glob.d.ts +8 -0
- package/dist/cjs/Action/Glob.d.ts.map +1 -0
- package/dist/cjs/Action/Glob.js +28 -0
- package/dist/cjs/Action/Glob.js.map +7 -0
- package/dist/cjs/Action/ImplementationVersionMismatch.d.ts +26 -0
- package/dist/cjs/Action/ImplementationVersionMismatch.d.ts.map +1 -0
- package/dist/cjs/Action/ImplementationVersionMismatch.js +45 -0
- package/dist/cjs/Action/ImplementationVersionMismatch.js.map +7 -0
- package/dist/cjs/Action/Implementations.d.ts +114 -0
- package/dist/cjs/Action/Implementations.d.ts.map +1 -0
- package/dist/cjs/Action/Implementations.js +65 -0
- package/dist/cjs/Action/Implementations.js.map +7 -0
- package/dist/cjs/Action/InfraInterrupt.d.ts +26 -0
- package/dist/cjs/Action/InfraInterrupt.d.ts.map +1 -0
- package/dist/cjs/Action/InfraInterrupt.js +46 -0
- package/dist/cjs/Action/InfraInterrupt.js.map +7 -0
- package/dist/cjs/Action/InfraInterruptRetriesExhausted.d.ts +33 -0
- package/dist/cjs/Action/InfraInterruptRetriesExhausted.d.ts.map +1 -0
- package/dist/cjs/Action/InfraInterruptRetriesExhausted.js +54 -0
- package/dist/cjs/Action/InfraInterruptRetriesExhausted.js.map +7 -0
- package/dist/cjs/Action/IrreversibleRetryRequiresIdempotencyKey.d.ts +26 -0
- package/dist/cjs/Action/IrreversibleRetryRequiresIdempotencyKey.d.ts.map +1 -0
- package/dist/cjs/Action/IrreversibleRetryRequiresIdempotencyKey.js +47 -0
- package/dist/cjs/Action/IrreversibleRetryRequiresIdempotencyKey.js.map +7 -0
- package/dist/cjs/Action/StepIdentity.d.ts +153 -0
- package/dist/cjs/Action/StepIdentity.d.ts.map +1 -0
- package/dist/cjs/Action/StepIdentity.js +75 -0
- package/dist/cjs/Action/StepIdentity.js.map +7 -0
- package/dist/cjs/Action/TreeArtifact.d.ts +8 -0
- package/dist/cjs/Action/TreeArtifact.d.ts.map +1 -0
- package/dist/cjs/Action/TreeArtifact.js +25 -0
- package/dist/cjs/Action/TreeArtifact.js.map +7 -0
- package/dist/cjs/Action/TypeId.d.ts +8 -0
- package/dist/cjs/Action/TypeId.d.ts.map +1 -0
- package/dist/cjs/Action/TypeId.js +25 -0
- package/dist/cjs/Action/TypeId.js.map +7 -0
- package/dist/cjs/Action/UncanonicalIdempotencyKey.d.ts +32 -0
- package/dist/cjs/Action/UncanonicalIdempotencyKey.d.ts.map +1 -0
- package/dist/cjs/Action/UncanonicalIdempotencyKey.js +51 -0
- package/dist/cjs/Action/UncanonicalIdempotencyKey.js.map +7 -0
- package/dist/cjs/Action/idempotencyKey.d.ts +21 -0
- package/dist/cjs/Action/idempotencyKey.d.ts.map +1 -0
- package/dist/cjs/Action/idempotencyKey.js +59 -0
- package/dist/cjs/Action/idempotencyKey.js.map +7 -0
- package/dist/cjs/Action/index.d.ts +29 -0
- package/dist/cjs/Action/index.d.ts.map +1 -0
- package/dist/cjs/Action/index.js +60 -0
- package/dist/cjs/Action/index.js.map +7 -0
- package/dist/cjs/Action/make.d.ts +128 -0
- package/dist/cjs/Action/make.d.ts.map +1 -0
- package/dist/cjs/Action/make.js +373 -0
- package/dist/cjs/Action/make.js.map +7 -0
- package/dist/cjs/Action/raceAll.d.ts +21 -0
- package/dist/cjs/Action/raceAll.d.ts.map +1 -0
- package/dist/cjs/Action/raceAll.js +46 -0
- package/dist/cjs/Action/raceAll.js.map +7 -0
- package/dist/cjs/Action/retry.d.ts +19 -0
- package/dist/cjs/Action/retry.d.ts.map +1 -0
- package/dist/cjs/Action/retry.js +75 -0
- package/dist/cjs/Action/retry.js.map +7 -0
- package/dist/cjs/Deadline.d.ts +105 -0
- package/dist/cjs/Deadline.d.ts.map +1 -0
- package/dist/cjs/Deadline.js +104 -0
- package/dist/cjs/Deadline.js.map +7 -0
- package/dist/cjs/DurableClock.d.ts +61 -0
- package/dist/cjs/DurableClock.d.ts.map +1 -0
- package/dist/cjs/DurableClock.js +90 -0
- package/dist/cjs/DurableClock.js.map +7 -0
- package/dist/cjs/DurableDeferred.d.ts +311 -0
- package/dist/cjs/DurableDeferred.d.ts.map +1 -0
- package/dist/cjs/DurableDeferred.js +322 -0
- package/dist/cjs/DurableDeferred.js.map +7 -0
- package/dist/cjs/DurableQueue.d.ts +160 -0
- package/dist/cjs/DurableQueue.d.ts.map +1 -0
- package/dist/cjs/DurableQueue.js +229 -0
- package/dist/cjs/DurableQueue.js.map +7 -0
- package/dist/cjs/ExternalJob.d.ts +179 -0
- package/dist/cjs/ExternalJob.d.ts.map +1 -0
- package/dist/cjs/ExternalJob.js +338 -0
- package/dist/cjs/ExternalJob.js.map +7 -0
- package/dist/cjs/Fault.d.ts +131 -0
- package/dist/cjs/Fault.d.ts.map +1 -0
- package/dist/cjs/Fault.js +157 -0
- package/dist/cjs/Fault.js.map +7 -0
- package/dist/cjs/Flow/Annotations.d.ts +245 -0
- package/dist/cjs/Flow/Annotations.d.ts.map +1 -0
- package/dist/cjs/Flow/Annotations.js +72 -0
- package/dist/cjs/Flow/Annotations.js.map +7 -0
- package/dist/cjs/Flow/CapabilityCeiling.d.ts +21 -0
- package/dist/cjs/Flow/CapabilityCeiling.d.ts.map +1 -0
- package/dist/cjs/Flow/CapabilityCeiling.js +49 -0
- package/dist/cjs/Flow/CapabilityCeiling.js.map +7 -0
- package/dist/cjs/Flow/DeadlineExceeded.d.ts +33 -0
- package/dist/cjs/Flow/DeadlineExceeded.d.ts.map +1 -0
- package/dist/cjs/Flow/DeadlineExceeded.js +52 -0
- package/dist/cjs/Flow/DeadlineExceeded.js.map +7 -0
- package/dist/cjs/Flow/ExecutionIdRequired.d.ts +25 -0
- package/dist/cjs/Flow/ExecutionIdRequired.d.ts.map +1 -0
- package/dist/cjs/Flow/ExecutionIdRequired.js +46 -0
- package/dist/cjs/Flow/ExecutionIdRequired.js.map +7 -0
- package/dist/cjs/Flow/ExecutionIds.d.ts +80 -0
- package/dist/cjs/Flow/ExecutionIds.d.ts.map +1 -0
- package/dist/cjs/Flow/ExecutionIds.js +66 -0
- package/dist/cjs/Flow/ExecutionIds.js.map +7 -0
- package/dist/cjs/Flow/Flow.d.ts +422 -0
- package/dist/cjs/Flow/Flow.d.ts.map +1 -0
- package/dist/cjs/Flow/Flow.js +17 -0
- package/dist/cjs/Flow/Flow.js.map +7 -0
- package/dist/cjs/Flow/MaxRoundsExceeded.d.ts +35 -0
- package/dist/cjs/Flow/MaxRoundsExceeded.d.ts.map +1 -0
- package/dist/cjs/Flow/MaxRoundsExceeded.js +50 -0
- package/dist/cjs/Flow/MaxRoundsExceeded.js.map +7 -0
- package/dist/cjs/Flow/Outcome.d.ts +162 -0
- package/dist/cjs/Flow/Outcome.d.ts.map +1 -0
- package/dist/cjs/Flow/Outcome.js +80 -0
- package/dist/cjs/Flow/Outcome.js.map +7 -0
- package/dist/cjs/Flow/Result.d.ts +186 -0
- package/dist/cjs/Flow/Result.d.ts.map +1 -0
- package/dist/cjs/Flow/Result.js +159 -0
- package/dist/cjs/Flow/Result.js.map +7 -0
- package/dist/cjs/Flow/Runtime.d.ts +98 -0
- package/dist/cjs/Flow/Runtime.d.ts.map +1 -0
- package/dist/cjs/Flow/Runtime.js +160 -0
- package/dist/cjs/Flow/Runtime.js.map +7 -0
- package/dist/cjs/Flow/TypeId.d.ts +8 -0
- package/dist/cjs/Flow/TypeId.d.ts.map +1 -0
- package/dist/cjs/Flow/TypeId.js +25 -0
- package/dist/cjs/Flow/TypeId.js.map +7 -0
- package/dist/cjs/Flow/index.d.ts +17 -0
- package/dist/cjs/Flow/index.d.ts.map +1 -0
- package/dist/cjs/Flow/index.js +29 -0
- package/dist/cjs/Flow/index.js.map +7 -0
- package/dist/cjs/Flow/internal.d.ts +34 -0
- package/dist/cjs/Flow/internal.d.ts.map +1 -0
- package/dist/cjs/Flow/internal.js +187 -0
- package/dist/cjs/Flow/internal.js.map +7 -0
- package/dist/cjs/Flow/make.d.ts +134 -0
- package/dist/cjs/Flow/make.d.ts.map +1 -0
- package/dist/cjs/Flow/make.js +104 -0
- package/dist/cjs/Flow/make.js.map +7 -0
- package/dist/cjs/FlowRuntime/CancelRequestFailed.d.ts +55 -0
- package/dist/cjs/FlowRuntime/CancelRequestFailed.d.ts.map +1 -0
- package/dist/cjs/FlowRuntime/CancelRequestFailed.js +51 -0
- package/dist/cjs/FlowRuntime/CancelRequestFailed.js.map +7 -0
- package/dist/cjs/FlowRuntime/ExecutionIdentityConflict.d.ts +23 -0
- package/dist/cjs/FlowRuntime/ExecutionIdentityConflict.d.ts.map +1 -0
- package/dist/cjs/FlowRuntime/ExecutionIdentityConflict.js +55 -0
- package/dist/cjs/FlowRuntime/ExecutionIdentityConflict.js.map +7 -0
- package/dist/cjs/FlowRuntime/FlowCycleDetected.d.ts +28 -0
- package/dist/cjs/FlowRuntime/FlowCycleDetected.d.ts.map +1 -0
- package/dist/cjs/FlowRuntime/FlowCycleDetected.js +49 -0
- package/dist/cjs/FlowRuntime/FlowCycleDetected.js.map +7 -0
- package/dist/cjs/FlowRuntime/FlowExecutionNotFound.d.ts +38 -0
- package/dist/cjs/FlowRuntime/FlowExecutionNotFound.d.ts.map +1 -0
- package/dist/cjs/FlowRuntime/FlowExecutionNotFound.js +53 -0
- package/dist/cjs/FlowRuntime/FlowExecutionNotFound.js.map +7 -0
- package/dist/cjs/FlowRuntime/FlowInstance.d.ts +115 -0
- package/dist/cjs/FlowRuntime/FlowInstance.d.ts.map +1 -0
- package/dist/cjs/FlowRuntime/FlowInstance.js +37 -0
- package/dist/cjs/FlowRuntime/FlowInstance.js.map +7 -0
- package/dist/cjs/FlowRuntime/FlowRuntime.d.ts +198 -0
- package/dist/cjs/FlowRuntime/FlowRuntime.d.ts.map +1 -0
- package/dist/cjs/FlowRuntime/FlowRuntime.js +37 -0
- package/dist/cjs/FlowRuntime/FlowRuntime.js.map +7 -0
- package/dist/cjs/FlowRuntime/NodeRecord.d.ts +175 -0
- package/dist/cjs/FlowRuntime/NodeRecord.d.ts.map +1 -0
- package/dist/cjs/FlowRuntime/NodeRecord.js +17 -0
- package/dist/cjs/FlowRuntime/NodeRecord.js.map +7 -0
- package/dist/cjs/FlowRuntime/WaitingAnnotation.d.ts +69 -0
- package/dist/cjs/FlowRuntime/WaitingAnnotation.d.ts.map +1 -0
- package/dist/cjs/FlowRuntime/WaitingAnnotation.js +53 -0
- package/dist/cjs/FlowRuntime/WaitingAnnotation.js.map +7 -0
- package/dist/cjs/FlowRuntime/index.d.ts +14 -0
- package/dist/cjs/FlowRuntime/index.d.ts.map +1 -0
- package/dist/cjs/FlowRuntime/index.js +26 -0
- package/dist/cjs/FlowRuntime/index.js.map +7 -0
- package/dist/cjs/Graph.d.ts +325 -0
- package/dist/cjs/Graph.d.ts.map +1 -0
- package/dist/cjs/Graph.js +1021 -0
- package/dist/cjs/Graph.js.map +7 -0
- package/dist/cjs/HumanTask.d.ts +440 -0
- package/dist/cjs/HumanTask.d.ts.map +1 -0
- package/dist/cjs/HumanTask.js +413 -0
- package/dist/cjs/HumanTask.js.map +7 -0
- package/dist/cjs/Interpreter.d.ts +222 -0
- package/dist/cjs/Interpreter.d.ts.map +1 -0
- package/dist/cjs/Interpreter.js +888 -0
- package/dist/cjs/Interpreter.js.map +7 -0
- package/dist/cjs/Poll.d.ts +238 -0
- package/dist/cjs/Poll.d.ts.map +1 -0
- package/dist/cjs/Poll.js +150 -0
- package/dist/cjs/Poll.js.map +7 -0
- package/dist/cjs/RetryPolicy.d.ts +273 -0
- package/dist/cjs/RetryPolicy.d.ts.map +1 -0
- package/dist/cjs/RetryPolicy.js +251 -0
- package/dist/cjs/RetryPolicy.js.map +7 -0
- package/dist/cjs/Sleep.d.ts +98 -0
- package/dist/cjs/Sleep.d.ts.map +1 -0
- package/dist/cjs/Sleep.js +133 -0
- package/dist/cjs/Sleep.js.map +7 -0
- package/dist/cjs/Stall.d.ts +173 -0
- package/dist/cjs/Stall.d.ts.map +1 -0
- package/dist/cjs/Stall.js +92 -0
- package/dist/cjs/Stall.js.map +7 -0
- package/dist/cjs/WaitFor.d.ts +109 -0
- package/dist/cjs/WaitFor.d.ts.map +1 -0
- package/dist/cjs/WaitFor.js +117 -0
- package/dist/cjs/WaitFor.js.map +7 -0
- package/dist/cjs/index.d.ts +107 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +69 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/internal/BoundedJson.d.ts +48 -0
- package/dist/cjs/internal/BoundedJson.d.ts.map +1 -0
- package/dist/cjs/internal/BoundedJson.js +96 -0
- package/dist/cjs/internal/BoundedJson.js.map +7 -0
- package/dist/cjs/internal/DeclarationSite.d.ts +135 -0
- package/dist/cjs/internal/DeclarationSite.d.ts.map +1 -0
- package/dist/cjs/internal/DeclarationSite.js +89 -0
- package/dist/cjs/internal/DeclarationSite.js.map +7 -0
- package/dist/cjs/internal/Declarations.d.ts +35 -0
- package/dist/cjs/internal/Declarations.d.ts.map +1 -0
- package/dist/cjs/internal/Declarations.js +50 -0
- package/dist/cjs/internal/Declarations.js.map +7 -0
- package/dist/cjs/internal/ExecutionMiddleware.d.ts +21 -0
- package/dist/cjs/internal/ExecutionMiddleware.d.ts.map +1 -0
- package/dist/cjs/internal/ExecutionMiddleware.js +39 -0
- package/dist/cjs/internal/ExecutionMiddleware.js.map +7 -0
- package/dist/cjs/internal/JsonSchemaSubset.d.ts +133 -0
- package/dist/cjs/internal/JsonSchemaSubset.d.ts.map +1 -0
- package/dist/cjs/internal/JsonSchemaSubset.js +229 -0
- package/dist/cjs/internal/JsonSchemaSubset.js.map +7 -0
- package/dist/cjs/internal/OutcomeMarker.d.ts +18 -0
- package/dist/cjs/internal/OutcomeMarker.d.ts.map +1 -0
- package/dist/cjs/internal/OutcomeMarker.js +27 -0
- package/dist/cjs/internal/OutcomeMarker.js.map +7 -0
- package/dist/cjs/package.json +1 -0
- package/dist/esm/Action/Action.d.ts +250 -0
- package/dist/esm/Action/Action.d.ts.map +1 -0
- package/dist/esm/Action/Action.js +30 -0
- package/dist/esm/Action/Action.js.map +1 -0
- package/dist/esm/Action/AttemptTimedOut.d.ts +33 -0
- package/dist/esm/Action/AttemptTimedOut.d.ts.map +1 -0
- package/dist/esm/Action/AttemptTimedOut.js +32 -0
- package/dist/esm/Action/AttemptTimedOut.js.map +1 -0
- package/dist/esm/Action/BoundaryMode.d.ts +29 -0
- package/dist/esm/Action/BoundaryMode.d.ts.map +1 -0
- package/dist/esm/Action/BoundaryMode.js +23 -0
- package/dist/esm/Action/BoundaryMode.js.map +1 -0
- package/dist/esm/Action/CacheEnvironment.d.ts +158 -0
- package/dist/esm/Action/CacheEnvironment.d.ts.map +1 -0
- package/dist/esm/Action/CacheEnvironment.js +130 -0
- package/dist/esm/Action/CacheEnvironment.js.map +1 -0
- package/dist/esm/Action/ConcurrentKeylessDispatch.d.ts +34 -0
- package/dist/esm/Action/ConcurrentKeylessDispatch.d.ts.map +1 -0
- package/dist/esm/Action/ConcurrentKeylessDispatch.js +33 -0
- package/dist/esm/Action/ConcurrentKeylessDispatch.js.map +1 -0
- package/dist/esm/Action/Context.d.ts +131 -0
- package/dist/esm/Action/Context.d.ts.map +1 -0
- package/dist/esm/Action/Context.js +99 -0
- package/dist/esm/Action/Context.js.map +1 -0
- package/dist/esm/Action/DuplicateImplementation.d.ts +20 -0
- package/dist/esm/Action/DuplicateImplementation.d.ts.map +1 -0
- package/dist/esm/Action/DuplicateImplementation.js +20 -0
- package/dist/esm/Action/DuplicateImplementation.js.map +1 -0
- package/dist/esm/Action/FileBoundary.d.ts +59 -0
- package/dist/esm/Action/FileBoundary.d.ts.map +1 -0
- package/dist/esm/Action/FileBoundary.js +60 -0
- package/dist/esm/Action/FileBoundary.js.map +1 -0
- package/dist/esm/Action/FileInput.d.ts +28 -0
- package/dist/esm/Action/FileInput.d.ts.map +1 -0
- package/dist/esm/Action/FileInput.js +32 -0
- package/dist/esm/Action/FileInput.js.map +1 -0
- package/dist/esm/Action/Filegroup.d.ts +16 -0
- package/dist/esm/Action/Filegroup.d.ts.map +1 -0
- package/dist/esm/Action/Filegroup.js +15 -0
- package/dist/esm/Action/Filegroup.js.map +1 -0
- package/dist/esm/Action/Glob.d.ts +8 -0
- package/dist/esm/Action/Glob.d.ts.map +1 -0
- package/dist/esm/Action/Glob.js +7 -0
- package/dist/esm/Action/Glob.js.map +1 -0
- package/dist/esm/Action/ImplementationVersionMismatch.d.ts +26 -0
- package/dist/esm/Action/ImplementationVersionMismatch.d.ts.map +1 -0
- package/dist/esm/Action/ImplementationVersionMismatch.js +24 -0
- package/dist/esm/Action/ImplementationVersionMismatch.js.map +1 -0
- package/dist/esm/Action/Implementations.d.ts +114 -0
- package/dist/esm/Action/Implementations.d.ts.map +1 -0
- package/dist/esm/Action/Implementations.js +94 -0
- package/dist/esm/Action/Implementations.js.map +1 -0
- package/dist/esm/Action/InfraInterrupt.d.ts +26 -0
- package/dist/esm/Action/InfraInterrupt.d.ts.map +1 -0
- package/dist/esm/Action/InfraInterrupt.js +25 -0
- package/dist/esm/Action/InfraInterrupt.js.map +1 -0
- package/dist/esm/Action/InfraInterruptRetriesExhausted.d.ts +33 -0
- package/dist/esm/Action/InfraInterruptRetriesExhausted.d.ts.map +1 -0
- package/dist/esm/Action/InfraInterruptRetriesExhausted.js +32 -0
- package/dist/esm/Action/InfraInterruptRetriesExhausted.js.map +1 -0
- package/dist/esm/Action/IrreversibleRetryRequiresIdempotencyKey.d.ts +26 -0
- package/dist/esm/Action/IrreversibleRetryRequiresIdempotencyKey.d.ts.map +1 -0
- package/dist/esm/Action/IrreversibleRetryRequiresIdempotencyKey.js +25 -0
- package/dist/esm/Action/IrreversibleRetryRequiresIdempotencyKey.js.map +1 -0
- package/dist/esm/Action/StepIdentity.d.ts +153 -0
- package/dist/esm/Action/StepIdentity.d.ts.map +1 -0
- package/dist/esm/Action/StepIdentity.js +139 -0
- package/dist/esm/Action/StepIdentity.js.map +1 -0
- package/dist/esm/Action/TreeArtifact.d.ts +8 -0
- package/dist/esm/Action/TreeArtifact.d.ts.map +1 -0
- package/dist/esm/Action/TreeArtifact.js +7 -0
- package/dist/esm/Action/TreeArtifact.js.map +1 -0
- package/dist/esm/Action/TypeId.d.ts +8 -0
- package/dist/esm/Action/TypeId.d.ts.map +1 -0
- package/dist/esm/Action/TypeId.js +9 -0
- package/dist/esm/Action/TypeId.js.map +1 -0
- package/dist/esm/Action/UncanonicalIdempotencyKey.d.ts +32 -0
- package/dist/esm/Action/UncanonicalIdempotencyKey.d.ts.map +1 -0
- package/dist/esm/Action/UncanonicalIdempotencyKey.js +31 -0
- package/dist/esm/Action/UncanonicalIdempotencyKey.js.map +1 -0
- package/dist/esm/Action/idempotencyKey.d.ts +21 -0
- package/dist/esm/Action/idempotencyKey.d.ts.map +1 -0
- package/dist/esm/Action/idempotencyKey.js +50 -0
- package/dist/esm/Action/idempotencyKey.js.map +1 -0
- package/dist/esm/Action/index.d.ts +29 -0
- package/dist/esm/Action/index.d.ts.map +1 -0
- package/dist/esm/Action/index.js +30 -0
- package/dist/esm/Action/index.js.map +1 -0
- package/dist/esm/Action/make.d.ts +128 -0
- package/dist/esm/Action/make.d.ts.map +1 -0
- package/dist/esm/Action/make.js +405 -0
- package/dist/esm/Action/make.js.map +1 -0
- package/dist/esm/Action/raceAll.d.ts +21 -0
- package/dist/esm/Action/raceAll.d.ts.map +1 -0
- package/dist/esm/Action/raceAll.js +20 -0
- package/dist/esm/Action/raceAll.js.map +1 -0
- package/dist/esm/Action/retry.d.ts +19 -0
- package/dist/esm/Action/retry.d.ts.map +1 -0
- package/dist/esm/Action/retry.js +72 -0
- package/dist/esm/Action/retry.js.map +1 -0
- package/dist/esm/Deadline.d.ts +105 -0
- package/dist/esm/Deadline.d.ts.map +1 -0
- package/dist/esm/Deadline.js +152 -0
- package/dist/esm/Deadline.js.map +1 -0
- package/dist/esm/DurableClock.d.ts +61 -0
- package/dist/esm/DurableClock.d.ts.map +1 -0
- package/dist/esm/DurableClock.js +75 -0
- package/dist/esm/DurableClock.js.map +1 -0
- package/dist/esm/DurableDeferred.d.ts +311 -0
- package/dist/esm/DurableDeferred.d.ts.map +1 -0
- package/dist/esm/DurableDeferred.js +357 -0
- package/dist/esm/DurableDeferred.js.map +1 -0
- package/dist/esm/DurableQueue.d.ts +160 -0
- package/dist/esm/DurableQueue.d.ts.map +1 -0
- package/dist/esm/DurableQueue.js +303 -0
- package/dist/esm/DurableQueue.js.map +1 -0
- package/dist/esm/ExternalJob.d.ts +179 -0
- package/dist/esm/ExternalJob.d.ts.map +1 -0
- package/dist/esm/ExternalJob.js +296 -0
- package/dist/esm/ExternalJob.js.map +1 -0
- package/dist/esm/Fault.d.ts +131 -0
- package/dist/esm/Fault.d.ts.map +1 -0
- package/dist/esm/Fault.js +198 -0
- package/dist/esm/Fault.js.map +1 -0
- package/dist/esm/Flow/Annotations.d.ts +245 -0
- package/dist/esm/Flow/Annotations.d.ts.map +1 -0
- package/dist/esm/Flow/Annotations.js +110 -0
- package/dist/esm/Flow/Annotations.js.map +1 -0
- package/dist/esm/Flow/CapabilityCeiling.d.ts +21 -0
- package/dist/esm/Flow/CapabilityCeiling.d.ts.map +1 -0
- package/dist/esm/Flow/CapabilityCeiling.js +27 -0
- package/dist/esm/Flow/CapabilityCeiling.js.map +1 -0
- package/dist/esm/Flow/DeadlineExceeded.d.ts +33 -0
- package/dist/esm/Flow/DeadlineExceeded.d.ts.map +1 -0
- package/dist/esm/Flow/DeadlineExceeded.js +34 -0
- package/dist/esm/Flow/DeadlineExceeded.js.map +1 -0
- package/dist/esm/Flow/ExecutionIdRequired.d.ts +25 -0
- package/dist/esm/Flow/ExecutionIdRequired.d.ts.map +1 -0
- package/dist/esm/Flow/ExecutionIdRequired.js +30 -0
- package/dist/esm/Flow/ExecutionIdRequired.js.map +1 -0
- package/dist/esm/Flow/ExecutionIds.d.ts +80 -0
- package/dist/esm/Flow/ExecutionIds.d.ts.map +1 -0
- package/dist/esm/Flow/ExecutionIds.js +91 -0
- package/dist/esm/Flow/ExecutionIds.js.map +1 -0
- package/dist/esm/Flow/Flow.d.ts +422 -0
- package/dist/esm/Flow/Flow.d.ts.map +1 -0
- package/dist/esm/Flow/Flow.js +3 -0
- package/dist/esm/Flow/Flow.js.map +1 -0
- package/dist/esm/Flow/MaxRoundsExceeded.d.ts +35 -0
- package/dist/esm/Flow/MaxRoundsExceeded.d.ts.map +1 -0
- package/dist/esm/Flow/MaxRoundsExceeded.js +34 -0
- package/dist/esm/Flow/MaxRoundsExceeded.js.map +1 -0
- package/dist/esm/Flow/Outcome.d.ts +162 -0
- package/dist/esm/Flow/Outcome.d.ts.map +1 -0
- package/dist/esm/Flow/Outcome.js +115 -0
- package/dist/esm/Flow/Outcome.js.map +1 -0
- package/dist/esm/Flow/Result.d.ts +186 -0
- package/dist/esm/Flow/Result.d.ts.map +1 -0
- package/dist/esm/Flow/Result.js +171 -0
- package/dist/esm/Flow/Result.js.map +1 -0
- package/dist/esm/Flow/Runtime.d.ts +98 -0
- package/dist/esm/Flow/Runtime.d.ts.map +1 -0
- package/dist/esm/Flow/Runtime.js +231 -0
- package/dist/esm/Flow/Runtime.js.map +1 -0
- package/dist/esm/Flow/TypeId.d.ts +8 -0
- package/dist/esm/Flow/TypeId.d.ts.map +1 -0
- package/dist/esm/Flow/TypeId.js +9 -0
- package/dist/esm/Flow/TypeId.js.map +1 -0
- package/dist/esm/Flow/index.d.ts +17 -0
- package/dist/esm/Flow/index.d.ts.map +1 -0
- package/dist/esm/Flow/index.js +18 -0
- package/dist/esm/Flow/index.js.map +1 -0
- package/dist/esm/Flow/internal.d.ts +34 -0
- package/dist/esm/Flow/internal.d.ts.map +1 -0
- package/dist/esm/Flow/internal.js +149 -0
- package/dist/esm/Flow/internal.js.map +1 -0
- package/dist/esm/Flow/make.d.ts +134 -0
- package/dist/esm/Flow/make.d.ts.map +1 -0
- package/dist/esm/Flow/make.js +106 -0
- package/dist/esm/Flow/make.js.map +1 -0
- package/dist/esm/FlowRuntime/CancelRequestFailed.d.ts +55 -0
- package/dist/esm/FlowRuntime/CancelRequestFailed.d.ts.map +1 -0
- package/dist/esm/FlowRuntime/CancelRequestFailed.js +53 -0
- package/dist/esm/FlowRuntime/CancelRequestFailed.js.map +1 -0
- package/dist/esm/FlowRuntime/ExecutionIdentityConflict.d.ts +23 -0
- package/dist/esm/FlowRuntime/ExecutionIdentityConflict.d.ts.map +1 -0
- package/dist/esm/FlowRuntime/ExecutionIdentityConflict.js +24 -0
- package/dist/esm/FlowRuntime/ExecutionIdentityConflict.js.map +1 -0
- package/dist/esm/FlowRuntime/FlowCycleDetected.d.ts +28 -0
- package/dist/esm/FlowRuntime/FlowCycleDetected.d.ts.map +1 -0
- package/dist/esm/FlowRuntime/FlowCycleDetected.js +35 -0
- package/dist/esm/FlowRuntime/FlowCycleDetected.js.map +1 -0
- package/dist/esm/FlowRuntime/FlowExecutionNotFound.d.ts +38 -0
- package/dist/esm/FlowRuntime/FlowExecutionNotFound.d.ts.map +1 -0
- package/dist/esm/FlowRuntime/FlowExecutionNotFound.js +40 -0
- package/dist/esm/FlowRuntime/FlowExecutionNotFound.js.map +1 -0
- package/dist/esm/FlowRuntime/FlowInstance.d.ts +115 -0
- package/dist/esm/FlowRuntime/FlowInstance.d.ts.map +1 -0
- package/dist/esm/FlowRuntime/FlowInstance.js +24 -0
- package/dist/esm/FlowRuntime/FlowInstance.js.map +1 -0
- package/dist/esm/FlowRuntime/FlowRuntime.d.ts +198 -0
- package/dist/esm/FlowRuntime/FlowRuntime.d.ts.map +1 -0
- package/dist/esm/FlowRuntime/FlowRuntime.js +34 -0
- package/dist/esm/FlowRuntime/FlowRuntime.js.map +1 -0
- package/dist/esm/FlowRuntime/NodeRecord.d.ts +175 -0
- package/dist/esm/FlowRuntime/NodeRecord.d.ts.map +1 -0
- package/dist/esm/FlowRuntime/NodeRecord.js +21 -0
- package/dist/esm/FlowRuntime/NodeRecord.js.map +1 -0
- package/dist/esm/FlowRuntime/WaitingAnnotation.d.ts +69 -0
- package/dist/esm/FlowRuntime/WaitingAnnotation.d.ts.map +1 -0
- package/dist/esm/FlowRuntime/WaitingAnnotation.js +53 -0
- package/dist/esm/FlowRuntime/WaitingAnnotation.js.map +1 -0
- package/dist/esm/FlowRuntime/index.d.ts +14 -0
- package/dist/esm/FlowRuntime/index.d.ts.map +1 -0
- package/dist/esm/FlowRuntime/index.js +15 -0
- package/dist/esm/FlowRuntime/index.js.map +1 -0
- package/dist/esm/Graph.d.ts +325 -0
- package/dist/esm/Graph.d.ts.map +1 -0
- package/dist/esm/Graph.js +1483 -0
- package/dist/esm/Graph.js.map +1 -0
- package/dist/esm/HumanTask.d.ts +440 -0
- package/dist/esm/HumanTask.d.ts.map +1 -0
- package/dist/esm/HumanTask.js +794 -0
- package/dist/esm/HumanTask.js.map +1 -0
- package/dist/esm/Interpreter.d.ts +222 -0
- package/dist/esm/Interpreter.d.ts.map +1 -0
- package/dist/esm/Interpreter.js +1269 -0
- package/dist/esm/Interpreter.js.map +1 -0
- package/dist/esm/Poll.d.ts +238 -0
- package/dist/esm/Poll.d.ts.map +1 -0
- package/dist/esm/Poll.js +282 -0
- package/dist/esm/Poll.js.map +1 -0
- package/dist/esm/RetryPolicy.d.ts +273 -0
- package/dist/esm/RetryPolicy.d.ts.map +1 -0
- package/dist/esm/RetryPolicy.js +429 -0
- package/dist/esm/RetryPolicy.js.map +1 -0
- package/dist/esm/Sleep.d.ts +98 -0
- package/dist/esm/Sleep.d.ts.map +1 -0
- package/dist/esm/Sleep.js +230 -0
- package/dist/esm/Sleep.js.map +1 -0
- package/dist/esm/Stall.d.ts +173 -0
- package/dist/esm/Stall.d.ts.map +1 -0
- package/dist/esm/Stall.js +138 -0
- package/dist/esm/Stall.js.map +1 -0
- package/dist/esm/WaitFor.d.ts +109 -0
- package/dist/esm/WaitFor.d.ts.map +1 -0
- package/dist/esm/WaitFor.js +184 -0
- package/dist/esm/WaitFor.js.map +1 -0
- package/dist/esm/index.d.ts +107 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +108 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal/BoundedJson.d.ts +48 -0
- package/dist/esm/internal/BoundedJson.d.ts.map +1 -0
- package/dist/esm/internal/BoundedJson.js +107 -0
- package/dist/esm/internal/BoundedJson.js.map +1 -0
- package/dist/esm/internal/DeclarationSite.d.ts +135 -0
- package/dist/esm/internal/DeclarationSite.d.ts.map +1 -0
- package/dist/esm/internal/DeclarationSite.js +196 -0
- package/dist/esm/internal/DeclarationSite.js.map +1 -0
- package/dist/esm/internal/Declarations.d.ts +35 -0
- package/dist/esm/internal/Declarations.d.ts.map +1 -0
- package/dist/esm/internal/Declarations.js +43 -0
- package/dist/esm/internal/Declarations.js.map +1 -0
- package/dist/esm/internal/ExecutionMiddleware.d.ts +21 -0
- package/dist/esm/internal/ExecutionMiddleware.d.ts.map +1 -0
- package/dist/esm/internal/ExecutionMiddleware.js +13 -0
- package/dist/esm/internal/ExecutionMiddleware.js.map +1 -0
- package/dist/esm/internal/JsonSchemaSubset.d.ts +133 -0
- package/dist/esm/internal/JsonSchemaSubset.d.ts.map +1 -0
- package/dist/esm/internal/JsonSchemaSubset.js +363 -0
- package/dist/esm/internal/JsonSchemaSubset.js.map +1 -0
- package/dist/esm/internal/OutcomeMarker.d.ts +18 -0
- package/dist/esm/internal/OutcomeMarker.d.ts.map +1 -0
- package/dist/esm/internal/OutcomeMarker.js +18 -0
- package/dist/esm/internal/OutcomeMarker.js.map +1 -0
- package/docs/README.md +150 -0
- package/docs/api.md +436 -0
- package/docs/concepts/bodies-and-plans.md +157 -0
- package/docs/concepts/execution-identity.md +142 -0
- package/docs/concepts/flows-and-actions.md +129 -0
- package/docs/concepts/suspension-and-replay.md +130 -0
- package/docs/concepts/the-runtime-port.md +110 -0
- package/docs/concepts/trampoline-rounds.md +151 -0
- package/docs/guides/ask-a-person.md +184 -0
- package/docs/guides/build-a-body.md +161 -0
- package/docs/guides/cancel-and-roll-back.md +112 -0
- package/docs/guides/implement-an-action.md +147 -0
- package/docs/guides/inspect-the-plan.md +154 -0
- package/docs/guides/poll-until-ready.md +167 -0
- package/docs/guides/queue-work-to-a-worker.md +122 -0
- package/docs/guides/retry-a-failing-action.md +243 -0
- package/docs/guides/reuse-a-recorded-result.md +122 -0
- package/docs/guides/run-a-child-flow.md +108 -0
- package/docs/guides/run-an-external-job.md +86 -0
- package/docs/guides/use-a-prompt.md +38 -0
- package/docs/guides/wait-for-a-deadline.md +141 -0
- package/docs/guides/wait-for-an-external-signal.md +151 -0
- package/docs/installation.md +82 -0
- package/docs/quickstart.md +155 -0
- package/docs/reference/flow.md +1831 -0
- package/docs/testing.md +157 -0
- package/docs/troubleshooting.md +286 -0
- package/package.json +327 -3
- package/src/Action/Action.ts +333 -0
- package/src/Action/AttemptTimedOut.ts +37 -0
- package/src/Action/BoundaryMode.ts +33 -0
- package/src/Action/CacheEnvironment.ts +170 -0
- package/src/Action/ConcurrentKeylessDispatch.ts +38 -0
- package/src/Action/Context.ts +156 -0
- package/src/Action/DuplicateImplementation.ts +24 -0
- package/src/Action/FileBoundary.ts +77 -0
- package/src/Action/FileInput.ts +42 -0
- package/src/Action/Filegroup.ts +16 -0
- package/src/Action/Glob.ts +8 -0
- package/src/Action/ImplementationVersionMismatch.ts +27 -0
- package/src/Action/Implementations.ts +149 -0
- package/src/Action/InfraInterrupt.ts +30 -0
- package/src/Action/InfraInterruptRetriesExhausted.ts +37 -0
- package/src/Action/IrreversibleRetryRequiresIdempotencyKey.ts +32 -0
- package/src/Action/StepIdentity.ts +219 -0
- package/src/Action/TreeArtifact.ts +8 -0
- package/src/Action/TypeId.ts +9 -0
- package/src/Action/UncanonicalIdempotencyKey.ts +36 -0
- package/src/Action/idempotencyKey.ts +67 -0
- package/src/Action/index.ts +31 -0
- package/src/Action/make.ts +657 -0
- package/src/Action/raceAll.ts +48 -0
- package/src/Action/retry.ts +92 -0
- package/src/Deadline.ts +185 -0
- package/src/DurableClock.ts +133 -0
- package/src/DurableDeferred.ts +753 -0
- package/src/DurableQueue.ts +519 -0
- package/src/ExternalJob.ts +432 -0
- package/src/Fault.ts +279 -0
- package/src/Flow/Annotations.ts +151 -0
- package/src/Flow/CapabilityCeiling.ts +37 -0
- package/src/Flow/DeadlineExceeded.ts +40 -0
- package/src/Flow/ExecutionIdRequired.ts +36 -0
- package/src/Flow/ExecutionIds.ts +133 -0
- package/src/Flow/Flow.ts +576 -0
- package/src/Flow/MaxRoundsExceeded.ts +39 -0
- package/src/Flow/Outcome.ts +179 -0
- package/src/Flow/Result.ts +284 -0
- package/src/Flow/Runtime.ts +309 -0
- package/src/Flow/TypeId.ts +9 -0
- package/src/Flow/index.ts +19 -0
- package/src/Flow/internal.ts +237 -0
- package/src/Flow/make.ts +279 -0
- package/src/FlowRuntime/CancelRequestFailed.ts +56 -0
- package/src/FlowRuntime/ExecutionIdentityConflict.ts +32 -0
- package/src/FlowRuntime/FlowCycleDetected.ts +41 -0
- package/src/FlowRuntime/FlowExecutionNotFound.ts +46 -0
- package/src/FlowRuntime/FlowInstance.ts +128 -0
- package/src/FlowRuntime/FlowRuntime.ts +333 -0
- package/src/FlowRuntime/NodeRecord.ts +183 -0
- package/src/FlowRuntime/WaitingAnnotation.ts +85 -0
- package/src/FlowRuntime/index.ts +17 -0
- package/src/Graph.ts +1862 -0
- package/src/HumanTask.ts +1003 -0
- package/src/Interpreter.ts +1593 -0
- package/src/Poll.ts +414 -0
- package/src/RetryPolicy.ts +550 -0
- package/src/Sleep.ts +267 -0
- package/src/Stall.ts +217 -0
- package/src/WaitFor.ts +228 -0
- package/src/index.ts +125 -0
- package/src/internal/BoundedJson.ts +109 -0
- package/src/internal/DeclarationSite.ts +214 -0
- package/src/internal/Declarations.ts +49 -0
- package/src/internal/ExecutionMiddleware.ts +29 -0
- package/src/internal/JsonSchemaSubset.ts +392 -0
- package/src/internal/OutcomeMarker.ts +19 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The bounded JSON Schema subset a human-task answer is checked against.
|
|
3
|
+
*
|
|
4
|
+
* `HumanTask` asks a person for a value and refuses one that does not fit the
|
|
5
|
+
* question. The fit for a `json` question is decided here: a schema is kept
|
|
6
|
+
* inside a deliberately small subset, an answer is checked against it under
|
|
7
|
+
* the same size bounds every human-task value is admitted under, and every
|
|
8
|
+
* rejection is rendered within one diagnostic budget. `HumanTask` re-exports
|
|
9
|
+
* the limits and the two public entry points; this file is the mechanism.
|
|
10
|
+
*
|
|
11
|
+
* @since 1.0.0
|
|
12
|
+
*/
|
|
13
|
+
import * as BoundedJson from "./BoundedJson.ts";
|
|
14
|
+
/**
|
|
15
|
+
* The deepest supported JSON Schema path, counting the root as depth zero.
|
|
16
|
+
*
|
|
17
|
+
* @private
|
|
18
|
+
* @since 1.0.0
|
|
19
|
+
*/
|
|
20
|
+
export declare const maxSchemaDepth = 32;
|
|
21
|
+
/**
|
|
22
|
+
* The most schema objects one human-task request may contain.
|
|
23
|
+
*
|
|
24
|
+
* @private
|
|
25
|
+
* @since 1.0.0
|
|
26
|
+
*/
|
|
27
|
+
export declare const maxSchemaNodes = 512;
|
|
28
|
+
/**
|
|
29
|
+
* The most JSON values embedded across schema keywords such as `enum`.
|
|
30
|
+
*
|
|
31
|
+
* @private
|
|
32
|
+
* @since 1.0.0
|
|
33
|
+
*/
|
|
34
|
+
export declare const maxSchemaValueNodes = 10000;
|
|
35
|
+
/**
|
|
36
|
+
* The deepest JSON value embedded in a schema, including enum members.
|
|
37
|
+
*
|
|
38
|
+
* @private
|
|
39
|
+
* @since 1.0.0
|
|
40
|
+
*/
|
|
41
|
+
export declare const maxSchemaValueDepth = 64;
|
|
42
|
+
/**
|
|
43
|
+
* The most JSON values one answer validation may visit.
|
|
44
|
+
*
|
|
45
|
+
* @private
|
|
46
|
+
* @since 1.0.0
|
|
47
|
+
*/
|
|
48
|
+
export declare const maxAnswerNodes = 10000;
|
|
49
|
+
/**
|
|
50
|
+
* The largest encoded JSON answer that can enter the durable store.
|
|
51
|
+
*
|
|
52
|
+
* @private
|
|
53
|
+
* @since 1.0.0
|
|
54
|
+
*/
|
|
55
|
+
export declare const maxAnswerBytes: number;
|
|
56
|
+
/**
|
|
57
|
+
* The largest encoded JSON Schema carried by one question.
|
|
58
|
+
*
|
|
59
|
+
* @private
|
|
60
|
+
* @since 1.0.0
|
|
61
|
+
*/
|
|
62
|
+
export declare const maxSchemaBytes: number;
|
|
63
|
+
/**
|
|
64
|
+
* The deepest admitted answer tree.
|
|
65
|
+
*
|
|
66
|
+
* @private
|
|
67
|
+
* @since 1.0.0
|
|
68
|
+
*/
|
|
69
|
+
export declare const maxAnswerDepth = 64;
|
|
70
|
+
/**
|
|
71
|
+
* The largest encoded string value admitted in a request or answer.
|
|
72
|
+
*
|
|
73
|
+
* @private
|
|
74
|
+
* @since 1.0.0
|
|
75
|
+
*/
|
|
76
|
+
export declare const maxJsonStringBytes: number;
|
|
77
|
+
/**
|
|
78
|
+
* The largest encoded object key admitted in a request or answer.
|
|
79
|
+
*
|
|
80
|
+
* @private
|
|
81
|
+
* @since 1.0.0
|
|
82
|
+
*/
|
|
83
|
+
export declare const maxJsonKeyBytes: number;
|
|
84
|
+
/**
|
|
85
|
+
* The most members admitted in one JSON array or object.
|
|
86
|
+
*
|
|
87
|
+
* @private
|
|
88
|
+
* @since 1.0.0
|
|
89
|
+
*/
|
|
90
|
+
export declare const maxJsonMembers = 10000;
|
|
91
|
+
/**
|
|
92
|
+
* The most caller-supplied characters retained in one rendered diagnostic.
|
|
93
|
+
*
|
|
94
|
+
* @private
|
|
95
|
+
* @since 1.0.0
|
|
96
|
+
*/
|
|
97
|
+
export declare const maxDiagnosticChars = 512;
|
|
98
|
+
/** Truncates a caller-supplied diagnostic while stating exactly what was dropped.
|
|
99
|
+
* @private
|
|
100
|
+
* @since 1.0.0
|
|
101
|
+
*/
|
|
102
|
+
export declare const truncateDiagnostic: (rendered: string) => string;
|
|
103
|
+
/** Renders one JSON value for a bounded rejection message.
|
|
104
|
+
* @private
|
|
105
|
+
* @since 1.0.0
|
|
106
|
+
*/
|
|
107
|
+
export declare const renderDiagnostic: (value: unknown) => string;
|
|
108
|
+
/** The bounds one answer is admitted under.
|
|
109
|
+
* @private
|
|
110
|
+
* @since 1.0.0
|
|
111
|
+
*/
|
|
112
|
+
export declare const answerLimits: BoundedJson.Limits;
|
|
113
|
+
/** The bounds one schema is admitted under, enum members included.
|
|
114
|
+
* @private
|
|
115
|
+
* @since 1.0.0
|
|
116
|
+
*/
|
|
117
|
+
export declare const schemaLimits: BoundedJson.Limits;
|
|
118
|
+
/** Checks schema validity and snapshots both inputs before walking them together.
|
|
119
|
+
* @private
|
|
120
|
+
* @since 1.0.0
|
|
121
|
+
*/
|
|
122
|
+
export declare const check: (value: unknown, schema: unknown) => string | undefined;
|
|
123
|
+
/**
|
|
124
|
+
* Checks that a JSON Schema stays inside the bounded subset, at every depth.
|
|
125
|
+
*
|
|
126
|
+
* Returns the first reason the schema is out of bounds, or `undefined` when the
|
|
127
|
+
* whole tree is inside it.
|
|
128
|
+
*
|
|
129
|
+
* @private
|
|
130
|
+
* @since 1.0.0
|
|
131
|
+
*/
|
|
132
|
+
export declare const validateSchema: (schema: unknown, path: ReadonlyArray<string>) => string | undefined;
|
|
133
|
+
//# sourceMappingURL=JsonSchemaSubset.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonSchemaSubset.d.ts","sourceRoot":"","sources":["../../../src/internal/JsonSchemaSubset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;;;;GAKG;AACH,eAAO,MAAM,cAAc,KAAK,CAAA;AAEhC;;;;;GAKG;AACH,eAAO,MAAM,cAAc,MAAM,CAAA;AAEjC;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,QAAS,CAAA;AAEzC;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,KAAK,CAAA;AAErC;;;;;GAKG;AACH,eAAO,MAAM,cAAc,QAAS,CAAA;AAEpC;;;;;GAKG;AACH,eAAO,MAAM,cAAc,QAAa,CAAA;AAExC;;;;;GAKG;AACH,eAAO,MAAM,cAAc,QAAa,CAAA;AAExC;;;;;GAKG;AACH,eAAO,MAAM,cAAc,KAAK,CAAA;AAEhC;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,QAAa,CAAA;AAE5C;;;;;GAKG;AACH,eAAO,MAAM,eAAe,QAAW,CAAA;AAEvC;;;;;GAKG;AACH,eAAO,MAAM,cAAc,QAAS,CAAA;AAEpC;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,MAAM,CAAA;AAiBrC;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,UAAU,MAAM,KAAG,MAKrD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAI,OAAO,OAAO,KAAG,MAAuD,CAAA;AA8CzG;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,WAAW,CAAC,MAOtC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,WAAW,CAAC,MAOtC,CAAA;AAsFD;;;GAGG;AACH,eAAO,MAAM,KAAK,GAAI,OAAO,OAAO,EAAE,QAAQ,OAAO,KAAG,MAAM,GAAG,SAQhE,CAAA;AAiED;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,GACzB,QAAQ,OAAO,EACf,MAAM,aAAa,CAAC,MAAM,CAAC,KAC1B,MAAM,GAAG,SAKX,CAAA"}
|
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The bounded JSON Schema subset a human-task answer is checked against.
|
|
3
|
+
*
|
|
4
|
+
* `HumanTask` asks a person for a value and refuses one that does not fit the
|
|
5
|
+
* question. The fit for a `json` question is decided here: a schema is kept
|
|
6
|
+
* inside a deliberately small subset, an answer is checked against it under
|
|
7
|
+
* the same size bounds every human-task value is admitted under, and every
|
|
8
|
+
* rejection is rendered within one diagnostic budget. `HumanTask` re-exports
|
|
9
|
+
* the limits and the two public entry points; this file is the mechanism.
|
|
10
|
+
*
|
|
11
|
+
* @since 1.0.0
|
|
12
|
+
*/
|
|
13
|
+
import * as BoundedJson from "./BoundedJson.js";
|
|
14
|
+
/**
|
|
15
|
+
* The deepest supported JSON Schema path, counting the root as depth zero.
|
|
16
|
+
*
|
|
17
|
+
* @private
|
|
18
|
+
* @since 1.0.0
|
|
19
|
+
*/
|
|
20
|
+
export const maxSchemaDepth = 32;
|
|
21
|
+
/**
|
|
22
|
+
* The most schema objects one human-task request may contain.
|
|
23
|
+
*
|
|
24
|
+
* @private
|
|
25
|
+
* @since 1.0.0
|
|
26
|
+
*/
|
|
27
|
+
export const maxSchemaNodes = 512;
|
|
28
|
+
/**
|
|
29
|
+
* The most JSON values embedded across schema keywords such as `enum`.
|
|
30
|
+
*
|
|
31
|
+
* @private
|
|
32
|
+
* @since 1.0.0
|
|
33
|
+
*/
|
|
34
|
+
export const maxSchemaValueNodes = 10_000;
|
|
35
|
+
/**
|
|
36
|
+
* The deepest JSON value embedded in a schema, including enum members.
|
|
37
|
+
*
|
|
38
|
+
* @private
|
|
39
|
+
* @since 1.0.0
|
|
40
|
+
*/
|
|
41
|
+
export const maxSchemaValueDepth = 64;
|
|
42
|
+
/**
|
|
43
|
+
* The most JSON values one answer validation may visit.
|
|
44
|
+
*
|
|
45
|
+
* @private
|
|
46
|
+
* @since 1.0.0
|
|
47
|
+
*/
|
|
48
|
+
export const maxAnswerNodes = 10_000;
|
|
49
|
+
/**
|
|
50
|
+
* The largest encoded JSON answer that can enter the durable store.
|
|
51
|
+
*
|
|
52
|
+
* @private
|
|
53
|
+
* @since 1.0.0
|
|
54
|
+
*/
|
|
55
|
+
export const maxAnswerBytes = 256 * 1024;
|
|
56
|
+
/**
|
|
57
|
+
* The largest encoded JSON Schema carried by one question.
|
|
58
|
+
*
|
|
59
|
+
* @private
|
|
60
|
+
* @since 1.0.0
|
|
61
|
+
*/
|
|
62
|
+
export const maxSchemaBytes = 256 * 1024;
|
|
63
|
+
/**
|
|
64
|
+
* The deepest admitted answer tree.
|
|
65
|
+
*
|
|
66
|
+
* @private
|
|
67
|
+
* @since 1.0.0
|
|
68
|
+
*/
|
|
69
|
+
export const maxAnswerDepth = 64;
|
|
70
|
+
/**
|
|
71
|
+
* The largest encoded string value admitted in a request or answer.
|
|
72
|
+
*
|
|
73
|
+
* @private
|
|
74
|
+
* @since 1.0.0
|
|
75
|
+
*/
|
|
76
|
+
export const maxJsonStringBytes = 128 * 1024;
|
|
77
|
+
/**
|
|
78
|
+
* The largest encoded object key admitted in a request or answer.
|
|
79
|
+
*
|
|
80
|
+
* @private
|
|
81
|
+
* @since 1.0.0
|
|
82
|
+
*/
|
|
83
|
+
export const maxJsonKeyBytes = 4 * 1024;
|
|
84
|
+
/**
|
|
85
|
+
* The most members admitted in one JSON array or object.
|
|
86
|
+
*
|
|
87
|
+
* @private
|
|
88
|
+
* @since 1.0.0
|
|
89
|
+
*/
|
|
90
|
+
export const maxJsonMembers = 10_000;
|
|
91
|
+
/**
|
|
92
|
+
* The most caller-supplied characters retained in one rendered diagnostic.
|
|
93
|
+
*
|
|
94
|
+
* @private
|
|
95
|
+
* @since 1.0.0
|
|
96
|
+
*/
|
|
97
|
+
export const maxDiagnosticChars = 512;
|
|
98
|
+
/** The JSON Schema types the bounded subset understands. */
|
|
99
|
+
const supportedTypes = new Set(["object", "array", "string", "number", "integer", "boolean", "null"]);
|
|
100
|
+
/** The JSON Schema keywords the bounded subset understands. */
|
|
101
|
+
const supportedKeywords = [
|
|
102
|
+
"type",
|
|
103
|
+
"enum",
|
|
104
|
+
"properties",
|
|
105
|
+
"required",
|
|
106
|
+
"items",
|
|
107
|
+
"nullable",
|
|
108
|
+
"description",
|
|
109
|
+
"title"
|
|
110
|
+
];
|
|
111
|
+
/** Truncates a caller-supplied diagnostic while stating exactly what was dropped.
|
|
112
|
+
* @private
|
|
113
|
+
* @since 1.0.0
|
|
114
|
+
*/
|
|
115
|
+
export const truncateDiagnostic = (rendered) => {
|
|
116
|
+
const prefix = BoundedJson.scalarPrefix(rendered, maxDiagnosticChars);
|
|
117
|
+
return prefix.length === rendered.length
|
|
118
|
+
? prefix
|
|
119
|
+
: `${prefix} [${rendered.length - prefix.length} characters dropped]`;
|
|
120
|
+
};
|
|
121
|
+
/** Renders one JSON value for a bounded rejection message.
|
|
122
|
+
* @private
|
|
123
|
+
* @since 1.0.0
|
|
124
|
+
*/
|
|
125
|
+
export const renderDiagnostic = (value) => BoundedJson.render(value, maxDiagnosticChars);
|
|
126
|
+
/**
|
|
127
|
+
* Renders a value list in its comma-separated diagnostic shape.
|
|
128
|
+
*
|
|
129
|
+
* Every member renders to at least one character, so members past the
|
|
130
|
+
* diagnostic budget can never survive truncation and are not rendered at all.
|
|
131
|
+
*/
|
|
132
|
+
const renderDiagnosticList = (values) => truncateDiagnostic(values.slice(0, maxDiagnosticChars).map((value) => BoundedJson.render(value, maxDiagnosticChars)).join(", "));
|
|
133
|
+
/** Renders a JSON pointer-ish path for a rejection message. */
|
|
134
|
+
const at = (path) => path.length === 0 ? "the answer" : `"${truncateDiagnostic(path.join("."))}"`;
|
|
135
|
+
/** Whether a value is a plain JSON object rather than an array or a null. */
|
|
136
|
+
const isObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
137
|
+
/** Compares two JSON values structurally without depending on object key order. */
|
|
138
|
+
const jsonEquals = (left, right) => {
|
|
139
|
+
const pending = [[left, right]];
|
|
140
|
+
while (pending.length > 0) {
|
|
141
|
+
const [a, b] = pending.pop();
|
|
142
|
+
if (a === b)
|
|
143
|
+
continue;
|
|
144
|
+
if (Array.isArray(a)) {
|
|
145
|
+
if (!Array.isArray(b) || a.length !== b.length)
|
|
146
|
+
return false;
|
|
147
|
+
for (let index = a.length - 1; index >= 0; index--)
|
|
148
|
+
pending.push([a[index], b[index]]);
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
if (!isObject(a) || !isObject(b))
|
|
152
|
+
return false;
|
|
153
|
+
const aKeys = Object.keys(a).sort();
|
|
154
|
+
const bKeys = Object.keys(b).sort();
|
|
155
|
+
if (aKeys.length !== bKeys.length)
|
|
156
|
+
return false;
|
|
157
|
+
for (let index = aKeys.length - 1; index >= 0; index--) {
|
|
158
|
+
const aKey = aKeys[index];
|
|
159
|
+
const bKey = bKeys[index];
|
|
160
|
+
if (aKey !== bKey)
|
|
161
|
+
return false;
|
|
162
|
+
pending.push([a[aKey], b[bKey]]);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return true;
|
|
166
|
+
};
|
|
167
|
+
/** The bounds one answer is admitted under.
|
|
168
|
+
* @private
|
|
169
|
+
* @since 1.0.0
|
|
170
|
+
*/
|
|
171
|
+
export const answerLimits = {
|
|
172
|
+
maxNodes: maxAnswerNodes,
|
|
173
|
+
maxDepth: maxAnswerDepth,
|
|
174
|
+
maxBytes: maxAnswerBytes,
|
|
175
|
+
maxStringBytes: maxJsonStringBytes,
|
|
176
|
+
maxKeyBytes: maxJsonKeyBytes,
|
|
177
|
+
maxMembers: maxJsonMembers
|
|
178
|
+
};
|
|
179
|
+
/** The bounds one schema is admitted under, enum members included.
|
|
180
|
+
* @private
|
|
181
|
+
* @since 1.0.0
|
|
182
|
+
*/
|
|
183
|
+
export const schemaLimits = {
|
|
184
|
+
maxNodes: maxSchemaValueNodes,
|
|
185
|
+
maxDepth: maxSchemaValueDepth,
|
|
186
|
+
maxBytes: maxSchemaBytes,
|
|
187
|
+
maxStringBytes: maxJsonStringBytes,
|
|
188
|
+
maxKeyBytes: maxJsonKeyBytes,
|
|
189
|
+
maxMembers: maxJsonMembers
|
|
190
|
+
};
|
|
191
|
+
/**
|
|
192
|
+
* Checks a value against the bounded JSON Schema subset, returning the first
|
|
193
|
+
* reason it does not fit.
|
|
194
|
+
*
|
|
195
|
+
* The subset is `type` (`object`, `array`, `string`, `number`, `integer`,
|
|
196
|
+
* `boolean`, `null`), `enum`, `properties`, `required`, `items`, and
|
|
197
|
+
* `nullable`. It is deliberately small: a human-task schema exists to say what
|
|
198
|
+
* shape an answer takes, and every keyword beyond these describes a constraint
|
|
199
|
+
* a person cannot be usefully re-asked about. A schema that reaches outside it
|
|
200
|
+
* is refused as `request_invalid` rather than silently ignored, because a
|
|
201
|
+
* quietly dropped constraint reads as a validation that passed.
|
|
202
|
+
*
|
|
203
|
+
* Presence is `Object.hasOwn`, never the `in` operator. An answer is a decoded
|
|
204
|
+
* JSON object, so every property it really has is its own; `in` also reports
|
|
205
|
+
* `Object.prototype`'s members, which would accept a missing required
|
|
206
|
+
* `toString` and check a `constructor` nobody answered against the schema for
|
|
207
|
+
* one.
|
|
208
|
+
*
|
|
209
|
+
* @private
|
|
210
|
+
*/
|
|
211
|
+
const checkAt = (value, schema, path) => {
|
|
212
|
+
const nullable = schema["nullable"] === true;
|
|
213
|
+
const enumeration = schema["enum"];
|
|
214
|
+
if (enumeration !== undefined) {
|
|
215
|
+
const matches = enumeration.some((allowed) => jsonEquals(allowed, value));
|
|
216
|
+
if (!matches)
|
|
217
|
+
return `${at(path)} must be one of ${renderDiagnosticList(enumeration)}.`;
|
|
218
|
+
}
|
|
219
|
+
const type = schema["type"];
|
|
220
|
+
if (!(nullable && value === null) && type !== undefined) {
|
|
221
|
+
const typeComplaint = type === "object"
|
|
222
|
+
? isObject(value) ? undefined : `${at(path)} must be an object.`
|
|
223
|
+
: type === "array"
|
|
224
|
+
? Array.isArray(value) ? undefined : `${at(path)} must be an array.`
|
|
225
|
+
: type === "integer"
|
|
226
|
+
? Number.isInteger(value) ? undefined : `${at(path)} must be an integer.`
|
|
227
|
+
: type === "number"
|
|
228
|
+
// Bounded JSON admission already rejected every non-finite number.
|
|
229
|
+
? typeof value === "number" ? undefined : `${at(path)} must be a number.`
|
|
230
|
+
: type === "string"
|
|
231
|
+
? typeof value === "string" ? undefined : `${at(path)} must be a string.`
|
|
232
|
+
: type === "boolean"
|
|
233
|
+
? typeof value === "boolean" ? undefined : `${at(path)} must be a boolean.`
|
|
234
|
+
: value === null
|
|
235
|
+
? undefined
|
|
236
|
+
: `${at(path)} must be null.`;
|
|
237
|
+
if (typeComplaint !== undefined)
|
|
238
|
+
return typeComplaint;
|
|
239
|
+
}
|
|
240
|
+
// Object and array keywords are independent constraints. JSON Schema does
|
|
241
|
+
// not require a sibling `type`; they apply whenever the instance has the
|
|
242
|
+
// relevant shape and are otherwise ignored.
|
|
243
|
+
if (isObject(value)) {
|
|
244
|
+
const required = schema["required"];
|
|
245
|
+
if (Array.isArray(required)) {
|
|
246
|
+
const missing = required.find((key) => !Object.hasOwn(value, key));
|
|
247
|
+
if (missing !== undefined) {
|
|
248
|
+
return `${at(path)} is missing the required property "${truncateDiagnostic(String(missing))}".`;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
const properties = schema["properties"];
|
|
252
|
+
if (isObject(properties)) {
|
|
253
|
+
for (const [key, property] of Object.entries(properties)) {
|
|
254
|
+
if (!Object.hasOwn(value, key))
|
|
255
|
+
continue;
|
|
256
|
+
const rejection = checkAt(value[key], property, [...path, key]);
|
|
257
|
+
if (rejection !== undefined)
|
|
258
|
+
return rejection;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
if (Array.isArray(value)) {
|
|
263
|
+
const items = schema["items"];
|
|
264
|
+
if (items !== undefined) {
|
|
265
|
+
for (const [index, element] of value.entries()) {
|
|
266
|
+
const rejection = checkAt(element, items, [...path, String(index)]);
|
|
267
|
+
if (rejection !== undefined)
|
|
268
|
+
return rejection;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
return undefined;
|
|
273
|
+
};
|
|
274
|
+
/** Checks schema validity and snapshots both inputs before walking them together.
|
|
275
|
+
* @private
|
|
276
|
+
* @since 1.0.0
|
|
277
|
+
*/
|
|
278
|
+
export const check = (value, schema) => {
|
|
279
|
+
const admittedSchema = BoundedJson.admit(schema, schemaLimits);
|
|
280
|
+
if (!admittedSchema.ok)
|
|
281
|
+
return admittedSchema.complaint;
|
|
282
|
+
const schemaComplaint = validateSchemaAt(admittedSchema.value, [], 0, { visited: 0 });
|
|
283
|
+
if (schemaComplaint !== undefined)
|
|
284
|
+
return schemaComplaint;
|
|
285
|
+
const admittedAnswer = BoundedJson.admit(value, answerLimits);
|
|
286
|
+
if (!admittedAnswer.ok)
|
|
287
|
+
return admittedAnswer.complaint;
|
|
288
|
+
return checkAt(admittedAnswer.value, admittedSchema.value, []);
|
|
289
|
+
};
|
|
290
|
+
/** Walks one schema node under a shared depth and node budget. */
|
|
291
|
+
const validateSchemaAt = (schema, path, depth, budget) => {
|
|
292
|
+
if (depth > maxSchemaDepth) {
|
|
293
|
+
return `${at(path)} exceeds the maximum JSON Schema depth of ${maxSchemaDepth}.`;
|
|
294
|
+
}
|
|
295
|
+
budget.visited++;
|
|
296
|
+
if (budget.visited > maxSchemaNodes) {
|
|
297
|
+
return `${at(path)} exceeds the maximum JSON Schema node count of ${maxSchemaNodes}.`;
|
|
298
|
+
}
|
|
299
|
+
if (!isObject(schema))
|
|
300
|
+
return `${at(path)} is described by something that is not a JSON Schema object.`;
|
|
301
|
+
const unsupported = Object.keys(schema).find((keyword) => !supportedKeywords.includes(keyword));
|
|
302
|
+
if (unsupported !== undefined) {
|
|
303
|
+
return `${at(path)} uses the unsupported JSON Schema keyword "${truncateDiagnostic(unsupported)}".`;
|
|
304
|
+
}
|
|
305
|
+
const enumeration = schema["enum"];
|
|
306
|
+
if (enumeration !== undefined && !Array.isArray(enumeration)) {
|
|
307
|
+
return `${at(path)} declares an "enum" that is not an array.`;
|
|
308
|
+
}
|
|
309
|
+
if (Array.isArray(enumeration) && enumeration.length === 0) {
|
|
310
|
+
return `${at(path)} declares an empty "enum".`;
|
|
311
|
+
}
|
|
312
|
+
if (Object.hasOwn(schema, "required")) {
|
|
313
|
+
const required = schema["required"];
|
|
314
|
+
if (!Array.isArray(required))
|
|
315
|
+
return `${at([...path, "required"])} is not an array.`;
|
|
316
|
+
const invalid = required.findIndex((key) => typeof key !== "string");
|
|
317
|
+
if (invalid !== -1)
|
|
318
|
+
return `${at([...path, "required", String(invalid)])} is not a string.`;
|
|
319
|
+
if (new Set(required).size !== required.length) {
|
|
320
|
+
return `${at([...path, "required"])} contains a duplicate property name.`;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
if (Object.hasOwn(schema, "nullable") && typeof schema["nullable"] !== "boolean") {
|
|
324
|
+
return `${at([...path, "nullable"])} is not a boolean.`;
|
|
325
|
+
}
|
|
326
|
+
const type = schema["type"];
|
|
327
|
+
if (type !== undefined && (typeof type !== "string" || !supportedTypes.has(type))) {
|
|
328
|
+
return `${at(path)} declares the unsupported JSON Schema type ${renderDiagnostic(type)}.`;
|
|
329
|
+
}
|
|
330
|
+
for (const keyword of ["description", "title"]) {
|
|
331
|
+
if (Object.hasOwn(schema, keyword) && typeof schema[keyword] !== "string") {
|
|
332
|
+
return `${at([...path, keyword])} is not a string.`;
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
const properties = schema["properties"];
|
|
336
|
+
if (properties !== undefined) {
|
|
337
|
+
if (!isObject(properties))
|
|
338
|
+
return `${at(path)} declares "properties" that is not an object.`;
|
|
339
|
+
for (const [key, property] of Object.entries(properties)) {
|
|
340
|
+
const complaint = validateSchemaAt(property, [...path, key], depth + 1, budget);
|
|
341
|
+
if (complaint !== undefined)
|
|
342
|
+
return complaint;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
const items = schema["items"];
|
|
346
|
+
return items === undefined ? undefined : validateSchemaAt(items, [...path, "items"], depth + 1, budget);
|
|
347
|
+
};
|
|
348
|
+
/**
|
|
349
|
+
* Checks that a JSON Schema stays inside the bounded subset, at every depth.
|
|
350
|
+
*
|
|
351
|
+
* Returns the first reason the schema is out of bounds, or `undefined` when the
|
|
352
|
+
* whole tree is inside it.
|
|
353
|
+
*
|
|
354
|
+
* @private
|
|
355
|
+
* @since 1.0.0
|
|
356
|
+
*/
|
|
357
|
+
export const validateSchema = (schema, path) => {
|
|
358
|
+
const admitted = BoundedJson.admit(schema, schemaLimits);
|
|
359
|
+
return admitted.ok
|
|
360
|
+
? validateSchemaAt(admitted.value, path, 0, { visited: 0 })
|
|
361
|
+
: admitted.complaint;
|
|
362
|
+
};
|
|
363
|
+
//# sourceMappingURL=JsonSchemaSubset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonSchemaSubset.js","sourceRoot":"","sources":["../../../src/internal/JsonSchemaSubset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAA;AAEhC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAA;AAEjC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAA;AAEzC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAA;AAErC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAA;AAEpC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,GAAG,IAAI,CAAA;AAExC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,GAAG,IAAI,CAAA;AAExC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAA;AAEhC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,GAAG,IAAI,CAAA;AAE5C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,CAAA;AAEvC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAA;AAEpC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAA;AAErC,4DAA4D;AAC5D,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAA;AAErG,+DAA+D;AAC/D,MAAM,iBAAiB,GAAG;IACxB,MAAM;IACN,MAAM;IACN,YAAY;IACZ,UAAU;IACV,OAAO;IACP,UAAU;IACV,aAAa;IACb,OAAO;CACR,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,QAAgB,EAAU,EAAE;IAC7D,MAAM,MAAM,GAAG,WAAW,CAAC,YAAY,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAA;IACrE,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QACtC,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,GAAG,MAAM,KAAK,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,sBAAsB,CAAA;AACzE,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAc,EAAU,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAA;AAEzG;;;;;GAKG;AACH,MAAM,oBAAoB,GAAG,CAAC,MAA8B,EAAU,EAAE,CACtE,kBAAkB,CAChB,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC7G,CAAA;AAEH,+DAA+D;AAC/D,MAAM,EAAE,GAAG,CAAC,IAA2B,EAAU,EAAE,CACjD,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAA;AAE9E,6EAA6E;AAC7E,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE,CACpE,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAEtE,mFAAmF;AACnF,MAAM,UAAU,GAAG,CAAC,IAAa,EAAE,KAAc,EAAW,EAAE;IAC5D,MAAM,OAAO,GAAuC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;IACnE,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,EAAG,CAAA;QAC7B,IAAI,CAAC,KAAK,CAAC;YAAE,SAAQ;QACrB,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAA;YAC5D,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YACtF,SAAQ;QACV,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAA;QAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QACnC,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;YAAE,OAAO,KAAK,CAAA;QAC/C,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YACvD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAE,CAAA;YAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAE,CAAA;YAC1B,IAAI,IAAI,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAA;YAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAClC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAuB;IAC9C,QAAQ,EAAE,cAAc;IACxB,QAAQ,EAAE,cAAc;IACxB,QAAQ,EAAE,cAAc;IACxB,cAAc,EAAE,kBAAkB;IAClC,WAAW,EAAE,eAAe;IAC5B,UAAU,EAAE,cAAc;CAC3B,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAuB;IAC9C,QAAQ,EAAE,mBAAmB;IAC7B,QAAQ,EAAE,mBAAmB;IAC7B,QAAQ,EAAE,cAAc;IACxB,cAAc,EAAE,kBAAkB;IAClC,WAAW,EAAE,eAAe;IAC5B,UAAU,EAAE,cAAc;CAC3B,CAAA;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,GAAG,CACd,KAAc,EACd,MAA+B,EAC/B,IAA2B,EACP,EAAE;IACtB,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,CAAA;IAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;IAClC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAI,WAAsC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;QACrG,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,oBAAoB,CAAC,WAAqC,CAAC,GAAG,CAAA;IACnH,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;IAC3B,IAAI,CAAC,CAAC,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACxD,MAAM,aAAa,GAAG,IAAI,KAAK,QAAQ;YACrC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,qBAAqB;YAChE,CAAC,CAAC,IAAI,KAAK,OAAO;gBAClB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB;gBACpE,CAAC,CAAC,IAAI,KAAK,SAAS;oBACpB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,sBAAsB;oBACzE,CAAC,CAAC,IAAI,KAAK,QAAQ;wBACnB,mEAAmE;wBACnE,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB;wBACzE,CAAC,CAAC,IAAI,KAAK,QAAQ;4BACnB,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB;4BACzE,CAAC,CAAC,IAAI,KAAK,SAAS;gCACpB,CAAC,CAAC,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,qBAAqB;gCAC3E,CAAC,CAAC,KAAK,KAAK,IAAI;oCAChB,CAAC,CAAC,SAAS;oCACX,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAA;QAC/B,IAAI,aAAa,KAAK,SAAS;YAAE,OAAO,aAAa,CAAA;IACvD,CAAC;IAED,0EAA0E;IAC1E,yEAAyE;IACzE,4CAA4C;IAC5C,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;QACnC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAa,CAAC,CAAC,CAAA;YAC5E,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,sCAAsC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAA;YACjG,CAAC;QACH,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAA;QACvC,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACzB,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBACzD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC;oBAAE,SAAQ;gBACxC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,QAAmC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;gBAC1F,IAAI,SAAS,KAAK,SAAS;oBAAE,OAAO,SAAS,CAAA;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;QAC7B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,KAAgC,EAAE,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBAC9F,IAAI,SAAS,KAAK,SAAS;oBAAE,OAAO,SAAS,CAAA;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAc,EAAE,MAAe,EAAsB,EAAE;IAC3E,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAC9D,IAAI,CAAC,cAAc,CAAC,EAAE;QAAE,OAAO,cAAc,CAAC,SAAS,CAAA;IACvD,MAAM,eAAe,GAAG,gBAAgB,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAA;IACrF,IAAI,eAAe,KAAK,SAAS;QAAE,OAAO,eAAe,CAAA;IACzD,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;IAC7D,IAAI,CAAC,cAAc,CAAC,EAAE;QAAE,OAAO,cAAc,CAAC,SAAS,CAAA;IACvD,OAAO,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,KAAgC,EAAE,EAAE,CAAC,CAAA;AAC3F,CAAC,CAAA;AAMD,kEAAkE;AAClE,MAAM,gBAAgB,GAAG,CACvB,MAAe,EACf,IAA2B,EAC3B,KAAa,EACb,MAAoB,EACA,EAAE;IACtB,IAAI,KAAK,GAAG,cAAc,EAAE,CAAC;QAC3B,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,6CAA6C,cAAc,GAAG,CAAA;IAClF,CAAC;IACD,MAAM,CAAC,OAAO,EAAE,CAAA;IAChB,IAAI,MAAM,CAAC,OAAO,GAAG,cAAc,EAAE,CAAC;QACpC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,kDAAkD,cAAc,GAAG,CAAA;IACvF,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,8DAA8D,CAAA;IACvG,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA;IAC/F,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,8CAA8C,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAA;IACrG,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;IAClC,IAAI,WAAW,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7D,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,2CAA2C,CAAA;IAC/D,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAA;IAChD,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;QACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,OAAO,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,mBAAmB,CAAA;QACpF,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAA;QACpE,IAAI,OAAO,KAAK,CAAC,CAAC;YAAE,OAAO,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAA;QAC3F,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC/C,OAAO,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,sCAAsC,CAAA;QAC3E,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE,CAAC;QACjF,OAAO,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,oBAAoB,CAAA;IACzD,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;IAC3B,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAClF,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,8CAA8C,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAA;IAC3F,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,CAAC,aAAa,EAAE,OAAO,CAAU,EAAE,CAAC;QACxD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1E,OAAO,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,mBAAmB,CAAA;QACrD,CAAC;IACH,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAA;IACvC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,+CAA+C,CAAA;QAC5F,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACzD,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,CAAA;YAC/E,IAAI,SAAS,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAA;QAC/C,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;IAC7B,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,CAAA;AACzG,CAAC,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,MAAe,EACf,IAA2B,EACP,EAAE;IACtB,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACxD,OAAO,QAAQ,CAAC,EAAE;QAChB,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QAC3D,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAA;AACxB,CAAC,CAAA","sourcesContent":["/**\n * The bounded JSON Schema subset a human-task answer is checked against.\n *\n * `HumanTask` asks a person for a value and refuses one that does not fit the\n * question. The fit for a `json` question is decided here: a schema is kept\n * inside a deliberately small subset, an answer is checked against it under\n * the same size bounds every human-task value is admitted under, and every\n * rejection is rendered within one diagnostic budget. `HumanTask` re-exports\n * the limits and the two public entry points; this file is the mechanism.\n *\n * @since 1.0.0\n */\n\nimport * as BoundedJson from \"./BoundedJson.ts\"\n\n/**\n * The deepest supported JSON Schema path, counting the root as depth zero.\n *\n * @private\n * @since 1.0.0\n */\nexport const maxSchemaDepth = 32\n\n/**\n * The most schema objects one human-task request may contain.\n *\n * @private\n * @since 1.0.0\n */\nexport const maxSchemaNodes = 512\n\n/**\n * The most JSON values embedded across schema keywords such as `enum`.\n *\n * @private\n * @since 1.0.0\n */\nexport const maxSchemaValueNodes = 10_000\n\n/**\n * The deepest JSON value embedded in a schema, including enum members.\n *\n * @private\n * @since 1.0.0\n */\nexport const maxSchemaValueDepth = 64\n\n/**\n * The most JSON values one answer validation may visit.\n *\n * @private\n * @since 1.0.0\n */\nexport const maxAnswerNodes = 10_000\n\n/**\n * The largest encoded JSON answer that can enter the durable store.\n *\n * @private\n * @since 1.0.0\n */\nexport const maxAnswerBytes = 256 * 1024\n\n/**\n * The largest encoded JSON Schema carried by one question.\n *\n * @private\n * @since 1.0.0\n */\nexport const maxSchemaBytes = 256 * 1024\n\n/**\n * The deepest admitted answer tree.\n *\n * @private\n * @since 1.0.0\n */\nexport const maxAnswerDepth = 64\n\n/**\n * The largest encoded string value admitted in a request or answer.\n *\n * @private\n * @since 1.0.0\n */\nexport const maxJsonStringBytes = 128 * 1024\n\n/**\n * The largest encoded object key admitted in a request or answer.\n *\n * @private\n * @since 1.0.0\n */\nexport const maxJsonKeyBytes = 4 * 1024\n\n/**\n * The most members admitted in one JSON array or object.\n *\n * @private\n * @since 1.0.0\n */\nexport const maxJsonMembers = 10_000\n\n/**\n * The most caller-supplied characters retained in one rendered diagnostic.\n *\n * @private\n * @since 1.0.0\n */\nexport const maxDiagnosticChars = 512\n\n/** The JSON Schema types the bounded subset understands. */\nconst supportedTypes = new Set([\"object\", \"array\", \"string\", \"number\", \"integer\", \"boolean\", \"null\"])\n\n/** The JSON Schema keywords the bounded subset understands. */\nconst supportedKeywords = [\n \"type\",\n \"enum\",\n \"properties\",\n \"required\",\n \"items\",\n \"nullable\",\n \"description\",\n \"title\"\n]\n\n/** Truncates a caller-supplied diagnostic while stating exactly what was dropped.\n * @private\n * @since 1.0.0\n */\nexport const truncateDiagnostic = (rendered: string): string => {\n const prefix = BoundedJson.scalarPrefix(rendered, maxDiagnosticChars)\n return prefix.length === rendered.length\n ? prefix\n : `${prefix} [${rendered.length - prefix.length} characters dropped]`\n}\n\n/** Renders one JSON value for a bounded rejection message.\n * @private\n * @since 1.0.0\n */\nexport const renderDiagnostic = (value: unknown): string => BoundedJson.render(value, maxDiagnosticChars)\n\n/**\n * Renders a value list in its comma-separated diagnostic shape.\n *\n * Every member renders to at least one character, so members past the\n * diagnostic budget can never survive truncation and are not rendered at all.\n */\nconst renderDiagnosticList = (values: ReadonlyArray<unknown>): string =>\n truncateDiagnostic(\n values.slice(0, maxDiagnosticChars).map((value) => BoundedJson.render(value, maxDiagnosticChars)).join(\", \")\n )\n\n/** Renders a JSON pointer-ish path for a rejection message. */\nconst at = (path: ReadonlyArray<string>): string =>\n path.length === 0 ? \"the answer\" : `\"${truncateDiagnostic(path.join(\".\"))}\"`\n\n/** Whether a value is a plain JSON object rather than an array or a null. */\nconst isObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null && !Array.isArray(value)\n\n/** Compares two JSON values structurally without depending on object key order. */\nconst jsonEquals = (left: unknown, right: unknown): boolean => {\n const pending: Array<readonly [unknown, unknown]> = [[left, right]]\n while (pending.length > 0) {\n const [a, b] = pending.pop()!\n if (a === b) continue\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) return false\n for (let index = a.length - 1; index >= 0; index--) pending.push([a[index], b[index]])\n continue\n }\n if (!isObject(a) || !isObject(b)) return false\n const aKeys = Object.keys(a).sort()\n const bKeys = Object.keys(b).sort()\n if (aKeys.length !== bKeys.length) return false\n for (let index = aKeys.length - 1; index >= 0; index--) {\n const aKey = aKeys[index]!\n const bKey = bKeys[index]!\n if (aKey !== bKey) return false\n pending.push([a[aKey], b[bKey]])\n }\n }\n return true\n}\n\n/** The bounds one answer is admitted under.\n * @private\n * @since 1.0.0\n */\nexport const answerLimits: BoundedJson.Limits = {\n maxNodes: maxAnswerNodes,\n maxDepth: maxAnswerDepth,\n maxBytes: maxAnswerBytes,\n maxStringBytes: maxJsonStringBytes,\n maxKeyBytes: maxJsonKeyBytes,\n maxMembers: maxJsonMembers\n}\n\n/** The bounds one schema is admitted under, enum members included.\n * @private\n * @since 1.0.0\n */\nexport const schemaLimits: BoundedJson.Limits = {\n maxNodes: maxSchemaValueNodes,\n maxDepth: maxSchemaValueDepth,\n maxBytes: maxSchemaBytes,\n maxStringBytes: maxJsonStringBytes,\n maxKeyBytes: maxJsonKeyBytes,\n maxMembers: maxJsonMembers\n}\n\n/**\n * Checks a value against the bounded JSON Schema subset, returning the first\n * reason it does not fit.\n *\n * The subset is `type` (`object`, `array`, `string`, `number`, `integer`,\n * `boolean`, `null`), `enum`, `properties`, `required`, `items`, and\n * `nullable`. It is deliberately small: a human-task schema exists to say what\n * shape an answer takes, and every keyword beyond these describes a constraint\n * a person cannot be usefully re-asked about. A schema that reaches outside it\n * is refused as `request_invalid` rather than silently ignored, because a\n * quietly dropped constraint reads as a validation that passed.\n *\n * Presence is `Object.hasOwn`, never the `in` operator. An answer is a decoded\n * JSON object, so every property it really has is its own; `in` also reports\n * `Object.prototype`'s members, which would accept a missing required\n * `toString` and check a `constructor` nobody answered against the schema for\n * one.\n *\n * @private\n */\nconst checkAt = (\n value: unknown,\n schema: Record<string, unknown>,\n path: ReadonlyArray<string>\n): string | undefined => {\n const nullable = schema[\"nullable\"] === true\n const enumeration = schema[\"enum\"]\n if (enumeration !== undefined) {\n const matches = (enumeration as ReadonlyArray<unknown>).some((allowed) => jsonEquals(allowed, value))\n if (!matches) return `${at(path)} must be one of ${renderDiagnosticList(enumeration as ReadonlyArray<unknown>)}.`\n }\n const type = schema[\"type\"]\n if (!(nullable && value === null) && type !== undefined) {\n const typeComplaint = type === \"object\"\n ? isObject(value) ? undefined : `${at(path)} must be an object.`\n : type === \"array\"\n ? Array.isArray(value) ? undefined : `${at(path)} must be an array.`\n : type === \"integer\"\n ? Number.isInteger(value) ? undefined : `${at(path)} must be an integer.`\n : type === \"number\"\n // Bounded JSON admission already rejected every non-finite number.\n ? typeof value === \"number\" ? undefined : `${at(path)} must be a number.`\n : type === \"string\"\n ? typeof value === \"string\" ? undefined : `${at(path)} must be a string.`\n : type === \"boolean\"\n ? typeof value === \"boolean\" ? undefined : `${at(path)} must be a boolean.`\n : value === null\n ? undefined\n : `${at(path)} must be null.`\n if (typeComplaint !== undefined) return typeComplaint\n }\n\n // Object and array keywords are independent constraints. JSON Schema does\n // not require a sibling `type`; they apply whenever the instance has the\n // relevant shape and are otherwise ignored.\n if (isObject(value)) {\n const required = schema[\"required\"]\n if (Array.isArray(required)) {\n const missing = required.find((key) => !Object.hasOwn(value, key as string))\n if (missing !== undefined) {\n return `${at(path)} is missing the required property \"${truncateDiagnostic(String(missing))}\".`\n }\n }\n const properties = schema[\"properties\"]\n if (isObject(properties)) {\n for (const [key, property] of Object.entries(properties)) {\n if (!Object.hasOwn(value, key)) continue\n const rejection = checkAt(value[key], property as Record<string, unknown>, [...path, key])\n if (rejection !== undefined) return rejection\n }\n }\n }\n if (Array.isArray(value)) {\n const items = schema[\"items\"]\n if (items !== undefined) {\n for (const [index, element] of value.entries()) {\n const rejection = checkAt(element, items as Record<string, unknown>, [...path, String(index)])\n if (rejection !== undefined) return rejection\n }\n }\n }\n return undefined\n}\n\n/** Checks schema validity and snapshots both inputs before walking them together.\n * @private\n * @since 1.0.0\n */\nexport const check = (value: unknown, schema: unknown): string | undefined => {\n const admittedSchema = BoundedJson.admit(schema, schemaLimits)\n if (!admittedSchema.ok) return admittedSchema.complaint\n const schemaComplaint = validateSchemaAt(admittedSchema.value, [], 0, { visited: 0 })\n if (schemaComplaint !== undefined) return schemaComplaint\n const admittedAnswer = BoundedJson.admit(value, answerLimits)\n if (!admittedAnswer.ok) return admittedAnswer.complaint\n return checkAt(admittedAnswer.value, admittedSchema.value as Record<string, unknown>, [])\n}\n\ninterface SchemaBudget {\n visited: number\n}\n\n/** Walks one schema node under a shared depth and node budget. */\nconst validateSchemaAt = (\n schema: unknown,\n path: ReadonlyArray<string>,\n depth: number,\n budget: SchemaBudget\n): string | undefined => {\n if (depth > maxSchemaDepth) {\n return `${at(path)} exceeds the maximum JSON Schema depth of ${maxSchemaDepth}.`\n }\n budget.visited++\n if (budget.visited > maxSchemaNodes) {\n return `${at(path)} exceeds the maximum JSON Schema node count of ${maxSchemaNodes}.`\n }\n if (!isObject(schema)) return `${at(path)} is described by something that is not a JSON Schema object.`\n const unsupported = Object.keys(schema).find((keyword) => !supportedKeywords.includes(keyword))\n if (unsupported !== undefined) {\n return `${at(path)} uses the unsupported JSON Schema keyword \"${truncateDiagnostic(unsupported)}\".`\n }\n const enumeration = schema[\"enum\"]\n if (enumeration !== undefined && !Array.isArray(enumeration)) {\n return `${at(path)} declares an \"enum\" that is not an array.`\n }\n if (Array.isArray(enumeration) && enumeration.length === 0) {\n return `${at(path)} declares an empty \"enum\".`\n }\n if (Object.hasOwn(schema, \"required\")) {\n const required = schema[\"required\"]\n if (!Array.isArray(required)) return `${at([...path, \"required\"])} is not an array.`\n const invalid = required.findIndex((key) => typeof key !== \"string\")\n if (invalid !== -1) return `${at([...path, \"required\", String(invalid)])} is not a string.`\n if (new Set(required).size !== required.length) {\n return `${at([...path, \"required\"])} contains a duplicate property name.`\n }\n }\n if (Object.hasOwn(schema, \"nullable\") && typeof schema[\"nullable\"] !== \"boolean\") {\n return `${at([...path, \"nullable\"])} is not a boolean.`\n }\n const type = schema[\"type\"]\n if (type !== undefined && (typeof type !== \"string\" || !supportedTypes.has(type))) {\n return `${at(path)} declares the unsupported JSON Schema type ${renderDiagnostic(type)}.`\n }\n for (const keyword of [\"description\", \"title\"] as const) {\n if (Object.hasOwn(schema, keyword) && typeof schema[keyword] !== \"string\") {\n return `${at([...path, keyword])} is not a string.`\n }\n }\n const properties = schema[\"properties\"]\n if (properties !== undefined) {\n if (!isObject(properties)) return `${at(path)} declares \"properties\" that is not an object.`\n for (const [key, property] of Object.entries(properties)) {\n const complaint = validateSchemaAt(property, [...path, key], depth + 1, budget)\n if (complaint !== undefined) return complaint\n }\n }\n const items = schema[\"items\"]\n return items === undefined ? undefined : validateSchemaAt(items, [...path, \"items\"], depth + 1, budget)\n}\n\n/**\n * Checks that a JSON Schema stays inside the bounded subset, at every depth.\n *\n * Returns the first reason the schema is out of bounds, or `undefined` when the\n * whole tree is inside it.\n *\n * @private\n * @since 1.0.0\n */\nexport const validateSchema = (\n schema: unknown,\n path: ReadonlyArray<string>\n): string | undefined => {\n const admitted = BoundedJson.admit(schema, schemaLimits)\n return admitted.ok\n ? validateSchemaAt(admitted.value, path, 0, { visited: 0 })\n : admitted.complaint\n}\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The two markers that let `Flow.isOutcome` tell an authored `done`/`to`/`park`
|
|
3
|
+
* from ordinary data. `Flow/Outcome.ts` stamps the node marker, `Graph.build`
|
|
4
|
+
* and the interpreter stamp the value marker, and `isOutcome` reads it.
|
|
5
|
+
*
|
|
6
|
+
* @since 0.1.0
|
|
7
|
+
*/
|
|
8
|
+
/** Stamped on the AST of a node built by `done`/`to`/`park`.
|
|
9
|
+
* @private
|
|
10
|
+
* @since 0.1.0
|
|
11
|
+
*/
|
|
12
|
+
export declare const OutcomeNodeTypeId: unique symbol;
|
|
13
|
+
/** Stamped on a resolved outcome value.
|
|
14
|
+
* @private
|
|
15
|
+
* @since 0.1.0
|
|
16
|
+
*/
|
|
17
|
+
export declare const OutcomeValueTypeId: unique symbol;
|
|
18
|
+
//# sourceMappingURL=OutcomeMarker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OutcomeMarker.d.ts","sourceRoot":"","sources":["../../../src/internal/OutcomeMarker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,OAAO,MAAoD,CAAA;AAE3F;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,OAAO,MAAqD,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The two markers that let `Flow.isOutcome` tell an authored `done`/`to`/`park`
|
|
3
|
+
* from ordinary data. `Flow/Outcome.ts` stamps the node marker, `Graph.build`
|
|
4
|
+
* and the interpreter stamp the value marker, and `isOutcome` reads it.
|
|
5
|
+
*
|
|
6
|
+
* @since 0.1.0
|
|
7
|
+
*/
|
|
8
|
+
/** Stamped on the AST of a node built by `done`/`to`/`park`.
|
|
9
|
+
* @private
|
|
10
|
+
* @since 0.1.0
|
|
11
|
+
*/
|
|
12
|
+
export const OutcomeNodeTypeId = Symbol.for("@smthrs/flow/Flow/OutcomeNode");
|
|
13
|
+
/** Stamped on a resolved outcome value.
|
|
14
|
+
* @private
|
|
15
|
+
* @since 0.1.0
|
|
16
|
+
*/
|
|
17
|
+
export const OutcomeValueTypeId = Symbol.for("@smthrs/flow/Flow/OutcomeValue");
|
|
18
|
+
//# sourceMappingURL=OutcomeMarker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OutcomeMarker.js","sourceRoot":"","sources":["../../../src/internal/OutcomeMarker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAkB,MAAM,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAA;AAE3F;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAkB,MAAM,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAA","sourcesContent":["/**\n * The two markers that let `Flow.isOutcome` tell an authored `done`/`to`/`park`\n * from ordinary data. `Flow/Outcome.ts` stamps the node marker, `Graph.build`\n * and the interpreter stamp the value marker, and `isOutcome` reads it.\n *\n * @since 0.1.0\n */\n\n/** Stamped on the AST of a node built by `done`/`to`/`park`.\n * @private\n * @since 0.1.0\n */\nexport const OutcomeNodeTypeId: unique symbol = Symbol.for(\"@smthrs/flow/Flow/OutcomeNode\")\n\n/** Stamped on a resolved outcome value.\n * @private\n * @since 0.1.0\n */\nexport const OutcomeValueTypeId: unique symbol = Symbol.for(\"@smthrs/flow/Flow/OutcomeValue\")\n"]}
|