beeai-framework 0.1.29 → 0.1.30

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 (558) hide show
  1. package/dist/adapters/a2a/agents/agent.cjs.map +1 -1
  2. package/dist/adapters/a2a/agents/agent.d.cts +2 -2
  3. package/dist/adapters/a2a/agents/agent.d.ts +2 -2
  4. package/dist/adapters/a2a/agents/agent.js.map +1 -1
  5. package/dist/adapters/a2a/agents/events.d.cts +1 -1
  6. package/dist/adapters/a2a/agents/events.d.ts +1 -1
  7. package/dist/adapters/a2a/agents/types.d.cts +2 -2
  8. package/dist/adapters/a2a/agents/types.d.ts +2 -2
  9. package/dist/adapters/a2a/agents/utils.cjs +52 -11
  10. package/dist/adapters/a2a/agents/utils.cjs.map +1 -1
  11. package/dist/adapters/a2a/agents/utils.js +52 -11
  12. package/dist/adapters/a2a/agents/utils.js.map +1 -1
  13. package/dist/adapters/a2a/serve/agent_executor.cjs.map +1 -1
  14. package/dist/adapters/a2a/serve/agent_executor.d.cts +3 -3
  15. package/dist/adapters/a2a/serve/agent_executor.d.ts +3 -3
  16. package/dist/adapters/a2a/serve/agent_executor.js.map +1 -1
  17. package/dist/adapters/a2a/serve/server.cjs.map +1 -1
  18. package/dist/adapters/a2a/serve/server.d.cts +2 -2
  19. package/dist/adapters/a2a/serve/server.d.ts +2 -2
  20. package/dist/adapters/a2a/serve/server.js.map +1 -1
  21. package/dist/adapters/acp/agents/agent.cjs.map +1 -1
  22. package/dist/adapters/acp/agents/agent.d.cts +2 -2
  23. package/dist/adapters/acp/agents/agent.d.ts +2 -2
  24. package/dist/adapters/acp/agents/agent.js.map +1 -1
  25. package/dist/adapters/acp/agents/events.d.cts +1 -1
  26. package/dist/adapters/acp/agents/events.d.ts +1 -1
  27. package/dist/adapters/agentstack/agents/agent.cjs.map +1 -1
  28. package/dist/adapters/agentstack/agents/agent.d.cts +2 -2
  29. package/dist/adapters/agentstack/agents/agent.d.ts +2 -2
  30. package/dist/adapters/agentstack/agents/agent.js.map +1 -1
  31. package/dist/adapters/agentstack/agents/events.d.cts +1 -1
  32. package/dist/adapters/agentstack/agents/events.d.ts +1 -1
  33. package/dist/adapters/amazon-bedrock/backend/chat.cjs.map +1 -1
  34. package/dist/adapters/amazon-bedrock/backend/chat.d.cts +2 -2
  35. package/dist/adapters/amazon-bedrock/backend/chat.d.ts +2 -2
  36. package/dist/adapters/amazon-bedrock/backend/chat.js.map +1 -1
  37. package/dist/adapters/amazon-bedrock/backend/client.cjs.map +1 -1
  38. package/dist/adapters/amazon-bedrock/backend/client.js.map +1 -1
  39. package/dist/adapters/amazon-bedrock/backend/embedding.cjs.map +1 -1
  40. package/dist/adapters/amazon-bedrock/backend/embedding.d.cts +2 -2
  41. package/dist/adapters/amazon-bedrock/backend/embedding.d.ts +2 -2
  42. package/dist/adapters/amazon-bedrock/backend/embedding.js.map +1 -1
  43. package/dist/adapters/anthropic/backend/chat.cjs.map +1 -1
  44. package/dist/adapters/anthropic/backend/chat.d.cts +2 -2
  45. package/dist/adapters/anthropic/backend/chat.d.ts +2 -2
  46. package/dist/adapters/anthropic/backend/chat.js.map +1 -1
  47. package/dist/adapters/anthropic/backend/client.cjs.map +1 -1
  48. package/dist/adapters/anthropic/backend/client.js.map +1 -1
  49. package/dist/adapters/anthropic/backend/embedding.cjs.map +1 -1
  50. package/dist/adapters/anthropic/backend/embedding.d.cts +2 -2
  51. package/dist/adapters/anthropic/backend/embedding.d.ts +2 -2
  52. package/dist/adapters/anthropic/backend/embedding.js.map +1 -1
  53. package/dist/adapters/azure-openai/backend/chat.cjs.map +1 -1
  54. package/dist/adapters/azure-openai/backend/chat.d.cts +3 -3
  55. package/dist/adapters/azure-openai/backend/chat.d.ts +3 -3
  56. package/dist/adapters/azure-openai/backend/chat.js.map +1 -1
  57. package/dist/adapters/azure-openai/backend/client.cjs.map +1 -1
  58. package/dist/adapters/azure-openai/backend/client.js.map +1 -1
  59. package/dist/adapters/azure-openai/backend/embedding.cjs.map +1 -1
  60. package/dist/adapters/azure-openai/backend/embedding.d.cts +2 -2
  61. package/dist/adapters/azure-openai/backend/embedding.d.ts +2 -2
  62. package/dist/adapters/azure-openai/backend/embedding.js.map +1 -1
  63. package/dist/adapters/dummy/backend/chat.cjs.map +1 -1
  64. package/dist/adapters/dummy/backend/chat.d.cts +2 -2
  65. package/dist/adapters/dummy/backend/chat.d.ts +2 -2
  66. package/dist/adapters/dummy/backend/chat.js.map +1 -1
  67. package/dist/adapters/dummy/backend/embedding.cjs.map +1 -1
  68. package/dist/adapters/dummy/backend/embedding.d.cts +2 -2
  69. package/dist/adapters/dummy/backend/embedding.d.ts +2 -2
  70. package/dist/adapters/dummy/backend/embedding.js.map +1 -1
  71. package/dist/adapters/google-vertex/backend/chat.cjs.map +1 -1
  72. package/dist/adapters/google-vertex/backend/chat.d.cts +3 -3
  73. package/dist/adapters/google-vertex/backend/chat.d.ts +3 -3
  74. package/dist/adapters/google-vertex/backend/chat.js.map +1 -1
  75. package/dist/adapters/google-vertex/backend/client.cjs.map +1 -1
  76. package/dist/adapters/google-vertex/backend/client.js.map +1 -1
  77. package/dist/adapters/google-vertex/backend/embedding.cjs.map +1 -1
  78. package/dist/adapters/google-vertex/backend/embedding.d.cts +2 -2
  79. package/dist/adapters/google-vertex/backend/embedding.d.ts +2 -2
  80. package/dist/adapters/google-vertex/backend/embedding.js.map +1 -1
  81. package/dist/adapters/groq/backend/chat.cjs.map +1 -1
  82. package/dist/adapters/groq/backend/chat.d.cts +3 -3
  83. package/dist/adapters/groq/backend/chat.d.ts +3 -3
  84. package/dist/adapters/groq/backend/chat.js.map +1 -1
  85. package/dist/adapters/groq/backend/client.cjs.map +1 -1
  86. package/dist/adapters/groq/backend/client.js.map +1 -1
  87. package/dist/adapters/groq/backend/embedding.cjs.map +1 -1
  88. package/dist/adapters/groq/backend/embedding.d.cts +2 -2
  89. package/dist/adapters/groq/backend/embedding.d.ts +2 -2
  90. package/dist/adapters/groq/backend/embedding.js.map +1 -1
  91. package/dist/adapters/langchain/backend/chat.cjs +6 -28
  92. package/dist/adapters/langchain/backend/chat.cjs.map +1 -1
  93. package/dist/adapters/langchain/backend/chat.d.cts +6 -5
  94. package/dist/adapters/langchain/backend/chat.d.ts +6 -5
  95. package/dist/adapters/langchain/backend/chat.js +6 -28
  96. package/dist/adapters/langchain/backend/chat.js.map +1 -1
  97. package/dist/adapters/langchain/backend/embedding.cjs +3 -2
  98. package/dist/adapters/langchain/backend/embedding.cjs.map +1 -1
  99. package/dist/adapters/langchain/backend/embedding.d.cts +3 -3
  100. package/dist/adapters/langchain/backend/embedding.d.ts +3 -3
  101. package/dist/adapters/langchain/backend/embedding.js +3 -2
  102. package/dist/adapters/langchain/backend/embedding.js.map +1 -1
  103. package/dist/adapters/langchain/backend/utils.cjs +328 -0
  104. package/dist/adapters/langchain/backend/utils.cjs.map +1 -0
  105. package/dist/adapters/langchain/backend/utils.d.cts +39 -0
  106. package/dist/adapters/langchain/backend/utils.d.ts +39 -0
  107. package/dist/adapters/langchain/backend/utils.js +324 -0
  108. package/dist/adapters/langchain/backend/utils.js.map +1 -0
  109. package/dist/adapters/langchain/tools.cjs.map +1 -1
  110. package/dist/adapters/langchain/tools.d.cts +2 -2
  111. package/dist/adapters/langchain/tools.d.ts +2 -2
  112. package/dist/adapters/langchain/tools.js.map +1 -1
  113. package/dist/adapters/mcp/serve/http_server.cjs.map +1 -1
  114. package/dist/adapters/mcp/serve/http_server.js.map +1 -1
  115. package/dist/adapters/mcp/serve/in_memory_store.cjs.map +1 -1
  116. package/dist/adapters/mcp/serve/in_memory_store.js.map +1 -1
  117. package/dist/adapters/mcp/serve/server.cjs.map +1 -1
  118. package/dist/adapters/mcp/serve/server.js.map +1 -1
  119. package/dist/adapters/minimax/backend/chat.cjs +25 -0
  120. package/dist/adapters/minimax/backend/chat.cjs.map +1 -0
  121. package/dist/adapters/minimax/backend/chat.d.cts +38 -0
  122. package/dist/adapters/minimax/backend/chat.d.ts +38 -0
  123. package/dist/adapters/minimax/backend/chat.js +23 -0
  124. package/dist/adapters/minimax/backend/chat.js.map +1 -0
  125. package/dist/adapters/minimax/backend/client.cjs +31 -0
  126. package/dist/adapters/minimax/backend/client.cjs.map +1 -0
  127. package/dist/adapters/minimax/backend/client.d.cts +17 -0
  128. package/dist/adapters/minimax/backend/client.d.ts +17 -0
  129. package/dist/adapters/minimax/backend/client.js +29 -0
  130. package/dist/adapters/minimax/backend/client.js.map +1 -0
  131. package/dist/adapters/ollama/backend/chat.cjs.map +1 -1
  132. package/dist/adapters/ollama/backend/chat.d.cts +2 -2
  133. package/dist/adapters/ollama/backend/chat.d.ts +2 -2
  134. package/dist/adapters/ollama/backend/chat.js.map +1 -1
  135. package/dist/adapters/ollama/backend/client.cjs.map +1 -1
  136. package/dist/adapters/ollama/backend/client.js.map +1 -1
  137. package/dist/adapters/ollama/backend/embedding.cjs.map +1 -1
  138. package/dist/adapters/ollama/backend/embedding.d.cts +2 -2
  139. package/dist/adapters/ollama/backend/embedding.d.ts +2 -2
  140. package/dist/adapters/ollama/backend/embedding.js.map +1 -1
  141. package/dist/adapters/openai/backend/chat.cjs.map +1 -1
  142. package/dist/adapters/openai/backend/chat.d.cts +2 -2
  143. package/dist/adapters/openai/backend/chat.d.ts +2 -2
  144. package/dist/adapters/openai/backend/chat.js.map +1 -1
  145. package/dist/adapters/openai/backend/client.cjs.map +1 -1
  146. package/dist/adapters/openai/backend/client.js.map +1 -1
  147. package/dist/adapters/openai/backend/embedding.cjs.map +1 -1
  148. package/dist/adapters/openai/backend/embedding.d.cts +2 -2
  149. package/dist/adapters/openai/backend/embedding.d.ts +2 -2
  150. package/dist/adapters/openai/backend/embedding.js.map +1 -1
  151. package/dist/adapters/vercel/backend/chat.cjs.map +1 -1
  152. package/dist/adapters/vercel/backend/chat.d.cts +2 -2
  153. package/dist/adapters/vercel/backend/chat.d.ts +2 -2
  154. package/dist/adapters/vercel/backend/chat.js.map +1 -1
  155. package/dist/adapters/vercel/backend/embedding.cjs.map +1 -1
  156. package/dist/adapters/vercel/backend/embedding.d.cts +2 -2
  157. package/dist/adapters/vercel/backend/embedding.d.ts +2 -2
  158. package/dist/adapters/vercel/backend/embedding.js.map +1 -1
  159. package/dist/adapters/vercel/backend/utils.cjs.map +1 -1
  160. package/dist/adapters/vercel/backend/utils.d.cts +2 -2
  161. package/dist/adapters/vercel/backend/utils.d.ts +2 -2
  162. package/dist/adapters/vercel/backend/utils.js.map +1 -1
  163. package/dist/adapters/watsonx/backend/chat.cjs.map +1 -1
  164. package/dist/adapters/watsonx/backend/chat.d.cts +2 -2
  165. package/dist/adapters/watsonx/backend/chat.d.ts +2 -2
  166. package/dist/adapters/watsonx/backend/chat.js +1 -1
  167. package/dist/adapters/watsonx/backend/chat.js.map +1 -1
  168. package/dist/adapters/watsonx/backend/client.cjs.map +1 -1
  169. package/dist/adapters/watsonx/backend/client.js.map +1 -1
  170. package/dist/adapters/watsonx/backend/embedding.cjs.map +1 -1
  171. package/dist/adapters/watsonx/backend/embedding.d.cts +2 -2
  172. package/dist/adapters/watsonx/backend/embedding.d.ts +2 -2
  173. package/dist/adapters/watsonx/backend/embedding.js.map +1 -1
  174. package/dist/adapters/xai/backend/chat.cjs.map +1 -1
  175. package/dist/adapters/xai/backend/chat.d.cts +2 -2
  176. package/dist/adapters/xai/backend/chat.d.ts +2 -2
  177. package/dist/adapters/xai/backend/chat.js.map +1 -1
  178. package/dist/adapters/xai/backend/client.cjs.map +1 -1
  179. package/dist/adapters/xai/backend/client.js.map +1 -1
  180. package/dist/{agent-CZGWXO-X.d.ts → agent-s3uhvAba.d.ts} +4 -4
  181. package/dist/{agent-PRlGoawI.d.cts → agent-zfT__iq9.d.cts} +4 -4
  182. package/dist/agents/base.cjs.map +1 -1
  183. package/dist/agents/base.d.cts +2 -2
  184. package/dist/agents/base.d.ts +2 -2
  185. package/dist/agents/base.js.map +1 -1
  186. package/dist/agents/experimental/replan/agent.cjs.map +1 -1
  187. package/dist/agents/experimental/replan/agent.d.cts +3 -3
  188. package/dist/agents/experimental/replan/agent.d.ts +3 -3
  189. package/dist/agents/experimental/replan/agent.js.map +1 -1
  190. package/dist/agents/experimental/replan/prompts.cjs.map +1 -1
  191. package/dist/agents/experimental/replan/prompts.d.cts +1 -1
  192. package/dist/agents/experimental/replan/prompts.d.ts +1 -1
  193. package/dist/agents/experimental/replan/prompts.js.map +1 -1
  194. package/dist/agents/experimental/streamlit/agent.cjs.map +1 -1
  195. package/dist/agents/experimental/streamlit/agent.d.cts +3 -3
  196. package/dist/agents/experimental/streamlit/agent.d.ts +3 -3
  197. package/dist/agents/experimental/streamlit/agent.js.map +1 -1
  198. package/dist/agents/experimental/streamlit/prompts.cjs +2 -2
  199. package/dist/agents/experimental/streamlit/prompts.cjs.map +1 -1
  200. package/dist/agents/experimental/streamlit/prompts.js +2 -2
  201. package/dist/agents/experimental/streamlit/prompts.js.map +1 -1
  202. package/dist/agents/react/agent.cjs +6 -6
  203. package/dist/agents/react/agent.cjs.map +1 -1
  204. package/dist/agents/react/agent.d.cts +4 -4
  205. package/dist/agents/react/agent.d.ts +4 -4
  206. package/dist/agents/react/agent.js.map +1 -1
  207. package/dist/agents/react/prompts.cjs.map +1 -1
  208. package/dist/agents/react/prompts.js.map +1 -1
  209. package/dist/agents/react/runners/base.cjs.map +1 -1
  210. package/dist/agents/react/runners/base.d.cts +4 -4
  211. package/dist/agents/react/runners/base.d.ts +4 -4
  212. package/dist/agents/react/runners/base.js.map +1 -1
  213. package/dist/agents/react/runners/deep-think/prompts.cjs.map +1 -1
  214. package/dist/agents/react/runners/deep-think/prompts.js.map +1 -1
  215. package/dist/agents/react/runners/deep-think/runner.cjs.map +1 -1
  216. package/dist/agents/react/runners/deep-think/runner.d.cts +4 -4
  217. package/dist/agents/react/runners/deep-think/runner.d.ts +4 -4
  218. package/dist/agents/react/runners/deep-think/runner.js.map +1 -1
  219. package/dist/agents/react/runners/default/runner.cjs.map +1 -1
  220. package/dist/agents/react/runners/default/runner.d.cts +4 -4
  221. package/dist/agents/react/runners/default/runner.d.ts +4 -4
  222. package/dist/agents/react/runners/default/runner.js.map +1 -1
  223. package/dist/agents/react/runners/default/runner.spec.cjs.map +1 -1
  224. package/dist/agents/react/runners/default/runner.spec.js.map +1 -1
  225. package/dist/agents/react/runners/granite/prompts.cjs.map +1 -1
  226. package/dist/agents/react/runners/granite/prompts.js.map +1 -1
  227. package/dist/agents/react/runners/granite/runner.cjs.map +1 -1
  228. package/dist/agents/react/runners/granite/runner.d.cts +4 -4
  229. package/dist/agents/react/runners/granite/runner.d.ts +4 -4
  230. package/dist/agents/react/runners/granite/runner.js.map +1 -1
  231. package/dist/agents/react/types.d.cts +2 -2
  232. package/dist/agents/react/types.d.ts +2 -2
  233. package/dist/agents/requirement/agent.cjs.map +1 -1
  234. package/dist/agents/requirement/agent.d.cts +5 -5
  235. package/dist/agents/requirement/agent.d.ts +5 -5
  236. package/dist/agents/requirement/agent.js.map +1 -1
  237. package/dist/agents/requirement/prompts.d.cts +8 -8
  238. package/dist/agents/requirement/prompts.d.ts +8 -8
  239. package/dist/agents/requirement/requirements/conditional.cjs.map +1 -1
  240. package/dist/agents/requirement/requirements/conditional.d.cts +5 -5
  241. package/dist/agents/requirement/requirements/conditional.d.ts +5 -5
  242. package/dist/agents/requirement/requirements/conditional.js.map +1 -1
  243. package/dist/agents/requirement/requirements/requirement.cjs.map +1 -1
  244. package/dist/agents/requirement/requirements/requirement.d.cts +4 -4
  245. package/dist/agents/requirement/requirements/requirement.d.ts +4 -4
  246. package/dist/agents/requirement/requirements/requirement.js.map +1 -1
  247. package/dist/agents/requirement/requirements/utils.cjs.map +1 -1
  248. package/dist/agents/requirement/requirements/utils.d.cts +1 -1
  249. package/dist/agents/requirement/requirements/utils.d.ts +1 -1
  250. package/dist/agents/requirement/requirements/utils.js.map +1 -1
  251. package/dist/agents/requirement/runner.cjs.map +1 -1
  252. package/dist/agents/requirement/runner.d.cts +5 -5
  253. package/dist/agents/requirement/runner.d.ts +5 -5
  254. package/dist/agents/requirement/runner.js.map +1 -1
  255. package/dist/agents/requirement/types.d.cts +4 -4
  256. package/dist/agents/requirement/types.d.ts +4 -4
  257. package/dist/agents/requirement/utils/llm.cjs.map +1 -1
  258. package/dist/agents/requirement/utils/llm.d.cts +4 -4
  259. package/dist/agents/requirement/utils/llm.d.ts +4 -4
  260. package/dist/agents/requirement/utils/llm.js.map +1 -1
  261. package/dist/agents/requirement/utils/tool.cjs.map +1 -1
  262. package/dist/agents/requirement/utils/tool.d.cts +4 -4
  263. package/dist/agents/requirement/utils/tool.d.ts +4 -4
  264. package/dist/agents/requirement/utils/tool.js.map +1 -1
  265. package/dist/agents/requirement/utils/toolCallChecker.cjs.map +1 -1
  266. package/dist/agents/requirement/utils/toolCallChecker.js.map +1 -1
  267. package/dist/agents/toolCalling/agent.cjs.map +1 -1
  268. package/dist/agents/toolCalling/agent.d.cts +4 -4
  269. package/dist/agents/toolCalling/agent.d.ts +4 -4
  270. package/dist/agents/toolCalling/agent.js.map +1 -1
  271. package/dist/agents/toolCalling/prompts.cjs.map +1 -1
  272. package/dist/agents/toolCalling/prompts.js.map +1 -1
  273. package/dist/agents/toolCalling/types.d.cts +1 -1
  274. package/dist/agents/toolCalling/types.d.ts +1 -1
  275. package/dist/agents/types.d.cts +2 -2
  276. package/dist/agents/types.d.ts +2 -2
  277. package/dist/backend/backend.cjs.map +1 -1
  278. package/dist/backend/backend.d.cts +3 -3
  279. package/dist/backend/backend.d.ts +3 -3
  280. package/dist/backend/backend.js.map +1 -1
  281. package/dist/backend/chat.cjs.map +1 -1
  282. package/dist/backend/chat.d.cts +2 -2
  283. package/dist/backend/chat.d.ts +2 -2
  284. package/dist/backend/chat.js.map +1 -1
  285. package/dist/backend/client.cjs.map +1 -1
  286. package/dist/backend/client.js.map +1 -1
  287. package/dist/backend/constants.cjs +7 -0
  288. package/dist/backend/constants.cjs.map +1 -1
  289. package/dist/backend/constants.d.cts +5 -0
  290. package/dist/backend/constants.d.ts +5 -0
  291. package/dist/backend/constants.js +7 -0
  292. package/dist/backend/constants.js.map +1 -1
  293. package/dist/backend/core.d.cts +2 -2
  294. package/dist/backend/core.d.ts +2 -2
  295. package/dist/backend/embedding.cjs.map +1 -1
  296. package/dist/backend/embedding.d.cts +2 -2
  297. package/dist/backend/embedding.d.ts +2 -2
  298. package/dist/backend/embedding.js.map +1 -1
  299. package/dist/backend/errors.cjs.map +1 -1
  300. package/dist/backend/errors.d.cts +2 -2
  301. package/dist/backend/errors.d.ts +2 -2
  302. package/dist/backend/errors.js.map +1 -1
  303. package/dist/backend/message.cjs.map +1 -1
  304. package/dist/backend/message.js.map +1 -1
  305. package/dist/backend/utils.cjs.map +1 -1
  306. package/dist/backend/utils.d.cts +2 -2
  307. package/dist/backend/utils.d.ts +2 -2
  308. package/dist/backend/utils.js.map +1 -1
  309. package/dist/{base-CyFx7BRL.d.ts → base-BjzyQ8k6.d.ts} +2 -2
  310. package/dist/{base-XfWeXQ-S.d.cts → base-s3ioVIE9.d.cts} +2 -2
  311. package/dist/cache/decoratorCache.cjs.map +1 -1
  312. package/dist/cache/decoratorCache.js.map +1 -1
  313. package/dist/cache/fileCache.cjs.map +1 -1
  314. package/dist/cache/fileCache.js.map +1 -1
  315. package/dist/cache/nullCache.cjs.map +1 -1
  316. package/dist/cache/nullCache.js.map +1 -1
  317. package/dist/cache/slidingCache.cjs.map +1 -1
  318. package/dist/cache/slidingCache.js.map +1 -1
  319. package/dist/cache/unconstrainedCache.cjs.map +1 -1
  320. package/dist/cache/unconstrainedCache.js.map +1 -1
  321. package/dist/{chat-BFl85cqt.d.cts → chat-C20nYj46.d.cts} +3 -3
  322. package/dist/{chat-BRuyDeKR.d.ts → chat-CfTNfR60.d.ts} +3 -3
  323. package/dist/context.cjs.map +1 -1
  324. package/dist/context.d.cts +1 -1
  325. package/dist/context.d.ts +1 -1
  326. package/dist/context.js.map +1 -1
  327. package/dist/emitter/emitter.cjs.map +1 -1
  328. package/dist/emitter/emitter.d.cts +1 -1
  329. package/dist/emitter/emitter.d.ts +1 -1
  330. package/dist/emitter/emitter.js.map +1 -1
  331. package/dist/emitter/types.d.cts +1 -1
  332. package/dist/emitter/types.d.ts +1 -1
  333. package/dist/emitter/utils.cjs.map +1 -1
  334. package/dist/emitter/utils.js.map +1 -1
  335. package/dist/{emitter-jN55XZZq.d.cts → emitter-D4OcelZ9.d.cts} +1 -1
  336. package/dist/{emitter-36-9MnvA.d.ts → emitter-kHxkUxco.d.ts} +1 -1
  337. package/dist/errors.cjs.map +1 -1
  338. package/dist/errors.js.map +1 -1
  339. package/dist/index.d.cts +4 -4
  340. package/dist/index.d.ts +4 -4
  341. package/dist/internals/env.cjs.map +1 -1
  342. package/dist/internals/env.js.map +1 -1
  343. package/dist/internals/fetcher.cjs.map +1 -1
  344. package/dist/internals/fetcher.d.cts +1 -1
  345. package/dist/internals/fetcher.d.ts +1 -1
  346. package/dist/internals/fetcher.js.map +1 -1
  347. package/dist/internals/helpers/array.cjs.map +1 -1
  348. package/dist/internals/helpers/array.js.map +1 -1
  349. package/dist/internals/helpers/cancellation.cjs.map +1 -1
  350. package/dist/internals/helpers/cancellation.js.map +1 -1
  351. package/dist/internals/helpers/counter.cjs.map +1 -1
  352. package/dist/internals/helpers/counter.js.map +1 -1
  353. package/dist/internals/helpers/general.cjs.map +1 -1
  354. package/dist/internals/helpers/general.js.map +1 -1
  355. package/dist/internals/helpers/hash.cjs.map +1 -1
  356. package/dist/internals/helpers/hash.js.map +1 -1
  357. package/dist/internals/helpers/map.cjs.map +1 -1
  358. package/dist/internals/helpers/map.js.map +1 -1
  359. package/dist/internals/helpers/math.cjs.map +1 -1
  360. package/dist/internals/helpers/math.js.map +1 -1
  361. package/dist/internals/helpers/object.cjs +7 -1
  362. package/dist/internals/helpers/object.cjs.map +1 -1
  363. package/dist/internals/helpers/object.js +7 -1
  364. package/dist/internals/helpers/object.js.map +1 -1
  365. package/dist/internals/helpers/paginate.cjs.map +1 -1
  366. package/dist/internals/helpers/paginate.js.map +1 -1
  367. package/dist/internals/helpers/promise.cjs.map +1 -1
  368. package/dist/internals/helpers/promise.js.map +1 -1
  369. package/dist/internals/helpers/prototype.cjs.map +1 -1
  370. package/dist/internals/helpers/prototype.js.map +1 -1
  371. package/dist/internals/helpers/retry.cjs.map +1 -1
  372. package/dist/internals/helpers/retry.js.map +1 -1
  373. package/dist/internals/helpers/retryable.cjs.map +1 -1
  374. package/dist/internals/helpers/retryable.js.map +1 -1
  375. package/dist/internals/helpers/schema.cjs.map +1 -1
  376. package/dist/internals/helpers/schema.d.cts +4 -4
  377. package/dist/internals/helpers/schema.d.ts +4 -4
  378. package/dist/internals/helpers/schema.js.map +1 -1
  379. package/dist/internals/helpers/stream.cjs.map +1 -1
  380. package/dist/internals/helpers/stream.js.map +1 -1
  381. package/dist/internals/helpers/string.cjs.map +1 -1
  382. package/dist/internals/helpers/string.js.map +1 -1
  383. package/dist/internals/helpers/weakRef.cjs.map +1 -1
  384. package/dist/internals/helpers/weakRef.js.map +1 -1
  385. package/dist/internals/serializable.cjs +3 -1
  386. package/dist/internals/serializable.cjs.map +1 -1
  387. package/dist/internals/serializable.d.cts +6 -0
  388. package/dist/internals/serializable.d.ts +6 -0
  389. package/dist/internals/serializable.js +3 -1
  390. package/dist/internals/serializable.js.map +1 -1
  391. package/dist/internals/types.cjs.map +1 -1
  392. package/dist/internals/types.js.map +1 -1
  393. package/dist/logger/logger.cjs.map +1 -1
  394. package/dist/logger/logger.d.cts +2 -2
  395. package/dist/logger/logger.d.ts +2 -2
  396. package/dist/logger/logger.js +2 -2
  397. package/dist/logger/logger.js.map +1 -1
  398. package/dist/logger/pretty.cjs.map +1 -1
  399. package/dist/logger/pretty.js.map +1 -1
  400. package/dist/memory/base.cjs.map +1 -1
  401. package/dist/memory/base.js.map +1 -1
  402. package/dist/memory/slidingMemory.cjs.map +1 -1
  403. package/dist/memory/slidingMemory.js.map +1 -1
  404. package/dist/memory/summarizeMemory.cjs.map +1 -1
  405. package/dist/memory/summarizeMemory.d.cts +2 -2
  406. package/dist/memory/summarizeMemory.d.ts +2 -2
  407. package/dist/memory/summarizeMemory.js.map +1 -1
  408. package/dist/memory/tokenMemory.cjs.map +1 -1
  409. package/dist/memory/tokenMemory.js.map +1 -1
  410. package/dist/memory/unconstrainedMemory.cjs.map +1 -1
  411. package/dist/memory/unconstrainedMemory.js.map +1 -1
  412. package/dist/middleware/streamToolCall.cjs.map +1 -1
  413. package/dist/middleware/streamToolCall.d.cts +2 -2
  414. package/dist/middleware/streamToolCall.d.ts +2 -2
  415. package/dist/middleware/streamToolCall.js.map +1 -1
  416. package/dist/middleware/trajectory.cjs.map +1 -1
  417. package/dist/middleware/trajectory.d.cts +2 -2
  418. package/dist/middleware/trajectory.d.ts +2 -2
  419. package/dist/middleware/trajectory.js.map +1 -1
  420. package/dist/parsers/errors.cjs.map +1 -1
  421. package/dist/parsers/errors.js.map +1 -1
  422. package/dist/parsers/field.cjs.map +1 -1
  423. package/dist/parsers/field.js.map +1 -1
  424. package/dist/parsers/linePrefix.cjs.map +1 -1
  425. package/dist/parsers/linePrefix.d.cts +1 -1
  426. package/dist/parsers/linePrefix.d.ts +1 -1
  427. package/dist/parsers/linePrefix.js.map +1 -1
  428. package/dist/serializer/error.cjs.map +1 -1
  429. package/dist/serializer/error.js.map +1 -1
  430. package/dist/serializer/serializer.cjs +16 -3
  431. package/dist/serializer/serializer.cjs.map +1 -1
  432. package/dist/serializer/serializer.d.cts +1 -1
  433. package/dist/serializer/serializer.d.ts +1 -1
  434. package/dist/serializer/serializer.js +16 -4
  435. package/dist/serializer/serializer.js.map +1 -1
  436. package/dist/serializer/utils.cjs.map +1 -1
  437. package/dist/serializer/utils.d.cts +1 -1
  438. package/dist/serializer/utils.d.ts +1 -1
  439. package/dist/serializer/utils.js.map +1 -1
  440. package/dist/{serializer-53t8gGQa.d.ts → serializer-BafOT48s.d.ts} +10 -4
  441. package/dist/{serializer-c51B2z6d.d.cts → serializer-CFDWYUco.d.cts} +10 -4
  442. package/dist/serve/server.cjs.map +1 -1
  443. package/dist/serve/server.js.map +1 -1
  444. package/dist/template.cjs.map +1 -1
  445. package/dist/template.js.map +1 -1
  446. package/dist/tools/arxiv.cjs.map +1 -1
  447. package/dist/tools/arxiv.d.cts +2 -2
  448. package/dist/tools/arxiv.d.ts +2 -2
  449. package/dist/tools/arxiv.js.map +1 -1
  450. package/dist/tools/base.cjs.map +1 -1
  451. package/dist/tools/base.d.cts +1 -1
  452. package/dist/tools/base.d.ts +1 -1
  453. package/dist/tools/base.js.map +1 -1
  454. package/dist/tools/calculator.cjs.map +1 -1
  455. package/dist/tools/calculator.d.cts +3 -3
  456. package/dist/tools/calculator.d.ts +3 -3
  457. package/dist/tools/calculator.js.map +1 -1
  458. package/dist/tools/custom.cjs.map +1 -1
  459. package/dist/tools/custom.d.cts +3 -3
  460. package/dist/tools/custom.d.ts +3 -3
  461. package/dist/tools/custom.js.map +1 -1
  462. package/dist/tools/database/elasticsearch.cjs.map +1 -1
  463. package/dist/tools/database/elasticsearch.d.cts +3 -3
  464. package/dist/tools/database/elasticsearch.d.ts +3 -3
  465. package/dist/tools/database/elasticsearch.js.map +1 -1
  466. package/dist/tools/database/metadata.cjs.map +1 -1
  467. package/dist/tools/database/metadata.js.map +1 -1
  468. package/dist/tools/database/milvus.cjs.map +1 -1
  469. package/dist/tools/database/milvus.d.cts +5 -5
  470. package/dist/tools/database/milvus.d.ts +5 -5
  471. package/dist/tools/database/milvus.js.map +1 -1
  472. package/dist/tools/database/qdrant.cjs.map +1 -1
  473. package/dist/tools/database/qdrant.d.cts +2 -2
  474. package/dist/tools/database/qdrant.d.ts +2 -2
  475. package/dist/tools/database/qdrant.js.map +1 -1
  476. package/dist/tools/database/sql.cjs.map +1 -1
  477. package/dist/tools/database/sql.d.cts +2 -2
  478. package/dist/tools/database/sql.d.ts +2 -2
  479. package/dist/tools/database/sql.js.map +1 -1
  480. package/dist/tools/handoff.cjs.map +1 -1
  481. package/dist/tools/handoff.d.cts +2 -2
  482. package/dist/tools/handoff.d.ts +2 -2
  483. package/dist/tools/handoff.js.map +1 -1
  484. package/dist/tools/llm.cjs +1 -1
  485. package/dist/tools/llm.cjs.map +1 -1
  486. package/dist/tools/llm.d.cts +3 -3
  487. package/dist/tools/llm.d.ts +3 -3
  488. package/dist/tools/llm.js +1 -1
  489. package/dist/tools/llm.js.map +1 -1
  490. package/dist/tools/mcp.cjs.map +1 -1
  491. package/dist/tools/mcp.d.cts +2 -2
  492. package/dist/tools/mcp.d.ts +2 -2
  493. package/dist/tools/mcp.js.map +1 -1
  494. package/dist/tools/openapi.cjs.map +1 -1
  495. package/dist/tools/openapi.d.cts +2 -2
  496. package/dist/tools/openapi.d.ts +2 -2
  497. package/dist/tools/openapi.js.map +1 -1
  498. package/dist/tools/python/output.cjs.map +1 -1
  499. package/dist/tools/python/output.d.cts +1 -1
  500. package/dist/tools/python/output.d.ts +1 -1
  501. package/dist/tools/python/output.js.map +1 -1
  502. package/dist/tools/python/python.cjs +5 -2
  503. package/dist/tools/python/python.cjs.map +1 -1
  504. package/dist/tools/python/python.d.cts +3 -3
  505. package/dist/tools/python/python.d.ts +3 -3
  506. package/dist/tools/python/python.js +5 -2
  507. package/dist/tools/python/python.js.map +1 -1
  508. package/dist/tools/python/storage.cjs.map +1 -1
  509. package/dist/tools/python/storage.js.map +1 -1
  510. package/dist/tools/search/base.cjs.map +1 -1
  511. package/dist/tools/search/base.d.cts +2 -2
  512. package/dist/tools/search/base.d.ts +2 -2
  513. package/dist/tools/search/base.js.map +1 -1
  514. package/dist/tools/search/duckDuckGoSearch.cjs.map +1 -1
  515. package/dist/tools/search/duckDuckGoSearch.d.cts +2 -2
  516. package/dist/tools/search/duckDuckGoSearch.d.ts +2 -2
  517. package/dist/tools/search/duckDuckGoSearch.js.map +1 -1
  518. package/dist/tools/search/googleSearch.cjs.map +1 -1
  519. package/dist/tools/search/googleSearch.d.cts +2 -2
  520. package/dist/tools/search/googleSearch.d.ts +2 -2
  521. package/dist/tools/search/googleSearch.js.map +1 -1
  522. package/dist/tools/search/searXNGSearch.cjs.map +1 -1
  523. package/dist/tools/search/searXNGSearch.d.cts +2 -2
  524. package/dist/tools/search/searXNGSearch.d.ts +2 -2
  525. package/dist/tools/search/searXNGSearch.js.map +1 -1
  526. package/dist/tools/search/wikipedia.cjs.map +1 -1
  527. package/dist/tools/search/wikipedia.d.cts +3 -3
  528. package/dist/tools/search/wikipedia.d.ts +3 -3
  529. package/dist/tools/search/wikipedia.js.map +1 -1
  530. package/dist/tools/similarity.cjs.map +1 -1
  531. package/dist/tools/similarity.d.cts +2 -2
  532. package/dist/tools/similarity.d.ts +2 -2
  533. package/dist/tools/similarity.js.map +1 -1
  534. package/dist/tools/think.cjs.map +1 -1
  535. package/dist/tools/think.d.cts +2 -2
  536. package/dist/tools/think.d.ts +2 -2
  537. package/dist/tools/think.js.map +1 -1
  538. package/dist/tools/weather/openMeteo.cjs.map +1 -1
  539. package/dist/tools/weather/openMeteo.d.cts +2 -2
  540. package/dist/tools/weather/openMeteo.d.ts +2 -2
  541. package/dist/tools/weather/openMeteo.js.map +1 -1
  542. package/dist/tools/web/webCrawler.cjs.map +1 -1
  543. package/dist/tools/web/webCrawler.d.cts +2 -2
  544. package/dist/tools/web/webCrawler.d.ts +2 -2
  545. package/dist/tools/web/webCrawler.js.map +1 -1
  546. package/dist/{types-CkEtV8R9.d.cts → types-BNsa3W7Z.d.cts} +4 -4
  547. package/dist/{types-BQ-3LdkE.d.ts → types-DYtzF6ya.d.ts} +4 -4
  548. package/dist/version.cjs +1 -1
  549. package/dist/version.js +1 -1
  550. package/dist/workflows/agent.cjs.map +1 -1
  551. package/dist/workflows/agent.d.cts +40 -40
  552. package/dist/workflows/agent.d.ts +40 -40
  553. package/dist/workflows/agent.js.map +1 -1
  554. package/dist/workflows/workflow.cjs.map +1 -1
  555. package/dist/workflows/workflow.d.cts +1 -1
  556. package/dist/workflows/workflow.d.ts +1 -1
  557. package/dist/workflows/workflow.js.map +1 -1
  558. package/package.json +33 -10
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/internals/helpers/prototype.ts"],"names":["traversePrototypeChain","value","excluded","node","undefined","Object","getPrototypeOf","has","isConstructor","prototype","isDirectInstanceOf","object","constructor","R","isTruthy","findDescriptor","target","property","descriptor","getOwnPropertyDescriptor"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAQO,UAAUA,sBAAAA,CAAuBC,OAAgBC,QAAAA,EAAmB;AACzE,EAAA,IAAIC,IAAAA,GAAOF,KAAAA;AACX,EAAA,OAAOE,IAAAA,KAAS,IAAA,IAAQA,IAAAA,KAASC,MAAAA,EAAW;AAC1CD,IAAAA,IAAAA,GAAOE,MAAAA,CAAOC,eAAeH,IAAAA,CAAAA;AAC7B,IAAA,IAAI,CAACD,QAAAA,EAAUK,GAAAA,GAAMJ,IAAAA,CAAAA,EAAO;AAC1B,MAAA,MAAMA,IAAAA;AACR;AACF;AACF;AARiBH,MAAAA,CAAAA,sBAAAA,EAAAA,wBAAAA,CAAAA;AAUV,SAASQ,cAAiBP,KAAAA,EAAU;AACzC,EAAA,OAAO,CAAC,CAACA,KAAAA,IAAS,CAAC,CAACA,MAAMQ,SAAAA,IAAa,CAAC,CAACR,KAAAA,CAAMQ,SAAAA,CAAU,WAAA;AAC3D;AAFgBD,MAAAA,CAAAA,aAAAA,EAAAA,eAAAA,CAAAA;AAIT,SAASE,kBAAAA,CACdC,QACAC,WAAAA,EAAgC;AAEhC,EAAA,OAAOC,YAAAA,CAAEC,SAASH,MAAAA,CAAAA,IAAWN,OAAOC,cAAAA,CAAeK,MAAAA,MAAYC,WAAAA,CAAYH,SAAAA;AAC7E;AALgBC,MAAAA,CAAAA,kBAAAA,EAAAA,oBAAAA,CAAAA;AAOT,SAASK,cAAAA,CACdC,QACAC,QAAAA,EAAiB;AAEjB,EAAA,KAAA,MAAWd,IAAAA,IAAQH,sBAAAA,CAAuBgB,MAAAA,CAAAA,EAAS;AACjD,IAAA,MAAME,UAAAA,GAAab,MAAAA,CAAOc,wBAAAA,CAAyBhB,IAAAA,EAAMc,QAAAA,CAAAA;AACzD,IAAA,IAAIC,UAAAA,EAAY;AACd,MAAA,OAAOA,UAAAA;AACT;AACF;AACA,EAAA,OAAO,IAAA;AACT;AAXgBH,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA","file":"prototype.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\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 isConstructor<A>(value: any): value is ClassConstructor<A> {\n return !!value && !!value.prototype && !!value.prototype.constructor;\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":["../../../src/internals/helpers/prototype.ts"],"names":["traversePrototypeChain","value","excluded","node","undefined","Object","getPrototypeOf","has","isConstructor","prototype","isDirectInstanceOf","object","constructor","R","isTruthy","findDescriptor","target","property","descriptor","getOwnPropertyDescriptor"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAQO,UAAUA,sBAAAA,CAAuBC,OAAgBC,QAAAA,EAAmB;AACzE,EAAA,IAAIC,IAAAA,GAAOF,KAAAA;AACX,EAAA,OAAOE,IAAAA,KAAS,IAAA,IAAQA,IAAAA,KAASC,MAAAA,EAAW;AAC1CD,IAAAA,IAAAA,GAAOE,MAAAA,CAAOC,eAAeH,IAAAA,CAAAA;AAC7B,IAAA,IAAI,CAACD,QAAAA,EAAUK,GAAAA,GAAMJ,IAAAA,CAAAA,EAAO;AAC1B,MAAA,MAAMA,IAAAA;AACR,IAAA;AACF,EAAA;AACF;AARiBH,MAAAA,CAAAA,sBAAAA,EAAAA,wBAAAA,CAAAA;AAUV,SAASQ,cAAiBP,KAAAA,EAAU;AACzC,EAAA,OAAO,CAAC,CAACA,KAAAA,IAAS,CAAC,CAACA,MAAMQ,SAAAA,IAAa,CAAC,CAACR,KAAAA,CAAMQ,SAAAA,CAAU,WAAA;AAC3D;AAFgBD,MAAAA,CAAAA,aAAAA,EAAAA,eAAAA,CAAAA;AAIT,SAASE,kBAAAA,CACdC,QACAC,WAAAA,EAAgC;AAEhC,EAAA,OAAOC,YAAAA,CAAEC,SAASH,MAAAA,CAAAA,IAAWN,OAAOC,cAAAA,CAAeK,MAAAA,MAAYC,WAAAA,CAAYH,SAAAA;AAC7E;AALgBC,MAAAA,CAAAA,kBAAAA,EAAAA,oBAAAA,CAAAA;AAOT,SAASK,cAAAA,CACdC,QACAC,QAAAA,EAAiB;AAEjB,EAAA,KAAA,MAAWd,IAAAA,IAAQH,sBAAAA,CAAuBgB,MAAAA,CAAAA,EAAS;AACjD,IAAA,MAAME,UAAAA,GAAab,MAAAA,CAAOc,wBAAAA,CAAyBhB,IAAAA,EAAMc,QAAAA,CAAAA;AACzD,IAAA,IAAIC,UAAAA,EAAY;AACd,MAAA,OAAOA,UAAAA;AACT,IAAA;AACF,EAAA;AACA,EAAA,OAAO,IAAA;AACT;AAXgBH,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA","file":"prototype.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\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 isConstructor<A>(value: any): value is ClassConstructor<A> {\n return !!value && !!value.prototype && !!value.prototype.constructor;\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","isConstructor","prototype","isDirectInstanceOf","object","constructor","R","isTruthy","findDescriptor","target","property","descriptor","getOwnPropertyDescriptor"],"mappings":";;;;AAQO,UAAUA,sBAAAA,CAAuBC,OAAgBC,QAAAA,EAAmB;AACzE,EAAA,IAAIC,IAAAA,GAAOF,KAAAA;AACX,EAAA,OAAOE,IAAAA,KAAS,IAAA,IAAQA,IAAAA,KAASC,MAAAA,EAAW;AAC1CD,IAAAA,IAAAA,GAAOE,MAAAA,CAAOC,eAAeH,IAAAA,CAAAA;AAC7B,IAAA,IAAI,CAACD,QAAAA,EAAUK,GAAAA,GAAMJ,IAAAA,CAAAA,EAAO;AAC1B,MAAA,MAAMA,IAAAA;AACR;AACF;AACF;AARiBH,MAAAA,CAAAA,sBAAAA,EAAAA,wBAAAA,CAAAA;AAUV,SAASQ,cAAiBP,KAAAA,EAAU;AACzC,EAAA,OAAO,CAAC,CAACA,KAAAA,IAAS,CAAC,CAACA,MAAMQ,SAAAA,IAAa,CAAC,CAACR,KAAAA,CAAMQ,SAAAA,CAAU,WAAA;AAC3D;AAFgBD,MAAAA,CAAAA,aAAAA,EAAAA,eAAAA,CAAAA;AAIT,SAASE,kBAAAA,CACdC,QACAC,WAAAA,EAAgC;AAEhC,EAAA,OAAOC,CAAAA,CAAEC,SAASH,MAAAA,CAAAA,IAAWN,OAAOC,cAAAA,CAAeK,MAAAA,MAAYC,WAAAA,CAAYH,SAAAA;AAC7E;AALgBC,MAAAA,CAAAA,kBAAAA,EAAAA,oBAAAA,CAAAA;AAOT,SAASK,cAAAA,CACdC,QACAC,QAAAA,EAAiB;AAEjB,EAAA,KAAA,MAAWd,IAAAA,IAAQH,sBAAAA,CAAuBgB,MAAAA,CAAAA,EAAS;AACjD,IAAA,MAAME,UAAAA,GAAab,MAAAA,CAAOc,wBAAAA,CAAyBhB,IAAAA,EAAMc,QAAAA,CAAAA;AACzD,IAAA,IAAIC,UAAAA,EAAY;AACd,MAAA,OAAOA,UAAAA;AACT;AACF;AACA,EAAA,OAAO,IAAA;AACT;AAXgBH,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA","file":"prototype.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\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 isConstructor<A>(value: any): value is ClassConstructor<A> {\n return !!value && !!value.prototype && !!value.prototype.constructor;\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":["../../../src/internals/helpers/prototype.ts"],"names":["traversePrototypeChain","value","excluded","node","undefined","Object","getPrototypeOf","has","isConstructor","prototype","isDirectInstanceOf","object","constructor","R","isTruthy","findDescriptor","target","property","descriptor","getOwnPropertyDescriptor"],"mappings":";;;;AAQO,UAAUA,sBAAAA,CAAuBC,OAAgBC,QAAAA,EAAmB;AACzE,EAAA,IAAIC,IAAAA,GAAOF,KAAAA;AACX,EAAA,OAAOE,IAAAA,KAAS,IAAA,IAAQA,IAAAA,KAASC,MAAAA,EAAW;AAC1CD,IAAAA,IAAAA,GAAOE,MAAAA,CAAOC,eAAeH,IAAAA,CAAAA;AAC7B,IAAA,IAAI,CAACD,QAAAA,EAAUK,GAAAA,GAAMJ,IAAAA,CAAAA,EAAO;AAC1B,MAAA,MAAMA,IAAAA;AACR,IAAA;AACF,EAAA;AACF;AARiBH,MAAAA,CAAAA,sBAAAA,EAAAA,wBAAAA,CAAAA;AAUV,SAASQ,cAAiBP,KAAAA,EAAU;AACzC,EAAA,OAAO,CAAC,CAACA,KAAAA,IAAS,CAAC,CAACA,MAAMQ,SAAAA,IAAa,CAAC,CAACR,KAAAA,CAAMQ,SAAAA,CAAU,WAAA;AAC3D;AAFgBD,MAAAA,CAAAA,aAAAA,EAAAA,eAAAA,CAAAA;AAIT,SAASE,kBAAAA,CACdC,QACAC,WAAAA,EAAgC;AAEhC,EAAA,OAAOC,CAAAA,CAAEC,SAASH,MAAAA,CAAAA,IAAWN,OAAOC,cAAAA,CAAeK,MAAAA,MAAYC,WAAAA,CAAYH,SAAAA;AAC7E;AALgBC,MAAAA,CAAAA,kBAAAA,EAAAA,oBAAAA,CAAAA;AAOT,SAASK,cAAAA,CACdC,QACAC,QAAAA,EAAiB;AAEjB,EAAA,KAAA,MAAWd,IAAAA,IAAQH,sBAAAA,CAAuBgB,MAAAA,CAAAA,EAAS;AACjD,IAAA,MAAME,UAAAA,GAAab,MAAAA,CAAOc,wBAAAA,CAAyBhB,IAAAA,EAAMc,QAAAA,CAAAA;AACzD,IAAA,IAAIC,UAAAA,EAAY;AACd,MAAA,OAAOA,UAAAA;AACT,IAAA;AACF,EAAA;AACA,EAAA,OAAO,IAAA;AACT;AAXgBH,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA","file":"prototype.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\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 isConstructor<A>(value: any): value is ClassConstructor<A> {\n return !!value && !!value.prototype && !!value.prototype.constructor;\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":";;;;;;;;AAsBA,eAAsBA,MAAAA,CACpBC,IACAC,OAAAA,EAAiB;AAEjB,EAAA,MAAMC,OAAAA,mBAAU,MAAA,CAAA,OAAOC,OAAAA,EAAiBC,SAAAA,KAAAA;AACtC,IAAA,IAAI;AACF,MAAA,MAAMC,MAAAA,GAASJ,SAASI,MAAAA,IAAU,CAAA;AAClC,MAAA,IAAIF,UAAU,CAAA,EAAG;AACf,QAAA,MAAMG,EAAAA,GAAKC,KAAKC,KAAAA,CAAMD,IAAAA,CAAKE,IAAIJ,MAAAA,EAAQF,OAAAA,GAAU,CAAA,CAAA,CAAA,GAAM,GAAA;AACvD,QAAA,MAAMO,mBAAAA,CAAWJ,IAAIK,KAAAA,CAAAA,EAAW;AAC9BC,UAAAA,MAAAA,EAAQX,OAAAA,EAASW;SACnB,CAAA;AACF;AAEA,MAAA,OAAO,MAAMZ,GAAGG,OAAAA,CAAAA;AAClB,KAAA,CAAA,OAASU,CAAAA,EAAG;AACV,MAAA,MAAMC,IAAAA,GAAa;AACjBX,QAAAA,OAAAA;AACAC,QAAAA;AACF,OAAA;AAEA,MAAA,IAAIW,yBAAAA,CAAeC,YAAAA,CAAaH,CAAAA,CAAAA,EAAI;AAClC,QAAA,MAAMA,EAAEI,KAAAA,IAASJ,CAAAA;AACnB;AAEA,MAAA,MAAMZ,OAAAA,EAASiB,eAAAA,GAAkBL,CAAAA,EAAGC,IAAAA,CAAAA;AACpC,MAAA,IAAIV,aAAa,CAAA,EAAG;AAClB,QAAA,MAAMS,CAAAA;AACR;AAEA,MAAA,IAAK,MAAMZ,OAAAA,EAASkB,WAAAA,GAAcN,CAAAA,EAAGC,IAAAA,MAAW,KAAA,EAAO;AACrD,QAAA,MAAMD,CAAAA;AACR;AACA,MAAA,OAAO,MAAMX,OAAAA,CAAQC,OAAAA,GAAU,CAAA,EAAGC,YAAY,CAAA,CAAA;AAChD;GACF,EA/BgB,SAAA,CAAA;AAiChB,EAAA,OAAO,MAAMgB,sBAAAA,CAAW,MAAMlB,OAAAA,CAAQ,CAAA,EAAGD,SAASoB,OAAAA,IAAW,CAAA,CAAA,EAAIpB,OAAAA,EAASW,MAAAA,CAAAA;AAC5E;AAtCsBb,MAAAA,CAAAA,MAAAA,EAAAA,QAAAA,CAAAA","file":"retry.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\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":["../../../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":";;;;;;;;AAsBA,eAAsBA,MAAAA,CACpBC,IACAC,OAAAA,EAAiB;AAEjB,EAAA,MAAMC,OAAAA,mBAAU,MAAA,CAAA,OAAOC,OAAAA,EAAiBC,SAAAA,KAAAA;AACtC,IAAA,IAAI;AACF,MAAA,MAAMC,MAAAA,GAASJ,SAASI,MAAAA,IAAU,CAAA;AAClC,MAAA,IAAIF,UAAU,CAAA,EAAG;AACf,QAAA,MAAMG,EAAAA,GAAKC,KAAKC,KAAAA,CAAMD,IAAAA,CAAKE,IAAIJ,MAAAA,EAAQF,OAAAA,GAAU,CAAA,CAAA,CAAA,GAAM,GAAA;AACvD,QAAA,MAAMO,mBAAAA,CAAWJ,IAAIK,KAAAA,CAAAA,EAAW;AAC9BC,UAAAA,MAAAA,EAAQX,OAAAA,EAASW;SACnB,CAAA;AACF,MAAA;AAEA,MAAA,OAAO,MAAMZ,GAAGG,OAAAA,CAAAA;AAClB,IAAA,CAAA,CAAA,OAASU,CAAAA,EAAG;AACV,MAAA,MAAMC,IAAAA,GAAa;AACjBX,QAAAA,OAAAA;AACAC,QAAAA;AACF,OAAA;AAEA,MAAA,IAAIW,yBAAAA,CAAeC,YAAAA,CAAaH,CAAAA,CAAAA,EAAI;AAClC,QAAA,MAAMA,EAAEI,KAAAA,IAASJ,CAAAA;AACnB,MAAA;AAEA,MAAA,MAAMZ,OAAAA,EAASiB,eAAAA,GAAkBL,CAAAA,EAAGC,IAAAA,CAAAA;AACpC,MAAA,IAAIV,aAAa,CAAA,EAAG;AAClB,QAAA,MAAMS,CAAAA;AACR,MAAA;AAEA,MAAA,IAAK,MAAMZ,OAAAA,EAASkB,WAAAA,GAAcN,CAAAA,EAAGC,IAAAA,MAAW,KAAA,EAAO;AACrD,QAAA,MAAMD,CAAAA;AACR,MAAA;AACA,MAAA,OAAO,MAAMX,OAAAA,CAAQC,OAAAA,GAAU,CAAA,EAAGC,YAAY,CAAA,CAAA;AAChD,IAAA;EACF,CAAA,EA/BgB,SAAA,CAAA;AAiChB,EAAA,OAAO,MAAMgB,sBAAAA,CAAW,MAAMlB,OAAAA,CAAQ,CAAA,EAAGD,SAASoB,OAAAA,IAAW,CAAA,CAAA,EAAIpB,OAAAA,EAASW,MAAAA,CAAAA;AAC5E;AAtCsBb,MAAAA,CAAAA,MAAAA,EAAAA,QAAAA,CAAAA","file":"retry.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\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":";;;;;;AAsBA,eAAsBA,MAAAA,CACpBC,IACAC,OAAAA,EAAiB;AAEjB,EAAA,MAAMC,OAAAA,mBAAU,MAAA,CAAA,OAAOC,OAAAA,EAAiBC,SAAAA,KAAAA;AACtC,IAAA,IAAI;AACF,MAAA,MAAMC,MAAAA,GAASJ,SAASI,MAAAA,IAAU,CAAA;AAClC,MAAA,IAAIF,UAAU,CAAA,EAAG;AACf,QAAA,MAAMG,EAAAA,GAAKC,KAAKC,KAAAA,CAAMD,IAAAA,CAAKE,IAAIJ,MAAAA,EAAQF,OAAAA,GAAU,CAAA,CAAA,CAAA,GAAM,GAAA;AACvD,QAAA,MAAMO,UAAAA,CAAWJ,IAAIK,KAAAA,CAAAA,EAAW;AAC9BC,UAAAA,MAAAA,EAAQX,OAAAA,EAASW;SACnB,CAAA;AACF;AAEA,MAAA,OAAO,MAAMZ,GAAGG,OAAAA,CAAAA;AAClB,KAAA,CAAA,OAASU,CAAAA,EAAG;AACV,MAAA,MAAMC,IAAAA,GAAa;AACjBX,QAAAA,OAAAA;AACAC,QAAAA;AACF,OAAA;AAEA,MAAA,IAAIW,cAAAA,CAAeC,YAAAA,CAAaH,CAAAA,CAAAA,EAAI;AAClC,QAAA,MAAMA,EAAEI,KAAAA,IAASJ,CAAAA;AACnB;AAEA,MAAA,MAAMZ,OAAAA,EAASiB,eAAAA,GAAkBL,CAAAA,EAAGC,IAAAA,CAAAA;AACpC,MAAA,IAAIV,aAAa,CAAA,EAAG;AAClB,QAAA,MAAMS,CAAAA;AACR;AAEA,MAAA,IAAK,MAAMZ,OAAAA,EAASkB,WAAAA,GAAcN,CAAAA,EAAGC,IAAAA,MAAW,KAAA,EAAO;AACrD,QAAA,MAAMD,CAAAA;AACR;AACA,MAAA,OAAO,MAAMX,OAAAA,CAAQC,OAAAA,GAAU,CAAA,EAAGC,YAAY,CAAA,CAAA;AAChD;GACF,EA/BgB,SAAA,CAAA;AAiChB,EAAA,OAAO,MAAMgB,UAAAA,CAAW,MAAMlB,OAAAA,CAAQ,CAAA,EAAGD,SAASoB,OAAAA,IAAW,CAAA,CAAA,EAAIpB,OAAAA,EAASW,MAAAA,CAAAA;AAC5E;AAtCsBb,MAAAA,CAAAA,MAAAA,EAAAA,QAAAA,CAAAA","file":"retry.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\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":["../../../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":";;;;;;AAsBA,eAAsBA,MAAAA,CACpBC,IACAC,OAAAA,EAAiB;AAEjB,EAAA,MAAMC,OAAAA,mBAAU,MAAA,CAAA,OAAOC,OAAAA,EAAiBC,SAAAA,KAAAA;AACtC,IAAA,IAAI;AACF,MAAA,MAAMC,MAAAA,GAASJ,SAASI,MAAAA,IAAU,CAAA;AAClC,MAAA,IAAIF,UAAU,CAAA,EAAG;AACf,QAAA,MAAMG,EAAAA,GAAKC,KAAKC,KAAAA,CAAMD,IAAAA,CAAKE,IAAIJ,MAAAA,EAAQF,OAAAA,GAAU,CAAA,CAAA,CAAA,GAAM,GAAA;AACvD,QAAA,MAAMO,UAAAA,CAAWJ,IAAIK,KAAAA,CAAAA,EAAW;AAC9BC,UAAAA,MAAAA,EAAQX,OAAAA,EAASW;SACnB,CAAA;AACF,MAAA;AAEA,MAAA,OAAO,MAAMZ,GAAGG,OAAAA,CAAAA;AAClB,IAAA,CAAA,CAAA,OAASU,CAAAA,EAAG;AACV,MAAA,MAAMC,IAAAA,GAAa;AACjBX,QAAAA,OAAAA;AACAC,QAAAA;AACF,OAAA;AAEA,MAAA,IAAIW,cAAAA,CAAeC,YAAAA,CAAaH,CAAAA,CAAAA,EAAI;AAClC,QAAA,MAAMA,EAAEI,KAAAA,IAASJ,CAAAA;AACnB,MAAA;AAEA,MAAA,MAAMZ,OAAAA,EAASiB,eAAAA,GAAkBL,CAAAA,EAAGC,IAAAA,CAAAA;AACpC,MAAA,IAAIV,aAAa,CAAA,EAAG;AAClB,QAAA,MAAMS,CAAAA;AACR,MAAA;AAEA,MAAA,IAAK,MAAMZ,OAAAA,EAASkB,WAAAA,GAAcN,CAAAA,EAAGC,IAAAA,MAAW,KAAA,EAAO;AACrD,QAAA,MAAMD,CAAAA;AACR,MAAA;AACA,MAAA,OAAO,MAAMX,OAAAA,CAAQC,OAAAA,GAAU,CAAA,EAAGC,YAAY,CAAA,CAAA;AAChD,IAAA;EACF,CAAA,EA/BgB,SAAA,CAAA;AAiChB,EAAA,OAAO,MAAMgB,UAAAA,CAAW,MAAMlB,OAAAA,CAAQ,CAAA,EAAGD,SAASoB,OAAAA,IAAW,CAAA,CAAA,EAAIpB,OAAAA,EAASW,MAAAA,CAAAA;AAC5E;AAtCsBb,MAAAA,CAAAA,MAAAA,EAAAA,QAAAA,CAAAA","file":"retry.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\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","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 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\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":["../../../src/internals/helpers/retryable.ts"],"names":["RunStrategy","THROW_IMMEDIATELY","SETTLE_ROUND","SETTLE_ALL","Retryable","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 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\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","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 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\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":["../../../src/internals/helpers/retryable.ts"],"names":["RunStrategy","THROW_IMMEDIATELY","SETTLE_ROUND","SETTLE_ALL","Retryable","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 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\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":";;;;;;;;;;;;;;;;AAiBO,SAASA,cAAAA,CACdC,QACAC,YAAAA,EAAoC;AAEpC,EAAA,IAAID,MAAAA,IAAUA,kBAAkBE,cAAAA,EAAY;AAC1C,IAAA,MAAM,IAAIC,qBAAAA,CACR,sFAAA,EACA,IACAF,YAAAA,CAAAA;AAEJ;AACF;AAXgBF,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA;AAaT,SAASK,YAAAA,CACdJ,QACAK,OAAAA,EAA0B;AAE1BN,EAAAA,cAAAA,CAAeC,MAAAA,CAAAA;AACf,EAAA,IAAIA,kBAAkBM,WAAAA,EAAS;AAC7B,IAAA,OAAOC,+BAAAA,CAAgBP,QAAQK,OAAAA,CAAAA;AACjC;AACA,EAAA,OAAOL,MAAAA;AACT;AATgBI,MAAAA,CAAAA,YAAAA,EAAAA,cAAAA,CAAAA;AAWT,SAASI,qBAAAA,CACdR,QACAK,OAAAA,EAAoB;AAEpB,EAAA,MAAMI,UAAAA,GAAaL,aAAaJ,MAAAA,CAAAA;AAEhC,EAAA,MAAMU,KAAAA,GAAM,IAAIC,OAAAA,CAAI;IAClBC,WAAAA,EAAa,OAAA;IACbC,WAAAA,EAAa,IAAA;IACbC,MAAAA,EAAQ,KAAA;IACRC,YAAAA,EAAc,KAAA;IACdC,YAAAA,EAAc,IAAA;IACdC,aAAAA,EAAe,IAAA;IACfC,WAAAA,EAAa,IAAA;IACbC,cAAAA,EAAgB,IAAA;IAChBC,SAAAA,EAAW,IAAA;IACXC,SAAAA,EAAW,IAAA;IACXC,eAAAA,EAAiB,IAAA;IACjB,GAAGjB;GACL,CAAA;AACAkB,EAAAA,2BAAAA,CAAWC,QAAQd,KAAAA,CAAAA;AACnB,EAAA,OAAOA,KAAAA,CAAIe,QAA2BhB,UAAAA,CAAAA;AACxC;AAtBgBD,MAAAA,CAAAA,qBAAAA,EAAAA,uBAAAA,CAAAA;AA2BT,SAASkB,eAAAA,CAAgBC,OAA2BtB,OAAAA,EAAgC;AACzFsB,EAAAA,KAAAA,GAAAA,CAASA,KAAAA,IAAS,KAAKC,IAAAA,EAAAA;AAEvB,EAAA,IAAI;AACF,IAAA,IAAI;AACF,MAAA,OAAOC,IAAAA,CAAKC,MAAMH,KAAAA,CAAAA;KACpB,CAAA,MAAQ;AACN,MAAA,MAAMI,OAAO1B,OAAAA,EAAS0B,IAAAA;AACtB,MAAA,IAAIA,IAAAA,EAAM;AACR,QAAA,MAAM,EAAEC,KAAAA,EAAK,GAAKC,wBAAAA,CAAcN,KAAAA,EAAOI,IAAAA,CAAAA,IAAS;UAAEC,KAAAA,EAAOL;AAAM,SAAA;AAC/D,QAAA,OAAOE,IAAAA,CAAKC,KAAAA,CAAMI,qBAAAA,CAAWF,KAAAA,CAAAA,CAAAA;OAC/B,MAAO;AACL,QAAA,OAAOH,IAAAA,CAAKC,KAAAA,CAAMI,qBAAAA,CAAWP,KAAAA,CAAAA,CAAAA;AAC/B;AACF;GACF,CAAA,MAAQ;AACN,IAAA,OAAO,IAAA;AACT;AACF;AAlBgBD,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA","file":"schema.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\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":["../../../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":";;;;;;;;;;;;;;;;AAiBO,SAASA,cAAAA,CACdC,QACAC,YAAAA,EAAoC;AAEpC,EAAA,IAAID,MAAAA,IAAUA,kBAAkBE,cAAAA,EAAY;AAC1C,IAAA,MAAM,IAAIC,qBAAAA,CACR,sFAAA,EACA,IACAF,YAAAA,CAAAA;AAEJ,EAAA;AACF;AAXgBF,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA;AAaT,SAASK,YAAAA,CACdJ,QACAK,OAAAA,EAA0B;AAE1BN,EAAAA,cAAAA,CAAeC,MAAAA,CAAAA;AACf,EAAA,IAAIA,kBAAkBM,WAAAA,EAAS;AAC7B,IAAA,OAAOC,+BAAAA,CAAgBP,QAAQK,OAAAA,CAAAA;AACjC,EAAA;AACA,EAAA,OAAOL,MAAAA;AACT;AATgBI,MAAAA,CAAAA,YAAAA,EAAAA,cAAAA,CAAAA;AAWT,SAASI,qBAAAA,CACdR,QACAK,OAAAA,EAAoB;AAEpB,EAAA,MAAMI,UAAAA,GAAaL,aAAaJ,MAAAA,CAAAA;AAEhC,EAAA,MAAMU,KAAAA,GAAM,IAAIC,OAAAA,CAAI;IAClBC,WAAAA,EAAa,OAAA;IACbC,WAAAA,EAAa,IAAA;IACbC,MAAAA,EAAQ,KAAA;IACRC,YAAAA,EAAc,KAAA;IACdC,YAAAA,EAAc,IAAA;IACdC,aAAAA,EAAe,IAAA;IACfC,WAAAA,EAAa,IAAA;IACbC,cAAAA,EAAgB,IAAA;IAChBC,SAAAA,EAAW,IAAA;IACXC,SAAAA,EAAW,IAAA;IACXC,eAAAA,EAAiB,IAAA;IACjB,GAAGjB;GACL,CAAA;AACAkB,EAAAA,2BAAAA,CAAWC,QAAQd,KAAAA,CAAAA;AACnB,EAAA,OAAOA,KAAAA,CAAIe,QAA2BhB,UAAAA,CAAAA;AACxC;AAtBgBD,MAAAA,CAAAA,qBAAAA,EAAAA,uBAAAA,CAAAA;AA2BT,SAASkB,eAAAA,CAAgBC,OAA2BtB,OAAAA,EAAgC;AACzFsB,EAAAA,KAAAA,GAAAA,CAASA,KAAAA,IAAS,KAAKC,IAAAA,EAAAA;AAEvB,EAAA,IAAI;AACF,IAAA,IAAI;AACF,MAAA,OAAOC,IAAAA,CAAKC,MAAMH,KAAAA,CAAAA;IACpB,CAAA,CAAA,MAAQ;AACN,MAAA,MAAMI,OAAO1B,OAAAA,EAAS0B,IAAAA;AACtB,MAAA,IAAIA,IAAAA,EAAM;AACR,QAAA,MAAM,EAAEC,KAAAA,EAAK,GAAKC,wBAAAA,CAAcN,KAAAA,EAAOI,IAAAA,CAAAA,IAAS;UAAEC,KAAAA,EAAOL;AAAM,SAAA;AAC/D,QAAA,OAAOE,IAAAA,CAAKC,KAAAA,CAAMI,qBAAAA,CAAWF,KAAAA,CAAAA,CAAAA;MAC/B,CAAA,MAAO;AACL,QAAA,OAAOH,IAAAA,CAAKC,KAAAA,CAAMI,qBAAAA,CAAWP,KAAAA,CAAAA,CAAAA;AAC/B,MAAA;AACF,IAAA;EACF,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,IAAA;AACT,EAAA;AACF;AAlBgBD,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA","file":"schema.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\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,6 +1,6 @@
1
1
  import { AnyZodObject, ZodTypeAny, input, TypeOf, ZodEffects } from 'zod';
2
- import { Options } from 'zod-to-json-schema';
3
- import { SchemaObject, Options as Options$1, ValidateFunction } from 'ajv';
2
+ import { Options as Options$1 } from 'zod-to-json-schema';
3
+ import { SchemaObject, Options, ValidateFunction } from 'ajv';
4
4
  import { FrameworkErrorOptions } from '../../errors.cjs';
5
5
  import '../types.cjs';
6
6
  import './guards.cjs';
@@ -15,8 +15,8 @@ type AnySchemaLike = ZodTypeAny | SchemaObject;
15
15
  type FromSchemaLike<T> = T extends ZodTypeAny ? TypeOf<T> : unknown;
16
16
  type FromSchemaLikeRaw<T> = T extends ZodTypeAny ? input<T> : unknown;
17
17
  declare function validateSchema<T extends AnySchemaLike>(schema: T | ZodEffects<any>, errorOptions?: FrameworkErrorOptions): asserts schema is T;
18
- declare function toJsonSchema<T extends AnySchemaLike>(schema: T, options?: Partial<Options>): SchemaObject;
19
- declare function createSchemaValidator<T extends AnySchemaLike>(schema: T, options?: Options$1): ValidateFunction<FromSchemaLike<T>>;
18
+ declare function toJsonSchema<T extends AnySchemaLike>(schema: T, options?: Partial<Options$1>): SchemaObject;
19
+ declare function createSchemaValidator<T extends AnySchemaLike>(schema: T, options?: Options): ValidateFunction<FromSchemaLike<T>>;
20
20
  interface ParseBrokenJsonOptions {
21
21
  pair?: [string, string] | null;
22
22
  }
@@ -1,6 +1,6 @@
1
1
  import { AnyZodObject, ZodTypeAny, input, TypeOf, ZodEffects } from 'zod';
2
- import { Options } from 'zod-to-json-schema';
3
- import { SchemaObject, Options as Options$1, ValidateFunction } from 'ajv';
2
+ import { Options as Options$1 } from 'zod-to-json-schema';
3
+ import { SchemaObject, Options, ValidateFunction } from 'ajv';
4
4
  import { FrameworkErrorOptions } from '../../errors.js';
5
5
  import '../types.js';
6
6
  import './guards.js';
@@ -15,8 +15,8 @@ type AnySchemaLike = ZodTypeAny | SchemaObject;
15
15
  type FromSchemaLike<T> = T extends ZodTypeAny ? TypeOf<T> : unknown;
16
16
  type FromSchemaLikeRaw<T> = T extends ZodTypeAny ? input<T> : unknown;
17
17
  declare function validateSchema<T extends AnySchemaLike>(schema: T | ZodEffects<any>, errorOptions?: FrameworkErrorOptions): asserts schema is T;
18
- declare function toJsonSchema<T extends AnySchemaLike>(schema: T, options?: Partial<Options>): SchemaObject;
19
- declare function createSchemaValidator<T extends AnySchemaLike>(schema: T, options?: Options$1): ValidateFunction<FromSchemaLike<T>>;
18
+ declare function toJsonSchema<T extends AnySchemaLike>(schema: T, options?: Partial<Options$1>): SchemaObject;
19
+ declare function createSchemaValidator<T extends AnySchemaLike>(schema: T, options?: Options): ValidateFunction<FromSchemaLike<T>>;
20
20
  interface ParseBrokenJsonOptions {
21
21
  pair?: [string, string] | null;
22
22
  }
@@ -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":";;;;;;;;;;AAiBO,SAASA,cAAAA,CACdC,QACAC,YAAAA,EAAoC;AAEpC,EAAA,IAAID,MAAAA,IAAUA,kBAAkBE,UAAAA,EAAY;AAC1C,IAAA,MAAM,IAAIC,UAAAA,CACR,sFAAA,EACA,IACAF,YAAAA,CAAAA;AAEJ;AACF;AAXgBF,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA;AAaT,SAASK,YAAAA,CACdJ,QACAK,OAAAA,EAA0B;AAE1BN,EAAAA,cAAAA,CAAeC,MAAAA,CAAAA;AACf,EAAA,IAAIA,kBAAkBM,OAAAA,EAAS;AAC7B,IAAA,OAAOC,eAAAA,CAAgBP,QAAQK,OAAAA,CAAAA;AACjC;AACA,EAAA,OAAOL,MAAAA;AACT;AATgBI,MAAAA,CAAAA,YAAAA,EAAAA,cAAAA,CAAAA;AAWT,SAASI,qBAAAA,CACdR,QACAK,OAAAA,EAAoB;AAEpB,EAAA,MAAMI,UAAAA,GAAaL,aAAaJ,MAAAA,CAAAA;AAEhC,EAAA,MAAMU,GAAAA,GAAM,IAAIC,GAAAA,CAAI;IAClBC,WAAAA,EAAa,OAAA;IACbC,WAAAA,EAAa,IAAA;IACbC,MAAAA,EAAQ,KAAA;IACRC,YAAAA,EAAc,KAAA;IACdC,YAAAA,EAAc,IAAA;IACdC,aAAAA,EAAe,IAAA;IACfC,WAAAA,EAAa,IAAA;IACbC,cAAAA,EAAgB,IAAA;IAChBC,SAAAA,EAAW,IAAA;IACXC,SAAAA,EAAW,IAAA;IACXC,eAAAA,EAAiB,IAAA;IACjB,GAAGjB;GACL,CAAA;AACAkB,EAAAA,UAAAA,CAAWC,QAAQd,GAAAA,CAAAA;AACnB,EAAA,OAAOA,GAAAA,CAAIe,QAA2BhB,UAAAA,CAAAA;AACxC;AAtBgBD,MAAAA,CAAAA,qBAAAA,EAAAA,uBAAAA,CAAAA;AA2BT,SAASkB,eAAAA,CAAgBC,OAA2BtB,OAAAA,EAAgC;AACzFsB,EAAAA,KAAAA,GAAAA,CAASA,KAAAA,IAAS,KAAKC,IAAAA,EAAAA;AAEvB,EAAA,IAAI;AACF,IAAA,IAAI;AACF,MAAA,OAAOC,IAAAA,CAAKC,MAAMH,KAAAA,CAAAA;KACpB,CAAA,MAAQ;AACN,MAAA,MAAMI,OAAO1B,OAAAA,EAAS0B,IAAAA;AACtB,MAAA,IAAIA,IAAAA,EAAM;AACR,QAAA,MAAM,EAAEC,KAAAA,EAAK,GAAKC,aAAAA,CAAcN,KAAAA,EAAOI,IAAAA,CAAAA,IAAS;UAAEC,KAAAA,EAAOL;AAAM,SAAA;AAC/D,QAAA,OAAOE,IAAAA,CAAKC,KAAAA,CAAMI,UAAAA,CAAWF,KAAAA,CAAAA,CAAAA;OAC/B,MAAO;AACL,QAAA,OAAOH,IAAAA,CAAKC,KAAAA,CAAMI,UAAAA,CAAWP,KAAAA,CAAAA,CAAAA;AAC/B;AACF;GACF,CAAA,MAAQ;AACN,IAAA,OAAO,IAAA;AACT;AACF;AAlBgBD,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA","file":"schema.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\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":["../../../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":";;;;;;;;;;AAiBO,SAASA,cAAAA,CACdC,QACAC,YAAAA,EAAoC;AAEpC,EAAA,IAAID,MAAAA,IAAUA,kBAAkBE,UAAAA,EAAY;AAC1C,IAAA,MAAM,IAAIC,UAAAA,CACR,sFAAA,EACA,IACAF,YAAAA,CAAAA;AAEJ,EAAA;AACF;AAXgBF,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA;AAaT,SAASK,YAAAA,CACdJ,QACAK,OAAAA,EAA0B;AAE1BN,EAAAA,cAAAA,CAAeC,MAAAA,CAAAA;AACf,EAAA,IAAIA,kBAAkBM,OAAAA,EAAS;AAC7B,IAAA,OAAOC,eAAAA,CAAgBP,QAAQK,OAAAA,CAAAA;AACjC,EAAA;AACA,EAAA,OAAOL,MAAAA;AACT;AATgBI,MAAAA,CAAAA,YAAAA,EAAAA,cAAAA,CAAAA;AAWT,SAASI,qBAAAA,CACdR,QACAK,OAAAA,EAAoB;AAEpB,EAAA,MAAMI,UAAAA,GAAaL,aAAaJ,MAAAA,CAAAA;AAEhC,EAAA,MAAMU,GAAAA,GAAM,IAAIC,GAAAA,CAAI;IAClBC,WAAAA,EAAa,OAAA;IACbC,WAAAA,EAAa,IAAA;IACbC,MAAAA,EAAQ,KAAA;IACRC,YAAAA,EAAc,KAAA;IACdC,YAAAA,EAAc,IAAA;IACdC,aAAAA,EAAe,IAAA;IACfC,WAAAA,EAAa,IAAA;IACbC,cAAAA,EAAgB,IAAA;IAChBC,SAAAA,EAAW,IAAA;IACXC,SAAAA,EAAW,IAAA;IACXC,eAAAA,EAAiB,IAAA;IACjB,GAAGjB;GACL,CAAA;AACAkB,EAAAA,UAAAA,CAAWC,QAAQd,GAAAA,CAAAA;AACnB,EAAA,OAAOA,GAAAA,CAAIe,QAA2BhB,UAAAA,CAAAA;AACxC;AAtBgBD,MAAAA,CAAAA,qBAAAA,EAAAA,uBAAAA,CAAAA;AA2BT,SAASkB,eAAAA,CAAgBC,OAA2BtB,OAAAA,EAAgC;AACzFsB,EAAAA,KAAAA,GAAAA,CAASA,KAAAA,IAAS,KAAKC,IAAAA,EAAAA;AAEvB,EAAA,IAAI;AACF,IAAA,IAAI;AACF,MAAA,OAAOC,IAAAA,CAAKC,MAAMH,KAAAA,CAAAA;IACpB,CAAA,CAAA,MAAQ;AACN,MAAA,MAAMI,OAAO1B,OAAAA,EAAS0B,IAAAA;AACtB,MAAA,IAAIA,IAAAA,EAAM;AACR,QAAA,MAAM,EAAEC,KAAAA,EAAK,GAAKC,aAAAA,CAAcN,KAAAA,EAAOI,IAAAA,CAAAA,IAAS;UAAEC,KAAAA,EAAOL;AAAM,SAAA;AAC/D,QAAA,OAAOE,IAAAA,CAAKC,KAAAA,CAAMI,UAAAA,CAAWF,KAAAA,CAAAA,CAAAA;MAC/B,CAAA,MAAO;AACL,QAAA,OAAOH,IAAAA,CAAKC,KAAAA,CAAMI,UAAAA,CAAWP,KAAAA,CAAAA,CAAAA;AAC/B,MAAA;AACF,IAAA;EACF,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,IAAA;AACT,EAAA;AACF;AAlBgBD,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA","file":"schema.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\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":";;;;AAKA,gBAAuBA,sBAAAA,CACrBC,WACAC,WAAAA,EAA2B;AAE3B,EAAA,IAAIC,IAAAA;AACJ,EAAA,OAAO,EAAEA,IAAAA,GAAO,MAAMF,SAAAA,CAAUE,IAAAA,IAAQC,IAAAA,EAAM;AAC5C,IAAA,MAAMF,WAAAA,CAAYC,KAAKE,KAAK,CAAA;AAC9B;AACA,EAAA,OAAOF,IAAAA,CAAKE,KAAAA;AACd;AATuBL,MAAAA,CAAAA,sBAAAA,EAAAA,wBAAAA,CAAAA;AAWhB,SAASM,gBAAmBD,KAAAA,EAAU;AAC3C,EAAA,OAAOE,OAAAA,CAAQF,KAAAA,IAASG,MAAAA,CAAOC,aAAAA,IAAiBJ,KAAAA,CAAAA;AAClD;AAFgBC,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA","file":"stream.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\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":["../../../src/internals/helpers/stream.ts"],"names":["transformAsyncIterable","generator","transformer","next","done","value","isAsyncIterable","Boolean","Symbol","asyncIterator"],"mappings":";;;;AAKA,gBAAuBA,sBAAAA,CACrBC,WACAC,WAAAA,EAA2B;AAE3B,EAAA,IAAIC,IAAAA;AACJ,EAAA,OAAO,EAAEA,IAAAA,GAAO,MAAMF,SAAAA,CAAUE,IAAAA,IAAQC,IAAAA,EAAM;AAC5C,IAAA,MAAMF,WAAAA,CAAYC,KAAKE,KAAK,CAAA;AAC9B,EAAA;AACA,EAAA,OAAOF,IAAAA,CAAKE,KAAAA;AACd;AATuBL,MAAAA,CAAAA,sBAAAA,EAAAA,wBAAAA,CAAAA;AAWhB,SAASM,gBAAmBD,KAAAA,EAAU;AAC3C,EAAA,OAAOE,OAAAA,CAAQF,KAAAA,IAASG,MAAAA,CAAOC,aAAAA,IAAiBJ,KAAAA,CAAAA;AAClD;AAFgBC,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA","file":"stream.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\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":";;AAKA,gBAAuBA,sBAAAA,CACrBC,WACAC,WAAAA,EAA2B;AAE3B,EAAA,IAAIC,IAAAA;AACJ,EAAA,OAAO,EAAEA,IAAAA,GAAO,MAAMF,SAAAA,CAAUE,IAAAA,IAAQC,IAAAA,EAAM;AAC5C,IAAA,MAAMF,WAAAA,CAAYC,KAAKE,KAAK,CAAA;AAC9B;AACA,EAAA,OAAOF,IAAAA,CAAKE,KAAAA;AACd;AATuBL,MAAAA,CAAAA,sBAAAA,EAAAA,wBAAAA,CAAAA;AAWhB,SAASM,gBAAmBD,KAAAA,EAAU;AAC3C,EAAA,OAAOE,OAAAA,CAAQF,KAAAA,IAASG,MAAAA,CAAOC,aAAAA,IAAiBJ,KAAAA,CAAAA;AAClD;AAFgBC,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA","file":"stream.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\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":["../../../src/internals/helpers/stream.ts"],"names":["transformAsyncIterable","generator","transformer","next","done","value","isAsyncIterable","Boolean","Symbol","asyncIterator"],"mappings":";;AAKA,gBAAuBA,sBAAAA,CACrBC,WACAC,WAAAA,EAA2B;AAE3B,EAAA,IAAIC,IAAAA;AACJ,EAAA,OAAO,EAAEA,IAAAA,GAAO,MAAMF,SAAAA,CAAUE,IAAAA,IAAQC,IAAAA,EAAM;AAC5C,IAAA,MAAMF,WAAAA,CAAYC,KAAKE,KAAK,CAAA;AAC9B,EAAA;AACA,EAAA,OAAOF,IAAAA,CAAKE,KAAAA;AACd;AATuBL,MAAAA,CAAAA,sBAAAA,EAAAA,wBAAAA,CAAAA;AAWhB,SAASM,gBAAmBD,KAAAA,EAAU;AAC3C,EAAA,OAAOE,OAAAA,CAAQF,KAAAA,IAASG,MAAAA,CAAOC,aAAAA,IAAiBJ,KAAAA,CAAAA;AAClD;AAFgBC,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA","file":"stream.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\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 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\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":["../../../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 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\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 +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.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\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":["../../../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.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\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 +1 @@
1
- {"version":3,"sources":["../../../src/internals/helpers/weakRef.ts"],"names":["isWeakKey","value","SafeWeakSet","WeakSet","has","add","delete","SafeWeakMap","WeakMap","get","key","set"],"mappings":";;;;AAKO,SAASA,UAAUC,KAAAA,EAAc;AACtC,EAAA,OAAOA,KAAAA,IAAS,IAAA,IAAQ,OAAOA,KAAAA,KAAU,QAAA;AAC3C;AAFgBD,MAAAA,CAAAA,SAAAA,EAAAA,WAAAA,CAAAA;AAIT,MAAME,oBAAoBC,OAAAA,CAAAA;EATjC;;;AAUEC,EAAAA,GAAAA,CAAIH,KAAAA,EAAgB;AAClB,IAAA,IAAID,SAAAA,CAAUC,KAAAA,CAAAA,EAAQ;AACpB,MAAA,OAAO,KAAA,CAAMG,IAAIH,KAAAA,CAAAA;AACnB;AACA,IAAA,OAAO,KAAA;AACT;AAEAI,EAAAA,GAAAA,CAAIJ,KAAAA,EAAgB;AAClB,IAAA,IAAID,SAAAA,CAAUC,KAAAA,CAAAA,EAAQ;AACpB,MAAA,KAAA,CAAMI,IAAIJ,KAAAA,CAAAA;AACZ;AACA,IAAA,OAAO,IAAA;AACT;AAEAK,EAAAA,MAAAA,CAAOL,KAAAA,EAAgB;AACrB,IAAA,IAAID,SAAAA,CAAUC,KAAAA,CAAAA,EAAQ;AACpB,MAAA,OAAO,KAAA,CAAMK,OAAOL,KAAAA,CAAAA;AACtB;AACA,IAAA,OAAO,KAAA;AACT;AACF;AAEO,MAAMM,oBAAuBC,OAAAA,CAAAA;EAhCpC;;;AAiCEJ,EAAAA,GAAAA,CAAIH,KAAAA,EAAgB;AAClB,IAAA,IAAID,SAAAA,CAAUC,KAAAA,CAAAA,EAAQ;AACpB,MAAA,OAAO,KAAA,CAAMG,IAAIH,KAAAA,CAAAA;AACnB;AACA,IAAA,OAAO,KAAA;AACT;AAEAQ,EAAAA,GAAAA,CAAIC,GAAAA,EAAc;AAChB,IAAA,IAAIV,SAAAA,CAAUU,GAAAA,CAAAA,EAAM;AAClB,MAAA,OAAO,KAAA,CAAMD,IAAIC,GAAAA,CAAAA;AACnB;AACF;AAEAC,EAAAA,GAAAA,CAAID,KAAcT,KAAAA,EAAU;AAC1B,IAAA,IAAID,SAAAA,CAAUU,GAAAA,CAAAA,EAAM;AAClB,MAAA,KAAA,CAAMC,GAAAA,CAAID,KAAKT,KAAAA,CAAAA;AACjB;AACA,IAAA,OAAO,IAAA;AACT;AAEAK,EAAAA,MAAAA,CAAOL,KAAAA,EAAgB;AACrB,IAAA,IAAID,SAAAA,CAAUC,KAAAA,CAAAA,EAAQ;AACpB,MAAA,OAAO,KAAA,CAAMK,OAAOL,KAAAA,CAAAA;AACtB;AACA,IAAA,OAAO,KAAA;AACT;AACF","file":"weakRef.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport function isWeakKey(value: unknown): value is WeakKey {\n return value != null && typeof value === \"object\";\n}\n\nexport class SafeWeakSet extends WeakSet {\n has(value: unknown) {\n if (isWeakKey(value)) {\n return super.has(value);\n }\n return false;\n }\n\n add(value: unknown) {\n if (isWeakKey(value)) {\n super.add(value);\n }\n return this;\n }\n\n delete(value: unknown) {\n if (isWeakKey(value)) {\n return super.delete(value);\n }\n return false;\n }\n}\n\nexport class SafeWeakMap<T> extends WeakMap<WeakKey, T> {\n has(value: unknown) {\n if (isWeakKey(value)) {\n return super.has(value);\n }\n return false;\n }\n\n get(key: unknown) {\n if (isWeakKey(key)) {\n return super.get(key);\n }\n }\n\n set(key: unknown, value: T) {\n if (isWeakKey(key)) {\n super.set(key, value);\n }\n return this;\n }\n\n delete(value: unknown) {\n if (isWeakKey(value)) {\n return super.delete(value);\n }\n return false;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../src/internals/helpers/weakRef.ts"],"names":["isWeakKey","value","SafeWeakSet","WeakSet","has","add","delete","SafeWeakMap","WeakMap","get","key","set"],"mappings":";;;;AAKO,SAASA,UAAUC,KAAAA,EAAc;AACtC,EAAA,OAAOA,KAAAA,IAAS,IAAA,IAAQ,OAAOA,KAAAA,KAAU,QAAA;AAC3C;AAFgBD,MAAAA,CAAAA,SAAAA,EAAAA,WAAAA,CAAAA;AAIT,MAAME,oBAAoBC,OAAAA,CAAAA;EATjC;;;AAUEC,EAAAA,GAAAA,CAAIH,KAAAA,EAAgB;AAClB,IAAA,IAAID,SAAAA,CAAUC,KAAAA,CAAAA,EAAQ;AACpB,MAAA,OAAO,KAAA,CAAMG,IAAIH,KAAAA,CAAAA;AACnB,IAAA;AACA,IAAA,OAAO,KAAA;AACT,EAAA;AAEAI,EAAAA,GAAAA,CAAIJ,KAAAA,EAAgB;AAClB,IAAA,IAAID,SAAAA,CAAUC,KAAAA,CAAAA,EAAQ;AACpB,MAAA,KAAA,CAAMI,IAAIJ,KAAAA,CAAAA;AACZ,IAAA;AACA,IAAA,OAAO,IAAA;AACT,EAAA;AAEAK,EAAAA,MAAAA,CAAOL,KAAAA,EAAgB;AACrB,IAAA,IAAID,SAAAA,CAAUC,KAAAA,CAAAA,EAAQ;AACpB,MAAA,OAAO,KAAA,CAAMK,OAAOL,KAAAA,CAAAA;AACtB,IAAA;AACA,IAAA,OAAO,KAAA;AACT,EAAA;AACF;AAEO,MAAMM,oBAAuBC,OAAAA,CAAAA;EAhCpC;;;AAiCEJ,EAAAA,GAAAA,CAAIH,KAAAA,EAAgB;AAClB,IAAA,IAAID,SAAAA,CAAUC,KAAAA,CAAAA,EAAQ;AACpB,MAAA,OAAO,KAAA,CAAMG,IAAIH,KAAAA,CAAAA;AACnB,IAAA;AACA,IAAA,OAAO,KAAA;AACT,EAAA;AAEAQ,EAAAA,GAAAA,CAAIC,GAAAA,EAAc;AAChB,IAAA,IAAIV,SAAAA,CAAUU,GAAAA,CAAAA,EAAM;AAClB,MAAA,OAAO,KAAA,CAAMD,IAAIC,GAAAA,CAAAA;AACnB,IAAA;AACF,EAAA;AAEAC,EAAAA,GAAAA,CAAID,KAAcT,KAAAA,EAAU;AAC1B,IAAA,IAAID,SAAAA,CAAUU,GAAAA,CAAAA,EAAM;AAClB,MAAA,KAAA,CAAMC,GAAAA,CAAID,KAAKT,KAAAA,CAAAA;AACjB,IAAA;AACA,IAAA,OAAO,IAAA;AACT,EAAA;AAEAK,EAAAA,MAAAA,CAAOL,KAAAA,EAAgB;AACrB,IAAA,IAAID,SAAAA,CAAUC,KAAAA,CAAAA,EAAQ;AACpB,MAAA,OAAO,KAAA,CAAMK,OAAOL,KAAAA,CAAAA;AACtB,IAAA;AACA,IAAA,OAAO,KAAA;AACT,EAAA;AACF","file":"weakRef.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport function isWeakKey(value: unknown): value is WeakKey {\n return value != null && typeof value === \"object\";\n}\n\nexport class SafeWeakSet extends WeakSet {\n has(value: unknown) {\n if (isWeakKey(value)) {\n return super.has(value);\n }\n return false;\n }\n\n add(value: unknown) {\n if (isWeakKey(value)) {\n super.add(value);\n }\n return this;\n }\n\n delete(value: unknown) {\n if (isWeakKey(value)) {\n return super.delete(value);\n }\n return false;\n }\n}\n\nexport class SafeWeakMap<T> extends WeakMap<WeakKey, T> {\n has(value: unknown) {\n if (isWeakKey(value)) {\n return super.has(value);\n }\n return false;\n }\n\n get(key: unknown) {\n if (isWeakKey(key)) {\n return super.get(key);\n }\n }\n\n set(key: unknown, value: T) {\n if (isWeakKey(key)) {\n super.set(key, value);\n }\n return this;\n }\n\n delete(value: unknown) {\n if (isWeakKey(value)) {\n return super.delete(value);\n }\n return false;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/internals/helpers/weakRef.ts"],"names":["isWeakKey","value","SafeWeakSet","WeakSet","has","add","delete","SafeWeakMap","WeakMap","get","key","set"],"mappings":";;AAKO,SAASA,UAAUC,KAAAA,EAAc;AACtC,EAAA,OAAOA,KAAAA,IAAS,IAAA,IAAQ,OAAOA,KAAAA,KAAU,QAAA;AAC3C;AAFgBD,MAAAA,CAAAA,SAAAA,EAAAA,WAAAA,CAAAA;AAIT,MAAME,oBAAoBC,OAAAA,CAAAA;EATjC;;;AAUEC,EAAAA,GAAAA,CAAIH,KAAAA,EAAgB;AAClB,IAAA,IAAID,SAAAA,CAAUC,KAAAA,CAAAA,EAAQ;AACpB,MAAA,OAAO,KAAA,CAAMG,IAAIH,KAAAA,CAAAA;AACnB;AACA,IAAA,OAAO,KAAA;AACT;AAEAI,EAAAA,GAAAA,CAAIJ,KAAAA,EAAgB;AAClB,IAAA,IAAID,SAAAA,CAAUC,KAAAA,CAAAA,EAAQ;AACpB,MAAA,KAAA,CAAMI,IAAIJ,KAAAA,CAAAA;AACZ;AACA,IAAA,OAAO,IAAA;AACT;AAEAK,EAAAA,MAAAA,CAAOL,KAAAA,EAAgB;AACrB,IAAA,IAAID,SAAAA,CAAUC,KAAAA,CAAAA,EAAQ;AACpB,MAAA,OAAO,KAAA,CAAMK,OAAOL,KAAAA,CAAAA;AACtB;AACA,IAAA,OAAO,KAAA;AACT;AACF;AAEO,MAAMM,oBAAuBC,OAAAA,CAAAA;EAhCpC;;;AAiCEJ,EAAAA,GAAAA,CAAIH,KAAAA,EAAgB;AAClB,IAAA,IAAID,SAAAA,CAAUC,KAAAA,CAAAA,EAAQ;AACpB,MAAA,OAAO,KAAA,CAAMG,IAAIH,KAAAA,CAAAA;AACnB;AACA,IAAA,OAAO,KAAA;AACT;AAEAQ,EAAAA,GAAAA,CAAIC,GAAAA,EAAc;AAChB,IAAA,IAAIV,SAAAA,CAAUU,GAAAA,CAAAA,EAAM;AAClB,MAAA,OAAO,KAAA,CAAMD,IAAIC,GAAAA,CAAAA;AACnB;AACF;AAEAC,EAAAA,GAAAA,CAAID,KAAcT,KAAAA,EAAU;AAC1B,IAAA,IAAID,SAAAA,CAAUU,GAAAA,CAAAA,EAAM;AAClB,MAAA,KAAA,CAAMC,GAAAA,CAAID,KAAKT,KAAAA,CAAAA;AACjB;AACA,IAAA,OAAO,IAAA;AACT;AAEAK,EAAAA,MAAAA,CAAOL,KAAAA,EAAgB;AACrB,IAAA,IAAID,SAAAA,CAAUC,KAAAA,CAAAA,EAAQ;AACpB,MAAA,OAAO,KAAA,CAAMK,OAAOL,KAAAA,CAAAA;AACtB;AACA,IAAA,OAAO,KAAA;AACT;AACF","file":"weakRef.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport function isWeakKey(value: unknown): value is WeakKey {\n return value != null && typeof value === \"object\";\n}\n\nexport class SafeWeakSet extends WeakSet {\n has(value: unknown) {\n if (isWeakKey(value)) {\n return super.has(value);\n }\n return false;\n }\n\n add(value: unknown) {\n if (isWeakKey(value)) {\n super.add(value);\n }\n return this;\n }\n\n delete(value: unknown) {\n if (isWeakKey(value)) {\n return super.delete(value);\n }\n return false;\n }\n}\n\nexport class SafeWeakMap<T> extends WeakMap<WeakKey, T> {\n has(value: unknown) {\n if (isWeakKey(value)) {\n return super.has(value);\n }\n return false;\n }\n\n get(key: unknown) {\n if (isWeakKey(key)) {\n return super.get(key);\n }\n }\n\n set(key: unknown, value: T) {\n if (isWeakKey(key)) {\n super.set(key, value);\n }\n return this;\n }\n\n delete(value: unknown) {\n if (isWeakKey(value)) {\n return super.delete(value);\n }\n return false;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../src/internals/helpers/weakRef.ts"],"names":["isWeakKey","value","SafeWeakSet","WeakSet","has","add","delete","SafeWeakMap","WeakMap","get","key","set"],"mappings":";;AAKO,SAASA,UAAUC,KAAAA,EAAc;AACtC,EAAA,OAAOA,KAAAA,IAAS,IAAA,IAAQ,OAAOA,KAAAA,KAAU,QAAA;AAC3C;AAFgBD,MAAAA,CAAAA,SAAAA,EAAAA,WAAAA,CAAAA;AAIT,MAAME,oBAAoBC,OAAAA,CAAAA;EATjC;;;AAUEC,EAAAA,GAAAA,CAAIH,KAAAA,EAAgB;AAClB,IAAA,IAAID,SAAAA,CAAUC,KAAAA,CAAAA,EAAQ;AACpB,MAAA,OAAO,KAAA,CAAMG,IAAIH,KAAAA,CAAAA;AACnB,IAAA;AACA,IAAA,OAAO,KAAA;AACT,EAAA;AAEAI,EAAAA,GAAAA,CAAIJ,KAAAA,EAAgB;AAClB,IAAA,IAAID,SAAAA,CAAUC,KAAAA,CAAAA,EAAQ;AACpB,MAAA,KAAA,CAAMI,IAAIJ,KAAAA,CAAAA;AACZ,IAAA;AACA,IAAA,OAAO,IAAA;AACT,EAAA;AAEAK,EAAAA,MAAAA,CAAOL,KAAAA,EAAgB;AACrB,IAAA,IAAID,SAAAA,CAAUC,KAAAA,CAAAA,EAAQ;AACpB,MAAA,OAAO,KAAA,CAAMK,OAAOL,KAAAA,CAAAA;AACtB,IAAA;AACA,IAAA,OAAO,KAAA;AACT,EAAA;AACF;AAEO,MAAMM,oBAAuBC,OAAAA,CAAAA;EAhCpC;;;AAiCEJ,EAAAA,GAAAA,CAAIH,KAAAA,EAAgB;AAClB,IAAA,IAAID,SAAAA,CAAUC,KAAAA,CAAAA,EAAQ;AACpB,MAAA,OAAO,KAAA,CAAMG,IAAIH,KAAAA,CAAAA;AACnB,IAAA;AACA,IAAA,OAAO,KAAA;AACT,EAAA;AAEAQ,EAAAA,GAAAA,CAAIC,GAAAA,EAAc;AAChB,IAAA,IAAIV,SAAAA,CAAUU,GAAAA,CAAAA,EAAM;AAClB,MAAA,OAAO,KAAA,CAAMD,IAAIC,GAAAA,CAAAA;AACnB,IAAA;AACF,EAAA;AAEAC,EAAAA,GAAAA,CAAID,KAAcT,KAAAA,EAAU;AAC1B,IAAA,IAAID,SAAAA,CAAUU,GAAAA,CAAAA,EAAM;AAClB,MAAA,KAAA,CAAMC,GAAAA,CAAID,KAAKT,KAAAA,CAAAA;AACjB,IAAA;AACA,IAAA,OAAO,IAAA;AACT,EAAA;AAEAK,EAAAA,MAAAA,CAAOL,KAAAA,EAAgB;AACrB,IAAA,IAAID,SAAAA,CAAUC,KAAAA,CAAAA,EAAQ;AACpB,MAAA,OAAO,KAAA,CAAMK,OAAOL,KAAAA,CAAAA;AACtB,IAAA;AACA,IAAA,OAAO,KAAA;AACT,EAAA;AACF","file":"weakRef.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport function isWeakKey(value: unknown): value is WeakKey {\n return value != null && typeof value === \"object\";\n}\n\nexport class SafeWeakSet extends WeakSet {\n has(value: unknown) {\n if (isWeakKey(value)) {\n return super.has(value);\n }\n return false;\n }\n\n add(value: unknown) {\n if (isWeakKey(value)) {\n super.add(value);\n }\n return this;\n }\n\n delete(value: unknown) {\n if (isWeakKey(value)) {\n return super.delete(value);\n }\n return false;\n }\n}\n\nexport class SafeWeakMap<T> extends WeakMap<WeakKey, T> {\n has(value: unknown) {\n if (isWeakKey(value)) {\n return super.has(value);\n }\n return false;\n }\n\n get(key: unknown) {\n if (isWeakKey(key)) {\n return super.get(key);\n }\n }\n\n set(key: unknown, value: T) {\n if (isWeakKey(key)) {\n super.set(key, value);\n }\n return this;\n }\n\n delete(value: unknown) {\n if (isWeakKey(value)) {\n return super.delete(value);\n }\n return false;\n }\n}\n"]}
@@ -32,7 +32,9 @@ class Serializable {
32
32
  });
33
33
  }
34
34
  async deserialize(value, options) {
35
- const { __root } = await serializer_cjs.Serializer.deserializeWithMeta(value, options?.extraClasses);
35
+ const { __root } = await serializer_cjs.Serializer.deserializeWithMeta(value, options?.extraClasses, false, {
36
+ allowFunctionDeserialization: options?.allowFunctionDeserialization
37
+ });
36
38
  if (!__root.target) {
37
39
  console.warn(`Serializable class must be serialized via "serialize" method and not via Serializer class. This may lead to incorrect deserialization.`);
38
40
  return __root;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/internals/serializable.ts"],"names":["Serializable","Object","getPrototypeOf","register","Cache","init","aliases","Serializer","registerSerializable","undefined","clone","snapshot","createSnapshot","target","create","prototype","loadSnapshot","serialize","extractClassName","deserialize","value","options","__root","deserializeWithMeta","extraClasses","console","warn","current","SerializerError","fromSnapshot","state","fromSerialized","serialized"],"mappings":";;;;;;;;;AAuBO,MAAeA,YAAAA,CAAAA;EAvBtB;;;EA2BE,WAAA,GAAc;AACZC,IAAAA,MAAAA,CAAOC,cAAAA,CAAe,IAAI,CAAA,CAAE,WAAA,CAAYC,QAAAA,EAAQ;AAChDC,IAAAA,wBAAAA,CAAMC,KAAK,IAAI,CAAA;AACjB;AAEA,EAAA,OAAcF,SAAwCG,OAAAA,EAAoB;AACxEC,IAAAA,yBAAAA,CAAWC,oBAAAA,CAAqB,IAAA,EAAMC,MAAAA,EAAWH,OAAAA,CAAAA;AACnD;AAEA,EAAA,MAAMI,KAAAA,GAAmD;AACvD,IAAA,MAAMC,QAAAA,GAAW,MAAM,IAAA,CAAKC,cAAAA,EAAc;AAE1C,IAAA,MAAMC,MAAAA,GAASZ,MAAAA,CAAOa,MAAAA,CAAO,IAAA,CAAK,YAAYC,SAAS,CAAA;AACvD,IAAA,MAAMF,MAAAA,CAAOG,aAAaL,QAAAA,CAAAA;AAC1B,IAAA,OAAOE,MAAAA;AACT;AAEA,EAAA,MAAMI,SAAAA,GAA6B;AACjC,IAAA,MAAMN,QAAAA,GAAW,MAAM,IAAA,CAAKC,cAAAA,EAAc;AAC1C,IAAA,OAAO,MAAML,0BAAWU,SAAAA,CAAoC;AAC1DJ,MAAAA,MAAAA,EAAQK,2BAAiB,IAAI,CAAA;AAC7BP,MAAAA;KACF,CAAA;AACF;EAEA,MAAgBQ,WAAAA,CAAYC,OAAeC,OAAAA,EAA0C;AACnF,IAAA,MAAM,EAAEC,QAAM,GAAK,MAAMf,0BAAWgB,mBAAAA,CAClCH,KAAAA,EACAC,SAASG,YAAAA,CAAAA;AAEX,IAAA,IAAI,CAACF,OAAOT,MAAAA,EAAQ;AAElBY,MAAAA,OAAAA,CAAQC,KACN,CAAA,sIAAA,CAAwI,CAAA;AAE1I,MAAA,OAAOJ,MAAAA;AACT;AAEA,IAAA,MAAMK,OAAAA,GAAUT,2BAAiB,IAAI,CAAA;AACrC,IAAA,IAAIS,OAAAA,KAAYL,OAAOT,MAAAA,EAAQ;AAC7B,MAAA,MAAM,IAAIe,yBAAAA,CACR,CAAA,qCAAA,EAAwCN,OAAOT,MAAM,CAAA,oCAAA,EAAuCc,OAAAA,CAAAA,EAAAA,CAAW,CAAA;AAE3G;AACA,IAAA,OAAOL,MAAAA,CAAOX,QAAAA;AAChB;AAEA,EAAA,aAAakB,aAEXC,KAAAA,EACY;AACZ,IAAA,MAAMjB,MAAAA,GAASZ,MAAAA,CAAOa,MAAAA,CAAO,IAAA,CAAKC,SAAS,CAAA;AAC3C,IAAA,MAAMF,MAAAA,CAAOG,aAAac,KAAAA,CAAAA;AAC1B1B,IAAAA,wBAAAA,CAAMC,KAAKQ,MAAAA,CAAAA;AACX,IAAA,OAAOA,MAAAA;AACT;AAEA,EAAA,aAAakB,cAAAA,CAEXC,UAAAA,EACAX,OAAAA,GAA8B,EAAC,EACnB;AACZ,IAAA,MAAMR,MAAAA,GAASZ,MAAAA,CAAOa,MAAAA,CAAO,IAAA,CAAKC,SAAS,CAAA;AAC3C,IAAA,MAAMe,KAAAA,GAAQ,MAAMjB,MAAAA,CAAOM,WAAAA,CAAYa,YAAYX,OAAAA,CAAAA;AACnD,IAAA,MAAMR,MAAAA,CAAOG,aAAac,KAAAA,CAAAA;AAC1B1B,IAAAA,wBAAAA,CAAMC,KAAKQ,MAAAA,CAAAA;AACX,IAAA,OAAOA,MAAAA;AACT;AACF","file":"serializable.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Serializer } from \"@/serializer/serializer.js\";\nimport { ClassConstructor } from \"@/internals/types.js\";\nimport { extractClassName } from \"@/serializer/utils.js\";\nimport { SerializerError } from \"@/serializer/error.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\n\nexport type SerializableClass<T> = ClassConstructor<Serializable<T>> &\n Pick<typeof Serializable<T>, \"fromSnapshot\" | \"fromSerialized\">;\n\ninterface SerializableStructure<T> {\n target: string;\n snapshot: T;\n}\n\nexport interface DeserializeOptions {\n extraClasses?: SerializableClass<unknown>[];\n}\n\nexport abstract class Serializable<T = unknown> {\n abstract createSnapshot(): T | Promise<T>;\n abstract loadSnapshot(snapshot: T): void | Promise<void>;\n\n constructor() {\n Object.getPrototypeOf(this).constructor.register();\n Cache.init(this);\n }\n\n public static register<T>(this: SerializableClass<T>, aliases?: string[]) {\n Serializer.registerSerializable(this, undefined, aliases);\n }\n\n async clone<T extends Serializable>(this: T): Promise<T> {\n const snapshot = await this.createSnapshot();\n\n const target = Object.create(this.constructor.prototype) as T;\n await target.loadSnapshot(snapshot);\n return target;\n }\n\n async serialize(): Promise<string> {\n const snapshot = await this.createSnapshot();\n return await Serializer.serialize<SerializableStructure<T>>({\n target: extractClassName(this),\n snapshot,\n });\n }\n\n protected async deserialize(value: string, options?: DeserializeOptions): Promise<T> {\n const { __root } = await Serializer.deserializeWithMeta<SerializableStructure<T>>(\n value,\n options?.extraClasses,\n );\n if (!__root.target) {\n // eslint-disable-next-line\n console.warn(\n `Serializable class must be serialized via \"serialize\" method and not via Serializer class. This may lead to incorrect deserialization.`,\n );\n return __root as T;\n }\n\n const current = extractClassName(this);\n if (current !== __root.target) {\n throw new SerializerError(\n `Snapshot has been created for class '${__root.target}' but you want to use it for class '${current}'.`,\n );\n }\n return __root.snapshot;\n }\n\n static async fromSnapshot<P, T extends Serializable<P>>(\n this: new (...args: any[]) => T,\n state: P,\n ): Promise<T> {\n const target = Object.create(this.prototype);\n await target.loadSnapshot(state);\n Cache.init(target);\n return target;\n }\n\n static async fromSerialized<T extends Serializable>(\n this: abstract new (...args: any[]) => T,\n serialized: string,\n options: DeserializeOptions = {},\n ): Promise<T> {\n const target = Object.create(this.prototype) as T;\n const state = await target.deserialize(serialized, options);\n await target.loadSnapshot(state);\n Cache.init(target);\n return target;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/internals/serializable.ts"],"names":["Serializable","Object","getPrototypeOf","register","Cache","init","aliases","Serializer","registerSerializable","undefined","clone","snapshot","createSnapshot","target","create","prototype","loadSnapshot","serialize","extractClassName","deserialize","value","options","__root","deserializeWithMeta","extraClasses","allowFunctionDeserialization","console","warn","current","SerializerError","fromSnapshot","state","fromSerialized","serialized"],"mappings":";;;;;;;;;AA6BO,MAAeA,YAAAA,CAAAA;EA7BtB;;;EAiCE,WAAA,GAAc;AACZC,IAAAA,MAAAA,CAAOC,cAAAA,CAAe,IAAI,CAAA,CAAE,WAAA,CAAYC,QAAAA,EAAQ;AAChDC,IAAAA,wBAAAA,CAAMC,KAAK,IAAI,CAAA;AACjB,EAAA;AAEA,EAAA,OAAcF,SAAwCG,OAAAA,EAAoB;AACxEC,IAAAA,yBAAAA,CAAWC,oBAAAA,CAAqB,IAAA,EAAMC,MAAAA,EAAWH,OAAAA,CAAAA;AACnD,EAAA;AAEA,EAAA,MAAMI,KAAAA,GAAmD;AACvD,IAAA,MAAMC,QAAAA,GAAW,MAAM,IAAA,CAAKC,cAAAA,EAAc;AAE1C,IAAA,MAAMC,MAAAA,GAASZ,MAAAA,CAAOa,MAAAA,CAAO,IAAA,CAAK,YAAYC,SAAS,CAAA;AACvD,IAAA,MAAMF,MAAAA,CAAOG,aAAaL,QAAAA,CAAAA;AAC1B,IAAA,OAAOE,MAAAA;AACT,EAAA;AAEA,EAAA,MAAMI,SAAAA,GAA6B;AACjC,IAAA,MAAMN,QAAAA,GAAW,MAAM,IAAA,CAAKC,cAAAA,EAAc;AAC1C,IAAA,OAAO,MAAML,0BAAWU,SAAAA,CAAoC;AAC1DJ,MAAAA,MAAAA,EAAQK,2BAAiB,IAAI,CAAA;AAC7BP,MAAAA;KACF,CAAA;AACF,EAAA;EAEA,MAAgBQ,WAAAA,CAAYC,OAAeC,OAAAA,EAA0C;AACnF,IAAA,MAAM,EAAEC,QAAM,GAAK,MAAMf,0BAAWgB,mBAAAA,CAClCH,KAAAA,EACAC,OAAAA,EAASG,YAAAA,EACT,KAAA,EACA;AAAEC,MAAAA,4BAAAA,EAA8BJ,OAAAA,EAASI;KAA6B,CAAA;AAExE,IAAA,IAAI,CAACH,OAAOT,MAAAA,EAAQ;AAElBa,MAAAA,OAAAA,CAAQC,KACN,CAAA,sIAAA,CAAwI,CAAA;AAE1I,MAAA,OAAOL,MAAAA;AACT,IAAA;AAEA,IAAA,MAAMM,OAAAA,GAAUV,2BAAiB,IAAI,CAAA;AACrC,IAAA,IAAIU,OAAAA,KAAYN,OAAOT,MAAAA,EAAQ;AAC7B,MAAA,MAAM,IAAIgB,yBAAAA,CACR,CAAA,qCAAA,EAAwCP,OAAOT,MAAM,CAAA,oCAAA,EAAuCe,OAAAA,CAAAA,EAAAA,CAAW,CAAA;AAE3G,IAAA;AACA,IAAA,OAAON,MAAAA,CAAOX,QAAAA;AAChB,EAAA;AAEA,EAAA,aAAamB,aAEXC,KAAAA,EACY;AACZ,IAAA,MAAMlB,MAAAA,GAASZ,MAAAA,CAAOa,MAAAA,CAAO,IAAA,CAAKC,SAAS,CAAA;AAC3C,IAAA,MAAMF,MAAAA,CAAOG,aAAae,KAAAA,CAAAA;AAC1B3B,IAAAA,wBAAAA,CAAMC,KAAKQ,MAAAA,CAAAA;AACX,IAAA,OAAOA,MAAAA;AACT,EAAA;AAEA,EAAA,aAAamB,cAAAA,CAEXC,UAAAA,EACAZ,OAAAA,GAA8B,EAAC,EACnB;AACZ,IAAA,MAAMR,MAAAA,GAASZ,MAAAA,CAAOa,MAAAA,CAAO,IAAA,CAAKC,SAAS,CAAA;AAC3C,IAAA,MAAMgB,KAAAA,GAAQ,MAAMlB,MAAAA,CAAOM,WAAAA,CAAYc,YAAYZ,OAAAA,CAAAA;AACnD,IAAA,MAAMR,MAAAA,CAAOG,aAAae,KAAAA,CAAAA;AAC1B3B,IAAAA,wBAAAA,CAAMC,KAAKQ,MAAAA,CAAAA;AACX,IAAA,OAAOA,MAAAA;AACT,EAAA;AACF","file":"serializable.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Serializer } from \"@/serializer/serializer.js\";\nimport { ClassConstructor } from \"@/internals/types.js\";\nimport { extractClassName } from \"@/serializer/utils.js\";\nimport { SerializerError } from \"@/serializer/error.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\n\nexport type SerializableClass<T> = ClassConstructor<Serializable<T>> &\n Pick<typeof Serializable<T>, \"fromSnapshot\" | \"fromSerialized\">;\n\ninterface SerializableStructure<T> {\n target: string;\n snapshot: T;\n}\n\nexport interface DeserializeOptions {\n extraClasses?: SerializableClass<unknown>[];\n /**\n * Function deserialization is disabled by default because it can execute\n * arbitrary code from the payload (see GHSA-phhm-7927-g88p). Only set this\n * to `true` if you fully trust the source of the serialized data.\n */\n allowFunctionDeserialization?: boolean;\n}\n\nexport abstract class Serializable<T = unknown> {\n abstract createSnapshot(): T | Promise<T>;\n abstract loadSnapshot(snapshot: T): void | Promise<void>;\n\n constructor() {\n Object.getPrototypeOf(this).constructor.register();\n Cache.init(this);\n }\n\n public static register<T>(this: SerializableClass<T>, aliases?: string[]) {\n Serializer.registerSerializable(this, undefined, aliases);\n }\n\n async clone<T extends Serializable>(this: T): Promise<T> {\n const snapshot = await this.createSnapshot();\n\n const target = Object.create(this.constructor.prototype) as T;\n await target.loadSnapshot(snapshot);\n return target;\n }\n\n async serialize(): Promise<string> {\n const snapshot = await this.createSnapshot();\n return await Serializer.serialize<SerializableStructure<T>>({\n target: extractClassName(this),\n snapshot,\n });\n }\n\n protected async deserialize(value: string, options?: DeserializeOptions): Promise<T> {\n const { __root } = await Serializer.deserializeWithMeta<SerializableStructure<T>>(\n value,\n options?.extraClasses,\n false,\n { allowFunctionDeserialization: options?.allowFunctionDeserialization },\n );\n if (!__root.target) {\n // eslint-disable-next-line\n console.warn(\n `Serializable class must be serialized via \"serialize\" method and not via Serializer class. This may lead to incorrect deserialization.`,\n );\n return __root as T;\n }\n\n const current = extractClassName(this);\n if (current !== __root.target) {\n throw new SerializerError(\n `Snapshot has been created for class '${__root.target}' but you want to use it for class '${current}'.`,\n );\n }\n return __root.snapshot;\n }\n\n static async fromSnapshot<P, T extends Serializable<P>>(\n this: new (...args: any[]) => T,\n state: P,\n ): Promise<T> {\n const target = Object.create(this.prototype);\n await target.loadSnapshot(state);\n Cache.init(target);\n return target;\n }\n\n static async fromSerialized<T extends Serializable>(\n this: abstract new (...args: any[]) => T,\n serialized: string,\n options: DeserializeOptions = {},\n ): Promise<T> {\n const target = Object.create(this.prototype) as T;\n const state = await target.deserialize(serialized, options);\n await target.loadSnapshot(state);\n Cache.init(target);\n return target;\n }\n}\n"]}
@@ -9,6 +9,12 @@ import './helpers/guards.cjs';
9
9
  type SerializableClass<T> = ClassConstructor<Serializable<T>> & Pick<typeof Serializable<T>, "fromSnapshot" | "fromSerialized">;
10
10
  interface DeserializeOptions {
11
11
  extraClasses?: SerializableClass<unknown>[];
12
+ /**
13
+ * Function deserialization is disabled by default because it can execute
14
+ * arbitrary code from the payload (see GHSA-phhm-7927-g88p). Only set this
15
+ * to `true` if you fully trust the source of the serialized data.
16
+ */
17
+ allowFunctionDeserialization?: boolean;
12
18
  }
13
19
  declare abstract class Serializable<T = unknown> {
14
20
  abstract createSnapshot(): T | Promise<T>;
@@ -9,6 +9,12 @@ import './helpers/guards.js';
9
9
  type SerializableClass<T> = ClassConstructor<Serializable<T>> & Pick<typeof Serializable<T>, "fromSnapshot" | "fromSerialized">;
10
10
  interface DeserializeOptions {
11
11
  extraClasses?: SerializableClass<unknown>[];
12
+ /**
13
+ * Function deserialization is disabled by default because it can execute
14
+ * arbitrary code from the payload (see GHSA-phhm-7927-g88p). Only set this
15
+ * to `true` if you fully trust the source of the serialized data.
16
+ */
17
+ allowFunctionDeserialization?: boolean;
12
18
  }
13
19
  declare abstract class Serializable<T = unknown> {
14
20
  abstract createSnapshot(): T | Promise<T>;
@@ -30,7 +30,9 @@ class Serializable {
30
30
  });
31
31
  }
32
32
  async deserialize(value, options) {
33
- const { __root } = await Serializer.deserializeWithMeta(value, options?.extraClasses);
33
+ const { __root } = await Serializer.deserializeWithMeta(value, options?.extraClasses, false, {
34
+ allowFunctionDeserialization: options?.allowFunctionDeserialization
35
+ });
34
36
  if (!__root.target) {
35
37
  console.warn(`Serializable class must be serialized via "serialize" method and not via Serializer class. This may lead to incorrect deserialization.`);
36
38
  return __root;