beeai-framework 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (436) hide show
  1. package/dist/adapters/amazon-bedrock/backend/chat.cjs.map +1 -1
  2. package/dist/adapters/amazon-bedrock/backend/chat.d.cts +1 -1
  3. package/dist/adapters/amazon-bedrock/backend/chat.d.ts +1 -1
  4. package/dist/adapters/amazon-bedrock/backend/chat.js.map +1 -1
  5. package/dist/adapters/amazon-bedrock/backend/client.cjs.map +1 -1
  6. package/dist/adapters/amazon-bedrock/backend/client.js.map +1 -1
  7. package/dist/adapters/amazon-bedrock/backend/embedding.cjs.map +1 -1
  8. package/dist/adapters/amazon-bedrock/backend/embedding.d.cts +1 -1
  9. package/dist/adapters/amazon-bedrock/backend/embedding.d.ts +1 -1
  10. package/dist/adapters/amazon-bedrock/backend/embedding.js.map +1 -1
  11. package/dist/adapters/anthropic/backend/chat.cjs.map +1 -1
  12. package/dist/adapters/anthropic/backend/chat.d.cts +1 -1
  13. package/dist/adapters/anthropic/backend/chat.d.ts +1 -1
  14. package/dist/adapters/anthropic/backend/chat.js.map +1 -1
  15. package/dist/adapters/anthropic/backend/client.cjs.map +1 -1
  16. package/dist/adapters/anthropic/backend/client.js.map +1 -1
  17. package/dist/adapters/anthropic/backend/embedding.cjs.map +1 -1
  18. package/dist/adapters/anthropic/backend/embedding.d.cts +1 -1
  19. package/dist/adapters/anthropic/backend/embedding.d.ts +1 -1
  20. package/dist/adapters/anthropic/backend/embedding.js.map +1 -1
  21. package/dist/adapters/azure-openai/backend/chat.cjs.map +1 -1
  22. package/dist/adapters/azure-openai/backend/chat.d.cts +2 -2
  23. package/dist/adapters/azure-openai/backend/chat.d.ts +2 -2
  24. package/dist/adapters/azure-openai/backend/chat.js.map +1 -1
  25. package/dist/adapters/azure-openai/backend/client.cjs.map +1 -1
  26. package/dist/adapters/azure-openai/backend/client.js.map +1 -1
  27. package/dist/adapters/azure-openai/backend/embedding.cjs.map +1 -1
  28. package/dist/adapters/azure-openai/backend/embedding.d.cts +1 -1
  29. package/dist/adapters/azure-openai/backend/embedding.d.ts +1 -1
  30. package/dist/adapters/azure-openai/backend/embedding.js.map +1 -1
  31. package/dist/adapters/dummy/backend/chat.cjs.map +1 -1
  32. package/dist/adapters/dummy/backend/chat.d.cts +1 -1
  33. package/dist/adapters/dummy/backend/chat.d.ts +1 -1
  34. package/dist/adapters/dummy/backend/chat.js.map +1 -1
  35. package/dist/adapters/dummy/backend/embedding.cjs.map +1 -1
  36. package/dist/adapters/dummy/backend/embedding.d.cts +1 -1
  37. package/dist/adapters/dummy/backend/embedding.d.ts +1 -1
  38. package/dist/adapters/dummy/backend/embedding.js.map +1 -1
  39. package/dist/adapters/google-vertex/backend/chat.cjs.map +1 -1
  40. package/dist/adapters/google-vertex/backend/chat.d.cts +1 -1
  41. package/dist/adapters/google-vertex/backend/chat.d.ts +1 -1
  42. package/dist/adapters/google-vertex/backend/chat.js.map +1 -1
  43. package/dist/adapters/google-vertex/backend/client.cjs.map +1 -1
  44. package/dist/adapters/google-vertex/backend/client.js.map +1 -1
  45. package/dist/adapters/google-vertex/backend/embedding.cjs.map +1 -1
  46. package/dist/adapters/google-vertex/backend/embedding.d.cts +1 -1
  47. package/dist/adapters/google-vertex/backend/embedding.d.ts +1 -1
  48. package/dist/adapters/google-vertex/backend/embedding.js.map +1 -1
  49. package/dist/adapters/groq/backend/chat.cjs.map +1 -1
  50. package/dist/adapters/groq/backend/chat.d.cts +1 -1
  51. package/dist/adapters/groq/backend/chat.d.ts +1 -1
  52. package/dist/adapters/groq/backend/chat.js.map +1 -1
  53. package/dist/adapters/groq/backend/client.cjs.map +1 -1
  54. package/dist/adapters/groq/backend/client.js.map +1 -1
  55. package/dist/adapters/groq/backend/embedding.cjs.map +1 -1
  56. package/dist/adapters/groq/backend/embedding.d.cts +1 -1
  57. package/dist/adapters/groq/backend/embedding.d.ts +1 -1
  58. package/dist/adapters/groq/backend/embedding.js.map +1 -1
  59. package/dist/adapters/langchain/backend/chat.cjs.map +1 -1
  60. package/dist/adapters/langchain/backend/chat.d.cts +1 -1
  61. package/dist/adapters/langchain/backend/chat.d.ts +1 -1
  62. package/dist/adapters/langchain/backend/chat.js.map +1 -1
  63. package/dist/adapters/langchain/backend/embedding.cjs.map +1 -1
  64. package/dist/adapters/langchain/backend/embedding.d.cts +1 -1
  65. package/dist/adapters/langchain/backend/embedding.d.ts +1 -1
  66. package/dist/adapters/langchain/backend/embedding.js.map +1 -1
  67. package/dist/adapters/langchain/tools.cjs.map +1 -1
  68. package/dist/adapters/langchain/tools.d.cts +1 -1
  69. package/dist/adapters/langchain/tools.d.ts +1 -1
  70. package/dist/adapters/langchain/tools.js.map +1 -1
  71. package/dist/adapters/ollama/backend/chat.cjs.map +1 -1
  72. package/dist/adapters/ollama/backend/chat.d.cts +1 -1
  73. package/dist/adapters/ollama/backend/chat.d.ts +1 -1
  74. package/dist/adapters/ollama/backend/chat.js.map +1 -1
  75. package/dist/adapters/ollama/backend/client.cjs.map +1 -1
  76. package/dist/adapters/ollama/backend/client.js.map +1 -1
  77. package/dist/adapters/ollama/backend/embedding.cjs.map +1 -1
  78. package/dist/adapters/ollama/backend/embedding.d.cts +1 -1
  79. package/dist/adapters/ollama/backend/embedding.d.ts +1 -1
  80. package/dist/adapters/ollama/backend/embedding.js.map +1 -1
  81. package/dist/adapters/openai/backend/chat.cjs.map +1 -1
  82. package/dist/adapters/openai/backend/chat.d.cts +1 -1
  83. package/dist/adapters/openai/backend/chat.d.ts +1 -1
  84. package/dist/adapters/openai/backend/chat.js.map +1 -1
  85. package/dist/adapters/openai/backend/client.cjs.map +1 -1
  86. package/dist/adapters/openai/backend/client.js.map +1 -1
  87. package/dist/adapters/openai/backend/embedding.cjs.map +1 -1
  88. package/dist/adapters/openai/backend/embedding.d.cts +2 -2
  89. package/dist/adapters/openai/backend/embedding.d.ts +2 -2
  90. package/dist/adapters/openai/backend/embedding.js.map +1 -1
  91. package/dist/adapters/vercel/backend/chat.cjs +2 -2
  92. package/dist/adapters/vercel/backend/chat.cjs.map +1 -1
  93. package/dist/adapters/vercel/backend/chat.d.cts +1 -1
  94. package/dist/adapters/vercel/backend/chat.d.ts +1 -1
  95. package/dist/adapters/vercel/backend/chat.js +2 -2
  96. package/dist/adapters/vercel/backend/chat.js.map +1 -1
  97. package/dist/adapters/vercel/backend/embedding.cjs.map +1 -1
  98. package/dist/adapters/vercel/backend/embedding.d.cts +5 -5
  99. package/dist/adapters/vercel/backend/embedding.d.ts +5 -5
  100. package/dist/adapters/vercel/backend/embedding.js.map +1 -1
  101. package/dist/adapters/watsonx/backend/chat.cjs.map +1 -1
  102. package/dist/adapters/watsonx/backend/chat.d.cts +1 -1
  103. package/dist/adapters/watsonx/backend/chat.d.ts +1 -1
  104. package/dist/adapters/watsonx/backend/chat.js.map +1 -1
  105. package/dist/adapters/watsonx/backend/client.cjs.map +1 -1
  106. package/dist/adapters/watsonx/backend/client.js.map +1 -1
  107. package/dist/adapters/watsonx/backend/embedding.cjs.map +1 -1
  108. package/dist/adapters/watsonx/backend/embedding.d.cts +1 -1
  109. package/dist/adapters/watsonx/backend/embedding.d.ts +1 -1
  110. package/dist/adapters/watsonx/backend/embedding.js.map +1 -1
  111. package/dist/{agent-xmwFrFrh.d.cts → agent-CtPtFtGb.d.cts} +3 -3
  112. package/dist/{agent-D9gpIPf2.d.ts → agent-CxoSeic0.d.ts} +3 -3
  113. package/dist/agents/base.cjs.map +1 -1
  114. package/dist/agents/base.d.cts +2 -2
  115. package/dist/agents/base.d.ts +2 -2
  116. package/dist/agents/base.js.map +1 -1
  117. package/dist/agents/bee/agent.cjs.map +1 -1
  118. package/dist/agents/bee/agent.d.cts +3 -3
  119. package/dist/agents/bee/agent.d.ts +3 -3
  120. package/dist/agents/bee/agent.js.map +1 -1
  121. package/dist/agents/bee/prompts.cjs.map +1 -1
  122. package/dist/agents/bee/prompts.js.map +1 -1
  123. package/dist/agents/bee/runners/base.cjs.map +1 -1
  124. package/dist/agents/bee/runners/base.d.cts +3 -3
  125. package/dist/agents/bee/runners/base.d.ts +3 -3
  126. package/dist/agents/bee/runners/base.js.map +1 -1
  127. package/dist/agents/bee/runners/deep-think/prompts.cjs.map +1 -1
  128. package/dist/agents/bee/runners/deep-think/prompts.js.map +1 -1
  129. package/dist/agents/bee/runners/deep-think/runner.cjs +11 -11
  130. package/dist/agents/bee/runners/deep-think/runner.cjs.map +1 -1
  131. package/dist/agents/bee/runners/deep-think/runner.d.cts +3 -3
  132. package/dist/agents/bee/runners/deep-think/runner.d.ts +3 -3
  133. package/dist/agents/bee/runners/deep-think/runner.js +2 -2
  134. package/dist/agents/bee/runners/deep-think/runner.js.map +1 -1
  135. package/dist/agents/bee/runners/default/runner.cjs.map +1 -1
  136. package/dist/agents/bee/runners/default/runner.d.cts +3 -3
  137. package/dist/agents/bee/runners/default/runner.d.ts +3 -3
  138. package/dist/agents/bee/runners/default/runner.js +1 -1
  139. package/dist/agents/bee/runners/default/runner.js.map +1 -1
  140. package/dist/agents/bee/runners/default/runner.spec.cjs.map +1 -1
  141. package/dist/agents/bee/runners/default/runner.spec.js.map +1 -1
  142. package/dist/agents/bee/runners/granite/prompts.cjs.map +1 -1
  143. package/dist/agents/bee/runners/granite/prompts.js.map +1 -1
  144. package/dist/agents/bee/runners/granite/runner.cjs +11 -11
  145. package/dist/agents/bee/runners/granite/runner.cjs.map +1 -1
  146. package/dist/agents/bee/runners/granite/runner.d.cts +3 -3
  147. package/dist/agents/bee/runners/granite/runner.d.ts +3 -3
  148. package/dist/agents/bee/runners/granite/runner.js +2 -2
  149. package/dist/agents/bee/runners/granite/runner.js.map +1 -1
  150. package/dist/agents/bee/types.d.cts +1 -1
  151. package/dist/agents/bee/types.d.ts +1 -1
  152. package/dist/agents/experimental/replan/agent.cjs.map +1 -1
  153. package/dist/agents/experimental/replan/agent.d.cts +2 -2
  154. package/dist/agents/experimental/replan/agent.d.ts +2 -2
  155. package/dist/agents/experimental/replan/agent.js.map +1 -1
  156. package/dist/agents/experimental/replan/prompts.cjs.map +1 -1
  157. package/dist/agents/experimental/replan/prompts.d.cts +1 -1
  158. package/dist/agents/experimental/replan/prompts.d.ts +1 -1
  159. package/dist/agents/experimental/replan/prompts.js.map +1 -1
  160. package/dist/agents/experimental/streamlit/agent.cjs.map +1 -1
  161. package/dist/agents/experimental/streamlit/agent.d.cts +2 -2
  162. package/dist/agents/experimental/streamlit/agent.d.ts +2 -2
  163. package/dist/agents/experimental/streamlit/agent.js.map +1 -1
  164. package/dist/agents/experimental/streamlit/prompts.cjs.map +1 -1
  165. package/dist/agents/experimental/streamlit/prompts.js.map +1 -1
  166. package/dist/agents/types.d.cts +2 -2
  167. package/dist/agents/types.d.ts +2 -2
  168. package/dist/backend/backend.cjs.map +1 -1
  169. package/dist/backend/backend.d.cts +1 -1
  170. package/dist/backend/backend.d.ts +1 -1
  171. package/dist/backend/backend.js.map +1 -1
  172. package/dist/backend/chat.cjs.map +1 -1
  173. package/dist/backend/chat.d.cts +1 -1
  174. package/dist/backend/chat.d.ts +1 -1
  175. package/dist/backend/chat.js.map +1 -1
  176. package/dist/backend/client.cjs.map +1 -1
  177. package/dist/backend/client.js.map +1 -1
  178. package/dist/backend/constants.cjs.map +1 -1
  179. package/dist/backend/constants.js.map +1 -1
  180. package/dist/backend/core.d.cts +1 -1
  181. package/dist/backend/core.d.ts +1 -1
  182. package/dist/backend/embedding.cjs.map +1 -1
  183. package/dist/backend/embedding.d.cts +1 -1
  184. package/dist/backend/embedding.d.ts +1 -1
  185. package/dist/backend/embedding.js.map +1 -1
  186. package/dist/backend/errors.cjs.map +1 -1
  187. package/dist/backend/errors.js.map +1 -1
  188. package/dist/backend/message.cjs.map +1 -1
  189. package/dist/backend/message.js.map +1 -1
  190. package/dist/backend/utils.cjs.map +1 -1
  191. package/dist/backend/utils.js.map +1 -1
  192. package/dist/{base-daM6fHUP.d.cts → base-Csr9guq2.d.cts} +1 -1
  193. package/dist/{base-mmG-8Pk9.d.ts → base-DHhpWHQm.d.ts} +1 -1
  194. package/dist/cache/base.cjs.map +1 -1
  195. package/dist/cache/base.js.map +1 -1
  196. package/dist/cache/decoratorCache.cjs.map +1 -1
  197. package/dist/cache/decoratorCache.js.map +1 -1
  198. package/dist/cache/fileCache.cjs.map +1 -1
  199. package/dist/cache/fileCache.js.map +1 -1
  200. package/dist/cache/nullCache.cjs.map +1 -1
  201. package/dist/cache/nullCache.js.map +1 -1
  202. package/dist/cache/slidingCache.cjs.map +1 -1
  203. package/dist/cache/slidingCache.js.map +1 -1
  204. package/dist/cache/unconstrainedCache.cjs.map +1 -1
  205. package/dist/cache/unconstrainedCache.js.map +1 -1
  206. package/dist/context.cjs.map +1 -1
  207. package/dist/context.d.cts +1 -1
  208. package/dist/context.d.ts +1 -1
  209. package/dist/context.js.map +1 -1
  210. package/dist/emitter/emitter.cjs.map +1 -1
  211. package/dist/emitter/emitter.d.cts +1 -1
  212. package/dist/emitter/emitter.d.ts +1 -1
  213. package/dist/emitter/emitter.js.map +1 -1
  214. package/dist/emitter/errors.cjs.map +1 -1
  215. package/dist/emitter/errors.js.map +1 -1
  216. package/dist/emitter/types.d.cts +1 -1
  217. package/dist/emitter/types.d.ts +1 -1
  218. package/dist/emitter/utils.cjs.map +1 -1
  219. package/dist/emitter/utils.js.map +1 -1
  220. package/dist/errors.cjs.map +1 -1
  221. package/dist/errors.js.map +1 -1
  222. package/dist/index.d.cts +2 -2
  223. package/dist/index.d.ts +2 -2
  224. package/dist/instrumentation/config.cjs.map +1 -1
  225. package/dist/instrumentation/config.js.map +1 -1
  226. package/dist/instrumentation/create-telemetry-middleware.cjs.map +1 -1
  227. package/dist/instrumentation/create-telemetry-middleware.d.cts +1 -1
  228. package/dist/instrumentation/create-telemetry-middleware.d.ts +1 -1
  229. package/dist/instrumentation/create-telemetry-middleware.js.map +1 -1
  230. package/dist/instrumentation/helpers/create-span.cjs.map +1 -1
  231. package/dist/instrumentation/helpers/create-span.js.map +1 -1
  232. package/dist/instrumentation/helpers/get-error-safe.cjs.map +1 -1
  233. package/dist/instrumentation/helpers/get-error-safe.js.map +1 -1
  234. package/dist/instrumentation/helpers/get-serialized-object-safe.cjs.map +1 -1
  235. package/dist/instrumentation/helpers/get-serialized-object-safe.js.map +1 -1
  236. package/dist/instrumentation/helpers/id-name-manager.cjs.map +1 -1
  237. package/dist/instrumentation/helpers/id-name-manager.js.map +1 -1
  238. package/dist/instrumentation/helpers/trace-serializer.cjs.map +1 -1
  239. package/dist/instrumentation/helpers/trace-serializer.js.map +1 -1
  240. package/dist/instrumentation/helpers/utils.cjs.map +1 -1
  241. package/dist/instrumentation/helpers/utils.d.cts +1 -1
  242. package/dist/instrumentation/helpers/utils.d.ts +1 -1
  243. package/dist/instrumentation/helpers/utils.js.map +1 -1
  244. package/dist/instrumentation/logger.cjs.map +1 -1
  245. package/dist/instrumentation/logger.js.map +1 -1
  246. package/dist/instrumentation/tracer.cjs.map +1 -1
  247. package/dist/instrumentation/tracer.js.map +1 -1
  248. package/dist/internals/env.cjs.map +1 -1
  249. package/dist/internals/env.js.map +1 -1
  250. package/dist/internals/fetcher.cjs.map +1 -1
  251. package/dist/internals/fetcher.d.cts +1 -1
  252. package/dist/internals/fetcher.d.ts +1 -1
  253. package/dist/internals/fetcher.js.map +1 -1
  254. package/dist/internals/helpers/array.cjs.map +1 -1
  255. package/dist/internals/helpers/array.js.map +1 -1
  256. package/dist/internals/helpers/cancellation.cjs.map +1 -1
  257. package/dist/internals/helpers/cancellation.js.map +1 -1
  258. package/dist/internals/helpers/counter.cjs.map +1 -1
  259. package/dist/internals/helpers/counter.js.map +1 -1
  260. package/dist/internals/helpers/general.cjs.map +1 -1
  261. package/dist/internals/helpers/general.js.map +1 -1
  262. package/dist/internals/helpers/guards.cjs.map +1 -1
  263. package/dist/internals/helpers/guards.js.map +1 -1
  264. package/dist/internals/helpers/hash.cjs.map +1 -1
  265. package/dist/internals/helpers/hash.js.map +1 -1
  266. package/dist/internals/helpers/map.cjs.map +1 -1
  267. package/dist/internals/helpers/map.js.map +1 -1
  268. package/dist/internals/helpers/math.cjs.map +1 -1
  269. package/dist/internals/helpers/math.js.map +1 -1
  270. package/dist/internals/helpers/number.cjs.map +1 -1
  271. package/dist/internals/helpers/number.js.map +1 -1
  272. package/dist/internals/helpers/object.cjs.map +1 -1
  273. package/dist/internals/helpers/object.js.map +1 -1
  274. package/dist/internals/helpers/paginate.cjs.map +1 -1
  275. package/dist/internals/helpers/paginate.js.map +1 -1
  276. package/dist/internals/helpers/promise.cjs.map +1 -1
  277. package/dist/internals/helpers/promise.js.map +1 -1
  278. package/dist/internals/helpers/prototype.cjs.map +1 -1
  279. package/dist/internals/helpers/prototype.js.map +1 -1
  280. package/dist/internals/helpers/retry.cjs.map +1 -1
  281. package/dist/internals/helpers/retry.js.map +1 -1
  282. package/dist/internals/helpers/retryable.cjs.map +1 -1
  283. package/dist/internals/helpers/retryable.js.map +1 -1
  284. package/dist/internals/helpers/schema.cjs.map +1 -1
  285. package/dist/internals/helpers/schema.d.cts +1 -1
  286. package/dist/internals/helpers/schema.d.ts +1 -1
  287. package/dist/internals/helpers/schema.js.map +1 -1
  288. package/dist/internals/helpers/stream.cjs.map +1 -1
  289. package/dist/internals/helpers/stream.js.map +1 -1
  290. package/dist/internals/helpers/string.cjs.map +1 -1
  291. package/dist/internals/helpers/string.js.map +1 -1
  292. package/dist/internals/helpers/weakRef.cjs.map +1 -1
  293. package/dist/internals/helpers/weakRef.js.map +1 -1
  294. package/dist/internals/serializable.cjs.map +1 -1
  295. package/dist/internals/serializable.js.map +1 -1
  296. package/dist/internals/types.cjs.map +1 -1
  297. package/dist/internals/types.js.map +1 -1
  298. package/dist/logger/logger.cjs.map +1 -1
  299. package/dist/logger/logger.js.map +1 -1
  300. package/dist/logger/pretty.cjs.map +1 -1
  301. package/dist/logger/pretty.js.map +1 -1
  302. package/dist/memory/base.cjs.map +1 -1
  303. package/dist/memory/base.js.map +1 -1
  304. package/dist/memory/slidingMemory.cjs.map +1 -1
  305. package/dist/memory/slidingMemory.js.map +1 -1
  306. package/dist/memory/summarizeMemory.cjs.map +1 -1
  307. package/dist/memory/summarizeMemory.d.cts +1 -1
  308. package/dist/memory/summarizeMemory.d.ts +1 -1
  309. package/dist/memory/summarizeMemory.js.map +1 -1
  310. package/dist/memory/tokenMemory.cjs.map +1 -1
  311. package/dist/memory/tokenMemory.js.map +1 -1
  312. package/dist/memory/unconstrainedMemory.cjs.map +1 -1
  313. package/dist/memory/unconstrainedMemory.js.map +1 -1
  314. package/dist/parsers/errors.cjs.map +1 -1
  315. package/dist/parsers/errors.js.map +1 -1
  316. package/dist/parsers/field.cjs.map +1 -1
  317. package/dist/parsers/field.js.map +1 -1
  318. package/dist/parsers/linePrefix.cjs.map +1 -1
  319. package/dist/parsers/linePrefix.d.cts +1 -1
  320. package/dist/parsers/linePrefix.d.ts +1 -1
  321. package/dist/parsers/linePrefix.js.map +1 -1
  322. package/dist/serializer/error.cjs.map +1 -1
  323. package/dist/serializer/error.js.map +1 -1
  324. package/dist/serializer/serializer.cjs +3 -3
  325. package/dist/serializer/serializer.cjs.map +1 -1
  326. package/dist/serializer/serializer.js +2 -2
  327. package/dist/serializer/serializer.js.map +1 -1
  328. package/dist/serializer/utils.cjs.map +1 -1
  329. package/dist/serializer/utils.js.map +1 -1
  330. package/dist/template.cjs.map +1 -1
  331. package/dist/template.d.cts +1 -1
  332. package/dist/template.d.ts +1 -1
  333. package/dist/template.js.map +1 -1
  334. package/dist/tools/arxiv.cjs.map +1 -1
  335. package/dist/tools/arxiv.d.cts +2 -2
  336. package/dist/tools/arxiv.d.ts +2 -2
  337. package/dist/tools/arxiv.js.map +1 -1
  338. package/dist/tools/base.cjs.map +1 -1
  339. package/dist/tools/base.d.cts +2 -2
  340. package/dist/tools/base.d.ts +2 -2
  341. package/dist/tools/base.js.map +1 -1
  342. package/dist/tools/calculator.cjs.map +1 -1
  343. package/dist/tools/calculator.d.cts +1 -1
  344. package/dist/tools/calculator.d.ts +1 -1
  345. package/dist/tools/calculator.js.map +1 -1
  346. package/dist/tools/custom.cjs.map +1 -1
  347. package/dist/tools/custom.d.cts +1 -1
  348. package/dist/tools/custom.d.ts +1 -1
  349. package/dist/tools/custom.js.map +1 -1
  350. package/dist/tools/database/elasticsearch.cjs.map +1 -1
  351. package/dist/tools/database/elasticsearch.d.cts +1 -1
  352. package/dist/tools/database/elasticsearch.d.ts +1 -1
  353. package/dist/tools/database/elasticsearch.js.map +1 -1
  354. package/dist/tools/database/metadata.cjs.map +1 -1
  355. package/dist/tools/database/metadata.js.map +1 -1
  356. package/dist/tools/database/milvus.cjs.map +1 -1
  357. package/dist/tools/database/milvus.d.cts +1 -1
  358. package/dist/tools/database/milvus.d.ts +1 -1
  359. package/dist/tools/database/milvus.js.map +1 -1
  360. package/dist/tools/database/sql.cjs.map +1 -1
  361. package/dist/tools/database/sql.d.cts +3 -3
  362. package/dist/tools/database/sql.d.ts +3 -3
  363. package/dist/tools/database/sql.js.map +1 -1
  364. package/dist/tools/llm.cjs.map +1 -1
  365. package/dist/tools/llm.d.cts +1 -1
  366. package/dist/tools/llm.d.ts +1 -1
  367. package/dist/tools/llm.js +1 -1
  368. package/dist/tools/llm.js.map +1 -1
  369. package/dist/tools/mcp.cjs.map +1 -1
  370. package/dist/tools/mcp.d.cts +1 -1
  371. package/dist/tools/mcp.d.ts +1 -1
  372. package/dist/tools/mcp.js.map +1 -1
  373. package/dist/tools/openapi.cjs.map +1 -1
  374. package/dist/tools/openapi.d.cts +1 -1
  375. package/dist/tools/openapi.d.ts +1 -1
  376. package/dist/tools/openapi.js +1 -1
  377. package/dist/tools/openapi.js.map +1 -1
  378. package/dist/tools/python/output.cjs.map +1 -1
  379. package/dist/tools/python/output.d.cts +1 -1
  380. package/dist/tools/python/output.d.ts +1 -1
  381. package/dist/tools/python/output.js.map +1 -1
  382. package/dist/tools/python/python.cjs.map +1 -1
  383. package/dist/tools/python/python.d.cts +1 -1
  384. package/dist/tools/python/python.d.ts +1 -1
  385. package/dist/tools/python/python.js.map +1 -1
  386. package/dist/tools/python/storage.cjs.map +1 -1
  387. package/dist/tools/python/storage.js.map +1 -1
  388. package/dist/tools/search/base.cjs.map +1 -1
  389. package/dist/tools/search/base.d.cts +1 -1
  390. package/dist/tools/search/base.d.ts +1 -1
  391. package/dist/tools/search/base.js.map +1 -1
  392. package/dist/tools/search/duckDuckGoSearch.cjs +19 -19
  393. package/dist/tools/search/duckDuckGoSearch.cjs.map +1 -1
  394. package/dist/tools/search/duckDuckGoSearch.d.cts +2 -4
  395. package/dist/tools/search/duckDuckGoSearch.d.ts +2 -4
  396. package/dist/tools/search/duckDuckGoSearch.js +17 -13
  397. package/dist/tools/search/duckDuckGoSearch.js.map +1 -1
  398. package/dist/tools/search/googleSearch.cjs.map +1 -1
  399. package/dist/tools/search/googleSearch.d.cts +1 -1
  400. package/dist/tools/search/googleSearch.d.ts +1 -1
  401. package/dist/tools/search/googleSearch.js.map +1 -1
  402. package/dist/tools/search/searXNGSearch.cjs.map +1 -1
  403. package/dist/tools/search/searXNGSearch.d.cts +1 -1
  404. package/dist/tools/search/searXNGSearch.d.ts +1 -1
  405. package/dist/tools/search/searXNGSearch.js.map +1 -1
  406. package/dist/tools/search/wikipedia.cjs.map +1 -1
  407. package/dist/tools/search/wikipedia.d.cts +1 -1
  408. package/dist/tools/search/wikipedia.d.ts +1 -1
  409. package/dist/tools/search/wikipedia.js.map +1 -1
  410. package/dist/tools/similarity.cjs.map +1 -1
  411. package/dist/tools/similarity.d.cts +2 -2
  412. package/dist/tools/similarity.d.ts +2 -2
  413. package/dist/tools/similarity.js.map +1 -1
  414. package/dist/tools/weather/openMeteo.cjs.map +1 -1
  415. package/dist/tools/weather/openMeteo.d.cts +2 -2
  416. package/dist/tools/weather/openMeteo.d.ts +2 -2
  417. package/dist/tools/weather/openMeteo.js.map +1 -1
  418. package/dist/tools/web/webCrawler.cjs.map +1 -1
  419. package/dist/tools/web/webCrawler.d.cts +2 -2
  420. package/dist/tools/web/webCrawler.d.ts +2 -2
  421. package/dist/tools/web/webCrawler.js.map +1 -1
  422. package/dist/version.cjs +1 -1
  423. package/dist/version.cjs.map +1 -1
  424. package/dist/version.js +1 -1
  425. package/dist/version.js.map +1 -1
  426. package/dist/workflows/agent.cjs.map +1 -1
  427. package/dist/workflows/agent.d.cts +10 -10
  428. package/dist/workflows/agent.d.ts +10 -10
  429. package/dist/workflows/agent.js.map +1 -1
  430. package/dist/workflows/workflow.cjs.map +1 -1
  431. package/dist/workflows/workflow.d.cts +1 -1
  432. package/dist/workflows/workflow.d.ts +1 -1
  433. package/dist/workflows/workflow.js.map +1 -1
  434. package/package.json +20 -20
  435. package/dist/{emitter-C9EN5B0j.d.cts → emitter-BWtGHYn0.d.cts} +1 -1
  436. package/dist/{emitter-BxVxGBbJ.d.ts → emitter-l0W9gC1A.d.ts} +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/internals/helpers/paginate.ts"],"names":["paginate","input","acc","cursor","undefined","length","size","data","nextCursor","handler","limit","push"],"mappings":";;;;AAqBA,eAAsBA,SAAwBC,KAA0B,EAAA;AACtE,EAAA,MAAMC,MAAW,EAAA;AACjB,EAAA,IAAIC,MAAwBC,GAAAA,KAAAA,CAAAA;AAC5B,EAAOF,OAAAA,GAAAA,CAAIG,MAASJ,GAAAA,KAAAA,CAAMK,IAAM,EAAA;AAC9B,IAAA,MAAM,EAAEC,IAAMC,EAAAA,UAAAA,EAAe,GAAA,MAAMP,MAAMQ,OAAQ,CAAA;AAC/CN,MAAAA,MAAAA;MACAO,KAAOT,EAAAA,KAAAA,CAAMK,OAAOJ,GAAIG,CAAAA;KAC1B,CAAA;AACAH,IAAIS,GAAAA,CAAAA,IAAAA,CAAI,GAAIJ,IAAAA,CAAAA;AAEZ,IAAA,IAAIC,UAAeJ,KAAAA,KAAAA,CAAAA,IAAaG,IAAKF,CAAAA,MAAAA,KAAW,CAAG,EAAA;AACjD,MAAA;AACF;AACAF,IAASK,MAAAA,GAAAA,UAAAA;AACX;AAEA,EAAIN,IAAAA,GAAAA,CAAIG,MAASJ,GAAAA,KAAAA,CAAMK,IAAM,EAAA;AAC3BJ,IAAAA,GAAAA,CAAIG,SAASJ,KAAMK,CAAAA,IAAAA;AACrB;AAEA,EAAOJ,OAAAA,GAAAA;AACT;AArBsBF,MAAAA,CAAAA,QAAAA,EAAAA,UAAAA,CAAAA","file":"paginate.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface PaginateInput<T, C> {\n size: number;\n handler: (data: { cursor?: C; limit: number }) => Promise<{ data: T[]; nextCursor?: C }>;\n}\n\nexport async function paginate<T, C = number>(input: PaginateInput<T, C>): Promise<T[]> {\n const acc: T[] = [];\n let cursor: C | undefined = undefined;\n while (acc.length < input.size) {\n const { data, nextCursor } = await input.handler({\n cursor,\n limit: input.size - acc.length,\n });\n acc.push(...data);\n\n if (nextCursor === undefined || data.length === 0) {\n break;\n }\n cursor = nextCursor;\n }\n\n if (acc.length > input.size) {\n acc.length = input.size;\n }\n\n return acc;\n}\n"]}
1
+ {"version":3,"sources":["paginate.ts"],"names":["paginate","input","acc","cursor","undefined","length","size","data","nextCursor","handler","limit","push"],"mappings":";;;;AAqBA,eAAsBA,SAAwBC,KAA0B,EAAA;AACtE,EAAA,MAAMC,MAAW,EAAA;AACjB,EAAA,IAAIC,MAAwBC,GAAAA,MAAAA;AAC5B,EAAOF,OAAAA,GAAAA,CAAIG,MAASJ,GAAAA,KAAAA,CAAMK,IAAM,EAAA;AAC9B,IAAA,MAAM,EAAEC,IAAMC,EAAAA,UAAAA,EAAe,GAAA,MAAMP,MAAMQ,OAAQ,CAAA;AAC/CN,MAAAA,MAAAA;MACAO,KAAOT,EAAAA,KAAAA,CAAMK,OAAOJ,GAAIG,CAAAA;KAC1B,CAAA;AACAH,IAAIS,GAAAA,CAAAA,IAAAA,CAAI,GAAIJ,IAAAA,CAAAA;AAEZ,IAAA,IAAIC,UAAeJ,KAAAA,MAAAA,IAAaG,IAAKF,CAAAA,MAAAA,KAAW,CAAG,EAAA;AACjD,MAAA;AACF;AACAF,IAASK,MAAAA,GAAAA,UAAAA;AACX;AAEA,EAAIN,IAAAA,GAAAA,CAAIG,MAASJ,GAAAA,KAAAA,CAAMK,IAAM,EAAA;AAC3BJ,IAAAA,GAAAA,CAAIG,SAASJ,KAAMK,CAAAA,IAAAA;AACrB;AAEA,EAAOJ,OAAAA,GAAAA;AACT;AArBsBF,MAAAA,CAAAA,QAAAA,EAAAA,UAAAA,CAAAA","file":"paginate.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface PaginateInput<T, C> {\n size: number;\n handler: (data: { cursor?: C; limit: number }) => Promise<{ data: T[]; nextCursor?: C }>;\n}\n\nexport async function paginate<T, C = number>(input: PaginateInput<T, C>): Promise<T[]> {\n const acc: T[] = [];\n let cursor: C | undefined = undefined;\n while (acc.length < input.size) {\n const { data, nextCursor } = await input.handler({\n cursor,\n limit: input.size - acc.length,\n });\n acc.push(...data);\n\n if (nextCursor === undefined || data.length === 0) {\n break;\n }\n cursor = nextCursor;\n }\n\n if (acc.length > input.size) {\n acc.length = input.size;\n }\n\n return acc;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/internals/helpers/paginate.ts"],"names":["paginate","input","acc","cursor","undefined","length","size","data","nextCursor","handler","limit","push"],"mappings":";;AAqBA,eAAsBA,SAAwBC,KAA0B,EAAA;AACtE,EAAA,MAAMC,MAAW,EAAA;AACjB,EAAA,IAAIC,MAAwBC,GAAAA,KAAAA,CAAAA;AAC5B,EAAOF,OAAAA,GAAAA,CAAIG,MAASJ,GAAAA,KAAAA,CAAMK,IAAM,EAAA;AAC9B,IAAA,MAAM,EAAEC,IAAMC,EAAAA,UAAAA,EAAe,GAAA,MAAMP,MAAMQ,OAAQ,CAAA;AAC/CN,MAAAA,MAAAA;MACAO,KAAOT,EAAAA,KAAAA,CAAMK,OAAOJ,GAAIG,CAAAA;KAC1B,CAAA;AACAH,IAAIS,GAAAA,CAAAA,IAAAA,CAAI,GAAIJ,IAAAA,CAAAA;AAEZ,IAAA,IAAIC,UAAeJ,KAAAA,KAAAA,CAAAA,IAAaG,IAAKF,CAAAA,MAAAA,KAAW,CAAG,EAAA;AACjD,MAAA;AACF;AACAF,IAASK,MAAAA,GAAAA,UAAAA;AACX;AAEA,EAAIN,IAAAA,GAAAA,CAAIG,MAASJ,GAAAA,KAAAA,CAAMK,IAAM,EAAA;AAC3BJ,IAAAA,GAAAA,CAAIG,SAASJ,KAAMK,CAAAA,IAAAA;AACrB;AAEA,EAAOJ,OAAAA,GAAAA;AACT;AArBsBF,MAAAA,CAAAA,QAAAA,EAAAA,UAAAA,CAAAA","file":"paginate.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface PaginateInput<T, C> {\n size: number;\n handler: (data: { cursor?: C; limit: number }) => Promise<{ data: T[]; nextCursor?: C }>;\n}\n\nexport async function paginate<T, C = number>(input: PaginateInput<T, C>): Promise<T[]> {\n const acc: T[] = [];\n let cursor: C | undefined = undefined;\n while (acc.length < input.size) {\n const { data, nextCursor } = await input.handler({\n cursor,\n limit: input.size - acc.length,\n });\n acc.push(...data);\n\n if (nextCursor === undefined || data.length === 0) {\n break;\n }\n cursor = nextCursor;\n }\n\n if (acc.length > input.size) {\n acc.length = input.size;\n }\n\n return acc;\n}\n"]}
1
+ {"version":3,"sources":["paginate.ts"],"names":["paginate","input","acc","cursor","undefined","length","size","data","nextCursor","handler","limit","push"],"mappings":";;AAqBA,eAAsBA,SAAwBC,KAA0B,EAAA;AACtE,EAAA,MAAMC,MAAW,EAAA;AACjB,EAAA,IAAIC,MAAwBC,GAAAA,MAAAA;AAC5B,EAAOF,OAAAA,GAAAA,CAAIG,MAASJ,GAAAA,KAAAA,CAAMK,IAAM,EAAA;AAC9B,IAAA,MAAM,EAAEC,IAAMC,EAAAA,UAAAA,EAAe,GAAA,MAAMP,MAAMQ,OAAQ,CAAA;AAC/CN,MAAAA,MAAAA;MACAO,KAAOT,EAAAA,KAAAA,CAAMK,OAAOJ,GAAIG,CAAAA;KAC1B,CAAA;AACAH,IAAIS,GAAAA,CAAAA,IAAAA,CAAI,GAAIJ,IAAAA,CAAAA;AAEZ,IAAA,IAAIC,UAAeJ,KAAAA,MAAAA,IAAaG,IAAKF,CAAAA,MAAAA,KAAW,CAAG,EAAA;AACjD,MAAA;AACF;AACAF,IAASK,MAAAA,GAAAA,UAAAA;AACX;AAEA,EAAIN,IAAAA,GAAAA,CAAIG,MAASJ,GAAAA,KAAAA,CAAMK,IAAM,EAAA;AAC3BJ,IAAAA,GAAAA,CAAIG,SAASJ,KAAMK,CAAAA,IAAAA;AACrB;AAEA,EAAOJ,OAAAA,GAAAA;AACT;AArBsBF,MAAAA,CAAAA,QAAAA,EAAAA,UAAAA,CAAAA","file":"paginate.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface PaginateInput<T, C> {\n size: number;\n handler: (data: { cursor?: C; limit: number }) => Promise<{ data: T[]; nextCursor?: C }>;\n}\n\nexport async function paginate<T, C = number>(input: PaginateInput<T, C>): Promise<T[]> {\n const acc: T[] = [];\n let cursor: C | undefined = undefined;\n while (acc.length < input.size) {\n const { data, nextCursor } = await input.handler({\n cursor,\n limit: input.size - acc.length,\n });\n acc.push(...data);\n\n if (nextCursor === undefined || data.length === 0) {\n break;\n }\n cursor = nextCursor;\n }\n\n if (acc.length > input.size) {\n acc.length = input.size;\n }\n\n return acc;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/internals/helpers/promise.ts"],"names":["isPromiseLike","value","isPromise","isFunction","getProp","arrayFromAsync","generator","limit","Infinity","results","chunk","length","push","emitterToGenerator","fn","queue","emit","data","then","done","catch","error","Promise","resolve","setImmediate","shift","asyncProperties","obj","Object","fromEntries","all","entries","map","key","safeExecute","handler","onError","onSuccess","result","err","e","asyncExecute","LazyPromise","constructor","Symbol","toStringTag","before","onfulfilled","onrejected","undefined","finally","onfinally","signalRace","signal","onAbort","reject","aborted","reason","signalFn","addEventListener","removeEventListener","executeSequentially","tasks","task","toAsyncGenerator","promise"],"mappings":"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","file":"promise.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isFunction, isPromise } from \"remeda\";\nimport { getProp } from \"@/internals/helpers/object.js\";\n\nexport function isPromiseLike<T>(value: unknown): value is PromiseLike<T> {\n return isPromise(value) || isFunction(getProp(value, [\"then\"]));\n}\n\nexport async function arrayFromAsync<A, B>(\n generator: AsyncGenerator<A, B> | AsyncIterableIterator<A> | AsyncIterable<A>,\n limit?: number,\n) {\n limit = limit ?? Infinity;\n const results: A[] = [];\n for await (const chunk of generator) {\n if (results.length >= limit) {\n break;\n }\n results.push(chunk);\n }\n return results;\n}\n\nexport type EmitterToGeneratorFn<T, R> = (data: { emit: (data: T) => void }) => Promise<R>;\nexport async function* emitterToGenerator<T, R>(fn: EmitterToGeneratorFn<T, R>) {\n interface Data {\n data?: T;\n error?: Error;\n done?: boolean;\n }\n\n const queue: Data[] = [];\n void fn({\n emit: (data: T) => queue.push({ data }),\n })\n .then(() => queue.push({ done: true }))\n .catch((error) => queue.push({ error, done: true }));\n\n while (true) {\n while (queue.length === 0) {\n await new Promise((resolve) => setImmediate(resolve));\n }\n\n const { data, done, error } = queue.shift()!;\n if (error) {\n throw error;\n }\n if (done) {\n break;\n }\n yield data!;\n }\n}\n\nexport async function asyncProperties<T extends NonNullable<unknown>>(\n obj: T,\n): Promise<{ [K in keyof T]: Awaited<T[K]> }> {\n return Object.fromEntries(\n await Promise.all(Object.entries(obj).map(async ([key, value]) => [key, await value])),\n );\n}\n\ninterface SafeExecuteOptions<T> {\n handler: () => T;\n onSuccess?: (result: T) => void;\n onError?: (err: Error) => void;\n}\n\nexport function safeExecute<T>({ handler, onError, onSuccess }: SafeExecuteOptions<T>): void {\n try {\n const result = handler();\n if (isPromiseLike<T>(result)) {\n result.then(\n (result) => onSuccess?.(result),\n (err) => onError?.(err),\n );\n } else {\n onSuccess?.(result);\n }\n } catch (e) {\n onError?.(e);\n }\n}\n\nexport function asyncExecute<R>(handler: () => R): Promise<R> {\n return new Promise((onSuccess, onError) => {\n safeExecute({\n handler,\n onSuccess,\n onError,\n });\n });\n}\n\nexport class LazyPromise<R> implements Promise<R> {\n constructor(protected readonly handler: () => Promise<R>) {}\n\n readonly [Symbol.toStringTag] = \"Promise\";\n\n protected async before(): Promise<void> {}\n\n then<TResult1 = R, TResult2 = never>(\n onfulfilled?: ((value: R) => PromiseLike<TResult1> | TResult1) | undefined | null,\n onrejected?: ((reason: any) => PromiseLike<TResult2> | TResult2) | undefined | null,\n ): Promise<TResult1 | TResult2> {\n return this.before().then(this.handler).then(onfulfilled).catch(onrejected);\n }\n\n catch<TResult = never>(\n onrejected?: ((reason: any) => PromiseLike<TResult> | TResult) | undefined | null,\n ): Promise<R | TResult> {\n return this.before().then(this.handler).then(undefined).catch(onrejected);\n }\n\n finally(onfinally?: (() => void) | undefined | null): Promise<R> {\n return this.before().then(this.handler).finally(onfinally);\n }\n}\n\nexport async function signalRace<R>(\n fn: () => Promise<R>,\n signal?: AbortSignal,\n onAbort?: () => void,\n): Promise<R> {\n return new Promise<R>((resolve, reject) => {\n if (signal?.aborted) {\n reject(signal.reason);\n return;\n }\n\n const signalFn = () => {\n onAbort?.();\n reject(signal?.reason);\n };\n signal?.addEventListener?.(\"abort\", signalFn);\n fn()\n .then(resolve)\n .catch(reject)\n .finally(() => signal?.removeEventListener?.(\"abort\", signalFn));\n });\n}\n\nexport async function executeSequentially(tasks: (() => Promise<any>)[]): Promise<void> {\n for (const task of tasks) {\n await task();\n }\n}\n\nexport async function* toAsyncGenerator<T>(promise: T): AsyncGenerator<Awaited<T>> {\n yield await promise;\n}\n"]}
1
+ {"version":3,"sources":["promise.ts"],"names":["isPromiseLike","value","isPromise","isFunction","getProp","arrayFromAsync","generator","limit","Infinity","results","chunk","length","push","emitterToGenerator","fn","queue","emit","data","then","done","catch","error","Promise","resolve","setImmediate","shift","asyncProperties","obj","Object","fromEntries","all","entries","map","key","safeExecute","handler","onError","onSuccess","result","err","e","asyncExecute","LazyPromise","constructor","Symbol","toStringTag","before","onfulfilled","onrejected","undefined","finally","onfinally","signalRace","signal","onAbort","reject","aborted","reason","signalFn","addEventListener","removeEventListener","executeSequentially","tasks","task","toAsyncGenerator","promise"],"mappings":"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","file":"promise.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isFunction, isPromise } from \"remeda\";\nimport { getProp } from \"@/internals/helpers/object.js\";\n\nexport function isPromiseLike<T>(value: unknown): value is PromiseLike<T> {\n return isPromise(value) || isFunction(getProp(value, [\"then\"]));\n}\n\nexport async function arrayFromAsync<A, B>(\n generator: AsyncGenerator<A, B> | AsyncIterableIterator<A> | AsyncIterable<A>,\n limit?: number,\n) {\n limit = limit ?? Infinity;\n const results: A[] = [];\n for await (const chunk of generator) {\n if (results.length >= limit) {\n break;\n }\n results.push(chunk);\n }\n return results;\n}\n\nexport type EmitterToGeneratorFn<T, R> = (data: { emit: (data: T) => void }) => Promise<R>;\nexport async function* emitterToGenerator<T, R>(fn: EmitterToGeneratorFn<T, R>) {\n interface Data {\n data?: T;\n error?: Error;\n done?: boolean;\n }\n\n const queue: Data[] = [];\n void fn({\n emit: (data: T) => queue.push({ data }),\n })\n .then(() => queue.push({ done: true }))\n .catch((error) => queue.push({ error, done: true }));\n\n while (true) {\n while (queue.length === 0) {\n await new Promise((resolve) => setImmediate(resolve));\n }\n\n const { data, done, error } = queue.shift()!;\n if (error) {\n throw error;\n }\n if (done) {\n break;\n }\n yield data!;\n }\n}\n\nexport async function asyncProperties<T extends NonNullable<unknown>>(\n obj: T,\n): Promise<{ [K in keyof T]: Awaited<T[K]> }> {\n return Object.fromEntries(\n await Promise.all(Object.entries(obj).map(async ([key, value]) => [key, await value])),\n );\n}\n\ninterface SafeExecuteOptions<T> {\n handler: () => T;\n onSuccess?: (result: T) => void;\n onError?: (err: Error) => void;\n}\n\nexport function safeExecute<T>({ handler, onError, onSuccess }: SafeExecuteOptions<T>): void {\n try {\n const result = handler();\n if (isPromiseLike<T>(result)) {\n result.then(\n (result) => onSuccess?.(result),\n (err) => onError?.(err),\n );\n } else {\n onSuccess?.(result);\n }\n } catch (e) {\n onError?.(e);\n }\n}\n\nexport function asyncExecute<R>(handler: () => R): Promise<R> {\n return new Promise((onSuccess, onError) => {\n safeExecute({\n handler,\n onSuccess,\n onError,\n });\n });\n}\n\nexport class LazyPromise<R> implements Promise<R> {\n constructor(protected readonly handler: () => Promise<R>) {}\n\n readonly [Symbol.toStringTag] = \"Promise\";\n\n protected async before(): Promise<void> {}\n\n then<TResult1 = R, TResult2 = never>(\n onfulfilled?: ((value: R) => PromiseLike<TResult1> | TResult1) | undefined | null,\n onrejected?: ((reason: any) => PromiseLike<TResult2> | TResult2) | undefined | null,\n ): Promise<TResult1 | TResult2> {\n return this.before().then(this.handler).then(onfulfilled).catch(onrejected);\n }\n\n catch<TResult = never>(\n onrejected?: ((reason: any) => PromiseLike<TResult> | TResult) | undefined | null,\n ): Promise<R | TResult> {\n return this.before().then(this.handler).then(undefined).catch(onrejected);\n }\n\n finally(onfinally?: (() => void) | undefined | null): Promise<R> {\n return this.before().then(this.handler).finally(onfinally);\n }\n}\n\nexport async function signalRace<R>(\n fn: () => Promise<R>,\n signal?: AbortSignal,\n onAbort?: () => void,\n): Promise<R> {\n return new Promise<R>((resolve, reject) => {\n if (signal?.aborted) {\n reject(signal.reason);\n return;\n }\n\n const signalFn = () => {\n onAbort?.();\n reject(signal?.reason);\n };\n signal?.addEventListener?.(\"abort\", signalFn);\n fn()\n .then(resolve)\n .catch(reject)\n .finally(() => signal?.removeEventListener?.(\"abort\", signalFn));\n });\n}\n\nexport async function executeSequentially(tasks: (() => Promise<any>)[]): Promise<void> {\n for (const task of tasks) {\n await task();\n }\n}\n\nexport async function* toAsyncGenerator<T>(promise: T): AsyncGenerator<Awaited<T>> {\n yield await promise;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/internals/helpers/promise.ts"],"names":["isPromiseLike","value","isPromise","isFunction","getProp","arrayFromAsync","generator","limit","Infinity","results","chunk","length","push","emitterToGenerator","fn","queue","emit","data","then","done","catch","error","Promise","resolve","setImmediate","shift","asyncProperties","obj","Object","fromEntries","all","entries","map","key","safeExecute","handler","onError","onSuccess","result","err","e","asyncExecute","LazyPromise","constructor","Symbol","toStringTag","before","onfulfilled","onrejected","undefined","finally","onfinally","signalRace","signal","onAbort","reject","aborted","reason","signalFn","addEventListener","removeEventListener","executeSequentially","tasks","task","toAsyncGenerator","promise"],"mappings":"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","file":"promise.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isFunction, isPromise } from \"remeda\";\nimport { getProp } from \"@/internals/helpers/object.js\";\n\nexport function isPromiseLike<T>(value: unknown): value is PromiseLike<T> {\n return isPromise(value) || isFunction(getProp(value, [\"then\"]));\n}\n\nexport async function arrayFromAsync<A, B>(\n generator: AsyncGenerator<A, B> | AsyncIterableIterator<A> | AsyncIterable<A>,\n limit?: number,\n) {\n limit = limit ?? Infinity;\n const results: A[] = [];\n for await (const chunk of generator) {\n if (results.length >= limit) {\n break;\n }\n results.push(chunk);\n }\n return results;\n}\n\nexport type EmitterToGeneratorFn<T, R> = (data: { emit: (data: T) => void }) => Promise<R>;\nexport async function* emitterToGenerator<T, R>(fn: EmitterToGeneratorFn<T, R>) {\n interface Data {\n data?: T;\n error?: Error;\n done?: boolean;\n }\n\n const queue: Data[] = [];\n void fn({\n emit: (data: T) => queue.push({ data }),\n })\n .then(() => queue.push({ done: true }))\n .catch((error) => queue.push({ error, done: true }));\n\n while (true) {\n while (queue.length === 0) {\n await new Promise((resolve) => setImmediate(resolve));\n }\n\n const { data, done, error } = queue.shift()!;\n if (error) {\n throw error;\n }\n if (done) {\n break;\n }\n yield data!;\n }\n}\n\nexport async function asyncProperties<T extends NonNullable<unknown>>(\n obj: T,\n): Promise<{ [K in keyof T]: Awaited<T[K]> }> {\n return Object.fromEntries(\n await Promise.all(Object.entries(obj).map(async ([key, value]) => [key, await value])),\n );\n}\n\ninterface SafeExecuteOptions<T> {\n handler: () => T;\n onSuccess?: (result: T) => void;\n onError?: (err: Error) => void;\n}\n\nexport function safeExecute<T>({ handler, onError, onSuccess }: SafeExecuteOptions<T>): void {\n try {\n const result = handler();\n if (isPromiseLike<T>(result)) {\n result.then(\n (result) => onSuccess?.(result),\n (err) => onError?.(err),\n );\n } else {\n onSuccess?.(result);\n }\n } catch (e) {\n onError?.(e);\n }\n}\n\nexport function asyncExecute<R>(handler: () => R): Promise<R> {\n return new Promise((onSuccess, onError) => {\n safeExecute({\n handler,\n onSuccess,\n onError,\n });\n });\n}\n\nexport class LazyPromise<R> implements Promise<R> {\n constructor(protected readonly handler: () => Promise<R>) {}\n\n readonly [Symbol.toStringTag] = \"Promise\";\n\n protected async before(): Promise<void> {}\n\n then<TResult1 = R, TResult2 = never>(\n onfulfilled?: ((value: R) => PromiseLike<TResult1> | TResult1) | undefined | null,\n onrejected?: ((reason: any) => PromiseLike<TResult2> | TResult2) | undefined | null,\n ): Promise<TResult1 | TResult2> {\n return this.before().then(this.handler).then(onfulfilled).catch(onrejected);\n }\n\n catch<TResult = never>(\n onrejected?: ((reason: any) => PromiseLike<TResult> | TResult) | undefined | null,\n ): Promise<R | TResult> {\n return this.before().then(this.handler).then(undefined).catch(onrejected);\n }\n\n finally(onfinally?: (() => void) | undefined | null): Promise<R> {\n return this.before().then(this.handler).finally(onfinally);\n }\n}\n\nexport async function signalRace<R>(\n fn: () => Promise<R>,\n signal?: AbortSignal,\n onAbort?: () => void,\n): Promise<R> {\n return new Promise<R>((resolve, reject) => {\n if (signal?.aborted) {\n reject(signal.reason);\n return;\n }\n\n const signalFn = () => {\n onAbort?.();\n reject(signal?.reason);\n };\n signal?.addEventListener?.(\"abort\", signalFn);\n fn()\n .then(resolve)\n .catch(reject)\n .finally(() => signal?.removeEventListener?.(\"abort\", signalFn));\n });\n}\n\nexport async function executeSequentially(tasks: (() => Promise<any>)[]): Promise<void> {\n for (const task of tasks) {\n await task();\n }\n}\n\nexport async function* toAsyncGenerator<T>(promise: T): AsyncGenerator<Awaited<T>> {\n yield await promise;\n}\n"]}
1
+ {"version":3,"sources":["promise.ts"],"names":["isPromiseLike","value","isPromise","isFunction","getProp","arrayFromAsync","generator","limit","Infinity","results","chunk","length","push","emitterToGenerator","fn","queue","emit","data","then","done","catch","error","Promise","resolve","setImmediate","shift","asyncProperties","obj","Object","fromEntries","all","entries","map","key","safeExecute","handler","onError","onSuccess","result","err","e","asyncExecute","LazyPromise","constructor","Symbol","toStringTag","before","onfulfilled","onrejected","undefined","finally","onfinally","signalRace","signal","onAbort","reject","aborted","reason","signalFn","addEventListener","removeEventListener","executeSequentially","tasks","task","toAsyncGenerator","promise"],"mappings":"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","file":"promise.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isFunction, isPromise } from \"remeda\";\nimport { getProp } from \"@/internals/helpers/object.js\";\n\nexport function isPromiseLike<T>(value: unknown): value is PromiseLike<T> {\n return isPromise(value) || isFunction(getProp(value, [\"then\"]));\n}\n\nexport async function arrayFromAsync<A, B>(\n generator: AsyncGenerator<A, B> | AsyncIterableIterator<A> | AsyncIterable<A>,\n limit?: number,\n) {\n limit = limit ?? Infinity;\n const results: A[] = [];\n for await (const chunk of generator) {\n if (results.length >= limit) {\n break;\n }\n results.push(chunk);\n }\n return results;\n}\n\nexport type EmitterToGeneratorFn<T, R> = (data: { emit: (data: T) => void }) => Promise<R>;\nexport async function* emitterToGenerator<T, R>(fn: EmitterToGeneratorFn<T, R>) {\n interface Data {\n data?: T;\n error?: Error;\n done?: boolean;\n }\n\n const queue: Data[] = [];\n void fn({\n emit: (data: T) => queue.push({ data }),\n })\n .then(() => queue.push({ done: true }))\n .catch((error) => queue.push({ error, done: true }));\n\n while (true) {\n while (queue.length === 0) {\n await new Promise((resolve) => setImmediate(resolve));\n }\n\n const { data, done, error } = queue.shift()!;\n if (error) {\n throw error;\n }\n if (done) {\n break;\n }\n yield data!;\n }\n}\n\nexport async function asyncProperties<T extends NonNullable<unknown>>(\n obj: T,\n): Promise<{ [K in keyof T]: Awaited<T[K]> }> {\n return Object.fromEntries(\n await Promise.all(Object.entries(obj).map(async ([key, value]) => [key, await value])),\n );\n}\n\ninterface SafeExecuteOptions<T> {\n handler: () => T;\n onSuccess?: (result: T) => void;\n onError?: (err: Error) => void;\n}\n\nexport function safeExecute<T>({ handler, onError, onSuccess }: SafeExecuteOptions<T>): void {\n try {\n const result = handler();\n if (isPromiseLike<T>(result)) {\n result.then(\n (result) => onSuccess?.(result),\n (err) => onError?.(err),\n );\n } else {\n onSuccess?.(result);\n }\n } catch (e) {\n onError?.(e);\n }\n}\n\nexport function asyncExecute<R>(handler: () => R): Promise<R> {\n return new Promise((onSuccess, onError) => {\n safeExecute({\n handler,\n onSuccess,\n onError,\n });\n });\n}\n\nexport class LazyPromise<R> implements Promise<R> {\n constructor(protected readonly handler: () => Promise<R>) {}\n\n readonly [Symbol.toStringTag] = \"Promise\";\n\n protected async before(): Promise<void> {}\n\n then<TResult1 = R, TResult2 = never>(\n onfulfilled?: ((value: R) => PromiseLike<TResult1> | TResult1) | undefined | null,\n onrejected?: ((reason: any) => PromiseLike<TResult2> | TResult2) | undefined | null,\n ): Promise<TResult1 | TResult2> {\n return this.before().then(this.handler).then(onfulfilled).catch(onrejected);\n }\n\n catch<TResult = never>(\n onrejected?: ((reason: any) => PromiseLike<TResult> | TResult) | undefined | null,\n ): Promise<R | TResult> {\n return this.before().then(this.handler).then(undefined).catch(onrejected);\n }\n\n finally(onfinally?: (() => void) | undefined | null): Promise<R> {\n return this.before().then(this.handler).finally(onfinally);\n }\n}\n\nexport async function signalRace<R>(\n fn: () => Promise<R>,\n signal?: AbortSignal,\n onAbort?: () => void,\n): Promise<R> {\n return new Promise<R>((resolve, reject) => {\n if (signal?.aborted) {\n reject(signal.reason);\n return;\n }\n\n const signalFn = () => {\n onAbort?.();\n reject(signal?.reason);\n };\n signal?.addEventListener?.(\"abort\", signalFn);\n fn()\n .then(resolve)\n .catch(reject)\n .finally(() => signal?.removeEventListener?.(\"abort\", signalFn));\n });\n}\n\nexport async function executeSequentially(tasks: (() => Promise<any>)[]): Promise<void> {\n for (const task of tasks) {\n await task();\n }\n}\n\nexport async function* toAsyncGenerator<T>(promise: T): AsyncGenerator<Awaited<T>> {\n yield await promise;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/internals/helpers/prototype.ts"],"names":["traversePrototypeChain","value","excluded","node","undefined","Object","getPrototypeOf","has","isDirectInstanceOf","object","constructor","R","isTruthy","prototype","findDescriptor","target","property","descriptor","getOwnPropertyDescriptor"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAmBO,UAAUA,sBAAAA,CAAuBC,OAAgBC,QAAmB,EAAA;AACzE,EAAA,IAAIC,IAAOF,GAAAA,KAAAA;AACX,EAAOE,OAAAA,IAAAA,KAAS,IAAQA,IAAAA,IAAAA,KAASC,KAAW,CAAA,EAAA;AAC1CD,IAAOE,IAAAA,GAAAA,MAAAA,CAAOC,eAAeH,IAAAA,CAAAA;AAC7B,IAAA,IAAI,CAACD,QAAAA,EAAUK,GAAMJ,GAAAA,IAAAA,CAAO,EAAA;AAC1B,MAAMA,MAAAA,IAAAA;AACR;AACF;AACF;AARiBH,MAAAA,CAAAA,sBAAAA,EAAAA,wBAAAA,CAAAA;AAUV,SAASQ,kBAAAA,CACdC,QACAC,WAAgC,EAAA;AAEhC,EAAOC,OAAAA,YAAAA,CAAEC,SAASH,MAAAA,CAAAA,IAAWJ,OAAOC,cAAeG,CAAAA,MAAAA,MAAYC,WAAYG,CAAAA,SAAAA;AAC7E;AALgBL,MAAAA,CAAAA,kBAAAA,EAAAA,oBAAAA,CAAAA;AAOT,SAASM,cAAAA,CACdC,QACAC,QAAiB,EAAA;AAEjB,EAAWb,KAAAA,MAAAA,IAAAA,IAAQH,sBAAuBe,CAAAA,MAAAA,CAAS,EAAA;AACjD,IAAA,MAAME,UAAaZ,GAAAA,MAAAA,CAAOa,wBAAyBf,CAAAA,IAAAA,EAAMa,QAAAA,CAAAA;AACzD,IAAA,IAAIC,UAAY,EAAA;AACd,MAAOA,OAAAA,UAAAA;AACT;AACF;AACA,EAAO,OAAA,IAAA;AACT;AAXgBH,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA","file":"prototype.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ClassConstructor } from \"@/internals/types.js\";\nimport * as R from \"remeda\";\n\nexport function* traversePrototypeChain(value: unknown, excluded?: Set<any>) {\n let node = value;\n while (node !== null && node !== undefined) {\n node = Object.getPrototypeOf(node);\n if (!excluded?.has?.(node)) {\n yield node;\n }\n }\n}\n\nexport function isDirectInstanceOf<A>(\n object: unknown,\n constructor: ClassConstructor<A>,\n): object is A {\n return R.isTruthy(object) && Object.getPrototypeOf(object) === constructor.prototype;\n}\n\nexport function findDescriptor<T extends NonNullable<unknown>>(\n target: T,\n property: keyof T,\n): PropertyDescriptor | null {\n for (const node of traversePrototypeChain(target)) {\n const descriptor = Object.getOwnPropertyDescriptor(node, property);\n if (descriptor) {\n return descriptor;\n }\n }\n return null;\n}\n"]}
1
+ {"version":3,"sources":["prototype.ts"],"names":["traversePrototypeChain","value","excluded","node","undefined","Object","getPrototypeOf","has","isDirectInstanceOf","object","constructor","R","isTruthy","prototype","findDescriptor","target","property","descriptor","getOwnPropertyDescriptor"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAmBO,UAAUA,sBAAAA,CAAuBC,OAAgBC,QAAmB,EAAA;AACzE,EAAA,IAAIC,IAAOF,GAAAA,KAAAA;AACX,EAAOE,OAAAA,IAAAA,KAAS,IAAQA,IAAAA,IAAAA,KAASC,MAAW,EAAA;AAC1CD,IAAOE,IAAAA,GAAAA,MAAAA,CAAOC,eAAeH,IAAAA,CAAAA;AAC7B,IAAA,IAAI,CAACD,QAAAA,EAAUK,GAAMJ,GAAAA,IAAAA,CAAO,EAAA;AAC1B,MAAMA,MAAAA,IAAAA;AACR;AACF;AACF;AARiBH,MAAAA,CAAAA,sBAAAA,EAAAA,wBAAAA,CAAAA;AAUV,SAASQ,kBAAAA,CACdC,QACAC,WAAgC,EAAA;AAEhC,EAAOC,OAAAA,YAAAA,CAAEC,SAASH,MAAAA,CAAAA,IAAWJ,OAAOC,cAAeG,CAAAA,MAAAA,MAAYC,WAAYG,CAAAA,SAAAA;AAC7E;AALgBL,MAAAA,CAAAA,kBAAAA,EAAAA,oBAAAA,CAAAA;AAOT,SAASM,cAAAA,CACdC,QACAC,QAAiB,EAAA;AAEjB,EAAWb,KAAAA,MAAAA,IAAAA,IAAQH,sBAAuBe,CAAAA,MAAAA,CAAS,EAAA;AACjD,IAAA,MAAME,UAAaZ,GAAAA,MAAAA,CAAOa,wBAAyBf,CAAAA,IAAAA,EAAMa,QAAAA,CAAAA;AACzD,IAAA,IAAIC,UAAY,EAAA;AACd,MAAOA,OAAAA,UAAAA;AACT;AACF;AACA,EAAO,OAAA,IAAA;AACT;AAXgBH,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA","file":"prototype.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ClassConstructor } from \"@/internals/types.js\";\nimport * as R from \"remeda\";\n\nexport function* traversePrototypeChain(value: unknown, excluded?: Set<any>) {\n let node = value;\n while (node !== null && node !== undefined) {\n node = Object.getPrototypeOf(node);\n if (!excluded?.has?.(node)) {\n yield node;\n }\n }\n}\n\nexport function isDirectInstanceOf<A>(\n object: unknown,\n constructor: ClassConstructor<A>,\n): object is A {\n return R.isTruthy(object) && Object.getPrototypeOf(object) === constructor.prototype;\n}\n\nexport function findDescriptor<T extends NonNullable<unknown>>(\n target: T,\n property: keyof T,\n): PropertyDescriptor | null {\n for (const node of traversePrototypeChain(target)) {\n const descriptor = Object.getOwnPropertyDescriptor(node, property);\n if (descriptor) {\n return descriptor;\n }\n }\n return null;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/internals/helpers/prototype.ts"],"names":["traversePrototypeChain","value","excluded","node","undefined","Object","getPrototypeOf","has","isDirectInstanceOf","object","constructor","R","isTruthy","prototype","findDescriptor","target","property","descriptor","getOwnPropertyDescriptor"],"mappings":";;;;AAmBO,UAAUA,sBAAAA,CAAuBC,OAAgBC,QAAmB,EAAA;AACzE,EAAA,IAAIC,IAAOF,GAAAA,KAAAA;AACX,EAAOE,OAAAA,IAAAA,KAAS,IAAQA,IAAAA,IAAAA,KAASC,KAAW,CAAA,EAAA;AAC1CD,IAAOE,IAAAA,GAAAA,MAAAA,CAAOC,eAAeH,IAAAA,CAAAA;AAC7B,IAAA,IAAI,CAACD,QAAAA,EAAUK,GAAMJ,GAAAA,IAAAA,CAAO,EAAA;AAC1B,MAAMA,MAAAA,IAAAA;AACR;AACF;AACF;AARiBH,MAAAA,CAAAA,sBAAAA,EAAAA,wBAAAA,CAAAA;AAUV,SAASQ,kBAAAA,CACdC,QACAC,WAAgC,EAAA;AAEhC,EAAOC,OAAAA,CAAAA,CAAEC,SAASH,MAAAA,CAAAA,IAAWJ,OAAOC,cAAeG,CAAAA,MAAAA,MAAYC,WAAYG,CAAAA,SAAAA;AAC7E;AALgBL,MAAAA,CAAAA,kBAAAA,EAAAA,oBAAAA,CAAAA;AAOT,SAASM,cAAAA,CACdC,QACAC,QAAiB,EAAA;AAEjB,EAAWb,KAAAA,MAAAA,IAAAA,IAAQH,sBAAuBe,CAAAA,MAAAA,CAAS,EAAA;AACjD,IAAA,MAAME,UAAaZ,GAAAA,MAAAA,CAAOa,wBAAyBf,CAAAA,IAAAA,EAAMa,QAAAA,CAAAA;AACzD,IAAA,IAAIC,UAAY,EAAA;AACd,MAAOA,OAAAA,UAAAA;AACT;AACF;AACA,EAAO,OAAA,IAAA;AACT;AAXgBH,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA","file":"prototype.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ClassConstructor } from \"@/internals/types.js\";\nimport * as R from \"remeda\";\n\nexport function* traversePrototypeChain(value: unknown, excluded?: Set<any>) {\n let node = value;\n while (node !== null && node !== undefined) {\n node = Object.getPrototypeOf(node);\n if (!excluded?.has?.(node)) {\n yield node;\n }\n }\n}\n\nexport function isDirectInstanceOf<A>(\n object: unknown,\n constructor: ClassConstructor<A>,\n): object is A {\n return R.isTruthy(object) && Object.getPrototypeOf(object) === constructor.prototype;\n}\n\nexport function findDescriptor<T extends NonNullable<unknown>>(\n target: T,\n property: keyof T,\n): PropertyDescriptor | null {\n for (const node of traversePrototypeChain(target)) {\n const descriptor = Object.getOwnPropertyDescriptor(node, property);\n if (descriptor) {\n return descriptor;\n }\n }\n return null;\n}\n"]}
1
+ {"version":3,"sources":["prototype.ts"],"names":["traversePrototypeChain","value","excluded","node","undefined","Object","getPrototypeOf","has","isDirectInstanceOf","object","constructor","R","isTruthy","prototype","findDescriptor","target","property","descriptor","getOwnPropertyDescriptor"],"mappings":";;;;AAmBO,UAAUA,sBAAAA,CAAuBC,OAAgBC,QAAmB,EAAA;AACzE,EAAA,IAAIC,IAAOF,GAAAA,KAAAA;AACX,EAAOE,OAAAA,IAAAA,KAAS,IAAQA,IAAAA,IAAAA,KAASC,MAAW,EAAA;AAC1CD,IAAOE,IAAAA,GAAAA,MAAAA,CAAOC,eAAeH,IAAAA,CAAAA;AAC7B,IAAA,IAAI,CAACD,QAAAA,EAAUK,GAAMJ,GAAAA,IAAAA,CAAO,EAAA;AAC1B,MAAMA,MAAAA,IAAAA;AACR;AACF;AACF;AARiBH,MAAAA,CAAAA,sBAAAA,EAAAA,wBAAAA,CAAAA;AAUV,SAASQ,kBAAAA,CACdC,QACAC,WAAgC,EAAA;AAEhC,EAAOC,OAAAA,CAAAA,CAAEC,SAASH,MAAAA,CAAAA,IAAWJ,OAAOC,cAAeG,CAAAA,MAAAA,MAAYC,WAAYG,CAAAA,SAAAA;AAC7E;AALgBL,MAAAA,CAAAA,kBAAAA,EAAAA,oBAAAA,CAAAA;AAOT,SAASM,cAAAA,CACdC,QACAC,QAAiB,EAAA;AAEjB,EAAWb,KAAAA,MAAAA,IAAAA,IAAQH,sBAAuBe,CAAAA,MAAAA,CAAS,EAAA;AACjD,IAAA,MAAME,UAAaZ,GAAAA,MAAAA,CAAOa,wBAAyBf,CAAAA,IAAAA,EAAMa,QAAAA,CAAAA;AACzD,IAAA,IAAIC,UAAY,EAAA;AACd,MAAOA,OAAAA,UAAAA;AACT;AACF;AACA,EAAO,OAAA,IAAA;AACT;AAXgBH,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA","file":"prototype.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ClassConstructor } from \"@/internals/types.js\";\nimport * as R from \"remeda\";\n\nexport function* traversePrototypeChain(value: unknown, excluded?: Set<any>) {\n let node = value;\n while (node !== null && node !== undefined) {\n node = Object.getPrototypeOf(node);\n if (!excluded?.has?.(node)) {\n yield node;\n }\n }\n}\n\nexport function isDirectInstanceOf<A>(\n object: unknown,\n constructor: ClassConstructor<A>,\n): object is A {\n return R.isTruthy(object) && Object.getPrototypeOf(object) === constructor.prototype;\n}\n\nexport function findDescriptor<T extends NonNullable<unknown>>(\n target: T,\n property: keyof T,\n): PropertyDescriptor | null {\n for (const node of traversePrototypeChain(target)) {\n const descriptor = Object.getOwnPropertyDescriptor(node, property);\n if (descriptor) {\n return descriptor;\n }\n }\n return null;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/internals/helpers/retry.ts"],"names":["pRetry","fn","options","handler","attempt","remaining","factor","ms","Math","round","pow","setTimeout","undefined","signal","e","meta","FrameworkError","isAbortError","cause","onFailedAttempt","shouldRetry","signalRace","retries"],"mappings":";;;;;;;;AAiCA,eAAsBA,MAAAA,CACpBC,IACAC,OAAiB,EAAA;AAEjB,EAAMC,MAAAA,OAAAA,mBAAiBC,MAAAA,CAAAA,OAAAA,OAAAA,EAAiBC,SAAAA,KAAAA;AACtC,IAAI,IAAA;AACF,MAAMC,MAAAA,MAAAA,GAASJ,SAASI,MAAU,IAAA,CAAA;AAClC,MAAA,IAAIF,UAAU,CAAG,EAAA;AACf,QAAMG,MAAAA,EAAAA,GAAKC,KAAKC,KAAMD,CAAAA,IAAAA,CAAKE,IAAIJ,MAAQF,EAAAA,OAAAA,GAAU,CAAA,CAAA,CAAM,GAAA,GAAA;AACvD,QAAMO,MAAAA,mBAAAA,CAAWJ,IAAIK,KAAW,CAAA,EAAA;AAC9BC,UAAAA,MAAAA,EAAQX,OAASW,EAAAA;SACnB,CAAA;AACF;AAEA,MAAO,OAAA,MAAMZ,GAAGG,OAAAA,CAAAA;AAClB,KAAA,CAAA,OAASU,CAAG,EAAA;AACV,MAAA,MAAMC,IAAa,GAAA;AACjBX,QAAAA,OAAAA;AACAC,QAAAA;AACF,OAAA;AAEA,MAAIW,IAAAA,yBAAAA,CAAeC,YAAaH,CAAAA,CAAAA,CAAI,EAAA;AAClC,QAAA,MAAMA,EAAEI,KAASJ,IAAAA,CAAAA;AACnB;AAEA,MAAMZ,MAAAA,OAAAA,EAASiB,eAAkBL,GAAAA,CAAAA,EAAGC,IAAAA,CAAAA;AACpC,MAAA,IAAIV,aAAa,CAAG,EAAA;AAClB,QAAMS,MAAAA,CAAAA;AACR;AAEA,MAAA,IAAK,MAAMZ,OAASkB,EAAAA,WAAAA,GAAcN,CAAGC,EAAAA,IAAAA,MAAW,KAAO,EAAA;AACrD,QAAMD,MAAAA,CAAAA;AACR;AACA,MAAA,OAAO,MAAMX,OAAAA,CAAQC,OAAU,GAAA,CAAA,EAAGC,YAAY,CAAA,CAAA;AAChD;GA9Bc,EAAA,SAAA,CAAA;AAiChB,EAAO,OAAA,MAAMgB,sBAAW,CAAA,MAAMlB,OAAQ,CAAA,CAAA,EAAGD,SAASoB,OAAW,IAAA,CAAA,CAAIpB,EAAAA,OAAAA,EAASW,MAAAA,CAAAA;AAC5E;AAtCsBb,MAAAA,CAAAA,MAAAA,EAAAA,QAAAA,CAAAA","file":"retry.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { setTimeout } from \"node:timers/promises\";\nimport { signalRace } from \"@/internals/helpers/promise.js\";\nimport { FrameworkError } from \"@/errors.js\";\n\ninterface Meta {\n attempt: number;\n remaining: number;\n}\n\ninterface Options {\n signal?: AbortSignal;\n factor?: number;\n retries?: number;\n shouldRetry?: (e: Error, meta: Meta) => boolean | Promise<boolean>;\n onFailedAttempt?: (e: Error, meta: Meta) => void | Promise<void>;\n}\n\nexport async function pRetry<T>(\n fn: (attempt: number) => Promise<T>,\n options?: Options,\n): Promise<T> {\n const handler = async (attempt: number, remaining: number) => {\n try {\n const factor = options?.factor ?? 2;\n if (attempt > 1) {\n const ms = Math.round(Math.pow(factor, attempt - 1)) * 1000;\n await setTimeout(ms, undefined, {\n signal: options?.signal,\n });\n }\n\n return await fn(attempt);\n } catch (e) {\n const meta: Meta = {\n attempt,\n remaining,\n };\n\n if (FrameworkError.isAbortError(e)) {\n throw e.cause || e;\n }\n\n await options?.onFailedAttempt?.(e, meta);\n if (remaining <= 0) {\n throw e;\n }\n\n if ((await options?.shouldRetry?.(e, meta)) === false) {\n throw e;\n }\n return await handler(attempt + 1, remaining - 1);\n }\n };\n\n return await signalRace(() => handler(1, options?.retries ?? 0), options?.signal);\n}\n"]}
1
+ {"version":3,"sources":["retry.ts"],"names":["pRetry","fn","options","handler","attempt","remaining","factor","ms","Math","round","pow","setTimeout","undefined","signal","e","meta","FrameworkError","isAbortError","cause","onFailedAttempt","shouldRetry","signalRace","retries"],"mappings":";;;;;;;;AAiCA,eAAsBA,MAAAA,CACpBC,IACAC,OAAiB,EAAA;AAEjB,EAAMC,MAAAA,OAAAA,mBAAiBC,MAAAA,CAAAA,OAAAA,OAAAA,EAAiBC,SAAAA,KAAAA;AACtC,IAAI,IAAA;AACF,MAAMC,MAAAA,MAAAA,GAASJ,SAASI,MAAU,IAAA,CAAA;AAClC,MAAA,IAAIF,UAAU,CAAG,EAAA;AACf,QAAMG,MAAAA,EAAAA,GAAKC,KAAKC,KAAMD,CAAAA,IAAAA,CAAKE,IAAIJ,MAAQF,EAAAA,OAAAA,GAAU,CAAA,CAAA,CAAM,GAAA,GAAA;AACvD,QAAMO,MAAAA,mBAAAA,CAAWJ,IAAIK,KAAW,CAAA,EAAA;AAC9BC,UAAAA,MAAAA,EAAQX,OAASW,EAAAA;SACnB,CAAA;AACF;AAEA,MAAO,OAAA,MAAMZ,GAAGG,OAAAA,CAAAA;AAClB,KAAA,CAAA,OAASU,CAAG,EAAA;AACV,MAAA,MAAMC,IAAa,GAAA;AACjBX,QAAAA,OAAAA;AACAC,QAAAA;AACF,OAAA;AAEA,MAAIW,IAAAA,yBAAAA,CAAeC,YAAaH,CAAAA,CAAAA,CAAI,EAAA;AAClC,QAAA,MAAMA,EAAEI,KAASJ,IAAAA,CAAAA;AACnB;AAEA,MAAMZ,MAAAA,OAAAA,EAASiB,eAAkBL,GAAAA,CAAAA,EAAGC,IAAAA,CAAAA;AACpC,MAAA,IAAIV,aAAa,CAAG,EAAA;AAClB,QAAMS,MAAAA,CAAAA;AACR;AAEA,MAAA,IAAK,MAAMZ,OAASkB,EAAAA,WAAAA,GAAcN,CAAGC,EAAAA,IAAAA,MAAW,KAAO,EAAA;AACrD,QAAMD,MAAAA,CAAAA;AACR;AACA,MAAA,OAAO,MAAMX,OAAAA,CAAQC,OAAU,GAAA,CAAA,EAAGC,YAAY,CAAA,CAAA;AAChD;GA9Bc,EAAA,SAAA,CAAA;AAiChB,EAAO,OAAA,MAAMgB,sBAAW,CAAA,MAAMlB,OAAQ,CAAA,CAAA,EAAGD,SAASoB,OAAW,IAAA,CAAA,CAAIpB,EAAAA,OAAAA,EAASW,MAAAA,CAAAA;AAC5E;AAtCsBb,MAAAA,CAAAA,MAAAA,EAAAA,QAAAA,CAAAA","file":"retry.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { setTimeout } from \"node:timers/promises\";\nimport { signalRace } from \"@/internals/helpers/promise.js\";\nimport { FrameworkError } from \"@/errors.js\";\n\ninterface Meta {\n attempt: number;\n remaining: number;\n}\n\ninterface Options {\n signal?: AbortSignal;\n factor?: number;\n retries?: number;\n shouldRetry?: (e: Error, meta: Meta) => boolean | Promise<boolean>;\n onFailedAttempt?: (e: Error, meta: Meta) => void | Promise<void>;\n}\n\nexport async function pRetry<T>(\n fn: (attempt: number) => Promise<T>,\n options?: Options,\n): Promise<T> {\n const handler = async (attempt: number, remaining: number) => {\n try {\n const factor = options?.factor ?? 2;\n if (attempt > 1) {\n const ms = Math.round(Math.pow(factor, attempt - 1)) * 1000;\n await setTimeout(ms, undefined, {\n signal: options?.signal,\n });\n }\n\n return await fn(attempt);\n } catch (e) {\n const meta: Meta = {\n attempt,\n remaining,\n };\n\n if (FrameworkError.isAbortError(e)) {\n throw e.cause || e;\n }\n\n await options?.onFailedAttempt?.(e, meta);\n if (remaining <= 0) {\n throw e;\n }\n\n if ((await options?.shouldRetry?.(e, meta)) === false) {\n throw e;\n }\n return await handler(attempt + 1, remaining - 1);\n }\n };\n\n return await signalRace(() => handler(1, options?.retries ?? 0), options?.signal);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/internals/helpers/retry.ts"],"names":["pRetry","fn","options","handler","attempt","remaining","factor","ms","Math","round","pow","setTimeout","undefined","signal","e","meta","FrameworkError","isAbortError","cause","onFailedAttempt","shouldRetry","signalRace","retries"],"mappings":";;;;;;AAiCA,eAAsBA,MAAAA,CACpBC,IACAC,OAAiB,EAAA;AAEjB,EAAMC,MAAAA,OAAAA,mBAAiBC,MAAAA,CAAAA,OAAAA,OAAAA,EAAiBC,SAAAA,KAAAA;AACtC,IAAI,IAAA;AACF,MAAMC,MAAAA,MAAAA,GAASJ,SAASI,MAAU,IAAA,CAAA;AAClC,MAAA,IAAIF,UAAU,CAAG,EAAA;AACf,QAAMG,MAAAA,EAAAA,GAAKC,KAAKC,KAAMD,CAAAA,IAAAA,CAAKE,IAAIJ,MAAQF,EAAAA,OAAAA,GAAU,CAAA,CAAA,CAAM,GAAA,GAAA;AACvD,QAAMO,MAAAA,UAAAA,CAAWJ,IAAIK,KAAW,CAAA,EAAA;AAC9BC,UAAAA,MAAAA,EAAQX,OAASW,EAAAA;SACnB,CAAA;AACF;AAEA,MAAO,OAAA,MAAMZ,GAAGG,OAAAA,CAAAA;AAClB,KAAA,CAAA,OAASU,CAAG,EAAA;AACV,MAAA,MAAMC,IAAa,GAAA;AACjBX,QAAAA,OAAAA;AACAC,QAAAA;AACF,OAAA;AAEA,MAAIW,IAAAA,cAAAA,CAAeC,YAAaH,CAAAA,CAAAA,CAAI,EAAA;AAClC,QAAA,MAAMA,EAAEI,KAASJ,IAAAA,CAAAA;AACnB;AAEA,MAAMZ,MAAAA,OAAAA,EAASiB,eAAkBL,GAAAA,CAAAA,EAAGC,IAAAA,CAAAA;AACpC,MAAA,IAAIV,aAAa,CAAG,EAAA;AAClB,QAAMS,MAAAA,CAAAA;AACR;AAEA,MAAA,IAAK,MAAMZ,OAASkB,EAAAA,WAAAA,GAAcN,CAAGC,EAAAA,IAAAA,MAAW,KAAO,EAAA;AACrD,QAAMD,MAAAA,CAAAA;AACR;AACA,MAAA,OAAO,MAAMX,OAAAA,CAAQC,OAAU,GAAA,CAAA,EAAGC,YAAY,CAAA,CAAA;AAChD;GA9Bc,EAAA,SAAA,CAAA;AAiChB,EAAO,OAAA,MAAMgB,UAAW,CAAA,MAAMlB,OAAQ,CAAA,CAAA,EAAGD,SAASoB,OAAW,IAAA,CAAA,CAAIpB,EAAAA,OAAAA,EAASW,MAAAA,CAAAA;AAC5E;AAtCsBb,MAAAA,CAAAA,MAAAA,EAAAA,QAAAA,CAAAA","file":"retry.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { setTimeout } from \"node:timers/promises\";\nimport { signalRace } from \"@/internals/helpers/promise.js\";\nimport { FrameworkError } from \"@/errors.js\";\n\ninterface Meta {\n attempt: number;\n remaining: number;\n}\n\ninterface Options {\n signal?: AbortSignal;\n factor?: number;\n retries?: number;\n shouldRetry?: (e: Error, meta: Meta) => boolean | Promise<boolean>;\n onFailedAttempt?: (e: Error, meta: Meta) => void | Promise<void>;\n}\n\nexport async function pRetry<T>(\n fn: (attempt: number) => Promise<T>,\n options?: Options,\n): Promise<T> {\n const handler = async (attempt: number, remaining: number) => {\n try {\n const factor = options?.factor ?? 2;\n if (attempt > 1) {\n const ms = Math.round(Math.pow(factor, attempt - 1)) * 1000;\n await setTimeout(ms, undefined, {\n signal: options?.signal,\n });\n }\n\n return await fn(attempt);\n } catch (e) {\n const meta: Meta = {\n attempt,\n remaining,\n };\n\n if (FrameworkError.isAbortError(e)) {\n throw e.cause || e;\n }\n\n await options?.onFailedAttempt?.(e, meta);\n if (remaining <= 0) {\n throw e;\n }\n\n if ((await options?.shouldRetry?.(e, meta)) === false) {\n throw e;\n }\n return await handler(attempt + 1, remaining - 1);\n }\n };\n\n return await signalRace(() => handler(1, options?.retries ?? 0), options?.signal);\n}\n"]}
1
+ {"version":3,"sources":["retry.ts"],"names":["pRetry","fn","options","handler","attempt","remaining","factor","ms","Math","round","pow","setTimeout","undefined","signal","e","meta","FrameworkError","isAbortError","cause","onFailedAttempt","shouldRetry","signalRace","retries"],"mappings":";;;;;;AAiCA,eAAsBA,MAAAA,CACpBC,IACAC,OAAiB,EAAA;AAEjB,EAAMC,MAAAA,OAAAA,mBAAiBC,MAAAA,CAAAA,OAAAA,OAAAA,EAAiBC,SAAAA,KAAAA;AACtC,IAAI,IAAA;AACF,MAAMC,MAAAA,MAAAA,GAASJ,SAASI,MAAU,IAAA,CAAA;AAClC,MAAA,IAAIF,UAAU,CAAG,EAAA;AACf,QAAMG,MAAAA,EAAAA,GAAKC,KAAKC,KAAMD,CAAAA,IAAAA,CAAKE,IAAIJ,MAAQF,EAAAA,OAAAA,GAAU,CAAA,CAAA,CAAM,GAAA,GAAA;AACvD,QAAMO,MAAAA,UAAAA,CAAWJ,IAAIK,KAAW,CAAA,EAAA;AAC9BC,UAAAA,MAAAA,EAAQX,OAASW,EAAAA;SACnB,CAAA;AACF;AAEA,MAAO,OAAA,MAAMZ,GAAGG,OAAAA,CAAAA;AAClB,KAAA,CAAA,OAASU,CAAG,EAAA;AACV,MAAA,MAAMC,IAAa,GAAA;AACjBX,QAAAA,OAAAA;AACAC,QAAAA;AACF,OAAA;AAEA,MAAIW,IAAAA,cAAAA,CAAeC,YAAaH,CAAAA,CAAAA,CAAI,EAAA;AAClC,QAAA,MAAMA,EAAEI,KAASJ,IAAAA,CAAAA;AACnB;AAEA,MAAMZ,MAAAA,OAAAA,EAASiB,eAAkBL,GAAAA,CAAAA,EAAGC,IAAAA,CAAAA;AACpC,MAAA,IAAIV,aAAa,CAAG,EAAA;AAClB,QAAMS,MAAAA,CAAAA;AACR;AAEA,MAAA,IAAK,MAAMZ,OAASkB,EAAAA,WAAAA,GAAcN,CAAGC,EAAAA,IAAAA,MAAW,KAAO,EAAA;AACrD,QAAMD,MAAAA,CAAAA;AACR;AACA,MAAA,OAAO,MAAMX,OAAAA,CAAQC,OAAU,GAAA,CAAA,EAAGC,YAAY,CAAA,CAAA;AAChD;GA9Bc,EAAA,SAAA,CAAA;AAiChB,EAAO,OAAA,MAAMgB,UAAW,CAAA,MAAMlB,OAAQ,CAAA,CAAA,EAAGD,SAASoB,OAAW,IAAA,CAAA,CAAIpB,EAAAA,OAAAA,EAASW,MAAAA,CAAAA;AAC5E;AAtCsBb,MAAAA,CAAAA,MAAAA,EAAAA,QAAAA,CAAAA","file":"retry.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { setTimeout } from \"node:timers/promises\";\nimport { signalRace } from \"@/internals/helpers/promise.js\";\nimport { FrameworkError } from \"@/errors.js\";\n\ninterface Meta {\n attempt: number;\n remaining: number;\n}\n\ninterface Options {\n signal?: AbortSignal;\n factor?: number;\n retries?: number;\n shouldRetry?: (e: Error, meta: Meta) => boolean | Promise<boolean>;\n onFailedAttempt?: (e: Error, meta: Meta) => void | Promise<void>;\n}\n\nexport async function pRetry<T>(\n fn: (attempt: number) => Promise<T>,\n options?: Options,\n): Promise<T> {\n const handler = async (attempt: number, remaining: number) => {\n try {\n const factor = options?.factor ?? 2;\n if (attempt > 1) {\n const ms = Math.round(Math.pow(factor, attempt - 1)) * 1000;\n await setTimeout(ms, undefined, {\n signal: options?.signal,\n });\n }\n\n return await fn(attempt);\n } catch (e) {\n const meta: Meta = {\n attempt,\n remaining,\n };\n\n if (FrameworkError.isAbortError(e)) {\n throw e.cause || e;\n }\n\n await options?.onFailedAttempt?.(e, meta);\n if (remaining <= 0) {\n throw e;\n }\n\n if ((await options?.shouldRetry?.(e, meta)) === false) {\n throw e;\n }\n return await handler(attempt + 1, remaining - 1);\n }\n };\n\n return await signalRace(() => handler(1, options?.retries ?? 0), options?.signal);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/internals/helpers/retryable.ts"],"names":["RunStrategy","THROW_IMMEDIATELY","SETTLE_ROUND","SETTLE_ALL","Retryable","constructor","ctx","createRandomHash","executor","onReset","onError","onRetry","config","maxRetries","Math","max","runGroup","strategy","inputs","Promise","all","map","input","get","controller","AbortController","results","allSettled","groupSignal","signal","undefined","catch","err","abort","throwIfAborted","result","value","runSequence","collect","R","values","asyncProperties","mapValues","attempt","executionId","Object","defineProperty","enumerable","isResolved","state","TaskState","RESOLVED","isRejected","REJECTED","_run","task","Task","assertAborted","lastError","pRetry","retries","factor","shouldRetry","e","FrameworkError","isRetryable","aborted","onFailedAttempt","meta","then","x","resolve","reject","resolvedValue","rejectedValue","PENDING","reset"],"mappings":"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","file":"retryable.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as R from \"remeda\";\nimport { Task, TaskState } from \"promise-based-task\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { EnumValue } from \"@/internals/types.js\";\nimport { asyncProperties } from \"@/internals/helpers/promise.js\";\nimport { createRandomHash } from \"@/internals/helpers/hash.js\";\nimport { pRetry } from \"@/internals/helpers/retry.js\";\n\nexport interface RetryableConfig {\n maxRetries: number;\n factor?: number;\n signal?: AbortSignal;\n}\n\nexport const RunStrategy = {\n /**\n * Once a single Retryable throws, other retry ables get cancelled immediately.\n */\n THROW_IMMEDIATELY: \"THROW_IMMEDIATELY\",\n\n /**\n * Once a single Retryable throws, wait for other to completes, but prevent further retries.\n */\n SETTLE_ROUND: \"SETTLE_ROUND\",\n\n /**\n * Once a single Retryable throws, other Retryables remains to continue. Error is thrown by the end.\n */\n SETTLE_ALL: \"SETTLE_ALL\",\n} as const;\n\nexport interface RetryableRunConfig {\n groupSignal: AbortSignal;\n}\n\nexport interface RetryableContext {\n executionId: string;\n attempt: number;\n signal?: AbortSignal;\n}\n\nexport type RetryableHandler<T> = (ctx: RetryableContext) => Promise<T>;\nexport type ResetHandler = () => void;\nexport type ErrorHandler = (error: Error, ctx: RetryableContext) => void | Promise<void>;\nexport type RetryHandler = (ctx: RetryableContext, lastError: Error) => void | Promise<void>;\n\nexport class Retryable<T> {\n readonly #id: string;\n #value: Task<T, Error> | null;\n #config: RetryableConfig;\n #handlers;\n\n constructor(ctx: {\n executor: RetryableHandler<T>;\n onReset?: ResetHandler;\n onError?: ErrorHandler;\n onRetry?: RetryHandler;\n config?: Partial<RetryableConfig>;\n }) {\n this.#value = null;\n this.#id = createRandomHash();\n this.#handlers = {\n executor: ctx.executor,\n onReset: ctx.onReset,\n onError: ctx.onError,\n onRetry: ctx.onRetry,\n } as const;\n this.#config = {\n ...ctx.config,\n maxRetries: Math.max(ctx.config?.maxRetries || 0, 0),\n };\n }\n\n static async runGroup<T>(\n strategy: EnumValue<typeof RunStrategy>,\n inputs: Retryable<T>[],\n ): Promise<T[]> {\n if (strategy === RunStrategy.THROW_IMMEDIATELY) {\n return await Promise.all(inputs.map((input) => input.get()));\n }\n\n const controller = new AbortController();\n const results = await Promise.allSettled(\n inputs.map((input) =>\n input\n .get(strategy === RunStrategy.SETTLE_ALL ? { groupSignal: controller.signal } : undefined)\n .catch((err) => {\n controller.abort(err);\n throw err;\n }),\n ),\n );\n controller.signal.throwIfAborted();\n return results.map((result) => (result as PromiseFulfilledResult<T>).value!);\n }\n\n static async *runSequence<T>(inputs: readonly Retryable<T>[]): AsyncGenerator<T> {\n for (const input of inputs) {\n yield await input.get();\n }\n }\n\n static async collect<T>(inputs: T & Record<string, Retryable<any>>) {\n // Solve everything\n await Promise.all(R.values(inputs).map((input) => input.get()));\n\n // Obtain latest values\n return await asyncProperties(\n R.mapValues(inputs, (value) => (value as Retryable<any>).get()) as {\n [K in keyof T]: Promise<T[K] extends Retryable<infer Q> ? Q : never>;\n },\n );\n }\n\n #getContext(attempt: number): RetryableContext {\n const ctx: RetryableContext = {\n attempt,\n executionId: this.#id,\n signal: this.#config.signal,\n };\n Object.defineProperty(ctx, \"signal\", {\n enumerable: false,\n });\n return ctx;\n }\n\n get isResolved(): boolean {\n return this.#value?.state === TaskState.RESOLVED;\n }\n\n get isRejected(): boolean {\n return this.#value?.state === TaskState.REJECTED;\n }\n\n protected _run(config?: RetryableRunConfig) {\n const task = new Task<T, Error>();\n\n const assertAborted = () => {\n this.#config.signal?.throwIfAborted?.();\n config?.groupSignal?.throwIfAborted?.();\n };\n\n let lastError: Error | null = null;\n pRetry(\n async (attempt) => {\n assertAborted();\n\n const ctx = this.#getContext(attempt);\n if (attempt > 1) {\n await this.#handlers.onRetry?.(ctx, lastError!);\n }\n return await this.#handlers.executor(ctx);\n },\n {\n retries: this.#config.maxRetries,\n factor: this.#config.factor,\n signal: this.#config.signal,\n shouldRetry: (e) => {\n if (!FrameworkError.isRetryable(e)) {\n return false;\n }\n return !config?.groupSignal?.aborted && !this.#config.signal?.aborted;\n },\n onFailedAttempt: async (e, meta) => {\n lastError = e;\n await this.#handlers.onError?.(e, this.#getContext(meta.attempt));\n if (!FrameworkError.isRetryable(e)) {\n throw e;\n }\n assertAborted();\n },\n },\n )\n .then((x) => task.resolve(x))\n .catch((x) => task.reject(x));\n\n return task;\n }\n\n async get(config?: RetryableRunConfig): Promise<T> {\n if (this.isResolved) {\n return this.#value!.resolvedValue()!;\n }\n if (this.isRejected) {\n throw this.#value?.rejectedValue();\n }\n\n if (this.#value?.state === TaskState.PENDING && !config) {\n return this.#value;\n }\n\n this.#value?.catch?.(() => {});\n this.#value = this._run(config);\n return this.#value;\n }\n\n reset() {\n this.#value?.catch?.(() => {});\n this.#value = null;\n this.#handlers.onReset?.();\n }\n}\n"]}
1
+ {"version":3,"sources":["retryable.ts"],"names":["RunStrategy","THROW_IMMEDIATELY","SETTLE_ROUND","SETTLE_ALL","Retryable","constructor","ctx","createRandomHash","executor","onReset","onError","onRetry","config","maxRetries","Math","max","runGroup","strategy","inputs","Promise","all","map","input","get","controller","AbortController","results","allSettled","groupSignal","signal","undefined","catch","err","abort","throwIfAborted","result","value","runSequence","collect","R","values","asyncProperties","mapValues","attempt","executionId","Object","defineProperty","enumerable","isResolved","state","TaskState","RESOLVED","isRejected","REJECTED","_run","task","Task","assertAborted","lastError","pRetry","retries","factor","shouldRetry","e","FrameworkError","isRetryable","aborted","onFailedAttempt","meta","then","x","resolve","reject","resolvedValue","rejectedValue","PENDING","reset"],"mappings":"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","file":"retryable.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as R from \"remeda\";\nimport { Task, TaskState } from \"promise-based-task\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { EnumValue } from \"@/internals/types.js\";\nimport { asyncProperties } from \"@/internals/helpers/promise.js\";\nimport { createRandomHash } from \"@/internals/helpers/hash.js\";\nimport { pRetry } from \"@/internals/helpers/retry.js\";\n\nexport interface RetryableConfig {\n maxRetries: number;\n factor?: number;\n signal?: AbortSignal;\n}\n\nexport const RunStrategy = {\n /**\n * Once a single Retryable throws, other retry ables get cancelled immediately.\n */\n THROW_IMMEDIATELY: \"THROW_IMMEDIATELY\",\n\n /**\n * Once a single Retryable throws, wait for other to completes, but prevent further retries.\n */\n SETTLE_ROUND: \"SETTLE_ROUND\",\n\n /**\n * Once a single Retryable throws, other Retryables remains to continue. Error is thrown by the end.\n */\n SETTLE_ALL: \"SETTLE_ALL\",\n} as const;\n\nexport interface RetryableRunConfig {\n groupSignal: AbortSignal;\n}\n\nexport interface RetryableContext {\n executionId: string;\n attempt: number;\n signal?: AbortSignal;\n}\n\nexport type RetryableHandler<T> = (ctx: RetryableContext) => Promise<T>;\nexport type ResetHandler = () => void;\nexport type ErrorHandler = (error: Error, ctx: RetryableContext) => void | Promise<void>;\nexport type RetryHandler = (ctx: RetryableContext, lastError: Error) => void | Promise<void>;\n\nexport class Retryable<T> {\n readonly #id: string;\n #value: Task<T, Error> | null;\n #config: RetryableConfig;\n #handlers;\n\n constructor(ctx: {\n executor: RetryableHandler<T>;\n onReset?: ResetHandler;\n onError?: ErrorHandler;\n onRetry?: RetryHandler;\n config?: Partial<RetryableConfig>;\n }) {\n this.#value = null;\n this.#id = createRandomHash();\n this.#handlers = {\n executor: ctx.executor,\n onReset: ctx.onReset,\n onError: ctx.onError,\n onRetry: ctx.onRetry,\n } as const;\n this.#config = {\n ...ctx.config,\n maxRetries: Math.max(ctx.config?.maxRetries || 0, 0),\n };\n }\n\n static async runGroup<T>(\n strategy: EnumValue<typeof RunStrategy>,\n inputs: Retryable<T>[],\n ): Promise<T[]> {\n if (strategy === RunStrategy.THROW_IMMEDIATELY) {\n return await Promise.all(inputs.map((input) => input.get()));\n }\n\n const controller = new AbortController();\n const results = await Promise.allSettled(\n inputs.map((input) =>\n input\n .get(strategy === RunStrategy.SETTLE_ALL ? { groupSignal: controller.signal } : undefined)\n .catch((err) => {\n controller.abort(err);\n throw err;\n }),\n ),\n );\n controller.signal.throwIfAborted();\n return results.map((result) => (result as PromiseFulfilledResult<T>).value!);\n }\n\n static async *runSequence<T>(inputs: readonly Retryable<T>[]): AsyncGenerator<T> {\n for (const input of inputs) {\n yield await input.get();\n }\n }\n\n static async collect<T>(inputs: T & Record<string, Retryable<any>>) {\n // Solve everything\n await Promise.all(R.values(inputs).map((input) => input.get()));\n\n // Obtain latest values\n return await asyncProperties(\n R.mapValues(inputs, (value) => (value as Retryable<any>).get()) as {\n [K in keyof T]: Promise<T[K] extends Retryable<infer Q> ? Q : never>;\n },\n );\n }\n\n #getContext(attempt: number): RetryableContext {\n const ctx: RetryableContext = {\n attempt,\n executionId: this.#id,\n signal: this.#config.signal,\n };\n Object.defineProperty(ctx, \"signal\", {\n enumerable: false,\n });\n return ctx;\n }\n\n get isResolved(): boolean {\n return this.#value?.state === TaskState.RESOLVED;\n }\n\n get isRejected(): boolean {\n return this.#value?.state === TaskState.REJECTED;\n }\n\n protected _run(config?: RetryableRunConfig) {\n const task = new Task<T, Error>();\n\n const assertAborted = () => {\n this.#config.signal?.throwIfAborted?.();\n config?.groupSignal?.throwIfAborted?.();\n };\n\n let lastError: Error | null = null;\n pRetry(\n async (attempt) => {\n assertAborted();\n\n const ctx = this.#getContext(attempt);\n if (attempt > 1) {\n await this.#handlers.onRetry?.(ctx, lastError!);\n }\n return await this.#handlers.executor(ctx);\n },\n {\n retries: this.#config.maxRetries,\n factor: this.#config.factor,\n signal: this.#config.signal,\n shouldRetry: (e) => {\n if (!FrameworkError.isRetryable(e)) {\n return false;\n }\n return !config?.groupSignal?.aborted && !this.#config.signal?.aborted;\n },\n onFailedAttempt: async (e, meta) => {\n lastError = e;\n await this.#handlers.onError?.(e, this.#getContext(meta.attempt));\n if (!FrameworkError.isRetryable(e)) {\n throw e;\n }\n assertAborted();\n },\n },\n )\n .then((x) => task.resolve(x))\n .catch((x) => task.reject(x));\n\n return task;\n }\n\n async get(config?: RetryableRunConfig): Promise<T> {\n if (this.isResolved) {\n return this.#value!.resolvedValue()!;\n }\n if (this.isRejected) {\n throw this.#value?.rejectedValue();\n }\n\n if (this.#value?.state === TaskState.PENDING && !config) {\n return this.#value;\n }\n\n this.#value?.catch?.(() => {});\n this.#value = this._run(config);\n return this.#value;\n }\n\n reset() {\n this.#value?.catch?.(() => {});\n this.#value = null;\n this.#handlers.onReset?.();\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/internals/helpers/retryable.ts"],"names":["RunStrategy","THROW_IMMEDIATELY","SETTLE_ROUND","SETTLE_ALL","Retryable","constructor","ctx","createRandomHash","executor","onReset","onError","onRetry","config","maxRetries","Math","max","runGroup","strategy","inputs","Promise","all","map","input","get","controller","AbortController","results","allSettled","groupSignal","signal","undefined","catch","err","abort","throwIfAborted","result","value","runSequence","collect","R","values","asyncProperties","mapValues","attempt","executionId","Object","defineProperty","enumerable","isResolved","state","TaskState","RESOLVED","isRejected","REJECTED","_run","task","Task","assertAborted","lastError","pRetry","retries","factor","shouldRetry","e","FrameworkError","isRetryable","aborted","onFailedAttempt","meta","then","x","resolve","reject","resolvedValue","rejectedValue","PENDING","reset"],"mappings":"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","file":"retryable.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as R from \"remeda\";\nimport { Task, TaskState } from \"promise-based-task\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { EnumValue } from \"@/internals/types.js\";\nimport { asyncProperties } from \"@/internals/helpers/promise.js\";\nimport { createRandomHash } from \"@/internals/helpers/hash.js\";\nimport { pRetry } from \"@/internals/helpers/retry.js\";\n\nexport interface RetryableConfig {\n maxRetries: number;\n factor?: number;\n signal?: AbortSignal;\n}\n\nexport const RunStrategy = {\n /**\n * Once a single Retryable throws, other retry ables get cancelled immediately.\n */\n THROW_IMMEDIATELY: \"THROW_IMMEDIATELY\",\n\n /**\n * Once a single Retryable throws, wait for other to completes, but prevent further retries.\n */\n SETTLE_ROUND: \"SETTLE_ROUND\",\n\n /**\n * Once a single Retryable throws, other Retryables remains to continue. Error is thrown by the end.\n */\n SETTLE_ALL: \"SETTLE_ALL\",\n} as const;\n\nexport interface RetryableRunConfig {\n groupSignal: AbortSignal;\n}\n\nexport interface RetryableContext {\n executionId: string;\n attempt: number;\n signal?: AbortSignal;\n}\n\nexport type RetryableHandler<T> = (ctx: RetryableContext) => Promise<T>;\nexport type ResetHandler = () => void;\nexport type ErrorHandler = (error: Error, ctx: RetryableContext) => void | Promise<void>;\nexport type RetryHandler = (ctx: RetryableContext, lastError: Error) => void | Promise<void>;\n\nexport class Retryable<T> {\n readonly #id: string;\n #value: Task<T, Error> | null;\n #config: RetryableConfig;\n #handlers;\n\n constructor(ctx: {\n executor: RetryableHandler<T>;\n onReset?: ResetHandler;\n onError?: ErrorHandler;\n onRetry?: RetryHandler;\n config?: Partial<RetryableConfig>;\n }) {\n this.#value = null;\n this.#id = createRandomHash();\n this.#handlers = {\n executor: ctx.executor,\n onReset: ctx.onReset,\n onError: ctx.onError,\n onRetry: ctx.onRetry,\n } as const;\n this.#config = {\n ...ctx.config,\n maxRetries: Math.max(ctx.config?.maxRetries || 0, 0),\n };\n }\n\n static async runGroup<T>(\n strategy: EnumValue<typeof RunStrategy>,\n inputs: Retryable<T>[],\n ): Promise<T[]> {\n if (strategy === RunStrategy.THROW_IMMEDIATELY) {\n return await Promise.all(inputs.map((input) => input.get()));\n }\n\n const controller = new AbortController();\n const results = await Promise.allSettled(\n inputs.map((input) =>\n input\n .get(strategy === RunStrategy.SETTLE_ALL ? { groupSignal: controller.signal } : undefined)\n .catch((err) => {\n controller.abort(err);\n throw err;\n }),\n ),\n );\n controller.signal.throwIfAborted();\n return results.map((result) => (result as PromiseFulfilledResult<T>).value!);\n }\n\n static async *runSequence<T>(inputs: readonly Retryable<T>[]): AsyncGenerator<T> {\n for (const input of inputs) {\n yield await input.get();\n }\n }\n\n static async collect<T>(inputs: T & Record<string, Retryable<any>>) {\n // Solve everything\n await Promise.all(R.values(inputs).map((input) => input.get()));\n\n // Obtain latest values\n return await asyncProperties(\n R.mapValues(inputs, (value) => (value as Retryable<any>).get()) as {\n [K in keyof T]: Promise<T[K] extends Retryable<infer Q> ? Q : never>;\n },\n );\n }\n\n #getContext(attempt: number): RetryableContext {\n const ctx: RetryableContext = {\n attempt,\n executionId: this.#id,\n signal: this.#config.signal,\n };\n Object.defineProperty(ctx, \"signal\", {\n enumerable: false,\n });\n return ctx;\n }\n\n get isResolved(): boolean {\n return this.#value?.state === TaskState.RESOLVED;\n }\n\n get isRejected(): boolean {\n return this.#value?.state === TaskState.REJECTED;\n }\n\n protected _run(config?: RetryableRunConfig) {\n const task = new Task<T, Error>();\n\n const assertAborted = () => {\n this.#config.signal?.throwIfAborted?.();\n config?.groupSignal?.throwIfAborted?.();\n };\n\n let lastError: Error | null = null;\n pRetry(\n async (attempt) => {\n assertAborted();\n\n const ctx = this.#getContext(attempt);\n if (attempt > 1) {\n await this.#handlers.onRetry?.(ctx, lastError!);\n }\n return await this.#handlers.executor(ctx);\n },\n {\n retries: this.#config.maxRetries,\n factor: this.#config.factor,\n signal: this.#config.signal,\n shouldRetry: (e) => {\n if (!FrameworkError.isRetryable(e)) {\n return false;\n }\n return !config?.groupSignal?.aborted && !this.#config.signal?.aborted;\n },\n onFailedAttempt: async (e, meta) => {\n lastError = e;\n await this.#handlers.onError?.(e, this.#getContext(meta.attempt));\n if (!FrameworkError.isRetryable(e)) {\n throw e;\n }\n assertAborted();\n },\n },\n )\n .then((x) => task.resolve(x))\n .catch((x) => task.reject(x));\n\n return task;\n }\n\n async get(config?: RetryableRunConfig): Promise<T> {\n if (this.isResolved) {\n return this.#value!.resolvedValue()!;\n }\n if (this.isRejected) {\n throw this.#value?.rejectedValue();\n }\n\n if (this.#value?.state === TaskState.PENDING && !config) {\n return this.#value;\n }\n\n this.#value?.catch?.(() => {});\n this.#value = this._run(config);\n return this.#value;\n }\n\n reset() {\n this.#value?.catch?.(() => {});\n this.#value = null;\n this.#handlers.onReset?.();\n }\n}\n"]}
1
+ {"version":3,"sources":["retryable.ts"],"names":["RunStrategy","THROW_IMMEDIATELY","SETTLE_ROUND","SETTLE_ALL","Retryable","constructor","ctx","createRandomHash","executor","onReset","onError","onRetry","config","maxRetries","Math","max","runGroup","strategy","inputs","Promise","all","map","input","get","controller","AbortController","results","allSettled","groupSignal","signal","undefined","catch","err","abort","throwIfAborted","result","value","runSequence","collect","R","values","asyncProperties","mapValues","attempt","executionId","Object","defineProperty","enumerable","isResolved","state","TaskState","RESOLVED","isRejected","REJECTED","_run","task","Task","assertAborted","lastError","pRetry","retries","factor","shouldRetry","e","FrameworkError","isRetryable","aborted","onFailedAttempt","meta","then","x","resolve","reject","resolvedValue","rejectedValue","PENDING","reset"],"mappings":"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","file":"retryable.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as R from \"remeda\";\nimport { Task, TaskState } from \"promise-based-task\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { EnumValue } from \"@/internals/types.js\";\nimport { asyncProperties } from \"@/internals/helpers/promise.js\";\nimport { createRandomHash } from \"@/internals/helpers/hash.js\";\nimport { pRetry } from \"@/internals/helpers/retry.js\";\n\nexport interface RetryableConfig {\n maxRetries: number;\n factor?: number;\n signal?: AbortSignal;\n}\n\nexport const RunStrategy = {\n /**\n * Once a single Retryable throws, other retry ables get cancelled immediately.\n */\n THROW_IMMEDIATELY: \"THROW_IMMEDIATELY\",\n\n /**\n * Once a single Retryable throws, wait for other to completes, but prevent further retries.\n */\n SETTLE_ROUND: \"SETTLE_ROUND\",\n\n /**\n * Once a single Retryable throws, other Retryables remains to continue. Error is thrown by the end.\n */\n SETTLE_ALL: \"SETTLE_ALL\",\n} as const;\n\nexport interface RetryableRunConfig {\n groupSignal: AbortSignal;\n}\n\nexport interface RetryableContext {\n executionId: string;\n attempt: number;\n signal?: AbortSignal;\n}\n\nexport type RetryableHandler<T> = (ctx: RetryableContext) => Promise<T>;\nexport type ResetHandler = () => void;\nexport type ErrorHandler = (error: Error, ctx: RetryableContext) => void | Promise<void>;\nexport type RetryHandler = (ctx: RetryableContext, lastError: Error) => void | Promise<void>;\n\nexport class Retryable<T> {\n readonly #id: string;\n #value: Task<T, Error> | null;\n #config: RetryableConfig;\n #handlers;\n\n constructor(ctx: {\n executor: RetryableHandler<T>;\n onReset?: ResetHandler;\n onError?: ErrorHandler;\n onRetry?: RetryHandler;\n config?: Partial<RetryableConfig>;\n }) {\n this.#value = null;\n this.#id = createRandomHash();\n this.#handlers = {\n executor: ctx.executor,\n onReset: ctx.onReset,\n onError: ctx.onError,\n onRetry: ctx.onRetry,\n } as const;\n this.#config = {\n ...ctx.config,\n maxRetries: Math.max(ctx.config?.maxRetries || 0, 0),\n };\n }\n\n static async runGroup<T>(\n strategy: EnumValue<typeof RunStrategy>,\n inputs: Retryable<T>[],\n ): Promise<T[]> {\n if (strategy === RunStrategy.THROW_IMMEDIATELY) {\n return await Promise.all(inputs.map((input) => input.get()));\n }\n\n const controller = new AbortController();\n const results = await Promise.allSettled(\n inputs.map((input) =>\n input\n .get(strategy === RunStrategy.SETTLE_ALL ? { groupSignal: controller.signal } : undefined)\n .catch((err) => {\n controller.abort(err);\n throw err;\n }),\n ),\n );\n controller.signal.throwIfAborted();\n return results.map((result) => (result as PromiseFulfilledResult<T>).value!);\n }\n\n static async *runSequence<T>(inputs: readonly Retryable<T>[]): AsyncGenerator<T> {\n for (const input of inputs) {\n yield await input.get();\n }\n }\n\n static async collect<T>(inputs: T & Record<string, Retryable<any>>) {\n // Solve everything\n await Promise.all(R.values(inputs).map((input) => input.get()));\n\n // Obtain latest values\n return await asyncProperties(\n R.mapValues(inputs, (value) => (value as Retryable<any>).get()) as {\n [K in keyof T]: Promise<T[K] extends Retryable<infer Q> ? Q : never>;\n },\n );\n }\n\n #getContext(attempt: number): RetryableContext {\n const ctx: RetryableContext = {\n attempt,\n executionId: this.#id,\n signal: this.#config.signal,\n };\n Object.defineProperty(ctx, \"signal\", {\n enumerable: false,\n });\n return ctx;\n }\n\n get isResolved(): boolean {\n return this.#value?.state === TaskState.RESOLVED;\n }\n\n get isRejected(): boolean {\n return this.#value?.state === TaskState.REJECTED;\n }\n\n protected _run(config?: RetryableRunConfig) {\n const task = new Task<T, Error>();\n\n const assertAborted = () => {\n this.#config.signal?.throwIfAborted?.();\n config?.groupSignal?.throwIfAborted?.();\n };\n\n let lastError: Error | null = null;\n pRetry(\n async (attempt) => {\n assertAborted();\n\n const ctx = this.#getContext(attempt);\n if (attempt > 1) {\n await this.#handlers.onRetry?.(ctx, lastError!);\n }\n return await this.#handlers.executor(ctx);\n },\n {\n retries: this.#config.maxRetries,\n factor: this.#config.factor,\n signal: this.#config.signal,\n shouldRetry: (e) => {\n if (!FrameworkError.isRetryable(e)) {\n return false;\n }\n return !config?.groupSignal?.aborted && !this.#config.signal?.aborted;\n },\n onFailedAttempt: async (e, meta) => {\n lastError = e;\n await this.#handlers.onError?.(e, this.#getContext(meta.attempt));\n if (!FrameworkError.isRetryable(e)) {\n throw e;\n }\n assertAborted();\n },\n },\n )\n .then((x) => task.resolve(x))\n .catch((x) => task.reject(x));\n\n return task;\n }\n\n async get(config?: RetryableRunConfig): Promise<T> {\n if (this.isResolved) {\n return this.#value!.resolvedValue()!;\n }\n if (this.isRejected) {\n throw this.#value?.rejectedValue();\n }\n\n if (this.#value?.state === TaskState.PENDING && !config) {\n return this.#value;\n }\n\n this.#value?.catch?.(() => {});\n this.#value = this._run(config);\n return this.#value;\n }\n\n reset() {\n this.#value?.catch?.(() => {});\n this.#value = null;\n this.#handlers.onReset?.();\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/internals/helpers/schema.ts"],"names":["validateSchema","schema","errorOptions","ZodEffects","ValueError","toJsonSchema","options","ZodType","zodToJsonSchema","createSchemaValidator","jsonSchema","ajv","Ajv","coerceTypes","useDefaults","strict","strictSchema","strictTuples","strictNumbers","strictTypes","strictRequired","parseDate","allowDate","allowUnionTypes","addFormats","default","compile","parseBrokenJson","input","trim","JSON","parse","pair","outer","findFirstPair","jsonrepair"],"mappings":";;;;;;;;;;;;;;;;AA4BO,SAASA,cAAAA,CACdC,QACAC,YAAoC,EAAA;AAEpC,EAAID,IAAAA,MAAAA,IAAUA,kBAAkBE,cAAY,EAAA;AAC1C,IAAA,MAAM,IAAIC,qBAAAA,CACR,sFACA,EAAA,IACAF,YAAAA,CAAAA;AAEJ;AACF;AAXgBF,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA;AAaT,SAASK,YAAAA,CACdJ,QACAK,OAA0B,EAAA;AAE1BN,EAAAA,cAAAA,CAAeC,MAAAA,CAAAA;AACf,EAAA,IAAIA,kBAAkBM,WAAS,EAAA;AAC7B,IAAOC,OAAAA,+BAAAA,CAAgBP,QAAQK,OAAAA,CAAAA;AACjC;AACA,EAAOL,OAAAA,MAAAA;AACT;AATgBI,MAAAA,CAAAA,YAAAA,EAAAA,cAAAA,CAAAA;AAWT,SAASI,qBAAAA,CACdR,QACAK,OAAoB,EAAA;AAEpB,EAAMI,MAAAA,UAAAA,GAAaL,aAAaJ,MAAAA,CAAAA;AAEhC,EAAMU,MAAAA,KAAAA,GAAM,IAAIC,OAAI,CAAA;IAClBC,WAAa,EAAA,OAAA;IACbC,WAAa,EAAA,IAAA;IACbC,MAAQ,EAAA,KAAA;IACRC,YAAc,EAAA,KAAA;IACdC,YAAc,EAAA,IAAA;IACdC,aAAe,EAAA,IAAA;IACfC,WAAa,EAAA,IAAA;IACbC,cAAgB,EAAA,IAAA;IAChBC,SAAW,EAAA,IAAA;IACXC,SAAW,EAAA,IAAA;IACXC,eAAiB,EAAA,IAAA;IACjB,GAAGjB;GACL,CAAA;AACAkB,EAAAA,2BAAAA,CAAWC,QAAQd,KAAAA,CAAAA;AACnB,EAAOA,OAAAA,KAAAA,CAAIe,QAA2BhB,UAAAA,CAAAA;AACxC;AAtBgBD,MAAAA,CAAAA,qBAAAA,EAAAA,uBAAAA,CAAAA;AA2BT,SAASkB,eAAAA,CAAgBC,OAA2BtB,OAAgC,EAAA;AACzFsB,EAASA,KAAAA,GAAAA,CAAAA,KAAAA,IAAS,KAAKC,IAAAA,EAAAA;AAEvB,EAAI,IAAA;AACF,IAAI,IAAA;AACF,MAAOC,OAAAA,IAAAA,CAAKC,MAAMH,KAAAA,CAAAA;KACZ,CAAA,MAAA;AACN,MAAA,MAAMI,OAAO1B,OAAS0B,EAAAA,IAAAA;AACtB,MAAA,IAAIA,IAAM,EAAA;AACR,QAAA,MAAM,EAAEC,KAAK,EAAA,GAAKC,wBAAcN,CAAAA,KAAAA,EAAOI,IAAAA,CAAS,IAAA;UAAEC,KAAOL,EAAAA;AAAM,SAAA;AAC/D,QAAA,OAAOE,IAAKC,CAAAA,KAAAA,CAAMI,qBAAWF,CAAAA,KAAAA,CAAAA,CAAAA;OACxB,MAAA;AACL,QAAA,OAAOH,IAAKC,CAAAA,KAAAA,CAAMI,qBAAWP,CAAAA,KAAAA,CAAAA,CAAAA;AAC/B;AACF;GACM,CAAA,MAAA;AACN,IAAO,OAAA,IAAA;AACT;AACF;AAlBgBD,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA","file":"schema.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TypeOf, ZodType, ZodEffects, ZodTypeAny, AnyZodObject, input } from \"zod\";\nimport { zodToJsonSchema, Options } from \"zod-to-json-schema\";\nimport { Ajv, SchemaObject, ValidateFunction, Options as AjvOptions } from \"ajv\";\nimport addFormats from \"ajv-formats\";\nimport { findFirstPair } from \"@/internals/helpers/string.js\";\nimport { FrameworkErrorOptions, ValueError } from \"@/errors.js\";\nimport { jsonrepair } from \"jsonrepair\";\nexport type AnyToolSchemaLike = AnyZodObject | SchemaObject;\nexport type AnySchemaLike = ZodTypeAny | SchemaObject;\nexport type FromSchemaLike<T> = T extends ZodTypeAny ? TypeOf<T> : unknown;\nexport type FromSchemaLikeRaw<T> = T extends ZodTypeAny ? input<T> : unknown;\n\nexport function validateSchema<T extends AnySchemaLike>(\n schema: T | ZodEffects<any>,\n errorOptions?: FrameworkErrorOptions,\n): asserts schema is T {\n if (schema && schema instanceof ZodEffects) {\n throw new ValueError(\n \"zod effects (refine, superRefine, transform, ...) cannot be converted to JSONSchema!\",\n [],\n errorOptions,\n );\n }\n}\n\nexport function toJsonSchema<T extends AnySchemaLike>(\n schema: T,\n options?: Partial<Options>,\n): SchemaObject {\n validateSchema(schema);\n if (schema instanceof ZodType) {\n return zodToJsonSchema(schema, options);\n }\n return schema;\n}\n\nexport function createSchemaValidator<T extends AnySchemaLike>(\n schema: T,\n options?: AjvOptions,\n): ValidateFunction<FromSchemaLike<T>> {\n const jsonSchema = toJsonSchema(schema);\n\n const ajv = new Ajv({\n coerceTypes: \"array\",\n useDefaults: true,\n strict: false,\n strictSchema: false,\n strictTuples: true,\n strictNumbers: true,\n strictTypes: true,\n strictRequired: true,\n parseDate: true,\n allowDate: true,\n allowUnionTypes: true,\n ...options,\n });\n addFormats.default(ajv);\n return ajv.compile<FromSchemaLike<T>>(jsonSchema);\n}\n\ninterface ParseBrokenJsonOptions {\n pair?: [string, string] | null;\n}\nexport function parseBrokenJson(input: string | undefined, options?: ParseBrokenJsonOptions) {\n input = (input ?? \"\")?.trim();\n\n try {\n try {\n return JSON.parse(input);\n } catch {\n const pair = options?.pair;\n if (pair) {\n const { outer } = findFirstPair(input, pair) ?? { outer: input };\n return JSON.parse(jsonrepair(outer));\n } else {\n return JSON.parse(jsonrepair(input));\n }\n }\n } catch {\n return null;\n }\n}\n"]}
1
+ {"version":3,"sources":["schema.ts"],"names":["validateSchema","schema","errorOptions","ZodEffects","ValueError","toJsonSchema","options","ZodType","zodToJsonSchema","createSchemaValidator","jsonSchema","ajv","Ajv","coerceTypes","useDefaults","strict","strictSchema","strictTuples","strictNumbers","strictTypes","strictRequired","parseDate","allowDate","allowUnionTypes","addFormats","default","compile","parseBrokenJson","input","trim","JSON","parse","pair","outer","findFirstPair","jsonrepair"],"mappings":";;;;;;;;;;;;;;;;AA4BO,SAASA,cAAAA,CACdC,QACAC,YAAoC,EAAA;AAEpC,EAAID,IAAAA,MAAAA,IAAUA,kBAAkBE,cAAY,EAAA;AAC1C,IAAA,MAAM,IAAIC,qBAAAA,CACR,sFACA,EAAA,IACAF,YAAAA,CAAAA;AAEJ;AACF;AAXgBF,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA;AAaT,SAASK,YAAAA,CACdJ,QACAK,OAA0B,EAAA;AAE1BN,EAAAA,cAAAA,CAAeC,MAAAA,CAAAA;AACf,EAAA,IAAIA,kBAAkBM,WAAS,EAAA;AAC7B,IAAOC,OAAAA,+BAAAA,CAAgBP,QAAQK,OAAAA,CAAAA;AACjC;AACA,EAAOL,OAAAA,MAAAA;AACT;AATgBI,MAAAA,CAAAA,YAAAA,EAAAA,cAAAA,CAAAA;AAWT,SAASI,qBAAAA,CACdR,QACAK,OAAoB,EAAA;AAEpB,EAAMI,MAAAA,UAAAA,GAAaL,aAAaJ,MAAAA,CAAAA;AAEhC,EAAMU,MAAAA,KAAAA,GAAM,IAAIC,OAAI,CAAA;IAClBC,WAAa,EAAA,OAAA;IACbC,WAAa,EAAA,IAAA;IACbC,MAAQ,EAAA,KAAA;IACRC,YAAc,EAAA,KAAA;IACdC,YAAc,EAAA,IAAA;IACdC,aAAe,EAAA,IAAA;IACfC,WAAa,EAAA,IAAA;IACbC,cAAgB,EAAA,IAAA;IAChBC,SAAW,EAAA,IAAA;IACXC,SAAW,EAAA,IAAA;IACXC,eAAiB,EAAA,IAAA;IACjB,GAAGjB;GACL,CAAA;AACAkB,EAAAA,2BAAAA,CAAWC,QAAQd,KAAAA,CAAAA;AACnB,EAAOA,OAAAA,KAAAA,CAAIe,QAA2BhB,UAAAA,CAAAA;AACxC;AAtBgBD,MAAAA,CAAAA,qBAAAA,EAAAA,uBAAAA,CAAAA;AA2BT,SAASkB,eAAAA,CAAgBC,OAA2BtB,OAAgC,EAAA;AACzFsB,EAASA,KAAAA,GAAAA,CAAAA,KAAAA,IAAS,KAAKC,IAAAA,EAAAA;AAEvB,EAAI,IAAA;AACF,IAAI,IAAA;AACF,MAAOC,OAAAA,IAAAA,CAAKC,MAAMH,KAAAA,CAAAA;KACZ,CAAA,MAAA;AACN,MAAA,MAAMI,OAAO1B,OAAS0B,EAAAA,IAAAA;AACtB,MAAA,IAAIA,IAAM,EAAA;AACR,QAAA,MAAM,EAAEC,KAAK,EAAA,GAAKC,wBAAcN,CAAAA,KAAAA,EAAOI,IAAAA,CAAS,IAAA;UAAEC,KAAOL,EAAAA;AAAM,SAAA;AAC/D,QAAA,OAAOE,IAAKC,CAAAA,KAAAA,CAAMI,qBAAWF,CAAAA,KAAAA,CAAAA,CAAAA;OACxB,MAAA;AACL,QAAA,OAAOH,IAAKC,CAAAA,KAAAA,CAAMI,qBAAWP,CAAAA,KAAAA,CAAAA,CAAAA;AAC/B;AACF;GACM,CAAA,MAAA;AACN,IAAO,OAAA,IAAA;AACT;AACF;AAlBgBD,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA","file":"schema.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TypeOf, ZodType, ZodEffects, ZodTypeAny, AnyZodObject, input } from \"zod\";\nimport { zodToJsonSchema, Options } from \"zod-to-json-schema\";\nimport { Ajv, SchemaObject, ValidateFunction, Options as AjvOptions } from \"ajv\";\nimport addFormats from \"ajv-formats\";\nimport { findFirstPair } from \"@/internals/helpers/string.js\";\nimport { FrameworkErrorOptions, ValueError } from \"@/errors.js\";\nimport { jsonrepair } from \"jsonrepair\";\nexport type AnyToolSchemaLike = AnyZodObject | SchemaObject;\nexport type AnySchemaLike = ZodTypeAny | SchemaObject;\nexport type FromSchemaLike<T> = T extends ZodTypeAny ? TypeOf<T> : unknown;\nexport type FromSchemaLikeRaw<T> = T extends ZodTypeAny ? input<T> : unknown;\n\nexport function validateSchema<T extends AnySchemaLike>(\n schema: T | ZodEffects<any>,\n errorOptions?: FrameworkErrorOptions,\n): asserts schema is T {\n if (schema && schema instanceof ZodEffects) {\n throw new ValueError(\n \"zod effects (refine, superRefine, transform, ...) cannot be converted to JSONSchema!\",\n [],\n errorOptions,\n );\n }\n}\n\nexport function toJsonSchema<T extends AnySchemaLike>(\n schema: T,\n options?: Partial<Options>,\n): SchemaObject {\n validateSchema(schema);\n if (schema instanceof ZodType) {\n return zodToJsonSchema(schema, options);\n }\n return schema;\n}\n\nexport function createSchemaValidator<T extends AnySchemaLike>(\n schema: T,\n options?: AjvOptions,\n): ValidateFunction<FromSchemaLike<T>> {\n const jsonSchema = toJsonSchema(schema);\n\n const ajv = new Ajv({\n coerceTypes: \"array\",\n useDefaults: true,\n strict: false,\n strictSchema: false,\n strictTuples: true,\n strictNumbers: true,\n strictTypes: true,\n strictRequired: true,\n parseDate: true,\n allowDate: true,\n allowUnionTypes: true,\n ...options,\n });\n addFormats.default(ajv);\n return ajv.compile<FromSchemaLike<T>>(jsonSchema);\n}\n\ninterface ParseBrokenJsonOptions {\n pair?: [string, string] | null;\n}\nexport function parseBrokenJson(input: string | undefined, options?: ParseBrokenJsonOptions) {\n input = (input ?? \"\")?.trim();\n\n try {\n try {\n return JSON.parse(input);\n } catch {\n const pair = options?.pair;\n if (pair) {\n const { outer } = findFirstPair(input, pair) ?? { outer: input };\n return JSON.parse(jsonrepair(outer));\n } else {\n return JSON.parse(jsonrepair(input));\n }\n }\n } catch {\n return null;\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { AnyZodObject, ZodTypeAny, TypeOf, input, ZodEffects } from 'zod';
1
+ import { AnyZodObject, ZodTypeAny, input, TypeOf, ZodEffects } from 'zod';
2
2
  import { Options } from 'zod-to-json-schema';
3
3
  import { SchemaObject, Options as Options$1, ValidateFunction } from 'ajv';
4
4
  import { FrameworkErrorOptions } from '../../errors.cjs';
@@ -1,4 +1,4 @@
1
- import { AnyZodObject, ZodTypeAny, TypeOf, input, ZodEffects } from 'zod';
1
+ import { AnyZodObject, ZodTypeAny, input, TypeOf, ZodEffects } from 'zod';
2
2
  import { Options } from 'zod-to-json-schema';
3
3
  import { SchemaObject, Options as Options$1, ValidateFunction } from 'ajv';
4
4
  import { FrameworkErrorOptions } from '../../errors.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/internals/helpers/schema.ts"],"names":["validateSchema","schema","errorOptions","ZodEffects","ValueError","toJsonSchema","options","ZodType","zodToJsonSchema","createSchemaValidator","jsonSchema","ajv","Ajv","coerceTypes","useDefaults","strict","strictSchema","strictTuples","strictNumbers","strictTypes","strictRequired","parseDate","allowDate","allowUnionTypes","addFormats","default","compile","parseBrokenJson","input","trim","JSON","parse","pair","outer","findFirstPair","jsonrepair"],"mappings":";;;;;;;;;;AA4BO,SAASA,cAAAA,CACdC,QACAC,YAAoC,EAAA;AAEpC,EAAID,IAAAA,MAAAA,IAAUA,kBAAkBE,UAAY,EAAA;AAC1C,IAAA,MAAM,IAAIC,UAAAA,CACR,sFACA,EAAA,IACAF,YAAAA,CAAAA;AAEJ;AACF;AAXgBF,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA;AAaT,SAASK,YAAAA,CACdJ,QACAK,OAA0B,EAAA;AAE1BN,EAAAA,cAAAA,CAAeC,MAAAA,CAAAA;AACf,EAAA,IAAIA,kBAAkBM,OAAS,EAAA;AAC7B,IAAOC,OAAAA,eAAAA,CAAgBP,QAAQK,OAAAA,CAAAA;AACjC;AACA,EAAOL,OAAAA,MAAAA;AACT;AATgBI,MAAAA,CAAAA,YAAAA,EAAAA,cAAAA,CAAAA;AAWT,SAASI,qBAAAA,CACdR,QACAK,OAAoB,EAAA;AAEpB,EAAMI,MAAAA,UAAAA,GAAaL,aAAaJ,MAAAA,CAAAA;AAEhC,EAAMU,MAAAA,GAAAA,GAAM,IAAIC,GAAI,CAAA;IAClBC,WAAa,EAAA,OAAA;IACbC,WAAa,EAAA,IAAA;IACbC,MAAQ,EAAA,KAAA;IACRC,YAAc,EAAA,KAAA;IACdC,YAAc,EAAA,IAAA;IACdC,aAAe,EAAA,IAAA;IACfC,WAAa,EAAA,IAAA;IACbC,cAAgB,EAAA,IAAA;IAChBC,SAAW,EAAA,IAAA;IACXC,SAAW,EAAA,IAAA;IACXC,eAAiB,EAAA,IAAA;IACjB,GAAGjB;GACL,CAAA;AACAkB,EAAAA,UAAAA,CAAWC,QAAQd,GAAAA,CAAAA;AACnB,EAAOA,OAAAA,GAAAA,CAAIe,QAA2BhB,UAAAA,CAAAA;AACxC;AAtBgBD,MAAAA,CAAAA,qBAAAA,EAAAA,uBAAAA,CAAAA;AA2BT,SAASkB,eAAAA,CAAgBC,OAA2BtB,OAAgC,EAAA;AACzFsB,EAASA,KAAAA,GAAAA,CAAAA,KAAAA,IAAS,KAAKC,IAAAA,EAAAA;AAEvB,EAAI,IAAA;AACF,IAAI,IAAA;AACF,MAAOC,OAAAA,IAAAA,CAAKC,MAAMH,KAAAA,CAAAA;KACZ,CAAA,MAAA;AACN,MAAA,MAAMI,OAAO1B,OAAS0B,EAAAA,IAAAA;AACtB,MAAA,IAAIA,IAAM,EAAA;AACR,QAAA,MAAM,EAAEC,KAAK,EAAA,GAAKC,aAAcN,CAAAA,KAAAA,EAAOI,IAAAA,CAAS,IAAA;UAAEC,KAAOL,EAAAA;AAAM,SAAA;AAC/D,QAAA,OAAOE,IAAKC,CAAAA,KAAAA,CAAMI,UAAWF,CAAAA,KAAAA,CAAAA,CAAAA;OACxB,MAAA;AACL,QAAA,OAAOH,IAAKC,CAAAA,KAAAA,CAAMI,UAAWP,CAAAA,KAAAA,CAAAA,CAAAA;AAC/B;AACF;GACM,CAAA,MAAA;AACN,IAAO,OAAA,IAAA;AACT;AACF;AAlBgBD,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA","file":"schema.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TypeOf, ZodType, ZodEffects, ZodTypeAny, AnyZodObject, input } from \"zod\";\nimport { zodToJsonSchema, Options } from \"zod-to-json-schema\";\nimport { Ajv, SchemaObject, ValidateFunction, Options as AjvOptions } from \"ajv\";\nimport addFormats from \"ajv-formats\";\nimport { findFirstPair } from \"@/internals/helpers/string.js\";\nimport { FrameworkErrorOptions, ValueError } from \"@/errors.js\";\nimport { jsonrepair } from \"jsonrepair\";\nexport type AnyToolSchemaLike = AnyZodObject | SchemaObject;\nexport type AnySchemaLike = ZodTypeAny | SchemaObject;\nexport type FromSchemaLike<T> = T extends ZodTypeAny ? TypeOf<T> : unknown;\nexport type FromSchemaLikeRaw<T> = T extends ZodTypeAny ? input<T> : unknown;\n\nexport function validateSchema<T extends AnySchemaLike>(\n schema: T | ZodEffects<any>,\n errorOptions?: FrameworkErrorOptions,\n): asserts schema is T {\n if (schema && schema instanceof ZodEffects) {\n throw new ValueError(\n \"zod effects (refine, superRefine, transform, ...) cannot be converted to JSONSchema!\",\n [],\n errorOptions,\n );\n }\n}\n\nexport function toJsonSchema<T extends AnySchemaLike>(\n schema: T,\n options?: Partial<Options>,\n): SchemaObject {\n validateSchema(schema);\n if (schema instanceof ZodType) {\n return zodToJsonSchema(schema, options);\n }\n return schema;\n}\n\nexport function createSchemaValidator<T extends AnySchemaLike>(\n schema: T,\n options?: AjvOptions,\n): ValidateFunction<FromSchemaLike<T>> {\n const jsonSchema = toJsonSchema(schema);\n\n const ajv = new Ajv({\n coerceTypes: \"array\",\n useDefaults: true,\n strict: false,\n strictSchema: false,\n strictTuples: true,\n strictNumbers: true,\n strictTypes: true,\n strictRequired: true,\n parseDate: true,\n allowDate: true,\n allowUnionTypes: true,\n ...options,\n });\n addFormats.default(ajv);\n return ajv.compile<FromSchemaLike<T>>(jsonSchema);\n}\n\ninterface ParseBrokenJsonOptions {\n pair?: [string, string] | null;\n}\nexport function parseBrokenJson(input: string | undefined, options?: ParseBrokenJsonOptions) {\n input = (input ?? \"\")?.trim();\n\n try {\n try {\n return JSON.parse(input);\n } catch {\n const pair = options?.pair;\n if (pair) {\n const { outer } = findFirstPair(input, pair) ?? { outer: input };\n return JSON.parse(jsonrepair(outer));\n } else {\n return JSON.parse(jsonrepair(input));\n }\n }\n } catch {\n return null;\n }\n}\n"]}
1
+ {"version":3,"sources":["schema.ts"],"names":["validateSchema","schema","errorOptions","ZodEffects","ValueError","toJsonSchema","options","ZodType","zodToJsonSchema","createSchemaValidator","jsonSchema","ajv","Ajv","coerceTypes","useDefaults","strict","strictSchema","strictTuples","strictNumbers","strictTypes","strictRequired","parseDate","allowDate","allowUnionTypes","addFormats","default","compile","parseBrokenJson","input","trim","JSON","parse","pair","outer","findFirstPair","jsonrepair"],"mappings":";;;;;;;;;;AA4BO,SAASA,cAAAA,CACdC,QACAC,YAAoC,EAAA;AAEpC,EAAID,IAAAA,MAAAA,IAAUA,kBAAkBE,UAAY,EAAA;AAC1C,IAAA,MAAM,IAAIC,UAAAA,CACR,sFACA,EAAA,IACAF,YAAAA,CAAAA;AAEJ;AACF;AAXgBF,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA;AAaT,SAASK,YAAAA,CACdJ,QACAK,OAA0B,EAAA;AAE1BN,EAAAA,cAAAA,CAAeC,MAAAA,CAAAA;AACf,EAAA,IAAIA,kBAAkBM,OAAS,EAAA;AAC7B,IAAOC,OAAAA,eAAAA,CAAgBP,QAAQK,OAAAA,CAAAA;AACjC;AACA,EAAOL,OAAAA,MAAAA;AACT;AATgBI,MAAAA,CAAAA,YAAAA,EAAAA,cAAAA,CAAAA;AAWT,SAASI,qBAAAA,CACdR,QACAK,OAAoB,EAAA;AAEpB,EAAMI,MAAAA,UAAAA,GAAaL,aAAaJ,MAAAA,CAAAA;AAEhC,EAAMU,MAAAA,GAAAA,GAAM,IAAIC,GAAI,CAAA;IAClBC,WAAa,EAAA,OAAA;IACbC,WAAa,EAAA,IAAA;IACbC,MAAQ,EAAA,KAAA;IACRC,YAAc,EAAA,KAAA;IACdC,YAAc,EAAA,IAAA;IACdC,aAAe,EAAA,IAAA;IACfC,WAAa,EAAA,IAAA;IACbC,cAAgB,EAAA,IAAA;IAChBC,SAAW,EAAA,IAAA;IACXC,SAAW,EAAA,IAAA;IACXC,eAAiB,EAAA,IAAA;IACjB,GAAGjB;GACL,CAAA;AACAkB,EAAAA,UAAAA,CAAWC,QAAQd,GAAAA,CAAAA;AACnB,EAAOA,OAAAA,GAAAA,CAAIe,QAA2BhB,UAAAA,CAAAA;AACxC;AAtBgBD,MAAAA,CAAAA,qBAAAA,EAAAA,uBAAAA,CAAAA;AA2BT,SAASkB,eAAAA,CAAgBC,OAA2BtB,OAAgC,EAAA;AACzFsB,EAASA,KAAAA,GAAAA,CAAAA,KAAAA,IAAS,KAAKC,IAAAA,EAAAA;AAEvB,EAAI,IAAA;AACF,IAAI,IAAA;AACF,MAAOC,OAAAA,IAAAA,CAAKC,MAAMH,KAAAA,CAAAA;KACZ,CAAA,MAAA;AACN,MAAA,MAAMI,OAAO1B,OAAS0B,EAAAA,IAAAA;AACtB,MAAA,IAAIA,IAAM,EAAA;AACR,QAAA,MAAM,EAAEC,KAAK,EAAA,GAAKC,aAAcN,CAAAA,KAAAA,EAAOI,IAAAA,CAAS,IAAA;UAAEC,KAAOL,EAAAA;AAAM,SAAA;AAC/D,QAAA,OAAOE,IAAKC,CAAAA,KAAAA,CAAMI,UAAWF,CAAAA,KAAAA,CAAAA,CAAAA;OACxB,MAAA;AACL,QAAA,OAAOH,IAAKC,CAAAA,KAAAA,CAAMI,UAAWP,CAAAA,KAAAA,CAAAA,CAAAA;AAC/B;AACF;GACM,CAAA,MAAA;AACN,IAAO,OAAA,IAAA;AACT;AACF;AAlBgBD,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA","file":"schema.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TypeOf, ZodType, ZodEffects, ZodTypeAny, AnyZodObject, input } from \"zod\";\nimport { zodToJsonSchema, Options } from \"zod-to-json-schema\";\nimport { Ajv, SchemaObject, ValidateFunction, Options as AjvOptions } from \"ajv\";\nimport addFormats from \"ajv-formats\";\nimport { findFirstPair } from \"@/internals/helpers/string.js\";\nimport { FrameworkErrorOptions, ValueError } from \"@/errors.js\";\nimport { jsonrepair } from \"jsonrepair\";\nexport type AnyToolSchemaLike = AnyZodObject | SchemaObject;\nexport type AnySchemaLike = ZodTypeAny | SchemaObject;\nexport type FromSchemaLike<T> = T extends ZodTypeAny ? TypeOf<T> : unknown;\nexport type FromSchemaLikeRaw<T> = T extends ZodTypeAny ? input<T> : unknown;\n\nexport function validateSchema<T extends AnySchemaLike>(\n schema: T | ZodEffects<any>,\n errorOptions?: FrameworkErrorOptions,\n): asserts schema is T {\n if (schema && schema instanceof ZodEffects) {\n throw new ValueError(\n \"zod effects (refine, superRefine, transform, ...) cannot be converted to JSONSchema!\",\n [],\n errorOptions,\n );\n }\n}\n\nexport function toJsonSchema<T extends AnySchemaLike>(\n schema: T,\n options?: Partial<Options>,\n): SchemaObject {\n validateSchema(schema);\n if (schema instanceof ZodType) {\n return zodToJsonSchema(schema, options);\n }\n return schema;\n}\n\nexport function createSchemaValidator<T extends AnySchemaLike>(\n schema: T,\n options?: AjvOptions,\n): ValidateFunction<FromSchemaLike<T>> {\n const jsonSchema = toJsonSchema(schema);\n\n const ajv = new Ajv({\n coerceTypes: \"array\",\n useDefaults: true,\n strict: false,\n strictSchema: false,\n strictTuples: true,\n strictNumbers: true,\n strictTypes: true,\n strictRequired: true,\n parseDate: true,\n allowDate: true,\n allowUnionTypes: true,\n ...options,\n });\n addFormats.default(ajv);\n return ajv.compile<FromSchemaLike<T>>(jsonSchema);\n}\n\ninterface ParseBrokenJsonOptions {\n pair?: [string, string] | null;\n}\nexport function parseBrokenJson(input: string | undefined, options?: ParseBrokenJsonOptions) {\n input = (input ?? \"\")?.trim();\n\n try {\n try {\n return JSON.parse(input);\n } catch {\n const pair = options?.pair;\n if (pair) {\n const { outer } = findFirstPair(input, pair) ?? { outer: input };\n return JSON.parse(jsonrepair(outer));\n } else {\n return JSON.parse(jsonrepair(input));\n }\n }\n } catch {\n return null;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/internals/helpers/stream.ts"],"names":["transformAsyncIterable","generator","transformer","next","done","value","isAsyncIterable","Boolean","Symbol","asyncIterator"],"mappings":";;;;AAgBA,gBAAuBA,sBAAAA,CACrBC,WACAC,WAA2B,EAAA;AAE3B,EAAIC,IAAAA,IAAAA;AACJ,EAAA,OAAO,EAAEA,IAAO,GAAA,MAAMF,SAAUE,CAAAA,IAAAA,IAAQC,IAAM,EAAA;AAC5C,IAAMF,MAAAA,WAAAA,CAAYC,KAAKE,KAAK,CAAA;AAC9B;AACA,EAAA,OAAOF,IAAKE,CAAAA,KAAAA;AACd;AATuBL,MAAAA,CAAAA,sBAAAA,EAAAA,wBAAAA,CAAAA;AAWhB,SAASM,gBAAmBD,KAAU,EAAA;AAC3C,EAAA,OAAOE,OAAQF,CAAAA,KAAAA,IAASG,MAAOC,CAAAA,aAAAA,IAAiBJ,KAAAA,CAAAA;AAClD;AAFgBC,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA","file":"stream.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport async function* transformAsyncIterable<A, B, A2>(\n generator: AsyncGenerator<A, B> | AsyncIterableIterator<A>,\n transformer: (old: A) => A2,\n): AsyncGenerator<A2, B> {\n let next: IteratorResult<A, B>;\n while (!(next = await generator.next()).done) {\n yield transformer(next.value);\n }\n return next.value;\n}\n\nexport function isAsyncIterable<T>(value: any): value is AsyncIterable<T> {\n return Boolean(value && Symbol.asyncIterator in value);\n}\n"]}
1
+ {"version":3,"sources":["stream.ts"],"names":["transformAsyncIterable","generator","transformer","next","done","value","isAsyncIterable","Boolean","Symbol","asyncIterator"],"mappings":";;;;AAgBA,gBAAuBA,sBAAAA,CACrBC,WACAC,WAA2B,EAAA;AAE3B,EAAIC,IAAAA,IAAAA;AACJ,EAAA,OAAO,EAAEA,IAAO,GAAA,MAAMF,SAAUE,CAAAA,IAAAA,IAAQC,IAAM,EAAA;AAC5C,IAAMF,MAAAA,WAAAA,CAAYC,KAAKE,KAAK,CAAA;AAC9B;AACA,EAAA,OAAOF,IAAKE,CAAAA,KAAAA;AACd;AATuBL,MAAAA,CAAAA,sBAAAA,EAAAA,wBAAAA,CAAAA;AAWhB,SAASM,gBAAmBD,KAAU,EAAA;AAC3C,EAAA,OAAOE,OAAQF,CAAAA,KAAAA,IAASG,MAAOC,CAAAA,aAAAA,IAAiBJ,KAAAA,CAAAA;AAClD;AAFgBC,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA","file":"stream.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport async function* transformAsyncIterable<A, B, A2>(\n generator: AsyncGenerator<A, B> | AsyncIterableIterator<A>,\n transformer: (old: A) => A2,\n): AsyncGenerator<A2, B> {\n let next: IteratorResult<A, B>;\n while (!(next = await generator.next()).done) {\n yield transformer(next.value);\n }\n return next.value;\n}\n\nexport function isAsyncIterable<T>(value: any): value is AsyncIterable<T> {\n return Boolean(value && Symbol.asyncIterator in value);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/internals/helpers/stream.ts"],"names":["transformAsyncIterable","generator","transformer","next","done","value","isAsyncIterable","Boolean","Symbol","asyncIterator"],"mappings":";;AAgBA,gBAAuBA,sBAAAA,CACrBC,WACAC,WAA2B,EAAA;AAE3B,EAAIC,IAAAA,IAAAA;AACJ,EAAA,OAAO,EAAEA,IAAO,GAAA,MAAMF,SAAUE,CAAAA,IAAAA,IAAQC,IAAM,EAAA;AAC5C,IAAMF,MAAAA,WAAAA,CAAYC,KAAKE,KAAK,CAAA;AAC9B;AACA,EAAA,OAAOF,IAAKE,CAAAA,KAAAA;AACd;AATuBL,MAAAA,CAAAA,sBAAAA,EAAAA,wBAAAA,CAAAA;AAWhB,SAASM,gBAAmBD,KAAU,EAAA;AAC3C,EAAA,OAAOE,OAAQF,CAAAA,KAAAA,IAASG,MAAOC,CAAAA,aAAAA,IAAiBJ,KAAAA,CAAAA;AAClD;AAFgBC,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA","file":"stream.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport async function* transformAsyncIterable<A, B, A2>(\n generator: AsyncGenerator<A, B> | AsyncIterableIterator<A>,\n transformer: (old: A) => A2,\n): AsyncGenerator<A2, B> {\n let next: IteratorResult<A, B>;\n while (!(next = await generator.next()).done) {\n yield transformer(next.value);\n }\n return next.value;\n}\n\nexport function isAsyncIterable<T>(value: any): value is AsyncIterable<T> {\n return Boolean(value && Symbol.asyncIterator in value);\n}\n"]}
1
+ {"version":3,"sources":["stream.ts"],"names":["transformAsyncIterable","generator","transformer","next","done","value","isAsyncIterable","Boolean","Symbol","asyncIterator"],"mappings":";;AAgBA,gBAAuBA,sBAAAA,CACrBC,WACAC,WAA2B,EAAA;AAE3B,EAAIC,IAAAA,IAAAA;AACJ,EAAA,OAAO,EAAEA,IAAO,GAAA,MAAMF,SAAUE,CAAAA,IAAAA,IAAQC,IAAM,EAAA;AAC5C,IAAMF,MAAAA,WAAAA,CAAYC,KAAKE,KAAK,CAAA;AAC9B;AACA,EAAA,OAAOF,IAAKE,CAAAA,KAAAA;AACd;AATuBL,MAAAA,CAAAA,sBAAAA,EAAAA,wBAAAA,CAAAA;AAWhB,SAASM,gBAAmBD,KAAU,EAAA;AAC3C,EAAA,OAAOE,OAAQF,CAAAA,KAAAA,IAASG,MAAOC,CAAAA,aAAAA,IAAiBJ,KAAAA,CAAAA;AAClD;AAFgBC,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA","file":"stream.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport async function* transformAsyncIterable<A, B, A2>(\n generator: AsyncGenerator<A, B> | AsyncIterableIterator<A>,\n transformer: (old: A) => A2,\n): AsyncGenerator<A2, B> {\n let next: IteratorResult<A, B>;\n while (!(next = await generator.next()).done) {\n yield transformer(next.value);\n }\n return next.value;\n}\n\nexport function isAsyncIterable<T>(value: any): value is AsyncIterable<T> {\n return Boolean(value && Symbol.asyncIterator in value);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/internals/helpers/string.ts"],"names":["splitString","text","options","recursiveSplitString","trim","separators","mergeStrings","chunks","sep","tmpChunks","tmpOverlap","toDoc","parts","join","chunk","length","size","doc","overlap","tmp","shift","push","Error","goodSplits","separator","remainingSeparators","unique","split","filter","Boolean","Comparator","EQ","GT","GTE","LT","LTE","compareVersion","a","comparator","b","diff","replace","localeCompare","undefined","numeric","sensitivity","diffNormalized","Math","min","max","R","isIncludedIn","isJsonLikeString","value","startsWith","endsWith","halveString","seq","includeSeq","index","indexOf","slice","countSharedStartEndLetters","isString","ValueError","minLength","i","at","findFirstPair","pair","opening","closing","balance","startIndex","pairOverlap","allowOverlap","isSame","substring","inner","start","end","innerEnd","innerSize","outer"],"mappings":"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","file":"string.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ValueOf } from \"@/internals/types.js\";\nimport * as R from \"remeda\";\nimport { ValueError } from \"@/errors.js\";\nimport { isString, unique } from \"remeda\";\n\nexport function* splitString(\n text: string,\n options: { size: number; overlap: number; trim?: boolean },\n) {\n yield* recursiveSplitString(text, { ...options, trim: options?.trim ?? false, separators: [] });\n}\n\nexport function* mergeStrings(\n chunks: string[],\n sep: string,\n options: { size: number; overlap: number; trim?: boolean },\n) {\n const tmpChunks: string[] = [];\n let tmpOverlap = 0;\n\n const toDoc = (parts: string[]) => {\n const text = parts.join(sep);\n return options.trim ? text.trim() : text;\n };\n\n for (const chunk of chunks) {\n if (tmpOverlap + chunk.length + tmpChunks.length * sep.length > options.size) {\n if (tmpChunks.length > 0) {\n const doc = toDoc(tmpChunks);\n if (doc) {\n yield doc;\n }\n\n while (\n tmpOverlap > options.overlap ||\n (tmpOverlap + chunk.length + tmpChunks.length * sep.length > options.size &&\n tmpOverlap > 0)\n ) {\n const tmp = tmpChunks.shift()!;\n tmpOverlap -= tmp.length;\n }\n }\n }\n tmpChunks.push(chunk);\n tmpOverlap += chunk.length;\n }\n\n const doc = toDoc(tmpChunks);\n if (doc) {\n yield doc;\n }\n}\n\nexport function* recursiveSplitString(\n text: string,\n options: { size: number; overlap: number; separators: string[]; trim?: boolean },\n): Generator<string> {\n if (options.size <= 0 || options.overlap < 0) {\n throw new Error(\"size must be positive and overlap must be non-negative\");\n }\n if (options.overlap >= options.size) {\n throw new Error(\"overlap must be less than size\");\n }\n\n const goodSplits: string[] = [];\n const [separator, ...remainingSeparators] = unique([...(options.separators ?? []), \"\"]);\n\n for (const chunk of text.split(separator).filter(Boolean)) {\n if (chunk.length < options.size) {\n goodSplits.push(chunk);\n continue;\n }\n\n if (goodSplits.length > 0) {\n yield* mergeStrings(goodSplits, separator, options);\n goodSplits.length = 0;\n }\n\n if (remainingSeparators.length === 0) {\n yield chunk;\n } else {\n yield* recursiveSplitString(chunk, { ...options, separators: remainingSeparators });\n }\n }\n\n if (goodSplits.length > 0) {\n yield* mergeStrings(goodSplits, separator, options);\n }\n}\n\nexport const Comparator = {\n EQ: [0] as const,\n GT: [1] as const,\n GTE: [0, 1] as const,\n LT: [-1] as const,\n LTE: [-1, 0] as const,\n} as const;\n\nexport function compareVersion(\n a: string,\n comparator: ValueOf<typeof Comparator>,\n b: string,\n): boolean {\n const diff = a.replace(\"v\", \"\").trim().localeCompare(b.replace(\"v\", \"\").trim(), undefined, {\n numeric: true,\n sensitivity: \"base\",\n });\n const diffNormalized = Math.min(1, Math.max(-1, diff));\n return R.isIncludedIn(diffNormalized, comparator);\n}\n\nexport function isJsonLikeString(value: string | undefined): value is string {\n if (!value) {\n return false;\n }\n return value.startsWith(\"{\") && value.endsWith(\"}\");\n}\n\nexport function halveString(\n value: string,\n seq: string,\n includeSeq = false,\n): [string] | [string, string] {\n if (seq === \"\") {\n return [value];\n }\n\n const index = value.indexOf(seq);\n if (index === -1) {\n return [value];\n } else {\n return [value.slice(0, index), value.slice(index + (includeSeq ? 0 : seq.length))];\n }\n}\n\nexport function countSharedStartEndLetters(a: string, b: string): number {\n if (!isString(a) || !isString(b)) {\n throw new ValueError(\"Provided values must be all strings.\");\n }\n\n const minLength = Math.min(a.length, b.length);\n for (let i = 0; i < minLength; i++) {\n if (a.at((i + 1) * -1) !== b.at(i)) {\n return i;\n }\n }\n return minLength;\n}\n\nexport function findFirstPair(\n text: string,\n pair: [string, string],\n options: { allowOverlap?: boolean } = {},\n) {\n const [opening, closing] = pair || [];\n if (!pair || !opening || !closing) {\n throw new ValueError(`The \"pair\" parameter is required and must be non-empty!`);\n }\n\n let balance = 0;\n let startIndex = -1;\n const pairOverlap = options.allowOverlap ? countSharedStartEndLetters(opening, closing) : 0;\n\n const isSame = opening === closing;\n for (let index = 0; index < text.length; index++) {\n if (text.substring(index, index + opening.length) === opening && (!isSame || balance === 0)) {\n if (balance === 0) {\n startIndex = index;\n }\n balance++;\n if (!options.allowOverlap) {\n index += opening.length - 1;\n }\n } else if (text.substring(index, index + closing.length) === closing) {\n if (balance > 0) {\n balance--;\n if (balance === 0) {\n const inner = {\n start: startIndex + opening.length,\n get end() {\n let innerEnd = index;\n const innerSize = innerEnd - this.start;\n\n if (innerSize < 0) {\n innerEnd = this.start;\n } else {\n innerEnd += pairOverlap;\n }\n\n return innerEnd;\n },\n };\n\n return {\n start: startIndex,\n end: index + closing.length,\n pair,\n inner: text.substring(inner.start, inner.end),\n outer: text.substring(startIndex, index + closing.length),\n };\n }\n }\n if (!options.allowOverlap) {\n index += closing.length - 1;\n }\n }\n }\n\n return null;\n}\n"]}
1
+ {"version":3,"sources":["string.ts"],"names":["splitString","text","options","recursiveSplitString","trim","separators","mergeStrings","chunks","sep","tmpChunks","tmpOverlap","toDoc","parts","join","chunk","length","size","doc","overlap","tmp","shift","push","Error","goodSplits","separator","remainingSeparators","unique","split","filter","Boolean","Comparator","EQ","GT","GTE","LT","LTE","compareVersion","a","comparator","b","diff","replace","localeCompare","undefined","numeric","sensitivity","diffNormalized","Math","min","max","R","isIncludedIn","isJsonLikeString","value","startsWith","endsWith","halveString","seq","includeSeq","index","indexOf","slice","countSharedStartEndLetters","isString","ValueError","minLength","i","at","findFirstPair","pair","opening","closing","balance","startIndex","pairOverlap","allowOverlap","isSame","substring","inner","start","end","innerEnd","innerSize","outer"],"mappings":"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","file":"string.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ValueOf } from \"@/internals/types.js\";\nimport * as R from \"remeda\";\nimport { ValueError } from \"@/errors.js\";\nimport { isString, unique } from \"remeda\";\n\nexport function* splitString(\n text: string,\n options: { size: number; overlap: number; trim?: boolean },\n) {\n yield* recursiveSplitString(text, { ...options, trim: options?.trim ?? false, separators: [] });\n}\n\nexport function* mergeStrings(\n chunks: string[],\n sep: string,\n options: { size: number; overlap: number; trim?: boolean },\n) {\n const tmpChunks: string[] = [];\n let tmpOverlap = 0;\n\n const toDoc = (parts: string[]) => {\n const text = parts.join(sep);\n return options.trim ? text.trim() : text;\n };\n\n for (const chunk of chunks) {\n if (tmpOverlap + chunk.length + tmpChunks.length * sep.length > options.size) {\n if (tmpChunks.length > 0) {\n const doc = toDoc(tmpChunks);\n if (doc) {\n yield doc;\n }\n\n while (\n tmpOverlap > options.overlap ||\n (tmpOverlap + chunk.length + tmpChunks.length * sep.length > options.size &&\n tmpOverlap > 0)\n ) {\n const tmp = tmpChunks.shift()!;\n tmpOverlap -= tmp.length;\n }\n }\n }\n tmpChunks.push(chunk);\n tmpOverlap += chunk.length;\n }\n\n const doc = toDoc(tmpChunks);\n if (doc) {\n yield doc;\n }\n}\n\nexport function* recursiveSplitString(\n text: string,\n options: { size: number; overlap: number; separators: string[]; trim?: boolean },\n): Generator<string> {\n if (options.size <= 0 || options.overlap < 0) {\n throw new Error(\"size must be positive and overlap must be non-negative\");\n }\n if (options.overlap >= options.size) {\n throw new Error(\"overlap must be less than size\");\n }\n\n const goodSplits: string[] = [];\n const [separator, ...remainingSeparators] = unique([...(options.separators ?? []), \"\"]);\n\n for (const chunk of text.split(separator).filter(Boolean)) {\n if (chunk.length < options.size) {\n goodSplits.push(chunk);\n continue;\n }\n\n if (goodSplits.length > 0) {\n yield* mergeStrings(goodSplits, separator, options);\n goodSplits.length = 0;\n }\n\n if (remainingSeparators.length === 0) {\n yield chunk;\n } else {\n yield* recursiveSplitString(chunk, { ...options, separators: remainingSeparators });\n }\n }\n\n if (goodSplits.length > 0) {\n yield* mergeStrings(goodSplits, separator, options);\n }\n}\n\nexport const Comparator = {\n EQ: [0] as const,\n GT: [1] as const,\n GTE: [0, 1] as const,\n LT: [-1] as const,\n LTE: [-1, 0] as const,\n} as const;\n\nexport function compareVersion(\n a: string,\n comparator: ValueOf<typeof Comparator>,\n b: string,\n): boolean {\n const diff = a.replace(\"v\", \"\").trim().localeCompare(b.replace(\"v\", \"\").trim(), undefined, {\n numeric: true,\n sensitivity: \"base\",\n });\n const diffNormalized = Math.min(1, Math.max(-1, diff));\n return R.isIncludedIn(diffNormalized, comparator);\n}\n\nexport function isJsonLikeString(value: string | undefined): value is string {\n if (!value) {\n return false;\n }\n return value.startsWith(\"{\") && value.endsWith(\"}\");\n}\n\nexport function halveString(\n value: string,\n seq: string,\n includeSeq = false,\n): [string] | [string, string] {\n if (seq === \"\") {\n return [value];\n }\n\n const index = value.indexOf(seq);\n if (index === -1) {\n return [value];\n } else {\n return [value.slice(0, index), value.slice(index + (includeSeq ? 0 : seq.length))];\n }\n}\n\nexport function countSharedStartEndLetters(a: string, b: string): number {\n if (!isString(a) || !isString(b)) {\n throw new ValueError(\"Provided values must be all strings.\");\n }\n\n const minLength = Math.min(a.length, b.length);\n for (let i = 0; i < minLength; i++) {\n if (a.at((i + 1) * -1) !== b.at(i)) {\n return i;\n }\n }\n return minLength;\n}\n\nexport function findFirstPair(\n text: string,\n pair: [string, string],\n options: { allowOverlap?: boolean } = {},\n) {\n const [opening, closing] = pair || [];\n if (!pair || !opening || !closing) {\n throw new ValueError(`The \"pair\" parameter is required and must be non-empty!`);\n }\n\n let balance = 0;\n let startIndex = -1;\n const pairOverlap = options.allowOverlap ? countSharedStartEndLetters(opening, closing) : 0;\n\n const isSame = opening === closing;\n for (let index = 0; index < text.length; index++) {\n if (text.substring(index, index + opening.length) === opening && (!isSame || balance === 0)) {\n if (balance === 0) {\n startIndex = index;\n }\n balance++;\n if (!options.allowOverlap) {\n index += opening.length - 1;\n }\n } else if (text.substring(index, index + closing.length) === closing) {\n if (balance > 0) {\n balance--;\n if (balance === 0) {\n const inner = {\n start: startIndex + opening.length,\n get end() {\n let innerEnd = index;\n const innerSize = innerEnd - this.start;\n\n if (innerSize < 0) {\n innerEnd = this.start;\n } else {\n innerEnd += pairOverlap;\n }\n\n return innerEnd;\n },\n };\n\n return {\n start: startIndex,\n end: index + closing.length,\n pair,\n inner: text.substring(inner.start, inner.end),\n outer: text.substring(startIndex, index + closing.length),\n };\n }\n }\n if (!options.allowOverlap) {\n index += closing.length - 1;\n }\n }\n }\n\n return null;\n}\n"]}