effect 4.0.0-beta.1 → 4.0.0-beta.11

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 (641) hide show
  1. package/dist/Cache.d.ts +2 -2
  2. package/dist/Cache.d.ts.map +1 -1
  3. package/dist/Cache.js +1 -1
  4. package/dist/Cache.js.map +1 -1
  5. package/dist/Cause.d.ts +1 -1
  6. package/dist/Cause.d.ts.map +1 -1
  7. package/dist/Channel.d.ts +7 -7
  8. package/dist/Channel.d.ts.map +1 -1
  9. package/dist/Channel.js +6 -4
  10. package/dist/Channel.js.map +1 -1
  11. package/dist/Combiner.d.ts +280 -13
  12. package/dist/Combiner.d.ts.map +1 -1
  13. package/dist/Combiner.js +198 -7
  14. package/dist/Combiner.js.map +1 -1
  15. package/dist/Config.d.ts +3 -3
  16. package/dist/Config.js +3 -3
  17. package/dist/Config.js.map +1 -1
  18. package/dist/ConfigProvider.d.ts +1 -1
  19. package/dist/Cron.d.ts +1 -1
  20. package/dist/Data.d.ts +534 -365
  21. package/dist/Data.d.ts.map +1 -1
  22. package/dist/Data.js +132 -79
  23. package/dist/Data.js.map +1 -1
  24. package/dist/DateTime.d.ts +23 -161
  25. package/dist/DateTime.d.ts.map +1 -1
  26. package/dist/DateTime.js +6 -51
  27. package/dist/DateTime.js.map +1 -1
  28. package/dist/Duration.d.ts +12 -12
  29. package/dist/Duration.d.ts.map +1 -1
  30. package/dist/Duration.js +12 -12
  31. package/dist/Duration.js.map +1 -1
  32. package/dist/Effect.d.ts +342 -248
  33. package/dist/Effect.d.ts.map +1 -1
  34. package/dist/Effect.js +119 -119
  35. package/dist/Effect.js.map +1 -1
  36. package/dist/Encoding.d.ts +194 -0
  37. package/dist/Encoding.d.ts.map +1 -0
  38. package/dist/Encoding.js +352 -0
  39. package/dist/Encoding.js.map +1 -0
  40. package/dist/Equal.d.ts +276 -109
  41. package/dist/Equal.d.ts.map +1 -1
  42. package/dist/Equal.js +124 -48
  43. package/dist/Equal.js.map +1 -1
  44. package/dist/ErrorReporter.d.ts +376 -0
  45. package/dist/ErrorReporter.d.ts.map +1 -0
  46. package/dist/ErrorReporter.js +246 -0
  47. package/dist/ErrorReporter.js.map +1 -0
  48. package/dist/FileSystem.d.ts +1 -1
  49. package/dist/FileSystem.d.ts.map +1 -1
  50. package/dist/FileSystem.js +5 -5
  51. package/dist/FileSystem.js.map +1 -1
  52. package/dist/Filter.d.ts +30 -1
  53. package/dist/Filter.d.ts.map +1 -1
  54. package/dist/Filter.js +15 -0
  55. package/dist/Filter.js.map +1 -1
  56. package/dist/Formatter.d.ts +131 -47
  57. package/dist/Formatter.d.ts.map +1 -1
  58. package/dist/Formatter.js +229 -51
  59. package/dist/Formatter.js.map +1 -1
  60. package/dist/Graph.d.ts +1 -1
  61. package/dist/Graph.d.ts.map +1 -1
  62. package/dist/Graph.js +2 -2
  63. package/dist/Graph.js.map +1 -1
  64. package/dist/JsonSchema.d.ts +299 -10
  65. package/dist/JsonSchema.d.ts.map +1 -1
  66. package/dist/JsonSchema.js +323 -4
  67. package/dist/JsonSchema.js.map +1 -1
  68. package/dist/Latch.d.ts +109 -0
  69. package/dist/Latch.d.ts.map +1 -0
  70. package/dist/Latch.js +72 -0
  71. package/dist/Latch.js.map +1 -0
  72. package/dist/LayerMap.d.ts +4 -4
  73. package/dist/LayerMap.d.ts.map +1 -1
  74. package/dist/LogLevel.d.ts +32 -0
  75. package/dist/LogLevel.d.ts.map +1 -1
  76. package/dist/LogLevel.js +28 -100
  77. package/dist/LogLevel.js.map +1 -1
  78. package/dist/Logger.d.ts +29 -95
  79. package/dist/Logger.d.ts.map +1 -1
  80. package/dist/Logger.js +2 -3
  81. package/dist/Logger.js.map +1 -1
  82. package/dist/Metric.d.ts +2 -2
  83. package/dist/Metric.d.ts.map +1 -1
  84. package/dist/Metric.js +1 -1
  85. package/dist/Metric.js.map +1 -1
  86. package/dist/Optic.d.ts +947 -18
  87. package/dist/Optic.d.ts.map +1 -1
  88. package/dist/Optic.js +454 -5
  89. package/dist/Optic.js.map +1 -1
  90. package/dist/Pipeable.d.ts +17 -0
  91. package/dist/Pipeable.d.ts.map +1 -1
  92. package/dist/Pipeable.js +19 -1
  93. package/dist/Pipeable.js.map +1 -1
  94. package/dist/PlatformError.d.ts +10 -9
  95. package/dist/PlatformError.d.ts.map +1 -1
  96. package/dist/PlatformError.js +2 -2
  97. package/dist/PlatformError.js.map +1 -1
  98. package/dist/Pool.d.ts +6 -4
  99. package/dist/Pool.d.ts.map +1 -1
  100. package/dist/Pool.js +7 -5
  101. package/dist/Pool.js.map +1 -1
  102. package/dist/PubSub.d.ts +3 -2
  103. package/dist/PubSub.d.ts.map +1 -1
  104. package/dist/PubSub.js +3 -2
  105. package/dist/PubSub.js.map +1 -1
  106. package/dist/Queue.d.ts.map +1 -1
  107. package/dist/Queue.js +0 -1
  108. package/dist/Queue.js.map +1 -1
  109. package/dist/Random.d.ts +18 -1
  110. package/dist/Random.d.ts.map +1 -1
  111. package/dist/Random.js +29 -12
  112. package/dist/Random.js.map +1 -1
  113. package/dist/RcMap.d.ts +2 -2
  114. package/dist/RcMap.d.ts.map +1 -1
  115. package/dist/RcMap.js +1 -1
  116. package/dist/RcMap.js.map +1 -1
  117. package/dist/RcRef.d.ts +1 -1
  118. package/dist/RcRef.d.ts.map +1 -1
  119. package/dist/Reducer.d.ts +166 -7
  120. package/dist/Reducer.d.ts.map +1 -1
  121. package/dist/Reducer.js +135 -1
  122. package/dist/Reducer.js.map +1 -1
  123. package/dist/References.d.ts +3 -3
  124. package/dist/References.d.ts.map +1 -1
  125. package/dist/Request.d.ts +1 -1
  126. package/dist/Request.d.ts.map +1 -1
  127. package/dist/Request.js +2 -1
  128. package/dist/Request.js.map +1 -1
  129. package/dist/RequestResolver.d.ts +6 -26
  130. package/dist/RequestResolver.d.ts.map +1 -1
  131. package/dist/RequestResolver.js +0 -20
  132. package/dist/RequestResolver.js.map +1 -1
  133. package/dist/Result.d.ts +12 -0
  134. package/dist/Result.d.ts.map +1 -1
  135. package/dist/Result.js +12 -0
  136. package/dist/Result.js.map +1 -1
  137. package/dist/Schedule.d.ts +33 -14
  138. package/dist/Schedule.d.ts.map +1 -1
  139. package/dist/Schedule.js +65 -24
  140. package/dist/Schedule.js.map +1 -1
  141. package/dist/Schema.d.ts +199 -49
  142. package/dist/Schema.d.ts.map +1 -1
  143. package/dist/Schema.js +386 -72
  144. package/dist/Schema.js.map +1 -1
  145. package/dist/SchemaAST.d.ts.map +1 -1
  146. package/dist/SchemaAST.js +2 -1
  147. package/dist/SchemaAST.js.map +1 -1
  148. package/dist/SchemaGetter.d.ts +2 -2
  149. package/dist/SchemaGetter.d.ts.map +1 -1
  150. package/dist/SchemaGetter.js +12 -14
  151. package/dist/SchemaGetter.js.map +1 -1
  152. package/dist/SchemaRepresentation.d.ts +44 -43
  153. package/dist/SchemaRepresentation.d.ts.map +1 -1
  154. package/dist/SchemaRepresentation.js +43 -24
  155. package/dist/SchemaRepresentation.js.map +1 -1
  156. package/dist/SchemaTransformation.d.ts +37 -0
  157. package/dist/SchemaTransformation.d.ts.map +1 -1
  158. package/dist/SchemaTransformation.js +80 -0
  159. package/dist/SchemaTransformation.js.map +1 -1
  160. package/dist/ScopedCache.d.ts +2 -2
  161. package/dist/ScopedCache.d.ts.map +1 -1
  162. package/dist/ScopedCache.js +1 -1
  163. package/dist/ScopedCache.js.map +1 -1
  164. package/dist/Semaphore.d.ts +211 -0
  165. package/dist/Semaphore.d.ts.map +1 -0
  166. package/dist/{PartitionedSemaphore.js → Semaphore.js} +97 -13
  167. package/dist/Semaphore.js.map +1 -0
  168. package/dist/Stream.d.ts +24 -24
  169. package/dist/Stream.d.ts.map +1 -1
  170. package/dist/Stream.js +12 -11
  171. package/dist/Stream.js.map +1 -1
  172. package/dist/Struct.d.ts +16 -0
  173. package/dist/Struct.d.ts.map +1 -1
  174. package/dist/Struct.js +22 -0
  175. package/dist/Struct.js.map +1 -1
  176. package/dist/SubscriptionRef.d.ts +2 -1
  177. package/dist/SubscriptionRef.d.ts.map +1 -1
  178. package/dist/SubscriptionRef.js +2 -1
  179. package/dist/SubscriptionRef.js.map +1 -1
  180. package/dist/SynchronizedRef.d.ts +2 -1
  181. package/dist/SynchronizedRef.d.ts.map +1 -1
  182. package/dist/SynchronizedRef.js +2 -1
  183. package/dist/SynchronizedRef.js.map +1 -1
  184. package/dist/Types.d.ts +14 -6
  185. package/dist/Types.d.ts.map +1 -1
  186. package/dist/index.d.ts +503 -19
  187. package/dist/index.d.ts.map +1 -1
  188. package/dist/index.js +503 -19
  189. package/dist/index.js.map +1 -1
  190. package/dist/internal/core.js +11 -3
  191. package/dist/internal/core.js.map +1 -1
  192. package/dist/internal/dateTime.js +3 -11
  193. package/dist/internal/dateTime.js.map +1 -1
  194. package/dist/internal/effect.js +85 -26
  195. package/dist/internal/effect.js.map +1 -1
  196. package/dist/internal/hashMap.js +2 -2
  197. package/dist/internal/hashMap.js.map +1 -1
  198. package/dist/internal/random.d.ts +2 -0
  199. package/dist/internal/random.d.ts.map +1 -0
  200. package/dist/internal/random.js +13 -0
  201. package/dist/internal/random.js.map +1 -0
  202. package/dist/internal/rcRef.js +3 -2
  203. package/dist/internal/rcRef.js.map +1 -1
  204. package/dist/testing/TestClock.d.ts +7 -6
  205. package/dist/testing/TestClock.d.ts.map +1 -1
  206. package/dist/testing/TestClock.js +6 -4
  207. package/dist/testing/TestClock.js.map +1 -1
  208. package/dist/testing/TestSchema.d.ts +6 -6
  209. package/dist/testing/TestSchema.d.ts.map +1 -1
  210. package/dist/unstable/ai/AiError.d.ts +48 -48
  211. package/dist/unstable/ai/AiError.d.ts.map +1 -1
  212. package/dist/unstable/ai/Chat.d.ts +3 -3
  213. package/dist/unstable/ai/Chat.d.ts.map +1 -1
  214. package/dist/unstable/ai/Chat.js +4 -3
  215. package/dist/unstable/ai/Chat.js.map +1 -1
  216. package/dist/unstable/ai/LanguageModel.d.ts +2 -2
  217. package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
  218. package/dist/unstable/ai/LanguageModel.js +41 -0
  219. package/dist/unstable/ai/LanguageModel.js.map +1 -1
  220. package/dist/unstable/ai/McpSchema.d.ts +51 -51
  221. package/dist/unstable/ai/McpServer.d.ts +1 -1
  222. package/dist/unstable/ai/McpServer.d.ts.map +1 -1
  223. package/dist/unstable/ai/McpServer.js.map +1 -1
  224. package/dist/unstable/ai/Prompt.d.ts +20 -20
  225. package/dist/unstable/ai/Prompt.d.ts.map +1 -1
  226. package/dist/unstable/ai/Response.d.ts +26 -26
  227. package/dist/unstable/ai/Response.d.ts.map +1 -1
  228. package/dist/unstable/ai/Response.js +1 -1
  229. package/dist/unstable/ai/Response.js.map +1 -1
  230. package/dist/unstable/cli/CliError.d.ts +5 -5
  231. package/dist/unstable/cli/CliOutput.js +37 -6
  232. package/dist/unstable/cli/CliOutput.js.map +1 -1
  233. package/dist/unstable/cli/Command.d.ts +199 -7
  234. package/dist/unstable/cli/Command.d.ts.map +1 -1
  235. package/dist/unstable/cli/Command.js +116 -6
  236. package/dist/unstable/cli/Command.js.map +1 -1
  237. package/dist/unstable/cli/HelpDoc.d.ts +60 -2
  238. package/dist/unstable/cli/HelpDoc.d.ts.map +1 -1
  239. package/dist/unstable/cli/internal/command.d.ts +11 -1
  240. package/dist/unstable/cli/internal/command.d.ts.map +1 -1
  241. package/dist/unstable/cli/internal/command.js +33 -8
  242. package/dist/unstable/cli/internal/command.js.map +1 -1
  243. package/dist/unstable/cli/internal/completions/CommandDescriptor.js +7 -2
  244. package/dist/unstable/cli/internal/completions/CommandDescriptor.js.map +1 -1
  245. package/dist/unstable/cli/internal/parser.js +10 -2
  246. package/dist/unstable/cli/internal/parser.js.map +1 -1
  247. package/dist/unstable/cluster/ClusterCron.d.ts +1 -1
  248. package/dist/unstable/cluster/ClusterCron.d.ts.map +1 -1
  249. package/dist/unstable/cluster/ClusterCron.js +1 -1
  250. package/dist/unstable/cluster/ClusterCron.js.map +1 -1
  251. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  252. package/dist/unstable/cluster/ClusterWorkflowEngine.js +2 -1
  253. package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
  254. package/dist/unstable/cluster/Entity.d.ts +5 -4
  255. package/dist/unstable/cluster/Entity.d.ts.map +1 -1
  256. package/dist/unstable/cluster/Entity.js.map +1 -1
  257. package/dist/unstable/cluster/EntityResource.d.ts +2 -2
  258. package/dist/unstable/cluster/EntityResource.d.ts.map +1 -1
  259. package/dist/unstable/cluster/Envelope.d.ts +1 -1
  260. package/dist/unstable/cluster/K8sHttpClient.d.ts +1 -1
  261. package/dist/unstable/cluster/K8sHttpClient.js +1 -1
  262. package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
  263. package/dist/unstable/cluster/Message.d.ts +10 -10
  264. package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
  265. package/dist/unstable/cluster/MessageStorage.js +2 -1
  266. package/dist/unstable/cluster/MessageStorage.js.map +1 -1
  267. package/dist/unstable/cluster/Reply.d.ts +6 -6
  268. package/dist/unstable/cluster/Runner.d.ts +1 -1
  269. package/dist/unstable/cluster/Runners.d.ts.map +1 -1
  270. package/dist/unstable/cluster/Runners.js +4 -3
  271. package/dist/unstable/cluster/Runners.js.map +1 -1
  272. package/dist/unstable/cluster/Sharding.d.ts +2 -2
  273. package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
  274. package/dist/unstable/cluster/Sharding.js +8 -6
  275. package/dist/unstable/cluster/Sharding.js.map +1 -1
  276. package/dist/unstable/cluster/ShardingConfig.d.ts +21 -21
  277. package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
  278. package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
  279. package/dist/unstable/cluster/SqlRunnerStorage.js +1 -1
  280. package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
  281. package/dist/unstable/cluster/internal/entityManager.js +5 -4
  282. package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
  283. package/dist/unstable/cluster/internal/entityReaper.js +2 -1
  284. package/dist/unstable/cluster/internal/entityReaper.js.map +1 -1
  285. package/dist/unstable/cluster/internal/resourceRef.js +2 -1
  286. package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
  287. package/dist/unstable/devtools/DevToolsSchema.d.ts +36 -36
  288. package/dist/unstable/encoding/Msgpack.d.ts +1 -1
  289. package/dist/unstable/encoding/Ndjson.d.ts +1 -1
  290. package/dist/unstable/encoding/Sse.d.ts +4 -4
  291. package/dist/unstable/encoding/Sse.d.ts.map +1 -1
  292. package/dist/unstable/encoding/Sse.js.map +1 -1
  293. package/dist/unstable/eventlog/EventJournal.d.ts +2 -2
  294. package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
  295. package/dist/unstable/eventlog/EventLog.js +2 -1
  296. package/dist/unstable/eventlog/EventLog.js.map +1 -1
  297. package/dist/unstable/eventlog/EventLogRemote.d.ts +6 -6
  298. package/dist/unstable/http/Cookies.d.ts +3 -3
  299. package/dist/unstable/http/Cookies.d.ts.map +1 -1
  300. package/dist/unstable/http/Cookies.js +2 -2
  301. package/dist/unstable/http/Cookies.js.map +1 -1
  302. package/dist/unstable/http/Headers.d.ts.map +1 -1
  303. package/dist/unstable/http/Headers.js +27 -10
  304. package/dist/unstable/http/Headers.js.map +1 -1
  305. package/dist/unstable/http/HttpBody.d.ts +17 -2
  306. package/dist/unstable/http/HttpBody.d.ts.map +1 -1
  307. package/dist/unstable/http/HttpBody.js +28 -1
  308. package/dist/unstable/http/HttpBody.js.map +1 -1
  309. package/dist/unstable/http/HttpClient.d.ts +11 -11
  310. package/dist/unstable/http/HttpClient.d.ts.map +1 -1
  311. package/dist/unstable/http/HttpClient.js +4 -4
  312. package/dist/unstable/http/HttpClient.js.map +1 -1
  313. package/dist/unstable/http/HttpClientError.d.ts +7 -7
  314. package/dist/unstable/http/HttpClientRequest.d.ts +27 -11
  315. package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
  316. package/dist/unstable/http/HttpClientRequest.js +15 -3
  317. package/dist/unstable/http/HttpClientRequest.js.map +1 -1
  318. package/dist/unstable/http/HttpEffect.d.ts.map +1 -1
  319. package/dist/unstable/http/HttpEffect.js +30 -33
  320. package/dist/unstable/http/HttpEffect.js.map +1 -1
  321. package/dist/unstable/http/HttpMethod.d.ts +4 -4
  322. package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
  323. package/dist/unstable/http/HttpMethod.js +3 -3
  324. package/dist/unstable/http/HttpMethod.js.map +1 -1
  325. package/dist/unstable/http/HttpMiddleware.d.ts +1 -6
  326. package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
  327. package/dist/unstable/http/HttpMiddleware.js +4 -9
  328. package/dist/unstable/http/HttpMiddleware.js.map +1 -1
  329. package/dist/unstable/http/HttpServerError.d.ts +14 -32
  330. package/dist/unstable/http/HttpServerError.d.ts.map +1 -1
  331. package/dist/unstable/http/HttpServerError.js +11 -27
  332. package/dist/unstable/http/HttpServerError.js.map +1 -1
  333. package/dist/unstable/http/HttpServerRespondable.d.ts +2 -2
  334. package/dist/unstable/http/HttpServerRespondable.d.ts.map +1 -1
  335. package/dist/unstable/http/HttpServerRespondable.js +5 -5
  336. package/dist/unstable/http/HttpServerRespondable.js.map +1 -1
  337. package/dist/unstable/http/HttpServerResponse.d.ts +2 -1
  338. package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
  339. package/dist/unstable/http/HttpServerResponse.js +3 -1
  340. package/dist/unstable/http/HttpServerResponse.js.map +1 -1
  341. package/dist/unstable/http/Multipart.d.ts +3 -3
  342. package/dist/unstable/http/UrlParams.d.ts +14 -6
  343. package/dist/unstable/http/UrlParams.d.ts.map +1 -1
  344. package/dist/unstable/http/UrlParams.js +1 -1
  345. package/dist/unstable/http/UrlParams.js.map +1 -1
  346. package/dist/unstable/httpapi/HttpApiBuilder.js +6 -6
  347. package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
  348. package/dist/unstable/httpapi/HttpApiClient.js +3 -3
  349. package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
  350. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +21 -39
  351. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
  352. package/dist/unstable/httpapi/HttpApiEndpoint.js +15 -24
  353. package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
  354. package/dist/unstable/httpapi/HttpApiError.d.ts +11 -0
  355. package/dist/unstable/httpapi/HttpApiError.d.ts.map +1 -1
  356. package/dist/unstable/httpapi/HttpApiError.js +29 -9
  357. package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
  358. package/dist/unstable/httpapi/HttpApiScalar.d.ts +6 -0
  359. package/dist/unstable/httpapi/HttpApiScalar.d.ts.map +1 -1
  360. package/dist/unstable/httpapi/HttpApiScalar.js.map +1 -1
  361. package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
  362. package/dist/unstable/httpapi/OpenApi.js +18 -16
  363. package/dist/unstable/httpapi/OpenApi.js.map +1 -1
  364. package/dist/unstable/observability/Otlp.d.ts +12 -12
  365. package/dist/unstable/observability/Otlp.d.ts.map +1 -1
  366. package/dist/unstable/observability/OtlpExporter.d.ts +2 -2
  367. package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
  368. package/dist/unstable/observability/OtlpExporter.js +1 -1
  369. package/dist/unstable/observability/OtlpExporter.js.map +1 -1
  370. package/dist/unstable/observability/OtlpLogger.d.ts +4 -4
  371. package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
  372. package/dist/unstable/observability/OtlpLogger.js +7 -4
  373. package/dist/unstable/observability/OtlpLogger.js.map +1 -1
  374. package/dist/unstable/observability/OtlpMetrics.d.ts +4 -4
  375. package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
  376. package/dist/unstable/observability/OtlpTracer.d.ts +4 -4
  377. package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
  378. package/dist/unstable/persistence/KeyValueStore.d.ts +1 -1
  379. package/dist/unstable/persistence/KeyValueStore.js +6 -6
  380. package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
  381. package/dist/unstable/persistence/Persistable.d.ts +2 -2
  382. package/dist/unstable/persistence/Persistable.d.ts.map +1 -1
  383. package/dist/unstable/persistence/PersistedCache.d.ts +6 -5
  384. package/dist/unstable/persistence/PersistedCache.d.ts.map +1 -1
  385. package/dist/unstable/persistence/PersistedCache.js +2 -1
  386. package/dist/unstable/persistence/PersistedCache.js.map +1 -1
  387. package/dist/unstable/persistence/PersistedQueue.d.ts +12 -12
  388. package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
  389. package/dist/unstable/persistence/PersistedQueue.js +12 -11
  390. package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
  391. package/dist/unstable/persistence/Persistence.d.ts +1 -1
  392. package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
  393. package/dist/unstable/persistence/Persistence.js +2 -2
  394. package/dist/unstable/persistence/Persistence.js.map +1 -1
  395. package/dist/unstable/persistence/RateLimiter.d.ts +3 -3
  396. package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
  397. package/dist/unstable/persistence/RateLimiter.js +1 -1
  398. package/dist/unstable/persistence/RateLimiter.js.map +1 -1
  399. package/dist/unstable/process/ChildProcess.d.ts +2 -2
  400. package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
  401. package/dist/unstable/process/ChildProcessSpawner.d.ts +6 -0
  402. package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
  403. package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
  404. package/dist/unstable/reactivity/Atom.d.ts +6 -6
  405. package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
  406. package/dist/unstable/reactivity/Atom.js +15 -12
  407. package/dist/unstable/reactivity/Atom.js.map +1 -1
  408. package/dist/unstable/reactivity/AtomHttpApi.d.ts +6 -6
  409. package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
  410. package/dist/unstable/reactivity/AtomHttpApi.js +3 -3
  411. package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
  412. package/dist/unstable/reactivity/AtomRegistry.d.ts +6 -0
  413. package/dist/unstable/reactivity/AtomRegistry.d.ts.map +1 -1
  414. package/dist/unstable/reactivity/AtomRegistry.js +22 -1
  415. package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
  416. package/dist/unstable/reactivity/AtomRpc.d.ts +1 -1
  417. package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
  418. package/dist/unstable/reactivity/AtomRpc.js +1 -1
  419. package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
  420. package/dist/unstable/reactivity/Hydration.d.ts +39 -0
  421. package/dist/unstable/reactivity/Hydration.d.ts.map +1 -0
  422. package/dist/unstable/reactivity/Hydration.js +76 -0
  423. package/dist/unstable/reactivity/Hydration.js.map +1 -0
  424. package/dist/unstable/reactivity/index.d.ts +4 -0
  425. package/dist/unstable/reactivity/index.d.ts.map +1 -1
  426. package/dist/unstable/reactivity/index.js +4 -0
  427. package/dist/unstable/reactivity/index.js.map +1 -1
  428. package/dist/unstable/rpc/Rpc.d.ts +2 -2
  429. package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
  430. package/dist/unstable/rpc/RpcClient.d.ts +5 -26
  431. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  432. package/dist/unstable/rpc/RpcClient.js +6 -13
  433. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  434. package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
  435. package/dist/unstable/rpc/RpcServer.js +9 -3
  436. package/dist/unstable/rpc/RpcServer.js.map +1 -1
  437. package/dist/unstable/rpc/Utils.d.ts.map +1 -1
  438. package/dist/unstable/rpc/Utils.js +2 -1
  439. package/dist/unstable/rpc/Utils.js.map +1 -1
  440. package/dist/unstable/schema/Model.d.ts +4 -4
  441. package/dist/unstable/schema/Model.d.ts.map +1 -1
  442. package/dist/unstable/schema/VariantSchema.d.ts +2 -2
  443. package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
  444. package/dist/unstable/schema/VariantSchema.js +13 -2
  445. package/dist/unstable/schema/VariantSchema.js.map +1 -1
  446. package/dist/unstable/socket/Socket.d.ts +4 -4
  447. package/dist/unstable/socket/Socket.d.ts.map +1 -1
  448. package/dist/unstable/socket/Socket.js +3 -2
  449. package/dist/unstable/socket/Socket.js.map +1 -1
  450. package/dist/unstable/socket/SocketServer.d.ts +3 -3
  451. package/dist/unstable/sql/Migrator.d.ts +1 -1
  452. package/dist/unstable/sql/SqlError.d.ts +2 -2
  453. package/dist/unstable/sql/SqlModel.d.ts +2 -2
  454. package/dist/unstable/sql/SqlModel.d.ts.map +1 -1
  455. package/dist/unstable/sql/SqlSchema.d.ts +24 -1
  456. package/dist/unstable/sql/SqlSchema.d.ts.map +1 -1
  457. package/dist/unstable/sql/SqlSchema.js +24 -3
  458. package/dist/unstable/sql/SqlSchema.js.map +1 -1
  459. package/dist/unstable/sql/Statement.js +0 -1
  460. package/dist/unstable/sql/Statement.js.map +1 -1
  461. package/dist/unstable/workers/Worker.d.ts.map +1 -1
  462. package/dist/unstable/workers/Worker.js +2 -1
  463. package/dist/unstable/workers/Worker.js.map +1 -1
  464. package/dist/unstable/workflow/DurableClock.d.ts +3 -3
  465. package/dist/unstable/workflow/DurableClock.d.ts.map +1 -1
  466. package/dist/unstable/workflow/DurableClock.js +3 -3
  467. package/dist/unstable/workflow/DurableClock.js.map +1 -1
  468. package/dist/unstable/workflow/DurableDeferred.js +2 -2
  469. package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
  470. package/dist/unstable/workflow/Workflow.d.ts +2 -2
  471. package/dist/unstable/workflow/WorkflowEngine.d.ts +8 -1
  472. package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
  473. package/dist/unstable/workflow/WorkflowEngine.js +133 -1
  474. package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
  475. package/package.json +2 -2
  476. package/src/Cache.ts +3 -3
  477. package/src/Cause.ts +1 -1
  478. package/src/Channel.ts +15 -13
  479. package/src/Combiner.ts +280 -13
  480. package/src/Config.ts +3 -3
  481. package/src/Data.ts +538 -374
  482. package/src/DateTime.ts +24 -164
  483. package/src/Duration.ts +15 -15
  484. package/src/Effect.ts +378 -269
  485. package/src/Encoding.ts +879 -0
  486. package/src/Equal.ts +278 -111
  487. package/src/ErrorReporter.ts +459 -0
  488. package/src/FileSystem.ts +7 -8
  489. package/src/Filter.ts +48 -1
  490. package/src/Formatter.ts +253 -51
  491. package/src/Graph.ts +8 -5
  492. package/src/JsonSchema.ts +383 -10
  493. package/src/Latch.ts +112 -0
  494. package/src/LayerMap.ts +5 -5
  495. package/src/LogLevel.ts +37 -0
  496. package/src/Logger.ts +33 -100
  497. package/src/Metric.ts +4 -4
  498. package/src/Optic.ts +948 -19
  499. package/src/Pipeable.ts +32 -1
  500. package/src/PlatformError.ts +5 -5
  501. package/src/Pool.ts +13 -11
  502. package/src/PubSub.ts +10 -9
  503. package/src/Queue.ts +0 -1
  504. package/src/Random.ts +33 -14
  505. package/src/RcMap.ts +5 -5
  506. package/src/RcRef.ts +1 -1
  507. package/src/Reducer.ts +166 -7
  508. package/src/References.ts +4 -4
  509. package/src/Request.ts +3 -2
  510. package/src/RequestResolver.ts +9 -29
  511. package/src/Result.ts +13 -0
  512. package/src/Schedule.ts +279 -140
  513. package/src/Schema.ts +575 -113
  514. package/src/SchemaAST.ts +2 -1
  515. package/src/SchemaGetter.ts +12 -14
  516. package/src/SchemaRepresentation.ts +43 -24
  517. package/src/SchemaTransformation.ts +104 -0
  518. package/src/ScopedCache.ts +3 -3
  519. package/src/Semaphore.ts +356 -0
  520. package/src/Stream.ts +50 -49
  521. package/src/Struct.ts +26 -0
  522. package/src/SubscriptionRef.ts +3 -2
  523. package/src/SynchronizedRef.ts +3 -2
  524. package/src/Types.ts +12 -2
  525. package/src/index.ts +507 -20
  526. package/src/internal/core.ts +12 -5
  527. package/src/internal/dateTime.ts +9 -30
  528. package/src/internal/effect.ts +194 -51
  529. package/src/internal/hashMap.ts +2 -2
  530. package/src/internal/random.ts +20 -0
  531. package/src/internal/rcRef.ts +4 -3
  532. package/src/testing/TestClock.ts +13 -11
  533. package/src/testing/TestSchema.ts +8 -8
  534. package/src/unstable/ai/AiError.ts +2 -2
  535. package/src/unstable/ai/Chat.ts +12 -11
  536. package/src/unstable/ai/LanguageModel.ts +74 -3
  537. package/src/unstable/ai/McpServer.ts +2 -2
  538. package/src/unstable/ai/Prompt.ts +37 -37
  539. package/src/unstable/ai/Response.ts +25 -25
  540. package/src/unstable/cli/CliOutput.ts +45 -6
  541. package/src/unstable/cli/Command.ts +298 -11
  542. package/src/unstable/cli/HelpDoc.ts +68 -2
  543. package/src/unstable/cli/internal/command.ts +47 -11
  544. package/src/unstable/cli/internal/completions/CommandDescriptor.ts +7 -2
  545. package/src/unstable/cli/internal/parser.ts +11 -3
  546. package/src/unstable/cluster/ClusterCron.ts +2 -2
  547. package/src/unstable/cluster/ClusterWorkflowEngine.ts +3 -2
  548. package/src/unstable/cluster/Entity.ts +7 -6
  549. package/src/unstable/cluster/EntityResource.ts +4 -4
  550. package/src/unstable/cluster/Envelope.ts +1 -1
  551. package/src/unstable/cluster/K8sHttpClient.ts +1 -1
  552. package/src/unstable/cluster/MessageStorage.ts +3 -5
  553. package/src/unstable/cluster/Runners.ts +6 -5
  554. package/src/unstable/cluster/Sharding.ts +11 -9
  555. package/src/unstable/cluster/ShardingConfig.ts +10 -11
  556. package/src/unstable/cluster/SqlRunnerStorage.ts +1 -1
  557. package/src/unstable/cluster/internal/entityManager.ts +9 -8
  558. package/src/unstable/cluster/internal/entityReaper.ts +2 -1
  559. package/src/unstable/cluster/internal/resourceRef.ts +2 -1
  560. package/src/unstable/encoding/Sse.ts +2 -4
  561. package/src/unstable/eventlog/EventLog.ts +2 -1
  562. package/src/unstable/http/Cookies.ts +3 -3
  563. package/src/unstable/http/Headers.ts +28 -13
  564. package/src/unstable/http/HttpBody.ts +42 -1
  565. package/src/unstable/http/HttpClient.ts +19 -19
  566. package/src/unstable/http/HttpClientRequest.ts +38 -13
  567. package/src/unstable/http/HttpEffect.ts +27 -30
  568. package/src/unstable/http/HttpMethod.ts +16 -4
  569. package/src/unstable/http/HttpMiddleware.ts +5 -10
  570. package/src/unstable/http/HttpServerError.ts +13 -27
  571. package/src/unstable/http/HttpServerRespondable.ts +6 -6
  572. package/src/unstable/http/HttpServerResponse.ts +4 -2
  573. package/src/unstable/http/Multipart.ts +2 -2
  574. package/src/unstable/http/UrlParams.ts +20 -5
  575. package/src/unstable/httpapi/HttpApiBuilder.ts +6 -5
  576. package/src/unstable/httpapi/HttpApiClient.ts +3 -3
  577. package/src/unstable/httpapi/HttpApiEndpoint.ts +47 -72
  578. package/src/unstable/httpapi/HttpApiError.ts +30 -9
  579. package/src/unstable/httpapi/HttpApiScalar.ts +6 -0
  580. package/src/unstable/httpapi/OpenApi.ts +18 -16
  581. package/src/unstable/observability/Otlp.ts +12 -12
  582. package/src/unstable/observability/OtlpExporter.ts +3 -3
  583. package/src/unstable/observability/OtlpLogger.ts +13 -9
  584. package/src/unstable/observability/OtlpMetrics.ts +4 -4
  585. package/src/unstable/observability/OtlpTracer.ts +4 -4
  586. package/src/unstable/persistence/KeyValueStore.ts +6 -6
  587. package/src/unstable/persistence/Persistable.ts +2 -2
  588. package/src/unstable/persistence/PersistedCache.ts +20 -9
  589. package/src/unstable/persistence/PersistedQueue.ts +25 -24
  590. package/src/unstable/persistence/Persistence.ts +3 -3
  591. package/src/unstable/persistence/RateLimiter.ts +4 -4
  592. package/src/unstable/process/ChildProcess.ts +2 -2
  593. package/src/unstable/process/ChildProcessSpawner.ts +6 -0
  594. package/src/unstable/reactivity/Atom.ts +20 -18
  595. package/src/unstable/reactivity/AtomHttpApi.ts +19 -18
  596. package/src/unstable/reactivity/AtomRegistry.ts +29 -1
  597. package/src/unstable/reactivity/AtomRpc.ts +3 -3
  598. package/src/unstable/reactivity/Hydration.ts +112 -0
  599. package/src/unstable/reactivity/index.ts +5 -0
  600. package/src/unstable/rpc/Rpc.ts +3 -3
  601. package/src/unstable/rpc/RpcClient.ts +12 -54
  602. package/src/unstable/rpc/RpcServer.ts +10 -4
  603. package/src/unstable/rpc/Utils.ts +2 -1
  604. package/src/unstable/schema/VariantSchema.ts +36 -7
  605. package/src/unstable/socket/Socket.ts +7 -6
  606. package/src/unstable/sql/SqlModel.ts +2 -2
  607. package/src/unstable/sql/SqlSchema.ts +62 -13
  608. package/src/unstable/sql/Statement.ts +0 -1
  609. package/src/unstable/workers/Worker.ts +2 -1
  610. package/src/unstable/workflow/DurableClock.ts +8 -8
  611. package/src/unstable/workflow/DurableDeferred.ts +2 -2
  612. package/src/unstable/workflow/WorkflowEngine.ts +181 -2
  613. package/dist/PartitionedSemaphore.d.ts +0 -52
  614. package/dist/PartitionedSemaphore.d.ts.map +0 -1
  615. package/dist/PartitionedSemaphore.js.map +0 -1
  616. package/dist/encoding/Base64.d.ts +0 -67
  617. package/dist/encoding/Base64.d.ts.map +0 -1
  618. package/dist/encoding/Base64.js +0 -146
  619. package/dist/encoding/Base64.js.map +0 -1
  620. package/dist/encoding/Base64Url.d.ts +0 -60
  621. package/dist/encoding/Base64Url.d.ts.map +0 -1
  622. package/dist/encoding/Base64Url.js +0 -89
  623. package/dist/encoding/Base64Url.js.map +0 -1
  624. package/dist/encoding/EncodingError.d.ts +0 -31
  625. package/dist/encoding/EncodingError.d.ts.map +0 -1
  626. package/dist/encoding/EncodingError.js +0 -22
  627. package/dist/encoding/EncodingError.js.map +0 -1
  628. package/dist/encoding/Hex.d.ts +0 -61
  629. package/dist/encoding/Hex.d.ts.map +0 -1
  630. package/dist/encoding/Hex.js +0 -115
  631. package/dist/encoding/Hex.js.map +0 -1
  632. package/dist/encoding/index.d.ts +0 -26
  633. package/dist/encoding/index.d.ts.map +0 -1
  634. package/dist/encoding/index.js +0 -27
  635. package/dist/encoding/index.js.map +0 -1
  636. package/src/PartitionedSemaphore.ts +0 -182
  637. package/src/encoding/Base64.ts +0 -366
  638. package/src/encoding/Base64Url.ts +0 -104
  639. package/src/encoding/EncodingError.ts +0 -35
  640. package/src/encoding/Hex.ts +0 -390
  641. package/src/encoding/index.ts +0 -31
@@ -2,6 +2,9 @@
2
2
  * @since 4.0.0
3
3
  */
4
4
 
5
+ import type { NonEmptyReadonlyArray } from "../../Array.ts"
6
+ import type * as ServiceMap from "../../ServiceMap.ts"
7
+
5
8
  /**
6
9
  * Structured representation of help documentation for a command.
7
10
  * This data structure is independent of formatting, allowing for
@@ -9,11 +12,13 @@
9
12
  *
10
13
  * @example
11
14
  * ```ts
15
+ * import { ServiceMap } from "effect"
12
16
  * import type * as HelpDoc from "effect/unstable/cli/HelpDoc"
13
17
  *
14
18
  * const deployCommandHelp: HelpDoc.HelpDoc = {
15
19
  * description: "Deploy your application to the cloud",
16
20
  * usage: "myapp deploy [options] <target>",
21
+ * annotations: ServiceMap.empty(),
17
22
  * flags: [
18
23
  * {
19
24
  * name: "verbose",
@@ -62,6 +67,11 @@ export interface HelpDoc {
62
67
  */
63
68
  readonly flags: ReadonlyArray<FlagDoc>
64
69
 
70
+ /**
71
+ * Custom command annotations.
72
+ */
73
+ readonly annotations: ServiceMap.ServiceMap<never>
74
+
65
75
  /**
66
76
  * List of positional arguments for this command
67
77
  */
@@ -70,7 +80,30 @@ export interface HelpDoc {
70
80
  /**
71
81
  * Optional list of subcommands if this is a parent command
72
82
  */
73
- readonly subcommands?: ReadonlyArray<SubcommandDoc>
83
+ readonly subcommands?: ReadonlyArray<SubcommandGroupDoc>
84
+
85
+ /**
86
+ * Optional concrete usage examples for the command
87
+ */
88
+ readonly examples?: ReadonlyArray<ExampleDoc>
89
+ }
90
+
91
+ /**
92
+ * Documentation for a command usage example
93
+ *
94
+ * @since 4.0.0
95
+ * @category models
96
+ */
97
+ export interface ExampleDoc {
98
+ /**
99
+ * Command line invocation example
100
+ */
101
+ readonly command: string
102
+
103
+ /**
104
+ * Optional explanation for the example
105
+ */
106
+ readonly description?: string | undefined
74
107
  }
75
108
 
76
109
  /**
@@ -132,15 +165,18 @@ export interface FlagDoc {
132
165
  *
133
166
  * @example
134
167
  * ```ts
168
+ * import { ServiceMap } from "effect"
135
169
  * import type { HelpDoc } from "effect/unstable/cli"
136
170
  *
137
171
  * const deploySubcommand: HelpDoc.SubcommandDoc = {
138
172
  * name: "deploy",
173
+ * shortDescription: "Deploy app",
139
174
  * description: "Deploy the application to the cloud"
140
175
  * }
141
176
  *
142
177
  * const buildSubcommand: HelpDoc.SubcommandDoc = {
143
178
  * name: "build",
179
+ * shortDescription: undefined,
144
180
  * description: "Build the application for production"
145
181
  * }
146
182
  *
@@ -148,8 +184,12 @@ export interface FlagDoc {
148
184
  * const mainCommandHelp: HelpDoc.HelpDoc = {
149
185
  * description: "Cloud deployment tool",
150
186
  * usage: "myapp <command> [options]",
187
+ * annotations: ServiceMap.empty(),
151
188
  * flags: [],
152
- * subcommands: [deploySubcommand, buildSubcommand]
189
+ * subcommands: [{
190
+ * group: undefined,
191
+ * commands: [deploySubcommand, buildSubcommand]
192
+ * }]
153
193
  * }
154
194
  * ```
155
195
  *
@@ -162,17 +202,42 @@ export interface SubcommandDoc {
162
202
  */
163
203
  readonly name: string
164
204
 
205
+ /**
206
+ * Optional short description of what the subcommand does.
207
+ */
208
+ readonly shortDescription: string | undefined
209
+
165
210
  /**
166
211
  * Brief description of what the subcommand does
167
212
  */
168
213
  readonly description: string
169
214
  }
170
215
 
216
+ /**
217
+ * Documentation for a grouped subcommand listing
218
+ *
219
+ * @since 4.0.0
220
+ * @category models
221
+ */
222
+ export interface SubcommandGroupDoc {
223
+ /**
224
+ * Group name used in help output.
225
+ * Undefined means the default ungrouped section.
226
+ */
227
+ readonly group: string | undefined
228
+
229
+ /**
230
+ * Subcommands in this group.
231
+ */
232
+ readonly commands: NonEmptyReadonlyArray<SubcommandDoc>
233
+ }
234
+
171
235
  /**
172
236
  * Documentation for a positional argument
173
237
  *
174
238
  * @example
175
239
  * ```ts
240
+ * import { ServiceMap } from "effect"
176
241
  * import type { HelpDoc } from "effect/unstable/cli"
177
242
  *
178
243
  * const sourceArg: HelpDoc.ArgDoc = {
@@ -195,6 +260,7 @@ export interface SubcommandDoc {
195
260
  * const copyCommandHelp: HelpDoc.HelpDoc = {
196
261
  * description: "Copy files from source to destination",
197
262
  * usage: "copy <source> [files...]",
263
+ * annotations: ServiceMap.empty(),
198
264
  * flags: [],
199
265
  * args: [sourceArg, filesArg]
200
266
  * }
@@ -5,13 +5,14 @@
5
5
  * Internal implementation details for CLI commands.
6
6
  * Public API is in ../Command.ts
7
7
  */
8
+ import * as Arr from "../../../Array.ts"
8
9
  import * as Effect from "../../../Effect.ts"
9
10
  import { YieldableProto } from "../../../internal/core.ts"
10
11
  import { pipeArguments } from "../../../Pipeable.ts"
11
12
  import * as Predicate from "../../../Predicate.ts"
12
13
  import * as ServiceMap from "../../../ServiceMap.ts"
13
14
  import * as CliError from "../CliError.ts"
14
- import type { ArgDoc, FlagDoc, HelpDoc, SubcommandDoc } from "../HelpDoc.ts"
15
+ import type { ArgDoc, ExampleDoc, FlagDoc, HelpDoc, SubcommandGroupDoc } from "../HelpDoc.ts"
15
16
  import * as Param from "../Param.ts"
16
17
  import * as Primitive from "../Primitive.ts"
17
18
  import { type ConfigInternal, reconstructTree } from "./config.ts"
@@ -22,6 +23,11 @@ import { type ConfigInternal, reconstructTree } from "./config.ts"
22
23
 
23
24
  import type { Command, CommandContext, Environment, ParsedTokens } from "../Command.ts"
24
25
 
26
+ interface SubcommandGroup {
27
+ readonly group: string | undefined
28
+ readonly commands: Arr.NonEmptyReadonlyArray<Command<any, unknown, unknown, unknown>>
29
+ }
30
+
25
31
  /**
26
32
  * Internal implementation interface with all the machinery.
27
33
  * Use toImpl() to access from internal code.
@@ -29,6 +35,7 @@ import type { Command, CommandContext, Environment, ParsedTokens } from "../Comm
29
35
  export interface CommandInternal<Name extends string, Input, E, R> extends Command<Name, Input, E, R> {
30
36
  readonly config: ConfigInternal
31
37
  readonly service: ServiceMap.Service<CommandContext<Name>, Input>
38
+ readonly annotations: ServiceMap.ServiceMap<never>
32
39
  readonly parse: (input: ParsedTokens) => Effect.Effect<Input, CliError.CliError, Environment>
33
40
  readonly handle: (
34
41
  input: Input,
@@ -80,8 +87,11 @@ export const makeCommand = <const Name extends string, Input, E, R>(options: {
80
87
  readonly name: Name
81
88
  readonly config: ConfigInternal
82
89
  readonly service?: ServiceMap.Service<CommandContext<Name>, Input> | undefined
90
+ readonly annotations?: ServiceMap.ServiceMap<never> | undefined
83
91
  readonly description?: string | undefined
84
- readonly subcommands?: ReadonlyArray<Command<any, unknown, unknown, unknown>> | undefined
92
+ readonly shortDescription?: string | undefined
93
+ readonly examples?: ReadonlyArray<Command.Example> | undefined
94
+ readonly subcommands?: ReadonlyArray<SubcommandGroup> | undefined
85
95
  readonly parse?: ((input: ParsedTokens) => Effect.Effect<Input, CliError.CliError, Environment>) | undefined
86
96
  readonly handle?:
87
97
  | ((input: Input, commandPath: ReadonlyArray<string>) => Effect.Effect<void, E, R | Environment>)
@@ -89,6 +99,8 @@ export const makeCommand = <const Name extends string, Input, E, R>(options: {
89
99
  }): Command<Name, Input, E, R> => {
90
100
  const service = options.service ?? ServiceMap.Service<CommandContext<Name>, Input>(`${TypeId}/${options.name}`)
91
101
  const config = options.config
102
+ const annotations = options.annotations ?? ServiceMap.empty()
103
+ const subcommands = options.subcommands ?? []
92
104
 
93
105
  const handle = (
94
106
  input: Input,
@@ -123,8 +135,7 @@ export const makeCommand = <const Name extends string, Input, E, R>(options: {
123
135
  }
124
136
 
125
137
  let usage = commandPath.length > 0 ? commandPath.join(" ") : options.name
126
- const subcommands = options.subcommands ?? []
127
- if (subcommands.length > 0) {
138
+ if (subcommands.some((group) => group.commands.length > 0)) {
128
139
  usage += " <subcommand>"
129
140
  }
130
141
  usage += " [flags]"
@@ -147,24 +158,38 @@ export const makeCommand = <const Name extends string, Input, E, R>(options: {
147
158
  }
148
159
  }
149
160
 
150
- const subcommandDocs: Array<SubcommandDoc> = subcommands.map((sub) => ({
151
- name: sub.name,
152
- description: sub.description ?? ""
153
- }))
161
+ const subcommandDocs: Array<SubcommandGroupDoc> = []
162
+
163
+ for (const group of subcommands) {
164
+ subcommandDocs.push({
165
+ group: group.group,
166
+ commands: Arr.map(group.commands, (subcommand) => ({
167
+ name: subcommand.name,
168
+ shortDescription: subcommand.shortDescription,
169
+ description: subcommand.description ?? ""
170
+ }))
171
+ })
172
+ }
173
+
174
+ const examples: ReadonlyArray<ExampleDoc> = options.examples ?? []
154
175
 
155
176
  return {
156
177
  description: options.description ?? "",
157
178
  usage,
158
179
  flags,
180
+ annotations,
159
181
  ...(args.length > 0 && { args }),
160
- ...(subcommandDocs.length > 0 && { subcommands: subcommandDocs })
182
+ ...(subcommandDocs.length > 0 && { subcommands: subcommandDocs }),
183
+ ...(examples.length > 0 && { examples })
161
184
  }
162
185
  }
163
186
 
164
187
  return Object.assign(Object.create(Proto), {
165
188
  [TypeId]: TypeId,
166
189
  name: options.name,
167
- subcommands: options.subcommands ?? [],
190
+ examples: options.examples ?? [],
191
+ annotations,
192
+ subcommands,
168
193
  config,
169
194
  service,
170
195
  parse,
@@ -172,6 +197,9 @@ export const makeCommand = <const Name extends string, Input, E, R>(options: {
172
197
  buildHelpDoc,
173
198
  ...(Predicate.isNotUndefined(options.description)
174
199
  ? { description: options.description }
200
+ : {}),
201
+ ...(Predicate.isNotUndefined(options.shortDescription)
202
+ ? { shortDescription: options.shortDescription }
175
203
  : {})
176
204
  })
177
205
  }
@@ -255,7 +283,15 @@ export const getHelpForCommandPath = <Name extends string, Input, E, R>(
255
283
  // Navigate through the command path to find the target command
256
284
  for (let i = 1; i < commandPath.length; i++) {
257
285
  const subcommandName = commandPath[i]
258
- const subcommand = currentCommand.subcommands.find((sub) => sub.name === subcommandName)
286
+ let subcommand: Command.Any | undefined = undefined
287
+
288
+ for (const group of currentCommand.subcommands) {
289
+ subcommand = group.commands.find((sub) => sub.name === subcommandName)
290
+ if (subcommand) {
291
+ break
292
+ }
293
+ }
294
+
259
295
  if (subcommand) {
260
296
  currentCommand = subcommand
261
297
  }
@@ -157,11 +157,16 @@ export const fromCommand = (cmd: Command.Any): CommandDescriptor => {
157
157
  }
158
158
  }
159
159
 
160
- const subcommands: Array<CommandDescriptor> = cmd.subcommands.map(fromCommand)
160
+ const subcommands: Array<CommandDescriptor> = []
161
+ for (const group of cmd.subcommands) {
162
+ for (const subcommand of group.commands) {
163
+ subcommands.push(fromCommand(subcommand))
164
+ }
165
+ }
161
166
 
162
167
  return {
163
168
  name: cmd.name,
164
- description: cmd.description,
169
+ description: cmd.shortDescription ?? cmd.description,
165
170
  flags,
166
171
  arguments: args,
167
172
  subcommands
@@ -273,8 +273,16 @@ const createFlagRegistry = (params: ReadonlyArray<FlagParam>): FlagRegistry => {
273
273
  }
274
274
 
275
275
  const buildSubcommandIndex = (
276
- subcommands: ReadonlyArray<Command<string, unknown, unknown, unknown>>
277
- ): Map<string, Command<string, unknown, unknown, unknown>> => new Map(subcommands.map((sub) => [sub.name, sub]))
276
+ subcommands: Command.Any["subcommands"]
277
+ ): Map<string, Command<string, unknown, unknown, unknown>> => {
278
+ const index = new Map<string, Command<string, unknown, unknown, unknown>>()
279
+ for (const group of subcommands) {
280
+ for (const subcommand of group.commands) {
281
+ index.set(subcommand.name, subcommand)
282
+ }
283
+ }
284
+ return index
285
+ }
278
286
 
279
287
  /* ========================================================================== */
280
288
  /* Flag Accumulator */
@@ -506,7 +514,7 @@ const resolveFirstValue = (
506
514
  // Not a subcommand. Check if this looks like a typo.
507
515
  const expectsArgs = toImpl(command).config.arguments.length > 0
508
516
  if (!expectsArgs && subIndex.size > 0) {
509
- const suggestions = suggest(value, command.subcommands.map((s) => s.name))
517
+ const suggestions = suggest(value, Array.from(subIndex.keys()))
510
518
  state.errors.push(
511
519
  new CliError.UnknownSubcommand({
512
520
  subcommand: value,
@@ -51,7 +51,7 @@ export const make = <E, R>(options: {
51
51
  *
52
52
  * Defaults to "1 day".
53
53
  */
54
- readonly skipIfOlderThan?: Duration.DurationInput | undefined
54
+ readonly skipIfOlderThan?: Duration.Input | undefined
55
55
  }): Layer.Layer<never, never, Sharding | Exclude<R, Scope>> => {
56
56
  const CronEntity = Entity.make(`ClusterCron/${options.name}`, [
57
57
  Rpc.make("run", {
@@ -76,7 +76,7 @@ export const make = <E, R>(options: {
76
76
  )
77
77
 
78
78
  const skipIfOlderThan = Option.fromUndefinedOr(options.skipIfOlderThan).pipe(
79
- Option.map(Duration.fromDurationInputUnsafe),
79
+ Option.map(Duration.fromInputUnsafe),
80
80
  Option.getOrElse(() => Duration.days(1))
81
81
  )
82
82
 
@@ -6,6 +6,7 @@ import * as Duration from "../../Duration.ts"
6
6
  import * as Effect from "../../Effect.ts"
7
7
  import * as Exit from "../../Exit.ts"
8
8
  import * as Fiber from "../../Fiber.ts"
9
+ import * as Latch from "../../Latch.ts"
9
10
  import * as Layer from "../../Layer.ts"
10
11
  import * as PrimaryKey from "../../PrimaryKey.ts"
11
12
  import * as RcMap from "../../RcMap.ts"
@@ -106,7 +107,7 @@ export const make = Effect.gen(function*() {
106
107
  readonly services: ServiceMap.ServiceMap<any>
107
108
  }>()
108
109
  const interruptedActivities = new Set<string>()
109
- const activityLatches = new Map<string, Effect.Latch>()
110
+ const activityLatches = new Map<string, Latch.Latch>()
110
111
  const clients = yield* RcMap.make({
111
112
  lookup: Effect.fnUntraced(function*(workflowName: string) {
112
113
  const entity = entities.get(workflowName)
@@ -297,7 +298,7 @@ export const make = Effect.gen(function*() {
297
298
  return Effect.gen(function*() {
298
299
  let entry = activities.get(activityId)
299
300
  while (!entry) {
300
- const latch = Effect.makeLatchUnsafe()
301
+ const latch = Latch.makeUnsafe()
301
302
  activityLatches.set(activityId, latch)
302
303
  yield* latch.await
303
304
  entry = activities.get(activityId)
@@ -4,12 +4,13 @@
4
4
  import * as Arr from "../../Array.ts"
5
5
  import type * as Cause from "../../Cause.ts"
6
6
  import * as Data from "../../Data.ts"
7
- import type { DurationInput } from "../../Duration.ts"
7
+ import type * as Duration from "../../Duration.ts"
8
8
  import * as Effect from "../../Effect.ts"
9
9
  import * as Equal from "../../Equal.ts"
10
10
  import * as Exit from "../../Exit.ts"
11
11
  import { identity } from "../../Function.ts"
12
12
  import * as Hash from "../../Hash.ts"
13
+ import type * as Latch from "../../Latch.ts"
13
14
  import * as Layer from "../../Layer.ts"
14
15
  import * as Predicate from "../../Predicate.ts"
15
16
  import * as Queue from "../../Queue.ts"
@@ -116,7 +117,7 @@ export interface Entity<
116
117
  >(
117
118
  build: Handlers | Effect.Effect<Handlers, never, RX>,
118
119
  options?: {
119
- readonly maxIdleTime?: DurationInput | undefined
120
+ readonly maxIdleTime?: Duration.Input | undefined
120
121
  readonly concurrency?: number | "unbounded" | undefined
121
122
  readonly mailboxCapacity?: number | "unbounded" | undefined
122
123
  readonly disableFatalDefects?: boolean | undefined
@@ -159,7 +160,7 @@ export interface Entity<
159
160
  RX
160
161
  >,
161
162
  options?: {
162
- readonly maxIdleTime?: DurationInput | undefined
163
+ readonly maxIdleTime?: Duration.Input | undefined
163
164
  readonly mailboxCapacity?: number | "unbounded" | undefined
164
165
  readonly disableFatalDefects?: boolean | undefined
165
166
  readonly defectRetryPolicy?: Schedule.Schedule<any, unknown> | undefined
@@ -234,7 +235,7 @@ const Proto = {
234
235
  this: Entity<string, Rpcs>,
235
236
  build: Handlers | Effect.Effect<Handlers, never, RX>,
236
237
  options?: {
237
- readonly maxIdleTime?: DurationInput | undefined
238
+ readonly maxIdleTime?: Duration.Input | undefined
238
239
  readonly concurrency?: number | "unbounded" | undefined
239
240
  readonly mailboxCapacity?: number | "unbounded" | undefined
240
241
  readonly disableFatalDefects?: boolean | undefined
@@ -283,7 +284,7 @@ const Proto = {
283
284
  RX
284
285
  >,
285
286
  options?: {
286
- readonly maxIdleTime?: DurationInput | undefined
287
+ readonly maxIdleTime?: Duration.Input | undefined
287
288
  readonly mailboxCapacity?: number | "unbounded" | undefined
288
289
  readonly disableFatalDefects?: boolean | undefined
289
290
  readonly defectRetryPolicy?: Schedule.Schedule<any, unknown> | undefined
@@ -642,6 +643,6 @@ export const KeepAliveRpc = Rpc.make("Cluster/Entity/keepAlive")
642
643
  * @since 4.0.0
643
644
  * @category Keep alive
644
645
  */
645
- export class KeepAliveLatch extends ServiceMap.Service<KeepAliveLatch, Effect.Latch>()(
646
+ export class KeepAliveLatch extends ServiceMap.Service<KeepAliveLatch, Latch.Latch>()(
646
647
  "effect/cluster/Entity/KeepAliveLatch"
647
648
  ) {}
@@ -62,14 +62,14 @@ export class CloseScope extends ServiceMap.Service<
62
62
  */
63
63
  export const make: <A, E, R>(options: {
64
64
  readonly acquire: Effect.Effect<A, E, R>
65
- readonly idleTimeToLive?: Duration.DurationInput | undefined
65
+ readonly idleTimeToLive?: Duration.Input | undefined
66
66
  }) => Effect.Effect<
67
67
  EntityResource<A, E>,
68
68
  E,
69
69
  Scope.Scope | Exclude<R, CloseScope> | Sharding | Entity.CurrentAddress
70
70
  > = Effect.fnUntraced(function*<A, E, R>(options: {
71
71
  readonly acquire: Effect.Effect<A, E, R>
72
- readonly idleTimeToLive?: Duration.DurationInput | undefined
72
+ readonly idleTimeToLive?: Duration.Input | undefined
73
73
  }) {
74
74
  let shuttingDown = false
75
75
 
@@ -116,14 +116,14 @@ export const make: <A, E, R>(options: {
116
116
  export const makeK8sPod: (
117
117
  spec: v1.Pod,
118
118
  options?: {
119
- readonly idleTimeToLive?: Duration.DurationInput | undefined
119
+ readonly idleTimeToLive?: Duration.Input | undefined
120
120
  } | undefined
121
121
  ) => Effect.Effect<
122
122
  EntityResource<K8sHttpClient.PodStatus>,
123
123
  never,
124
124
  Scope.Scope | Sharding | Entity.CurrentAddress | K8sHttpClient.K8sHttpClient
125
125
  > = Effect.fnUntraced(function*(spec: v1.Pod, options?: {
126
- readonly idleTimeToLive?: Duration.DurationInput | undefined
126
+ readonly idleTimeToLive?: Duration.Input | undefined
127
127
  }) {
128
128
  const createPod = yield* K8sHttpClient.makeCreatePod
129
129
  return yield* make({
@@ -218,7 +218,7 @@ export const PartialJson: Schema.Codec<
218
218
  * @category schemas
219
219
  */
220
220
  export const PartialArray: Schema.mutable<
221
- Schema.Array$<Schema.Codec<AckChunk | Interrupt | PartialRequest, Encoded>>
221
+ Schema.$Array<Schema.Codec<AckChunk | Interrupt | PartialRequest, Encoded>>
222
222
  > = Schema.mutable(Schema.Array(PartialJson))
223
223
 
224
224
  /**
@@ -156,7 +156,7 @@ export const makeCreatePod = Effect.gen(function*() {
156
156
  Effect.tapCause(Effect.logInfo),
157
157
  Effect.orDie
158
158
  )
159
- const deletePod = HttpClientRequest.del(`/v1/namespaces/${namespace}/pods/${name}`).pipe(
159
+ const deletePod = HttpClientRequest.delete(`/v1/namespaces/${namespace}/pods/${name}`).pipe(
160
160
  client.execute,
161
161
  Effect.flatMap((res) => res.json),
162
162
  Effect.catchIf(
@@ -6,6 +6,7 @@ import { Clock } from "../../Clock.ts"
6
6
  import * as Data from "../../Data.ts"
7
7
  import * as Effect from "../../Effect.ts"
8
8
  import * as Exit from "../../Exit.ts"
9
+ import * as Latch from "../../Latch.ts"
9
10
  import * as Layer from "../../Layer.ts"
10
11
  import type * as Option from "../../Option.ts"
11
12
  import type { Predicate } from "../../Predicate.ts"
@@ -718,7 +719,7 @@ export class MemoryDriver extends ServiceMap.Service<MemoryDriver>()("effect/clu
718
719
  return messages
719
720
  }
720
721
 
721
- const replyLatch = yield* Effect.makeLatch()
722
+ const replyLatch = yield* Latch.make()
722
723
 
723
724
  function repliesFor(requestIds: Array<string>) {
724
725
  const replies = Arr.empty<Reply.Encoded>()
@@ -904,10 +905,7 @@ export const layerMemory: Layer.Layer<
904
905
 
905
906
  const EnvelopeWithReply: Schema.Struct<
906
907
  {
907
- readonly envelope: Schema.Codec<
908
- Envelope.PartialRequest | Envelope.AckChunk | Envelope.Interrupt,
909
- unknown
910
- >
908
+ readonly envelope: Schema.Decoder<Envelope.PartialRequest | Envelope.AckChunk | Envelope.Interrupt>
911
909
  readonly lastSentReply: Schema.UndefinedOr<Schema.Codec<Reply.Encoded>>
912
910
  }
913
911
  > = Schema.Struct({
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import * as Effect from "../../Effect.ts"
5
5
  import * as Exit from "../../Exit.ts"
6
+ import * as Latch from "../../Latch.ts"
6
7
  import * as Layer from "../../Layer.ts"
7
8
  import * as Queue from "../../Queue.ts"
8
9
  import * as RcMap from "../../RcMap.ts"
@@ -192,8 +193,8 @@ export const make: (options: Omit<Runners["Service"], "sendLocal" | "notifyLocal
192
193
  }
193
194
 
194
195
  type StorageRequestEntry = {
195
- readonly latch: Effect.Latch
196
- doneLatch: Effect.Latch | undefined
196
+ readonly latch: Latch.Latch
197
+ doneLatch: Latch.Latch | undefined
197
198
  readonly messages: Set<Message.OutgoingRequest<any>>
198
199
  replies: Array<Reply.Reply<any>>
199
200
  }
@@ -204,11 +205,11 @@ export const make: (options: Omit<Runners["Service"], "sendLocal" | "notifyLocal
204
205
  let entry = storageRequests.get(message.envelope.requestId)
205
206
  if (entry) {
206
207
  entry.messages.add(message)
207
- entry.doneLatch ??= Effect.makeLatchUnsafe(false)
208
+ entry.doneLatch ??= Latch.makeUnsafe(false)
208
209
  return yield* entry.doneLatch.await
209
210
  } else {
210
211
  entry = {
211
- latch: Effect.makeLatchUnsafe(false),
212
+ latch: Latch.makeUnsafe(false),
212
213
  doneLatch: undefined,
213
214
  replies: [],
214
215
  messages: new Set([message])
@@ -260,7 +261,7 @@ export const make: (options: Omit<Runners["Service"], "sendLocal" | "notifyLocal
260
261
  )
261
262
  )
262
263
 
263
- const storageLatch = Effect.makeLatchUnsafe(false)
264
+ const storageLatch = Latch.makeUnsafe(false)
264
265
  if (storage !== MessageStorage.noop) {
265
266
  yield* Effect.gen(function*() {
266
267
  const foundRequests = new Set<StorageRequestEntry>()
@@ -4,7 +4,7 @@
4
4
  import * as Arr from "../../Array.ts"
5
5
  import * as Cause from "../../Cause.ts"
6
6
  import { Clock } from "../../Clock.ts"
7
- import type { DurationInput } from "../../Duration.ts"
7
+ import type { Input } from "../../Duration.ts"
8
8
  import * as Duration from "../../Duration.ts"
9
9
  import * as Effect from "../../Effect.ts"
10
10
  import * as Equal from "../../Equal.ts"
@@ -13,6 +13,7 @@ import * as Fiber from "../../Fiber.ts"
13
13
  import * as FiberMap from "../../FiberMap.ts"
14
14
  import { constant, flow } from "../../Function.ts"
15
15
  import * as HashRing from "../../HashRing.ts"
16
+ import * as Latch from "../../Latch.ts"
16
17
  import * as Layer from "../../Layer.ts"
17
18
  import * as MutableHashMap from "../../MutableHashMap.ts"
18
19
  import * as MutableHashSet from "../../MutableHashSet.ts"
@@ -23,6 +24,7 @@ import { CurrentLogAnnotations } from "../../References.ts"
23
24
  import * as Result from "../../Result.ts"
24
25
  import * as Schedule from "../../Schedule.ts"
25
26
  import * as Scope from "../../Scope.ts"
27
+ import * as Semaphore from "../../Semaphore.ts"
26
28
  import * as ServiceMap from "../../ServiceMap.ts"
27
29
  import * as Stream from "../../Stream.ts"
28
30
  import type * as Rpc from "../rpc/Rpc.ts"
@@ -113,7 +115,7 @@ export class Sharding extends ServiceMap.Service<Sharding, {
113
115
  entity: Entity<Type, Rpcs>,
114
116
  handlers: Effect.Effect<Handlers, never, RX>,
115
117
  options?: {
116
- readonly maxIdleTime?: DurationInput | undefined
118
+ readonly maxIdleTime?: Input | undefined
117
119
  readonly concurrency?: number | "unbounded" | undefined
118
120
  readonly mailboxCapacity?: number | "unbounded" | undefined
119
121
  readonly disableFatalDefects?: boolean | undefined
@@ -221,7 +223,7 @@ const make = Effect.gen(function*() {
221
223
 
222
224
  // the active shards are the ones that we have acquired the lock for
223
225
  const acquiredShards = MutableHashSet.empty<ShardId>()
224
- const activeShardsLatch = yield* Effect.makeLatch(false)
226
+ const activeShardsLatch = yield* Latch.make(false)
225
227
 
226
228
  const events = yield* PubSub.unbounded<ShardingRegistrationEvent>()
227
229
  const getRegistrationEvents: Stream.Stream<ShardingRegistrationEvent> = Stream.fromPubSub(events)
@@ -429,16 +431,16 @@ const make = Effect.gen(function*() {
429
431
  // It should also be shutdown after the entity managers, to ensure interrupt
430
432
  // & ack envelopes can still be processed.
431
433
 
432
- const storageReadLatch = yield* Effect.makeLatch(true)
434
+ const storageReadLatch = yield* Latch.make(true)
433
435
  const openStorageReadLatch = constant(Effect.asVoid(storageReadLatch.open))
434
436
 
435
- const storageReadLock = Effect.makeSemaphoreUnsafe(1)
437
+ const storageReadLock = Semaphore.makeUnsafe(1)
436
438
  const withStorageReadLock = storageReadLock.withPermits(1)
437
439
 
438
440
  if (storageEnabled && config.runnerAddress) {
439
441
  const selfAddress = config.runnerAddress
440
442
  const entityRegistrationTimeoutMillis = Duration.toMillis(
441
- Duration.fromDurationInputUnsafe(config.entityRegistrationTimeout)
443
+ Duration.fromInputUnsafe(config.entityRegistrationTimeout)
442
444
  )
443
445
  const storageStartMillis = clock.currentTimeMillisUnsafe()
444
446
 
@@ -1182,7 +1184,7 @@ const make = Effect.gen(function*() {
1182
1184
 
1183
1185
  const singletons = new Map<ShardId, MutableHashMap.MutableHashMap<SingletonAddress, Effect.Effect<void>>>()
1184
1186
  const singletonFibers = yield* FiberMap.make<SingletonAddress>()
1185
- const withSingletonLock = Effect.makeSemaphoreUnsafe(1).withPermits(1)
1187
+ const withSingletonLock = Semaphore.makeUnsafe(1).withPermits(1)
1186
1188
 
1187
1189
  const registerSingleton: Sharding["Service"]["registerSingleton"] = Effect.fnUntraced(
1188
1190
  function*(name, run, options) {
@@ -1253,7 +1255,7 @@ const make = Effect.gen(function*() {
1253
1255
  // --- Entities ---
1254
1256
 
1255
1257
  const reaper = yield* EntityReaper
1256
- const entityManagerLatches = new Map<string, Effect.Latch>()
1258
+ const entityManagerLatches = new Map<string, Latch.Latch>()
1257
1259
 
1258
1260
  const registerEntity: Sharding["Service"]["registerEntity"] = Effect.fnUntraced(
1259
1261
  function*(entity, build, options) {
@@ -1310,7 +1312,7 @@ const make = Effect.gen(function*() {
1310
1312
  const waitForEntityManager = (entityType: string) => {
1311
1313
  let latch = entityManagerLatches.get(entityType)
1312
1314
  if (!latch) {
1313
- latch = Effect.makeLatchUnsafe()
1315
+ latch = Latch.makeUnsafe()
1314
1316
  entityManagerLatches.set(entityType, latch)
1315
1317
  }
1316
1318
  return latch.await