@depup/effect 3.20.0-depup.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2716) hide show
  1. package/.index/package.json +6 -0
  2. package/Arbitrary/package.json +6 -0
  3. package/Array/package.json +6 -0
  4. package/BigDecimal/package.json +6 -0
  5. package/BigInt/package.json +6 -0
  6. package/Boolean/package.json +6 -0
  7. package/Brand/package.json +6 -0
  8. package/Cache/package.json +6 -0
  9. package/Cause/package.json +6 -0
  10. package/Channel/package.json +6 -0
  11. package/ChildExecutorDecision/package.json +6 -0
  12. package/Chunk/package.json +6 -0
  13. package/Clock/package.json +6 -0
  14. package/Config/package.json +6 -0
  15. package/ConfigError/package.json +6 -0
  16. package/ConfigProvider/package.json +6 -0
  17. package/ConfigProviderPathPatch/package.json +6 -0
  18. package/Console/package.json +6 -0
  19. package/Context/package.json +6 -0
  20. package/Cron/package.json +6 -0
  21. package/Data/package.json +6 -0
  22. package/DateTime/package.json +6 -0
  23. package/DefaultServices/package.json +6 -0
  24. package/Deferred/package.json +6 -0
  25. package/Differ/package.json +6 -0
  26. package/Duration/package.json +6 -0
  27. package/Effect/package.json +6 -0
  28. package/Effectable/package.json +6 -0
  29. package/Either/package.json +6 -0
  30. package/Encoding/package.json +6 -0
  31. package/Equal/package.json +6 -0
  32. package/Equivalence/package.json +6 -0
  33. package/ExecutionPlan/package.json +6 -0
  34. package/ExecutionStrategy/package.json +6 -0
  35. package/Exit/package.json +6 -0
  36. package/FastCheck/package.json +6 -0
  37. package/Fiber/package.json +6 -0
  38. package/FiberHandle/package.json +6 -0
  39. package/FiberId/package.json +6 -0
  40. package/FiberMap/package.json +6 -0
  41. package/FiberRef/package.json +6 -0
  42. package/FiberRefs/package.json +6 -0
  43. package/FiberRefsPatch/package.json +6 -0
  44. package/FiberSet/package.json +6 -0
  45. package/FiberStatus/package.json +6 -0
  46. package/Function/package.json +6 -0
  47. package/GlobalValue/package.json +6 -0
  48. package/Graph/package.json +6 -0
  49. package/GroupBy/package.json +6 -0
  50. package/HKT/package.json +6 -0
  51. package/Hash/package.json +6 -0
  52. package/HashMap/package.json +6 -0
  53. package/HashRing/package.json +6 -0
  54. package/HashSet/package.json +6 -0
  55. package/Inspectable/package.json +6 -0
  56. package/Iterable/package.json +6 -0
  57. package/JSONSchema/package.json +6 -0
  58. package/KeyedPool/package.json +6 -0
  59. package/LICENSE +21 -0
  60. package/Layer/package.json +6 -0
  61. package/LayerMap/package.json +6 -0
  62. package/List/package.json +6 -0
  63. package/LogLevel/package.json +6 -0
  64. package/LogSpan/package.json +6 -0
  65. package/Logger/package.json +6 -0
  66. package/Mailbox/package.json +6 -0
  67. package/ManagedRuntime/package.json +6 -0
  68. package/Match/package.json +6 -0
  69. package/MergeDecision/package.json +6 -0
  70. package/MergeState/package.json +6 -0
  71. package/MergeStrategy/package.json +6 -0
  72. package/Metric/package.json +6 -0
  73. package/MetricBoundaries/package.json +6 -0
  74. package/MetricHook/package.json +6 -0
  75. package/MetricKey/package.json +6 -0
  76. package/MetricKeyType/package.json +6 -0
  77. package/MetricLabel/package.json +6 -0
  78. package/MetricPair/package.json +6 -0
  79. package/MetricPolling/package.json +6 -0
  80. package/MetricRegistry/package.json +6 -0
  81. package/MetricState/package.json +6 -0
  82. package/Micro/package.json +6 -0
  83. package/ModuleVersion/package.json +6 -0
  84. package/MutableHashMap/package.json +6 -0
  85. package/MutableHashSet/package.json +6 -0
  86. package/MutableList/package.json +6 -0
  87. package/MutableQueue/package.json +6 -0
  88. package/MutableRef/package.json +6 -0
  89. package/NonEmptyIterable/package.json +6 -0
  90. package/Number/package.json +6 -0
  91. package/Option/package.json +6 -0
  92. package/Order/package.json +6 -0
  93. package/Ordering/package.json +6 -0
  94. package/ParseResult/package.json +6 -0
  95. package/PartitionedSemaphore/package.json +6 -0
  96. package/Pipeable/package.json +6 -0
  97. package/Pool/package.json +6 -0
  98. package/Predicate/package.json +6 -0
  99. package/Pretty/package.json +6 -0
  100. package/PrimaryKey/package.json +6 -0
  101. package/PubSub/package.json +6 -0
  102. package/Queue/package.json +6 -0
  103. package/README.md +32 -0
  104. package/Random/package.json +6 -0
  105. package/RateLimiter/package.json +6 -0
  106. package/RcMap/package.json +6 -0
  107. package/RcRef/package.json +6 -0
  108. package/Readable/package.json +6 -0
  109. package/Record/package.json +6 -0
  110. package/RedBlackTree/package.json +6 -0
  111. package/Redacted/package.json +6 -0
  112. package/Ref/package.json +6 -0
  113. package/RegExp/package.json +6 -0
  114. package/Reloadable/package.json +6 -0
  115. package/Request/package.json +6 -0
  116. package/RequestBlock/package.json +6 -0
  117. package/RequestResolver/package.json +6 -0
  118. package/Resource/package.json +6 -0
  119. package/Runtime/package.json +6 -0
  120. package/RuntimeFlags/package.json +6 -0
  121. package/RuntimeFlagsPatch/package.json +6 -0
  122. package/STM/package.json +6 -0
  123. package/Schedule/package.json +6 -0
  124. package/ScheduleDecision/package.json +6 -0
  125. package/ScheduleInterval/package.json +6 -0
  126. package/ScheduleIntervals/package.json +6 -0
  127. package/Scheduler/package.json +6 -0
  128. package/Schema/package.json +6 -0
  129. package/SchemaAST/package.json +6 -0
  130. package/Scope/package.json +6 -0
  131. package/ScopedCache/package.json +6 -0
  132. package/ScopedRef/package.json +6 -0
  133. package/Secret/package.json +6 -0
  134. package/SingleProducerAsyncInput/package.json +6 -0
  135. package/Sink/package.json +6 -0
  136. package/SortedMap/package.json +6 -0
  137. package/SortedSet/package.json +6 -0
  138. package/Stream/package.json +6 -0
  139. package/StreamEmit/package.json +6 -0
  140. package/StreamHaltStrategy/package.json +6 -0
  141. package/Streamable/package.json +6 -0
  142. package/String/package.json +6 -0
  143. package/Struct/package.json +6 -0
  144. package/Subscribable/package.json +6 -0
  145. package/SubscriptionRef/package.json +6 -0
  146. package/Supervisor/package.json +6 -0
  147. package/Symbol/package.json +6 -0
  148. package/SynchronizedRef/package.json +6 -0
  149. package/TArray/package.json +6 -0
  150. package/TDeferred/package.json +6 -0
  151. package/TMap/package.json +6 -0
  152. package/TPriorityQueue/package.json +6 -0
  153. package/TPubSub/package.json +6 -0
  154. package/TQueue/package.json +6 -0
  155. package/TRandom/package.json +6 -0
  156. package/TReentrantLock/package.json +6 -0
  157. package/TRef/package.json +6 -0
  158. package/TSemaphore/package.json +6 -0
  159. package/TSet/package.json +6 -0
  160. package/TSubscriptionRef/package.json +6 -0
  161. package/Take/package.json +6 -0
  162. package/TestAnnotation/package.json +6 -0
  163. package/TestAnnotationMap/package.json +6 -0
  164. package/TestAnnotations/package.json +6 -0
  165. package/TestClock/package.json +6 -0
  166. package/TestConfig/package.json +6 -0
  167. package/TestContext/package.json +6 -0
  168. package/TestLive/package.json +6 -0
  169. package/TestServices/package.json +6 -0
  170. package/TestSized/package.json +6 -0
  171. package/Tracer/package.json +6 -0
  172. package/Trie/package.json +6 -0
  173. package/Tuple/package.json +6 -0
  174. package/Types/package.json +6 -0
  175. package/Unify/package.json +6 -0
  176. package/UpstreamPullRequest/package.json +6 -0
  177. package/UpstreamPullStrategy/package.json +6 -0
  178. package/Utils/package.json +6 -0
  179. package/changes.json +14 -0
  180. package/dist/cjs/Arbitrary.js +813 -0
  181. package/dist/cjs/Arbitrary.js.map +1 -0
  182. package/dist/cjs/Array.js +2695 -0
  183. package/dist/cjs/Array.js.map +1 -0
  184. package/dist/cjs/BigDecimal.js +1116 -0
  185. package/dist/cjs/BigDecimal.js.map +1 -0
  186. package/dist/cjs/BigInt.js +567 -0
  187. package/dist/cjs/BigInt.js.map +1 -0
  188. package/dist/cjs/Boolean.js +251 -0
  189. package/dist/cjs/Boolean.js.map +1 -0
  190. package/dist/cjs/Brand.js +175 -0
  191. package/dist/cjs/Brand.js.map +1 -0
  192. package/dist/cjs/Cache.js +50 -0
  193. package/dist/cjs/Cache.js.map +1 -0
  194. package/dist/cjs/Cause.js +1011 -0
  195. package/dist/cjs/Cause.js.map +1 -0
  196. package/dist/cjs/Channel.js +889 -0
  197. package/dist/cjs/Channel.js.map +1 -0
  198. package/dist/cjs/ChildExecutorDecision.js +72 -0
  199. package/dist/cjs/ChildExecutorDecision.js.map +1 -0
  200. package/dist/cjs/Chunk.js +1114 -0
  201. package/dist/cjs/Chunk.js.map +1 -0
  202. package/dist/cjs/Clock.js +45 -0
  203. package/dist/cjs/Clock.js.map +1 -0
  204. package/dist/cjs/Config.js +328 -0
  205. package/dist/cjs/Config.js.map +1 -0
  206. package/dist/cjs/ConfigError.js +114 -0
  207. package/dist/cjs/ConfigError.js.map +1 -0
  208. package/dist/cjs/ConfigProvider.js +173 -0
  209. package/dist/cjs/ConfigProvider.js.map +1 -0
  210. package/dist/cjs/ConfigProviderPathPatch.js +38 -0
  211. package/dist/cjs/ConfigProviderPathPatch.js.map +1 -0
  212. package/dist/cjs/Console.js +125 -0
  213. package/dist/cjs/Console.js.map +1 -0
  214. package/dist/cjs/Context.js +367 -0
  215. package/dist/cjs/Context.js.map +1 -0
  216. package/dist/cjs/Cron.js +583 -0
  217. package/dist/cjs/Cron.js.map +1 -0
  218. package/dist/cjs/Data.js +291 -0
  219. package/dist/cjs/Data.js.map +1 -0
  220. package/dist/cjs/DateTime.js +1084 -0
  221. package/dist/cjs/DateTime.js.map +1 -0
  222. package/dist/cjs/DefaultServices.js +19 -0
  223. package/dist/cjs/DefaultServices.js.map +1 -0
  224. package/dist/cjs/Deferred.js +167 -0
  225. package/dist/cjs/Deferred.js.map +1 -0
  226. package/dist/cjs/Differ.js +140 -0
  227. package/dist/cjs/Differ.js.map +1 -0
  228. package/dist/cjs/Duration.js +737 -0
  229. package/dist/cjs/Duration.js.map +1 -0
  230. package/dist/cjs/Effect.js +10717 -0
  231. package/dist/cjs/Effect.js.map +1 -0
  232. package/dist/cjs/Effectable.js +58 -0
  233. package/dist/cjs/Effectable.js.map +1 -0
  234. package/dist/cjs/Either.js +654 -0
  235. package/dist/cjs/Either.js.map +1 -0
  236. package/dist/cjs/Encoding.js +155 -0
  237. package/dist/cjs/Encoding.js.map +1 -0
  238. package/dist/cjs/Equal.js +81 -0
  239. package/dist/cjs/Equal.js.map +1 -0
  240. package/dist/cjs/Equivalence.js +181 -0
  241. package/dist/cjs/Equivalence.js.map +1 -0
  242. package/dist/cjs/ExecutionPlan.js +108 -0
  243. package/dist/cjs/ExecutionPlan.js.map +1 -0
  244. package/dist/cjs/ExecutionStrategy.js +62 -0
  245. package/dist/cjs/ExecutionStrategy.js.map +1 -0
  246. package/dist/cjs/Exit.js +256 -0
  247. package/dist/cjs/Exit.js.map +1 -0
  248. package/dist/cjs/FastCheck.js +17 -0
  249. package/dist/cjs/FastCheck.js.map +1 -0
  250. package/dist/cjs/Fiber.js +340 -0
  251. package/dist/cjs/Fiber.js.map +1 -0
  252. package/dist/cjs/FiberHandle.js +335 -0
  253. package/dist/cjs/FiberHandle.js.map +1 -0
  254. package/dist/cjs/FiberId.js +122 -0
  255. package/dist/cjs/FiberId.js.map +1 -0
  256. package/dist/cjs/FiberMap.js +374 -0
  257. package/dist/cjs/FiberMap.js.map +1 -0
  258. package/dist/cjs/FiberRef.js +243 -0
  259. package/dist/cjs/FiberRef.js.map +1 -0
  260. package/dist/cjs/FiberRefs.js +91 -0
  261. package/dist/cjs/FiberRefs.js.map +1 -0
  262. package/dist/cjs/FiberRefsPatch.js +39 -0
  263. package/dist/cjs/FiberRefsPatch.js.map +1 -0
  264. package/dist/cjs/FiberSet.js +308 -0
  265. package/dist/cjs/FiberSet.js.map +1 -0
  266. package/dist/cjs/FiberStatus.js +59 -0
  267. package/dist/cjs/FiberStatus.js.map +1 -0
  268. package/dist/cjs/Function.js +488 -0
  269. package/dist/cjs/Function.js.map +1 -0
  270. package/dist/cjs/GlobalValue.js +59 -0
  271. package/dist/cjs/GlobalValue.js.map +1 -0
  272. package/dist/cjs/Graph.js +3080 -0
  273. package/dist/cjs/Graph.js.map +1 -0
  274. package/dist/cjs/GroupBy.js +47 -0
  275. package/dist/cjs/GroupBy.js.map +1 -0
  276. package/dist/cjs/HKT.js +6 -0
  277. package/dist/cjs/HKT.js.map +1 -0
  278. package/dist/cjs/Hash.js +184 -0
  279. package/dist/cjs/Hash.js.map +1 -0
  280. package/dist/cjs/HashMap.js +322 -0
  281. package/dist/cjs/HashMap.js.map +1 -0
  282. package/dist/cjs/HashRing.js +257 -0
  283. package/dist/cjs/HashRing.js.map +1 -0
  284. package/dist/cjs/HashSet.js +1262 -0
  285. package/dist/cjs/HashSet.js.map +1 -0
  286. package/dist/cjs/Inspectable.js +213 -0
  287. package/dist/cjs/Inspectable.js.map +1 -0
  288. package/dist/cjs/Iterable.js +1009 -0
  289. package/dist/cjs/Iterable.js.map +1 -0
  290. package/dist/cjs/JSONSchema.js +727 -0
  291. package/dist/cjs/JSONSchema.js.map +1 -0
  292. package/dist/cjs/KeyedPool.js +83 -0
  293. package/dist/cjs/KeyedPool.js.map +1 -0
  294. package/dist/cjs/Layer.js +651 -0
  295. package/dist/cjs/Layer.js.map +1 -0
  296. package/dist/cjs/LayerMap.js +212 -0
  297. package/dist/cjs/LayerMap.js.map +1 -0
  298. package/dist/cjs/List.js +784 -0
  299. package/dist/cjs/List.js.map +1 -0
  300. package/dist/cjs/LogLevel.js +143 -0
  301. package/dist/cjs/LogLevel.js.map +1 -0
  302. package/dist/cjs/LogSpan.js +23 -0
  303. package/dist/cjs/LogSpan.js.map +1 -0
  304. package/dist/cjs/Logger.js +497 -0
  305. package/dist/cjs/Logger.js.map +1 -0
  306. package/dist/cjs/Mailbox.js +105 -0
  307. package/dist/cjs/Mailbox.js.map +1 -0
  308. package/dist/cjs/ManagedRuntime.js +49 -0
  309. package/dist/cjs/ManagedRuntime.js.map +1 -0
  310. package/dist/cjs/Match.js +819 -0
  311. package/dist/cjs/Match.js.map +1 -0
  312. package/dist/cjs/MergeDecision.js +42 -0
  313. package/dist/cjs/MergeDecision.js.map +1 -0
  314. package/dist/cjs/MergeState.js +65 -0
  315. package/dist/cjs/MergeState.js.map +1 -0
  316. package/dist/cjs/MergeStrategy.js +59 -0
  317. package/dist/cjs/MergeStrategy.js.map +1 -0
  318. package/dist/cjs/Metric.js +415 -0
  319. package/dist/cjs/Metric.js.map +1 -0
  320. package/dist/cjs/MetricBoundaries.js +40 -0
  321. package/dist/cjs/MetricBoundaries.js.map +1 -0
  322. package/dist/cjs/MetricHook.js +54 -0
  323. package/dist/cjs/MetricHook.js.map +1 -0
  324. package/dist/cjs/MetricKey.js +70 -0
  325. package/dist/cjs/MetricKey.js.map +1 -0
  326. package/dist/cjs/MetricKeyType.js +94 -0
  327. package/dist/cjs/MetricKeyType.js.map +1 -0
  328. package/dist/cjs/MetricLabel.js +24 -0
  329. package/dist/cjs/MetricLabel.js.map +1 -0
  330. package/dist/cjs/MetricPair.js +28 -0
  331. package/dist/cjs/MetricPair.js.map +1 -0
  332. package/dist/cjs/MetricPolling.js +66 -0
  333. package/dist/cjs/MetricPolling.js.map +1 -0
  334. package/dist/cjs/MetricRegistry.js +23 -0
  335. package/dist/cjs/MetricRegistry.js.map +1 -0
  336. package/dist/cjs/MetricState.js +94 -0
  337. package/dist/cjs/MetricState.js.map +1 -0
  338. package/dist/cjs/Micro.js +2582 -0
  339. package/dist/cjs/Micro.js.map +1 -0
  340. package/dist/cjs/ModuleVersion.js +25 -0
  341. package/dist/cjs/ModuleVersion.js.map +1 -0
  342. package/dist/cjs/MutableHashMap.js +314 -0
  343. package/dist/cjs/MutableHashMap.js.map +1 -0
  344. package/dist/cjs/MutableHashSet.js +524 -0
  345. package/dist/cjs/MutableHashSet.js.map +1 -0
  346. package/dist/cjs/MutableList.js +258 -0
  347. package/dist/cjs/MutableList.js.map +1 -0
  348. package/dist/cjs/MutableQueue.js +173 -0
  349. package/dist/cjs/MutableQueue.js.map +1 -0
  350. package/dist/cjs/MutableRef.js +144 -0
  351. package/dist/cjs/MutableRef.js.map +1 -0
  352. package/dist/cjs/NonEmptyIterable.js +23 -0
  353. package/dist/cjs/NonEmptyIterable.js.map +1 -0
  354. package/dist/cjs/Number.js +903 -0
  355. package/dist/cjs/Number.js.map +1 -0
  356. package/dist/cjs/Option.js +1769 -0
  357. package/dist/cjs/Option.js.map +1 -0
  358. package/dist/cjs/Order.js +275 -0
  359. package/dist/cjs/Order.js.map +1 -0
  360. package/dist/cjs/Ordering.js +80 -0
  361. package/dist/cjs/Ordering.js.map +1 -0
  362. package/dist/cjs/ParseResult.js +1594 -0
  363. package/dist/cjs/ParseResult.js.map +1 -0
  364. package/dist/cjs/PartitionedSemaphore.js +147 -0
  365. package/dist/cjs/PartitionedSemaphore.js.map +1 -0
  366. package/dist/cjs/Pipeable.js +70 -0
  367. package/dist/cjs/Pipeable.js.map +1 -0
  368. package/dist/cjs/Pool.js +107 -0
  369. package/dist/cjs/Pool.js.map +1 -0
  370. package/dist/cjs/Predicate.js +1159 -0
  371. package/dist/cjs/Predicate.js.map +1 -0
  372. package/dist/cjs/Pretty.js +183 -0
  373. package/dist/cjs/Pretty.js.map +1 -0
  374. package/dist/cjs/PrimaryKey.js +21 -0
  375. package/dist/cjs/PrimaryKey.js.map +1 -0
  376. package/dist/cjs/PubSub.js +127 -0
  377. package/dist/cjs/PubSub.js.map +1 -0
  378. package/dist/cjs/Queue.js +255 -0
  379. package/dist/cjs/Queue.js.map +1 -0
  380. package/dist/cjs/Random.js +145 -0
  381. package/dist/cjs/Random.js.map +1 -0
  382. package/dist/cjs/RateLimiter.js +84 -0
  383. package/dist/cjs/RateLimiter.js.map +1 -0
  384. package/dist/cjs/RcMap.js +76 -0
  385. package/dist/cjs/RcMap.js.map +1 -0
  386. package/dist/cjs/RcRef.js +58 -0
  387. package/dist/cjs/RcRef.js.map +1 -0
  388. package/dist/cjs/Readable.js +55 -0
  389. package/dist/cjs/Readable.js.map +1 -0
  390. package/dist/cjs/Record.js +865 -0
  391. package/dist/cjs/Record.js.map +1 -0
  392. package/dist/cjs/RedBlackTree.js +266 -0
  393. package/dist/cjs/RedBlackTree.js.map +1 -0
  394. package/dist/cjs/Redacted.js +101 -0
  395. package/dist/cjs/Redacted.js.map +1 -0
  396. package/dist/cjs/Ref.js +84 -0
  397. package/dist/cjs/Ref.js.map +1 -0
  398. package/dist/cjs/RegExp.js +46 -0
  399. package/dist/cjs/RegExp.js.map +1 -0
  400. package/dist/cjs/Reloadable.js +66 -0
  401. package/dist/cjs/Reloadable.js.map +1 -0
  402. package/dist/cjs/Request.js +148 -0
  403. package/dist/cjs/Request.js.map +1 -0
  404. package/dist/cjs/RequestBlock.js +43 -0
  405. package/dist/cjs/RequestBlock.js.map +1 -0
  406. package/dist/cjs/RequestResolver.js +185 -0
  407. package/dist/cjs/RequestResolver.js.map +1 -0
  408. package/dist/cjs/Resource.js +51 -0
  409. package/dist/cjs/Resource.js.map +1 -0
  410. package/dist/cjs/Runtime.js +188 -0
  411. package/dist/cjs/Runtime.js.map +1 -0
  412. package/dist/cjs/RuntimeFlags.js +259 -0
  413. package/dist/cjs/RuntimeFlags.js.map +1 -0
  414. package/dist/cjs/RuntimeFlagsPatch.js +142 -0
  415. package/dist/cjs/RuntimeFlagsPatch.js.map +1 -0
  416. package/dist/cjs/STM.js +981 -0
  417. package/dist/cjs/STM.js.map +1 -0
  418. package/dist/cjs/Schedule.js +1603 -0
  419. package/dist/cjs/Schedule.js.map +1 -0
  420. package/dist/cjs/ScheduleDecision.js +34 -0
  421. package/dist/cjs/ScheduleDecision.js.map +1 -0
  422. package/dist/cjs/ScheduleInterval.js +107 -0
  423. package/dist/cjs/ScheduleInterval.js.map +1 -0
  424. package/dist/cjs/ScheduleIntervals.js +85 -0
  425. package/dist/cjs/ScheduleIntervals.js.map +1 -0
  426. package/dist/cjs/Scheduler.js +308 -0
  427. package/dist/cjs/Scheduler.js.map +1 -0
  428. package/dist/cjs/Schema.js +6254 -0
  429. package/dist/cjs/Schema.js.map +1 -0
  430. package/dist/cjs/SchemaAST.js +2552 -0
  431. package/dist/cjs/SchemaAST.js.map +1 -0
  432. package/dist/cjs/Scope.js +102 -0
  433. package/dist/cjs/Scope.js.map +1 -0
  434. package/dist/cjs/ScopedCache.js +31 -0
  435. package/dist/cjs/ScopedCache.js.map +1 -0
  436. package/dist/cjs/ScopedRef.js +49 -0
  437. package/dist/cjs/ScopedRef.js.map +1 -0
  438. package/dist/cjs/Secret.js +51 -0
  439. package/dist/cjs/Secret.js.map +1 -0
  440. package/dist/cjs/SingleProducerAsyncInput.js +14 -0
  441. package/dist/cjs/SingleProducerAsyncInput.js.map +1 -0
  442. package/dist/cjs/Sink.js +872 -0
  443. package/dist/cjs/Sink.js.map +1 -0
  444. package/dist/cjs/SortedMap.js +189 -0
  445. package/dist/cjs/SortedMap.js.map +1 -0
  446. package/dist/cjs/SortedSet.js +251 -0
  447. package/dist/cjs/SortedSet.js.map +1 -0
  448. package/dist/cjs/Stream.js +4112 -0
  449. package/dist/cjs/Stream.js.map +1 -0
  450. package/dist/cjs/StreamEmit.js +6 -0
  451. package/dist/cjs/StreamEmit.js.map +1 -0
  452. package/dist/cjs/StreamHaltStrategy.js +65 -0
  453. package/dist/cjs/StreamHaltStrategy.js.map +1 -0
  454. package/dist/cjs/Streamable.js +45 -0
  455. package/dist/cjs/Streamable.js.map +1 -0
  456. package/dist/cjs/String.js +680 -0
  457. package/dist/cjs/String.js.map +1 -0
  458. package/dist/cjs/Struct.js +202 -0
  459. package/dist/cjs/Struct.js.map +1 -0
  460. package/dist/cjs/Subscribable.js +67 -0
  461. package/dist/cjs/Subscribable.js.map +1 -0
  462. package/dist/cjs/SubscriptionRef.js +123 -0
  463. package/dist/cjs/SubscriptionRef.js.map +1 -0
  464. package/dist/cjs/Supervisor.js +115 -0
  465. package/dist/cjs/Supervisor.js.map +1 -0
  466. package/dist/cjs/Symbol.js +35 -0
  467. package/dist/cjs/Symbol.js.map +1 -0
  468. package/dist/cjs/SynchronizedRef.js +126 -0
  469. package/dist/cjs/SynchronizedRef.js.map +1 -0
  470. package/dist/cjs/TArray.js +314 -0
  471. package/dist/cjs/TArray.js.map +1 -0
  472. package/dist/cjs/TDeferred.js +40 -0
  473. package/dist/cjs/TDeferred.js.map +1 -0
  474. package/dist/cjs/TMap.js +286 -0
  475. package/dist/cjs/TMap.js.map +1 -0
  476. package/dist/cjs/TPriorityQueue.js +143 -0
  477. package/dist/cjs/TPriorityQueue.js.map +1 -0
  478. package/dist/cjs/TPubSub.js +138 -0
  479. package/dist/cjs/TPubSub.js.map +1 -0
  480. package/dist/cjs/TQueue.js +237 -0
  481. package/dist/cjs/TQueue.js.map +1 -0
  482. package/dist/cjs/TRandom.js +72 -0
  483. package/dist/cjs/TRandom.js.map +1 -0
  484. package/dist/cjs/TReentrantLock.js +149 -0
  485. package/dist/cjs/TReentrantLock.js.map +1 -0
  486. package/dist/cjs/TRef.js +83 -0
  487. package/dist/cjs/TRef.js.map +1 -0
  488. package/dist/cjs/TSemaphore.js +73 -0
  489. package/dist/cjs/TSemaphore.js.map +1 -0
  490. package/dist/cjs/TSet.js +208 -0
  491. package/dist/cjs/TSet.js.map +1 -0
  492. package/dist/cjs/TSubscriptionRef.js +95 -0
  493. package/dist/cjs/TSubscriptionRef.js.map +1 -0
  494. package/dist/cjs/Take.js +155 -0
  495. package/dist/cjs/Take.js.map +1 -0
  496. package/dist/cjs/TestAnnotation.js +105 -0
  497. package/dist/cjs/TestAnnotation.js.map +1 -0
  498. package/dist/cjs/TestAnnotationMap.js +91 -0
  499. package/dist/cjs/TestAnnotationMap.js.map +1 -0
  500. package/dist/cjs/TestAnnotations.js +71 -0
  501. package/dist/cjs/TestAnnotations.js.map +1 -0
  502. package/dist/cjs/TestClock.js +372 -0
  503. package/dist/cjs/TestClock.js.map +1 -0
  504. package/dist/cjs/TestConfig.js +22 -0
  505. package/dist/cjs/TestConfig.js.map +1 -0
  506. package/dist/cjs/TestContext.js +28 -0
  507. package/dist/cjs/TestContext.js.map +1 -0
  508. package/dist/cjs/TestLive.js +39 -0
  509. package/dist/cjs/TestLive.js.map +1 -0
  510. package/dist/cjs/TestServices.js +255 -0
  511. package/dist/cjs/TestServices.js.map +1 -0
  512. package/dist/cjs/TestSized.js +46 -0
  513. package/dist/cjs/TestSized.js.map +1 -0
  514. package/dist/cjs/Tracer.js +44 -0
  515. package/dist/cjs/Tracer.js.map +1 -0
  516. package/dist/cjs/Trie.js +724 -0
  517. package/dist/cjs/Trie.js.map +1 -0
  518. package/dist/cjs/Tuple.js +210 -0
  519. package/dist/cjs/Tuple.js.map +1 -0
  520. package/dist/cjs/Types.js +6 -0
  521. package/dist/cjs/Types.js.map +1 -0
  522. package/dist/cjs/Unify.js +16 -0
  523. package/dist/cjs/Unify.js.map +1 -0
  524. package/dist/cjs/UpstreamPullRequest.js +59 -0
  525. package/dist/cjs/UpstreamPullRequest.js.map +1 -0
  526. package/dist/cjs/UpstreamPullStrategy.js +59 -0
  527. package/dist/cjs/UpstreamPullStrategy.js.map +1 -0
  528. package/dist/cjs/Utils.js +374 -0
  529. package/dist/cjs/Utils.js.map +1 -0
  530. package/dist/cjs/index.js +395 -0
  531. package/dist/cjs/index.js.map +1 -0
  532. package/dist/cjs/internal/array.js +13 -0
  533. package/dist/cjs/internal/array.js.map +1 -0
  534. package/dist/cjs/internal/blockedRequests.js +369 -0
  535. package/dist/cjs/internal/blockedRequests.js.map +1 -0
  536. package/dist/cjs/internal/cache.js +500 -0
  537. package/dist/cjs/internal/cache.js.map +1 -0
  538. package/dist/cjs/internal/cause.js +867 -0
  539. package/dist/cjs/internal/cause.js.map +1 -0
  540. package/dist/cjs/internal/channel/channelExecutor.js +697 -0
  541. package/dist/cjs/internal/channel/channelExecutor.js.map +1 -0
  542. package/dist/cjs/internal/channel/channelState.js +77 -0
  543. package/dist/cjs/internal/channel/channelState.js.map +1 -0
  544. package/dist/cjs/internal/channel/childExecutorDecision.js +74 -0
  545. package/dist/cjs/internal/channel/childExecutorDecision.js.map +1 -0
  546. package/dist/cjs/internal/channel/continuation.js +57 -0
  547. package/dist/cjs/internal/channel/continuation.js.map +1 -0
  548. package/dist/cjs/internal/channel/mergeDecision.js +60 -0
  549. package/dist/cjs/internal/channel/mergeDecision.js.map +1 -0
  550. package/dist/cjs/internal/channel/mergeState.js +83 -0
  551. package/dist/cjs/internal/channel/mergeState.js.map +1 -0
  552. package/dist/cjs/internal/channel/mergeStrategy.js +58 -0
  553. package/dist/cjs/internal/channel/mergeStrategy.js.map +1 -0
  554. package/dist/cjs/internal/channel/singleProducerAsyncInput.js +171 -0
  555. package/dist/cjs/internal/channel/singleProducerAsyncInput.js.map +1 -0
  556. package/dist/cjs/internal/channel/subexecutor.js +163 -0
  557. package/dist/cjs/internal/channel/subexecutor.js.map +1 -0
  558. package/dist/cjs/internal/channel/upstreamPullRequest.js +64 -0
  559. package/dist/cjs/internal/channel/upstreamPullRequest.js.map +1 -0
  560. package/dist/cjs/internal/channel/upstreamPullStrategy.js +64 -0
  561. package/dist/cjs/internal/channel/upstreamPullStrategy.js.map +1 -0
  562. package/dist/cjs/internal/channel.js +738 -0
  563. package/dist/cjs/internal/channel.js.map +1 -0
  564. package/dist/cjs/internal/clock.js +85 -0
  565. package/dist/cjs/internal/clock.js.map +1 -0
  566. package/dist/cjs/internal/completedRequestMap.js +11 -0
  567. package/dist/cjs/internal/completedRequestMap.js.map +1 -0
  568. package/dist/cjs/internal/concurrency.js +37 -0
  569. package/dist/cjs/internal/concurrency.js.map +1 -0
  570. package/dist/cjs/internal/config.js +397 -0
  571. package/dist/cjs/internal/config.js.map +1 -0
  572. package/dist/cjs/internal/configError.js +284 -0
  573. package/dist/cjs/internal/configError.js.map +1 -0
  574. package/dist/cjs/internal/configProvider/pathPatch.js +83 -0
  575. package/dist/cjs/internal/configProvider/pathPatch.js.map +1 -0
  576. package/dist/cjs/internal/configProvider.js +443 -0
  577. package/dist/cjs/internal/configProvider.js.map +1 -0
  578. package/dist/cjs/internal/console.js +79 -0
  579. package/dist/cjs/internal/console.js.map +1 -0
  580. package/dist/cjs/internal/context.js +273 -0
  581. package/dist/cjs/internal/context.js.map +1 -0
  582. package/dist/cjs/internal/core-effect.js +872 -0
  583. package/dist/cjs/internal/core-effect.js.map +1 -0
  584. package/dist/cjs/internal/core-stream.js +258 -0
  585. package/dist/cjs/internal/core-stream.js.map +1 -0
  586. package/dist/cjs/internal/core.js +1713 -0
  587. package/dist/cjs/internal/core.js.map +1 -0
  588. package/dist/cjs/internal/data.js +37 -0
  589. package/dist/cjs/internal/data.js.map +1 -0
  590. package/dist/cjs/internal/dataSource.js +107 -0
  591. package/dist/cjs/internal/dataSource.js.map +1 -0
  592. package/dist/cjs/internal/dateTime.js +839 -0
  593. package/dist/cjs/internal/dateTime.js.map +1 -0
  594. package/dist/cjs/internal/defaultServices/console.js +99 -0
  595. package/dist/cjs/internal/defaultServices/console.js.map +1 -0
  596. package/dist/cjs/internal/defaultServices.js +92 -0
  597. package/dist/cjs/internal/defaultServices.js.map +1 -0
  598. package/dist/cjs/internal/deferred.js +36 -0
  599. package/dist/cjs/internal/deferred.js.map +1 -0
  600. package/dist/cjs/internal/differ/chunkPatch.js +139 -0
  601. package/dist/cjs/internal/differ/chunkPatch.js.map +1 -0
  602. package/dist/cjs/internal/differ/contextPatch.js +152 -0
  603. package/dist/cjs/internal/differ/contextPatch.js.map +1 -0
  604. package/dist/cjs/internal/differ/hashMapPatch.js +139 -0
  605. package/dist/cjs/internal/differ/hashMapPatch.js.map +1 -0
  606. package/dist/cjs/internal/differ/hashSetPatch.js +113 -0
  607. package/dist/cjs/internal/differ/hashSetPatch.js.map +1 -0
  608. package/dist/cjs/internal/differ/orPatch.js +184 -0
  609. package/dist/cjs/internal/differ/orPatch.js.map +1 -0
  610. package/dist/cjs/internal/differ/readonlyArrayPatch.js +138 -0
  611. package/dist/cjs/internal/differ/readonlyArrayPatch.js.map +1 -0
  612. package/dist/cjs/internal/differ.js +149 -0
  613. package/dist/cjs/internal/differ.js.map +1 -0
  614. package/dist/cjs/internal/doNotation.js +25 -0
  615. package/dist/cjs/internal/doNotation.js.map +1 -0
  616. package/dist/cjs/internal/effect/circular.js +420 -0
  617. package/dist/cjs/internal/effect/circular.js.map +1 -0
  618. package/dist/cjs/internal/effectable.js +120 -0
  619. package/dist/cjs/internal/effectable.js.map +1 -0
  620. package/dist/cjs/internal/either.js +100 -0
  621. package/dist/cjs/internal/either.js.map +1 -0
  622. package/dist/cjs/internal/encoding/base64.js +81 -0
  623. package/dist/cjs/internal/encoding/base64.js.map +1 -0
  624. package/dist/cjs/internal/encoding/base64Url.js +30 -0
  625. package/dist/cjs/internal/encoding/base64Url.js.map +1 -0
  626. package/dist/cjs/internal/encoding/common.js +48 -0
  627. package/dist/cjs/internal/encoding/common.js.map +1 -0
  628. package/dist/cjs/internal/encoding/hex.js +57 -0
  629. package/dist/cjs/internal/encoding/hex.js.map +1 -0
  630. package/dist/cjs/internal/errors.js +13 -0
  631. package/dist/cjs/internal/errors.js.map +1 -0
  632. package/dist/cjs/internal/executionPlan.js +68 -0
  633. package/dist/cjs/internal/executionPlan.js.map +1 -0
  634. package/dist/cjs/internal/executionStrategy.js +54 -0
  635. package/dist/cjs/internal/executionStrategy.js.map +1 -0
  636. package/dist/cjs/internal/fiber.js +279 -0
  637. package/dist/cjs/internal/fiber.js.map +1 -0
  638. package/dist/cjs/internal/fiberId.js +239 -0
  639. package/dist/cjs/internal/fiberId.js.map +1 -0
  640. package/dist/cjs/internal/fiberMessage.js +38 -0
  641. package/dist/cjs/internal/fiberMessage.js.map +1 -0
  642. package/dist/cjs/internal/fiberRefs/patch.js +115 -0
  643. package/dist/cjs/internal/fiberRefs/patch.js.map +1 -0
  644. package/dist/cjs/internal/fiberRefs.js +203 -0
  645. package/dist/cjs/internal/fiberRefs.js.map +1 -0
  646. package/dist/cjs/internal/fiberRuntime.js +2207 -0
  647. package/dist/cjs/internal/fiberRuntime.js.map +1 -0
  648. package/dist/cjs/internal/fiberScope.js +52 -0
  649. package/dist/cjs/internal/fiberScope.js.map +1 -0
  650. package/dist/cjs/internal/fiberStatus.js +85 -0
  651. package/dist/cjs/internal/fiberStatus.js.map +1 -0
  652. package/dist/cjs/internal/groupBy.js +222 -0
  653. package/dist/cjs/internal/groupBy.js.map +1 -0
  654. package/dist/cjs/internal/hashMap/array.js +56 -0
  655. package/dist/cjs/internal/hashMap/array.js.map +1 -0
  656. package/dist/cjs/internal/hashMap/bitwise.js +38 -0
  657. package/dist/cjs/internal/hashMap/bitwise.js.map +1 -0
  658. package/dist/cjs/internal/hashMap/config.js +17 -0
  659. package/dist/cjs/internal/hashMap/config.js.map +1 -0
  660. package/dist/cjs/internal/hashMap/keySet.js +12 -0
  661. package/dist/cjs/internal/hashMap/keySet.js.map +1 -0
  662. package/dist/cjs/internal/hashMap/node.js +268 -0
  663. package/dist/cjs/internal/hashMap/node.js.map +1 -0
  664. package/dist/cjs/internal/hashMap.js +379 -0
  665. package/dist/cjs/internal/hashMap.js.map +1 -0
  666. package/dist/cjs/internal/hashSet.js +198 -0
  667. package/dist/cjs/internal/hashSet.js.map +1 -0
  668. package/dist/cjs/internal/keyedPool.js +170 -0
  669. package/dist/cjs/internal/keyedPool.js.map +1 -0
  670. package/dist/cjs/internal/layer/circular.js +80 -0
  671. package/dist/cjs/internal/layer/circular.js.map +1 -0
  672. package/dist/cjs/internal/layer.js +595 -0
  673. package/dist/cjs/internal/layer.js.map +1 -0
  674. package/dist/cjs/internal/logSpan.js +26 -0
  675. package/dist/cjs/internal/logSpan.js.map +1 -0
  676. package/dist/cjs/internal/logger-circular.js +26 -0
  677. package/dist/cjs/internal/logger-circular.js.map +1 -0
  678. package/dist/cjs/internal/logger.js +381 -0
  679. package/dist/cjs/internal/logger.js.map +1 -0
  680. package/dist/cjs/internal/mailbox.js +462 -0
  681. package/dist/cjs/internal/mailbox.js.map +1 -0
  682. package/dist/cjs/internal/managedRuntime/circular.js +10 -0
  683. package/dist/cjs/internal/managedRuntime/circular.js.map +1 -0
  684. package/dist/cjs/internal/managedRuntime.js +95 -0
  685. package/dist/cjs/internal/managedRuntime.js.map +1 -0
  686. package/dist/cjs/internal/matcher.js +320 -0
  687. package/dist/cjs/internal/matcher.js.map +1 -0
  688. package/dist/cjs/internal/metric/boundaries.js +53 -0
  689. package/dist/cjs/internal/metric/boundaries.js.map +1 -0
  690. package/dist/cjs/internal/metric/hook.js +388 -0
  691. package/dist/cjs/internal/metric/hook.js.map +1 -0
  692. package/dist/cjs/internal/metric/key.js +73 -0
  693. package/dist/cjs/internal/metric/key.js.map +1 -0
  694. package/dist/cjs/internal/metric/keyType.js +188 -0
  695. package/dist/cjs/internal/metric/keyType.js.map +1 -0
  696. package/dist/cjs/internal/metric/label.js +45 -0
  697. package/dist/cjs/internal/metric/label.js.map +1 -0
  698. package/dist/cjs/internal/metric/pair.js +40 -0
  699. package/dist/cjs/internal/metric/pair.js.map +1 -0
  700. package/dist/cjs/internal/metric/polling.js +80 -0
  701. package/dist/cjs/internal/metric/polling.js.map +1 -0
  702. package/dist/cjs/internal/metric/registry.js +113 -0
  703. package/dist/cjs/internal/metric/registry.js.map +1 -0
  704. package/dist/cjs/internal/metric/state.js +201 -0
  705. package/dist/cjs/internal/metric/state.js.map +1 -0
  706. package/dist/cjs/internal/metric.js +204 -0
  707. package/dist/cjs/internal/metric.js.map +1 -0
  708. package/dist/cjs/internal/opCodes/cause.js +19 -0
  709. package/dist/cjs/internal/opCodes/cause.js.map +1 -0
  710. package/dist/cjs/internal/opCodes/channel.js +35 -0
  711. package/dist/cjs/internal/opCodes/channel.js.map +1 -0
  712. package/dist/cjs/internal/opCodes/channelChildExecutorDecision.js +13 -0
  713. package/dist/cjs/internal/opCodes/channelChildExecutorDecision.js.map +1 -0
  714. package/dist/cjs/internal/opCodes/channelMergeDecision.js +11 -0
  715. package/dist/cjs/internal/opCodes/channelMergeDecision.js.map +1 -0
  716. package/dist/cjs/internal/opCodes/channelMergeState.js +13 -0
  717. package/dist/cjs/internal/opCodes/channelMergeState.js.map +1 -0
  718. package/dist/cjs/internal/opCodes/channelMergeStrategy.js +11 -0
  719. package/dist/cjs/internal/opCodes/channelMergeStrategy.js.map +1 -0
  720. package/dist/cjs/internal/opCodes/channelState.js +15 -0
  721. package/dist/cjs/internal/opCodes/channelState.js.map +1 -0
  722. package/dist/cjs/internal/opCodes/channelUpstreamPullRequest.js +11 -0
  723. package/dist/cjs/internal/opCodes/channelUpstreamPullRequest.js.map +1 -0
  724. package/dist/cjs/internal/opCodes/channelUpstreamPullStrategy.js +11 -0
  725. package/dist/cjs/internal/opCodes/channelUpstreamPullStrategy.js.map +1 -0
  726. package/dist/cjs/internal/opCodes/config.js +29 -0
  727. package/dist/cjs/internal/opCodes/config.js.map +1 -0
  728. package/dist/cjs/internal/opCodes/configError.js +19 -0
  729. package/dist/cjs/internal/opCodes/configError.js.map +1 -0
  730. package/dist/cjs/internal/opCodes/continuation.js +11 -0
  731. package/dist/cjs/internal/opCodes/continuation.js.map +1 -0
  732. package/dist/cjs/internal/opCodes/deferred.js +11 -0
  733. package/dist/cjs/internal/opCodes/deferred.js.map +1 -0
  734. package/dist/cjs/internal/opCodes/effect.js +37 -0
  735. package/dist/cjs/internal/opCodes/effect.js.map +1 -0
  736. package/dist/cjs/internal/opCodes/layer.js +27 -0
  737. package/dist/cjs/internal/opCodes/layer.js.map +1 -0
  738. package/dist/cjs/internal/opCodes/streamHaltStrategy.js +15 -0
  739. package/dist/cjs/internal/opCodes/streamHaltStrategy.js.map +1 -0
  740. package/dist/cjs/internal/option.js +82 -0
  741. package/dist/cjs/internal/option.js.map +1 -0
  742. package/dist/cjs/internal/pool.js +288 -0
  743. package/dist/cjs/internal/pool.js.map +1 -0
  744. package/dist/cjs/internal/pubsub.js +1287 -0
  745. package/dist/cjs/internal/pubsub.js.map +1 -0
  746. package/dist/cjs/internal/query.js +102 -0
  747. package/dist/cjs/internal/query.js.map +1 -0
  748. package/dist/cjs/internal/queue.js +518 -0
  749. package/dist/cjs/internal/queue.js.map +1 -0
  750. package/dist/cjs/internal/random.js +128 -0
  751. package/dist/cjs/internal/random.js.map +1 -0
  752. package/dist/cjs/internal/rateLimiter.js +52 -0
  753. package/dist/cjs/internal/rateLimiter.js.map +1 -0
  754. package/dist/cjs/internal/rcMap.js +182 -0
  755. package/dist/cjs/internal/rcMap.js.map +1 -0
  756. package/dist/cjs/internal/rcRef.js +139 -0
  757. package/dist/cjs/internal/rcRef.js.map +1 -0
  758. package/dist/cjs/internal/redBlackTree/iterator.js +199 -0
  759. package/dist/cjs/internal/redBlackTree/iterator.js.map +1 -0
  760. package/dist/cjs/internal/redBlackTree/node.js +60 -0
  761. package/dist/cjs/internal/redBlackTree/node.js.map +1 -0
  762. package/dist/cjs/internal/redBlackTree.js +1088 -0
  763. package/dist/cjs/internal/redBlackTree.js.map +1 -0
  764. package/dist/cjs/internal/redacted.js +67 -0
  765. package/dist/cjs/internal/redacted.js.map +1 -0
  766. package/dist/cjs/internal/ref.js +121 -0
  767. package/dist/cjs/internal/ref.js.map +1 -0
  768. package/dist/cjs/internal/reloadable.js +56 -0
  769. package/dist/cjs/internal/reloadable.js.map +1 -0
  770. package/dist/cjs/internal/request.js +104 -0
  771. package/dist/cjs/internal/request.js.map +1 -0
  772. package/dist/cjs/internal/resource.js +49 -0
  773. package/dist/cjs/internal/resource.js.map +1 -0
  774. package/dist/cjs/internal/ringBuffer.js +64 -0
  775. package/dist/cjs/internal/ringBuffer.js.map +1 -0
  776. package/dist/cjs/internal/runtime.js +321 -0
  777. package/dist/cjs/internal/runtime.js.map +1 -0
  778. package/dist/cjs/internal/runtimeFlags.js +126 -0
  779. package/dist/cjs/internal/runtimeFlags.js.map +1 -0
  780. package/dist/cjs/internal/runtimeFlagsPatch.js +52 -0
  781. package/dist/cjs/internal/runtimeFlagsPatch.js.map +1 -0
  782. package/dist/cjs/internal/schedule/decision.js +44 -0
  783. package/dist/cjs/internal/schedule/decision.js.map +1 -0
  784. package/dist/cjs/internal/schedule/interval.js +83 -0
  785. package/dist/cjs/internal/schedule/interval.js.map +1 -0
  786. package/dist/cjs/internal/schedule/intervals.js +134 -0
  787. package/dist/cjs/internal/schedule/intervals.js.map +1 -0
  788. package/dist/cjs/internal/schedule.js +900 -0
  789. package/dist/cjs/internal/schedule.js.map +1 -0
  790. package/dist/cjs/internal/schema/errors.js +113 -0
  791. package/dist/cjs/internal/schema/errors.js.map +1 -0
  792. package/dist/cjs/internal/schema/schemaId.js +49 -0
  793. package/dist/cjs/internal/schema/schemaId.js.map +1 -0
  794. package/dist/cjs/internal/schema/util.js +48 -0
  795. package/dist/cjs/internal/schema/util.js.map +1 -0
  796. package/dist/cjs/internal/scopedCache.js +398 -0
  797. package/dist/cjs/internal/scopedCache.js.map +1 -0
  798. package/dist/cjs/internal/scopedRef.js +53 -0
  799. package/dist/cjs/internal/scopedRef.js.map +1 -0
  800. package/dist/cjs/internal/secret.js +90 -0
  801. package/dist/cjs/internal/secret.js.map +1 -0
  802. package/dist/cjs/internal/singleShotGen.js +37 -0
  803. package/dist/cjs/internal/singleShotGen.js.map +1 -0
  804. package/dist/cjs/internal/sink.js +883 -0
  805. package/dist/cjs/internal/sink.js.map +1 -0
  806. package/dist/cjs/internal/stack.js +12 -0
  807. package/dist/cjs/internal/stack.js.map +1 -0
  808. package/dist/cjs/internal/stm/core.js +525 -0
  809. package/dist/cjs/internal/stm/core.js.map +1 -0
  810. package/dist/cjs/internal/stm/entry.js +57 -0
  811. package/dist/cjs/internal/stm/entry.js.map +1 -0
  812. package/dist/cjs/internal/stm/journal.js +104 -0
  813. package/dist/cjs/internal/stm/journal.js.map +1 -0
  814. package/dist/cjs/internal/stm/opCodes/stm.js +31 -0
  815. package/dist/cjs/internal/stm/opCodes/stm.js.map +1 -0
  816. package/dist/cjs/internal/stm/opCodes/stmState.js +13 -0
  817. package/dist/cjs/internal/stm/opCodes/stmState.js.map +1 -0
  818. package/dist/cjs/internal/stm/opCodes/strategy.js +13 -0
  819. package/dist/cjs/internal/stm/opCodes/strategy.js.map +1 -0
  820. package/dist/cjs/internal/stm/opCodes/tExit.js +17 -0
  821. package/dist/cjs/internal/stm/opCodes/tExit.js.map +1 -0
  822. package/dist/cjs/internal/stm/opCodes/tryCommit.js +11 -0
  823. package/dist/cjs/internal/stm/opCodes/tryCommit.js.map +1 -0
  824. package/dist/cjs/internal/stm/stm.js +514 -0
  825. package/dist/cjs/internal/stm/stm.js.map +1 -0
  826. package/dist/cjs/internal/stm/stmState.js +102 -0
  827. package/dist/cjs/internal/stm/stmState.js.map +1 -0
  828. package/dist/cjs/internal/stm/tArray.js +258 -0
  829. package/dist/cjs/internal/stm/tArray.js.map +1 -0
  830. package/dist/cjs/internal/stm/tDeferred.js +51 -0
  831. package/dist/cjs/internal/stm/tDeferred.js.map +1 -0
  832. package/dist/cjs/internal/stm/tExit.js +116 -0
  833. package/dist/cjs/internal/stm/tExit.js.map +1 -0
  834. package/dist/cjs/internal/stm/tMap.js +448 -0
  835. package/dist/cjs/internal/stm/tMap.js.map +1 -0
  836. package/dist/cjs/internal/stm/tPriorityQueue.js +164 -0
  837. package/dist/cjs/internal/stm/tPriorityQueue.js.map +1 -0
  838. package/dist/cjs/internal/stm/tPubSub.js +397 -0
  839. package/dist/cjs/internal/stm/tPubSub.js.map +1 -0
  840. package/dist/cjs/internal/stm/tQueue.js +284 -0
  841. package/dist/cjs/internal/stm/tQueue.js.map +1 -0
  842. package/dist/cjs/internal/stm/tRandom.js +92 -0
  843. package/dist/cjs/internal/stm/tRandom.js.map +1 -0
  844. package/dist/cjs/internal/stm/tReentrantLock.js +215 -0
  845. package/dist/cjs/internal/stm/tReentrantLock.js.map +1 -0
  846. package/dist/cjs/internal/stm/tRef.js +110 -0
  847. package/dist/cjs/internal/stm/tRef.js.map +1 -0
  848. package/dist/cjs/internal/stm/tSemaphore.js +72 -0
  849. package/dist/cjs/internal/stm/tSemaphore.js.map +1 -0
  850. package/dist/cjs/internal/stm/tSet.js +104 -0
  851. package/dist/cjs/internal/stm/tSet.js.map +1 -0
  852. package/dist/cjs/internal/stm/tSubscriptionRef.js +177 -0
  853. package/dist/cjs/internal/stm/tSubscriptionRef.js.map +1 -0
  854. package/dist/cjs/internal/stm/tryCommit.js +25 -0
  855. package/dist/cjs/internal/stm/tryCommit.js.map +1 -0
  856. package/dist/cjs/internal/stm/txnId.js +18 -0
  857. package/dist/cjs/internal/stm/txnId.js.map +1 -0
  858. package/dist/cjs/internal/stm/versioned.js +15 -0
  859. package/dist/cjs/internal/stm/versioned.js.map +1 -0
  860. package/dist/cjs/internal/stream/debounceState.js +29 -0
  861. package/dist/cjs/internal/stream/debounceState.js.map +1 -0
  862. package/dist/cjs/internal/stream/emit.js +129 -0
  863. package/dist/cjs/internal/stream/emit.js.map +1 -0
  864. package/dist/cjs/internal/stream/haltStrategy.js +75 -0
  865. package/dist/cjs/internal/stream/haltStrategy.js.map +1 -0
  866. package/dist/cjs/internal/stream/handoff.js +65 -0
  867. package/dist/cjs/internal/stream/handoff.js.map +1 -0
  868. package/dist/cjs/internal/stream/handoffSignal.js +31 -0
  869. package/dist/cjs/internal/stream/handoffSignal.js.map +1 -0
  870. package/dist/cjs/internal/stream/pull.js +34 -0
  871. package/dist/cjs/internal/stream/pull.js.map +1 -0
  872. package/dist/cjs/internal/stream/sinkEndReason.js +19 -0
  873. package/dist/cjs/internal/stream/sinkEndReason.js.map +1 -0
  874. package/dist/cjs/internal/stream/zipAllState.js +41 -0
  875. package/dist/cjs/internal/stream/zipAllState.js.map +1 -0
  876. package/dist/cjs/internal/stream/zipChunksState.js +29 -0
  877. package/dist/cjs/internal/stream/zipChunksState.js.map +1 -0
  878. package/dist/cjs/internal/stream.js +2979 -0
  879. package/dist/cjs/internal/stream.js.map +1 -0
  880. package/dist/cjs/internal/string-utils.js +90 -0
  881. package/dist/cjs/internal/string-utils.js.map +1 -0
  882. package/dist/cjs/internal/subscriptionRef.js +72 -0
  883. package/dist/cjs/internal/subscriptionRef.js.map +1 -0
  884. package/dist/cjs/internal/supervisor/patch.js +135 -0
  885. package/dist/cjs/internal/supervisor/patch.js.map +1 -0
  886. package/dist/cjs/internal/supervisor.js +222 -0
  887. package/dist/cjs/internal/supervisor.js.map +1 -0
  888. package/dist/cjs/internal/synchronizedRef.js +51 -0
  889. package/dist/cjs/internal/synchronizedRef.js.map +1 -0
  890. package/dist/cjs/internal/take.js +130 -0
  891. package/dist/cjs/internal/take.js.map +1 -0
  892. package/dist/cjs/internal/testing/sleep.js +14 -0
  893. package/dist/cjs/internal/testing/sleep.js.map +1 -0
  894. package/dist/cjs/internal/testing/suspendedWarningData.js +58 -0
  895. package/dist/cjs/internal/testing/suspendedWarningData.js.map +1 -0
  896. package/dist/cjs/internal/testing/warningData.js +59 -0
  897. package/dist/cjs/internal/testing/warningData.js.map +1 -0
  898. package/dist/cjs/internal/tracer.js +134 -0
  899. package/dist/cjs/internal/tracer.js.map +1 -0
  900. package/dist/cjs/internal/trie.js +564 -0
  901. package/dist/cjs/internal/trie.js.map +1 -0
  902. package/dist/cjs/internal/version.js +14 -0
  903. package/dist/cjs/internal/version.js.map +1 -0
  904. package/dist/dts/Arbitrary.d.ts +69 -0
  905. package/dist/dts/Arbitrary.d.ts.map +1 -0
  906. package/dist/dts/Array.d.ts +5922 -0
  907. package/dist/dts/Array.d.ts.map +1 -0
  908. package/dist/dts/BigDecimal.d.ts +1483 -0
  909. package/dist/dts/BigDecimal.d.ts.map +1 -0
  910. package/dist/dts/BigInt.d.ts +1033 -0
  911. package/dist/dts/BigInt.d.ts.map +1 -0
  912. package/dist/dts/Boolean.d.ts +523 -0
  913. package/dist/dts/Boolean.d.ts.map +1 -0
  914. package/dist/dts/Brand.d.ts +234 -0
  915. package/dist/dts/Brand.d.ts.map +1 -0
  916. package/dist/dts/Cache.d.ts +241 -0
  917. package/dist/dts/Cache.d.ts.map +1 -0
  918. package/dist/dts/Cause.d.ts +1928 -0
  919. package/dist/dts/Cause.d.ts.map +1 -0
  920. package/dist/dts/Channel.d.ts +1989 -0
  921. package/dist/dts/Channel.d.ts.map +1 -0
  922. package/dist/dts/ChildExecutorDecision.d.ts +135 -0
  923. package/dist/dts/ChildExecutorDecision.d.ts.map +1 -0
  924. package/dist/dts/Chunk.d.ts +1709 -0
  925. package/dist/dts/Chunk.d.ts.map +1 -0
  926. package/dist/dts/Clock.d.ts +97 -0
  927. package/dist/dts/Clock.d.ts.map +1 -0
  928. package/dist/dts/Config.d.ts +667 -0
  929. package/dist/dts/Config.d.ts.map +1 -0
  930. package/dist/dts/ConfigError.d.ts +238 -0
  931. package/dist/dts/ConfigError.d.ts.map +1 -0
  932. package/dist/dts/ConfigProvider.d.ts +372 -0
  933. package/dist/dts/ConfigProvider.d.ts.map +1 -0
  934. package/dist/dts/ConfigProviderPathPatch.d.ts +118 -0
  935. package/dist/dts/ConfigProviderPathPatch.d.ts.map +1 -0
  936. package/dist/dts/Console.d.ts +224 -0
  937. package/dist/dts/Console.d.ts.map +1 -0
  938. package/dist/dts/Context.d.ts +823 -0
  939. package/dist/dts/Context.d.ts.map +1 -0
  940. package/dist/dts/Cron.d.ts +226 -0
  941. package/dist/dts/Cron.d.ts.map +1 -0
  942. package/dist/dts/Data.d.ts +613 -0
  943. package/dist/dts/Data.d.ts.map +1 -0
  944. package/dist/dts/DateTime.d.ts +2417 -0
  945. package/dist/dts/DateTime.d.ts.map +1 -0
  946. package/dist/dts/DefaultServices.d.ts +26 -0
  947. package/dist/dts/DefaultServices.d.ts.map +1 -0
  948. package/dist/dts/Deferred.d.ts +437 -0
  949. package/dist/dts/Deferred.d.ts.map +1 -0
  950. package/dist/dts/Differ.d.ts +420 -0
  951. package/dist/dts/Differ.d.ts.map +1 -0
  952. package/dist/dts/Duration.d.ts +557 -0
  953. package/dist/dts/Duration.d.ts.map +1 -0
  954. package/dist/dts/Effect.d.ts +26986 -0
  955. package/dist/dts/Effect.d.ts.map +1 -0
  956. package/dist/dts/Effectable.d.ts +93 -0
  957. package/dist/dts/Effectable.d.ts.map +1 -0
  958. package/dist/dts/Either.d.ts +1431 -0
  959. package/dist/dts/Either.d.ts.map +1 -0
  960. package/dist/dts/Encoding.d.ts +160 -0
  961. package/dist/dts/Encoding.d.ts.map +1 -0
  962. package/dist/dts/Equal.d.ts +34 -0
  963. package/dist/dts/Equal.d.ts.map +1 -0
  964. package/dist/dts/Equivalence.d.ts +158 -0
  965. package/dist/dts/Equivalence.d.ts.map +1 -0
  966. package/dist/dts/ExecutionPlan.d.ts +210 -0
  967. package/dist/dts/ExecutionPlan.d.ts.map +1 -0
  968. package/dist/dts/ExecutionStrategy.d.ts +122 -0
  969. package/dist/dts/ExecutionStrategy.d.ts.map +1 -0
  970. package/dist/dts/Exit.d.ts +663 -0
  971. package/dist/dts/Exit.d.ts.map +1 -0
  972. package/dist/dts/FastCheck.d.ts +9 -0
  973. package/dist/dts/FastCheck.d.ts.map +1 -0
  974. package/dist/dts/Fiber.d.ts +831 -0
  975. package/dist/dts/Fiber.d.ts.map +1 -0
  976. package/dist/dts/FiberHandle.d.ts +270 -0
  977. package/dist/dts/FiberHandle.d.ts.map +1 -0
  978. package/dist/dts/FiberId.d.ts +196 -0
  979. package/dist/dts/FiberId.d.ts.map +1 -0
  980. package/dist/dts/FiberMap.d.ts +368 -0
  981. package/dist/dts/FiberMap.d.ts.map +1 -0
  982. package/dist/dts/FiberRef.d.ts +422 -0
  983. package/dist/dts/FiberRef.d.ts.map +1 -0
  984. package/dist/dts/FiberRefs.d.ts +256 -0
  985. package/dist/dts/FiberRefs.d.ts.map +1 -0
  986. package/dist/dts/FiberRefsPatch.d.ts +125 -0
  987. package/dist/dts/FiberRefsPatch.d.ts.map +1 -0
  988. package/dist/dts/FiberSet.d.ts +236 -0
  989. package/dist/dts/FiberSet.d.ts.map +1 -0
  990. package/dist/dts/FiberStatus.d.ts +94 -0
  991. package/dist/dts/FiberStatus.d.ts.map +1 -0
  992. package/dist/dts/Function.d.ts +660 -0
  993. package/dist/dts/Function.d.ts.map +1 -0
  994. package/dist/dts/GlobalValue.d.ts +25 -0
  995. package/dist/dts/GlobalValue.d.ts.map +1 -0
  996. package/dist/dts/Graph.d.ts +1753 -0
  997. package/dist/dts/Graph.d.ts.map +1 -0
  998. package/dist/dts/GroupBy.d.ts +125 -0
  999. package/dist/dts/GroupBy.d.ts.map +1 -0
  1000. package/dist/dts/HKT.d.ts +41 -0
  1001. package/dist/dts/HKT.d.ts.map +1 -0
  1002. package/dist/dts/Hash.d.ts +79 -0
  1003. package/dist/dts/Hash.d.ts.map +1 -0
  1004. package/dist/dts/HashMap.d.ts +863 -0
  1005. package/dist/dts/HashMap.d.ts.map +1 -0
  1006. package/dist/dts/HashRing.d.ts +158 -0
  1007. package/dist/dts/HashRing.d.ts.map +1 -0
  1008. package/dist/dts/HashSet.d.ts +2271 -0
  1009. package/dist/dts/HashSet.d.ts.map +1 -0
  1010. package/dist/dts/Inspectable.d.ts +88 -0
  1011. package/dist/dts/Inspectable.d.ts.map +1 -0
  1012. package/dist/dts/Iterable.d.ts +1047 -0
  1013. package/dist/dts/Iterable.d.ts.map +1 -0
  1014. package/dist/dts/JSONSchema.d.ts +268 -0
  1015. package/dist/dts/JSONSchema.d.ts.map +1 -0
  1016. package/dist/dts/KeyedPool.d.ts +182 -0
  1017. package/dist/dts/KeyedPool.d.ts.map +1 -0
  1018. package/dist/dts/Layer.d.ts +1374 -0
  1019. package/dist/dts/Layer.d.ts.map +1 -0
  1020. package/dist/dts/LayerMap.d.ts +265 -0
  1021. package/dist/dts/LayerMap.d.ts.map +1 -0
  1022. package/dist/dts/List.d.ts +937 -0
  1023. package/dist/dts/List.d.ts.map +1 -0
  1024. package/dist/dts/LogLevel.d.ts +333 -0
  1025. package/dist/dts/LogLevel.d.ts.map +1 -0
  1026. package/dist/dts/LogSpan.d.ts +19 -0
  1027. package/dist/dts/LogSpan.d.ts.map +1 -0
  1028. package/dist/dts/Logger.d.ts +795 -0
  1029. package/dist/dts/Logger.d.ts.map +1 -0
  1030. package/dist/dts/Mailbox.d.ts +274 -0
  1031. package/dist/dts/Mailbox.d.ts.map +1 -0
  1032. package/dist/dts/ManagedRuntime.d.ts +154 -0
  1033. package/dist/dts/ManagedRuntime.d.ts.map +1 -0
  1034. package/dist/dts/Match.d.ts +1140 -0
  1035. package/dist/dts/Match.d.ts.map +1 -0
  1036. package/dist/dts/MergeDecision.d.ts +86 -0
  1037. package/dist/dts/MergeDecision.d.ts.map +1 -0
  1038. package/dist/dts/MergeState.d.ts +130 -0
  1039. package/dist/dts/MergeState.d.ts.map +1 -0
  1040. package/dist/dts/MergeStrategy.d.ts +104 -0
  1041. package/dist/dts/MergeStrategy.d.ts.map +1 -0
  1042. package/dist/dts/Metric.d.ts +1042 -0
  1043. package/dist/dts/Metric.d.ts.map +1 -0
  1044. package/dist/dts/MetricBoundaries.d.ts +58 -0
  1045. package/dist/dts/MetricBoundaries.d.ts.map +1 -0
  1046. package/dist/dts/MetricHook.d.ts +155 -0
  1047. package/dist/dts/MetricHook.d.ts.map +1 -0
  1048. package/dist/dts/MetricKey.d.ts +222 -0
  1049. package/dist/dts/MetricKey.d.ts.map +1 -0
  1050. package/dist/dts/MetricKeyType.d.ts +224 -0
  1051. package/dist/dts/MetricKeyType.d.ts.map +1 -0
  1052. package/dist/dts/MetricLabel.d.ts +42 -0
  1053. package/dist/dts/MetricLabel.d.ts.map +1 -0
  1054. package/dist/dts/MetricPair.d.ts +54 -0
  1055. package/dist/dts/MetricPair.d.ts.map +1 -0
  1056. package/dist/dts/MetricPolling.d.ts +151 -0
  1057. package/dist/dts/MetricPolling.d.ts.map +1 -0
  1058. package/dist/dts/MetricRegistry.d.ts +34 -0
  1059. package/dist/dts/MetricRegistry.d.ts.map +1 -0
  1060. package/dist/dts/MetricState.d.ts +238 -0
  1061. package/dist/dts/MetricState.d.ts.map +1 -0
  1062. package/dist/dts/Micro.d.ts +3440 -0
  1063. package/dist/dts/Micro.d.ts.map +1 -0
  1064. package/dist/dts/ModuleVersion.d.ts +11 -0
  1065. package/dist/dts/ModuleVersion.d.ts.map +1 -0
  1066. package/dist/dts/MutableHashMap.d.ts +170 -0
  1067. package/dist/dts/MutableHashMap.d.ts.map +1 -0
  1068. package/dist/dts/MutableHashSet.d.ts +547 -0
  1069. package/dist/dts/MutableHashSet.d.ts.map +1 -0
  1070. package/dist/dts/MutableList.d.ts +150 -0
  1071. package/dist/dts/MutableList.d.ts.map +1 -0
  1072. package/dist/dts/MutableQueue.d.ts +189 -0
  1073. package/dist/dts/MutableQueue.d.ts.map +1 -0
  1074. package/dist/dts/MutableRef.d.ts +175 -0
  1075. package/dist/dts/MutableRef.d.ts.map +1 -0
  1076. package/dist/dts/NonEmptyIterable.d.ts +21 -0
  1077. package/dist/dts/NonEmptyIterable.d.ts.map +1 -0
  1078. package/dist/dts/Number.d.ts +1361 -0
  1079. package/dist/dts/Number.d.ts.map +1 -0
  1080. package/dist/dts/Option.d.ts +3757 -0
  1081. package/dist/dts/Option.d.ts.map +1 -0
  1082. package/dist/dts/Order.d.ts +260 -0
  1083. package/dist/dts/Order.d.ts.map +1 -0
  1084. package/dist/dts/Ordering.d.ts +144 -0
  1085. package/dist/dts/Ordering.d.ts.map +1 -0
  1086. package/dist/dts/ParseResult.d.ts +560 -0
  1087. package/dist/dts/ParseResult.d.ts.map +1 -0
  1088. package/dist/dts/PartitionedSemaphore.d.ts +76 -0
  1089. package/dist/dts/PartitionedSemaphore.d.ts.map +1 -0
  1090. package/dist/dts/Pipeable.d.ts +65 -0
  1091. package/dist/dts/Pipeable.d.ts.map +1 -0
  1092. package/dist/dts/Pool.d.ts +201 -0
  1093. package/dist/dts/Pool.d.ts.map +1 -0
  1094. package/dist/dts/Predicate.d.ts +2197 -0
  1095. package/dist/dts/Predicate.d.ts.map +1 -0
  1096. package/dist/dts/Pretty.d.ts +26 -0
  1097. package/dist/dts/Pretty.d.ts.map +1 -0
  1098. package/dist/dts/PrimaryKey.d.ts +21 -0
  1099. package/dist/dts/PrimaryKey.d.ts.map +1 -0
  1100. package/dist/dts/PubSub.d.ts +197 -0
  1101. package/dist/dts/PubSub.d.ts.map +1 -0
  1102. package/dist/dts/Queue.d.ts +664 -0
  1103. package/dist/dts/Queue.d.ts.map +1 -0
  1104. package/dist/dts/Random.d.ts +183 -0
  1105. package/dist/dts/Random.d.ts.map +1 -0
  1106. package/dist/dts/RateLimiter.d.ts +134 -0
  1107. package/dist/dts/RateLimiter.d.ts.map +1 -0
  1108. package/dist/dts/RcMap.d.ts +231 -0
  1109. package/dist/dts/RcMap.d.ts.map +1 -0
  1110. package/dist/dts/RcRef.d.ts +111 -0
  1111. package/dist/dts/RcRef.d.ts.map +1 -0
  1112. package/dist/dts/Readable.d.ts +72 -0
  1113. package/dist/dts/Readable.d.ts.map +1 -0
  1114. package/dist/dts/Record.d.ts +1547 -0
  1115. package/dist/dts/Record.d.ts.map +1 -0
  1116. package/dist/dts/RedBlackTree.d.ts +676 -0
  1117. package/dist/dts/RedBlackTree.d.ts.map +1 -0
  1118. package/dist/dts/Redacted.d.ts +133 -0
  1119. package/dist/dts/Redacted.d.ts.map +1 -0
  1120. package/dist/dts/Ref.d.ts +250 -0
  1121. package/dist/dts/Ref.d.ts.map +1 -0
  1122. package/dist/dts/RegExp.d.ts +31 -0
  1123. package/dist/dts/RegExp.d.ts.map +1 -0
  1124. package/dist/dts/Reloadable.d.ts +102 -0
  1125. package/dist/dts/Reloadable.d.ts.map +1 -0
  1126. package/dist/dts/Request.d.ts +383 -0
  1127. package/dist/dts/Request.d.ts.map +1 -0
  1128. package/dist/dts/RequestBlock.d.ts +94 -0
  1129. package/dist/dts/RequestBlock.d.ts.map +1 -0
  1130. package/dist/dts/RequestResolver.d.ts +413 -0
  1131. package/dist/dts/RequestResolver.d.ts.map +1 -0
  1132. package/dist/dts/Resource.d.ts +99 -0
  1133. package/dist/dts/Resource.d.ts.map +1 -0
  1134. package/dist/dts/Runtime.d.ts +578 -0
  1135. package/dist/dts/Runtime.d.ts.map +1 -0
  1136. package/dist/dts/RuntimeFlags.d.ts +397 -0
  1137. package/dist/dts/RuntimeFlags.d.ts.map +1 -0
  1138. package/dist/dts/RuntimeFlagsPatch.d.ts +273 -0
  1139. package/dist/dts/RuntimeFlagsPatch.d.ts.map +1 -0
  1140. package/dist/dts/STM.d.ts +2645 -0
  1141. package/dist/dts/STM.d.ts.map +1 -0
  1142. package/dist/dts/Schedule.d.ts +3509 -0
  1143. package/dist/dts/Schedule.d.ts.map +1 -0
  1144. package/dist/dts/ScheduleDecision.d.ts +50 -0
  1145. package/dist/dts/ScheduleDecision.d.ts.map +1 -0
  1146. package/dist/dts/ScheduleInterval.d.ts +204 -0
  1147. package/dist/dts/ScheduleInterval.d.ts.map +1 -0
  1148. package/dist/dts/ScheduleIntervals.d.ts +159 -0
  1149. package/dist/dts/ScheduleIntervals.d.ts.map +1 -0
  1150. package/dist/dts/Scheduler.d.ts +161 -0
  1151. package/dist/dts/Scheduler.d.ts.map +1 -0
  1152. package/dist/dts/Schema.d.ts +5094 -0
  1153. package/dist/dts/Schema.d.ts.map +1 -0
  1154. package/dist/dts/SchemaAST.d.ts +1360 -0
  1155. package/dist/dts/SchemaAST.d.ts.map +1 -0
  1156. package/dist/dts/Scope.d.ts +194 -0
  1157. package/dist/dts/Scope.d.ts.map +1 -0
  1158. package/dist/dts/ScopedCache.d.ts +127 -0
  1159. package/dist/dts/ScopedCache.d.ts.map +1 -0
  1160. package/dist/dts/ScopedRef.d.ts +125 -0
  1161. package/dist/dts/ScopedRef.d.ts.map +1 -0
  1162. package/dist/dts/Secret.d.ts +76 -0
  1163. package/dist/dts/Secret.d.ts.map +1 -0
  1164. package/dist/dts/SingleProducerAsyncInput.d.ts +57 -0
  1165. package/dist/dts/SingleProducerAsyncInput.d.ts.map +1 -0
  1166. package/dist/dts/Sink.d.ts +1616 -0
  1167. package/dist/dts/Sink.d.ts.map +1 -0
  1168. package/dist/dts/SortedMap.d.ts +234 -0
  1169. package/dist/dts/SortedMap.d.ts.map +1 -0
  1170. package/dist/dts/SortedSet.d.ts +333 -0
  1171. package/dist/dts/SortedSet.d.ts.map +1 -0
  1172. package/dist/dts/Stream.d.ts +10803 -0
  1173. package/dist/dts/Stream.d.ts.map +1 -0
  1174. package/dist/dts/StreamEmit.d.ts +117 -0
  1175. package/dist/dts/StreamEmit.d.ts.map +1 -0
  1176. package/dist/dts/StreamHaltStrategy.d.ts +116 -0
  1177. package/dist/dts/StreamHaltStrategy.d.ts.map +1 -0
  1178. package/dist/dts/Streamable.d.ts +27 -0
  1179. package/dist/dts/Streamable.d.ts.map +1 -0
  1180. package/dist/dts/String.d.ts +848 -0
  1181. package/dist/dts/String.d.ts.map +1 -0
  1182. package/dist/dts/Struct.d.ts +295 -0
  1183. package/dist/dts/Struct.d.ts.map +1 -0
  1184. package/dist/dts/Subscribable.d.ts +76 -0
  1185. package/dist/dts/Subscribable.d.ts.map +1 -0
  1186. package/dist/dts/SubscriptionRef.d.ts +384 -0
  1187. package/dist/dts/SubscriptionRef.d.ts.map +1 -0
  1188. package/dist/dts/Supervisor.d.ts +171 -0
  1189. package/dist/dts/Supervisor.d.ts.map +1 -0
  1190. package/dist/dts/Symbol.d.ts +26 -0
  1191. package/dist/dts/Symbol.d.ts.map +1 -0
  1192. package/dist/dts/SynchronizedRef.d.ts +378 -0
  1193. package/dist/dts/SynchronizedRef.d.ts.map +1 -0
  1194. package/dist/dts/TArray.d.ts +857 -0
  1195. package/dist/dts/TArray.d.ts.map +1 -0
  1196. package/dist/dts/TDeferred.d.ts +104 -0
  1197. package/dist/dts/TDeferred.d.ts.map +1 -0
  1198. package/dist/dts/TMap.d.ts +780 -0
  1199. package/dist/dts/TMap.d.ts.map +1 -0
  1200. package/dist/dts/TPriorityQueue.d.ts +250 -0
  1201. package/dist/dts/TPriorityQueue.d.ts.map +1 -0
  1202. package/dist/dts/TPubSub.d.ts +186 -0
  1203. package/dist/dts/TPubSub.d.ts.map +1 -0
  1204. package/dist/dts/TQueue.d.ts +492 -0
  1205. package/dist/dts/TQueue.d.ts.map +1 -0
  1206. package/dist/dts/TRandom.d.ts +108 -0
  1207. package/dist/dts/TRandom.d.ts.map +1 -0
  1208. package/dist/dts/TReentrantLock.d.ts +230 -0
  1209. package/dist/dts/TReentrantLock.d.ts.map +1 -0
  1210. package/dist/dts/TRef.d.ts +235 -0
  1211. package/dist/dts/TRef.d.ts.map +1 -0
  1212. package/dist/dts/TSemaphore.d.ts +145 -0
  1213. package/dist/dts/TSemaphore.d.ts.map +1 -0
  1214. package/dist/dts/TSet.d.ts +564 -0
  1215. package/dist/dts/TSet.d.ts.map +1 -0
  1216. package/dist/dts/TSubscriptionRef.d.ts +251 -0
  1217. package/dist/dts/TSubscriptionRef.d.ts.map +1 -0
  1218. package/dist/dts/Take.d.ts +271 -0
  1219. package/dist/dts/Take.d.ts.map +1 -0
  1220. package/dist/dts/TestAnnotation.d.ts +71 -0
  1221. package/dist/dts/TestAnnotation.d.ts.map +1 -0
  1222. package/dist/dts/TestAnnotationMap.d.ts +56 -0
  1223. package/dist/dts/TestAnnotationMap.d.ts.map +1 -0
  1224. package/dist/dts/TestAnnotations.d.ts +59 -0
  1225. package/dist/dts/TestAnnotations.d.ts.map +1 -0
  1226. package/dist/dts/TestClock.d.ts +147 -0
  1227. package/dist/dts/TestClock.d.ts.map +1 -0
  1228. package/dist/dts/TestConfig.d.ts +45 -0
  1229. package/dist/dts/TestConfig.d.ts.map +1 -0
  1230. package/dist/dts/TestContext.d.ts +15 -0
  1231. package/dist/dts/TestContext.d.ts.map +1 -0
  1232. package/dist/dts/TestLive.d.ts +35 -0
  1233. package/dist/dts/TestLive.d.ts.map +1 -0
  1234. package/dist/dts/TestServices.d.ts +231 -0
  1235. package/dist/dts/TestServices.d.ts.map +1 -0
  1236. package/dist/dts/TestSized.d.ts +36 -0
  1237. package/dist/dts/TestSized.d.ts.map +1 -0
  1238. package/dist/dts/Tracer.d.ts +152 -0
  1239. package/dist/dts/Tracer.d.ts.map +1 -0
  1240. package/dist/dts/Trie.d.ts +1828 -0
  1241. package/dist/dts/Trie.d.ts.map +1 -0
  1242. package/dist/dts/Tuple.d.ts +446 -0
  1243. package/dist/dts/Tuple.d.ts.map +1 -0
  1244. package/dist/dts/Types.d.ts +330 -0
  1245. package/dist/dts/Types.d.ts.map +1 -0
  1246. package/dist/dts/Unify.d.ts +75 -0
  1247. package/dist/dts/Unify.d.ts.map +1 -0
  1248. package/dist/dts/UpstreamPullRequest.d.ts +109 -0
  1249. package/dist/dts/UpstreamPullRequest.d.ts.map +1 -0
  1250. package/dist/dts/UpstreamPullStrategy.d.ts +110 -0
  1251. package/dist/dts/UpstreamPullStrategy.d.ts.map +1 -0
  1252. package/dist/dts/Utils.d.ts +283 -0
  1253. package/dist/dts/Utils.d.ts.map +1 -0
  1254. package/dist/dts/index.d.ts +1385 -0
  1255. package/dist/dts/index.d.ts.map +1 -0
  1256. package/dist/dts/internal/array.d.ts +5 -0
  1257. package/dist/dts/internal/array.d.ts.map +1 -0
  1258. package/dist/dts/internal/blockedRequests.d.ts +2 -0
  1259. package/dist/dts/internal/blockedRequests.d.ts.map +1 -0
  1260. package/dist/dts/internal/cache.d.ts +2 -0
  1261. package/dist/dts/internal/cache.d.ts.map +1 -0
  1262. package/dist/dts/internal/cause.d.ts +2 -0
  1263. package/dist/dts/internal/cause.d.ts.map +1 -0
  1264. package/dist/dts/internal/channel/channelExecutor.d.ts +3 -0
  1265. package/dist/dts/internal/channel/channelExecutor.d.ts.map +1 -0
  1266. package/dist/dts/internal/channel/channelState.d.ts +2 -0
  1267. package/dist/dts/internal/channel/channelState.d.ts.map +1 -0
  1268. package/dist/dts/internal/channel/childExecutorDecision.d.ts +2 -0
  1269. package/dist/dts/internal/channel/childExecutorDecision.d.ts.map +1 -0
  1270. package/dist/dts/internal/channel/continuation.d.ts +2 -0
  1271. package/dist/dts/internal/channel/continuation.d.ts.map +1 -0
  1272. package/dist/dts/internal/channel/mergeDecision.d.ts +2 -0
  1273. package/dist/dts/internal/channel/mergeDecision.d.ts.map +1 -0
  1274. package/dist/dts/internal/channel/mergeState.d.ts +2 -0
  1275. package/dist/dts/internal/channel/mergeState.d.ts.map +1 -0
  1276. package/dist/dts/internal/channel/mergeStrategy.d.ts +2 -0
  1277. package/dist/dts/internal/channel/mergeStrategy.d.ts.map +1 -0
  1278. package/dist/dts/internal/channel/singleProducerAsyncInput.d.ts +2 -0
  1279. package/dist/dts/internal/channel/singleProducerAsyncInput.d.ts.map +1 -0
  1280. package/dist/dts/internal/channel/subexecutor.d.ts +2 -0
  1281. package/dist/dts/internal/channel/subexecutor.d.ts.map +1 -0
  1282. package/dist/dts/internal/channel/upstreamPullRequest.d.ts +2 -0
  1283. package/dist/dts/internal/channel/upstreamPullRequest.d.ts.map +1 -0
  1284. package/dist/dts/internal/channel/upstreamPullStrategy.d.ts +2 -0
  1285. package/dist/dts/internal/channel/upstreamPullStrategy.d.ts.map +1 -0
  1286. package/dist/dts/internal/channel.d.ts +2 -0
  1287. package/dist/dts/internal/channel.d.ts.map +1 -0
  1288. package/dist/dts/internal/clock.d.ts +2 -0
  1289. package/dist/dts/internal/clock.d.ts.map +1 -0
  1290. package/dist/dts/internal/completedRequestMap.d.ts +2 -0
  1291. package/dist/dts/internal/completedRequestMap.d.ts.map +1 -0
  1292. package/dist/dts/internal/concurrency.d.ts +2 -0
  1293. package/dist/dts/internal/concurrency.d.ts.map +1 -0
  1294. package/dist/dts/internal/config.d.ts +2 -0
  1295. package/dist/dts/internal/config.d.ts.map +1 -0
  1296. package/dist/dts/internal/configError.d.ts +2 -0
  1297. package/dist/dts/internal/configError.d.ts.map +1 -0
  1298. package/dist/dts/internal/configProvider/pathPatch.d.ts +2 -0
  1299. package/dist/dts/internal/configProvider/pathPatch.d.ts.map +1 -0
  1300. package/dist/dts/internal/configProvider.d.ts +2 -0
  1301. package/dist/dts/internal/configProvider.d.ts.map +1 -0
  1302. package/dist/dts/internal/console.d.ts +2 -0
  1303. package/dist/dts/internal/console.d.ts.map +1 -0
  1304. package/dist/dts/internal/context.d.ts +2 -0
  1305. package/dist/dts/internal/context.d.ts.map +1 -0
  1306. package/dist/dts/internal/core-effect.d.ts +8 -0
  1307. package/dist/dts/internal/core-effect.d.ts.map +1 -0
  1308. package/dist/dts/internal/core-stream.d.ts +9 -0
  1309. package/dist/dts/internal/core-stream.d.ts.map +1 -0
  1310. package/dist/dts/internal/core.d.ts +9 -0
  1311. package/dist/dts/internal/core.d.ts.map +1 -0
  1312. package/dist/dts/internal/data.d.ts +2 -0
  1313. package/dist/dts/internal/data.d.ts.map +1 -0
  1314. package/dist/dts/internal/dataSource.d.ts +2 -0
  1315. package/dist/dts/internal/dataSource.d.ts.map +1 -0
  1316. package/dist/dts/internal/dateTime.d.ts +2 -0
  1317. package/dist/dts/internal/dateTime.d.ts.map +1 -0
  1318. package/dist/dts/internal/defaultServices/console.d.ts +2 -0
  1319. package/dist/dts/internal/defaultServices/console.d.ts.map +1 -0
  1320. package/dist/dts/internal/defaultServices.d.ts +10 -0
  1321. package/dist/dts/internal/defaultServices.d.ts.map +1 -0
  1322. package/dist/dts/internal/deferred.d.ts +2 -0
  1323. package/dist/dts/internal/deferred.d.ts.map +1 -0
  1324. package/dist/dts/internal/differ/chunkPatch.d.ts +2 -0
  1325. package/dist/dts/internal/differ/chunkPatch.d.ts.map +1 -0
  1326. package/dist/dts/internal/differ/contextPatch.d.ts +2 -0
  1327. package/dist/dts/internal/differ/contextPatch.d.ts.map +1 -0
  1328. package/dist/dts/internal/differ/hashMapPatch.d.ts +2 -0
  1329. package/dist/dts/internal/differ/hashMapPatch.d.ts.map +1 -0
  1330. package/dist/dts/internal/differ/hashSetPatch.d.ts +2 -0
  1331. package/dist/dts/internal/differ/hashSetPatch.d.ts.map +1 -0
  1332. package/dist/dts/internal/differ/orPatch.d.ts +2 -0
  1333. package/dist/dts/internal/differ/orPatch.d.ts.map +1 -0
  1334. package/dist/dts/internal/differ/readonlyArrayPatch.d.ts +2 -0
  1335. package/dist/dts/internal/differ/readonlyArrayPatch.d.ts.map +1 -0
  1336. package/dist/dts/internal/differ.d.ts +2 -0
  1337. package/dist/dts/internal/differ.d.ts.map +1 -0
  1338. package/dist/dts/internal/doNotation.d.ts +2 -0
  1339. package/dist/dts/internal/doNotation.d.ts.map +1 -0
  1340. package/dist/dts/internal/effect/circular.d.ts +2 -0
  1341. package/dist/dts/internal/effect/circular.d.ts.map +1 -0
  1342. package/dist/dts/internal/effectable.d.ts +2 -0
  1343. package/dist/dts/internal/effectable.d.ts.map +1 -0
  1344. package/dist/dts/internal/either.d.ts +5 -0
  1345. package/dist/dts/internal/either.d.ts.map +1 -0
  1346. package/dist/dts/internal/encoding/base64.d.ts +2 -0
  1347. package/dist/dts/internal/encoding/base64.d.ts.map +1 -0
  1348. package/dist/dts/internal/encoding/base64Url.d.ts +2 -0
  1349. package/dist/dts/internal/encoding/base64Url.d.ts.map +1 -0
  1350. package/dist/dts/internal/encoding/common.d.ts +5 -0
  1351. package/dist/dts/internal/encoding/common.d.ts.map +1 -0
  1352. package/dist/dts/internal/encoding/hex.d.ts +2 -0
  1353. package/dist/dts/internal/encoding/hex.d.ts.map +1 -0
  1354. package/dist/dts/internal/errors.d.ts +5 -0
  1355. package/dist/dts/internal/errors.d.ts.map +1 -0
  1356. package/dist/dts/internal/executionPlan.d.ts +2 -0
  1357. package/dist/dts/internal/executionPlan.d.ts.map +1 -0
  1358. package/dist/dts/internal/executionStrategy.d.ts +2 -0
  1359. package/dist/dts/internal/executionStrategy.d.ts.map +1 -0
  1360. package/dist/dts/internal/fiber.d.ts +6 -0
  1361. package/dist/dts/internal/fiber.d.ts.map +1 -0
  1362. package/dist/dts/internal/fiberId.d.ts +2 -0
  1363. package/dist/dts/internal/fiberId.d.ts.map +1 -0
  1364. package/dist/dts/internal/fiberMessage.d.ts +2 -0
  1365. package/dist/dts/internal/fiberMessage.d.ts.map +1 -0
  1366. package/dist/dts/internal/fiberRefs/patch.d.ts +2 -0
  1367. package/dist/dts/internal/fiberRefs/patch.d.ts.map +1 -0
  1368. package/dist/dts/internal/fiberRefs.d.ts +2 -0
  1369. package/dist/dts/internal/fiberRefs.d.ts.map +1 -0
  1370. package/dist/dts/internal/fiberRuntime.d.ts +7 -0
  1371. package/dist/dts/internal/fiberRuntime.d.ts.map +1 -0
  1372. package/dist/dts/internal/fiberScope.d.ts +18 -0
  1373. package/dist/dts/internal/fiberScope.d.ts.map +1 -0
  1374. package/dist/dts/internal/fiberStatus.d.ts +2 -0
  1375. package/dist/dts/internal/fiberStatus.d.ts.map +1 -0
  1376. package/dist/dts/internal/groupBy.d.ts +2 -0
  1377. package/dist/dts/internal/groupBy.d.ts.map +1 -0
  1378. package/dist/dts/internal/hashMap/array.d.ts +2 -0
  1379. package/dist/dts/internal/hashMap/array.d.ts.map +1 -0
  1380. package/dist/dts/internal/hashMap/bitwise.d.ts +2 -0
  1381. package/dist/dts/internal/hashMap/bitwise.d.ts.map +1 -0
  1382. package/dist/dts/internal/hashMap/config.d.ts +2 -0
  1383. package/dist/dts/internal/hashMap/config.d.ts.map +1 -0
  1384. package/dist/dts/internal/hashMap/keySet.d.ts +2 -0
  1385. package/dist/dts/internal/hashMap/keySet.d.ts.map +1 -0
  1386. package/dist/dts/internal/hashMap/node.d.ts +2 -0
  1387. package/dist/dts/internal/hashMap/node.d.ts.map +1 -0
  1388. package/dist/dts/internal/hashMap.d.ts +9 -0
  1389. package/dist/dts/internal/hashMap.d.ts.map +1 -0
  1390. package/dist/dts/internal/hashSet.d.ts +2 -0
  1391. package/dist/dts/internal/hashSet.d.ts.map +1 -0
  1392. package/dist/dts/internal/keyedPool.d.ts +2 -0
  1393. package/dist/dts/internal/keyedPool.d.ts.map +1 -0
  1394. package/dist/dts/internal/layer/circular.d.ts +2 -0
  1395. package/dist/dts/internal/layer/circular.d.ts.map +1 -0
  1396. package/dist/dts/internal/layer.d.ts +16 -0
  1397. package/dist/dts/internal/layer.d.ts.map +1 -0
  1398. package/dist/dts/internal/logSpan.d.ts +2 -0
  1399. package/dist/dts/internal/logSpan.d.ts.map +1 -0
  1400. package/dist/dts/internal/logger-circular.d.ts +2 -0
  1401. package/dist/dts/internal/logger-circular.d.ts.map +1 -0
  1402. package/dist/dts/internal/logger.d.ts +2 -0
  1403. package/dist/dts/internal/logger.d.ts.map +1 -0
  1404. package/dist/dts/internal/mailbox.d.ts +2 -0
  1405. package/dist/dts/internal/mailbox.d.ts.map +1 -0
  1406. package/dist/dts/internal/managedRuntime/circular.d.ts +2 -0
  1407. package/dist/dts/internal/managedRuntime/circular.d.ts.map +1 -0
  1408. package/dist/dts/internal/managedRuntime.d.ts +2 -0
  1409. package/dist/dts/internal/managedRuntime.d.ts.map +1 -0
  1410. package/dist/dts/internal/matcher.d.ts +2 -0
  1411. package/dist/dts/internal/matcher.d.ts.map +1 -0
  1412. package/dist/dts/internal/metric/boundaries.d.ts +2 -0
  1413. package/dist/dts/internal/metric/boundaries.d.ts.map +1 -0
  1414. package/dist/dts/internal/metric/hook.d.ts +2 -0
  1415. package/dist/dts/internal/metric/hook.d.ts.map +1 -0
  1416. package/dist/dts/internal/metric/key.d.ts +2 -0
  1417. package/dist/dts/internal/metric/key.d.ts.map +1 -0
  1418. package/dist/dts/internal/metric/keyType.d.ts +2 -0
  1419. package/dist/dts/internal/metric/keyType.d.ts.map +1 -0
  1420. package/dist/dts/internal/metric/label.d.ts +2 -0
  1421. package/dist/dts/internal/metric/label.d.ts.map +1 -0
  1422. package/dist/dts/internal/metric/pair.d.ts +2 -0
  1423. package/dist/dts/internal/metric/pair.d.ts.map +1 -0
  1424. package/dist/dts/internal/metric/polling.d.ts +2 -0
  1425. package/dist/dts/internal/metric/polling.d.ts.map +1 -0
  1426. package/dist/dts/internal/metric/registry.d.ts +2 -0
  1427. package/dist/dts/internal/metric/registry.d.ts.map +1 -0
  1428. package/dist/dts/internal/metric/state.d.ts +22 -0
  1429. package/dist/dts/internal/metric/state.d.ts.map +1 -0
  1430. package/dist/dts/internal/metric.d.ts +2 -0
  1431. package/dist/dts/internal/metric.d.ts.map +1 -0
  1432. package/dist/dts/internal/opCodes/cause.d.ts +2 -0
  1433. package/dist/dts/internal/opCodes/cause.d.ts.map +1 -0
  1434. package/dist/dts/internal/opCodes/channel.d.ts +2 -0
  1435. package/dist/dts/internal/opCodes/channel.d.ts.map +1 -0
  1436. package/dist/dts/internal/opCodes/channelChildExecutorDecision.d.ts +2 -0
  1437. package/dist/dts/internal/opCodes/channelChildExecutorDecision.d.ts.map +1 -0
  1438. package/dist/dts/internal/opCodes/channelMergeDecision.d.ts +2 -0
  1439. package/dist/dts/internal/opCodes/channelMergeDecision.d.ts.map +1 -0
  1440. package/dist/dts/internal/opCodes/channelMergeState.d.ts +2 -0
  1441. package/dist/dts/internal/opCodes/channelMergeState.d.ts.map +1 -0
  1442. package/dist/dts/internal/opCodes/channelMergeStrategy.d.ts +2 -0
  1443. package/dist/dts/internal/opCodes/channelMergeStrategy.d.ts.map +1 -0
  1444. package/dist/dts/internal/opCodes/channelState.d.ts +2 -0
  1445. package/dist/dts/internal/opCodes/channelState.d.ts.map +1 -0
  1446. package/dist/dts/internal/opCodes/channelUpstreamPullRequest.d.ts +2 -0
  1447. package/dist/dts/internal/opCodes/channelUpstreamPullRequest.d.ts.map +1 -0
  1448. package/dist/dts/internal/opCodes/channelUpstreamPullStrategy.d.ts +2 -0
  1449. package/dist/dts/internal/opCodes/channelUpstreamPullStrategy.d.ts.map +1 -0
  1450. package/dist/dts/internal/opCodes/config.d.ts +2 -0
  1451. package/dist/dts/internal/opCodes/config.d.ts.map +1 -0
  1452. package/dist/dts/internal/opCodes/configError.d.ts +2 -0
  1453. package/dist/dts/internal/opCodes/configError.d.ts.map +1 -0
  1454. package/dist/dts/internal/opCodes/continuation.d.ts +2 -0
  1455. package/dist/dts/internal/opCodes/continuation.d.ts.map +1 -0
  1456. package/dist/dts/internal/opCodes/deferred.d.ts +2 -0
  1457. package/dist/dts/internal/opCodes/deferred.d.ts.map +1 -0
  1458. package/dist/dts/internal/opCodes/effect.d.ts +2 -0
  1459. package/dist/dts/internal/opCodes/effect.d.ts.map +1 -0
  1460. package/dist/dts/internal/opCodes/layer.d.ts +2 -0
  1461. package/dist/dts/internal/opCodes/layer.d.ts.map +1 -0
  1462. package/dist/dts/internal/opCodes/streamHaltStrategy.d.ts +2 -0
  1463. package/dist/dts/internal/opCodes/streamHaltStrategy.d.ts.map +1 -0
  1464. package/dist/dts/internal/option.d.ts +5 -0
  1465. package/dist/dts/internal/option.d.ts.map +1 -0
  1466. package/dist/dts/internal/pool.d.ts +2 -0
  1467. package/dist/dts/internal/pool.d.ts.map +1 -0
  1468. package/dist/dts/internal/pubsub.d.ts +2 -0
  1469. package/dist/dts/internal/pubsub.d.ts.map +1 -0
  1470. package/dist/dts/internal/query.d.ts +2 -0
  1471. package/dist/dts/internal/query.d.ts.map +1 -0
  1472. package/dist/dts/internal/queue.d.ts +2 -0
  1473. package/dist/dts/internal/queue.d.ts.map +1 -0
  1474. package/dist/dts/internal/random.d.ts +3 -0
  1475. package/dist/dts/internal/random.d.ts.map +1 -0
  1476. package/dist/dts/internal/rateLimiter.d.ts +2 -0
  1477. package/dist/dts/internal/rateLimiter.d.ts.map +1 -0
  1478. package/dist/dts/internal/rcMap.d.ts +2 -0
  1479. package/dist/dts/internal/rcMap.d.ts.map +1 -0
  1480. package/dist/dts/internal/rcRef.d.ts +2 -0
  1481. package/dist/dts/internal/rcRef.d.ts.map +1 -0
  1482. package/dist/dts/internal/redBlackTree/iterator.d.ts +2 -0
  1483. package/dist/dts/internal/redBlackTree/iterator.d.ts.map +1 -0
  1484. package/dist/dts/internal/redBlackTree/node.d.ts +14 -0
  1485. package/dist/dts/internal/redBlackTree/node.d.ts.map +1 -0
  1486. package/dist/dts/internal/redBlackTree.d.ts +2 -0
  1487. package/dist/dts/internal/redBlackTree.d.ts.map +1 -0
  1488. package/dist/dts/internal/redacted.d.ts +2 -0
  1489. package/dist/dts/internal/redacted.d.ts.map +1 -0
  1490. package/dist/dts/internal/ref.d.ts +2 -0
  1491. package/dist/dts/internal/ref.d.ts.map +1 -0
  1492. package/dist/dts/internal/reloadable.d.ts +2 -0
  1493. package/dist/dts/internal/reloadable.d.ts.map +1 -0
  1494. package/dist/dts/internal/request.d.ts +2 -0
  1495. package/dist/dts/internal/request.d.ts.map +1 -0
  1496. package/dist/dts/internal/resource.d.ts +2 -0
  1497. package/dist/dts/internal/resource.d.ts.map +1 -0
  1498. package/dist/dts/internal/ringBuffer.d.ts +2 -0
  1499. package/dist/dts/internal/ringBuffer.d.ts.map +1 -0
  1500. package/dist/dts/internal/runtime.d.ts +2 -0
  1501. package/dist/dts/internal/runtime.d.ts.map +1 -0
  1502. package/dist/dts/internal/runtimeFlags.d.ts +3 -0
  1503. package/dist/dts/internal/runtimeFlags.d.ts.map +1 -0
  1504. package/dist/dts/internal/runtimeFlagsPatch.d.ts +2 -0
  1505. package/dist/dts/internal/runtimeFlagsPatch.d.ts.map +1 -0
  1506. package/dist/dts/internal/schedule/decision.d.ts +2 -0
  1507. package/dist/dts/internal/schedule/decision.d.ts.map +1 -0
  1508. package/dist/dts/internal/schedule/interval.d.ts +2 -0
  1509. package/dist/dts/internal/schedule/interval.d.ts.map +1 -0
  1510. package/dist/dts/internal/schedule/intervals.d.ts +2 -0
  1511. package/dist/dts/internal/schedule/intervals.d.ts.map +1 -0
  1512. package/dist/dts/internal/schedule.d.ts +2 -0
  1513. package/dist/dts/internal/schedule.d.ts.map +1 -0
  1514. package/dist/dts/internal/schema/errors.d.ts +2 -0
  1515. package/dist/dts/internal/schema/errors.d.ts.map +1 -0
  1516. package/dist/dts/internal/schema/schemaId.d.ts +2 -0
  1517. package/dist/dts/internal/schema/schemaId.d.ts.map +1 -0
  1518. package/dist/dts/internal/schema/util.d.ts +2 -0
  1519. package/dist/dts/internal/schema/util.d.ts.map +1 -0
  1520. package/dist/dts/internal/scopedCache.d.ts +2 -0
  1521. package/dist/dts/internal/scopedCache.d.ts.map +1 -0
  1522. package/dist/dts/internal/scopedRef.d.ts +2 -0
  1523. package/dist/dts/internal/scopedRef.d.ts.map +1 -0
  1524. package/dist/dts/internal/secret.d.ts +2 -0
  1525. package/dist/dts/internal/secret.d.ts.map +1 -0
  1526. package/dist/dts/internal/singleShotGen.d.ts +2 -0
  1527. package/dist/dts/internal/singleShotGen.d.ts.map +1 -0
  1528. package/dist/dts/internal/sink.d.ts +2 -0
  1529. package/dist/dts/internal/sink.d.ts.map +1 -0
  1530. package/dist/dts/internal/stack.d.ts +2 -0
  1531. package/dist/dts/internal/stack.d.ts.map +1 -0
  1532. package/dist/dts/internal/stm/core.d.ts +2 -0
  1533. package/dist/dts/internal/stm/core.d.ts.map +1 -0
  1534. package/dist/dts/internal/stm/entry.d.ts +2 -0
  1535. package/dist/dts/internal/stm/entry.d.ts.map +1 -0
  1536. package/dist/dts/internal/stm/journal.d.ts +2 -0
  1537. package/dist/dts/internal/stm/journal.d.ts.map +1 -0
  1538. package/dist/dts/internal/stm/opCodes/stm.d.ts +2 -0
  1539. package/dist/dts/internal/stm/opCodes/stm.d.ts.map +1 -0
  1540. package/dist/dts/internal/stm/opCodes/stmState.d.ts +2 -0
  1541. package/dist/dts/internal/stm/opCodes/stmState.d.ts.map +1 -0
  1542. package/dist/dts/internal/stm/opCodes/strategy.d.ts +2 -0
  1543. package/dist/dts/internal/stm/opCodes/strategy.d.ts.map +1 -0
  1544. package/dist/dts/internal/stm/opCodes/tExit.d.ts +2 -0
  1545. package/dist/dts/internal/stm/opCodes/tExit.d.ts.map +1 -0
  1546. package/dist/dts/internal/stm/opCodes/tryCommit.d.ts +2 -0
  1547. package/dist/dts/internal/stm/opCodes/tryCommit.d.ts.map +1 -0
  1548. package/dist/dts/internal/stm/stm.d.ts +7 -0
  1549. package/dist/dts/internal/stm/stm.d.ts.map +1 -0
  1550. package/dist/dts/internal/stm/stmState.d.ts +2 -0
  1551. package/dist/dts/internal/stm/stmState.d.ts.map +1 -0
  1552. package/dist/dts/internal/stm/tArray.d.ts +2 -0
  1553. package/dist/dts/internal/stm/tArray.d.ts.map +1 -0
  1554. package/dist/dts/internal/stm/tDeferred.d.ts +2 -0
  1555. package/dist/dts/internal/stm/tDeferred.d.ts.map +1 -0
  1556. package/dist/dts/internal/stm/tExit.d.ts +5 -0
  1557. package/dist/dts/internal/stm/tExit.d.ts.map +1 -0
  1558. package/dist/dts/internal/stm/tMap.d.ts +2 -0
  1559. package/dist/dts/internal/stm/tMap.d.ts.map +1 -0
  1560. package/dist/dts/internal/stm/tPriorityQueue.d.ts +2 -0
  1561. package/dist/dts/internal/stm/tPriorityQueue.d.ts.map +1 -0
  1562. package/dist/dts/internal/stm/tPubSub.d.ts +2 -0
  1563. package/dist/dts/internal/stm/tPubSub.d.ts.map +1 -0
  1564. package/dist/dts/internal/stm/tQueue.d.ts +2 -0
  1565. package/dist/dts/internal/stm/tQueue.d.ts.map +1 -0
  1566. package/dist/dts/internal/stm/tRandom.d.ts +2 -0
  1567. package/dist/dts/internal/stm/tRandom.d.ts.map +1 -0
  1568. package/dist/dts/internal/stm/tReentrantLock.d.ts +2 -0
  1569. package/dist/dts/internal/stm/tReentrantLock.d.ts.map +1 -0
  1570. package/dist/dts/internal/stm/tRef.d.ts +4 -0
  1571. package/dist/dts/internal/stm/tRef.d.ts.map +1 -0
  1572. package/dist/dts/internal/stm/tSemaphore.d.ts +2 -0
  1573. package/dist/dts/internal/stm/tSemaphore.d.ts.map +1 -0
  1574. package/dist/dts/internal/stm/tSet.d.ts +2 -0
  1575. package/dist/dts/internal/stm/tSet.d.ts.map +1 -0
  1576. package/dist/dts/internal/stm/tSubscriptionRef.d.ts +2 -0
  1577. package/dist/dts/internal/stm/tSubscriptionRef.d.ts.map +1 -0
  1578. package/dist/dts/internal/stm/tryCommit.d.ts +2 -0
  1579. package/dist/dts/internal/stm/tryCommit.d.ts.map +1 -0
  1580. package/dist/dts/internal/stm/txnId.d.ts +2 -0
  1581. package/dist/dts/internal/stm/txnId.d.ts.map +1 -0
  1582. package/dist/dts/internal/stm/versioned.d.ts +2 -0
  1583. package/dist/dts/internal/stm/versioned.d.ts.map +1 -0
  1584. package/dist/dts/internal/stream/debounceState.d.ts +4 -0
  1585. package/dist/dts/internal/stream/debounceState.d.ts.map +1 -0
  1586. package/dist/dts/internal/stream/emit.d.ts +2 -0
  1587. package/dist/dts/internal/stream/emit.d.ts.map +1 -0
  1588. package/dist/dts/internal/stream/haltStrategy.d.ts +2 -0
  1589. package/dist/dts/internal/stream/haltStrategy.d.ts.map +1 -0
  1590. package/dist/dts/internal/stream/handoff.d.ts +2 -0
  1591. package/dist/dts/internal/stream/handoff.d.ts.map +1 -0
  1592. package/dist/dts/internal/stream/handoffSignal.d.ts +6 -0
  1593. package/dist/dts/internal/stream/handoffSignal.d.ts.map +1 -0
  1594. package/dist/dts/internal/stream/pull.d.ts +2 -0
  1595. package/dist/dts/internal/stream/pull.d.ts.map +1 -0
  1596. package/dist/dts/internal/stream/sinkEndReason.d.ts +2 -0
  1597. package/dist/dts/internal/stream/sinkEndReason.d.ts.map +1 -0
  1598. package/dist/dts/internal/stream/zipAllState.d.ts +2 -0
  1599. package/dist/dts/internal/stream/zipAllState.d.ts.map +1 -0
  1600. package/dist/dts/internal/stream/zipChunksState.d.ts +2 -0
  1601. package/dist/dts/internal/stream/zipChunksState.d.ts.map +1 -0
  1602. package/dist/dts/internal/stream.d.ts +29 -0
  1603. package/dist/dts/internal/stream.d.ts.map +1 -0
  1604. package/dist/dts/internal/string-utils.d.ts +7 -0
  1605. package/dist/dts/internal/string-utils.d.ts.map +1 -0
  1606. package/dist/dts/internal/subscriptionRef.d.ts +2 -0
  1607. package/dist/dts/internal/subscriptionRef.d.ts.map +1 -0
  1608. package/dist/dts/internal/supervisor/patch.d.ts +2 -0
  1609. package/dist/dts/internal/supervisor/patch.d.ts.map +1 -0
  1610. package/dist/dts/internal/supervisor.d.ts +2 -0
  1611. package/dist/dts/internal/supervisor.d.ts.map +1 -0
  1612. package/dist/dts/internal/synchronizedRef.d.ts +2 -0
  1613. package/dist/dts/internal/synchronizedRef.d.ts.map +1 -0
  1614. package/dist/dts/internal/take.d.ts +2 -0
  1615. package/dist/dts/internal/take.d.ts.map +1 -0
  1616. package/dist/dts/internal/testing/sleep.d.ts +2 -0
  1617. package/dist/dts/internal/testing/sleep.d.ts.map +1 -0
  1618. package/dist/dts/internal/testing/suspendedWarningData.d.ts +2 -0
  1619. package/dist/dts/internal/testing/suspendedWarningData.d.ts.map +1 -0
  1620. package/dist/dts/internal/testing/warningData.d.ts +2 -0
  1621. package/dist/dts/internal/testing/warningData.d.ts.map +1 -0
  1622. package/dist/dts/internal/tracer.d.ts +2 -0
  1623. package/dist/dts/internal/tracer.d.ts.map +1 -0
  1624. package/dist/dts/internal/trie.d.ts +2 -0
  1625. package/dist/dts/internal/trie.d.ts.map +1 -0
  1626. package/dist/dts/internal/version.d.ts +3 -0
  1627. package/dist/dts/internal/version.d.ts.map +1 -0
  1628. package/dist/esm/Arbitrary.js +798 -0
  1629. package/dist/esm/Arbitrary.js.map +1 -0
  1630. package/dist/esm/Array.js +2703 -0
  1631. package/dist/esm/Array.js.map +1 -0
  1632. package/dist/esm/BigDecimal.js +1087 -0
  1633. package/dist/esm/BigDecimal.js.map +1 -0
  1634. package/dist/esm/BigInt.js +548 -0
  1635. package/dist/esm/BigInt.js.map +1 -0
  1636. package/dist/esm/Boolean.js +240 -0
  1637. package/dist/esm/Boolean.js.map +1 -0
  1638. package/dist/esm/Brand.js +161 -0
  1639. package/dist/esm/Brand.js.map +1 -0
  1640. package/dist/esm/Cache.js +43 -0
  1641. package/dist/esm/Cache.js.map +1 -0
  1642. package/dist/esm/Cause.js +1004 -0
  1643. package/dist/esm/Cause.js.map +1 -0
  1644. package/dist/esm/Channel.js +887 -0
  1645. package/dist/esm/Channel.js.map +1 -0
  1646. package/dist/esm/ChildExecutorDecision.js +64 -0
  1647. package/dist/esm/ChildExecutorDecision.js.map +1 -0
  1648. package/dist/esm/Chunk.js +1083 -0
  1649. package/dist/esm/Chunk.js.map +1 -0
  1650. package/dist/esm/Clock.js +38 -0
  1651. package/dist/esm/Clock.js.map +1 -0
  1652. package/dist/esm/Config.js +321 -0
  1653. package/dist/esm/Config.js.map +1 -0
  1654. package/dist/esm/ConfigError.js +107 -0
  1655. package/dist/esm/ConfigError.js.map +1 -0
  1656. package/dist/esm/ConfigProvider.js +166 -0
  1657. package/dist/esm/ConfigProvider.js.map +1 -0
  1658. package/dist/esm/ConfigProviderPathPatch.js +30 -0
  1659. package/dist/esm/ConfigProviderPathPatch.js.map +1 -0
  1660. package/dist/esm/Console.js +118 -0
  1661. package/dist/esm/Console.js.map +1 -0
  1662. package/dist/esm/Context.js +360 -0
  1663. package/dist/esm/Context.js.map +1 -0
  1664. package/dist/esm/Cron.js +566 -0
  1665. package/dist/esm/Cron.js.map +1 -0
  1666. package/dist/esm/Data.js +305 -0
  1667. package/dist/esm/Data.js.map +1 -0
  1668. package/dist/esm/DateTime.js +1071 -0
  1669. package/dist/esm/DateTime.js.map +1 -0
  1670. package/dist/esm/DefaultServices.js +12 -0
  1671. package/dist/esm/DefaultServices.js.map +1 -0
  1672. package/dist/esm/Deferred.js +169 -0
  1673. package/dist/esm/Deferred.js.map +1 -0
  1674. package/dist/esm/Differ.js +132 -0
  1675. package/dist/esm/Differ.js.map +1 -0
  1676. package/dist/esm/Duration.js +702 -0
  1677. package/dist/esm/Duration.js.map +1 -0
  1678. package/dist/esm/Effect.js +10883 -0
  1679. package/dist/esm/Effect.js.map +1 -0
  1680. package/dist/esm/Effectable.js +49 -0
  1681. package/dist/esm/Effectable.js.map +1 -0
  1682. package/dist/esm/Either.js +688 -0
  1683. package/dist/esm/Either.js.map +1 -0
  1684. package/dist/esm/Encoding.js +136 -0
  1685. package/dist/esm/Encoding.js.map +1 -0
  1686. package/dist/esm/Equal.js +71 -0
  1687. package/dist/esm/Equal.js.map +1 -0
  1688. package/dist/esm/Equivalence.js +166 -0
  1689. package/dist/esm/Equivalence.js.map +1 -0
  1690. package/dist/esm/ExecutionPlan.js +99 -0
  1691. package/dist/esm/ExecutionPlan.js.map +1 -0
  1692. package/dist/esm/ExecutionStrategy.js +55 -0
  1693. package/dist/esm/ExecutionStrategy.js.map +1 -0
  1694. package/dist/esm/Exit.js +257 -0
  1695. package/dist/esm/Exit.js.map +1 -0
  1696. package/dist/esm/FastCheck.js +9 -0
  1697. package/dist/esm/FastCheck.js.map +1 -0
  1698. package/dist/esm/Fiber.js +350 -0
  1699. package/dist/esm/Fiber.js.map +1 -0
  1700. package/dist/esm/FiberHandle.js +316 -0
  1701. package/dist/esm/FiberHandle.js.map +1 -0
  1702. package/dist/esm/FiberId.js +115 -0
  1703. package/dist/esm/FiberId.js.map +1 -0
  1704. package/dist/esm/FiberMap.js +356 -0
  1705. package/dist/esm/FiberMap.js.map +1 -0
  1706. package/dist/esm/FiberRef.js +242 -0
  1707. package/dist/esm/FiberRef.js.map +1 -0
  1708. package/dist/esm/FiberRefs.js +92 -0
  1709. package/dist/esm/FiberRefs.js.map +1 -0
  1710. package/dist/esm/FiberRefsPatch.js +32 -0
  1711. package/dist/esm/FiberRefsPatch.js.map +1 -0
  1712. package/dist/esm/FiberSet.js +289 -0
  1713. package/dist/esm/FiberSet.js.map +1 -0
  1714. package/dist/esm/FiberStatus.js +52 -0
  1715. package/dist/esm/FiberStatus.js.map +1 -0
  1716. package/dist/esm/Function.js +467 -0
  1717. package/dist/esm/Function.js.map +1 -0
  1718. package/dist/esm/GlobalValue.js +52 -0
  1719. package/dist/esm/GlobalValue.js.map +1 -0
  1720. package/dist/esm/Graph.js +3019 -0
  1721. package/dist/esm/Graph.js.map +1 -0
  1722. package/dist/esm/GroupBy.js +39 -0
  1723. package/dist/esm/GroupBy.js.map +1 -0
  1724. package/dist/esm/HKT.js +2 -0
  1725. package/dist/esm/HKT.js.map +1 -0
  1726. package/dist/esm/Hash.js +166 -0
  1727. package/dist/esm/Hash.js.map +1 -0
  1728. package/dist/esm/HashMap.js +312 -0
  1729. package/dist/esm/HashMap.js.map +1 -0
  1730. package/dist/esm/HashRing.js +245 -0
  1731. package/dist/esm/HashRing.js.map +1 -0
  1732. package/dist/esm/HashSet.js +1253 -0
  1733. package/dist/esm/HashSet.js.map +1 -0
  1734. package/dist/esm/Inspectable.js +194 -0
  1735. package/dist/esm/Inspectable.js.map +1 -0
  1736. package/dist/esm/Iterable.js +987 -0
  1737. package/dist/esm/Iterable.js.map +1 -0
  1738. package/dist/esm/JSONSchema.js +715 -0
  1739. package/dist/esm/JSONSchema.js.map +1 -0
  1740. package/dist/esm/KeyedPool.js +76 -0
  1741. package/dist/esm/KeyedPool.js.map +1 -0
  1742. package/dist/esm/Layer.js +642 -0
  1743. package/dist/esm/Layer.js.map +1 -0
  1744. package/dist/esm/LayerMap.js +202 -0
  1745. package/dist/esm/LayerMap.js.map +1 -0
  1746. package/dist/esm/List.js +756 -0
  1747. package/dist/esm/List.js.map +1 -0
  1748. package/dist/esm/LogLevel.js +135 -0
  1749. package/dist/esm/LogLevel.js.map +1 -0
  1750. package/dist/esm/LogSpan.js +15 -0
  1751. package/dist/esm/LogSpan.js.map +1 -0
  1752. package/dist/esm/Logger.js +490 -0
  1753. package/dist/esm/Logger.js.map +1 -0
  1754. package/dist/esm/Mailbox.js +96 -0
  1755. package/dist/esm/Mailbox.js.map +1 -0
  1756. package/dist/esm/ManagedRuntime.js +42 -0
  1757. package/dist/esm/ManagedRuntime.js.map +1 -0
  1758. package/dist/esm/Match.js +828 -0
  1759. package/dist/esm/Match.js.map +1 -0
  1760. package/dist/esm/MergeDecision.js +35 -0
  1761. package/dist/esm/MergeDecision.js.map +1 -0
  1762. package/dist/esm/MergeState.js +58 -0
  1763. package/dist/esm/MergeState.js.map +1 -0
  1764. package/dist/esm/MergeStrategy.js +51 -0
  1765. package/dist/esm/MergeStrategy.js.map +1 -0
  1766. package/dist/esm/Metric.js +408 -0
  1767. package/dist/esm/Metric.js.map +1 -0
  1768. package/dist/esm/MetricBoundaries.js +33 -0
  1769. package/dist/esm/MetricBoundaries.js.map +1 -0
  1770. package/dist/esm/MetricHook.js +47 -0
  1771. package/dist/esm/MetricHook.js.map +1 -0
  1772. package/dist/esm/MetricKey.js +63 -0
  1773. package/dist/esm/MetricKey.js.map +1 -0
  1774. package/dist/esm/MetricKeyType.js +87 -0
  1775. package/dist/esm/MetricKeyType.js.map +1 -0
  1776. package/dist/esm/MetricLabel.js +17 -0
  1777. package/dist/esm/MetricLabel.js.map +1 -0
  1778. package/dist/esm/MetricPair.js +20 -0
  1779. package/dist/esm/MetricPair.js.map +1 -0
  1780. package/dist/esm/MetricPolling.js +59 -0
  1781. package/dist/esm/MetricPolling.js.map +1 -0
  1782. package/dist/esm/MetricRegistry.js +15 -0
  1783. package/dist/esm/MetricRegistry.js.map +1 -0
  1784. package/dist/esm/MetricState.js +87 -0
  1785. package/dist/esm/MetricState.js.map +1 -0
  1786. package/dist/esm/Micro.js +2528 -0
  1787. package/dist/esm/Micro.js.map +1 -0
  1788. package/dist/esm/ModuleVersion.js +17 -0
  1789. package/dist/esm/ModuleVersion.js.map +1 -0
  1790. package/dist/esm/MutableHashMap.js +299 -0
  1791. package/dist/esm/MutableHashMap.js.map +1 -0
  1792. package/dist/esm/MutableHashSet.js +511 -0
  1793. package/dist/esm/MutableHashSet.js.map +1 -0
  1794. package/dist/esm/MutableList.js +240 -0
  1795. package/dist/esm/MutableList.js.map +1 -0
  1796. package/dist/esm/MutableQueue.js +159 -0
  1797. package/dist/esm/MutableQueue.js.map +1 -0
  1798. package/dist/esm/MutableRef.js +127 -0
  1799. package/dist/esm/MutableRef.js.map +1 -0
  1800. package/dist/esm/NonEmptyIterable.js +16 -0
  1801. package/dist/esm/NonEmptyIterable.js.map +1 -0
  1802. package/dist/esm/Number.js +887 -0
  1803. package/dist/esm/Number.js.map +1 -0
  1804. package/dist/esm/Option.js +1785 -0
  1805. package/dist/esm/Option.js.map +1 -0
  1806. package/dist/esm/Order.js +252 -0
  1807. package/dist/esm/Order.js.map +1 -0
  1808. package/dist/esm/Ordering.js +72 -0
  1809. package/dist/esm/Ordering.js.map +1 -0
  1810. package/dist/esm/ParseResult.js +1556 -0
  1811. package/dist/esm/ParseResult.js.map +1 -0
  1812. package/dist/esm/PartitionedSemaphore.js +137 -0
  1813. package/dist/esm/PartitionedSemaphore.js.map +1 -0
  1814. package/dist/esm/Pipeable.js +62 -0
  1815. package/dist/esm/Pipeable.js.map +1 -0
  1816. package/dist/esm/Pool.js +100 -0
  1817. package/dist/esm/Pool.js.map +1 -0
  1818. package/dist/esm/Predicate.js +1117 -0
  1819. package/dist/esm/Predicate.js.map +1 -0
  1820. package/dist/esm/Pretty.js +174 -0
  1821. package/dist/esm/Pretty.js.map +1 -0
  1822. package/dist/esm/PrimaryKey.js +14 -0
  1823. package/dist/esm/PrimaryKey.js.map +1 -0
  1824. package/dist/esm/PubSub.js +120 -0
  1825. package/dist/esm/PubSub.js.map +1 -0
  1826. package/dist/esm/Queue.js +248 -0
  1827. package/dist/esm/Queue.js.map +1 -0
  1828. package/dist/esm/Random.js +138 -0
  1829. package/dist/esm/Random.js.map +1 -0
  1830. package/dist/esm/RateLimiter.js +77 -0
  1831. package/dist/esm/RateLimiter.js.map +1 -0
  1832. package/dist/esm/RcMap.js +69 -0
  1833. package/dist/esm/RcMap.js.map +1 -0
  1834. package/dist/esm/RcRef.js +51 -0
  1835. package/dist/esm/RcRef.js.map +1 -0
  1836. package/dist/esm/Readable.js +45 -0
  1837. package/dist/esm/Readable.js.map +1 -0
  1838. package/dist/esm/Record.js +846 -0
  1839. package/dist/esm/Record.js.map +1 -0
  1840. package/dist/esm/RedBlackTree.js +259 -0
  1841. package/dist/esm/RedBlackTree.js.map +1 -0
  1842. package/dist/esm/Redacted.js +93 -0
  1843. package/dist/esm/Redacted.js.map +1 -0
  1844. package/dist/esm/Ref.js +77 -0
  1845. package/dist/esm/Ref.js.map +1 -0
  1846. package/dist/esm/RegExp.js +37 -0
  1847. package/dist/esm/RegExp.js.map +1 -0
  1848. package/dist/esm/Reloadable.js +59 -0
  1849. package/dist/esm/Reloadable.js.map +1 -0
  1850. package/dist/esm/Request.js +140 -0
  1851. package/dist/esm/Request.js.map +1 -0
  1852. package/dist/esm/RequestBlock.js +35 -0
  1853. package/dist/esm/RequestBlock.js.map +1 -0
  1854. package/dist/esm/RequestResolver.js +175 -0
  1855. package/dist/esm/RequestResolver.js.map +1 -0
  1856. package/dist/esm/Resource.js +44 -0
  1857. package/dist/esm/Resource.js.map +1 -0
  1858. package/dist/esm/Runtime.js +181 -0
  1859. package/dist/esm/Runtime.js.map +1 -0
  1860. package/dist/esm/RuntimeFlags.js +251 -0
  1861. package/dist/esm/RuntimeFlags.js.map +1 -0
  1862. package/dist/esm/RuntimeFlagsPatch.js +134 -0
  1863. package/dist/esm/RuntimeFlagsPatch.js.map +1 -0
  1864. package/dist/esm/STM.js +1002 -0
  1865. package/dist/esm/STM.js.map +1 -0
  1866. package/dist/esm/Schedule.js +1595 -0
  1867. package/dist/esm/Schedule.js.map +1 -0
  1868. package/dist/esm/ScheduleDecision.js +32 -0
  1869. package/dist/esm/ScheduleDecision.js.map +1 -0
  1870. package/dist/esm/ScheduleInterval.js +100 -0
  1871. package/dist/esm/ScheduleInterval.js.map +1 -0
  1872. package/dist/esm/ScheduleIntervals.js +78 -0
  1873. package/dist/esm/ScheduleIntervals.js.map +1 -0
  1874. package/dist/esm/Scheduler.js +289 -0
  1875. package/dist/esm/Scheduler.js.map +1 -0
  1876. package/dist/esm/Schema.js +6035 -0
  1877. package/dist/esm/Schema.js.map +1 -0
  1878. package/dist/esm/SchemaAST.js +2485 -0
  1879. package/dist/esm/SchemaAST.js.map +1 -0
  1880. package/dist/esm/Scope.js +94 -0
  1881. package/dist/esm/Scope.js.map +1 -0
  1882. package/dist/esm/ScopedCache.js +24 -0
  1883. package/dist/esm/ScopedCache.js.map +1 -0
  1884. package/dist/esm/ScopedRef.js +42 -0
  1885. package/dist/esm/ScopedRef.js.map +1 -0
  1886. package/dist/esm/Secret.js +44 -0
  1887. package/dist/esm/Secret.js.map +1 -0
  1888. package/dist/esm/SingleProducerAsyncInput.js +7 -0
  1889. package/dist/esm/SingleProducerAsyncInput.js.map +1 -0
  1890. package/dist/esm/Sink.js +864 -0
  1891. package/dist/esm/Sink.js.map +1 -0
  1892. package/dist/esm/SortedMap.js +169 -0
  1893. package/dist/esm/SortedMap.js.map +1 -0
  1894. package/dist/esm/SortedSet.js +237 -0
  1895. package/dist/esm/SortedSet.js.map +1 -0
  1896. package/dist/esm/Stream.js +4192 -0
  1897. package/dist/esm/Stream.js.map +1 -0
  1898. package/dist/esm/StreamEmit.js +2 -0
  1899. package/dist/esm/StreamEmit.js.map +1 -0
  1900. package/dist/esm/StreamHaltStrategy.js +57 -0
  1901. package/dist/esm/StreamHaltStrategy.js.map +1 -0
  1902. package/dist/esm/Streamable.js +36 -0
  1903. package/dist/esm/Streamable.js.map +1 -0
  1904. package/dist/esm/String.js +635 -0
  1905. package/dist/esm/String.js.map +1 -0
  1906. package/dist/esm/Struct.js +191 -0
  1907. package/dist/esm/Struct.js.map +1 -0
  1908. package/dist/esm/Subscribable.js +56 -0
  1909. package/dist/esm/Subscribable.js.map +1 -0
  1910. package/dist/esm/SubscriptionRef.js +116 -0
  1911. package/dist/esm/SubscriptionRef.js.map +1 -0
  1912. package/dist/esm/Supervisor.js +107 -0
  1913. package/dist/esm/Supervisor.js.map +1 -0
  1914. package/dist/esm/Symbol.js +27 -0
  1915. package/dist/esm/Symbol.js.map +1 -0
  1916. package/dist/esm/SynchronizedRef.js +119 -0
  1917. package/dist/esm/SynchronizedRef.js.map +1 -0
  1918. package/dist/esm/TArray.js +306 -0
  1919. package/dist/esm/TArray.js.map +1 -0
  1920. package/dist/esm/TDeferred.js +39 -0
  1921. package/dist/esm/TDeferred.js.map +1 -0
  1922. package/dist/esm/TMap.js +279 -0
  1923. package/dist/esm/TMap.js.map +1 -0
  1924. package/dist/esm/TPriorityQueue.js +136 -0
  1925. package/dist/esm/TPriorityQueue.js.map +1 -0
  1926. package/dist/esm/TPubSub.js +131 -0
  1927. package/dist/esm/TPubSub.js.map +1 -0
  1928. package/dist/esm/TQueue.js +229 -0
  1929. package/dist/esm/TQueue.js.map +1 -0
  1930. package/dist/esm/TRandom.js +65 -0
  1931. package/dist/esm/TRandom.js.map +1 -0
  1932. package/dist/esm/TReentrantLock.js +142 -0
  1933. package/dist/esm/TReentrantLock.js.map +1 -0
  1934. package/dist/esm/TRef.js +75 -0
  1935. package/dist/esm/TRef.js.map +1 -0
  1936. package/dist/esm/TSemaphore.js +65 -0
  1937. package/dist/esm/TSemaphore.js.map +1 -0
  1938. package/dist/esm/TSet.js +201 -0
  1939. package/dist/esm/TSet.js.map +1 -0
  1940. package/dist/esm/TSubscriptionRef.js +87 -0
  1941. package/dist/esm/TSubscriptionRef.js.map +1 -0
  1942. package/dist/esm/Take.js +148 -0
  1943. package/dist/esm/Take.js.map +1 -0
  1944. package/dist/esm/TestAnnotation.js +94 -0
  1945. package/dist/esm/TestAnnotation.js.map +1 -0
  1946. package/dist/esm/TestAnnotationMap.js +80 -0
  1947. package/dist/esm/TestAnnotationMap.js.map +1 -0
  1948. package/dist/esm/TestAnnotations.js +61 -0
  1949. package/dist/esm/TestAnnotations.js.map +1 -0
  1950. package/dist/esm/TestClock.js +354 -0
  1951. package/dist/esm/TestClock.js.map +1 -0
  1952. package/dist/esm/TestConfig.js +13 -0
  1953. package/dist/esm/TestConfig.js.map +1 -0
  1954. package/dist/esm/TestContext.js +21 -0
  1955. package/dist/esm/TestContext.js.map +1 -0
  1956. package/dist/esm/TestLive.js +30 -0
  1957. package/dist/esm/TestLive.js.map +1 -0
  1958. package/dist/esm/TestServices.js +230 -0
  1959. package/dist/esm/TestServices.js.map +1 -0
  1960. package/dist/esm/TestSized.js +36 -0
  1961. package/dist/esm/TestSized.js.map +1 -0
  1962. package/dist/esm/Tracer.js +37 -0
  1963. package/dist/esm/Tracer.js.map +1 -0
  1964. package/dist/esm/Trie.js +716 -0
  1965. package/dist/esm/Trie.js.map +1 -0
  1966. package/dist/esm/Tuple.js +235 -0
  1967. package/dist/esm/Tuple.js.map +1 -0
  1968. package/dist/esm/Types.js +7 -0
  1969. package/dist/esm/Types.js.map +1 -0
  1970. package/dist/esm/Unify.js +9 -0
  1971. package/dist/esm/Unify.js.map +1 -0
  1972. package/dist/esm/UpstreamPullRequest.js +51 -0
  1973. package/dist/esm/UpstreamPullRequest.js.map +1 -0
  1974. package/dist/esm/UpstreamPullStrategy.js +51 -0
  1975. package/dist/esm/UpstreamPullStrategy.js.map +1 -0
  1976. package/dist/esm/Utils.js +357 -0
  1977. package/dist/esm/Utils.js.map +1 -0
  1978. package/dist/esm/index.js +1385 -0
  1979. package/dist/esm/index.js.map +1 -0
  1980. package/dist/esm/internal/array.js +6 -0
  1981. package/dist/esm/internal/array.js.map +1 -0
  1982. package/dist/esm/internal/blockedRequests.js +341 -0
  1983. package/dist/esm/internal/blockedRequests.js.map +1 -0
  1984. package/dist/esm/internal/cache.js +480 -0
  1985. package/dist/esm/internal/cache.js.map +1 -0
  1986. package/dist/esm/internal/cause.js +824 -0
  1987. package/dist/esm/internal/cause.js.map +1 -0
  1988. package/dist/esm/internal/channel/channelExecutor.js +688 -0
  1989. package/dist/esm/internal/channel/channelExecutor.js.map +1 -0
  1990. package/dist/esm/internal/channel/channelState.js +59 -0
  1991. package/dist/esm/internal/channel/channelState.js.map +1 -0
  1992. package/dist/esm/internal/channel/childExecutorDecision.js +60 -0
  1993. package/dist/esm/internal/channel/childExecutorDecision.js.map +1 -0
  1994. package/dist/esm/internal/channel/continuation.js +48 -0
  1995. package/dist/esm/internal/channel/continuation.js.map +1 -0
  1996. package/dist/esm/internal/channel/mergeDecision.js +49 -0
  1997. package/dist/esm/internal/channel/mergeDecision.js.map +1 -0
  1998. package/dist/esm/internal/channel/mergeState.js +69 -0
  1999. package/dist/esm/internal/channel/mergeState.js.map +1 -0
  2000. package/dist/esm/internal/channel/mergeStrategy.js +46 -0
  2001. package/dist/esm/internal/channel/mergeStrategy.js.map +1 -0
  2002. package/dist/esm/internal/channel/singleProducerAsyncInput.js +163 -0
  2003. package/dist/esm/internal/channel/singleProducerAsyncInput.js.map +1 -0
  2004. package/dist/esm/internal/channel/subexecutor.js +152 -0
  2005. package/dist/esm/internal/channel/subexecutor.js.map +1 -0
  2006. package/dist/esm/internal/channel/upstreamPullRequest.js +52 -0
  2007. package/dist/esm/internal/channel/upstreamPullRequest.js.map +1 -0
  2008. package/dist/esm/internal/channel/upstreamPullStrategy.js +52 -0
  2009. package/dist/esm/internal/channel/upstreamPullStrategy.js.map +1 -0
  2010. package/dist/esm/internal/channel.js +683 -0
  2011. package/dist/esm/internal/channel.js.map +1 -0
  2012. package/dist/esm/internal/clock.js +77 -0
  2013. package/dist/esm/internal/clock.js.map +1 -0
  2014. package/dist/esm/internal/completedRequestMap.js +5 -0
  2015. package/dist/esm/internal/completedRequestMap.js.map +1 -0
  2016. package/dist/esm/internal/concurrency.js +28 -0
  2017. package/dist/esm/internal/concurrency.js.map +1 -0
  2018. package/dist/esm/internal/config.js +363 -0
  2019. package/dist/esm/internal/config.js.map +1 -0
  2020. package/dist/esm/internal/configError.js +263 -0
  2021. package/dist/esm/internal/configError.js.map +1 -0
  2022. package/dist/esm/internal/configProvider/pathPatch.js +76 -0
  2023. package/dist/esm/internal/configProvider/pathPatch.js.map +1 -0
  2024. package/dist/esm/internal/configProvider.js +425 -0
  2025. package/dist/esm/internal/configProvider.js.map +1 -0
  2026. package/dist/esm/internal/console.js +54 -0
  2027. package/dist/esm/internal/console.js.map +1 -0
  2028. package/dist/esm/internal/context.js +253 -0
  2029. package/dist/esm/internal/context.js.map +1 -0
  2030. package/dist/esm/internal/core-effect.js +811 -0
  2031. package/dist/esm/internal/core-effect.js.map +1 -0
  2032. package/dist/esm/internal/core-stream.js +236 -0
  2033. package/dist/esm/internal/core-stream.js.map +1 -0
  2034. package/dist/esm/internal/core.js +1610 -0
  2035. package/dist/esm/internal/core.js.map +1 -0
  2036. package/dist/esm/internal/data.js +29 -0
  2037. package/dist/esm/internal/data.js.map +1 -0
  2038. package/dist/esm/internal/dataSource.js +93 -0
  2039. package/dist/esm/internal/dataSource.js.map +1 -0
  2040. package/dist/esm/internal/dateTime.js +796 -0
  2041. package/dist/esm/internal/dateTime.js.map +1 -0
  2042. package/dist/esm/internal/defaultServices/console.js +92 -0
  2043. package/dist/esm/internal/defaultServices/console.js.map +1 -0
  2044. package/dist/esm/internal/defaultServices.js +73 -0
  2045. package/dist/esm/internal/defaultServices.js.map +1 -0
  2046. package/dist/esm/internal/deferred.js +27 -0
  2047. package/dist/esm/internal/deferred.js.map +1 -0
  2048. package/dist/esm/internal/differ/chunkPatch.js +130 -0
  2049. package/dist/esm/internal/differ/chunkPatch.js.map +1 -0
  2050. package/dist/esm/internal/differ/contextPatch.js +143 -0
  2051. package/dist/esm/internal/differ/contextPatch.js.map +1 -0
  2052. package/dist/esm/internal/differ/hashMapPatch.js +130 -0
  2053. package/dist/esm/internal/differ/hashMapPatch.js.map +1 -0
  2054. package/dist/esm/internal/differ/hashSetPatch.js +101 -0
  2055. package/dist/esm/internal/differ/hashSetPatch.js.map +1 -0
  2056. package/dist/esm/internal/differ/orPatch.js +170 -0
  2057. package/dist/esm/internal/differ/orPatch.js.map +1 -0
  2058. package/dist/esm/internal/differ/readonlyArrayPatch.js +129 -0
  2059. package/dist/esm/internal/differ/readonlyArrayPatch.js.map +1 -0
  2060. package/dist/esm/internal/differ.js +134 -0
  2061. package/dist/esm/internal/differ.js.map +1 -0
  2062. package/dist/esm/internal/doNotation.js +16 -0
  2063. package/dist/esm/internal/doNotation.js.map +1 -0
  2064. package/dist/esm/internal/effect/circular.js +402 -0
  2065. package/dist/esm/internal/effect/circular.js.map +1 -0
  2066. package/dist/esm/internal/effectable.js +113 -0
  2067. package/dist/esm/internal/effectable.js.map +1 -0
  2068. package/dist/esm/internal/either.js +85 -0
  2069. package/dist/esm/internal/either.js.map +1 -0
  2070. package/dist/esm/internal/encoding/base64.js +71 -0
  2071. package/dist/esm/internal/encoding/base64.js.map +1 -0
  2072. package/dist/esm/internal/encoding/base64Url.js +21 -0
  2073. package/dist/esm/internal/encoding/base64Url.js.map +1 -0
  2074. package/dist/esm/internal/encoding/common.js +38 -0
  2075. package/dist/esm/internal/encoding/common.js.map +1 -0
  2076. package/dist/esm/internal/encoding/hex.js +48 -0
  2077. package/dist/esm/internal/encoding/hex.js.map +1 -0
  2078. package/dist/esm/internal/errors.js +6 -0
  2079. package/dist/esm/internal/errors.js.map +1 -0
  2080. package/dist/esm/internal/executionPlan.js +59 -0
  2081. package/dist/esm/internal/executionPlan.js.map +1 -0
  2082. package/dist/esm/internal/executionStrategy.js +44 -0
  2083. package/dist/esm/internal/executionStrategy.js.map +1 -0
  2084. package/dist/esm/internal/fiber.js +253 -0
  2085. package/dist/esm/internal/fiber.js.map +1 -0
  2086. package/dist/esm/internal/fiberId.js +219 -0
  2087. package/dist/esm/internal/fiberId.js.map +1 -0
  2088. package/dist/esm/internal/fiberMessage.js +28 -0
  2089. package/dist/esm/internal/fiberMessage.js.map +1 -0
  2090. package/dist/esm/internal/fiberRefs/patch.js +107 -0
  2091. package/dist/esm/internal/fiberRefs/patch.js.map +1 -0
  2092. package/dist/esm/internal/fiberRefs.js +189 -0
  2093. package/dist/esm/internal/fiberRefs.js.map +1 -0
  2094. package/dist/esm/internal/fiberRuntime.js +2148 -0
  2095. package/dist/esm/internal/fiberRuntime.js.map +1 -0
  2096. package/dist/esm/internal/fiberScope.js +44 -0
  2097. package/dist/esm/internal/fiberScope.js.map +1 -0
  2098. package/dist/esm/internal/fiberStatus.js +72 -0
  2099. package/dist/esm/internal/fiberStatus.js.map +1 -0
  2100. package/dist/esm/internal/groupBy.js +213 -0
  2101. package/dist/esm/internal/groupBy.js.map +1 -0
  2102. package/dist/esm/internal/hashMap/array.js +48 -0
  2103. package/dist/esm/internal/hashMap/array.js.map +1 -0
  2104. package/dist/esm/internal/hashMap/bitwise.js +29 -0
  2105. package/dist/esm/internal/hashMap/bitwise.js.map +1 -0
  2106. package/dist/esm/internal/hashMap/config.js +11 -0
  2107. package/dist/esm/internal/hashMap/config.js.map +1 -0
  2108. package/dist/esm/internal/hashMap/keySet.js +6 -0
  2109. package/dist/esm/internal/hashMap/keySet.js.map +1 -0
  2110. package/dist/esm/internal/hashMap/node.js +253 -0
  2111. package/dist/esm/internal/hashMap/node.js.map +1 -0
  2112. package/dist/esm/internal/hashMap.js +360 -0
  2113. package/dist/esm/internal/hashMap.js.map +1 -0
  2114. package/dist/esm/internal/hashSet.js +182 -0
  2115. package/dist/esm/internal/hashSet.js.map +1 -0
  2116. package/dist/esm/internal/keyedPool.js +159 -0
  2117. package/dist/esm/internal/keyedPool.js.map +1 -0
  2118. package/dist/esm/internal/layer/circular.js +63 -0
  2119. package/dist/esm/internal/layer/circular.js.map +1 -0
  2120. package/dist/esm/internal/layer.js +552 -0
  2121. package/dist/esm/internal/layer.js.map +1 -0
  2122. package/dist/esm/internal/logSpan.js +17 -0
  2123. package/dist/esm/internal/logSpan.js.map +1 -0
  2124. package/dist/esm/internal/logger-circular.js +19 -0
  2125. package/dist/esm/internal/logger-circular.js.map +1 -0
  2126. package/dist/esm/internal/logger.js +367 -0
  2127. package/dist/esm/internal/logger.js.map +1 -0
  2128. package/dist/esm/internal/mailbox.js +450 -0
  2129. package/dist/esm/internal/mailbox.js.map +1 -0
  2130. package/dist/esm/internal/managedRuntime/circular.js +4 -0
  2131. package/dist/esm/internal/managedRuntime/circular.js.map +1 -0
  2132. package/dist/esm/internal/managedRuntime.js +86 -0
  2133. package/dist/esm/internal/managedRuntime.js.map +1 -0
  2134. package/dist/esm/internal/matcher.js +291 -0
  2135. package/dist/esm/internal/matcher.js.map +1 -0
  2136. package/dist/esm/internal/metric/boundaries.js +42 -0
  2137. package/dist/esm/internal/metric/boundaries.js.map +1 -0
  2138. package/dist/esm/internal/metric/hook.js +375 -0
  2139. package/dist/esm/internal/metric/hook.js.map +1 -0
  2140. package/dist/esm/internal/metric/key.js +60 -0
  2141. package/dist/esm/internal/metric/key.js.map +1 -0
  2142. package/dist/esm/internal/metric/keyType.js +169 -0
  2143. package/dist/esm/internal/metric/keyType.js.map +1 -0
  2144. package/dist/esm/internal/metric/label.js +36 -0
  2145. package/dist/esm/internal/metric/label.js.map +1 -0
  2146. package/dist/esm/internal/metric/pair.js +32 -0
  2147. package/dist/esm/internal/metric/pair.js.map +1 -0
  2148. package/dist/esm/internal/metric/polling.js +69 -0
  2149. package/dist/esm/internal/metric/polling.js.map +1 -0
  2150. package/dist/esm/internal/metric/registry.js +105 -0
  2151. package/dist/esm/internal/metric/registry.js.map +1 -0
  2152. package/dist/esm/internal/metric/state.js +181 -0
  2153. package/dist/esm/internal/metric/state.js.map +1 -0
  2154. package/dist/esm/internal/metric.js +181 -0
  2155. package/dist/esm/internal/metric.js.map +1 -0
  2156. package/dist/esm/internal/opCodes/cause.js +13 -0
  2157. package/dist/esm/internal/opCodes/cause.js.map +1 -0
  2158. package/dist/esm/internal/opCodes/channel.js +29 -0
  2159. package/dist/esm/internal/opCodes/channel.js.map +1 -0
  2160. package/dist/esm/internal/opCodes/channelChildExecutorDecision.js +7 -0
  2161. package/dist/esm/internal/opCodes/channelChildExecutorDecision.js.map +1 -0
  2162. package/dist/esm/internal/opCodes/channelMergeDecision.js +5 -0
  2163. package/dist/esm/internal/opCodes/channelMergeDecision.js.map +1 -0
  2164. package/dist/esm/internal/opCodes/channelMergeState.js +7 -0
  2165. package/dist/esm/internal/opCodes/channelMergeState.js.map +1 -0
  2166. package/dist/esm/internal/opCodes/channelMergeStrategy.js +5 -0
  2167. package/dist/esm/internal/opCodes/channelMergeStrategy.js.map +1 -0
  2168. package/dist/esm/internal/opCodes/channelState.js +9 -0
  2169. package/dist/esm/internal/opCodes/channelState.js.map +1 -0
  2170. package/dist/esm/internal/opCodes/channelUpstreamPullRequest.js +5 -0
  2171. package/dist/esm/internal/opCodes/channelUpstreamPullRequest.js.map +1 -0
  2172. package/dist/esm/internal/opCodes/channelUpstreamPullStrategy.js +5 -0
  2173. package/dist/esm/internal/opCodes/channelUpstreamPullStrategy.js.map +1 -0
  2174. package/dist/esm/internal/opCodes/config.js +23 -0
  2175. package/dist/esm/internal/opCodes/config.js.map +1 -0
  2176. package/dist/esm/internal/opCodes/configError.js +13 -0
  2177. package/dist/esm/internal/opCodes/configError.js.map +1 -0
  2178. package/dist/esm/internal/opCodes/continuation.js +5 -0
  2179. package/dist/esm/internal/opCodes/continuation.js.map +1 -0
  2180. package/dist/esm/internal/opCodes/deferred.js +5 -0
  2181. package/dist/esm/internal/opCodes/deferred.js.map +1 -0
  2182. package/dist/esm/internal/opCodes/effect.js +31 -0
  2183. package/dist/esm/internal/opCodes/effect.js.map +1 -0
  2184. package/dist/esm/internal/opCodes/layer.js +21 -0
  2185. package/dist/esm/internal/opCodes/layer.js.map +1 -0
  2186. package/dist/esm/internal/opCodes/streamHaltStrategy.js +9 -0
  2187. package/dist/esm/internal/opCodes/streamHaltStrategy.js.map +1 -0
  2188. package/dist/esm/internal/option.js +70 -0
  2189. package/dist/esm/internal/option.js.map +1 -0
  2190. package/dist/esm/internal/pool.js +276 -0
  2191. package/dist/esm/internal/pool.js.map +1 -0
  2192. package/dist/esm/internal/pubsub.js +1263 -0
  2193. package/dist/esm/internal/pubsub.js.map +1 -0
  2194. package/dist/esm/internal/query.js +93 -0
  2195. package/dist/esm/internal/query.js.map +1 -0
  2196. package/dist/esm/internal/queue.js +486 -0
  2197. package/dist/esm/internal/queue.js.map +1 -0
  2198. package/dist/esm/internal/random.js +119 -0
  2199. package/dist/esm/internal/random.js.map +1 -0
  2200. package/dist/esm/internal/rateLimiter.js +43 -0
  2201. package/dist/esm/internal/rateLimiter.js.map +1 -0
  2202. package/dist/esm/internal/rcMap.js +173 -0
  2203. package/dist/esm/internal/rcMap.js.map +1 -0
  2204. package/dist/esm/internal/rcRef.js +129 -0
  2205. package/dist/esm/internal/rcRef.js.map +1 -0
  2206. package/dist/esm/internal/redBlackTree/iterator.js +191 -0
  2207. package/dist/esm/internal/redBlackTree/iterator.js.map +1 -0
  2208. package/dist/esm/internal/redBlackTree/node.js +50 -0
  2209. package/dist/esm/internal/redBlackTree/node.js.map +1 -0
  2210. package/dist/esm/internal/redBlackTree.js +1069 -0
  2211. package/dist/esm/internal/redBlackTree.js.map +1 -0
  2212. package/dist/esm/internal/redacted.js +56 -0
  2213. package/dist/esm/internal/redacted.js.map +1 -0
  2214. package/dist/esm/internal/ref.js +110 -0
  2215. package/dist/esm/internal/ref.js.map +1 -0
  2216. package/dist/esm/internal/reloadable.js +42 -0
  2217. package/dist/esm/internal/reloadable.js.map +1 -0
  2218. package/dist/esm/internal/request.js +91 -0
  2219. package/dist/esm/internal/request.js.map +1 -0
  2220. package/dist/esm/internal/resource.js +38 -0
  2221. package/dist/esm/internal/resource.js.map +1 -0
  2222. package/dist/esm/internal/ringBuffer.js +56 -0
  2223. package/dist/esm/internal/ringBuffer.js.map +1 -0
  2224. package/dist/esm/internal/runtime.js +307 -0
  2225. package/dist/esm/internal/runtime.js.map +1 -0
  2226. package/dist/esm/internal/runtimeFlags.js +107 -0
  2227. package/dist/esm/internal/runtimeFlags.js.map +1 -0
  2228. package/dist/esm/internal/runtimeFlagsPatch.js +38 -0
  2229. package/dist/esm/internal/runtimeFlagsPatch.js.map +1 -0
  2230. package/dist/esm/internal/schedule/decision.js +33 -0
  2231. package/dist/esm/internal/schedule/decision.js.map +1 -0
  2232. package/dist/esm/internal/schedule/interval.js +70 -0
  2233. package/dist/esm/internal/schedule/interval.js.map +1 -0
  2234. package/dist/esm/internal/schedule/intervals.js +122 -0
  2235. package/dist/esm/internal/schedule/intervals.js.map +1 -0
  2236. package/dist/esm/internal/schedule.js +832 -0
  2237. package/dist/esm/internal/schedule.js.map +1 -0
  2238. package/dist/esm/internal/schema/errors.js +86 -0
  2239. package/dist/esm/internal/schema/errors.js.map +1 -0
  2240. package/dist/esm/internal/schema/schemaId.js +43 -0
  2241. package/dist/esm/internal/schema/schemaId.js.map +1 -0
  2242. package/dist/esm/internal/schema/util.js +35 -0
  2243. package/dist/esm/internal/schema/util.js.map +1 -0
  2244. package/dist/esm/internal/scopedCache.js +382 -0
  2245. package/dist/esm/internal/scopedCache.js.map +1 -0
  2246. package/dist/esm/internal/scopedRef.js +43 -0
  2247. package/dist/esm/internal/scopedRef.js.map +1 -0
  2248. package/dist/esm/internal/secret.js +77 -0
  2249. package/dist/esm/internal/secret.js.map +1 -0
  2250. package/dist/esm/internal/singleShotGen.js +30 -0
  2251. package/dist/esm/internal/singleShotGen.js.map +1 -0
  2252. package/dist/esm/internal/sink.js +801 -0
  2253. package/dist/esm/internal/sink.js.map +1 -0
  2254. package/dist/esm/internal/stack.js +5 -0
  2255. package/dist/esm/internal/stack.js.map +1 -0
  2256. package/dist/esm/internal/stm/core.js +501 -0
  2257. package/dist/esm/internal/stm/core.js.map +1 -0
  2258. package/dist/esm/internal/stm/entry.js +42 -0
  2259. package/dist/esm/internal/stm/entry.js.map +1 -0
  2260. package/dist/esm/internal/stm/journal.js +89 -0
  2261. package/dist/esm/internal/stm/journal.js.map +1 -0
  2262. package/dist/esm/internal/stm/opCodes/stm.js +25 -0
  2263. package/dist/esm/internal/stm/opCodes/stm.js.map +1 -0
  2264. package/dist/esm/internal/stm/opCodes/stmState.js +7 -0
  2265. package/dist/esm/internal/stm/opCodes/stmState.js.map +1 -0
  2266. package/dist/esm/internal/stm/opCodes/strategy.js +7 -0
  2267. package/dist/esm/internal/stm/opCodes/strategy.js.map +1 -0
  2268. package/dist/esm/internal/stm/opCodes/tExit.js +11 -0
  2269. package/dist/esm/internal/stm/opCodes/tExit.js.map +1 -0
  2270. package/dist/esm/internal/stm/opCodes/tryCommit.js +5 -0
  2271. package/dist/esm/internal/stm/opCodes/tryCommit.js.map +1 -0
  2272. package/dist/esm/internal/stm/stm.js +478 -0
  2273. package/dist/esm/internal/stm/stm.js.map +1 -0
  2274. package/dist/esm/internal/stm/stmState.js +89 -0
  2275. package/dist/esm/internal/stm/stmState.js.map +1 -0
  2276. package/dist/esm/internal/stm/tArray.js +243 -0
  2277. package/dist/esm/internal/stm/tArray.js.map +1 -0
  2278. package/dist/esm/internal/stm/tDeferred.js +41 -0
  2279. package/dist/esm/internal/stm/tDeferred.js.map +1 -0
  2280. package/dist/esm/internal/stm/tExit.js +101 -0
  2281. package/dist/esm/internal/stm/tExit.js.map +1 -0
  2282. package/dist/esm/internal/stm/tMap.js +430 -0
  2283. package/dist/esm/internal/stm/tMap.js.map +1 -0
  2284. package/dist/esm/internal/stm/tPriorityQueue.js +143 -0
  2285. package/dist/esm/internal/stm/tPriorityQueue.js.map +1 -0
  2286. package/dist/esm/internal/stm/tPubSub.js +376 -0
  2287. package/dist/esm/internal/stm/tPubSub.js.map +1 -0
  2288. package/dist/esm/internal/stm/tQueue.js +258 -0
  2289. package/dist/esm/internal/stm/tQueue.js.map +1 -0
  2290. package/dist/esm/internal/stm/tRandom.js +82 -0
  2291. package/dist/esm/internal/stm/tRandom.js.map +1 -0
  2292. package/dist/esm/internal/stm/tReentrantLock.js +192 -0
  2293. package/dist/esm/internal/stm/tReentrantLock.js.map +1 -0
  2294. package/dist/esm/internal/stm/tRef.js +100 -0
  2295. package/dist/esm/internal/stm/tRef.js.map +1 -0
  2296. package/dist/esm/internal/stm/tSemaphore.js +59 -0
  2297. package/dist/esm/internal/stm/tSemaphore.js.map +1 -0
  2298. package/dist/esm/internal/stm/tSet.js +88 -0
  2299. package/dist/esm/internal/stm/tSet.js.map +1 -0
  2300. package/dist/esm/internal/stm/tSubscriptionRef.js +166 -0
  2301. package/dist/esm/internal/stm/tSubscriptionRef.js.map +1 -0
  2302. package/dist/esm/internal/stm/tryCommit.js +16 -0
  2303. package/dist/esm/internal/stm/tryCommit.js.map +1 -0
  2304. package/dist/esm/internal/stm/txnId.js +11 -0
  2305. package/dist/esm/internal/stm/txnId.js.map +1 -0
  2306. package/dist/esm/internal/stm/versioned.js +8 -0
  2307. package/dist/esm/internal/stm/versioned.js.map +1 -0
  2308. package/dist/esm/internal/stream/debounceState.js +21 -0
  2309. package/dist/esm/internal/stream/debounceState.js.map +1 -0
  2310. package/dist/esm/internal/stream/emit.js +120 -0
  2311. package/dist/esm/internal/stream/emit.js.map +1 -0
  2312. package/dist/esm/internal/stream/haltStrategy.js +63 -0
  2313. package/dist/esm/internal/stream/haltStrategy.js.map +1 -0
  2314. package/dist/esm/internal/stream/handoff.js +55 -0
  2315. package/dist/esm/internal/stream/handoff.js.map +1 -0
  2316. package/dist/esm/internal/stream/handoffSignal.js +22 -0
  2317. package/dist/esm/internal/stream/handoffSignal.js.map +1 -0
  2318. package/dist/esm/internal/stream/pull.js +20 -0
  2319. package/dist/esm/internal/stream/pull.js.map +1 -0
  2320. package/dist/esm/internal/stream/sinkEndReason.js +13 -0
  2321. package/dist/esm/internal/stream/sinkEndReason.js.map +1 -0
  2322. package/dist/esm/internal/stream/zipAllState.js +33 -0
  2323. package/dist/esm/internal/stream/zipAllState.js.map +1 -0
  2324. package/dist/esm/internal/stream/zipChunksState.js +21 -0
  2325. package/dist/esm/internal/stream/zipChunksState.js.map +1 -0
  2326. package/dist/esm/internal/stream.js +2867 -0
  2327. package/dist/esm/internal/stream.js.map +1 -0
  2328. package/dist/esm/internal/string-utils.js +77 -0
  2329. package/dist/esm/internal/string-utils.js.map +1 -0
  2330. package/dist/esm/internal/subscriptionRef.js +63 -0
  2331. package/dist/esm/internal/subscriptionRef.js.map +1 -0
  2332. package/dist/esm/internal/supervisor/patch.js +125 -0
  2333. package/dist/esm/internal/supervisor/patch.js.map +1 -0
  2334. package/dist/esm/internal/supervisor.js +207 -0
  2335. package/dist/esm/internal/supervisor.js.map +1 -0
  2336. package/dist/esm/internal/synchronizedRef.js +44 -0
  2337. package/dist/esm/internal/synchronizedRef.js.map +1 -0
  2338. package/dist/esm/internal/take.js +108 -0
  2339. package/dist/esm/internal/take.js.map +1 -0
  2340. package/dist/esm/internal/testing/sleep.js +7 -0
  2341. package/dist/esm/internal/testing/sleep.js.map +1 -0
  2342. package/dist/esm/internal/testing/suspendedWarningData.js +48 -0
  2343. package/dist/esm/internal/testing/suspendedWarningData.js.map +1 -0
  2344. package/dist/esm/internal/testing/warningData.js +49 -0
  2345. package/dist/esm/internal/testing/warningData.js.map +1 -0
  2346. package/dist/esm/internal/tracer.js +122 -0
  2347. package/dist/esm/internal/tracer.js.map +1 -0
  2348. package/dist/esm/internal/trie.js +547 -0
  2349. package/dist/esm/internal/trie.js.map +1 -0
  2350. package/dist/esm/internal/version.js +6 -0
  2351. package/dist/esm/internal/version.js.map +1 -0
  2352. package/dist/esm/package.json +4 -0
  2353. package/index/package.json +6 -0
  2354. package/package.json +1471 -0
  2355. package/src/Arbitrary.ts +1101 -0
  2356. package/src/Array.ts +6854 -0
  2357. package/src/BigDecimal.ts +2037 -0
  2358. package/src/BigInt.ts +1139 -0
  2359. package/src/Boolean.ts +560 -0
  2360. package/src/Brand.ts +360 -0
  2361. package/src/Cache.ts +281 -0
  2362. package/src/Cause.ts +2049 -0
  2363. package/src/Channel.ts +3051 -0
  2364. package/src/ChildExecutorDecision.ts +158 -0
  2365. package/src/Chunk.ts +2350 -0
  2366. package/src/Clock.ts +111 -0
  2367. package/src/Config.ts +743 -0
  2368. package/src/ConfigError.ts +286 -0
  2369. package/src/ConfigProvider.ts +421 -0
  2370. package/src/ConfigProviderPathPatch.ts +132 -0
  2371. package/src/Console.ts +255 -0
  2372. package/src/Context.ts +867 -0
  2373. package/src/Cron.ts +718 -0
  2374. package/src/Data.ts +765 -0
  2375. package/src/DateTime.ts +2715 -0
  2376. package/src/DefaultServices.ts +34 -0
  2377. package/src/Deferred.ts +471 -0
  2378. package/src/Differ.ts +512 -0
  2379. package/src/Duration.ts +1140 -0
  2380. package/src/Effect.ts +29096 -0
  2381. package/src/Effectable.ts +107 -0
  2382. package/src/Either.ts +1723 -0
  2383. package/src/Encoding.ts +195 -0
  2384. package/src/Equal.ts +98 -0
  2385. package/src/Equivalence.ts +259 -0
  2386. package/src/ExecutionPlan.ts +308 -0
  2387. package/src/ExecutionStrategy.ts +138 -0
  2388. package/src/Exit.ts +717 -0
  2389. package/src/FastCheck.ts +9 -0
  2390. package/src/Fiber.ts +926 -0
  2391. package/src/FiberHandle.ts +582 -0
  2392. package/src/FiberId.ts +219 -0
  2393. package/src/FiberMap.ts +779 -0
  2394. package/src/FiberRef.ts +511 -0
  2395. package/src/FiberRefs.ts +288 -0
  2396. package/src/FiberRefsPatch.ts +139 -0
  2397. package/src/FiberSet.ts +529 -0
  2398. package/src/FiberStatus.ts +108 -0
  2399. package/src/Function.ts +1378 -0
  2400. package/src/GlobalValue.ts +53 -0
  2401. package/src/Graph.ts +3764 -0
  2402. package/src/GroupBy.ts +141 -0
  2403. package/src/HKT.ts +45 -0
  2404. package/src/Hash.ts +203 -0
  2405. package/src/HashMap.ts +919 -0
  2406. package/src/HashRing.ts +387 -0
  2407. package/src/HashSet.ts +2346 -0
  2408. package/src/Inspectable.ts +287 -0
  2409. package/src/Iterable.ts +1606 -0
  2410. package/src/JSONSchema.ts +1044 -0
  2411. package/src/KeyedPool.ts +201 -0
  2412. package/src/Layer.ts +1671 -0
  2413. package/src/LayerMap.ts +436 -0
  2414. package/src/List.ts +1469 -0
  2415. package/src/LogLevel.ts +387 -0
  2416. package/src/LogSpan.ts +25 -0
  2417. package/src/Logger.ts +863 -0
  2418. package/src/Mailbox.ts +298 -0
  2419. package/src/ManagedRuntime.ts +180 -0
  2420. package/src/Match.ts +1493 -0
  2421. package/src/MergeDecision.ts +103 -0
  2422. package/src/MergeState.ts +180 -0
  2423. package/src/MergeStrategy.ts +124 -0
  2424. package/src/Metric.ts +1165 -0
  2425. package/src/MetricBoundaries.ts +69 -0
  2426. package/src/MetricHook.ts +175 -0
  2427. package/src/MetricKey.ts +266 -0
  2428. package/src/MetricKeyType.ts +262 -0
  2429. package/src/MetricLabel.ts +47 -0
  2430. package/src/MetricPair.ts +71 -0
  2431. package/src/MetricPolling.ts +182 -0
  2432. package/src/MetricRegistry.ts +48 -0
  2433. package/src/MetricState.ts +273 -0
  2434. package/src/Micro.ts +5556 -0
  2435. package/src/ModuleVersion.ts +18 -0
  2436. package/src/MutableHashMap.ts +518 -0
  2437. package/src/MutableHashSet.ts +706 -0
  2438. package/src/MutableList.ts +333 -0
  2439. package/src/MutableQueue.ts +289 -0
  2440. package/src/MutableRef.ts +258 -0
  2441. package/src/NonEmptyIterable.ts +32 -0
  2442. package/src/Number.ts +1440 -0
  2443. package/src/Option.ts +4028 -0
  2444. package/src/Order.ts +397 -0
  2445. package/src/Ordering.ts +173 -0
  2446. package/src/ParseResult.ts +2068 -0
  2447. package/src/PartitionedSemaphore.ts +200 -0
  2448. package/src/Pipeable.ts +574 -0
  2449. package/src/Pool.ts +220 -0
  2450. package/src/Predicate.ts +2344 -0
  2451. package/src/Pretty.ts +205 -0
  2452. package/src/PrimaryKey.ts +23 -0
  2453. package/src/PubSub.ts +210 -0
  2454. package/src/Queue.ts +748 -0
  2455. package/src/Random.ts +204 -0
  2456. package/src/RateLimiter.ts +138 -0
  2457. package/src/RcMap.ts +245 -0
  2458. package/src/RcRef.ts +122 -0
  2459. package/src/Readable.ts +104 -0
  2460. package/src/Record.ts +1990 -0
  2461. package/src/RedBlackTree.ts +725 -0
  2462. package/src/Redacted.ts +144 -0
  2463. package/src/Ref.ts +268 -0
  2464. package/src/RegExp.ts +38 -0
  2465. package/src/Reloadable.ts +127 -0
  2466. package/src/Request.ts +418 -0
  2467. package/src/RequestBlock.ts +118 -0
  2468. package/src/RequestResolver.ts +495 -0
  2469. package/src/Resource.ts +119 -0
  2470. package/src/Runtime.ts +631 -0
  2471. package/src/RuntimeFlags.ts +436 -0
  2472. package/src/RuntimeFlagsPatch.ts +295 -0
  2473. package/src/STM.ts +3091 -0
  2474. package/src/Schedule.ts +3740 -0
  2475. package/src/ScheduleDecision.ts +62 -0
  2476. package/src/ScheduleInterval.ts +219 -0
  2477. package/src/ScheduleIntervals.ts +172 -0
  2478. package/src/Scheduler.ts +364 -0
  2479. package/src/Schema.ts +11443 -0
  2480. package/src/SchemaAST.ts +3055 -0
  2481. package/src/Scope.ts +240 -0
  2482. package/src/ScopedCache.ts +151 -0
  2483. package/src/ScopedRef.ts +139 -0
  2484. package/src/Secret.ts +88 -0
  2485. package/src/SingleProducerAsyncInput.ts +67 -0
  2486. package/src/Sink.ts +1877 -0
  2487. package/src/SortedMap.ts +361 -0
  2488. package/src/SortedSet.ts +530 -0
  2489. package/src/Stream.ts +11561 -0
  2490. package/src/StreamEmit.ts +136 -0
  2491. package/src/StreamHaltStrategy.ts +140 -0
  2492. package/src/Streamable.ts +45 -0
  2493. package/src/String.ts +1026 -0
  2494. package/src/Struct.ts +335 -0
  2495. package/src/Subscribable.ts +114 -0
  2496. package/src/SubscriptionRef.ts +444 -0
  2497. package/src/Supervisor.ts +240 -0
  2498. package/src/Symbol.ts +29 -0
  2499. package/src/SynchronizedRef.ts +429 -0
  2500. package/src/TArray.ts +922 -0
  2501. package/src/TDeferred.ts +124 -0
  2502. package/src/TMap.ts +875 -0
  2503. package/src/TPriorityQueue.ts +283 -0
  2504. package/src/TPubSub.ts +228 -0
  2505. package/src/TQueue.ts +540 -0
  2506. package/src/TRandom.ts +129 -0
  2507. package/src/TReentrantLock.ts +260 -0
  2508. package/src/TRef.ts +266 -0
  2509. package/src/TSemaphore.ts +169 -0
  2510. package/src/TSet.ts +633 -0
  2511. package/src/TSubscriptionRef.ts +284 -0
  2512. package/src/Take.ts +309 -0
  2513. package/src/TestAnnotation.ts +158 -0
  2514. package/src/TestAnnotationMap.ts +163 -0
  2515. package/src/TestAnnotations.ts +117 -0
  2516. package/src/TestClock.ts +562 -0
  2517. package/src/TestConfig.ts +47 -0
  2518. package/src/TestContext.ts +36 -0
  2519. package/src/TestLive.ts +53 -0
  2520. package/src/TestServices.ts +454 -0
  2521. package/src/TestSized.ts +55 -0
  2522. package/src/Tracer.ts +182 -0
  2523. package/src/Trie.ts +1860 -0
  2524. package/src/Tuple.ts +483 -0
  2525. package/src/Types.ts +361 -0
  2526. package/src/Unify.ts +127 -0
  2527. package/src/UpstreamPullRequest.ts +129 -0
  2528. package/src/UpstreamPullStrategy.ts +133 -0
  2529. package/src/Utils.ts +809 -0
  2530. package/src/index.ts +1561 -0
  2531. package/src/internal/array.ts +8 -0
  2532. package/src/internal/blockedRequests.ts +520 -0
  2533. package/src/internal/cache.ts +733 -0
  2534. package/src/internal/cause.ts +1050 -0
  2535. package/src/internal/channel/channelExecutor.ts +1200 -0
  2536. package/src/internal/channel/channelState.ts +134 -0
  2537. package/src/internal/channel/childExecutorDecision.ts +96 -0
  2538. package/src/internal/channel/continuation.ts +200 -0
  2539. package/src/internal/channel/mergeDecision.ts +113 -0
  2540. package/src/internal/channel/mergeState.ts +120 -0
  2541. package/src/internal/channel/mergeStrategy.ts +72 -0
  2542. package/src/internal/channel/singleProducerAsyncInput.ts +259 -0
  2543. package/src/internal/channel/subexecutor.ts +229 -0
  2544. package/src/internal/channel/upstreamPullRequest.ts +84 -0
  2545. package/src/internal/channel/upstreamPullStrategy.ts +87 -0
  2546. package/src/internal/channel.ts +2603 -0
  2547. package/src/internal/clock.ts +95 -0
  2548. package/src/internal/completedRequestMap.ts +9 -0
  2549. package/src/internal/concurrency.ts +54 -0
  2550. package/src/internal/config.ts +716 -0
  2551. package/src/internal/configError.ts +304 -0
  2552. package/src/internal/configProvider/pathPatch.ts +97 -0
  2553. package/src/internal/configProvider.ts +799 -0
  2554. package/src/internal/console.ts +153 -0
  2555. package/src/internal/context.ts +337 -0
  2556. package/src/internal/core-effect.ts +2293 -0
  2557. package/src/internal/core-stream.ts +998 -0
  2558. package/src/internal/core.ts +3166 -0
  2559. package/src/internal/data.ts +36 -0
  2560. package/src/internal/dataSource.ts +327 -0
  2561. package/src/internal/dateTime.ts +1277 -0
  2562. package/src/internal/defaultServices/console.ts +100 -0
  2563. package/src/internal/defaultServices.ts +163 -0
  2564. package/src/internal/deferred.ts +46 -0
  2565. package/src/internal/differ/chunkPatch.ts +211 -0
  2566. package/src/internal/differ/contextPatch.ts +232 -0
  2567. package/src/internal/differ/hashMapPatch.ts +220 -0
  2568. package/src/internal/differ/hashSetPatch.ts +176 -0
  2569. package/src/internal/differ/orPatch.ts +311 -0
  2570. package/src/internal/differ/readonlyArrayPatch.ts +210 -0
  2571. package/src/internal/differ.ts +200 -0
  2572. package/src/internal/doNotation.ts +80 -0
  2573. package/src/internal/effect/circular.ts +903 -0
  2574. package/src/internal/effectable.ts +131 -0
  2575. package/src/internal/either.ts +110 -0
  2576. package/src/internal/encoding/base64.ts +286 -0
  2577. package/src/internal/encoding/base64Url.ts +29 -0
  2578. package/src/internal/encoding/common.ts +51 -0
  2579. package/src/internal/encoding/hex.ts +315 -0
  2580. package/src/internal/errors.ts +7 -0
  2581. package/src/internal/executionPlan.ts +114 -0
  2582. package/src/internal/executionStrategy.ts +74 -0
  2583. package/src/internal/fiber.ts +388 -0
  2584. package/src/internal/fiberId.ts +267 -0
  2585. package/src/internal/fiberMessage.ts +82 -0
  2586. package/src/internal/fiberRefs/patch.ts +144 -0
  2587. package/src/internal/fiberRefs.ts +297 -0
  2588. package/src/internal/fiberRuntime.ts +3859 -0
  2589. package/src/internal/fiberScope.ts +71 -0
  2590. package/src/internal/fiberStatus.ts +119 -0
  2591. package/src/internal/groupBy.ts +530 -0
  2592. package/src/internal/hashMap/array.ts +49 -0
  2593. package/src/internal/hashMap/bitwise.ts +32 -0
  2594. package/src/internal/hashMap/config.ts +14 -0
  2595. package/src/internal/hashMap/keySet.ts +8 -0
  2596. package/src/internal/hashMap/node.ts +391 -0
  2597. package/src/internal/hashMap.ts +586 -0
  2598. package/src/internal/hashSet.ts +323 -0
  2599. package/src/internal/keyedPool.ts +244 -0
  2600. package/src/internal/layer/circular.ts +214 -0
  2601. package/src/internal/layer.ts +1483 -0
  2602. package/src/internal/logSpan.ts +20 -0
  2603. package/src/internal/logger-circular.ts +24 -0
  2604. package/src/internal/logger.ts +485 -0
  2605. package/src/internal/mailbox.ts +561 -0
  2606. package/src/internal/managedRuntime/circular.ts +6 -0
  2607. package/src/internal/managedRuntime.ts +137 -0
  2608. package/src/internal/matcher.ts +652 -0
  2609. package/src/internal/metric/boundaries.ts +75 -0
  2610. package/src/internal/metric/hook.ts +483 -0
  2611. package/src/internal/metric/key.ts +167 -0
  2612. package/src/internal/metric/keyType.ts +238 -0
  2613. package/src/internal/metric/label.ts +41 -0
  2614. package/src/internal/metric/pair.ts +48 -0
  2615. package/src/internal/metric/polling.ts +149 -0
  2616. package/src/internal/metric/registry.ts +187 -0
  2617. package/src/internal/metric/state.ts +290 -0
  2618. package/src/internal/metric.ts +577 -0
  2619. package/src/internal/opCodes/cause.ts +35 -0
  2620. package/src/internal/opCodes/channel.ts +83 -0
  2621. package/src/internal/opCodes/channelChildExecutorDecision.ts +17 -0
  2622. package/src/internal/opCodes/channelMergeDecision.ts +11 -0
  2623. package/src/internal/opCodes/channelMergeState.ts +17 -0
  2624. package/src/internal/opCodes/channelMergeStrategy.ts +11 -0
  2625. package/src/internal/opCodes/channelState.ts +23 -0
  2626. package/src/internal/opCodes/channelUpstreamPullRequest.ts +11 -0
  2627. package/src/internal/opCodes/channelUpstreamPullStrategy.ts +11 -0
  2628. package/src/internal/opCodes/config.ts +65 -0
  2629. package/src/internal/opCodes/configError.ts +35 -0
  2630. package/src/internal/opCodes/continuation.ts +11 -0
  2631. package/src/internal/opCodes/deferred.ts +11 -0
  2632. package/src/internal/opCodes/effect.ts +89 -0
  2633. package/src/internal/opCodes/layer.ts +59 -0
  2634. package/src/internal/opCodes/streamHaltStrategy.ts +23 -0
  2635. package/src/internal/option.ts +80 -0
  2636. package/src/internal/pool.ts +432 -0
  2637. package/src/internal/pubsub.ts +1762 -0
  2638. package/src/internal/query.ts +204 -0
  2639. package/src/internal/queue.ts +766 -0
  2640. package/src/internal/random.ts +161 -0
  2641. package/src/internal/rateLimiter.ts +93 -0
  2642. package/src/internal/rcMap.ts +285 -0
  2643. package/src/internal/rcRef.ts +192 -0
  2644. package/src/internal/redBlackTree/iterator.ts +200 -0
  2645. package/src/internal/redBlackTree/node.ts +68 -0
  2646. package/src/internal/redBlackTree.ts +1245 -0
  2647. package/src/internal/redacted.ts +73 -0
  2648. package/src/internal/ref.ts +171 -0
  2649. package/src/internal/reloadable.ts +140 -0
  2650. package/src/internal/request.ts +177 -0
  2651. package/src/internal/resource.ts +76 -0
  2652. package/src/internal/ringBuffer.ts +68 -0
  2653. package/src/internal/runtime.ts +558 -0
  2654. package/src/internal/runtimeFlags.ts +178 -0
  2655. package/src/internal/runtimeFlagsPatch.ts +103 -0
  2656. package/src/internal/schedule/decision.ts +47 -0
  2657. package/src/internal/schedule/interval.ts +101 -0
  2658. package/src/internal/schedule/intervals.ts +180 -0
  2659. package/src/internal/schedule.ts +2199 -0
  2660. package/src/internal/schema/errors.ts +191 -0
  2661. package/src/internal/schema/schemaId.ts +106 -0
  2662. package/src/internal/schema/util.ts +50 -0
  2663. package/src/internal/scopedCache.ts +644 -0
  2664. package/src/internal/scopedRef.ts +118 -0
  2665. package/src/internal/secret.ts +89 -0
  2666. package/src/internal/singleShotGen.ts +35 -0
  2667. package/src/internal/sink.ts +2120 -0
  2668. package/src/internal/stack.ts +10 -0
  2669. package/src/internal/stm/core.ts +817 -0
  2670. package/src/internal/stm/entry.ts +59 -0
  2671. package/src/internal/stm/journal.ts +123 -0
  2672. package/src/internal/stm/opCodes/stm.ts +71 -0
  2673. package/src/internal/stm/opCodes/stmState.ts +17 -0
  2674. package/src/internal/stm/opCodes/strategy.ts +17 -0
  2675. package/src/internal/stm/opCodes/tExit.ts +29 -0
  2676. package/src/internal/stm/opCodes/tryCommit.ts +11 -0
  2677. package/src/internal/stm/stm.ts +1453 -0
  2678. package/src/internal/stm/stmState.ts +136 -0
  2679. package/src/internal/stm/tArray.ts +550 -0
  2680. package/src/internal/stm/tDeferred.ts +81 -0
  2681. package/src/internal/stm/tExit.ts +190 -0
  2682. package/src/internal/stm/tMap.ts +824 -0
  2683. package/src/internal/stm/tPriorityQueue.ts +267 -0
  2684. package/src/internal/stm/tPubSub.ts +551 -0
  2685. package/src/internal/stm/tQueue.ts +393 -0
  2686. package/src/internal/stm/tRandom.ts +140 -0
  2687. package/src/internal/stm/tReentrantLock.ts +352 -0
  2688. package/src/internal/stm/tRef.ts +195 -0
  2689. package/src/internal/stm/tSemaphore.ts +113 -0
  2690. package/src/internal/stm/tSet.ts +259 -0
  2691. package/src/internal/stm/tSubscriptionRef.ts +286 -0
  2692. package/src/internal/stm/tryCommit.ts +34 -0
  2693. package/src/internal/stm/txnId.ts +14 -0
  2694. package/src/internal/stm/versioned.ts +4 -0
  2695. package/src/internal/stream/debounceState.ts +57 -0
  2696. package/src/internal/stream/emit.ts +123 -0
  2697. package/src/internal/stream/haltStrategy.ts +94 -0
  2698. package/src/internal/stream/handoff.ts +187 -0
  2699. package/src/internal/stream/handoffSignal.ts +59 -0
  2700. package/src/internal/stream/pull.ts +34 -0
  2701. package/src/internal/stream/sinkEndReason.ts +30 -0
  2702. package/src/internal/stream/zipAllState.ts +88 -0
  2703. package/src/internal/stream/zipChunksState.ts +56 -0
  2704. package/src/internal/stream.ts +8802 -0
  2705. package/src/internal/string-utils.ts +107 -0
  2706. package/src/internal/subscriptionRef.ts +138 -0
  2707. package/src/internal/supervisor/patch.ts +190 -0
  2708. package/src/internal/supervisor.ts +303 -0
  2709. package/src/internal/synchronizedRef.ts +114 -0
  2710. package/src/internal/take.ts +199 -0
  2711. package/src/internal/testing/sleep.ts +27 -0
  2712. package/src/internal/testing/suspendedWarningData.ts +85 -0
  2713. package/src/internal/testing/warningData.ts +94 -0
  2714. package/src/internal/tracer.ts +150 -0
  2715. package/src/internal/trie.ts +722 -0
  2716. package/src/internal/version.ts +7 -0
@@ -0,0 +1,3019 @@
1
+ /**
2
+ * @experimental
3
+ * @since 3.18.0
4
+ */
5
+ import * as Data from "./Data.js";
6
+ import * as Equal from "./Equal.js";
7
+ import { dual } from "./Function.js";
8
+ import * as Hash from "./Hash.js";
9
+ import { format, NodeInspectSymbol } from "./Inspectable.js";
10
+ import * as Option from "./Option.js";
11
+ import { pipeArguments } from "./Pipeable.js";
12
+ /**
13
+ * Unique identifier for Graph instances.
14
+ *
15
+ * @since 3.18.0
16
+ * @category symbol
17
+ */
18
+ export const TypeId = "~effect/Graph";
19
+ /**
20
+ * Edge data containing source, target, and user data.
21
+ *
22
+ * @since 3.18.0
23
+ * @category models
24
+ */
25
+ export class Edge extends Data.Class {}
26
+ // =============================================================================
27
+ // Proto Objects
28
+ // =============================================================================
29
+ /** @internal */
30
+ const ProtoGraph = {
31
+ [TypeId]: TypeId,
32
+ [Symbol.iterator]() {
33
+ return this.nodes[Symbol.iterator]();
34
+ },
35
+ [NodeInspectSymbol]() {
36
+ return this.toJSON();
37
+ },
38
+ [Equal.symbol](that) {
39
+ if (isGraph(that)) {
40
+ if (this.nodes.size !== that.nodes.size || this.edges.size !== that.edges.size || this.type !== that.type) {
41
+ return false;
42
+ }
43
+ // Compare nodes
44
+ for (const [nodeIndex, nodeData] of this.nodes) {
45
+ if (!that.nodes.has(nodeIndex)) {
46
+ return false;
47
+ }
48
+ const otherNodeData = that.nodes.get(nodeIndex);
49
+ if (!Equal.equals(nodeData, otherNodeData)) {
50
+ return false;
51
+ }
52
+ }
53
+ // Compare edges
54
+ for (const [edgeIndex, edgeData] of this.edges) {
55
+ if (!that.edges.has(edgeIndex)) {
56
+ return false;
57
+ }
58
+ const otherEdge = that.edges.get(edgeIndex);
59
+ if (!Equal.equals(edgeData, otherEdge)) {
60
+ return false;
61
+ }
62
+ }
63
+ return true;
64
+ }
65
+ return false;
66
+ },
67
+ [Hash.symbol]() {
68
+ let hash = Hash.string("Graph");
69
+ hash = hash ^ Hash.string(this.type);
70
+ hash = hash ^ Hash.number(this.nodes.size);
71
+ hash = hash ^ Hash.number(this.edges.size);
72
+ for (const [nodeIndex, nodeData] of this.nodes) {
73
+ hash = hash ^ Hash.hash(nodeIndex) + Hash.hash(nodeData);
74
+ }
75
+ for (const [edgeIndex, edgeData] of this.edges) {
76
+ hash = hash ^ Hash.hash(edgeIndex) + Hash.hash(edgeData);
77
+ }
78
+ return hash;
79
+ },
80
+ toJSON() {
81
+ return {
82
+ _id: "Graph",
83
+ nodeCount: this.nodes.size,
84
+ edgeCount: this.edges.size,
85
+ type: this.type
86
+ };
87
+ },
88
+ toString() {
89
+ return format(this);
90
+ },
91
+ pipe() {
92
+ return pipeArguments(this, arguments);
93
+ }
94
+ };
95
+ // =============================================================================
96
+ // Errors
97
+ // =============================================================================
98
+ /**
99
+ * Error thrown when a graph operation fails.
100
+ *
101
+ * @since 3.18.0
102
+ * @category errors
103
+ */
104
+ export class GraphError extends /*#__PURE__*/Data.TaggedError("GraphError") {}
105
+ /** @internal */
106
+ const missingNode = node => new GraphError({
107
+ message: `Node ${node} does not exist`
108
+ });
109
+ // =============================================================================
110
+ // Constructors
111
+ // =============================================================================
112
+ /** @internal */
113
+ export const isGraph = u => typeof u === "object" && u !== null && TypeId in u;
114
+ /**
115
+ * Creates a directed graph, optionally with initial mutations.
116
+ *
117
+ * @example
118
+ * ```ts
119
+ * import { Graph } from "effect"
120
+ *
121
+ * // Directed graph with initial nodes and edges
122
+ * const graph = Graph.directed<string, string>((mutable) => {
123
+ * const a = Graph.addNode(mutable, "A")
124
+ * const b = Graph.addNode(mutable, "B")
125
+ * const c = Graph.addNode(mutable, "C")
126
+ * Graph.addEdge(mutable, a, b, "A->B")
127
+ * Graph.addEdge(mutable, b, c, "B->C")
128
+ * })
129
+ * ```
130
+ *
131
+ * @since 3.18.0
132
+ * @category constructors
133
+ */
134
+ export const directed = mutate => {
135
+ const graph = Object.create(ProtoGraph);
136
+ graph.type = "directed";
137
+ graph.nodes = new Map();
138
+ graph.edges = new Map();
139
+ graph.adjacency = new Map();
140
+ graph.reverseAdjacency = new Map();
141
+ graph.nextNodeIndex = 0;
142
+ graph.nextEdgeIndex = 0;
143
+ graph.isAcyclic = Option.some(true);
144
+ graph.mutable = false;
145
+ if (mutate) {
146
+ const mutable = beginMutation(graph);
147
+ mutate(mutable);
148
+ return endMutation(mutable);
149
+ }
150
+ return graph;
151
+ };
152
+ /**
153
+ * Creates an undirected graph, optionally with initial mutations.
154
+ *
155
+ * @example
156
+ * ```ts
157
+ * import { Graph } from "effect"
158
+ *
159
+ * // Undirected graph with initial nodes and edges
160
+ * const graph = Graph.undirected<string, string>((mutable) => {
161
+ * const a = Graph.addNode(mutable, "A")
162
+ * const b = Graph.addNode(mutable, "B")
163
+ * const c = Graph.addNode(mutable, "C")
164
+ * Graph.addEdge(mutable, a, b, "A-B")
165
+ * Graph.addEdge(mutable, b, c, "B-C")
166
+ * })
167
+ * ```
168
+ *
169
+ * @since 3.18.0
170
+ * @category constructors
171
+ */
172
+ export const undirected = mutate => {
173
+ const graph = Object.create(ProtoGraph);
174
+ graph.type = "undirected";
175
+ graph.nodes = new Map();
176
+ graph.edges = new Map();
177
+ graph.adjacency = new Map();
178
+ graph.reverseAdjacency = new Map();
179
+ graph.nextNodeIndex = 0;
180
+ graph.nextEdgeIndex = 0;
181
+ graph.isAcyclic = Option.some(true);
182
+ graph.mutable = false;
183
+ if (mutate) {
184
+ const mutable = beginMutation(graph);
185
+ mutate(mutable);
186
+ return endMutation(mutable);
187
+ }
188
+ return graph;
189
+ };
190
+ // =============================================================================
191
+ // Scoped Mutable API
192
+ // =============================================================================
193
+ /**
194
+ * Creates a mutable scope for safe graph mutations by copying the data structure.
195
+ *
196
+ * @example
197
+ * ```ts
198
+ * import { Graph } from "effect"
199
+ *
200
+ * const graph = Graph.directed<string, number>()
201
+ * const mutable = Graph.beginMutation(graph)
202
+ * // Now mutable can be safely modified without affecting original graph
203
+ * ```
204
+ *
205
+ * @since 3.18.0
206
+ * @category mutations
207
+ */
208
+ export const beginMutation = graph => {
209
+ // Copy adjacency maps with deep cloned arrays
210
+ const adjacency = new Map();
211
+ const reverseAdjacency = new Map();
212
+ for (const [nodeIndex, edges] of graph.adjacency) {
213
+ adjacency.set(nodeIndex, [...edges]);
214
+ }
215
+ for (const [nodeIndex, edges] of graph.reverseAdjacency) {
216
+ reverseAdjacency.set(nodeIndex, [...edges]);
217
+ }
218
+ const mutable = Object.create(ProtoGraph);
219
+ mutable.type = graph.type;
220
+ mutable.nodes = new Map(graph.nodes);
221
+ mutable.edges = new Map(graph.edges);
222
+ mutable.adjacency = adjacency;
223
+ mutable.reverseAdjacency = reverseAdjacency;
224
+ mutable.nextNodeIndex = graph.nextNodeIndex;
225
+ mutable.nextEdgeIndex = graph.nextEdgeIndex;
226
+ mutable.isAcyclic = graph.isAcyclic;
227
+ mutable.mutable = true;
228
+ return mutable;
229
+ };
230
+ /**
231
+ * Converts a mutable graph back to an immutable graph, ending the mutation scope.
232
+ *
233
+ * @example
234
+ * ```ts
235
+ * import { Graph } from "effect"
236
+ *
237
+ * const graph = Graph.directed<string, number>()
238
+ * const mutable = Graph.beginMutation(graph)
239
+ * // ... perform mutations on mutable ...
240
+ * const newGraph = Graph.endMutation(mutable)
241
+ * ```
242
+ *
243
+ * @since 3.18.0
244
+ * @category mutations
245
+ */
246
+ export const endMutation = mutable => {
247
+ const graph = Object.create(ProtoGraph);
248
+ graph.type = mutable.type;
249
+ graph.nodes = new Map(mutable.nodes);
250
+ graph.edges = new Map(mutable.edges);
251
+ graph.adjacency = mutable.adjacency;
252
+ graph.reverseAdjacency = mutable.reverseAdjacency;
253
+ graph.nextNodeIndex = mutable.nextNodeIndex;
254
+ graph.nextEdgeIndex = mutable.nextEdgeIndex;
255
+ graph.isAcyclic = mutable.isAcyclic;
256
+ graph.mutable = false;
257
+ return graph;
258
+ };
259
+ /**
260
+ * Performs scoped mutations on a graph, automatically managing the mutation lifecycle.
261
+ *
262
+ * @example
263
+ * ```ts
264
+ * import { Graph } from "effect"
265
+ *
266
+ * const graph = Graph.directed<string, number>()
267
+ * const newGraph = Graph.mutate(graph, (mutable) => {
268
+ * // Safe mutations go here
269
+ * // mutable gets automatically converted back to immutable
270
+ * })
271
+ * ```
272
+ *
273
+ * @since 3.18.0
274
+ * @category mutations
275
+ */
276
+ export const mutate = /*#__PURE__*/dual(2, (graph, f) => {
277
+ const mutable = beginMutation(graph);
278
+ f(mutable);
279
+ return endMutation(mutable);
280
+ });
281
+ // =============================================================================
282
+ // Basic Node Operations
283
+ // =============================================================================
284
+ /**
285
+ * Adds a new node to a mutable graph and returns its index.
286
+ *
287
+ * @example
288
+ * ```ts
289
+ * import { Graph } from "effect"
290
+ *
291
+ * const result = Graph.mutate(Graph.directed<string, number>(), (mutable) => {
292
+ * const nodeA = Graph.addNode(mutable, "Node A")
293
+ * const nodeB = Graph.addNode(mutable, "Node B")
294
+ * console.log(nodeA) // NodeIndex with value 0
295
+ * console.log(nodeB) // NodeIndex with value 1
296
+ * })
297
+ * ```
298
+ *
299
+ * @since 3.18.0
300
+ * @category mutations
301
+ */
302
+ export const addNode = (mutable, data) => {
303
+ const nodeIndex = mutable.nextNodeIndex;
304
+ // Add node data
305
+ mutable.nodes.set(nodeIndex, data);
306
+ // Initialize empty adjacency lists
307
+ mutable.adjacency.set(nodeIndex, []);
308
+ mutable.reverseAdjacency.set(nodeIndex, []);
309
+ // Update graph allocators
310
+ mutable.nextNodeIndex = mutable.nextNodeIndex + 1;
311
+ return nodeIndex;
312
+ };
313
+ /**
314
+ * Gets the data associated with a node index, if it exists.
315
+ *
316
+ * @example
317
+ * ```ts
318
+ * import { Graph, Option } from "effect"
319
+ *
320
+ * const graph = Graph.mutate(Graph.directed<string, number>(), (mutable) => {
321
+ * Graph.addNode(mutable, "Node A")
322
+ * })
323
+ *
324
+ * const nodeIndex = 0
325
+ * const nodeData = Graph.getNode(graph, nodeIndex)
326
+ *
327
+ * if (Option.isSome(nodeData)) {
328
+ * console.log(nodeData.value) // "Node A"
329
+ * }
330
+ * ```
331
+ *
332
+ * @since 3.18.0
333
+ * @category getters
334
+ */
335
+ export const getNode = (graph, nodeIndex) => graph.nodes.has(nodeIndex) ? Option.some(graph.nodes.get(nodeIndex)) : Option.none();
336
+ /**
337
+ * Checks if a node with the given index exists in the graph.
338
+ *
339
+ * @example
340
+ * ```ts
341
+ * import { Graph } from "effect"
342
+ *
343
+ * const graph = Graph.mutate(Graph.directed<string, number>(), (mutable) => {
344
+ * Graph.addNode(mutable, "Node A")
345
+ * })
346
+ *
347
+ * const nodeIndex = 0
348
+ * const exists = Graph.hasNode(graph, nodeIndex)
349
+ * console.log(exists) // true
350
+ *
351
+ * const nonExistentIndex = 999
352
+ * const notExists = Graph.hasNode(graph, nonExistentIndex)
353
+ * console.log(notExists) // false
354
+ * ```
355
+ *
356
+ * @since 3.18.0
357
+ * @category getters
358
+ */
359
+ export const hasNode = (graph, nodeIndex) => graph.nodes.has(nodeIndex);
360
+ /**
361
+ * Returns the number of nodes in the graph.
362
+ *
363
+ * @example
364
+ * ```ts
365
+ * import { Graph } from "effect"
366
+ *
367
+ * const emptyGraph = Graph.directed<string, number>()
368
+ * console.log(Graph.nodeCount(emptyGraph)) // 0
369
+ *
370
+ * const graphWithNodes = Graph.mutate(emptyGraph, (mutable) => {
371
+ * Graph.addNode(mutable, "Node A")
372
+ * Graph.addNode(mutable, "Node B")
373
+ * Graph.addNode(mutable, "Node C")
374
+ * })
375
+ *
376
+ * console.log(Graph.nodeCount(graphWithNodes)) // 3
377
+ * ```
378
+ *
379
+ * @since 3.18.0
380
+ * @category getters
381
+ */
382
+ export const nodeCount = graph => graph.nodes.size;
383
+ /**
384
+ * Finds the first node that matches the given predicate.
385
+ *
386
+ * @example
387
+ * ```ts
388
+ * import { Graph, Option } from "effect"
389
+ *
390
+ * const graph = Graph.mutate(Graph.directed<string, number>(), (mutable) => {
391
+ * Graph.addNode(mutable, "Node A")
392
+ * Graph.addNode(mutable, "Node B")
393
+ * Graph.addNode(mutable, "Node C")
394
+ * })
395
+ *
396
+ * const result = Graph.findNode(graph, (data) => data.startsWith("Node B"))
397
+ * console.log(result) // Option.some(1)
398
+ *
399
+ * const notFound = Graph.findNode(graph, (data) => data === "Node D")
400
+ * console.log(notFound) // Option.none()
401
+ * ```
402
+ *
403
+ * @since 3.18.0
404
+ * @category getters
405
+ */
406
+ export const findNode = (graph, predicate) => {
407
+ for (const [index, data] of graph.nodes) {
408
+ if (predicate(data)) {
409
+ return Option.some(index);
410
+ }
411
+ }
412
+ return Option.none();
413
+ };
414
+ /**
415
+ * Finds all nodes that match the given predicate.
416
+ *
417
+ * @example
418
+ * ```ts
419
+ * import { Graph } from "effect"
420
+ *
421
+ * const graph = Graph.mutate(Graph.directed<string, number>(), (mutable) => {
422
+ * Graph.addNode(mutable, "Start A")
423
+ * Graph.addNode(mutable, "Node B")
424
+ * Graph.addNode(mutable, "Start C")
425
+ * })
426
+ *
427
+ * const result = Graph.findNodes(graph, (data) => data.startsWith("Start"))
428
+ * console.log(result) // [0, 2]
429
+ *
430
+ * const empty = Graph.findNodes(graph, (data) => data === "Not Found")
431
+ * console.log(empty) // []
432
+ * ```
433
+ *
434
+ * @since 3.18.0
435
+ * @category getters
436
+ */
437
+ export const findNodes = (graph, predicate) => {
438
+ const results = [];
439
+ for (const [index, data] of graph.nodes) {
440
+ if (predicate(data)) {
441
+ results.push(index);
442
+ }
443
+ }
444
+ return results;
445
+ };
446
+ /**
447
+ * Finds the first edge that matches the given predicate.
448
+ *
449
+ * @example
450
+ * ```ts
451
+ * import { Graph, Option } from "effect"
452
+ *
453
+ * const graph = Graph.mutate(Graph.directed<string, number>(), (mutable) => {
454
+ * const nodeA = Graph.addNode(mutable, "Node A")
455
+ * const nodeB = Graph.addNode(mutable, "Node B")
456
+ * const nodeC = Graph.addNode(mutable, "Node C")
457
+ * Graph.addEdge(mutable, nodeA, nodeB, 10)
458
+ * Graph.addEdge(mutable, nodeB, nodeC, 20)
459
+ * })
460
+ *
461
+ * const result = Graph.findEdge(graph, (data) => data > 15)
462
+ * console.log(result) // Option.some(1)
463
+ *
464
+ * const notFound = Graph.findEdge(graph, (data) => data > 100)
465
+ * console.log(notFound) // Option.none()
466
+ * ```
467
+ *
468
+ * @since 3.18.0
469
+ * @category getters
470
+ */
471
+ export const findEdge = (graph, predicate) => {
472
+ for (const [edgeIndex, edgeData] of graph.edges) {
473
+ if (predicate(edgeData.data, edgeData.source, edgeData.target)) {
474
+ return Option.some(edgeIndex);
475
+ }
476
+ }
477
+ return Option.none();
478
+ };
479
+ /**
480
+ * Finds all edges that match the given predicate.
481
+ *
482
+ * @example
483
+ * ```ts
484
+ * import { Graph } from "effect"
485
+ *
486
+ * const graph = Graph.mutate(Graph.directed<string, number>(), (mutable) => {
487
+ * const nodeA = Graph.addNode(mutable, "Node A")
488
+ * const nodeB = Graph.addNode(mutable, "Node B")
489
+ * const nodeC = Graph.addNode(mutable, "Node C")
490
+ * Graph.addEdge(mutable, nodeA, nodeB, 10)
491
+ * Graph.addEdge(mutable, nodeB, nodeC, 20)
492
+ * Graph.addEdge(mutable, nodeC, nodeA, 30)
493
+ * })
494
+ *
495
+ * const result = Graph.findEdges(graph, (data) => data >= 20)
496
+ * console.log(result) // [1, 2]
497
+ *
498
+ * const empty = Graph.findEdges(graph, (data) => data > 100)
499
+ * console.log(empty) // []
500
+ * ```
501
+ *
502
+ * @since 3.18.0
503
+ * @category getters
504
+ */
505
+ export const findEdges = (graph, predicate) => {
506
+ const results = [];
507
+ for (const [edgeIndex, edgeData] of graph.edges) {
508
+ if (predicate(edgeData.data, edgeData.source, edgeData.target)) {
509
+ results.push(edgeIndex);
510
+ }
511
+ }
512
+ return results;
513
+ };
514
+ /**
515
+ * Updates a single node's data by applying a transformation function.
516
+ *
517
+ * @example
518
+ * ```ts
519
+ * import { Graph } from "effect"
520
+ *
521
+ * const graph = Graph.directed<string, number>((mutable) => {
522
+ * Graph.addNode(mutable, "Node A")
523
+ * Graph.addNode(mutable, "Node B")
524
+ * Graph.updateNode(mutable, 0, (data) => data.toUpperCase())
525
+ * })
526
+ *
527
+ * const nodeData = Graph.getNode(graph, 0)
528
+ * console.log(nodeData) // Option.some("NODE A")
529
+ * ```
530
+ *
531
+ * @since 3.18.0
532
+ * @category transformations
533
+ */
534
+ export const updateNode = (mutable, index, f) => {
535
+ if (!mutable.nodes.has(index)) {
536
+ return;
537
+ }
538
+ const currentData = mutable.nodes.get(index);
539
+ const newData = f(currentData);
540
+ mutable.nodes.set(index, newData);
541
+ };
542
+ /**
543
+ * Updates a single edge's data by applying a transformation function.
544
+ *
545
+ * @example
546
+ * ```ts
547
+ * import { Graph } from "effect"
548
+ *
549
+ * const result = Graph.mutate(Graph.directed<string, number>(), (mutable) => {
550
+ * const nodeA = Graph.addNode(mutable, "Node A")
551
+ * const nodeB = Graph.addNode(mutable, "Node B")
552
+ * const edgeIndex = Graph.addEdge(mutable, nodeA, nodeB, 10)
553
+ * Graph.updateEdge(mutable, edgeIndex, (data) => data * 2)
554
+ * })
555
+ *
556
+ * const edgeData = Graph.getEdge(result, 0)
557
+ * console.log(edgeData) // Option.some({ source: 0, target: 1, data: 20 })
558
+ * ```
559
+ *
560
+ * @since 3.18.0
561
+ * @category mutations
562
+ */
563
+ export const updateEdge = (mutable, edgeIndex, f) => {
564
+ if (!mutable.edges.has(edgeIndex)) {
565
+ return;
566
+ }
567
+ const currentEdge = mutable.edges.get(edgeIndex);
568
+ const newData = f(currentEdge.data);
569
+ mutable.edges.set(edgeIndex, {
570
+ ...currentEdge,
571
+ data: newData
572
+ });
573
+ };
574
+ /**
575
+ * Creates a new graph with transformed node data using the provided mapping function.
576
+ *
577
+ * @example
578
+ * ```ts
579
+ * import { Graph } from "effect"
580
+ *
581
+ * const graph = Graph.directed<string, number>((mutable) => {
582
+ * Graph.addNode(mutable, "node a")
583
+ * Graph.addNode(mutable, "node b")
584
+ * Graph.addNode(mutable, "node c")
585
+ * Graph.mapNodes(mutable, (data) => data.toUpperCase())
586
+ * })
587
+ *
588
+ * const nodeData = Graph.getNode(graph, 0)
589
+ * console.log(nodeData) // Option.some("NODE A")
590
+ * ```
591
+ *
592
+ * @since 3.18.0
593
+ * @category transformations
594
+ */
595
+ export const mapNodes = (mutable, f) => {
596
+ // Transform existing node data in place
597
+ for (const [index, data] of mutable.nodes) {
598
+ const newData = f(data);
599
+ mutable.nodes.set(index, newData);
600
+ }
601
+ };
602
+ /**
603
+ * Transforms all edge data in a mutable graph using the provided mapping function.
604
+ *
605
+ * @example
606
+ * ```ts
607
+ * import { Graph } from "effect"
608
+ *
609
+ * const graph = Graph.directed<string, number>((mutable) => {
610
+ * const a = Graph.addNode(mutable, "A")
611
+ * const b = Graph.addNode(mutable, "B")
612
+ * const c = Graph.addNode(mutable, "C")
613
+ * Graph.addEdge(mutable, a, b, 10)
614
+ * Graph.addEdge(mutable, b, c, 20)
615
+ * Graph.mapEdges(mutable, (data) => data * 2)
616
+ * })
617
+ *
618
+ * const edgeData = Graph.getEdge(graph, 0)
619
+ * console.log(edgeData) // Option.some({ source: 0, target: 1, data: 20 })
620
+ * ```
621
+ *
622
+ * @since 3.18.0
623
+ * @category transformations
624
+ */
625
+ export const mapEdges = (mutable, f) => {
626
+ // Transform existing edge data in place
627
+ for (const [index, edgeData] of mutable.edges) {
628
+ const newData = f(edgeData.data);
629
+ mutable.edges.set(index, {
630
+ ...edgeData,
631
+ data: newData
632
+ });
633
+ }
634
+ };
635
+ /**
636
+ * Reverses all edge directions in a mutable graph by swapping source and target nodes.
637
+ *
638
+ * @example
639
+ * ```ts
640
+ * import { Graph } from "effect"
641
+ *
642
+ * const graph = Graph.directed<string, number>((mutable) => {
643
+ * const a = Graph.addNode(mutable, "A")
644
+ * const b = Graph.addNode(mutable, "B")
645
+ * const c = Graph.addNode(mutable, "C")
646
+ * Graph.addEdge(mutable, a, b, 1) // A -> B
647
+ * Graph.addEdge(mutable, b, c, 2) // B -> C
648
+ * Graph.reverse(mutable) // Now B -> A, C -> B
649
+ * })
650
+ *
651
+ * const edge0 = Graph.getEdge(graph, 0)
652
+ * console.log(edge0) // Option.some({ source: 1, target: 0, data: 1 }) - B -> A
653
+ * ```
654
+ *
655
+ * @since 3.18.0
656
+ * @category transformations
657
+ */
658
+ export const reverse = mutable => {
659
+ // Reverse all edges by swapping source and target
660
+ for (const [index, edgeData] of mutable.edges) {
661
+ mutable.edges.set(index, {
662
+ source: edgeData.target,
663
+ target: edgeData.source,
664
+ data: edgeData.data
665
+ });
666
+ }
667
+ // Clear and rebuild adjacency lists with reversed directions
668
+ mutable.adjacency.clear();
669
+ mutable.reverseAdjacency.clear();
670
+ // Rebuild adjacency lists with reversed directions
671
+ for (const [edgeIndex, edgeData] of mutable.edges) {
672
+ // Add to forward adjacency (source -> target)
673
+ const sourceEdges = mutable.adjacency.get(edgeData.source) || [];
674
+ sourceEdges.push(edgeIndex);
675
+ mutable.adjacency.set(edgeData.source, sourceEdges);
676
+ // Add to reverse adjacency (target <- source)
677
+ const targetEdges = mutable.reverseAdjacency.get(edgeData.target) || [];
678
+ targetEdges.push(edgeIndex);
679
+ mutable.reverseAdjacency.set(edgeData.target, targetEdges);
680
+ }
681
+ // Invalidate cycle flag since edge directions changed
682
+ mutable.isAcyclic = Option.none();
683
+ };
684
+ /**
685
+ * Filters and optionally transforms nodes in a mutable graph using a predicate function.
686
+ * Nodes that return Option.none are removed along with all their connected edges.
687
+ *
688
+ * @example
689
+ * ```ts
690
+ * import { Graph, Option } from "effect"
691
+ *
692
+ * const graph = Graph.directed<string, number>((mutable) => {
693
+ * const a = Graph.addNode(mutable, "active")
694
+ * const b = Graph.addNode(mutable, "inactive")
695
+ * const c = Graph.addNode(mutable, "active")
696
+ * Graph.addEdge(mutable, a, b, 1)
697
+ * Graph.addEdge(mutable, b, c, 2)
698
+ *
699
+ * // Keep only "active" nodes and transform to uppercase
700
+ * Graph.filterMapNodes(mutable, (data) =>
701
+ * data === "active" ? Option.some(data.toUpperCase()) : Option.none()
702
+ * )
703
+ * })
704
+ *
705
+ * console.log(Graph.nodeCount(graph)) // 2 (only "active" nodes remain)
706
+ * ```
707
+ *
708
+ * @since 3.18.0
709
+ * @category transformations
710
+ */
711
+ export const filterMapNodes = (mutable, f) => {
712
+ const nodesToRemove = [];
713
+ // First pass: identify nodes to remove and transform data for nodes to keep
714
+ for (const [index, data] of mutable.nodes) {
715
+ const result = f(data);
716
+ if (Option.isSome(result)) {
717
+ // Transform node data
718
+ mutable.nodes.set(index, result.value);
719
+ } else {
720
+ // Mark for removal
721
+ nodesToRemove.push(index);
722
+ }
723
+ }
724
+ // Second pass: remove filtered out nodes and their edges
725
+ for (const nodeIndex of nodesToRemove) {
726
+ removeNode(mutable, nodeIndex);
727
+ }
728
+ };
729
+ /**
730
+ * Filters and optionally transforms edges in a mutable graph using a predicate function.
731
+ * Edges that return Option.none are removed from the graph.
732
+ *
733
+ * @example
734
+ * ```ts
735
+ * import { Graph, Option } from "effect"
736
+ *
737
+ * const graph = Graph.directed<string, number>((mutable) => {
738
+ * const a = Graph.addNode(mutable, "A")
739
+ * const b = Graph.addNode(mutable, "B")
740
+ * const c = Graph.addNode(mutable, "C")
741
+ * Graph.addEdge(mutable, a, b, 5)
742
+ * Graph.addEdge(mutable, b, c, 15)
743
+ * Graph.addEdge(mutable, c, a, 25)
744
+ *
745
+ * // Keep only edges with weight >= 10 and double their weight
746
+ * Graph.filterMapEdges(mutable, (data) =>
747
+ * data >= 10 ? Option.some(data * 2) : Option.none()
748
+ * )
749
+ * })
750
+ *
751
+ * console.log(Graph.edgeCount(graph)) // 2 (edges with weight 5 removed)
752
+ * ```
753
+ *
754
+ * @since 3.18.0
755
+ * @category transformations
756
+ */
757
+ export const filterMapEdges = (mutable, f) => {
758
+ const edgesToRemove = [];
759
+ // First pass: identify edges to remove and transform data for edges to keep
760
+ for (const [index, edgeData] of mutable.edges) {
761
+ const result = f(edgeData.data);
762
+ if (Option.isSome(result)) {
763
+ // Transform edge data
764
+ mutable.edges.set(index, {
765
+ ...edgeData,
766
+ data: result.value
767
+ });
768
+ } else {
769
+ // Mark for removal
770
+ edgesToRemove.push(index);
771
+ }
772
+ }
773
+ // Second pass: remove filtered out edges
774
+ for (const edgeIndex of edgesToRemove) {
775
+ removeEdge(mutable, edgeIndex);
776
+ }
777
+ };
778
+ /**
779
+ * Filters nodes by removing those that don't match the predicate.
780
+ * This function modifies the mutable graph in place.
781
+ *
782
+ * @example
783
+ * ```ts
784
+ * import { Graph } from "effect"
785
+ *
786
+ * const graph = Graph.directed<string, number>((mutable) => {
787
+ * Graph.addNode(mutable, "active")
788
+ * Graph.addNode(mutable, "inactive")
789
+ * Graph.addNode(mutable, "pending")
790
+ * Graph.addNode(mutable, "active")
791
+ *
792
+ * // Keep only "active" nodes
793
+ * Graph.filterNodes(mutable, (data) => data === "active")
794
+ * })
795
+ *
796
+ * console.log(Graph.nodeCount(graph)) // 2 (only "active" nodes remain)
797
+ * ```
798
+ *
799
+ * @since 3.18.0
800
+ * @category transformations
801
+ */
802
+ export const filterNodes = (mutable, predicate) => {
803
+ const nodesToRemove = [];
804
+ // Identify nodes to remove
805
+ for (const [index, data] of mutable.nodes) {
806
+ if (!predicate(data)) {
807
+ nodesToRemove.push(index);
808
+ }
809
+ }
810
+ // Remove filtered out nodes (this also removes connected edges)
811
+ for (const nodeIndex of nodesToRemove) {
812
+ removeNode(mutable, nodeIndex);
813
+ }
814
+ };
815
+ /**
816
+ * Filters edges by removing those that don't match the predicate.
817
+ * This function modifies the mutable graph in place.
818
+ *
819
+ * @example
820
+ * ```ts
821
+ * import { Graph } from "effect"
822
+ *
823
+ * const graph = Graph.directed<string, number>((mutable) => {
824
+ * const a = Graph.addNode(mutable, "A")
825
+ * const b = Graph.addNode(mutable, "B")
826
+ * const c = Graph.addNode(mutable, "C")
827
+ *
828
+ * Graph.addEdge(mutable, a, b, 5)
829
+ * Graph.addEdge(mutable, b, c, 15)
830
+ * Graph.addEdge(mutable, c, a, 25)
831
+ *
832
+ * // Keep only edges with weight >= 10
833
+ * Graph.filterEdges(mutable, (data) => data >= 10)
834
+ * })
835
+ *
836
+ * console.log(Graph.edgeCount(graph)) // 2 (edge with weight 5 removed)
837
+ * ```
838
+ *
839
+ * @since 3.18.0
840
+ * @category transformations
841
+ */
842
+ export const filterEdges = (mutable, predicate) => {
843
+ const edgesToRemove = [];
844
+ // Identify edges to remove
845
+ for (const [index, edgeData] of mutable.edges) {
846
+ if (!predicate(edgeData.data)) {
847
+ edgesToRemove.push(index);
848
+ }
849
+ }
850
+ // Remove filtered out edges
851
+ for (const edgeIndex of edgesToRemove) {
852
+ removeEdge(mutable, edgeIndex);
853
+ }
854
+ };
855
+ // =============================================================================
856
+ // Cycle Flag Management (Internal)
857
+ // =============================================================================
858
+ /** @internal */
859
+ const invalidateCycleFlagOnRemoval = mutable => {
860
+ // Only invalidate if the graph had cycles (removing edges/nodes cannot introduce cycles in acyclic graphs)
861
+ // If already unknown (null) or acyclic (true), no need to change
862
+ if (Option.isSome(mutable.isAcyclic) && mutable.isAcyclic.value === false) {
863
+ mutable.isAcyclic = Option.none();
864
+ }
865
+ };
866
+ /** @internal */
867
+ const invalidateCycleFlagOnAddition = mutable => {
868
+ // Only invalidate if the graph was acyclic (adding edges cannot remove cycles from cyclic graphs)
869
+ // If already unknown (null) or cyclic (false), no need to change
870
+ if (Option.isSome(mutable.isAcyclic) && mutable.isAcyclic.value === true) {
871
+ mutable.isAcyclic = Option.none();
872
+ }
873
+ };
874
+ // =============================================================================
875
+ // Edge Operations
876
+ // =============================================================================
877
+ /**
878
+ * Adds a new edge to a mutable graph and returns its index.
879
+ *
880
+ * @example
881
+ * ```ts
882
+ * import { Graph } from "effect"
883
+ *
884
+ * const result = Graph.mutate(Graph.directed<string, number>(), (mutable) => {
885
+ * const nodeA = Graph.addNode(mutable, "Node A")
886
+ * const nodeB = Graph.addNode(mutable, "Node B")
887
+ * const edge = Graph.addEdge(mutable, nodeA, nodeB, 42)
888
+ * console.log(edge) // EdgeIndex with value 0
889
+ * })
890
+ * ```
891
+ *
892
+ * @since 3.18.0
893
+ * @category mutations
894
+ */
895
+ export const addEdge = (mutable, source, target, data) => {
896
+ // Validate that both nodes exist
897
+ if (!mutable.nodes.has(source)) {
898
+ throw missingNode(source);
899
+ }
900
+ if (!mutable.nodes.has(target)) {
901
+ throw missingNode(target);
902
+ }
903
+ const edgeIndex = mutable.nextEdgeIndex;
904
+ // Create edge data
905
+ const edgeData = new Edge({
906
+ source,
907
+ target,
908
+ data
909
+ });
910
+ mutable.edges.set(edgeIndex, edgeData);
911
+ // Update adjacency lists
912
+ const sourceAdjacency = mutable.adjacency.get(source);
913
+ if (sourceAdjacency !== undefined) {
914
+ sourceAdjacency.push(edgeIndex);
915
+ }
916
+ const targetReverseAdjacency = mutable.reverseAdjacency.get(target);
917
+ if (targetReverseAdjacency !== undefined) {
918
+ targetReverseAdjacency.push(edgeIndex);
919
+ }
920
+ // For undirected graphs, add reverse connections
921
+ if (mutable.type === "undirected") {
922
+ const targetAdjacency = mutable.adjacency.get(target);
923
+ if (targetAdjacency !== undefined) {
924
+ targetAdjacency.push(edgeIndex);
925
+ }
926
+ const sourceReverseAdjacency = mutable.reverseAdjacency.get(source);
927
+ if (sourceReverseAdjacency !== undefined) {
928
+ sourceReverseAdjacency.push(edgeIndex);
929
+ }
930
+ }
931
+ // Update allocators
932
+ mutable.nextEdgeIndex = mutable.nextEdgeIndex + 1;
933
+ // Only invalidate cycle flag if the graph was acyclic
934
+ // Adding edges cannot remove cycles from cyclic graphs
935
+ invalidateCycleFlagOnAddition(mutable);
936
+ return edgeIndex;
937
+ };
938
+ /**
939
+ * Removes a node and all its incident edges from a mutable graph.
940
+ *
941
+ * @example
942
+ * ```ts
943
+ * import { Graph } from "effect"
944
+ *
945
+ * const result = Graph.mutate(Graph.directed<string, number>(), (mutable) => {
946
+ * const nodeA = Graph.addNode(mutable, "Node A")
947
+ * const nodeB = Graph.addNode(mutable, "Node B")
948
+ * Graph.addEdge(mutable, nodeA, nodeB, 42)
949
+ *
950
+ * // Remove nodeA and all edges connected to it
951
+ * Graph.removeNode(mutable, nodeA)
952
+ * })
953
+ * ```
954
+ *
955
+ * @since 3.18.0
956
+ * @category mutations
957
+ */
958
+ export const removeNode = (mutable, nodeIndex) => {
959
+ // Check if node exists
960
+ if (!mutable.nodes.has(nodeIndex)) {
961
+ return; // Node doesn't exist, nothing to remove
962
+ }
963
+ // Collect all incident edges for removal
964
+ const edgesToRemove = [];
965
+ // Get outgoing edges
966
+ const outgoingEdges = mutable.adjacency.get(nodeIndex);
967
+ if (outgoingEdges !== undefined) {
968
+ for (const edge of outgoingEdges) {
969
+ edgesToRemove.push(edge);
970
+ }
971
+ }
972
+ // Get incoming edges
973
+ const incomingEdges = mutable.reverseAdjacency.get(nodeIndex);
974
+ if (incomingEdges !== undefined) {
975
+ for (const edge of incomingEdges) {
976
+ edgesToRemove.push(edge);
977
+ }
978
+ }
979
+ // Remove all incident edges
980
+ for (const edgeIndex of edgesToRemove) {
981
+ removeEdgeInternal(mutable, edgeIndex);
982
+ }
983
+ // Remove the node itself
984
+ mutable.nodes.delete(nodeIndex);
985
+ mutable.adjacency.delete(nodeIndex);
986
+ mutable.reverseAdjacency.delete(nodeIndex);
987
+ // Only invalidate cycle flag if the graph wasn't already known to be acyclic
988
+ // Removing nodes cannot introduce cycles in an acyclic graph
989
+ invalidateCycleFlagOnRemoval(mutable);
990
+ };
991
+ /**
992
+ * Removes an edge from a mutable graph.
993
+ *
994
+ * @example
995
+ * ```ts
996
+ * import { Graph } from "effect"
997
+ *
998
+ * const result = Graph.mutate(Graph.directed<string, number>(), (mutable) => {
999
+ * const nodeA = Graph.addNode(mutable, "Node A")
1000
+ * const nodeB = Graph.addNode(mutable, "Node B")
1001
+ * const edge = Graph.addEdge(mutable, nodeA, nodeB, 42)
1002
+ *
1003
+ * // Remove the edge
1004
+ * Graph.removeEdge(mutable, edge)
1005
+ * })
1006
+ * ```
1007
+ *
1008
+ * @since 3.18.0
1009
+ * @category mutations
1010
+ */
1011
+ export const removeEdge = (mutable, edgeIndex) => {
1012
+ const wasRemoved = removeEdgeInternal(mutable, edgeIndex);
1013
+ // Only invalidate cycle flag if an edge was actually removed
1014
+ // and only if the graph wasn't already known to be acyclic
1015
+ if (wasRemoved) {
1016
+ invalidateCycleFlagOnRemoval(mutable);
1017
+ }
1018
+ };
1019
+ /** @internal */
1020
+ const removeEdgeInternal = (mutable, edgeIndex) => {
1021
+ // Get edge data
1022
+ const edge = mutable.edges.get(edgeIndex);
1023
+ if (edge === undefined) {
1024
+ return false; // Edge doesn't exist, no mutation occurred
1025
+ }
1026
+ const {
1027
+ source,
1028
+ target
1029
+ } = edge;
1030
+ // Remove from adjacency lists
1031
+ const sourceAdjacency = mutable.adjacency.get(source);
1032
+ if (sourceAdjacency !== undefined) {
1033
+ const index = sourceAdjacency.indexOf(edgeIndex);
1034
+ if (index !== -1) {
1035
+ sourceAdjacency.splice(index, 1);
1036
+ }
1037
+ }
1038
+ const targetReverseAdjacency = mutable.reverseAdjacency.get(target);
1039
+ if (targetReverseAdjacency !== undefined) {
1040
+ const index = targetReverseAdjacency.indexOf(edgeIndex);
1041
+ if (index !== -1) {
1042
+ targetReverseAdjacency.splice(index, 1);
1043
+ }
1044
+ }
1045
+ // For undirected graphs, remove reverse connections
1046
+ if (mutable.type === "undirected") {
1047
+ const targetAdjacency = mutable.adjacency.get(target);
1048
+ if (targetAdjacency !== undefined) {
1049
+ const index = targetAdjacency.indexOf(edgeIndex);
1050
+ if (index !== -1) {
1051
+ targetAdjacency.splice(index, 1);
1052
+ }
1053
+ }
1054
+ const sourceReverseAdjacency = mutable.reverseAdjacency.get(source);
1055
+ if (sourceReverseAdjacency !== undefined) {
1056
+ const index = sourceReverseAdjacency.indexOf(edgeIndex);
1057
+ if (index !== -1) {
1058
+ sourceReverseAdjacency.splice(index, 1);
1059
+ }
1060
+ }
1061
+ }
1062
+ // Remove edge data
1063
+ mutable.edges.delete(edgeIndex);
1064
+ return true; // Edge was successfully removed
1065
+ };
1066
+ // =============================================================================
1067
+ // Edge Query Operations
1068
+ // =============================================================================
1069
+ /**
1070
+ * Gets the edge data associated with an edge index, if it exists.
1071
+ *
1072
+ * @example
1073
+ * ```ts
1074
+ * import { Graph, Option } from "effect"
1075
+ *
1076
+ * const graph = Graph.mutate(Graph.directed<string, number>(), (mutable) => {
1077
+ * const nodeA = Graph.addNode(mutable, "Node A")
1078
+ * const nodeB = Graph.addNode(mutable, "Node B")
1079
+ * Graph.addEdge(mutable, nodeA, nodeB, 42)
1080
+ * })
1081
+ *
1082
+ * const edgeIndex = 0
1083
+ * const edgeData = Graph.getEdge(graph, edgeIndex)
1084
+ *
1085
+ * if (Option.isSome(edgeData)) {
1086
+ * console.log(edgeData.value.data) // 42
1087
+ * console.log(edgeData.value.source) // NodeIndex(0)
1088
+ * console.log(edgeData.value.target) // NodeIndex(1)
1089
+ * }
1090
+ * ```
1091
+ *
1092
+ * @since 3.18.0
1093
+ * @category getters
1094
+ */
1095
+ export const getEdge = (graph, edgeIndex) => graph.edges.has(edgeIndex) ? Option.some(graph.edges.get(edgeIndex)) : Option.none();
1096
+ /**
1097
+ * Checks if an edge exists between two nodes in the graph.
1098
+ *
1099
+ * @example
1100
+ * ```ts
1101
+ * import { Graph } from "effect"
1102
+ *
1103
+ * const graph = Graph.mutate(Graph.directed<string, number>(), (mutable) => {
1104
+ * const nodeA = Graph.addNode(mutable, "Node A")
1105
+ * const nodeB = Graph.addNode(mutable, "Node B")
1106
+ * const nodeC = Graph.addNode(mutable, "Node C")
1107
+ * Graph.addEdge(mutable, nodeA, nodeB, 42)
1108
+ * })
1109
+ *
1110
+ * const nodeA = 0
1111
+ * const nodeB = 1
1112
+ * const nodeC = 2
1113
+ *
1114
+ * const hasAB = Graph.hasEdge(graph, nodeA, nodeB)
1115
+ * console.log(hasAB) // true
1116
+ *
1117
+ * const hasAC = Graph.hasEdge(graph, nodeA, nodeC)
1118
+ * console.log(hasAC) // false
1119
+ * ```
1120
+ *
1121
+ * @since 3.18.0
1122
+ * @category getters
1123
+ */
1124
+ export const hasEdge = (graph, source, target) => {
1125
+ const adjacencyList = graph.adjacency.get(source);
1126
+ if (adjacencyList === undefined) {
1127
+ return false;
1128
+ }
1129
+ // Check if any edge in the adjacency list connects to the target
1130
+ for (const edgeIndex of adjacencyList) {
1131
+ const edge = graph.edges.get(edgeIndex);
1132
+ if (edge !== undefined && edge.target === target) {
1133
+ return true;
1134
+ }
1135
+ }
1136
+ return false;
1137
+ };
1138
+ /**
1139
+ * Returns the number of edges in the graph.
1140
+ *
1141
+ * @example
1142
+ * ```ts
1143
+ * import { Graph } from "effect"
1144
+ *
1145
+ * const emptyGraph = Graph.directed<string, number>()
1146
+ * console.log(Graph.edgeCount(emptyGraph)) // 0
1147
+ *
1148
+ * const graphWithEdges = Graph.mutate(emptyGraph, (mutable) => {
1149
+ * const nodeA = Graph.addNode(mutable, "Node A")
1150
+ * const nodeB = Graph.addNode(mutable, "Node B")
1151
+ * const nodeC = Graph.addNode(mutable, "Node C")
1152
+ * Graph.addEdge(mutable, nodeA, nodeB, 1)
1153
+ * Graph.addEdge(mutable, nodeB, nodeC, 2)
1154
+ * Graph.addEdge(mutable, nodeC, nodeA, 3)
1155
+ * })
1156
+ *
1157
+ * console.log(Graph.edgeCount(graphWithEdges)) // 3
1158
+ * ```
1159
+ *
1160
+ * @since 3.18.0
1161
+ * @category getters
1162
+ */
1163
+ export const edgeCount = graph => graph.edges.size;
1164
+ /**
1165
+ * Returns the neighboring nodes (targets of outgoing edges) for a given node.
1166
+ *
1167
+ * @example
1168
+ * ```ts
1169
+ * import { Graph } from "effect"
1170
+ *
1171
+ * const graph = Graph.mutate(Graph.directed<string, number>(), (mutable) => {
1172
+ * const nodeA = Graph.addNode(mutable, "Node A")
1173
+ * const nodeB = Graph.addNode(mutable, "Node B")
1174
+ * const nodeC = Graph.addNode(mutable, "Node C")
1175
+ * Graph.addEdge(mutable, nodeA, nodeB, 1)
1176
+ * Graph.addEdge(mutable, nodeA, nodeC, 2)
1177
+ * })
1178
+ *
1179
+ * const nodeA = 0
1180
+ * const nodeB = 1
1181
+ * const nodeC = 2
1182
+ *
1183
+ * const neighborsA = Graph.neighbors(graph, nodeA)
1184
+ * console.log(neighborsA) // [NodeIndex(1), NodeIndex(2)]
1185
+ *
1186
+ * const neighborsB = Graph.neighbors(graph, nodeB)
1187
+ * console.log(neighborsB) // []
1188
+ * ```
1189
+ *
1190
+ * @since 3.18.0
1191
+ * @category getters
1192
+ */
1193
+ export const neighbors = (graph, nodeIndex) => {
1194
+ // For undirected graphs, use the specialized helper that returns the other endpoint
1195
+ if (graph.type === "undirected") {
1196
+ return getUndirectedNeighbors(graph, nodeIndex);
1197
+ }
1198
+ const adjacencyList = graph.adjacency.get(nodeIndex);
1199
+ if (adjacencyList === undefined) {
1200
+ return [];
1201
+ }
1202
+ const result = [];
1203
+ for (const edgeIndex of adjacencyList) {
1204
+ const edge = graph.edges.get(edgeIndex);
1205
+ if (edge !== undefined) {
1206
+ result.push(edge.target);
1207
+ }
1208
+ }
1209
+ return result;
1210
+ };
1211
+ /**
1212
+ * Get neighbors of a node in a specific direction for bidirectional traversal.
1213
+ *
1214
+ * @example
1215
+ * ```ts
1216
+ * import { Graph } from "effect"
1217
+ *
1218
+ * const graph = Graph.directed<string, string>((mutable) => {
1219
+ * const a = Graph.addNode(mutable, "A")
1220
+ * const b = Graph.addNode(mutable, "B")
1221
+ * Graph.addEdge(mutable, a, b, "A->B")
1222
+ * })
1223
+ *
1224
+ * const nodeA = 0
1225
+ * const nodeB = 1
1226
+ *
1227
+ * // Get outgoing neighbors (nodes that nodeA points to)
1228
+ * const outgoing = Graph.neighborsDirected(graph, nodeA, "outgoing")
1229
+ *
1230
+ * // Get incoming neighbors (nodes that point to nodeB)
1231
+ * const incoming = Graph.neighborsDirected(graph, nodeB, "incoming")
1232
+ * ```
1233
+ *
1234
+ * @since 3.18.0
1235
+ * @category queries
1236
+ */
1237
+ export const neighborsDirected = (graph, nodeIndex, direction) => {
1238
+ const adjacencyMap = direction === "incoming" ? graph.reverseAdjacency : graph.adjacency;
1239
+ const adjacencyList = adjacencyMap.get(nodeIndex);
1240
+ if (adjacencyList === undefined) {
1241
+ return [];
1242
+ }
1243
+ const result = [];
1244
+ for (const edgeIndex of adjacencyList) {
1245
+ const edge = graph.edges.get(edgeIndex);
1246
+ if (edge !== undefined) {
1247
+ // For incoming direction, we want the source node instead of target
1248
+ const neighborNode = direction === "incoming" ? edge.source : edge.target;
1249
+ result.push(neighborNode);
1250
+ }
1251
+ }
1252
+ return result;
1253
+ };
1254
+ /**
1255
+ * Exports a graph to GraphViz DOT format for visualization.
1256
+ *
1257
+ * @example
1258
+ * ```ts
1259
+ * import { Graph } from "effect"
1260
+ *
1261
+ * const graph = Graph.mutate(Graph.directed<string, number>(), (mutable) => {
1262
+ * const nodeA = Graph.addNode(mutable, "Node A")
1263
+ * const nodeB = Graph.addNode(mutable, "Node B")
1264
+ * const nodeC = Graph.addNode(mutable, "Node C")
1265
+ * Graph.addEdge(mutable, nodeA, nodeB, 1)
1266
+ * Graph.addEdge(mutable, nodeB, nodeC, 2)
1267
+ * Graph.addEdge(mutable, nodeC, nodeA, 3)
1268
+ * })
1269
+ *
1270
+ * const dot = Graph.toGraphViz(graph)
1271
+ * console.log(dot)
1272
+ * // digraph G {
1273
+ * // "0" [label="Node A"];
1274
+ * // "1" [label="Node B"];
1275
+ * // "2" [label="Node C"];
1276
+ * // "0" -> "1" [label="1"];
1277
+ * // "1" -> "2" [label="2"];
1278
+ * // "2" -> "0" [label="3"];
1279
+ * // }
1280
+ * ```
1281
+ *
1282
+ * @since 3.18.0
1283
+ * @category utils
1284
+ */
1285
+ export const toGraphViz = (graph, options) => {
1286
+ const {
1287
+ edgeLabel = data => String(data),
1288
+ graphName = "G",
1289
+ nodeLabel = data => String(data)
1290
+ } = options ?? {};
1291
+ const isDirected = graph.type === "directed";
1292
+ const graphType = isDirected ? "digraph" : "graph";
1293
+ const edgeOperator = isDirected ? "->" : "--";
1294
+ const lines = [];
1295
+ lines.push(`${graphType} ${graphName} {`);
1296
+ // Add nodes
1297
+ for (const [nodeIndex, nodeData] of graph.nodes) {
1298
+ const label = nodeLabel(nodeData).replace(/"/g, "\\\"");
1299
+ lines.push(` "${nodeIndex}" [label="${label}"];`);
1300
+ }
1301
+ // Add edges
1302
+ for (const [, edgeData] of graph.edges) {
1303
+ const label = edgeLabel(edgeData.data).replace(/"/g, "\\\"");
1304
+ lines.push(` "${edgeData.source}" ${edgeOperator} "${edgeData.target}" [label="${label}"];`);
1305
+ }
1306
+ lines.push("}");
1307
+ return lines.join("\n");
1308
+ };
1309
+ /** @internal */
1310
+ const escapeMermaidLabel = label => {
1311
+ // Escape special characters for Mermaid using HTML entity codes
1312
+ // According to: https://mermaid.js.org/syntax/flowchart.html#special-characters-that-break-syntax
1313
+ return label.replace(/#/g, "#35;").replace(/"/g, "#quot;").replace(/</g, "#lt;").replace(/>/g, "#gt;").replace(/&/g, "#amp;").replace(/\[/g, "#91;").replace(/\]/g, "#93;").replace(/\{/g, "#123;").replace(/\}/g, "#125;").replace(/\(/g, "#40;").replace(/\)/g, "#41;").replace(/\|/g, "#124;").replace(/\\/g, "#92;").replace(/\n/g, "<br/>");
1314
+ };
1315
+ /** @internal */
1316
+ const formatMermaidNode = (nodeId, label, shape) => {
1317
+ switch (shape) {
1318
+ case "rectangle":
1319
+ return `${nodeId}["${label}"]`;
1320
+ case "rounded":
1321
+ return `${nodeId}("${label}")`;
1322
+ case "circle":
1323
+ return `${nodeId}(("${label}"))`;
1324
+ case "diamond":
1325
+ return `${nodeId}{"${label}"}`;
1326
+ case "hexagon":
1327
+ return `${nodeId}{{"${label}"}}`;
1328
+ case "stadium":
1329
+ return `${nodeId}(["${label}"])`;
1330
+ case "subroutine":
1331
+ return `${nodeId}[["${label}"]]`;
1332
+ case "cylindrical":
1333
+ return `${nodeId}[("${label}")]`;
1334
+ }
1335
+ };
1336
+ /**
1337
+ * Exports a graph to Mermaid diagram format for visualization.
1338
+ *
1339
+ * @example
1340
+ * ```ts
1341
+ * import { Graph } from "effect"
1342
+ *
1343
+ * const graph = Graph.mutate(Graph.directed<string, number>(), (mutable) => {
1344
+ * const app = Graph.addNode(mutable, "App")
1345
+ * const db = Graph.addNode(mutable, "Database")
1346
+ * const cache = Graph.addNode(mutable, "Cache")
1347
+ * Graph.addEdge(mutable, app, db, 1)
1348
+ * Graph.addEdge(mutable, app, cache, 2)
1349
+ * })
1350
+ *
1351
+ * const mermaid = Graph.toMermaid(graph)
1352
+ * console.log(mermaid)
1353
+ * // flowchart TD
1354
+ * // 0["App"]
1355
+ * // 1["Database"]
1356
+ * // 2["Cache"]
1357
+ * // 0 -->|"1"| 1
1358
+ * // 0 -->|"2"| 2
1359
+ * ```
1360
+ *
1361
+ * @since 3.18.0
1362
+ * @category utils
1363
+ */
1364
+ export const toMermaid = (graph, options) => {
1365
+ // Extract and validate options with defaults
1366
+ const {
1367
+ diagramType,
1368
+ direction = "TD",
1369
+ edgeLabel = data => String(data),
1370
+ nodeLabel = data => String(data),
1371
+ nodeShape = () => "rectangle"
1372
+ } = options ?? {};
1373
+ // Auto-detect diagram type if not specified
1374
+ const finalDiagramType = diagramType ?? (graph.type === "directed" ? "flowchart" : "graph");
1375
+ // Generate diagram header
1376
+ const lines = [];
1377
+ lines.push(`${finalDiagramType} ${direction}`);
1378
+ // Add nodes
1379
+ for (const [nodeIndex, nodeData] of graph.nodes) {
1380
+ const nodeId = String(nodeIndex);
1381
+ const label = escapeMermaidLabel(nodeLabel(nodeData));
1382
+ const shape = nodeShape(nodeData);
1383
+ const formattedNode = formatMermaidNode(nodeId, label, shape);
1384
+ lines.push(` ${formattedNode}`);
1385
+ }
1386
+ // Add edges
1387
+ const edgeOperator = finalDiagramType === "flowchart" ? "-->" : "---";
1388
+ for (const [, edgeData] of graph.edges) {
1389
+ const sourceId = String(edgeData.source);
1390
+ const targetId = String(edgeData.target);
1391
+ const label = escapeMermaidLabel(edgeLabel(edgeData.data));
1392
+ if (label) {
1393
+ lines.push(` ${sourceId} ${edgeOperator}|"${label}"| ${targetId}`);
1394
+ } else {
1395
+ lines.push(` ${sourceId} ${edgeOperator} ${targetId}`);
1396
+ }
1397
+ }
1398
+ return lines.join("\n");
1399
+ };
1400
+ // =============================================================================
1401
+ // =============================================================================
1402
+ // Graph Structure Analysis Algorithms (Phase 5A)
1403
+ // =============================================================================
1404
+ /**
1405
+ * Checks if the graph is acyclic (contains no cycles).
1406
+ *
1407
+ * Uses depth-first search to detect back edges, which indicate cycles.
1408
+ * For directed graphs, any back edge creates a cycle. For undirected graphs,
1409
+ * a back edge that doesn't go to the immediate parent creates a cycle.
1410
+ *
1411
+ * @example
1412
+ * ```ts
1413
+ * import { Graph } from "effect"
1414
+ *
1415
+ * // Acyclic directed graph (DAG)
1416
+ * const dag = Graph.directed<string, string>((mutable) => {
1417
+ * const a = Graph.addNode(mutable, "A")
1418
+ * const b = Graph.addNode(mutable, "B")
1419
+ * const c = Graph.addNode(mutable, "C")
1420
+ * Graph.addEdge(mutable, a, b, "A->B")
1421
+ * Graph.addEdge(mutable, b, c, "B->C")
1422
+ * })
1423
+ * console.log(Graph.isAcyclic(dag)) // true
1424
+ *
1425
+ * // Cyclic directed graph
1426
+ * const cyclic = Graph.directed<string, string>((mutable) => {
1427
+ * const a = Graph.addNode(mutable, "A")
1428
+ * const b = Graph.addNode(mutable, "B")
1429
+ * Graph.addEdge(mutable, a, b, "A->B")
1430
+ * Graph.addEdge(mutable, b, a, "B->A") // Creates cycle
1431
+ * })
1432
+ * console.log(Graph.isAcyclic(cyclic)) // false
1433
+ * ```
1434
+ *
1435
+ * @since 3.18.0
1436
+ * @category algorithms
1437
+ */
1438
+ export const isAcyclic = graph => {
1439
+ // Use existing cycle flag if available
1440
+ if (Option.isSome(graph.isAcyclic)) {
1441
+ return graph.isAcyclic.value;
1442
+ }
1443
+ // Stack-safe DFS cycle detection using iterative approach
1444
+ const visited = new Set();
1445
+ const recursionStack = new Set();
1446
+ // Get all nodes to handle disconnected components
1447
+ for (const startNode of graph.nodes.keys()) {
1448
+ if (visited.has(startNode)) {
1449
+ continue; // Already processed this component
1450
+ }
1451
+ // Iterative DFS with explicit stack
1452
+ const stack = [[startNode, [], 0, true]];
1453
+ while (stack.length > 0) {
1454
+ const [node, neighbors, neighborIndex, isFirstVisit] = stack[stack.length - 1];
1455
+ // First visit to this node
1456
+ if (isFirstVisit) {
1457
+ if (recursionStack.has(node)) {
1458
+ // Back edge found - cycle detected
1459
+ graph.isAcyclic = Option.some(false);
1460
+ return false;
1461
+ }
1462
+ if (visited.has(node)) {
1463
+ stack.pop();
1464
+ continue;
1465
+ }
1466
+ visited.add(node);
1467
+ recursionStack.add(node);
1468
+ // Get neighbors for this node
1469
+ const nodeNeighbors = Array.from(neighborsDirected(graph, node, "outgoing"));
1470
+ stack[stack.length - 1] = [node, nodeNeighbors, 0, false];
1471
+ continue;
1472
+ }
1473
+ // Process next neighbor
1474
+ if (neighborIndex < neighbors.length) {
1475
+ const neighbor = neighbors[neighborIndex];
1476
+ stack[stack.length - 1] = [node, neighbors, neighborIndex + 1, false];
1477
+ if (recursionStack.has(neighbor)) {
1478
+ // Back edge found - cycle detected
1479
+ graph.isAcyclic = Option.some(false);
1480
+ return false;
1481
+ }
1482
+ if (!visited.has(neighbor)) {
1483
+ stack.push([neighbor, [], 0, true]);
1484
+ }
1485
+ } else {
1486
+ // Done with this node - backtrack
1487
+ recursionStack.delete(node);
1488
+ stack.pop();
1489
+ }
1490
+ }
1491
+ }
1492
+ // Cache the result
1493
+ graph.isAcyclic = Option.some(true);
1494
+ return true;
1495
+ };
1496
+ /**
1497
+ * Checks if an undirected graph is bipartite.
1498
+ *
1499
+ * A bipartite graph is one whose vertices can be divided into two disjoint sets
1500
+ * such that no two vertices within the same set are adjacent. Uses BFS coloring
1501
+ * to determine bipartiteness.
1502
+ *
1503
+ * @example
1504
+ * ```ts
1505
+ * import { Graph } from "effect"
1506
+ *
1507
+ * // Bipartite graph (alternating coloring possible)
1508
+ * const bipartite = Graph.undirected<string, string>((mutable) => {
1509
+ * const a = Graph.addNode(mutable, "A")
1510
+ * const b = Graph.addNode(mutable, "B")
1511
+ * const c = Graph.addNode(mutable, "C")
1512
+ * const d = Graph.addNode(mutable, "D")
1513
+ * Graph.addEdge(mutable, a, b, "edge") // Set 1: {A, C}, Set 2: {B, D}
1514
+ * Graph.addEdge(mutable, b, c, "edge")
1515
+ * Graph.addEdge(mutable, c, d, "edge")
1516
+ * })
1517
+ * console.log(Graph.isBipartite(bipartite)) // true
1518
+ *
1519
+ * // Non-bipartite graph (odd cycle)
1520
+ * const triangle = Graph.undirected<string, string>((mutable) => {
1521
+ * const a = Graph.addNode(mutable, "A")
1522
+ * const b = Graph.addNode(mutable, "B")
1523
+ * const c = Graph.addNode(mutable, "C")
1524
+ * Graph.addEdge(mutable, a, b, "edge")
1525
+ * Graph.addEdge(mutable, b, c, "edge")
1526
+ * Graph.addEdge(mutable, c, a, "edge") // Triangle (3-cycle)
1527
+ * })
1528
+ * console.log(Graph.isBipartite(triangle)) // false
1529
+ * ```
1530
+ *
1531
+ * @since 3.18.0
1532
+ * @category algorithms
1533
+ */
1534
+ export const isBipartite = graph => {
1535
+ const coloring = new Map();
1536
+ const discovered = new Set();
1537
+ let isBipartiteGraph = true;
1538
+ // Get all nodes to handle disconnected components
1539
+ for (const startNode of graph.nodes.keys()) {
1540
+ if (!discovered.has(startNode)) {
1541
+ // Start BFS coloring from this component
1542
+ const queue = [startNode];
1543
+ coloring.set(startNode, 0); // Color start node with 0
1544
+ discovered.add(startNode);
1545
+ while (queue.length > 0 && isBipartiteGraph) {
1546
+ const current = queue.shift();
1547
+ const currentColor = coloring.get(current);
1548
+ const neighborColor = currentColor === 0 ? 1 : 0;
1549
+ // Get all neighbors for undirected graph
1550
+ const nodeNeighbors = getUndirectedNeighbors(graph, current);
1551
+ for (const neighbor of nodeNeighbors) {
1552
+ if (!discovered.has(neighbor)) {
1553
+ // Color unvisited neighbor with opposite color
1554
+ coloring.set(neighbor, neighborColor);
1555
+ discovered.add(neighbor);
1556
+ queue.push(neighbor);
1557
+ } else {
1558
+ // Check if neighbor has the same color (conflict)
1559
+ if (coloring.get(neighbor) === currentColor) {
1560
+ isBipartiteGraph = false;
1561
+ break;
1562
+ }
1563
+ }
1564
+ }
1565
+ }
1566
+ // Early exit if not bipartite
1567
+ if (!isBipartiteGraph) {
1568
+ break;
1569
+ }
1570
+ }
1571
+ }
1572
+ return isBipartiteGraph;
1573
+ };
1574
+ /**
1575
+ * Get neighbors for undirected graphs by checking both adjacency and reverse adjacency.
1576
+ * For undirected graphs, we need to find the other endpoint of each edge incident to the node.
1577
+ */
1578
+ const getUndirectedNeighbors = (graph, nodeIndex) => {
1579
+ const neighbors = new Set();
1580
+ // Check edges where this node is the source
1581
+ const adjacencyList = graph.adjacency.get(nodeIndex);
1582
+ if (adjacencyList !== undefined) {
1583
+ for (const edgeIndex of adjacencyList) {
1584
+ const edge = graph.edges.get(edgeIndex);
1585
+ if (edge !== undefined) {
1586
+ // For undirected graphs, the neighbor is the other endpoint
1587
+ const otherNode = edge.source === nodeIndex ? edge.target : edge.source;
1588
+ neighbors.add(otherNode);
1589
+ }
1590
+ }
1591
+ }
1592
+ return Array.from(neighbors);
1593
+ };
1594
+ /**
1595
+ * Find connected components in an undirected graph.
1596
+ * Each component is represented as an array of node indices.
1597
+ *
1598
+ * @example
1599
+ * ```ts
1600
+ * import { Graph } from "effect"
1601
+ *
1602
+ * const graph = Graph.undirected<string, string>((mutable) => {
1603
+ * const a = Graph.addNode(mutable, "A")
1604
+ * const b = Graph.addNode(mutable, "B")
1605
+ * const c = Graph.addNode(mutable, "C")
1606
+ * const d = Graph.addNode(mutable, "D")
1607
+ * Graph.addEdge(mutable, a, b, "edge") // Component 1: A-B
1608
+ * Graph.addEdge(mutable, c, d, "edge") // Component 2: C-D
1609
+ * })
1610
+ *
1611
+ * const components = Graph.connectedComponents(graph)
1612
+ * console.log(components) // [[0, 1], [2, 3]]
1613
+ * ```
1614
+ *
1615
+ * @since 3.18.0
1616
+ * @category algorithms
1617
+ */
1618
+ export const connectedComponents = graph => {
1619
+ const visited = new Set();
1620
+ const components = [];
1621
+ for (const startNode of graph.nodes.keys()) {
1622
+ if (!visited.has(startNode)) {
1623
+ // DFS to find all nodes in this component
1624
+ const component = [];
1625
+ const stack = [startNode];
1626
+ while (stack.length > 0) {
1627
+ const current = stack.pop();
1628
+ if (!visited.has(current)) {
1629
+ visited.add(current);
1630
+ component.push(current);
1631
+ // Add all unvisited neighbors to stack
1632
+ const nodeNeighbors = getUndirectedNeighbors(graph, current);
1633
+ for (const neighbor of nodeNeighbors) {
1634
+ if (!visited.has(neighbor)) {
1635
+ stack.push(neighbor);
1636
+ }
1637
+ }
1638
+ }
1639
+ }
1640
+ components.push(component);
1641
+ }
1642
+ }
1643
+ return components;
1644
+ };
1645
+ /**
1646
+ * Find strongly connected components in a directed graph using Kosaraju's algorithm.
1647
+ * Each SCC is represented as an array of node indices.
1648
+ *
1649
+ * @example
1650
+ * ```ts
1651
+ * import { Graph } from "effect"
1652
+ *
1653
+ * const graph = Graph.directed<string, string>((mutable) => {
1654
+ * const a = Graph.addNode(mutable, "A")
1655
+ * const b = Graph.addNode(mutable, "B")
1656
+ * const c = Graph.addNode(mutable, "C")
1657
+ * Graph.addEdge(mutable, a, b, "A->B")
1658
+ * Graph.addEdge(mutable, b, c, "B->C")
1659
+ * Graph.addEdge(mutable, c, a, "C->A") // Creates SCC: A-B-C
1660
+ * })
1661
+ *
1662
+ * const sccs = Graph.stronglyConnectedComponents(graph)
1663
+ * console.log(sccs) // [[0, 1, 2]]
1664
+ * ```
1665
+ *
1666
+ * @since 3.18.0
1667
+ * @category algorithms
1668
+ */
1669
+ export const stronglyConnectedComponents = graph => {
1670
+ const visited = new Set();
1671
+ const finishOrder = [];
1672
+ for (const startNode of graph.nodes.keys()) {
1673
+ if (visited.has(startNode)) {
1674
+ continue;
1675
+ }
1676
+ const stack = [[startNode, [], 0, true]];
1677
+ while (stack.length > 0) {
1678
+ const [node, nodeNeighbors, neighborIndex, isFirstVisit] = stack[stack.length - 1];
1679
+ if (isFirstVisit) {
1680
+ if (visited.has(node)) {
1681
+ stack.pop();
1682
+ continue;
1683
+ }
1684
+ visited.add(node);
1685
+ const nodeNeighborsList = neighbors(graph, node);
1686
+ stack[stack.length - 1] = [node, nodeNeighborsList, 0, false];
1687
+ continue;
1688
+ }
1689
+ // Process next neighbor
1690
+ if (neighborIndex < nodeNeighbors.length) {
1691
+ const neighbor = nodeNeighbors[neighborIndex];
1692
+ stack[stack.length - 1] = [node, nodeNeighbors, neighborIndex + 1, false];
1693
+ if (!visited.has(neighbor)) {
1694
+ stack.push([neighbor, [], 0, true]);
1695
+ }
1696
+ } else {
1697
+ // Done with this node - add to finish order (post-order)
1698
+ finishOrder.push(node);
1699
+ stack.pop();
1700
+ }
1701
+ }
1702
+ }
1703
+ // Step 2: Stack-safe DFS on transpose graph in reverse finish order
1704
+ visited.clear();
1705
+ const sccs = [];
1706
+ for (let i = finishOrder.length - 1; i >= 0; i--) {
1707
+ const startNode = finishOrder[i];
1708
+ if (visited.has(startNode)) {
1709
+ continue;
1710
+ }
1711
+ const scc = [];
1712
+ const stack = [startNode];
1713
+ while (stack.length > 0) {
1714
+ const node = stack.pop();
1715
+ if (visited.has(node)) {
1716
+ continue;
1717
+ }
1718
+ visited.add(node);
1719
+ scc.push(node);
1720
+ // Use reverse adjacency (transpose graph)
1721
+ const reverseAdjacency = graph.reverseAdjacency.get(node);
1722
+ if (reverseAdjacency !== undefined) {
1723
+ for (const edgeIndex of reverseAdjacency) {
1724
+ const edge = graph.edges.get(edgeIndex);
1725
+ if (edge !== undefined) {
1726
+ const predecessor = edge.source;
1727
+ if (!visited.has(predecessor)) {
1728
+ stack.push(predecessor);
1729
+ }
1730
+ }
1731
+ }
1732
+ }
1733
+ }
1734
+ sccs.push(scc);
1735
+ }
1736
+ return sccs;
1737
+ };
1738
+ /**
1739
+ * Find the shortest path between two nodes using Dijkstra's algorithm.
1740
+ *
1741
+ * Dijkstra's algorithm works with non-negative edge weights and finds the shortest
1742
+ * path from a source node to a target node in O((V + E) log V) time complexity.
1743
+ *
1744
+ * @example
1745
+ * ```ts
1746
+ * import { Graph, Option } from "effect"
1747
+ *
1748
+ * const graph = Graph.directed<string, number>((mutable) => {
1749
+ * const a = Graph.addNode(mutable, "A")
1750
+ * const b = Graph.addNode(mutable, "B")
1751
+ * const c = Graph.addNode(mutable, "C")
1752
+ * Graph.addEdge(mutable, a, b, 5)
1753
+ * Graph.addEdge(mutable, a, c, 10)
1754
+ * Graph.addEdge(mutable, b, c, 2)
1755
+ * })
1756
+ *
1757
+ * const result = Graph.dijkstra(graph, { source: 0, target: 2, cost: (edgeData) => edgeData })
1758
+ * if (Option.isSome(result)) {
1759
+ * console.log(result.value.path) // [0, 1, 2] - shortest path A->B->C
1760
+ * console.log(result.value.distance) // 7 - total distance
1761
+ * }
1762
+ * ```
1763
+ *
1764
+ * @since 3.18.0
1765
+ * @category algorithms
1766
+ */
1767
+ export const dijkstra = (graph, config) => {
1768
+ const {
1769
+ cost,
1770
+ source,
1771
+ target
1772
+ } = config;
1773
+ // Validate that source and target nodes exist
1774
+ if (!graph.nodes.has(source)) {
1775
+ throw missingNode(source);
1776
+ }
1777
+ if (!graph.nodes.has(target)) {
1778
+ throw missingNode(target);
1779
+ }
1780
+ // Early return if source equals target
1781
+ if (source === target) {
1782
+ return Option.some({
1783
+ path: [source],
1784
+ distance: 0,
1785
+ costs: []
1786
+ });
1787
+ }
1788
+ // Distance tracking and priority queue simulation
1789
+ const distances = new Map();
1790
+ const previous = new Map();
1791
+ const visited = new Set();
1792
+ // Initialize distances
1793
+ // Iterate directly over node keys
1794
+ for (const node of graph.nodes.keys()) {
1795
+ distances.set(node, node === source ? 0 : Infinity);
1796
+ previous.set(node, null);
1797
+ }
1798
+ // Simple priority queue using array (can be optimized with proper heap)
1799
+ const priorityQueue = [{
1800
+ node: source,
1801
+ distance: 0
1802
+ }];
1803
+ while (priorityQueue.length > 0) {
1804
+ // Find minimum distance node (priority queue extract-min)
1805
+ let minIndex = 0;
1806
+ for (let i = 1; i < priorityQueue.length; i++) {
1807
+ if (priorityQueue[i].distance < priorityQueue[minIndex].distance) {
1808
+ minIndex = i;
1809
+ }
1810
+ }
1811
+ const current = priorityQueue.splice(minIndex, 1)[0];
1812
+ const currentNode = current.node;
1813
+ // Skip if already visited (can happen with duplicate entries)
1814
+ if (visited.has(currentNode)) {
1815
+ continue;
1816
+ }
1817
+ visited.add(currentNode);
1818
+ // Early termination if we reached the target
1819
+ if (currentNode === target) {
1820
+ break;
1821
+ }
1822
+ // Get current distance
1823
+ const currentDistance = distances.get(currentNode);
1824
+ // Examine all outgoing edges
1825
+ const adjacencyList = graph.adjacency.get(currentNode);
1826
+ if (adjacencyList !== undefined) {
1827
+ for (const edgeIndex of adjacencyList) {
1828
+ const edge = graph.edges.get(edgeIndex);
1829
+ if (edge !== undefined) {
1830
+ const neighbor = edge.target;
1831
+ const weight = cost(edge.data);
1832
+ // Validate non-negative weights
1833
+ if (weight < 0) {
1834
+ throw new Error(`Dijkstra's algorithm requires non-negative edge weights, found ${weight}`);
1835
+ }
1836
+ const newDistance = currentDistance + weight;
1837
+ const neighborDistance = distances.get(neighbor);
1838
+ // Relaxation step
1839
+ if (newDistance < neighborDistance) {
1840
+ distances.set(neighbor, newDistance);
1841
+ previous.set(neighbor, {
1842
+ node: currentNode,
1843
+ edgeData: edge.data
1844
+ });
1845
+ // Add to priority queue if not visited
1846
+ if (!visited.has(neighbor)) {
1847
+ priorityQueue.push({
1848
+ node: neighbor,
1849
+ distance: newDistance
1850
+ });
1851
+ }
1852
+ }
1853
+ }
1854
+ }
1855
+ }
1856
+ }
1857
+ // Check if target is reachable
1858
+ const targetDistance = distances.get(target);
1859
+ if (targetDistance === Infinity) {
1860
+ return Option.none(); // No path exists
1861
+ }
1862
+ // Reconstruct path
1863
+ const path = [];
1864
+ const costs = [];
1865
+ let currentNode = target;
1866
+ while (currentNode !== null) {
1867
+ path.unshift(currentNode);
1868
+ const prev = previous.get(currentNode);
1869
+ if (prev !== null) {
1870
+ costs.unshift(prev.edgeData);
1871
+ currentNode = prev.node;
1872
+ } else {
1873
+ currentNode = null;
1874
+ }
1875
+ }
1876
+ return Option.some({
1877
+ path,
1878
+ distance: targetDistance,
1879
+ costs
1880
+ });
1881
+ };
1882
+ /**
1883
+ * Find shortest paths between all pairs of nodes using Floyd-Warshall algorithm.
1884
+ *
1885
+ * Floyd-Warshall algorithm computes shortest paths between all pairs of nodes in O(V³) time.
1886
+ * It can handle negative edge weights and detect negative cycles.
1887
+ *
1888
+ * @example
1889
+ * ```ts
1890
+ * import { Graph } from "effect"
1891
+ *
1892
+ * const graph = Graph.directed<string, number>((mutable) => {
1893
+ * const a = Graph.addNode(mutable, "A")
1894
+ * const b = Graph.addNode(mutable, "B")
1895
+ * const c = Graph.addNode(mutable, "C")
1896
+ * Graph.addEdge(mutable, a, b, 3)
1897
+ * Graph.addEdge(mutable, b, c, 2)
1898
+ * Graph.addEdge(mutable, a, c, 7)
1899
+ * })
1900
+ *
1901
+ * const result = Graph.floydWarshall(graph, (edgeData) => edgeData)
1902
+ * const distanceAToC = result.distances.get(0)?.get(2) // 5 (A->B->C)
1903
+ * const pathAToC = result.paths.get(0)?.get(2) // [0, 1, 2]
1904
+ * ```
1905
+ *
1906
+ * @since 3.18.0
1907
+ * @category algorithms
1908
+ */
1909
+ export const floydWarshall = (graph, cost) => {
1910
+ // Get all nodes for Floyd-Warshall algorithm (needs array for nested iteration)
1911
+ const allNodes = Array.from(graph.nodes.keys());
1912
+ // Initialize distance matrix
1913
+ const dist = new Map();
1914
+ const next = new Map();
1915
+ const edgeMatrix = new Map();
1916
+ // Initialize with infinity for all pairs
1917
+ for (const i of allNodes) {
1918
+ dist.set(i, new Map());
1919
+ next.set(i, new Map());
1920
+ edgeMatrix.set(i, new Map());
1921
+ for (const j of allNodes) {
1922
+ dist.get(i).set(j, i === j ? 0 : Infinity);
1923
+ next.get(i).set(j, null);
1924
+ edgeMatrix.get(i).set(j, null);
1925
+ }
1926
+ }
1927
+ // Set edge weights
1928
+ for (const [, edgeData] of graph.edges) {
1929
+ const weight = cost(edgeData.data);
1930
+ const i = edgeData.source;
1931
+ const j = edgeData.target;
1932
+ // Use minimum weight if multiple edges exist
1933
+ const currentWeight = dist.get(i).get(j);
1934
+ if (weight < currentWeight) {
1935
+ dist.get(i).set(j, weight);
1936
+ next.get(i).set(j, j);
1937
+ edgeMatrix.get(i).set(j, edgeData.data);
1938
+ }
1939
+ }
1940
+ // Floyd-Warshall main loop
1941
+ for (const k of allNodes) {
1942
+ for (const i of allNodes) {
1943
+ for (const j of allNodes) {
1944
+ const distIK = dist.get(i).get(k);
1945
+ const distKJ = dist.get(k).get(j);
1946
+ const distIJ = dist.get(i).get(j);
1947
+ if (distIK !== Infinity && distKJ !== Infinity && distIK + distKJ < distIJ) {
1948
+ dist.get(i).set(j, distIK + distKJ);
1949
+ next.get(i).set(j, next.get(i).get(k));
1950
+ }
1951
+ }
1952
+ }
1953
+ }
1954
+ // Check for negative cycles
1955
+ for (const i of allNodes) {
1956
+ if (dist.get(i).get(i) < 0) {
1957
+ throw new Error(`Negative cycle detected involving node ${i}`);
1958
+ }
1959
+ }
1960
+ // Build result paths and edge weights
1961
+ const paths = new Map();
1962
+ const resultCosts = new Map();
1963
+ for (const i of allNodes) {
1964
+ paths.set(i, new Map());
1965
+ resultCosts.set(i, new Map());
1966
+ for (const j of allNodes) {
1967
+ if (i === j) {
1968
+ paths.get(i).set(j, [i]);
1969
+ resultCosts.get(i).set(j, []);
1970
+ } else if (dist.get(i).get(j) === Infinity) {
1971
+ paths.get(i).set(j, null);
1972
+ resultCosts.get(i).set(j, []);
1973
+ } else {
1974
+ // Reconstruct path iteratively
1975
+ const path = [];
1976
+ const weights = [];
1977
+ let current = i;
1978
+ path.push(current);
1979
+ while (current !== j) {
1980
+ const nextNode = next.get(current).get(j);
1981
+ if (nextNode === null) break;
1982
+ const edgeData = edgeMatrix.get(current).get(nextNode);
1983
+ if (edgeData !== null) {
1984
+ weights.push(edgeData);
1985
+ }
1986
+ current = nextNode;
1987
+ path.push(current);
1988
+ }
1989
+ paths.get(i).set(j, path);
1990
+ resultCosts.get(i).set(j, weights);
1991
+ }
1992
+ }
1993
+ }
1994
+ return {
1995
+ distances: dist,
1996
+ paths,
1997
+ costs: resultCosts
1998
+ };
1999
+ };
2000
+ /**
2001
+ * Find the shortest path between two nodes using A* pathfinding algorithm.
2002
+ *
2003
+ * A* is an extension of Dijkstra's algorithm that uses a heuristic function to guide
2004
+ * the search towards the target, potentially finding paths faster than Dijkstra's.
2005
+ * The heuristic must be admissible (never overestimate the actual cost).
2006
+ *
2007
+ * @example
2008
+ * ```ts
2009
+ * import { Graph, Option } from "effect"
2010
+ *
2011
+ * const graph = Graph.directed<{x: number, y: number}, number>((mutable) => {
2012
+ * const a = Graph.addNode(mutable, {x: 0, y: 0})
2013
+ * const b = Graph.addNode(mutable, {x: 1, y: 0})
2014
+ * const c = Graph.addNode(mutable, {x: 2, y: 0})
2015
+ * Graph.addEdge(mutable, a, b, 1)
2016
+ * Graph.addEdge(mutable, b, c, 1)
2017
+ * })
2018
+ *
2019
+ * // Manhattan distance heuristic
2020
+ * const heuristic = (nodeData: {x: number, y: number}, targetData: {x: number, y: number}) =>
2021
+ * Math.abs(nodeData.x - targetData.x) + Math.abs(nodeData.y - targetData.y)
2022
+ *
2023
+ * const result = Graph.astar(graph, { source: 0, target: 2, cost: (edgeData) => edgeData, heuristic })
2024
+ * if (Option.isSome(result)) {
2025
+ * console.log(result.value.path) // [0, 1, 2] - shortest path
2026
+ * console.log(result.value.distance) // 2 - total distance
2027
+ * }
2028
+ * ```
2029
+ *
2030
+ * @since 3.18.0
2031
+ * @category algorithms
2032
+ */
2033
+ export const astar = (graph, config) => {
2034
+ const {
2035
+ cost,
2036
+ heuristic,
2037
+ source,
2038
+ target
2039
+ } = config;
2040
+ // Validate that source and target nodes exist
2041
+ if (!graph.nodes.has(source)) {
2042
+ throw missingNode(source);
2043
+ }
2044
+ if (!graph.nodes.has(target)) {
2045
+ throw missingNode(target);
2046
+ }
2047
+ // Early return if source equals target
2048
+ if (source === target) {
2049
+ return Option.some({
2050
+ path: [source],
2051
+ distance: 0,
2052
+ costs: []
2053
+ });
2054
+ }
2055
+ // Get target node data for heuristic calculations
2056
+ const targetNodeData = graph.nodes.get(target);
2057
+ if (targetNodeData === undefined) {
2058
+ throw new Error(`Target node ${target} data not found`);
2059
+ }
2060
+ // Distance tracking (g-score) and f-score (g + h)
2061
+ const gScore = new Map();
2062
+ const fScore = new Map();
2063
+ const previous = new Map();
2064
+ const visited = new Set();
2065
+ // Initialize scores
2066
+ // Iterate directly over node keys
2067
+ for (const node of graph.nodes.keys()) {
2068
+ gScore.set(node, node === source ? 0 : Infinity);
2069
+ fScore.set(node, Infinity);
2070
+ previous.set(node, null);
2071
+ }
2072
+ // Calculate initial f-score for source
2073
+ const sourceNodeData = graph.nodes.get(source);
2074
+ if (sourceNodeData !== undefined) {
2075
+ const h = heuristic(sourceNodeData, targetNodeData);
2076
+ fScore.set(source, h);
2077
+ }
2078
+ // Priority queue using f-score (total estimated cost)
2079
+ const openSet = [{
2080
+ node: source,
2081
+ fScore: fScore.get(source)
2082
+ }];
2083
+ while (openSet.length > 0) {
2084
+ // Find node with lowest f-score
2085
+ let minIndex = 0;
2086
+ for (let i = 1; i < openSet.length; i++) {
2087
+ if (openSet[i].fScore < openSet[minIndex].fScore) {
2088
+ minIndex = i;
2089
+ }
2090
+ }
2091
+ const current = openSet.splice(minIndex, 1)[0];
2092
+ const currentNode = current.node;
2093
+ // Skip if already visited
2094
+ if (visited.has(currentNode)) {
2095
+ continue;
2096
+ }
2097
+ visited.add(currentNode);
2098
+ // Early termination if we reached the target
2099
+ if (currentNode === target) {
2100
+ break;
2101
+ }
2102
+ // Get current g-score
2103
+ const currentGScore = gScore.get(currentNode);
2104
+ // Examine all outgoing edges
2105
+ const adjacencyList = graph.adjacency.get(currentNode);
2106
+ if (adjacencyList !== undefined) {
2107
+ for (const edgeIndex of adjacencyList) {
2108
+ const edge = graph.edges.get(edgeIndex);
2109
+ if (edge !== undefined) {
2110
+ const neighbor = edge.target;
2111
+ const weight = cost(edge.data);
2112
+ // Validate non-negative weights
2113
+ if (weight < 0) {
2114
+ throw new Error(`A* algorithm requires non-negative edge weights, found ${weight}`);
2115
+ }
2116
+ const tentativeGScore = currentGScore + weight;
2117
+ const neighborGScore = gScore.get(neighbor);
2118
+ // If this path to neighbor is better than any previous one
2119
+ if (tentativeGScore < neighborGScore) {
2120
+ // Update g-score and previous
2121
+ gScore.set(neighbor, tentativeGScore);
2122
+ previous.set(neighbor, {
2123
+ node: currentNode,
2124
+ edgeData: edge.data
2125
+ });
2126
+ // Calculate f-score using heuristic
2127
+ const neighborNodeData = graph.nodes.get(neighbor);
2128
+ if (neighborNodeData !== undefined) {
2129
+ const h = heuristic(neighborNodeData, targetNodeData);
2130
+ const f = tentativeGScore + h;
2131
+ fScore.set(neighbor, f);
2132
+ // Add to open set if not visited
2133
+ if (!visited.has(neighbor)) {
2134
+ openSet.push({
2135
+ node: neighbor,
2136
+ fScore: f
2137
+ });
2138
+ }
2139
+ }
2140
+ }
2141
+ }
2142
+ }
2143
+ }
2144
+ }
2145
+ // Check if target is reachable
2146
+ const targetGScore = gScore.get(target);
2147
+ if (targetGScore === Infinity) {
2148
+ return Option.none(); // No path exists
2149
+ }
2150
+ // Reconstruct path
2151
+ const path = [];
2152
+ const costs = [];
2153
+ let currentNode = target;
2154
+ while (currentNode !== null) {
2155
+ path.unshift(currentNode);
2156
+ const prev = previous.get(currentNode);
2157
+ if (prev !== null) {
2158
+ costs.unshift(prev.edgeData);
2159
+ currentNode = prev.node;
2160
+ } else {
2161
+ currentNode = null;
2162
+ }
2163
+ }
2164
+ return Option.some({
2165
+ path,
2166
+ distance: targetGScore,
2167
+ costs
2168
+ });
2169
+ };
2170
+ /**
2171
+ * Find the shortest path between two nodes using Bellman-Ford algorithm.
2172
+ *
2173
+ * Bellman-Ford algorithm can handle negative edge weights and detects negative cycles.
2174
+ * It has O(VE) time complexity, slower than Dijkstra's but more versatile.
2175
+ * Returns Option.none() if a negative cycle is detected that affects the path.
2176
+ *
2177
+ * @example
2178
+ * ```ts
2179
+ * import { Graph, Option } from "effect"
2180
+ *
2181
+ * const graph = Graph.directed<string, number>((mutable) => {
2182
+ * const a = Graph.addNode(mutable, "A")
2183
+ * const b = Graph.addNode(mutable, "B")
2184
+ * const c = Graph.addNode(mutable, "C")
2185
+ * Graph.addEdge(mutable, a, b, -1) // Negative weight allowed
2186
+ * Graph.addEdge(mutable, b, c, 3)
2187
+ * Graph.addEdge(mutable, a, c, 5)
2188
+ * })
2189
+ *
2190
+ * const result = Graph.bellmanFord(graph, { source: 0, target: 2, cost: (edgeData) => edgeData })
2191
+ * if (Option.isSome(result)) {
2192
+ * console.log(result.value.path) // [0, 1, 2] - shortest path A->B->C
2193
+ * console.log(result.value.distance) // 2 - total distance
2194
+ * }
2195
+ * ```
2196
+ *
2197
+ * @since 3.18.0
2198
+ * @category algorithms
2199
+ */
2200
+ export const bellmanFord = (graph, config) => {
2201
+ const {
2202
+ cost,
2203
+ source,
2204
+ target
2205
+ } = config;
2206
+ // Validate that source and target nodes exist
2207
+ if (!graph.nodes.has(source)) {
2208
+ throw missingNode(source);
2209
+ }
2210
+ if (!graph.nodes.has(target)) {
2211
+ throw missingNode(target);
2212
+ }
2213
+ // Early return if source equals target
2214
+ if (source === target) {
2215
+ return Option.some({
2216
+ path: [source],
2217
+ distance: 0,
2218
+ costs: []
2219
+ });
2220
+ }
2221
+ // Initialize distances and predecessors
2222
+ const distances = new Map();
2223
+ const previous = new Map();
2224
+ // Iterate directly over node keys
2225
+ for (const node of graph.nodes.keys()) {
2226
+ distances.set(node, node === source ? 0 : Infinity);
2227
+ previous.set(node, null);
2228
+ }
2229
+ // Collect all edges for relaxation
2230
+ const edges = [];
2231
+ for (const [, edgeData] of graph.edges) {
2232
+ const weight = cost(edgeData.data);
2233
+ edges.push({
2234
+ source: edgeData.source,
2235
+ target: edgeData.target,
2236
+ weight,
2237
+ edgeData: edgeData.data
2238
+ });
2239
+ }
2240
+ // Relax edges up to V-1 times
2241
+ const nodeCount = graph.nodes.size;
2242
+ for (let i = 0; i < nodeCount - 1; i++) {
2243
+ let hasUpdate = false;
2244
+ for (const edge of edges) {
2245
+ const sourceDistance = distances.get(edge.source);
2246
+ const targetDistance = distances.get(edge.target);
2247
+ // Relaxation step
2248
+ if (sourceDistance !== Infinity && sourceDistance + edge.weight < targetDistance) {
2249
+ distances.set(edge.target, sourceDistance + edge.weight);
2250
+ previous.set(edge.target, {
2251
+ node: edge.source,
2252
+ edgeData: edge.edgeData
2253
+ });
2254
+ hasUpdate = true;
2255
+ }
2256
+ }
2257
+ // Early termination if no updates
2258
+ if (!hasUpdate) {
2259
+ break;
2260
+ }
2261
+ }
2262
+ // Check for negative cycles
2263
+ for (const edge of edges) {
2264
+ const sourceDistance = distances.get(edge.source);
2265
+ const targetDistance = distances.get(edge.target);
2266
+ if (sourceDistance !== Infinity && sourceDistance + edge.weight < targetDistance) {
2267
+ // Negative cycle detected - check if it affects the path to target
2268
+ const affectedNodes = new Set();
2269
+ const queue = [edge.target];
2270
+ while (queue.length > 0) {
2271
+ const node = queue.shift();
2272
+ if (affectedNodes.has(node)) continue;
2273
+ affectedNodes.add(node);
2274
+ // Add all nodes reachable from this node
2275
+ const adjacencyList = graph.adjacency.get(node);
2276
+ if (adjacencyList !== undefined) {
2277
+ for (const edgeIndex of adjacencyList) {
2278
+ const edge = graph.edges.get(edgeIndex);
2279
+ if (edge !== undefined) {
2280
+ queue.push(edge.target);
2281
+ }
2282
+ }
2283
+ }
2284
+ }
2285
+ // If target is affected by negative cycle, return null
2286
+ if (affectedNodes.has(target)) {
2287
+ return Option.none();
2288
+ }
2289
+ }
2290
+ }
2291
+ // Check if target is reachable
2292
+ const targetDistance = distances.get(target);
2293
+ if (targetDistance === Infinity) {
2294
+ return Option.none(); // No path exists
2295
+ }
2296
+ // Reconstruct path
2297
+ const path = [];
2298
+ const costs = [];
2299
+ let currentNode = target;
2300
+ while (currentNode !== null) {
2301
+ path.unshift(currentNode);
2302
+ const prev = previous.get(currentNode);
2303
+ if (prev !== null) {
2304
+ costs.unshift(prev.edgeData);
2305
+ currentNode = prev.node;
2306
+ } else {
2307
+ currentNode = null;
2308
+ }
2309
+ }
2310
+ return Option.some({
2311
+ path,
2312
+ distance: targetDistance,
2313
+ costs
2314
+ });
2315
+ };
2316
+ /**
2317
+ * Concrete class for iterables that produce [NodeIndex, NodeData] tuples.
2318
+ *
2319
+ * This class provides a common abstraction for all iterables that return node data,
2320
+ * including traversal iterators (DFS, BFS, etc.) and element iterators (nodes, externals).
2321
+ * It uses a mapEntry function pattern for flexible iteration and transformation.
2322
+ *
2323
+ * @example
2324
+ * ```ts
2325
+ * import { Graph } from "effect"
2326
+ *
2327
+ * const graph = Graph.directed<string, number>((mutable) => {
2328
+ * const a = Graph.addNode(mutable, "A")
2329
+ * const b = Graph.addNode(mutable, "B")
2330
+ * Graph.addEdge(mutable, a, b, 1)
2331
+ * })
2332
+ *
2333
+ * // Both traversal and element iterators return NodeWalker
2334
+ * const dfsNodes: Graph.NodeWalker<string> = Graph.dfs(graph, { start: [0] })
2335
+ * const allNodes: Graph.NodeWalker<string> = Graph.nodes(graph)
2336
+ *
2337
+ * // Common interface for working with node iterables
2338
+ * function processNodes<N>(nodeIterable: Graph.NodeWalker<N>): Array<number> {
2339
+ * return Array.from(Graph.indices(nodeIterable))
2340
+ * }
2341
+ *
2342
+ * // Access node data using values() or entries()
2343
+ * const nodeData = Array.from(Graph.values(dfsNodes)) // ["A", "B"]
2344
+ * const nodeEntries = Array.from(Graph.entries(allNodes)) // [[0, "A"], [1, "B"]]
2345
+ * ```
2346
+ *
2347
+ * @since 3.18.0
2348
+ * @category models
2349
+ */
2350
+ export class Walker {
2351
+ /**
2352
+ * @since 3.18.0
2353
+ */
2354
+ // @ts-ignore
2355
+ [Symbol.iterator];
2356
+ /**
2357
+ * Visits each element and maps it to a value using the provided function.
2358
+ *
2359
+ * Takes a function that receives the index and data,
2360
+ * and returns an iterable of the mapped values. Skips elements that
2361
+ * no longer exist in the graph.
2362
+ *
2363
+ * @example
2364
+ * ```ts
2365
+ * import { Graph } from "effect"
2366
+ *
2367
+ * const graph = Graph.directed<string, number>((mutable) => {
2368
+ * const a = Graph.addNode(mutable, "A")
2369
+ * const b = Graph.addNode(mutable, "B")
2370
+ * Graph.addEdge(mutable, a, b, 1)
2371
+ * })
2372
+ *
2373
+ * const dfs = Graph.dfs(graph, { start: [0] })
2374
+ *
2375
+ * // Map to just the node data
2376
+ * const values = Array.from(dfs.visit((index, data) => data))
2377
+ * console.log(values) // ["A", "B"]
2378
+ *
2379
+ * // Map to custom objects
2380
+ * const custom = Array.from(dfs.visit((index, data) => ({ id: index, name: data })))
2381
+ * console.log(custom) // [{ id: 0, name: "A" }, { id: 1, name: "B" }]
2382
+ * ```
2383
+ *
2384
+ * @since 3.18.0
2385
+ * @category iterators
2386
+ */
2387
+ visit;
2388
+ constructor(
2389
+ /**
2390
+ * Visits each element and maps it to a value using the provided function.
2391
+ *
2392
+ * Takes a function that receives the index and data,
2393
+ * and returns an iterable of the mapped values. Skips elements that
2394
+ * no longer exist in the graph.
2395
+ *
2396
+ * @example
2397
+ * ```ts
2398
+ * import { Graph } from "effect"
2399
+ *
2400
+ * const graph = Graph.directed<string, number>((mutable) => {
2401
+ * const a = Graph.addNode(mutable, "A")
2402
+ * const b = Graph.addNode(mutable, "B")
2403
+ * Graph.addEdge(mutable, a, b, 1)
2404
+ * })
2405
+ *
2406
+ * const dfs = Graph.dfs(graph, { start: [0] })
2407
+ *
2408
+ * // Map to just the node data
2409
+ * const values = Array.from(dfs.visit((index, data) => data))
2410
+ * console.log(values) // ["A", "B"]
2411
+ *
2412
+ * // Map to custom objects
2413
+ * const custom = Array.from(dfs.visit((index, data) => ({ id: index, name: data })))
2414
+ * console.log(custom) // [{ id: 0, name: "A" }, { id: 1, name: "B" }]
2415
+ * ```
2416
+ *
2417
+ * @since 3.18.0
2418
+ * @category iterators
2419
+ */
2420
+ visit) {
2421
+ this.visit = visit;
2422
+ this[Symbol.iterator] = visit((index, data) => [index, data])[Symbol.iterator];
2423
+ }
2424
+ }
2425
+ /**
2426
+ * Returns an iterator over the indices in the walker.
2427
+ *
2428
+ * @example
2429
+ * ```ts
2430
+ * import { Graph } from "effect"
2431
+ *
2432
+ * const graph = Graph.directed<string, number>((mutable) => {
2433
+ * const a = Graph.addNode(mutable, "A")
2434
+ * const b = Graph.addNode(mutable, "B")
2435
+ * Graph.addEdge(mutable, a, b, 1)
2436
+ * })
2437
+ *
2438
+ * const dfs = Graph.dfs(graph, { start: [0] })
2439
+ * const indices = Array.from(Graph.indices(dfs))
2440
+ * console.log(indices) // [0, 1]
2441
+ * ```
2442
+ *
2443
+ * @since 3.18.0
2444
+ * @category utilities
2445
+ */
2446
+ export const indices = walker => walker.visit((index, _) => index);
2447
+ /**
2448
+ * Returns an iterator over the values (data) in the walker.
2449
+ *
2450
+ * @example
2451
+ * ```ts
2452
+ * import { Graph } from "effect"
2453
+ *
2454
+ * const graph = Graph.directed<string, number>((mutable) => {
2455
+ * const a = Graph.addNode(mutable, "A")
2456
+ * const b = Graph.addNode(mutable, "B")
2457
+ * Graph.addEdge(mutable, a, b, 1)
2458
+ * })
2459
+ *
2460
+ * const dfs = Graph.dfs(graph, { start: [0] })
2461
+ * const values = Array.from(Graph.values(dfs))
2462
+ * console.log(values) // ["A", "B"]
2463
+ * ```
2464
+ *
2465
+ * @since 3.18.0
2466
+ * @category utilities
2467
+ */
2468
+ export const values = walker => walker.visit((_, data) => data);
2469
+ /**
2470
+ * Returns an iterator over [index, data] entries in the walker.
2471
+ *
2472
+ * @example
2473
+ * ```ts
2474
+ * import { Graph } from "effect"
2475
+ *
2476
+ * const graph = Graph.directed<string, number>((mutable) => {
2477
+ * const a = Graph.addNode(mutable, "A")
2478
+ * const b = Graph.addNode(mutable, "B")
2479
+ * Graph.addEdge(mutable, a, b, 1)
2480
+ * })
2481
+ *
2482
+ * const dfs = Graph.dfs(graph, { start: [0] })
2483
+ * const entries = Array.from(Graph.entries(dfs))
2484
+ * console.log(entries) // [[0, "A"], [1, "B"]]
2485
+ * ```
2486
+ *
2487
+ * @since 3.18.0
2488
+ * @category utilities
2489
+ */
2490
+ export const entries = walker => walker.visit((index, data) => [index, data]);
2491
+ /**
2492
+ * Creates a new DFS iterator with optional configuration.
2493
+ *
2494
+ * The iterator maintains a stack of nodes to visit and tracks discovered nodes.
2495
+ * It provides lazy evaluation of the depth-first search.
2496
+ *
2497
+ * @example
2498
+ * ```ts
2499
+ * import { Graph } from "effect"
2500
+ *
2501
+ * const graph = Graph.directed<string, number>((mutable) => {
2502
+ * const a = Graph.addNode(mutable, "A")
2503
+ * const b = Graph.addNode(mutable, "B")
2504
+ * const c = Graph.addNode(mutable, "C")
2505
+ * Graph.addEdge(mutable, a, b, 1)
2506
+ * Graph.addEdge(mutable, b, c, 1)
2507
+ * })
2508
+ *
2509
+ * // Start from a specific node
2510
+ * const dfs1 = Graph.dfs(graph, { start: [0] })
2511
+ * for (const nodeIndex of Graph.indices(dfs1)) {
2512
+ * console.log(nodeIndex) // Traverses in DFS order: 0, 1, 2
2513
+ * }
2514
+ *
2515
+ * // Empty iterator (no starting nodes)
2516
+ * const dfs2 = Graph.dfs(graph)
2517
+ * // Can be used programmatically
2518
+ * ```
2519
+ *
2520
+ * @since 3.18.0
2521
+ * @category iterators
2522
+ */
2523
+ export const dfs = (graph, config = {}) => {
2524
+ const start = config.start ?? [];
2525
+ const direction = config.direction ?? "outgoing";
2526
+ // Validate that all start nodes exist
2527
+ for (const nodeIndex of start) {
2528
+ if (!hasNode(graph, nodeIndex)) {
2529
+ throw missingNode(nodeIndex);
2530
+ }
2531
+ }
2532
+ return new Walker(f => ({
2533
+ [Symbol.iterator]: () => {
2534
+ const stack = [...start];
2535
+ const discovered = new Set();
2536
+ const nextMapped = () => {
2537
+ while (stack.length > 0) {
2538
+ const current = stack.pop();
2539
+ if (discovered.has(current)) {
2540
+ continue;
2541
+ }
2542
+ discovered.add(current);
2543
+ const nodeDataOption = graph.nodes.get(current);
2544
+ if (nodeDataOption === undefined) {
2545
+ continue;
2546
+ }
2547
+ const neighbors = neighborsDirected(graph, current, direction);
2548
+ for (let i = neighbors.length - 1; i >= 0; i--) {
2549
+ const neighbor = neighbors[i];
2550
+ if (!discovered.has(neighbor)) {
2551
+ stack.push(neighbor);
2552
+ }
2553
+ }
2554
+ return {
2555
+ done: false,
2556
+ value: f(current, nodeDataOption)
2557
+ };
2558
+ }
2559
+ return {
2560
+ done: true,
2561
+ value: undefined
2562
+ };
2563
+ };
2564
+ return {
2565
+ next: nextMapped
2566
+ };
2567
+ }
2568
+ }));
2569
+ };
2570
+ /**
2571
+ * Creates a new BFS iterator with optional configuration.
2572
+ *
2573
+ * The iterator maintains a queue of nodes to visit and tracks discovered nodes.
2574
+ * It provides lazy evaluation of the breadth-first search.
2575
+ *
2576
+ * @example
2577
+ * ```ts
2578
+ * import { Graph } from "effect"
2579
+ *
2580
+ * const graph = Graph.directed<string, number>((mutable) => {
2581
+ * const a = Graph.addNode(mutable, "A")
2582
+ * const b = Graph.addNode(mutable, "B")
2583
+ * const c = Graph.addNode(mutable, "C")
2584
+ * Graph.addEdge(mutable, a, b, 1)
2585
+ * Graph.addEdge(mutable, b, c, 1)
2586
+ * })
2587
+ *
2588
+ * // Start from a specific node
2589
+ * const bfs1 = Graph.bfs(graph, { start: [0] })
2590
+ * for (const nodeIndex of Graph.indices(bfs1)) {
2591
+ * console.log(nodeIndex) // Traverses in BFS order: 0, 1, 2
2592
+ * }
2593
+ *
2594
+ * // Empty iterator (no starting nodes)
2595
+ * const bfs2 = Graph.bfs(graph)
2596
+ * // Can be used programmatically
2597
+ * ```
2598
+ *
2599
+ * @since 3.18.0
2600
+ * @category iterators
2601
+ */
2602
+ export const bfs = (graph, config = {}) => {
2603
+ const start = config.start ?? [];
2604
+ const direction = config.direction ?? "outgoing";
2605
+ // Validate that all start nodes exist
2606
+ for (const nodeIndex of start) {
2607
+ if (!hasNode(graph, nodeIndex)) {
2608
+ throw missingNode(nodeIndex);
2609
+ }
2610
+ }
2611
+ return new Walker(f => ({
2612
+ [Symbol.iterator]: () => {
2613
+ const queue = [...start];
2614
+ const discovered = new Set();
2615
+ const nextMapped = () => {
2616
+ while (queue.length > 0) {
2617
+ const current = queue.shift();
2618
+ if (!discovered.has(current)) {
2619
+ discovered.add(current);
2620
+ const neighbors = neighborsDirected(graph, current, direction);
2621
+ for (const neighbor of neighbors) {
2622
+ if (!discovered.has(neighbor)) {
2623
+ queue.push(neighbor);
2624
+ }
2625
+ }
2626
+ const nodeData = getNode(graph, current);
2627
+ if (Option.isSome(nodeData)) {
2628
+ return {
2629
+ done: false,
2630
+ value: f(current, nodeData.value)
2631
+ };
2632
+ }
2633
+ return nextMapped();
2634
+ }
2635
+ }
2636
+ return {
2637
+ done: true,
2638
+ value: undefined
2639
+ };
2640
+ };
2641
+ return {
2642
+ next: nextMapped
2643
+ };
2644
+ }
2645
+ }));
2646
+ };
2647
+ /**
2648
+ * Creates a new topological sort iterator with optional configuration.
2649
+ *
2650
+ * The iterator uses Kahn's algorithm to lazily produce nodes in topological order.
2651
+ * Throws an error if the graph contains cycles.
2652
+ *
2653
+ * @example
2654
+ * ```ts
2655
+ * import { Graph } from "effect"
2656
+ *
2657
+ * const graph = Graph.directed<string, number>((mutable) => {
2658
+ * const a = Graph.addNode(mutable, "A")
2659
+ * const b = Graph.addNode(mutable, "B")
2660
+ * const c = Graph.addNode(mutable, "C")
2661
+ * Graph.addEdge(mutable, a, b, 1)
2662
+ * Graph.addEdge(mutable, b, c, 1)
2663
+ * })
2664
+ *
2665
+ * // Standard topological sort
2666
+ * const topo1 = Graph.topo(graph)
2667
+ * for (const nodeIndex of Graph.indices(topo1)) {
2668
+ * console.log(nodeIndex) // 0, 1, 2 (topological order)
2669
+ * }
2670
+ *
2671
+ * // With initial nodes
2672
+ * const topo2 = Graph.topo(graph, { initials: [0] })
2673
+ *
2674
+ * // Throws error for cyclic graph
2675
+ * const cyclicGraph = Graph.directed<string, number>((mutable) => {
2676
+ * const a = Graph.addNode(mutable, "A")
2677
+ * const b = Graph.addNode(mutable, "B")
2678
+ * Graph.addEdge(mutable, a, b, 1)
2679
+ * Graph.addEdge(mutable, b, a, 2) // Creates cycle
2680
+ * })
2681
+ *
2682
+ * try {
2683
+ * Graph.topo(cyclicGraph) // Throws: "Cannot perform topological sort on cyclic graph"
2684
+ * } catch (error) {
2685
+ * console.log((error as Error).message)
2686
+ * }
2687
+ * ```
2688
+ *
2689
+ * @since 3.18.0
2690
+ * @category iterators
2691
+ */
2692
+ export const topo = (graph, config = {}) => {
2693
+ // Check if graph is acyclic first
2694
+ if (!isAcyclic(graph)) {
2695
+ throw new Error("Cannot perform topological sort on cyclic graph");
2696
+ }
2697
+ const initials = config.initials ?? [];
2698
+ // Validate that all initial nodes exist
2699
+ for (const nodeIndex of initials) {
2700
+ if (!hasNode(graph, nodeIndex)) {
2701
+ throw missingNode(nodeIndex);
2702
+ }
2703
+ }
2704
+ return new Walker(f => ({
2705
+ [Symbol.iterator]: () => {
2706
+ const inDegree = new Map();
2707
+ const remaining = new Set();
2708
+ const queue = [...initials];
2709
+ // Initialize in-degree counts
2710
+ for (const [nodeIndex] of graph.nodes) {
2711
+ inDegree.set(nodeIndex, 0);
2712
+ remaining.add(nodeIndex);
2713
+ }
2714
+ // Calculate in-degrees
2715
+ for (const [, edgeData] of graph.edges) {
2716
+ const currentInDegree = inDegree.get(edgeData.target) || 0;
2717
+ inDegree.set(edgeData.target, currentInDegree + 1);
2718
+ }
2719
+ // Add nodes with zero in-degree to queue if no initials provided
2720
+ if (initials.length === 0) {
2721
+ for (const [nodeIndex, degree] of inDegree) {
2722
+ if (degree === 0) {
2723
+ queue.push(nodeIndex);
2724
+ }
2725
+ }
2726
+ }
2727
+ const nextMapped = () => {
2728
+ while (queue.length > 0) {
2729
+ const current = queue.shift();
2730
+ if (remaining.has(current)) {
2731
+ remaining.delete(current);
2732
+ // Process outgoing edges, reducing in-degree of targets
2733
+ const neighbors = neighborsDirected(graph, current, "outgoing");
2734
+ for (const neighbor of neighbors) {
2735
+ if (remaining.has(neighbor)) {
2736
+ const currentInDegree = inDegree.get(neighbor) || 0;
2737
+ const newInDegree = currentInDegree - 1;
2738
+ inDegree.set(neighbor, newInDegree);
2739
+ // If in-degree becomes 0, add to queue
2740
+ if (newInDegree === 0) {
2741
+ queue.push(neighbor);
2742
+ }
2743
+ }
2744
+ }
2745
+ const nodeData = getNode(graph, current);
2746
+ if (Option.isSome(nodeData)) {
2747
+ return {
2748
+ done: false,
2749
+ value: f(current, nodeData.value)
2750
+ };
2751
+ }
2752
+ return nextMapped();
2753
+ }
2754
+ }
2755
+ return {
2756
+ done: true,
2757
+ value: undefined
2758
+ };
2759
+ };
2760
+ return {
2761
+ next: nextMapped
2762
+ };
2763
+ }
2764
+ }));
2765
+ };
2766
+ /**
2767
+ * Creates a new DFS postorder iterator with optional configuration.
2768
+ *
2769
+ * The iterator maintains a stack with visit state tracking and emits nodes
2770
+ * in postorder (after all descendants have been processed). Essential for
2771
+ * dependency resolution and tree destruction algorithms.
2772
+ *
2773
+ * @example
2774
+ * ```ts
2775
+ * import { Graph } from "effect"
2776
+ *
2777
+ * const graph = Graph.directed<string, number>((mutable) => {
2778
+ * const root = Graph.addNode(mutable, "root")
2779
+ * const child1 = Graph.addNode(mutable, "child1")
2780
+ * const child2 = Graph.addNode(mutable, "child2")
2781
+ * Graph.addEdge(mutable, root, child1, 1)
2782
+ * Graph.addEdge(mutable, root, child2, 1)
2783
+ * })
2784
+ *
2785
+ * // Postorder: children before parents
2786
+ * const postOrder = Graph.dfsPostOrder(graph, { start: [0] })
2787
+ * for (const node of postOrder) {
2788
+ * console.log(node) // 1, 2, 0
2789
+ * }
2790
+ * ```
2791
+ *
2792
+ * @since 3.18.0
2793
+ * @category iterators
2794
+ */
2795
+ export const dfsPostOrder = (graph, config = {}) => {
2796
+ const start = config.start ?? [];
2797
+ const direction = config.direction ?? "outgoing";
2798
+ // Validate that all start nodes exist
2799
+ for (const nodeIndex of start) {
2800
+ if (!hasNode(graph, nodeIndex)) {
2801
+ throw missingNode(nodeIndex);
2802
+ }
2803
+ }
2804
+ return new Walker(f => ({
2805
+ [Symbol.iterator]: () => {
2806
+ const stack = [];
2807
+ const discovered = new Set();
2808
+ const finished = new Set();
2809
+ // Initialize stack with start nodes
2810
+ for (let i = start.length - 1; i >= 0; i--) {
2811
+ stack.push({
2812
+ node: start[i],
2813
+ visitedChildren: false
2814
+ });
2815
+ }
2816
+ const nextMapped = () => {
2817
+ while (stack.length > 0) {
2818
+ const current = stack[stack.length - 1];
2819
+ if (!discovered.has(current.node)) {
2820
+ discovered.add(current.node);
2821
+ current.visitedChildren = false;
2822
+ }
2823
+ if (!current.visitedChildren) {
2824
+ current.visitedChildren = true;
2825
+ const neighbors = neighborsDirected(graph, current.node, direction);
2826
+ for (let i = neighbors.length - 1; i >= 0; i--) {
2827
+ const neighbor = neighbors[i];
2828
+ if (!discovered.has(neighbor) && !finished.has(neighbor)) {
2829
+ stack.push({
2830
+ node: neighbor,
2831
+ visitedChildren: false
2832
+ });
2833
+ }
2834
+ }
2835
+ } else {
2836
+ const nodeToEmit = stack.pop().node;
2837
+ if (!finished.has(nodeToEmit)) {
2838
+ finished.add(nodeToEmit);
2839
+ const nodeData = getNode(graph, nodeToEmit);
2840
+ if (Option.isSome(nodeData)) {
2841
+ return {
2842
+ done: false,
2843
+ value: f(nodeToEmit, nodeData.value)
2844
+ };
2845
+ }
2846
+ return nextMapped();
2847
+ }
2848
+ }
2849
+ }
2850
+ return {
2851
+ done: true,
2852
+ value: undefined
2853
+ };
2854
+ };
2855
+ return {
2856
+ next: nextMapped
2857
+ };
2858
+ }
2859
+ }));
2860
+ };
2861
+ /**
2862
+ * Creates an iterator over all node indices in the graph.
2863
+ *
2864
+ * The iterator produces node indices in the order they were added to the graph.
2865
+ * This provides access to all nodes regardless of connectivity.
2866
+ *
2867
+ * @example
2868
+ * ```ts
2869
+ * import { Graph } from "effect"
2870
+ *
2871
+ * const graph = Graph.directed<string, number>((mutable) => {
2872
+ * const a = Graph.addNode(mutable, "A")
2873
+ * const b = Graph.addNode(mutable, "B")
2874
+ * const c = Graph.addNode(mutable, "C")
2875
+ * Graph.addEdge(mutable, a, b, 1)
2876
+ * })
2877
+ *
2878
+ * const indices = Array.from(Graph.indices(Graph.nodes(graph)))
2879
+ * console.log(indices) // [0, 1, 2]
2880
+ * ```
2881
+ *
2882
+ * @since 3.18.0
2883
+ * @category iterators
2884
+ */
2885
+ export const nodes = graph => new Walker(f => ({
2886
+ [Symbol.iterator]() {
2887
+ const nodeMap = graph.nodes;
2888
+ const iterator = nodeMap.entries();
2889
+ return {
2890
+ next() {
2891
+ const result = iterator.next();
2892
+ if (result.done) {
2893
+ return {
2894
+ done: true,
2895
+ value: undefined
2896
+ };
2897
+ }
2898
+ const [nodeIndex, nodeData] = result.value;
2899
+ return {
2900
+ done: false,
2901
+ value: f(nodeIndex, nodeData)
2902
+ };
2903
+ }
2904
+ };
2905
+ }
2906
+ }));
2907
+ /**
2908
+ * Creates an iterator over all edge indices in the graph.
2909
+ *
2910
+ * The iterator produces edge indices in the order they were added to the graph.
2911
+ * This provides access to all edges regardless of connectivity.
2912
+ *
2913
+ * @example
2914
+ * ```ts
2915
+ * import { Graph } from "effect"
2916
+ *
2917
+ * const graph = Graph.directed<string, number>((mutable) => {
2918
+ * const a = Graph.addNode(mutable, "A")
2919
+ * const b = Graph.addNode(mutable, "B")
2920
+ * const c = Graph.addNode(mutable, "C")
2921
+ * Graph.addEdge(mutable, a, b, 1)
2922
+ * Graph.addEdge(mutable, b, c, 2)
2923
+ * })
2924
+ *
2925
+ * const indices = Array.from(Graph.indices(Graph.edges(graph)))
2926
+ * console.log(indices) // [0, 1]
2927
+ * ```
2928
+ *
2929
+ * @since 3.18.0
2930
+ * @category iterators
2931
+ */
2932
+ export const edges = graph => new Walker(f => ({
2933
+ [Symbol.iterator]() {
2934
+ const edgeMap = graph.edges;
2935
+ const iterator = edgeMap.entries();
2936
+ return {
2937
+ next() {
2938
+ const result = iterator.next();
2939
+ if (result.done) {
2940
+ return {
2941
+ done: true,
2942
+ value: undefined
2943
+ };
2944
+ }
2945
+ const [edgeIndex, edgeData] = result.value;
2946
+ return {
2947
+ done: false,
2948
+ value: f(edgeIndex, edgeData)
2949
+ };
2950
+ }
2951
+ };
2952
+ }
2953
+ }));
2954
+ /**
2955
+ * Creates an iterator over external nodes (nodes without edges in specified direction).
2956
+ *
2957
+ * External nodes are nodes that have no outgoing edges (direction="outgoing") or
2958
+ * no incoming edges (direction="incoming"). These are useful for finding
2959
+ * sources, sinks, or isolated nodes.
2960
+ *
2961
+ * @example
2962
+ * ```ts
2963
+ * import { Graph } from "effect"
2964
+ *
2965
+ * const graph = Graph.directed<string, number>((mutable) => {
2966
+ * const source = Graph.addNode(mutable, "source") // 0 - no incoming
2967
+ * const middle = Graph.addNode(mutable, "middle") // 1 - has both
2968
+ * const sink = Graph.addNode(mutable, "sink") // 2 - no outgoing
2969
+ * const isolated = Graph.addNode(mutable, "isolated") // 3 - no edges
2970
+ *
2971
+ * Graph.addEdge(mutable, source, middle, 1)
2972
+ * Graph.addEdge(mutable, middle, sink, 2)
2973
+ * })
2974
+ *
2975
+ * // Nodes with no outgoing edges (sinks + isolated)
2976
+ * const sinks = Array.from(Graph.indices(Graph.externals(graph, { direction: "outgoing" })))
2977
+ * console.log(sinks) // [2, 3]
2978
+ *
2979
+ * // Nodes with no incoming edges (sources + isolated)
2980
+ * const sources = Array.from(Graph.indices(Graph.externals(graph, { direction: "incoming" })))
2981
+ * console.log(sources) // [0, 3]
2982
+ * ```
2983
+ *
2984
+ * @since 3.18.0
2985
+ * @category iterators
2986
+ */
2987
+ export const externals = (graph, config = {}) => {
2988
+ const direction = config.direction ?? "outgoing";
2989
+ return new Walker(f => ({
2990
+ [Symbol.iterator]: () => {
2991
+ const nodeMap = graph.nodes;
2992
+ const adjacencyMap = direction === "incoming" ? graph.reverseAdjacency : graph.adjacency;
2993
+ const nodeIterator = nodeMap.entries();
2994
+ const nextMapped = () => {
2995
+ let current = nodeIterator.next();
2996
+ while (!current.done) {
2997
+ const [nodeIndex, nodeData] = current.value;
2998
+ const adjacencyList = adjacencyMap.get(nodeIndex);
2999
+ // Node is external if it has no edges in the specified direction
3000
+ if (adjacencyList === undefined || adjacencyList.length === 0) {
3001
+ return {
3002
+ done: false,
3003
+ value: f(nodeIndex, nodeData)
3004
+ };
3005
+ }
3006
+ current = nodeIterator.next();
3007
+ }
3008
+ return {
3009
+ done: true,
3010
+ value: undefined
3011
+ };
3012
+ };
3013
+ return {
3014
+ next: nextMapped
3015
+ };
3016
+ }
3017
+ }));
3018
+ };
3019
+ //# sourceMappingURL=Graph.js.map