@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.
Files changed (654) hide show
  1. package/CHANGELOG.md +160 -0
  2. package/LICENSE +21 -0
  3. package/README.md +210 -2
  4. package/THIRD_PARTY_NOTICES.md +52 -0
  5. package/dist/cjs/Action/Action.d.ts +250 -0
  6. package/dist/cjs/Action/Action.d.ts.map +1 -0
  7. package/dist/cjs/Action/Action.js +42 -0
  8. package/dist/cjs/Action/Action.js.map +7 -0
  9. package/dist/cjs/Action/AttemptTimedOut.d.ts +33 -0
  10. package/dist/cjs/Action/AttemptTimedOut.d.ts.map +1 -0
  11. package/dist/cjs/Action/AttemptTimedOut.js +51 -0
  12. package/dist/cjs/Action/AttemptTimedOut.js.map +7 -0
  13. package/dist/cjs/Action/BoundaryMode.d.ts +29 -0
  14. package/dist/cjs/Action/BoundaryMode.d.ts.map +1 -0
  15. package/dist/cjs/Action/BoundaryMode.js +36 -0
  16. package/dist/cjs/Action/BoundaryMode.js.map +7 -0
  17. package/dist/cjs/Action/CacheEnvironment.d.ts +158 -0
  18. package/dist/cjs/Action/CacheEnvironment.d.ts.map +1 -0
  19. package/dist/cjs/Action/CacheEnvironment.js +57 -0
  20. package/dist/cjs/Action/CacheEnvironment.js.map +7 -0
  21. package/dist/cjs/Action/ConcurrentKeylessDispatch.d.ts +34 -0
  22. package/dist/cjs/Action/ConcurrentKeylessDispatch.d.ts.map +1 -0
  23. package/dist/cjs/Action/ConcurrentKeylessDispatch.js +46 -0
  24. package/dist/cjs/Action/ConcurrentKeylessDispatch.js.map +7 -0
  25. package/dist/cjs/Action/Context.d.ts +131 -0
  26. package/dist/cjs/Action/Context.d.ts.map +1 -0
  27. package/dist/cjs/Action/Context.js +68 -0
  28. package/dist/cjs/Action/Context.js.map +7 -0
  29. package/dist/cjs/Action/DuplicateImplementation.d.ts +20 -0
  30. package/dist/cjs/Action/DuplicateImplementation.d.ts.map +1 -0
  31. package/dist/cjs/Action/DuplicateImplementation.js +46 -0
  32. package/dist/cjs/Action/DuplicateImplementation.js.map +7 -0
  33. package/dist/cjs/Action/FileBoundary.d.ts +59 -0
  34. package/dist/cjs/Action/FileBoundary.d.ts.map +1 -0
  35. package/dist/cjs/Action/FileBoundary.js +81 -0
  36. package/dist/cjs/Action/FileBoundary.js.map +7 -0
  37. package/dist/cjs/Action/FileInput.d.ts +28 -0
  38. package/dist/cjs/Action/FileInput.d.ts.map +1 -0
  39. package/dist/cjs/Action/FileInput.js +42 -0
  40. package/dist/cjs/Action/FileInput.js.map +7 -0
  41. package/dist/cjs/Action/Filegroup.d.ts +16 -0
  42. package/dist/cjs/Action/Filegroup.d.ts.map +1 -0
  43. package/dist/cjs/Action/Filegroup.js +27 -0
  44. package/dist/cjs/Action/Filegroup.js.map +7 -0
  45. package/dist/cjs/Action/Glob.d.ts +8 -0
  46. package/dist/cjs/Action/Glob.d.ts.map +1 -0
  47. package/dist/cjs/Action/Glob.js +28 -0
  48. package/dist/cjs/Action/Glob.js.map +7 -0
  49. package/dist/cjs/Action/ImplementationVersionMismatch.d.ts +26 -0
  50. package/dist/cjs/Action/ImplementationVersionMismatch.d.ts.map +1 -0
  51. package/dist/cjs/Action/ImplementationVersionMismatch.js +45 -0
  52. package/dist/cjs/Action/ImplementationVersionMismatch.js.map +7 -0
  53. package/dist/cjs/Action/Implementations.d.ts +114 -0
  54. package/dist/cjs/Action/Implementations.d.ts.map +1 -0
  55. package/dist/cjs/Action/Implementations.js +65 -0
  56. package/dist/cjs/Action/Implementations.js.map +7 -0
  57. package/dist/cjs/Action/InfraInterrupt.d.ts +26 -0
  58. package/dist/cjs/Action/InfraInterrupt.d.ts.map +1 -0
  59. package/dist/cjs/Action/InfraInterrupt.js +46 -0
  60. package/dist/cjs/Action/InfraInterrupt.js.map +7 -0
  61. package/dist/cjs/Action/InfraInterruptRetriesExhausted.d.ts +33 -0
  62. package/dist/cjs/Action/InfraInterruptRetriesExhausted.d.ts.map +1 -0
  63. package/dist/cjs/Action/InfraInterruptRetriesExhausted.js +54 -0
  64. package/dist/cjs/Action/InfraInterruptRetriesExhausted.js.map +7 -0
  65. package/dist/cjs/Action/IrreversibleRetryRequiresIdempotencyKey.d.ts +26 -0
  66. package/dist/cjs/Action/IrreversibleRetryRequiresIdempotencyKey.d.ts.map +1 -0
  67. package/dist/cjs/Action/IrreversibleRetryRequiresIdempotencyKey.js +47 -0
  68. package/dist/cjs/Action/IrreversibleRetryRequiresIdempotencyKey.js.map +7 -0
  69. package/dist/cjs/Action/StepIdentity.d.ts +153 -0
  70. package/dist/cjs/Action/StepIdentity.d.ts.map +1 -0
  71. package/dist/cjs/Action/StepIdentity.js +75 -0
  72. package/dist/cjs/Action/StepIdentity.js.map +7 -0
  73. package/dist/cjs/Action/TreeArtifact.d.ts +8 -0
  74. package/dist/cjs/Action/TreeArtifact.d.ts.map +1 -0
  75. package/dist/cjs/Action/TreeArtifact.js +25 -0
  76. package/dist/cjs/Action/TreeArtifact.js.map +7 -0
  77. package/dist/cjs/Action/TypeId.d.ts +8 -0
  78. package/dist/cjs/Action/TypeId.d.ts.map +1 -0
  79. package/dist/cjs/Action/TypeId.js +25 -0
  80. package/dist/cjs/Action/TypeId.js.map +7 -0
  81. package/dist/cjs/Action/UncanonicalIdempotencyKey.d.ts +32 -0
  82. package/dist/cjs/Action/UncanonicalIdempotencyKey.d.ts.map +1 -0
  83. package/dist/cjs/Action/UncanonicalIdempotencyKey.js +51 -0
  84. package/dist/cjs/Action/UncanonicalIdempotencyKey.js.map +7 -0
  85. package/dist/cjs/Action/idempotencyKey.d.ts +21 -0
  86. package/dist/cjs/Action/idempotencyKey.d.ts.map +1 -0
  87. package/dist/cjs/Action/idempotencyKey.js +59 -0
  88. package/dist/cjs/Action/idempotencyKey.js.map +7 -0
  89. package/dist/cjs/Action/index.d.ts +29 -0
  90. package/dist/cjs/Action/index.d.ts.map +1 -0
  91. package/dist/cjs/Action/index.js +60 -0
  92. package/dist/cjs/Action/index.js.map +7 -0
  93. package/dist/cjs/Action/make.d.ts +128 -0
  94. package/dist/cjs/Action/make.d.ts.map +1 -0
  95. package/dist/cjs/Action/make.js +373 -0
  96. package/dist/cjs/Action/make.js.map +7 -0
  97. package/dist/cjs/Action/raceAll.d.ts +21 -0
  98. package/dist/cjs/Action/raceAll.d.ts.map +1 -0
  99. package/dist/cjs/Action/raceAll.js +46 -0
  100. package/dist/cjs/Action/raceAll.js.map +7 -0
  101. package/dist/cjs/Action/retry.d.ts +19 -0
  102. package/dist/cjs/Action/retry.d.ts.map +1 -0
  103. package/dist/cjs/Action/retry.js +75 -0
  104. package/dist/cjs/Action/retry.js.map +7 -0
  105. package/dist/cjs/Deadline.d.ts +105 -0
  106. package/dist/cjs/Deadline.d.ts.map +1 -0
  107. package/dist/cjs/Deadline.js +104 -0
  108. package/dist/cjs/Deadline.js.map +7 -0
  109. package/dist/cjs/DurableClock.d.ts +61 -0
  110. package/dist/cjs/DurableClock.d.ts.map +1 -0
  111. package/dist/cjs/DurableClock.js +90 -0
  112. package/dist/cjs/DurableClock.js.map +7 -0
  113. package/dist/cjs/DurableDeferred.d.ts +311 -0
  114. package/dist/cjs/DurableDeferred.d.ts.map +1 -0
  115. package/dist/cjs/DurableDeferred.js +322 -0
  116. package/dist/cjs/DurableDeferred.js.map +7 -0
  117. package/dist/cjs/DurableQueue.d.ts +160 -0
  118. package/dist/cjs/DurableQueue.d.ts.map +1 -0
  119. package/dist/cjs/DurableQueue.js +229 -0
  120. package/dist/cjs/DurableQueue.js.map +7 -0
  121. package/dist/cjs/ExternalJob.d.ts +179 -0
  122. package/dist/cjs/ExternalJob.d.ts.map +1 -0
  123. package/dist/cjs/ExternalJob.js +338 -0
  124. package/dist/cjs/ExternalJob.js.map +7 -0
  125. package/dist/cjs/Fault.d.ts +131 -0
  126. package/dist/cjs/Fault.d.ts.map +1 -0
  127. package/dist/cjs/Fault.js +157 -0
  128. package/dist/cjs/Fault.js.map +7 -0
  129. package/dist/cjs/Flow/Annotations.d.ts +245 -0
  130. package/dist/cjs/Flow/Annotations.d.ts.map +1 -0
  131. package/dist/cjs/Flow/Annotations.js +72 -0
  132. package/dist/cjs/Flow/Annotations.js.map +7 -0
  133. package/dist/cjs/Flow/CapabilityCeiling.d.ts +21 -0
  134. package/dist/cjs/Flow/CapabilityCeiling.d.ts.map +1 -0
  135. package/dist/cjs/Flow/CapabilityCeiling.js +49 -0
  136. package/dist/cjs/Flow/CapabilityCeiling.js.map +7 -0
  137. package/dist/cjs/Flow/DeadlineExceeded.d.ts +33 -0
  138. package/dist/cjs/Flow/DeadlineExceeded.d.ts.map +1 -0
  139. package/dist/cjs/Flow/DeadlineExceeded.js +52 -0
  140. package/dist/cjs/Flow/DeadlineExceeded.js.map +7 -0
  141. package/dist/cjs/Flow/ExecutionIdRequired.d.ts +25 -0
  142. package/dist/cjs/Flow/ExecutionIdRequired.d.ts.map +1 -0
  143. package/dist/cjs/Flow/ExecutionIdRequired.js +46 -0
  144. package/dist/cjs/Flow/ExecutionIdRequired.js.map +7 -0
  145. package/dist/cjs/Flow/ExecutionIds.d.ts +80 -0
  146. package/dist/cjs/Flow/ExecutionIds.d.ts.map +1 -0
  147. package/dist/cjs/Flow/ExecutionIds.js +66 -0
  148. package/dist/cjs/Flow/ExecutionIds.js.map +7 -0
  149. package/dist/cjs/Flow/Flow.d.ts +422 -0
  150. package/dist/cjs/Flow/Flow.d.ts.map +1 -0
  151. package/dist/cjs/Flow/Flow.js +17 -0
  152. package/dist/cjs/Flow/Flow.js.map +7 -0
  153. package/dist/cjs/Flow/MaxRoundsExceeded.d.ts +35 -0
  154. package/dist/cjs/Flow/MaxRoundsExceeded.d.ts.map +1 -0
  155. package/dist/cjs/Flow/MaxRoundsExceeded.js +50 -0
  156. package/dist/cjs/Flow/MaxRoundsExceeded.js.map +7 -0
  157. package/dist/cjs/Flow/Outcome.d.ts +162 -0
  158. package/dist/cjs/Flow/Outcome.d.ts.map +1 -0
  159. package/dist/cjs/Flow/Outcome.js +80 -0
  160. package/dist/cjs/Flow/Outcome.js.map +7 -0
  161. package/dist/cjs/Flow/Result.d.ts +186 -0
  162. package/dist/cjs/Flow/Result.d.ts.map +1 -0
  163. package/dist/cjs/Flow/Result.js +159 -0
  164. package/dist/cjs/Flow/Result.js.map +7 -0
  165. package/dist/cjs/Flow/Runtime.d.ts +98 -0
  166. package/dist/cjs/Flow/Runtime.d.ts.map +1 -0
  167. package/dist/cjs/Flow/Runtime.js +160 -0
  168. package/dist/cjs/Flow/Runtime.js.map +7 -0
  169. package/dist/cjs/Flow/TypeId.d.ts +8 -0
  170. package/dist/cjs/Flow/TypeId.d.ts.map +1 -0
  171. package/dist/cjs/Flow/TypeId.js +25 -0
  172. package/dist/cjs/Flow/TypeId.js.map +7 -0
  173. package/dist/cjs/Flow/index.d.ts +17 -0
  174. package/dist/cjs/Flow/index.d.ts.map +1 -0
  175. package/dist/cjs/Flow/index.js +29 -0
  176. package/dist/cjs/Flow/index.js.map +7 -0
  177. package/dist/cjs/Flow/internal.d.ts +34 -0
  178. package/dist/cjs/Flow/internal.d.ts.map +1 -0
  179. package/dist/cjs/Flow/internal.js +187 -0
  180. package/dist/cjs/Flow/internal.js.map +7 -0
  181. package/dist/cjs/Flow/make.d.ts +134 -0
  182. package/dist/cjs/Flow/make.d.ts.map +1 -0
  183. package/dist/cjs/Flow/make.js +104 -0
  184. package/dist/cjs/Flow/make.js.map +7 -0
  185. package/dist/cjs/FlowRuntime/CancelRequestFailed.d.ts +55 -0
  186. package/dist/cjs/FlowRuntime/CancelRequestFailed.d.ts.map +1 -0
  187. package/dist/cjs/FlowRuntime/CancelRequestFailed.js +51 -0
  188. package/dist/cjs/FlowRuntime/CancelRequestFailed.js.map +7 -0
  189. package/dist/cjs/FlowRuntime/ExecutionIdentityConflict.d.ts +23 -0
  190. package/dist/cjs/FlowRuntime/ExecutionIdentityConflict.d.ts.map +1 -0
  191. package/dist/cjs/FlowRuntime/ExecutionIdentityConflict.js +55 -0
  192. package/dist/cjs/FlowRuntime/ExecutionIdentityConflict.js.map +7 -0
  193. package/dist/cjs/FlowRuntime/FlowCycleDetected.d.ts +28 -0
  194. package/dist/cjs/FlowRuntime/FlowCycleDetected.d.ts.map +1 -0
  195. package/dist/cjs/FlowRuntime/FlowCycleDetected.js +49 -0
  196. package/dist/cjs/FlowRuntime/FlowCycleDetected.js.map +7 -0
  197. package/dist/cjs/FlowRuntime/FlowExecutionNotFound.d.ts +38 -0
  198. package/dist/cjs/FlowRuntime/FlowExecutionNotFound.d.ts.map +1 -0
  199. package/dist/cjs/FlowRuntime/FlowExecutionNotFound.js +53 -0
  200. package/dist/cjs/FlowRuntime/FlowExecutionNotFound.js.map +7 -0
  201. package/dist/cjs/FlowRuntime/FlowInstance.d.ts +115 -0
  202. package/dist/cjs/FlowRuntime/FlowInstance.d.ts.map +1 -0
  203. package/dist/cjs/FlowRuntime/FlowInstance.js +37 -0
  204. package/dist/cjs/FlowRuntime/FlowInstance.js.map +7 -0
  205. package/dist/cjs/FlowRuntime/FlowRuntime.d.ts +198 -0
  206. package/dist/cjs/FlowRuntime/FlowRuntime.d.ts.map +1 -0
  207. package/dist/cjs/FlowRuntime/FlowRuntime.js +37 -0
  208. package/dist/cjs/FlowRuntime/FlowRuntime.js.map +7 -0
  209. package/dist/cjs/FlowRuntime/NodeRecord.d.ts +175 -0
  210. package/dist/cjs/FlowRuntime/NodeRecord.d.ts.map +1 -0
  211. package/dist/cjs/FlowRuntime/NodeRecord.js +17 -0
  212. package/dist/cjs/FlowRuntime/NodeRecord.js.map +7 -0
  213. package/dist/cjs/FlowRuntime/WaitingAnnotation.d.ts +69 -0
  214. package/dist/cjs/FlowRuntime/WaitingAnnotation.d.ts.map +1 -0
  215. package/dist/cjs/FlowRuntime/WaitingAnnotation.js +53 -0
  216. package/dist/cjs/FlowRuntime/WaitingAnnotation.js.map +7 -0
  217. package/dist/cjs/FlowRuntime/index.d.ts +14 -0
  218. package/dist/cjs/FlowRuntime/index.d.ts.map +1 -0
  219. package/dist/cjs/FlowRuntime/index.js +26 -0
  220. package/dist/cjs/FlowRuntime/index.js.map +7 -0
  221. package/dist/cjs/Graph.d.ts +325 -0
  222. package/dist/cjs/Graph.d.ts.map +1 -0
  223. package/dist/cjs/Graph.js +1021 -0
  224. package/dist/cjs/Graph.js.map +7 -0
  225. package/dist/cjs/HumanTask.d.ts +440 -0
  226. package/dist/cjs/HumanTask.d.ts.map +1 -0
  227. package/dist/cjs/HumanTask.js +413 -0
  228. package/dist/cjs/HumanTask.js.map +7 -0
  229. package/dist/cjs/Interpreter.d.ts +222 -0
  230. package/dist/cjs/Interpreter.d.ts.map +1 -0
  231. package/dist/cjs/Interpreter.js +888 -0
  232. package/dist/cjs/Interpreter.js.map +7 -0
  233. package/dist/cjs/Poll.d.ts +238 -0
  234. package/dist/cjs/Poll.d.ts.map +1 -0
  235. package/dist/cjs/Poll.js +150 -0
  236. package/dist/cjs/Poll.js.map +7 -0
  237. package/dist/cjs/RetryPolicy.d.ts +273 -0
  238. package/dist/cjs/RetryPolicy.d.ts.map +1 -0
  239. package/dist/cjs/RetryPolicy.js +251 -0
  240. package/dist/cjs/RetryPolicy.js.map +7 -0
  241. package/dist/cjs/Sleep.d.ts +98 -0
  242. package/dist/cjs/Sleep.d.ts.map +1 -0
  243. package/dist/cjs/Sleep.js +133 -0
  244. package/dist/cjs/Sleep.js.map +7 -0
  245. package/dist/cjs/Stall.d.ts +173 -0
  246. package/dist/cjs/Stall.d.ts.map +1 -0
  247. package/dist/cjs/Stall.js +92 -0
  248. package/dist/cjs/Stall.js.map +7 -0
  249. package/dist/cjs/WaitFor.d.ts +109 -0
  250. package/dist/cjs/WaitFor.d.ts.map +1 -0
  251. package/dist/cjs/WaitFor.js +117 -0
  252. package/dist/cjs/WaitFor.js.map +7 -0
  253. package/dist/cjs/index.d.ts +107 -0
  254. package/dist/cjs/index.d.ts.map +1 -0
  255. package/dist/cjs/index.js +69 -0
  256. package/dist/cjs/index.js.map +7 -0
  257. package/dist/cjs/internal/BoundedJson.d.ts +48 -0
  258. package/dist/cjs/internal/BoundedJson.d.ts.map +1 -0
  259. package/dist/cjs/internal/BoundedJson.js +96 -0
  260. package/dist/cjs/internal/BoundedJson.js.map +7 -0
  261. package/dist/cjs/internal/DeclarationSite.d.ts +135 -0
  262. package/dist/cjs/internal/DeclarationSite.d.ts.map +1 -0
  263. package/dist/cjs/internal/DeclarationSite.js +89 -0
  264. package/dist/cjs/internal/DeclarationSite.js.map +7 -0
  265. package/dist/cjs/internal/Declarations.d.ts +35 -0
  266. package/dist/cjs/internal/Declarations.d.ts.map +1 -0
  267. package/dist/cjs/internal/Declarations.js +50 -0
  268. package/dist/cjs/internal/Declarations.js.map +7 -0
  269. package/dist/cjs/internal/ExecutionMiddleware.d.ts +21 -0
  270. package/dist/cjs/internal/ExecutionMiddleware.d.ts.map +1 -0
  271. package/dist/cjs/internal/ExecutionMiddleware.js +39 -0
  272. package/dist/cjs/internal/ExecutionMiddleware.js.map +7 -0
  273. package/dist/cjs/internal/JsonSchemaSubset.d.ts +133 -0
  274. package/dist/cjs/internal/JsonSchemaSubset.d.ts.map +1 -0
  275. package/dist/cjs/internal/JsonSchemaSubset.js +229 -0
  276. package/dist/cjs/internal/JsonSchemaSubset.js.map +7 -0
  277. package/dist/cjs/internal/OutcomeMarker.d.ts +18 -0
  278. package/dist/cjs/internal/OutcomeMarker.d.ts.map +1 -0
  279. package/dist/cjs/internal/OutcomeMarker.js +27 -0
  280. package/dist/cjs/internal/OutcomeMarker.js.map +7 -0
  281. package/dist/cjs/package.json +1 -0
  282. package/dist/esm/Action/Action.d.ts +250 -0
  283. package/dist/esm/Action/Action.d.ts.map +1 -0
  284. package/dist/esm/Action/Action.js +30 -0
  285. package/dist/esm/Action/Action.js.map +1 -0
  286. package/dist/esm/Action/AttemptTimedOut.d.ts +33 -0
  287. package/dist/esm/Action/AttemptTimedOut.d.ts.map +1 -0
  288. package/dist/esm/Action/AttemptTimedOut.js +32 -0
  289. package/dist/esm/Action/AttemptTimedOut.js.map +1 -0
  290. package/dist/esm/Action/BoundaryMode.d.ts +29 -0
  291. package/dist/esm/Action/BoundaryMode.d.ts.map +1 -0
  292. package/dist/esm/Action/BoundaryMode.js +23 -0
  293. package/dist/esm/Action/BoundaryMode.js.map +1 -0
  294. package/dist/esm/Action/CacheEnvironment.d.ts +158 -0
  295. package/dist/esm/Action/CacheEnvironment.d.ts.map +1 -0
  296. package/dist/esm/Action/CacheEnvironment.js +130 -0
  297. package/dist/esm/Action/CacheEnvironment.js.map +1 -0
  298. package/dist/esm/Action/ConcurrentKeylessDispatch.d.ts +34 -0
  299. package/dist/esm/Action/ConcurrentKeylessDispatch.d.ts.map +1 -0
  300. package/dist/esm/Action/ConcurrentKeylessDispatch.js +33 -0
  301. package/dist/esm/Action/ConcurrentKeylessDispatch.js.map +1 -0
  302. package/dist/esm/Action/Context.d.ts +131 -0
  303. package/dist/esm/Action/Context.d.ts.map +1 -0
  304. package/dist/esm/Action/Context.js +99 -0
  305. package/dist/esm/Action/Context.js.map +1 -0
  306. package/dist/esm/Action/DuplicateImplementation.d.ts +20 -0
  307. package/dist/esm/Action/DuplicateImplementation.d.ts.map +1 -0
  308. package/dist/esm/Action/DuplicateImplementation.js +20 -0
  309. package/dist/esm/Action/DuplicateImplementation.js.map +1 -0
  310. package/dist/esm/Action/FileBoundary.d.ts +59 -0
  311. package/dist/esm/Action/FileBoundary.d.ts.map +1 -0
  312. package/dist/esm/Action/FileBoundary.js +60 -0
  313. package/dist/esm/Action/FileBoundary.js.map +1 -0
  314. package/dist/esm/Action/FileInput.d.ts +28 -0
  315. package/dist/esm/Action/FileInput.d.ts.map +1 -0
  316. package/dist/esm/Action/FileInput.js +32 -0
  317. package/dist/esm/Action/FileInput.js.map +1 -0
  318. package/dist/esm/Action/Filegroup.d.ts +16 -0
  319. package/dist/esm/Action/Filegroup.d.ts.map +1 -0
  320. package/dist/esm/Action/Filegroup.js +15 -0
  321. package/dist/esm/Action/Filegroup.js.map +1 -0
  322. package/dist/esm/Action/Glob.d.ts +8 -0
  323. package/dist/esm/Action/Glob.d.ts.map +1 -0
  324. package/dist/esm/Action/Glob.js +7 -0
  325. package/dist/esm/Action/Glob.js.map +1 -0
  326. package/dist/esm/Action/ImplementationVersionMismatch.d.ts +26 -0
  327. package/dist/esm/Action/ImplementationVersionMismatch.d.ts.map +1 -0
  328. package/dist/esm/Action/ImplementationVersionMismatch.js +24 -0
  329. package/dist/esm/Action/ImplementationVersionMismatch.js.map +1 -0
  330. package/dist/esm/Action/Implementations.d.ts +114 -0
  331. package/dist/esm/Action/Implementations.d.ts.map +1 -0
  332. package/dist/esm/Action/Implementations.js +94 -0
  333. package/dist/esm/Action/Implementations.js.map +1 -0
  334. package/dist/esm/Action/InfraInterrupt.d.ts +26 -0
  335. package/dist/esm/Action/InfraInterrupt.d.ts.map +1 -0
  336. package/dist/esm/Action/InfraInterrupt.js +25 -0
  337. package/dist/esm/Action/InfraInterrupt.js.map +1 -0
  338. package/dist/esm/Action/InfraInterruptRetriesExhausted.d.ts +33 -0
  339. package/dist/esm/Action/InfraInterruptRetriesExhausted.d.ts.map +1 -0
  340. package/dist/esm/Action/InfraInterruptRetriesExhausted.js +32 -0
  341. package/dist/esm/Action/InfraInterruptRetriesExhausted.js.map +1 -0
  342. package/dist/esm/Action/IrreversibleRetryRequiresIdempotencyKey.d.ts +26 -0
  343. package/dist/esm/Action/IrreversibleRetryRequiresIdempotencyKey.d.ts.map +1 -0
  344. package/dist/esm/Action/IrreversibleRetryRequiresIdempotencyKey.js +25 -0
  345. package/dist/esm/Action/IrreversibleRetryRequiresIdempotencyKey.js.map +1 -0
  346. package/dist/esm/Action/StepIdentity.d.ts +153 -0
  347. package/dist/esm/Action/StepIdentity.d.ts.map +1 -0
  348. package/dist/esm/Action/StepIdentity.js +139 -0
  349. package/dist/esm/Action/StepIdentity.js.map +1 -0
  350. package/dist/esm/Action/TreeArtifact.d.ts +8 -0
  351. package/dist/esm/Action/TreeArtifact.d.ts.map +1 -0
  352. package/dist/esm/Action/TreeArtifact.js +7 -0
  353. package/dist/esm/Action/TreeArtifact.js.map +1 -0
  354. package/dist/esm/Action/TypeId.d.ts +8 -0
  355. package/dist/esm/Action/TypeId.d.ts.map +1 -0
  356. package/dist/esm/Action/TypeId.js +9 -0
  357. package/dist/esm/Action/TypeId.js.map +1 -0
  358. package/dist/esm/Action/UncanonicalIdempotencyKey.d.ts +32 -0
  359. package/dist/esm/Action/UncanonicalIdempotencyKey.d.ts.map +1 -0
  360. package/dist/esm/Action/UncanonicalIdempotencyKey.js +31 -0
  361. package/dist/esm/Action/UncanonicalIdempotencyKey.js.map +1 -0
  362. package/dist/esm/Action/idempotencyKey.d.ts +21 -0
  363. package/dist/esm/Action/idempotencyKey.d.ts.map +1 -0
  364. package/dist/esm/Action/idempotencyKey.js +50 -0
  365. package/dist/esm/Action/idempotencyKey.js.map +1 -0
  366. package/dist/esm/Action/index.d.ts +29 -0
  367. package/dist/esm/Action/index.d.ts.map +1 -0
  368. package/dist/esm/Action/index.js +30 -0
  369. package/dist/esm/Action/index.js.map +1 -0
  370. package/dist/esm/Action/make.d.ts +128 -0
  371. package/dist/esm/Action/make.d.ts.map +1 -0
  372. package/dist/esm/Action/make.js +405 -0
  373. package/dist/esm/Action/make.js.map +1 -0
  374. package/dist/esm/Action/raceAll.d.ts +21 -0
  375. package/dist/esm/Action/raceAll.d.ts.map +1 -0
  376. package/dist/esm/Action/raceAll.js +20 -0
  377. package/dist/esm/Action/raceAll.js.map +1 -0
  378. package/dist/esm/Action/retry.d.ts +19 -0
  379. package/dist/esm/Action/retry.d.ts.map +1 -0
  380. package/dist/esm/Action/retry.js +72 -0
  381. package/dist/esm/Action/retry.js.map +1 -0
  382. package/dist/esm/Deadline.d.ts +105 -0
  383. package/dist/esm/Deadline.d.ts.map +1 -0
  384. package/dist/esm/Deadline.js +152 -0
  385. package/dist/esm/Deadline.js.map +1 -0
  386. package/dist/esm/DurableClock.d.ts +61 -0
  387. package/dist/esm/DurableClock.d.ts.map +1 -0
  388. package/dist/esm/DurableClock.js +75 -0
  389. package/dist/esm/DurableClock.js.map +1 -0
  390. package/dist/esm/DurableDeferred.d.ts +311 -0
  391. package/dist/esm/DurableDeferred.d.ts.map +1 -0
  392. package/dist/esm/DurableDeferred.js +357 -0
  393. package/dist/esm/DurableDeferred.js.map +1 -0
  394. package/dist/esm/DurableQueue.d.ts +160 -0
  395. package/dist/esm/DurableQueue.d.ts.map +1 -0
  396. package/dist/esm/DurableQueue.js +303 -0
  397. package/dist/esm/DurableQueue.js.map +1 -0
  398. package/dist/esm/ExternalJob.d.ts +179 -0
  399. package/dist/esm/ExternalJob.d.ts.map +1 -0
  400. package/dist/esm/ExternalJob.js +296 -0
  401. package/dist/esm/ExternalJob.js.map +1 -0
  402. package/dist/esm/Fault.d.ts +131 -0
  403. package/dist/esm/Fault.d.ts.map +1 -0
  404. package/dist/esm/Fault.js +198 -0
  405. package/dist/esm/Fault.js.map +1 -0
  406. package/dist/esm/Flow/Annotations.d.ts +245 -0
  407. package/dist/esm/Flow/Annotations.d.ts.map +1 -0
  408. package/dist/esm/Flow/Annotations.js +110 -0
  409. package/dist/esm/Flow/Annotations.js.map +1 -0
  410. package/dist/esm/Flow/CapabilityCeiling.d.ts +21 -0
  411. package/dist/esm/Flow/CapabilityCeiling.d.ts.map +1 -0
  412. package/dist/esm/Flow/CapabilityCeiling.js +27 -0
  413. package/dist/esm/Flow/CapabilityCeiling.js.map +1 -0
  414. package/dist/esm/Flow/DeadlineExceeded.d.ts +33 -0
  415. package/dist/esm/Flow/DeadlineExceeded.d.ts.map +1 -0
  416. package/dist/esm/Flow/DeadlineExceeded.js +34 -0
  417. package/dist/esm/Flow/DeadlineExceeded.js.map +1 -0
  418. package/dist/esm/Flow/ExecutionIdRequired.d.ts +25 -0
  419. package/dist/esm/Flow/ExecutionIdRequired.d.ts.map +1 -0
  420. package/dist/esm/Flow/ExecutionIdRequired.js +30 -0
  421. package/dist/esm/Flow/ExecutionIdRequired.js.map +1 -0
  422. package/dist/esm/Flow/ExecutionIds.d.ts +80 -0
  423. package/dist/esm/Flow/ExecutionIds.d.ts.map +1 -0
  424. package/dist/esm/Flow/ExecutionIds.js +91 -0
  425. package/dist/esm/Flow/ExecutionIds.js.map +1 -0
  426. package/dist/esm/Flow/Flow.d.ts +422 -0
  427. package/dist/esm/Flow/Flow.d.ts.map +1 -0
  428. package/dist/esm/Flow/Flow.js +3 -0
  429. package/dist/esm/Flow/Flow.js.map +1 -0
  430. package/dist/esm/Flow/MaxRoundsExceeded.d.ts +35 -0
  431. package/dist/esm/Flow/MaxRoundsExceeded.d.ts.map +1 -0
  432. package/dist/esm/Flow/MaxRoundsExceeded.js +34 -0
  433. package/dist/esm/Flow/MaxRoundsExceeded.js.map +1 -0
  434. package/dist/esm/Flow/Outcome.d.ts +162 -0
  435. package/dist/esm/Flow/Outcome.d.ts.map +1 -0
  436. package/dist/esm/Flow/Outcome.js +115 -0
  437. package/dist/esm/Flow/Outcome.js.map +1 -0
  438. package/dist/esm/Flow/Result.d.ts +186 -0
  439. package/dist/esm/Flow/Result.d.ts.map +1 -0
  440. package/dist/esm/Flow/Result.js +171 -0
  441. package/dist/esm/Flow/Result.js.map +1 -0
  442. package/dist/esm/Flow/Runtime.d.ts +98 -0
  443. package/dist/esm/Flow/Runtime.d.ts.map +1 -0
  444. package/dist/esm/Flow/Runtime.js +231 -0
  445. package/dist/esm/Flow/Runtime.js.map +1 -0
  446. package/dist/esm/Flow/TypeId.d.ts +8 -0
  447. package/dist/esm/Flow/TypeId.d.ts.map +1 -0
  448. package/dist/esm/Flow/TypeId.js +9 -0
  449. package/dist/esm/Flow/TypeId.js.map +1 -0
  450. package/dist/esm/Flow/index.d.ts +17 -0
  451. package/dist/esm/Flow/index.d.ts.map +1 -0
  452. package/dist/esm/Flow/index.js +18 -0
  453. package/dist/esm/Flow/index.js.map +1 -0
  454. package/dist/esm/Flow/internal.d.ts +34 -0
  455. package/dist/esm/Flow/internal.d.ts.map +1 -0
  456. package/dist/esm/Flow/internal.js +149 -0
  457. package/dist/esm/Flow/internal.js.map +1 -0
  458. package/dist/esm/Flow/make.d.ts +134 -0
  459. package/dist/esm/Flow/make.d.ts.map +1 -0
  460. package/dist/esm/Flow/make.js +106 -0
  461. package/dist/esm/Flow/make.js.map +1 -0
  462. package/dist/esm/FlowRuntime/CancelRequestFailed.d.ts +55 -0
  463. package/dist/esm/FlowRuntime/CancelRequestFailed.d.ts.map +1 -0
  464. package/dist/esm/FlowRuntime/CancelRequestFailed.js +53 -0
  465. package/dist/esm/FlowRuntime/CancelRequestFailed.js.map +1 -0
  466. package/dist/esm/FlowRuntime/ExecutionIdentityConflict.d.ts +23 -0
  467. package/dist/esm/FlowRuntime/ExecutionIdentityConflict.d.ts.map +1 -0
  468. package/dist/esm/FlowRuntime/ExecutionIdentityConflict.js +24 -0
  469. package/dist/esm/FlowRuntime/ExecutionIdentityConflict.js.map +1 -0
  470. package/dist/esm/FlowRuntime/FlowCycleDetected.d.ts +28 -0
  471. package/dist/esm/FlowRuntime/FlowCycleDetected.d.ts.map +1 -0
  472. package/dist/esm/FlowRuntime/FlowCycleDetected.js +35 -0
  473. package/dist/esm/FlowRuntime/FlowCycleDetected.js.map +1 -0
  474. package/dist/esm/FlowRuntime/FlowExecutionNotFound.d.ts +38 -0
  475. package/dist/esm/FlowRuntime/FlowExecutionNotFound.d.ts.map +1 -0
  476. package/dist/esm/FlowRuntime/FlowExecutionNotFound.js +40 -0
  477. package/dist/esm/FlowRuntime/FlowExecutionNotFound.js.map +1 -0
  478. package/dist/esm/FlowRuntime/FlowInstance.d.ts +115 -0
  479. package/dist/esm/FlowRuntime/FlowInstance.d.ts.map +1 -0
  480. package/dist/esm/FlowRuntime/FlowInstance.js +24 -0
  481. package/dist/esm/FlowRuntime/FlowInstance.js.map +1 -0
  482. package/dist/esm/FlowRuntime/FlowRuntime.d.ts +198 -0
  483. package/dist/esm/FlowRuntime/FlowRuntime.d.ts.map +1 -0
  484. package/dist/esm/FlowRuntime/FlowRuntime.js +34 -0
  485. package/dist/esm/FlowRuntime/FlowRuntime.js.map +1 -0
  486. package/dist/esm/FlowRuntime/NodeRecord.d.ts +175 -0
  487. package/dist/esm/FlowRuntime/NodeRecord.d.ts.map +1 -0
  488. package/dist/esm/FlowRuntime/NodeRecord.js +21 -0
  489. package/dist/esm/FlowRuntime/NodeRecord.js.map +1 -0
  490. package/dist/esm/FlowRuntime/WaitingAnnotation.d.ts +69 -0
  491. package/dist/esm/FlowRuntime/WaitingAnnotation.d.ts.map +1 -0
  492. package/dist/esm/FlowRuntime/WaitingAnnotation.js +53 -0
  493. package/dist/esm/FlowRuntime/WaitingAnnotation.js.map +1 -0
  494. package/dist/esm/FlowRuntime/index.d.ts +14 -0
  495. package/dist/esm/FlowRuntime/index.d.ts.map +1 -0
  496. package/dist/esm/FlowRuntime/index.js +15 -0
  497. package/dist/esm/FlowRuntime/index.js.map +1 -0
  498. package/dist/esm/Graph.d.ts +325 -0
  499. package/dist/esm/Graph.d.ts.map +1 -0
  500. package/dist/esm/Graph.js +1483 -0
  501. package/dist/esm/Graph.js.map +1 -0
  502. package/dist/esm/HumanTask.d.ts +440 -0
  503. package/dist/esm/HumanTask.d.ts.map +1 -0
  504. package/dist/esm/HumanTask.js +794 -0
  505. package/dist/esm/HumanTask.js.map +1 -0
  506. package/dist/esm/Interpreter.d.ts +222 -0
  507. package/dist/esm/Interpreter.d.ts.map +1 -0
  508. package/dist/esm/Interpreter.js +1269 -0
  509. package/dist/esm/Interpreter.js.map +1 -0
  510. package/dist/esm/Poll.d.ts +238 -0
  511. package/dist/esm/Poll.d.ts.map +1 -0
  512. package/dist/esm/Poll.js +282 -0
  513. package/dist/esm/Poll.js.map +1 -0
  514. package/dist/esm/RetryPolicy.d.ts +273 -0
  515. package/dist/esm/RetryPolicy.d.ts.map +1 -0
  516. package/dist/esm/RetryPolicy.js +429 -0
  517. package/dist/esm/RetryPolicy.js.map +1 -0
  518. package/dist/esm/Sleep.d.ts +98 -0
  519. package/dist/esm/Sleep.d.ts.map +1 -0
  520. package/dist/esm/Sleep.js +230 -0
  521. package/dist/esm/Sleep.js.map +1 -0
  522. package/dist/esm/Stall.d.ts +173 -0
  523. package/dist/esm/Stall.d.ts.map +1 -0
  524. package/dist/esm/Stall.js +138 -0
  525. package/dist/esm/Stall.js.map +1 -0
  526. package/dist/esm/WaitFor.d.ts +109 -0
  527. package/dist/esm/WaitFor.d.ts.map +1 -0
  528. package/dist/esm/WaitFor.js +184 -0
  529. package/dist/esm/WaitFor.js.map +1 -0
  530. package/dist/esm/index.d.ts +107 -0
  531. package/dist/esm/index.d.ts.map +1 -0
  532. package/dist/esm/index.js +108 -0
  533. package/dist/esm/index.js.map +1 -0
  534. package/dist/esm/internal/BoundedJson.d.ts +48 -0
  535. package/dist/esm/internal/BoundedJson.d.ts.map +1 -0
  536. package/dist/esm/internal/BoundedJson.js +107 -0
  537. package/dist/esm/internal/BoundedJson.js.map +1 -0
  538. package/dist/esm/internal/DeclarationSite.d.ts +135 -0
  539. package/dist/esm/internal/DeclarationSite.d.ts.map +1 -0
  540. package/dist/esm/internal/DeclarationSite.js +196 -0
  541. package/dist/esm/internal/DeclarationSite.js.map +1 -0
  542. package/dist/esm/internal/Declarations.d.ts +35 -0
  543. package/dist/esm/internal/Declarations.d.ts.map +1 -0
  544. package/dist/esm/internal/Declarations.js +43 -0
  545. package/dist/esm/internal/Declarations.js.map +1 -0
  546. package/dist/esm/internal/ExecutionMiddleware.d.ts +21 -0
  547. package/dist/esm/internal/ExecutionMiddleware.d.ts.map +1 -0
  548. package/dist/esm/internal/ExecutionMiddleware.js +13 -0
  549. package/dist/esm/internal/ExecutionMiddleware.js.map +1 -0
  550. package/dist/esm/internal/JsonSchemaSubset.d.ts +133 -0
  551. package/dist/esm/internal/JsonSchemaSubset.d.ts.map +1 -0
  552. package/dist/esm/internal/JsonSchemaSubset.js +363 -0
  553. package/dist/esm/internal/JsonSchemaSubset.js.map +1 -0
  554. package/dist/esm/internal/OutcomeMarker.d.ts +18 -0
  555. package/dist/esm/internal/OutcomeMarker.d.ts.map +1 -0
  556. package/dist/esm/internal/OutcomeMarker.js +18 -0
  557. package/dist/esm/internal/OutcomeMarker.js.map +1 -0
  558. package/docs/README.md +150 -0
  559. package/docs/api.md +436 -0
  560. package/docs/concepts/bodies-and-plans.md +157 -0
  561. package/docs/concepts/execution-identity.md +142 -0
  562. package/docs/concepts/flows-and-actions.md +129 -0
  563. package/docs/concepts/suspension-and-replay.md +130 -0
  564. package/docs/concepts/the-runtime-port.md +110 -0
  565. package/docs/concepts/trampoline-rounds.md +151 -0
  566. package/docs/guides/ask-a-person.md +184 -0
  567. package/docs/guides/build-a-body.md +161 -0
  568. package/docs/guides/cancel-and-roll-back.md +112 -0
  569. package/docs/guides/implement-an-action.md +147 -0
  570. package/docs/guides/inspect-the-plan.md +154 -0
  571. package/docs/guides/poll-until-ready.md +167 -0
  572. package/docs/guides/queue-work-to-a-worker.md +122 -0
  573. package/docs/guides/retry-a-failing-action.md +243 -0
  574. package/docs/guides/reuse-a-recorded-result.md +122 -0
  575. package/docs/guides/run-a-child-flow.md +108 -0
  576. package/docs/guides/run-an-external-job.md +86 -0
  577. package/docs/guides/use-a-prompt.md +38 -0
  578. package/docs/guides/wait-for-a-deadline.md +141 -0
  579. package/docs/guides/wait-for-an-external-signal.md +151 -0
  580. package/docs/installation.md +82 -0
  581. package/docs/quickstart.md +155 -0
  582. package/docs/reference/flow.md +1831 -0
  583. package/docs/testing.md +157 -0
  584. package/docs/troubleshooting.md +286 -0
  585. package/package.json +327 -3
  586. package/src/Action/Action.ts +333 -0
  587. package/src/Action/AttemptTimedOut.ts +37 -0
  588. package/src/Action/BoundaryMode.ts +33 -0
  589. package/src/Action/CacheEnvironment.ts +170 -0
  590. package/src/Action/ConcurrentKeylessDispatch.ts +38 -0
  591. package/src/Action/Context.ts +156 -0
  592. package/src/Action/DuplicateImplementation.ts +24 -0
  593. package/src/Action/FileBoundary.ts +77 -0
  594. package/src/Action/FileInput.ts +42 -0
  595. package/src/Action/Filegroup.ts +16 -0
  596. package/src/Action/Glob.ts +8 -0
  597. package/src/Action/ImplementationVersionMismatch.ts +27 -0
  598. package/src/Action/Implementations.ts +149 -0
  599. package/src/Action/InfraInterrupt.ts +30 -0
  600. package/src/Action/InfraInterruptRetriesExhausted.ts +37 -0
  601. package/src/Action/IrreversibleRetryRequiresIdempotencyKey.ts +32 -0
  602. package/src/Action/StepIdentity.ts +219 -0
  603. package/src/Action/TreeArtifact.ts +8 -0
  604. package/src/Action/TypeId.ts +9 -0
  605. package/src/Action/UncanonicalIdempotencyKey.ts +36 -0
  606. package/src/Action/idempotencyKey.ts +67 -0
  607. package/src/Action/index.ts +31 -0
  608. package/src/Action/make.ts +657 -0
  609. package/src/Action/raceAll.ts +48 -0
  610. package/src/Action/retry.ts +92 -0
  611. package/src/Deadline.ts +185 -0
  612. package/src/DurableClock.ts +133 -0
  613. package/src/DurableDeferred.ts +753 -0
  614. package/src/DurableQueue.ts +519 -0
  615. package/src/ExternalJob.ts +432 -0
  616. package/src/Fault.ts +279 -0
  617. package/src/Flow/Annotations.ts +151 -0
  618. package/src/Flow/CapabilityCeiling.ts +37 -0
  619. package/src/Flow/DeadlineExceeded.ts +40 -0
  620. package/src/Flow/ExecutionIdRequired.ts +36 -0
  621. package/src/Flow/ExecutionIds.ts +133 -0
  622. package/src/Flow/Flow.ts +576 -0
  623. package/src/Flow/MaxRoundsExceeded.ts +39 -0
  624. package/src/Flow/Outcome.ts +179 -0
  625. package/src/Flow/Result.ts +284 -0
  626. package/src/Flow/Runtime.ts +309 -0
  627. package/src/Flow/TypeId.ts +9 -0
  628. package/src/Flow/index.ts +19 -0
  629. package/src/Flow/internal.ts +237 -0
  630. package/src/Flow/make.ts +279 -0
  631. package/src/FlowRuntime/CancelRequestFailed.ts +56 -0
  632. package/src/FlowRuntime/ExecutionIdentityConflict.ts +32 -0
  633. package/src/FlowRuntime/FlowCycleDetected.ts +41 -0
  634. package/src/FlowRuntime/FlowExecutionNotFound.ts +46 -0
  635. package/src/FlowRuntime/FlowInstance.ts +128 -0
  636. package/src/FlowRuntime/FlowRuntime.ts +333 -0
  637. package/src/FlowRuntime/NodeRecord.ts +183 -0
  638. package/src/FlowRuntime/WaitingAnnotation.ts +85 -0
  639. package/src/FlowRuntime/index.ts +17 -0
  640. package/src/Graph.ts +1862 -0
  641. package/src/HumanTask.ts +1003 -0
  642. package/src/Interpreter.ts +1593 -0
  643. package/src/Poll.ts +414 -0
  644. package/src/RetryPolicy.ts +550 -0
  645. package/src/Sleep.ts +267 -0
  646. package/src/Stall.ts +217 -0
  647. package/src/WaitFor.ts +228 -0
  648. package/src/index.ts +125 -0
  649. package/src/internal/BoundedJson.ts +109 -0
  650. package/src/internal/DeclarationSite.ts +214 -0
  651. package/src/internal/Declarations.ts +49 -0
  652. package/src/internal/ExecutionMiddleware.ts +29 -0
  653. package/src/internal/JsonSchemaSubset.ts +392 -0
  654. 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":"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","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"]}