beeai-framework 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (436) hide show
  1. package/dist/adapters/amazon-bedrock/backend/chat.cjs.map +1 -1
  2. package/dist/adapters/amazon-bedrock/backend/chat.d.cts +1 -1
  3. package/dist/adapters/amazon-bedrock/backend/chat.d.ts +1 -1
  4. package/dist/adapters/amazon-bedrock/backend/chat.js.map +1 -1
  5. package/dist/adapters/amazon-bedrock/backend/client.cjs.map +1 -1
  6. package/dist/adapters/amazon-bedrock/backend/client.js.map +1 -1
  7. package/dist/adapters/amazon-bedrock/backend/embedding.cjs.map +1 -1
  8. package/dist/adapters/amazon-bedrock/backend/embedding.d.cts +1 -1
  9. package/dist/adapters/amazon-bedrock/backend/embedding.d.ts +1 -1
  10. package/dist/adapters/amazon-bedrock/backend/embedding.js.map +1 -1
  11. package/dist/adapters/anthropic/backend/chat.cjs.map +1 -1
  12. package/dist/adapters/anthropic/backend/chat.d.cts +1 -1
  13. package/dist/adapters/anthropic/backend/chat.d.ts +1 -1
  14. package/dist/adapters/anthropic/backend/chat.js.map +1 -1
  15. package/dist/adapters/anthropic/backend/client.cjs.map +1 -1
  16. package/dist/adapters/anthropic/backend/client.js.map +1 -1
  17. package/dist/adapters/anthropic/backend/embedding.cjs.map +1 -1
  18. package/dist/adapters/anthropic/backend/embedding.d.cts +1 -1
  19. package/dist/adapters/anthropic/backend/embedding.d.ts +1 -1
  20. package/dist/adapters/anthropic/backend/embedding.js.map +1 -1
  21. package/dist/adapters/azure-openai/backend/chat.cjs.map +1 -1
  22. package/dist/adapters/azure-openai/backend/chat.d.cts +2 -2
  23. package/dist/adapters/azure-openai/backend/chat.d.ts +2 -2
  24. package/dist/adapters/azure-openai/backend/chat.js.map +1 -1
  25. package/dist/adapters/azure-openai/backend/client.cjs.map +1 -1
  26. package/dist/adapters/azure-openai/backend/client.js.map +1 -1
  27. package/dist/adapters/azure-openai/backend/embedding.cjs.map +1 -1
  28. package/dist/adapters/azure-openai/backend/embedding.d.cts +1 -1
  29. package/dist/adapters/azure-openai/backend/embedding.d.ts +1 -1
  30. package/dist/adapters/azure-openai/backend/embedding.js.map +1 -1
  31. package/dist/adapters/dummy/backend/chat.cjs.map +1 -1
  32. package/dist/adapters/dummy/backend/chat.d.cts +1 -1
  33. package/dist/adapters/dummy/backend/chat.d.ts +1 -1
  34. package/dist/adapters/dummy/backend/chat.js.map +1 -1
  35. package/dist/adapters/dummy/backend/embedding.cjs.map +1 -1
  36. package/dist/adapters/dummy/backend/embedding.d.cts +1 -1
  37. package/dist/adapters/dummy/backend/embedding.d.ts +1 -1
  38. package/dist/adapters/dummy/backend/embedding.js.map +1 -1
  39. package/dist/adapters/google-vertex/backend/chat.cjs.map +1 -1
  40. package/dist/adapters/google-vertex/backend/chat.d.cts +1 -1
  41. package/dist/adapters/google-vertex/backend/chat.d.ts +1 -1
  42. package/dist/adapters/google-vertex/backend/chat.js.map +1 -1
  43. package/dist/adapters/google-vertex/backend/client.cjs.map +1 -1
  44. package/dist/adapters/google-vertex/backend/client.js.map +1 -1
  45. package/dist/adapters/google-vertex/backend/embedding.cjs.map +1 -1
  46. package/dist/adapters/google-vertex/backend/embedding.d.cts +1 -1
  47. package/dist/adapters/google-vertex/backend/embedding.d.ts +1 -1
  48. package/dist/adapters/google-vertex/backend/embedding.js.map +1 -1
  49. package/dist/adapters/groq/backend/chat.cjs.map +1 -1
  50. package/dist/adapters/groq/backend/chat.d.cts +1 -1
  51. package/dist/adapters/groq/backend/chat.d.ts +1 -1
  52. package/dist/adapters/groq/backend/chat.js.map +1 -1
  53. package/dist/adapters/groq/backend/client.cjs.map +1 -1
  54. package/dist/adapters/groq/backend/client.js.map +1 -1
  55. package/dist/adapters/groq/backend/embedding.cjs.map +1 -1
  56. package/dist/adapters/groq/backend/embedding.d.cts +1 -1
  57. package/dist/adapters/groq/backend/embedding.d.ts +1 -1
  58. package/dist/adapters/groq/backend/embedding.js.map +1 -1
  59. package/dist/adapters/langchain/backend/chat.cjs.map +1 -1
  60. package/dist/adapters/langchain/backend/chat.d.cts +1 -1
  61. package/dist/adapters/langchain/backend/chat.d.ts +1 -1
  62. package/dist/adapters/langchain/backend/chat.js.map +1 -1
  63. package/dist/adapters/langchain/backend/embedding.cjs.map +1 -1
  64. package/dist/adapters/langchain/backend/embedding.d.cts +1 -1
  65. package/dist/adapters/langchain/backend/embedding.d.ts +1 -1
  66. package/dist/adapters/langchain/backend/embedding.js.map +1 -1
  67. package/dist/adapters/langchain/tools.cjs.map +1 -1
  68. package/dist/adapters/langchain/tools.d.cts +1 -1
  69. package/dist/adapters/langchain/tools.d.ts +1 -1
  70. package/dist/adapters/langchain/tools.js.map +1 -1
  71. package/dist/adapters/ollama/backend/chat.cjs.map +1 -1
  72. package/dist/adapters/ollama/backend/chat.d.cts +1 -1
  73. package/dist/adapters/ollama/backend/chat.d.ts +1 -1
  74. package/dist/adapters/ollama/backend/chat.js.map +1 -1
  75. package/dist/adapters/ollama/backend/client.cjs.map +1 -1
  76. package/dist/adapters/ollama/backend/client.js.map +1 -1
  77. package/dist/adapters/ollama/backend/embedding.cjs.map +1 -1
  78. package/dist/adapters/ollama/backend/embedding.d.cts +1 -1
  79. package/dist/adapters/ollama/backend/embedding.d.ts +1 -1
  80. package/dist/adapters/ollama/backend/embedding.js.map +1 -1
  81. package/dist/adapters/openai/backend/chat.cjs.map +1 -1
  82. package/dist/adapters/openai/backend/chat.d.cts +1 -1
  83. package/dist/adapters/openai/backend/chat.d.ts +1 -1
  84. package/dist/adapters/openai/backend/chat.js.map +1 -1
  85. package/dist/adapters/openai/backend/client.cjs.map +1 -1
  86. package/dist/adapters/openai/backend/client.js.map +1 -1
  87. package/dist/adapters/openai/backend/embedding.cjs.map +1 -1
  88. package/dist/adapters/openai/backend/embedding.d.cts +2 -2
  89. package/dist/adapters/openai/backend/embedding.d.ts +2 -2
  90. package/dist/adapters/openai/backend/embedding.js.map +1 -1
  91. package/dist/adapters/vercel/backend/chat.cjs +2 -2
  92. package/dist/adapters/vercel/backend/chat.cjs.map +1 -1
  93. package/dist/adapters/vercel/backend/chat.d.cts +1 -1
  94. package/dist/adapters/vercel/backend/chat.d.ts +1 -1
  95. package/dist/adapters/vercel/backend/chat.js +2 -2
  96. package/dist/adapters/vercel/backend/chat.js.map +1 -1
  97. package/dist/adapters/vercel/backend/embedding.cjs.map +1 -1
  98. package/dist/adapters/vercel/backend/embedding.d.cts +5 -5
  99. package/dist/adapters/vercel/backend/embedding.d.ts +5 -5
  100. package/dist/adapters/vercel/backend/embedding.js.map +1 -1
  101. package/dist/adapters/watsonx/backend/chat.cjs.map +1 -1
  102. package/dist/adapters/watsonx/backend/chat.d.cts +1 -1
  103. package/dist/adapters/watsonx/backend/chat.d.ts +1 -1
  104. package/dist/adapters/watsonx/backend/chat.js.map +1 -1
  105. package/dist/adapters/watsonx/backend/client.cjs.map +1 -1
  106. package/dist/adapters/watsonx/backend/client.js.map +1 -1
  107. package/dist/adapters/watsonx/backend/embedding.cjs.map +1 -1
  108. package/dist/adapters/watsonx/backend/embedding.d.cts +1 -1
  109. package/dist/adapters/watsonx/backend/embedding.d.ts +1 -1
  110. package/dist/adapters/watsonx/backend/embedding.js.map +1 -1
  111. package/dist/{agent-xmwFrFrh.d.cts → agent-CtPtFtGb.d.cts} +3 -3
  112. package/dist/{agent-D9gpIPf2.d.ts → agent-CxoSeic0.d.ts} +3 -3
  113. package/dist/agents/base.cjs.map +1 -1
  114. package/dist/agents/base.d.cts +2 -2
  115. package/dist/agents/base.d.ts +2 -2
  116. package/dist/agents/base.js.map +1 -1
  117. package/dist/agents/bee/agent.cjs.map +1 -1
  118. package/dist/agents/bee/agent.d.cts +3 -3
  119. package/dist/agents/bee/agent.d.ts +3 -3
  120. package/dist/agents/bee/agent.js.map +1 -1
  121. package/dist/agents/bee/prompts.cjs.map +1 -1
  122. package/dist/agents/bee/prompts.js.map +1 -1
  123. package/dist/agents/bee/runners/base.cjs.map +1 -1
  124. package/dist/agents/bee/runners/base.d.cts +3 -3
  125. package/dist/agents/bee/runners/base.d.ts +3 -3
  126. package/dist/agents/bee/runners/base.js.map +1 -1
  127. package/dist/agents/bee/runners/deep-think/prompts.cjs.map +1 -1
  128. package/dist/agents/bee/runners/deep-think/prompts.js.map +1 -1
  129. package/dist/agents/bee/runners/deep-think/runner.cjs +11 -11
  130. package/dist/agents/bee/runners/deep-think/runner.cjs.map +1 -1
  131. package/dist/agents/bee/runners/deep-think/runner.d.cts +3 -3
  132. package/dist/agents/bee/runners/deep-think/runner.d.ts +3 -3
  133. package/dist/agents/bee/runners/deep-think/runner.js +2 -2
  134. package/dist/agents/bee/runners/deep-think/runner.js.map +1 -1
  135. package/dist/agents/bee/runners/default/runner.cjs.map +1 -1
  136. package/dist/agents/bee/runners/default/runner.d.cts +3 -3
  137. package/dist/agents/bee/runners/default/runner.d.ts +3 -3
  138. package/dist/agents/bee/runners/default/runner.js +1 -1
  139. package/dist/agents/bee/runners/default/runner.js.map +1 -1
  140. package/dist/agents/bee/runners/default/runner.spec.cjs.map +1 -1
  141. package/dist/agents/bee/runners/default/runner.spec.js.map +1 -1
  142. package/dist/agents/bee/runners/granite/prompts.cjs.map +1 -1
  143. package/dist/agents/bee/runners/granite/prompts.js.map +1 -1
  144. package/dist/agents/bee/runners/granite/runner.cjs +11 -11
  145. package/dist/agents/bee/runners/granite/runner.cjs.map +1 -1
  146. package/dist/agents/bee/runners/granite/runner.d.cts +3 -3
  147. package/dist/agents/bee/runners/granite/runner.d.ts +3 -3
  148. package/dist/agents/bee/runners/granite/runner.js +2 -2
  149. package/dist/agents/bee/runners/granite/runner.js.map +1 -1
  150. package/dist/agents/bee/types.d.cts +1 -1
  151. package/dist/agents/bee/types.d.ts +1 -1
  152. package/dist/agents/experimental/replan/agent.cjs.map +1 -1
  153. package/dist/agents/experimental/replan/agent.d.cts +2 -2
  154. package/dist/agents/experimental/replan/agent.d.ts +2 -2
  155. package/dist/agents/experimental/replan/agent.js.map +1 -1
  156. package/dist/agents/experimental/replan/prompts.cjs.map +1 -1
  157. package/dist/agents/experimental/replan/prompts.d.cts +1 -1
  158. package/dist/agents/experimental/replan/prompts.d.ts +1 -1
  159. package/dist/agents/experimental/replan/prompts.js.map +1 -1
  160. package/dist/agents/experimental/streamlit/agent.cjs.map +1 -1
  161. package/dist/agents/experimental/streamlit/agent.d.cts +2 -2
  162. package/dist/agents/experimental/streamlit/agent.d.ts +2 -2
  163. package/dist/agents/experimental/streamlit/agent.js.map +1 -1
  164. package/dist/agents/experimental/streamlit/prompts.cjs.map +1 -1
  165. package/dist/agents/experimental/streamlit/prompts.js.map +1 -1
  166. package/dist/agents/types.d.cts +2 -2
  167. package/dist/agents/types.d.ts +2 -2
  168. package/dist/backend/backend.cjs.map +1 -1
  169. package/dist/backend/backend.d.cts +1 -1
  170. package/dist/backend/backend.d.ts +1 -1
  171. package/dist/backend/backend.js.map +1 -1
  172. package/dist/backend/chat.cjs.map +1 -1
  173. package/dist/backend/chat.d.cts +1 -1
  174. package/dist/backend/chat.d.ts +1 -1
  175. package/dist/backend/chat.js.map +1 -1
  176. package/dist/backend/client.cjs.map +1 -1
  177. package/dist/backend/client.js.map +1 -1
  178. package/dist/backend/constants.cjs.map +1 -1
  179. package/dist/backend/constants.js.map +1 -1
  180. package/dist/backend/core.d.cts +1 -1
  181. package/dist/backend/core.d.ts +1 -1
  182. package/dist/backend/embedding.cjs.map +1 -1
  183. package/dist/backend/embedding.d.cts +1 -1
  184. package/dist/backend/embedding.d.ts +1 -1
  185. package/dist/backend/embedding.js.map +1 -1
  186. package/dist/backend/errors.cjs.map +1 -1
  187. package/dist/backend/errors.js.map +1 -1
  188. package/dist/backend/message.cjs.map +1 -1
  189. package/dist/backend/message.js.map +1 -1
  190. package/dist/backend/utils.cjs.map +1 -1
  191. package/dist/backend/utils.js.map +1 -1
  192. package/dist/{base-daM6fHUP.d.cts → base-Csr9guq2.d.cts} +1 -1
  193. package/dist/{base-mmG-8Pk9.d.ts → base-DHhpWHQm.d.ts} +1 -1
  194. package/dist/cache/base.cjs.map +1 -1
  195. package/dist/cache/base.js.map +1 -1
  196. package/dist/cache/decoratorCache.cjs.map +1 -1
  197. package/dist/cache/decoratorCache.js.map +1 -1
  198. package/dist/cache/fileCache.cjs.map +1 -1
  199. package/dist/cache/fileCache.js.map +1 -1
  200. package/dist/cache/nullCache.cjs.map +1 -1
  201. package/dist/cache/nullCache.js.map +1 -1
  202. package/dist/cache/slidingCache.cjs.map +1 -1
  203. package/dist/cache/slidingCache.js.map +1 -1
  204. package/dist/cache/unconstrainedCache.cjs.map +1 -1
  205. package/dist/cache/unconstrainedCache.js.map +1 -1
  206. package/dist/context.cjs.map +1 -1
  207. package/dist/context.d.cts +1 -1
  208. package/dist/context.d.ts +1 -1
  209. package/dist/context.js.map +1 -1
  210. package/dist/emitter/emitter.cjs.map +1 -1
  211. package/dist/emitter/emitter.d.cts +1 -1
  212. package/dist/emitter/emitter.d.ts +1 -1
  213. package/dist/emitter/emitter.js.map +1 -1
  214. package/dist/emitter/errors.cjs.map +1 -1
  215. package/dist/emitter/errors.js.map +1 -1
  216. package/dist/emitter/types.d.cts +1 -1
  217. package/dist/emitter/types.d.ts +1 -1
  218. package/dist/emitter/utils.cjs.map +1 -1
  219. package/dist/emitter/utils.js.map +1 -1
  220. package/dist/errors.cjs.map +1 -1
  221. package/dist/errors.js.map +1 -1
  222. package/dist/index.d.cts +2 -2
  223. package/dist/index.d.ts +2 -2
  224. package/dist/instrumentation/config.cjs.map +1 -1
  225. package/dist/instrumentation/config.js.map +1 -1
  226. package/dist/instrumentation/create-telemetry-middleware.cjs.map +1 -1
  227. package/dist/instrumentation/create-telemetry-middleware.d.cts +1 -1
  228. package/dist/instrumentation/create-telemetry-middleware.d.ts +1 -1
  229. package/dist/instrumentation/create-telemetry-middleware.js.map +1 -1
  230. package/dist/instrumentation/helpers/create-span.cjs.map +1 -1
  231. package/dist/instrumentation/helpers/create-span.js.map +1 -1
  232. package/dist/instrumentation/helpers/get-error-safe.cjs.map +1 -1
  233. package/dist/instrumentation/helpers/get-error-safe.js.map +1 -1
  234. package/dist/instrumentation/helpers/get-serialized-object-safe.cjs.map +1 -1
  235. package/dist/instrumentation/helpers/get-serialized-object-safe.js.map +1 -1
  236. package/dist/instrumentation/helpers/id-name-manager.cjs.map +1 -1
  237. package/dist/instrumentation/helpers/id-name-manager.js.map +1 -1
  238. package/dist/instrumentation/helpers/trace-serializer.cjs.map +1 -1
  239. package/dist/instrumentation/helpers/trace-serializer.js.map +1 -1
  240. package/dist/instrumentation/helpers/utils.cjs.map +1 -1
  241. package/dist/instrumentation/helpers/utils.d.cts +1 -1
  242. package/dist/instrumentation/helpers/utils.d.ts +1 -1
  243. package/dist/instrumentation/helpers/utils.js.map +1 -1
  244. package/dist/instrumentation/logger.cjs.map +1 -1
  245. package/dist/instrumentation/logger.js.map +1 -1
  246. package/dist/instrumentation/tracer.cjs.map +1 -1
  247. package/dist/instrumentation/tracer.js.map +1 -1
  248. package/dist/internals/env.cjs.map +1 -1
  249. package/dist/internals/env.js.map +1 -1
  250. package/dist/internals/fetcher.cjs.map +1 -1
  251. package/dist/internals/fetcher.d.cts +1 -1
  252. package/dist/internals/fetcher.d.ts +1 -1
  253. package/dist/internals/fetcher.js.map +1 -1
  254. package/dist/internals/helpers/array.cjs.map +1 -1
  255. package/dist/internals/helpers/array.js.map +1 -1
  256. package/dist/internals/helpers/cancellation.cjs.map +1 -1
  257. package/dist/internals/helpers/cancellation.js.map +1 -1
  258. package/dist/internals/helpers/counter.cjs.map +1 -1
  259. package/dist/internals/helpers/counter.js.map +1 -1
  260. package/dist/internals/helpers/general.cjs.map +1 -1
  261. package/dist/internals/helpers/general.js.map +1 -1
  262. package/dist/internals/helpers/guards.cjs.map +1 -1
  263. package/dist/internals/helpers/guards.js.map +1 -1
  264. package/dist/internals/helpers/hash.cjs.map +1 -1
  265. package/dist/internals/helpers/hash.js.map +1 -1
  266. package/dist/internals/helpers/map.cjs.map +1 -1
  267. package/dist/internals/helpers/map.js.map +1 -1
  268. package/dist/internals/helpers/math.cjs.map +1 -1
  269. package/dist/internals/helpers/math.js.map +1 -1
  270. package/dist/internals/helpers/number.cjs.map +1 -1
  271. package/dist/internals/helpers/number.js.map +1 -1
  272. package/dist/internals/helpers/object.cjs.map +1 -1
  273. package/dist/internals/helpers/object.js.map +1 -1
  274. package/dist/internals/helpers/paginate.cjs.map +1 -1
  275. package/dist/internals/helpers/paginate.js.map +1 -1
  276. package/dist/internals/helpers/promise.cjs.map +1 -1
  277. package/dist/internals/helpers/promise.js.map +1 -1
  278. package/dist/internals/helpers/prototype.cjs.map +1 -1
  279. package/dist/internals/helpers/prototype.js.map +1 -1
  280. package/dist/internals/helpers/retry.cjs.map +1 -1
  281. package/dist/internals/helpers/retry.js.map +1 -1
  282. package/dist/internals/helpers/retryable.cjs.map +1 -1
  283. package/dist/internals/helpers/retryable.js.map +1 -1
  284. package/dist/internals/helpers/schema.cjs.map +1 -1
  285. package/dist/internals/helpers/schema.d.cts +1 -1
  286. package/dist/internals/helpers/schema.d.ts +1 -1
  287. package/dist/internals/helpers/schema.js.map +1 -1
  288. package/dist/internals/helpers/stream.cjs.map +1 -1
  289. package/dist/internals/helpers/stream.js.map +1 -1
  290. package/dist/internals/helpers/string.cjs.map +1 -1
  291. package/dist/internals/helpers/string.js.map +1 -1
  292. package/dist/internals/helpers/weakRef.cjs.map +1 -1
  293. package/dist/internals/helpers/weakRef.js.map +1 -1
  294. package/dist/internals/serializable.cjs.map +1 -1
  295. package/dist/internals/serializable.js.map +1 -1
  296. package/dist/internals/types.cjs.map +1 -1
  297. package/dist/internals/types.js.map +1 -1
  298. package/dist/logger/logger.cjs.map +1 -1
  299. package/dist/logger/logger.js.map +1 -1
  300. package/dist/logger/pretty.cjs.map +1 -1
  301. package/dist/logger/pretty.js.map +1 -1
  302. package/dist/memory/base.cjs.map +1 -1
  303. package/dist/memory/base.js.map +1 -1
  304. package/dist/memory/slidingMemory.cjs.map +1 -1
  305. package/dist/memory/slidingMemory.js.map +1 -1
  306. package/dist/memory/summarizeMemory.cjs.map +1 -1
  307. package/dist/memory/summarizeMemory.d.cts +1 -1
  308. package/dist/memory/summarizeMemory.d.ts +1 -1
  309. package/dist/memory/summarizeMemory.js.map +1 -1
  310. package/dist/memory/tokenMemory.cjs.map +1 -1
  311. package/dist/memory/tokenMemory.js.map +1 -1
  312. package/dist/memory/unconstrainedMemory.cjs.map +1 -1
  313. package/dist/memory/unconstrainedMemory.js.map +1 -1
  314. package/dist/parsers/errors.cjs.map +1 -1
  315. package/dist/parsers/errors.js.map +1 -1
  316. package/dist/parsers/field.cjs.map +1 -1
  317. package/dist/parsers/field.js.map +1 -1
  318. package/dist/parsers/linePrefix.cjs.map +1 -1
  319. package/dist/parsers/linePrefix.d.cts +1 -1
  320. package/dist/parsers/linePrefix.d.ts +1 -1
  321. package/dist/parsers/linePrefix.js.map +1 -1
  322. package/dist/serializer/error.cjs.map +1 -1
  323. package/dist/serializer/error.js.map +1 -1
  324. package/dist/serializer/serializer.cjs +3 -3
  325. package/dist/serializer/serializer.cjs.map +1 -1
  326. package/dist/serializer/serializer.js +2 -2
  327. package/dist/serializer/serializer.js.map +1 -1
  328. package/dist/serializer/utils.cjs.map +1 -1
  329. package/dist/serializer/utils.js.map +1 -1
  330. package/dist/template.cjs.map +1 -1
  331. package/dist/template.d.cts +1 -1
  332. package/dist/template.d.ts +1 -1
  333. package/dist/template.js.map +1 -1
  334. package/dist/tools/arxiv.cjs.map +1 -1
  335. package/dist/tools/arxiv.d.cts +2 -2
  336. package/dist/tools/arxiv.d.ts +2 -2
  337. package/dist/tools/arxiv.js.map +1 -1
  338. package/dist/tools/base.cjs.map +1 -1
  339. package/dist/tools/base.d.cts +2 -2
  340. package/dist/tools/base.d.ts +2 -2
  341. package/dist/tools/base.js.map +1 -1
  342. package/dist/tools/calculator.cjs.map +1 -1
  343. package/dist/tools/calculator.d.cts +1 -1
  344. package/dist/tools/calculator.d.ts +1 -1
  345. package/dist/tools/calculator.js.map +1 -1
  346. package/dist/tools/custom.cjs.map +1 -1
  347. package/dist/tools/custom.d.cts +1 -1
  348. package/dist/tools/custom.d.ts +1 -1
  349. package/dist/tools/custom.js.map +1 -1
  350. package/dist/tools/database/elasticsearch.cjs.map +1 -1
  351. package/dist/tools/database/elasticsearch.d.cts +1 -1
  352. package/dist/tools/database/elasticsearch.d.ts +1 -1
  353. package/dist/tools/database/elasticsearch.js.map +1 -1
  354. package/dist/tools/database/metadata.cjs.map +1 -1
  355. package/dist/tools/database/metadata.js.map +1 -1
  356. package/dist/tools/database/milvus.cjs.map +1 -1
  357. package/dist/tools/database/milvus.d.cts +1 -1
  358. package/dist/tools/database/milvus.d.ts +1 -1
  359. package/dist/tools/database/milvus.js.map +1 -1
  360. package/dist/tools/database/sql.cjs.map +1 -1
  361. package/dist/tools/database/sql.d.cts +3 -3
  362. package/dist/tools/database/sql.d.ts +3 -3
  363. package/dist/tools/database/sql.js.map +1 -1
  364. package/dist/tools/llm.cjs.map +1 -1
  365. package/dist/tools/llm.d.cts +1 -1
  366. package/dist/tools/llm.d.ts +1 -1
  367. package/dist/tools/llm.js +1 -1
  368. package/dist/tools/llm.js.map +1 -1
  369. package/dist/tools/mcp.cjs.map +1 -1
  370. package/dist/tools/mcp.d.cts +1 -1
  371. package/dist/tools/mcp.d.ts +1 -1
  372. package/dist/tools/mcp.js.map +1 -1
  373. package/dist/tools/openapi.cjs.map +1 -1
  374. package/dist/tools/openapi.d.cts +1 -1
  375. package/dist/tools/openapi.d.ts +1 -1
  376. package/dist/tools/openapi.js +1 -1
  377. package/dist/tools/openapi.js.map +1 -1
  378. package/dist/tools/python/output.cjs.map +1 -1
  379. package/dist/tools/python/output.d.cts +1 -1
  380. package/dist/tools/python/output.d.ts +1 -1
  381. package/dist/tools/python/output.js.map +1 -1
  382. package/dist/tools/python/python.cjs.map +1 -1
  383. package/dist/tools/python/python.d.cts +1 -1
  384. package/dist/tools/python/python.d.ts +1 -1
  385. package/dist/tools/python/python.js.map +1 -1
  386. package/dist/tools/python/storage.cjs.map +1 -1
  387. package/dist/tools/python/storage.js.map +1 -1
  388. package/dist/tools/search/base.cjs.map +1 -1
  389. package/dist/tools/search/base.d.cts +1 -1
  390. package/dist/tools/search/base.d.ts +1 -1
  391. package/dist/tools/search/base.js.map +1 -1
  392. package/dist/tools/search/duckDuckGoSearch.cjs +19 -19
  393. package/dist/tools/search/duckDuckGoSearch.cjs.map +1 -1
  394. package/dist/tools/search/duckDuckGoSearch.d.cts +2 -4
  395. package/dist/tools/search/duckDuckGoSearch.d.ts +2 -4
  396. package/dist/tools/search/duckDuckGoSearch.js +17 -13
  397. package/dist/tools/search/duckDuckGoSearch.js.map +1 -1
  398. package/dist/tools/search/googleSearch.cjs.map +1 -1
  399. package/dist/tools/search/googleSearch.d.cts +1 -1
  400. package/dist/tools/search/googleSearch.d.ts +1 -1
  401. package/dist/tools/search/googleSearch.js.map +1 -1
  402. package/dist/tools/search/searXNGSearch.cjs.map +1 -1
  403. package/dist/tools/search/searXNGSearch.d.cts +1 -1
  404. package/dist/tools/search/searXNGSearch.d.ts +1 -1
  405. package/dist/tools/search/searXNGSearch.js.map +1 -1
  406. package/dist/tools/search/wikipedia.cjs.map +1 -1
  407. package/dist/tools/search/wikipedia.d.cts +1 -1
  408. package/dist/tools/search/wikipedia.d.ts +1 -1
  409. package/dist/tools/search/wikipedia.js.map +1 -1
  410. package/dist/tools/similarity.cjs.map +1 -1
  411. package/dist/tools/similarity.d.cts +2 -2
  412. package/dist/tools/similarity.d.ts +2 -2
  413. package/dist/tools/similarity.js.map +1 -1
  414. package/dist/tools/weather/openMeteo.cjs.map +1 -1
  415. package/dist/tools/weather/openMeteo.d.cts +2 -2
  416. package/dist/tools/weather/openMeteo.d.ts +2 -2
  417. package/dist/tools/weather/openMeteo.js.map +1 -1
  418. package/dist/tools/web/webCrawler.cjs.map +1 -1
  419. package/dist/tools/web/webCrawler.d.cts +2 -2
  420. package/dist/tools/web/webCrawler.d.ts +2 -2
  421. package/dist/tools/web/webCrawler.js.map +1 -1
  422. package/dist/version.cjs +1 -1
  423. package/dist/version.cjs.map +1 -1
  424. package/dist/version.js +1 -1
  425. package/dist/version.js.map +1 -1
  426. package/dist/workflows/agent.cjs.map +1 -1
  427. package/dist/workflows/agent.d.cts +10 -10
  428. package/dist/workflows/agent.d.ts +10 -10
  429. package/dist/workflows/agent.js.map +1 -1
  430. package/dist/workflows/workflow.cjs.map +1 -1
  431. package/dist/workflows/workflow.d.cts +1 -1
  432. package/dist/workflows/workflow.d.ts +1 -1
  433. package/dist/workflows/workflow.js.map +1 -1
  434. package/package.json +20 -20
  435. package/dist/{emitter-C9EN5B0j.d.cts → emitter-BWtGHYn0.d.cts} +1 -1
  436. package/dist/{emitter-BxVxGBbJ.d.ts → emitter-l0W9gC1A.d.ts} +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/serializer/serializer.ts"],"names":["Serializer","factories","Map","registerSerializable","ref","processors","aliases","register","toPlain","value","createSnapshot","fromPlain","fromSnapshot","createEmpty","Object","create","prototype","updateInstance","instance","update","loadSnapshot","R","pickBy","isDefined","deregister","className","extractClassName","delete","oldFactory","get","newFactory","SerializerError","key","entries","set","forEach","alias","aliasTarget","getFactory","clsName","factory","findFactory","targetClass","hasFactory","isFunction","Function","name","isSelfRef","excluded","Set","proto","traversePrototypeChain","has","serialize","rawData","output","_createOutputBuilder","getRefId","id","seen","SafeWeakMap","assertValidSnapshot","allowedTypes","snapshot","Array","from","values","join","toSerializable","rawValue","Serializable","Class","constructor","isSerializationRequired","SerializerSelfRefIdentifier","result","__serializer","__class","__ref","toString","__value","node","traverseWithUpdate","newValue","root","__version","Version","__root","traverseObject","path","content","toJSON","deserializeWithMeta","raw","extraClasses","instances","toDeserialize","contentRaw","isSerializerNode","String","SerializerRefIdentifier","data","RefPlaceholder","traverseNested","placeholder","final","JSON","parse","isRootNode","_obj","deserialize","response","_container","setProp","SafeWeakSet","stringify","updated","add","Task","task","resolvedValue","state","TaskState","RESOLVED","resolve","REJECTED","reject","SlidingTaskMap","config","windowSize","ttl","filter","_","newInstance","assign","slice","push","Number","Boolean","BigInt","Symbol","description","Date","toISOString","CacheFn","fn","options","isNative","getProp","global","isConstructor","obj","binds","getFunctionBinds","map","bound","toParsableForm","match","a","b","c","indexOf","p","p2","halveString","replace","trim","includes","arrowStart","bracketStart","fnPrefix","fnContent","nonReservedSymbols","split","x","every","parameters","startsWith","defineProperty","getOwnPropertyDescriptor","getPrototypeOf","hasMinLength","toBoundedFunction","Error","serializeError","deserializeError","RegExp","source","flags","WeakSet","WeakMap","WeakRef","primitiveToSerializableClass","undefined","ZodType","toJsonSchema","Buffer","AbortSignal","aborted","reason","controller","createAbortController","abort","signal","AbortController"],"mappings":"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","file":"serializer.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as R from \"remeda\";\nimport { Serializable, SerializableClass } from \"@/internals/serializable.js\";\nimport { AnyConstructable, ClassConstructor, NamedFunction } from \"@/internals/types.js\";\nimport { SafeWeakMap, SafeWeakSet } from \"@/internals/helpers/weakRef.js\";\nimport { deserializeError, serializeError } from \"serialize-error\";\nimport { Version } from \"@/version.js\";\nimport {\n extractClassName,\n getFunctionBinds,\n isRootNode,\n isSerializationRequired,\n isSerializerNode,\n primitiveToSerializableClass,\n RefPlaceholder,\n RootNode,\n SerializerNode,\n SerializerRefIdentifier,\n SerializerSelfRefIdentifier,\n toBoundedFunction,\n traverseObject,\n traverseWithUpdate,\n} from \"@/serializer/utils.js\";\nimport { SlidingTaskMap, Task, TaskState } from \"promise-based-task\";\nimport { getProp, setProp } from \"@/internals/helpers/object.js\";\nimport { halveString } from \"@/internals/helpers/string.js\";\nimport { traversePrototypeChain } from \"@/internals/helpers/prototype.js\";\nimport { CacheFn } from \"@/cache/decoratorCache.js\";\nimport { SerializerError } from \"@/serializer/error.js\";\nimport { ZodType } from \"zod\";\nimport { toJsonSchema } from \"@/internals/helpers/schema.js\";\nimport { createAbortController } from \"@/internals/helpers/cancellation.js\";\nimport { hasMinLength } from \"@/internals/helpers/array.js\";\n\nexport interface SerializeFactory<A = unknown, B = unknown> {\n ref: ClassConstructor<A> | NamedFunction<A>;\n createEmpty?: () => A;\n updateInstance?: (instance: A, update: A) => void | Promise<void>;\n toPlain: (value: A) => B | Promise<B>;\n fromPlain: (value: B, ref: ClassConstructor<A> | NamedFunction<A>) => A | Promise<A>;\n}\n\nexport class Serializer {\n private static factories = new Map<string, SerializeFactory<any, any>>();\n\n static registerSerializable<A>(\n ref: SerializableClass<A>,\n processors?: Partial<Omit<SerializeFactory<Serializable<A>, A>, \"ref\">>,\n aliases?: string[],\n ) {\n return Serializer.register(\n ref,\n {\n toPlain: (value) => value.createSnapshot(),\n fromPlain: (value) => ref.fromSnapshot(value),\n createEmpty: () => Object.create(ref.prototype),\n updateInstance: (instance, update) => instance.loadSnapshot(update),\n ...R.pickBy(processors ?? {}, R.isDefined),\n },\n aliases,\n );\n }\n\n static deregister(ref: ClassConstructor | NamedFunction) {\n const className = extractClassName(ref);\n Serializer.factories.delete(className);\n }\n\n static register<A, B = unknown>(\n ref: ClassConstructor<A> | NamedFunction<A>,\n processors: Omit<SerializeFactory<A, B>, \"ref\">,\n aliases?: string[],\n ): void {\n const className = extractClassName(ref);\n const oldFactory = Serializer.factories.get(className);\n const newFactory: SerializeFactory<A, B> = {\n ref,\n ...processors,\n };\n\n if (oldFactory) {\n if (oldFactory.ref !== ref) {\n throw new SerializerError(`Factory for class \"${className}\" already exists!`);\n }\n\n for (const [key, value] of Serializer.factories.entries()) {\n if (value === oldFactory) {\n Serializer.factories.set(key, newFactory);\n }\n }\n }\n Serializer.factories.set(className, newFactory);\n\n aliases?.forEach((alias) => {\n const aliasTarget = Serializer.factories.get(alias);\n if (!aliasTarget) {\n this.factories.set(alias, newFactory);\n } else if (aliasTarget !== newFactory) {\n throw new SerializerError(\n `Factory for class \"${className}\" already exists! Cannot add alias.`,\n );\n }\n });\n }\n\n static getFactory(clsName: string): SerializeFactory {\n const factory = Serializer.factories.get(clsName);\n if (!factory) {\n throw new SerializerError(`Class \"${clsName}\" was not found!`);\n }\n return factory;\n }\n\n static findFactory(value: unknown) {\n let targetClass = extractClassName(value);\n if (!Serializer.hasFactory(targetClass) && R.isFunction(value)) {\n targetClass = Function.name;\n }\n\n if (Serializer.hasFactory(targetClass)) {\n const factory = Serializer.getFactory(targetClass);\n return { targetClass, factory, isSelfRef: factory.ref === value };\n }\n\n const excluded = new Set([null, Object.prototype]);\n for (const proto of traversePrototypeChain(value, excluded)) {\n const targetClass = extractClassName(proto);\n\n const factory = this.factories.get(targetClass);\n if (factory) {\n return { targetClass, factory, isSelfRef: false };\n }\n }\n\n throw new SerializerError(`Class \"${targetClass}\" was not found!`);\n }\n\n static hasFactory(clsName: string) {\n return Serializer.factories.has(clsName);\n }\n\n static async serialize<T>(rawData: T): Promise<string> {\n const output = Serializer._createOutputBuilder();\n const getRefId = (() => {\n let id = 0;\n return () => {\n id += 1;\n return id;\n };\n })();\n\n const seen = new SafeWeakMap<SerializerNode>();\n\n const assertValidSnapshot = (() => {\n const allowedTypes = new Set([\n \"Number\",\n \"String\",\n \"Object\",\n \"Array\",\n \"Undefined\",\n \"Null\",\n \"Boolean\",\n ]);\n return (snapshot: unknown, factory: SerializeFactory) => {\n const className = extractClassName(snapshot);\n\n if (!allowedTypes.has(className)) {\n throw new SerializerError(\n `Cannot serialize '${className}' as a top level property. \"toPlain\" function in \"${extractClassName(factory.ref)}\" should return an ${Array.from(allowedTypes.values()).join(\",\")}.`,\n );\n }\n };\n })();\n\n const toSerializable = async (rawValue: unknown): Promise<SerializerNode | unknown> => {\n if (seen.has(rawValue)) {\n return seen.get(rawValue);\n }\n\n if (rawValue instanceof Serializable && !this.hasFactory(extractClassName(rawValue))) {\n const Class = rawValue.constructor as SerializableClass<T>;\n Serializer.registerSerializable(Class);\n }\n\n const { targetClass, factory, isSelfRef } = Serializer.findFactory(rawValue);\n if (!isSerializationRequired(factory.ref)) {\n return rawValue;\n }\n\n const snapshot = isSelfRef ? SerializerSelfRefIdentifier : await factory.toPlain(rawValue);\n assertValidSnapshot(snapshot, factory);\n\n const result: SerializerNode = {\n __serializer: true,\n __class: targetClass,\n __ref: getRefId().toString(),\n __value: snapshot,\n };\n seen.set(rawValue, result);\n\n for (const node of traverseWithUpdate(snapshot)) {\n const newValue = await toSerializable(node.value);\n if (newValue !== node.value) {\n node.update(newValue);\n }\n }\n return result;\n };\n\n const root: RootNode<T> = { __version: Version, __root: rawData };\n await traverseObject(root, async ({ value, path }) => {\n const content = await toSerializable(value);\n output.update(path, content);\n });\n return output.toJSON();\n }\n\n /** @internal */\n static async deserializeWithMeta<T = any>(\n raw: string,\n extraClasses?: SerializableClass<unknown>[],\n ): Promise<RootNode<T>> {\n extraClasses?.forEach((ref) => Serializer.registerSerializable(ref));\n\n const output = Serializer._createOutputBuilder<RootNode<T>>();\n const instances = new Map<string, unknown>();\n\n const toDeserialize = async (contentRaw: unknown) => {\n if (isSerializerNode(contentRaw)) {\n const clsName = String(contentRaw.__class);\n const factory = Serializer.getFactory(clsName);\n const rawData = contentRaw.__value;\n\n if (rawData === SerializerSelfRefIdentifier) {\n return factory.ref;\n }\n\n if (rawData === SerializerRefIdentifier) {\n if (!instances.has(contentRaw.__ref!)) {\n throw new SerializerError(`Missing reference \"${contentRaw.__ref}\"!`);\n }\n\n const data = instances.get(contentRaw.__ref!)!;\n if (data instanceof RefPlaceholder) {\n return data.value;\n }\n return data;\n }\n\n const traverseNested = async () => {\n for (const node of traverseWithUpdate(rawData)) {\n const newValue = await toDeserialize(node.value);\n if (newValue !== node.value) {\n node.update(newValue);\n }\n }\n };\n\n // Handle circular dependencies\n const placeholder = new RefPlaceholder<any>(contentRaw, factory);\n instances.set(contentRaw.__ref!, placeholder);\n await traverseNested();\n const final = await placeholder.final();\n instances.set(contentRaw.__ref!, final);\n return final;\n }\n return contentRaw;\n };\n\n const root = JSON.parse(raw);\n if (!isRootNode(root)) {\n throw new SerializerError(\"Provided data cannot be deserialized due to malformed format!\");\n }\n\n await traverseObject(\n root,\n async ({ value: contentRaw, path }) => {\n output.update(path, await toDeserialize(contentRaw));\n },\n (_obj) => isSerializerNode(_obj),\n );\n return output.get();\n }\n\n static async deserialize<T = any>(\n raw: string,\n extraClasses?: SerializableClass<unknown>[],\n ): Promise<T> {\n const response = await Serializer.deserializeWithMeta(raw, extraClasses);\n return response.__root;\n }\n\n protected static _createOutputBuilder<T>() {\n return {\n _container: {} as T,\n get() {\n return this._container;\n },\n update(path: readonly string[], value: any) {\n setProp(this._container, path, value);\n },\n toJSON() {\n const seen = new SafeWeakSet();\n\n return JSON.stringify(this._container, (key, value) => {\n if (seen.has(value) && isSerializerNode(value)) {\n const updated: SerializerNode = {\n ...value,\n __value: SerializerRefIdentifier,\n };\n return updated;\n }\n\n seen.add(value);\n return value;\n });\n },\n };\n }\n}\n\nSerializer.register(Task<any>, {\n toPlain: (task) => ({ value: task.resolvedValue(), state: task.state }),\n fromPlain: ({ state, value }) => {\n const task = new Task();\n if (state === TaskState.RESOLVED) {\n task.resolve(value);\n } else if (state === TaskState.REJECTED) {\n task.reject(value);\n } else {\n task.reject(new SerializerError(\"Task cannot be solved due to serialization.\"));\n }\n task.resolve(value);\n return task;\n },\n createEmpty: () => new Task(),\n updateInstance: async (instance, value) => {\n instance.resolve(value);\n },\n});\nSerializer.register(SlidingTaskMap, {\n toPlain: (value) => ({\n config: {\n windowSize: value.windowSize,\n ttl: value.ttl,\n },\n entries: Array.from(value.entries()).filter(([_, task]) => {\n if (task instanceof Task) {\n return task.state === TaskState.RESOLVED;\n }\n return true;\n }),\n }),\n fromPlain: ({ entries, config }) => {\n const instance = new SlidingTaskMap(config.windowSize, config.ttl);\n for (const [key, value] of entries) {\n instance.set(key, value);\n }\n return instance;\n },\n createEmpty: () => new SlidingTaskMap(1, 1000),\n updateInstance: (instance, newInstance) => {\n Object.assign(instance, { windowSize: newInstance.windowSize, ttl: newInstance.ttl });\n newInstance.forEach((value, key) => instance.set(key, value));\n },\n});\nSerializer.register(Map, {\n toPlain: (value) => Array.from(value.entries()),\n fromPlain: (value) => new Map(value),\n createEmpty: () => new Map(),\n updateInstance: (instance, update) => {\n update.forEach(([key, value]) => instance.set(key, value));\n },\n});\nSerializer.register(Set, {\n toPlain: (value) => Array.from(value.values()),\n fromPlain: (value) => new Set(value),\n createEmpty: () => new Set(),\n updateInstance: (instance, update) => {\n update.forEach((value) => instance.add(value));\n },\n});\nSerializer.register(Array, {\n toPlain: (value) => value.slice(),\n fromPlain: (value) => value.slice(),\n createEmpty: () => [],\n updateInstance: (value, update) => {\n value.push(...update);\n },\n});\nSerializer.register(Object, {\n toPlain: (value) => Object.assign({}, value),\n fromPlain: (value) => Object.assign({}, value),\n createEmpty: () => ({}),\n updateInstance: (value, update) => Object.assign(value, update),\n});\nSerializer.register(Number, {\n toPlain: (value) => Number(value).toString(),\n fromPlain: (value) => Number(value),\n});\nSerializer.register(String, {\n toPlain: (value) => String(value),\n fromPlain: (value) => String(value),\n});\nSerializer.register(Boolean, {\n toPlain: (value) => Boolean(value),\n fromPlain: (value) => Boolean(value),\n});\nSerializer.register(BigInt, {\n toPlain: (value) => String(value),\n fromPlain: (value) => BigInt(value),\n});\nSerializer.register(Symbol, {\n toPlain: (value) => value.description,\n fromPlain: (value) => Symbol(value),\n});\nSerializer.register(Date, {\n toPlain: (value) => value.toISOString(),\n fromPlain: (value) => new Date(value),\n});\nSerializer.register(CacheFn, {\n toPlain: (value) => value.createSnapshot(),\n fromPlain: (value) => CacheFn.create(value.fn, value.options),\n});\nSerializer.register(Function, {\n toPlain: (value) => {\n const isNative = getProp(global, [value.name]) === value;\n\n function isConstructor(obj: any): obj is AnyConstructable {\n return obj && !!obj.prototype && !!obj.prototype.constructor.name;\n }\n\n return {\n name: value.name,\n binds: getFunctionBinds(value).map((bound) => ({\n name: isConstructor(bound) ? Serializer.findFactory(bound).targetClass : bound.name,\n value: \"value\" in bound ? bound.value : null,\n })),\n fn: isNative ? \"\" : String(value),\n isNative,\n };\n },\n fromPlain: (value) => {\n if (value.isNative) {\n return getProp(global, [value.name])!;\n }\n\n const toParsableForm = (): string => {\n let fn = value.fn;\n\n if (fn.match(/^\\s*function.*?\\(/)) {\n return fn;\n }\n\n const [a, b, c] = [fn.indexOf(\"=>\"), fn.indexOf(\"(\"), fn.indexOf(\"{\")];\n if (a > -1) {\n if (b === -1 || b > a || (c === -1 && c > a)) {\n const [p, p2] = halveString(fn, \"=>\", false);\n fn = `(${p.replace(\"async\", \"\").replace(\"*\", \"\").trim()})=>${p2}`;\n fn = [p.includes(\"async\") && \"async \", p.includes(\"*\") && \"*\", fn]\n .filter(Boolean)\n .join(\" \");\n }\n }\n\n const arrowStart = fn.indexOf(\"=>\");\n const bracketStart = fn.indexOf(\"(\");\n\n const [fnPrefix, fnContent = \"\"] =\n bracketStart === -1 || bracketStart > arrowStart\n ? halveString(fn, \"{\", true)\n : halveString(fn, \"(\", true);\n\n const nonReservedSymbols = fnPrefix\n .trim()\n .split(\" \")\n .map((x) => x.trim())\n .filter(Boolean)\n .every((content) => [\"async\", \"*\"].includes(content));\n\n if (nonReservedSymbols) {\n return fn;\n }\n\n const name = value.name && fnPrefix.includes(value.name) ? value.name : \"\";\n let parameters = \"\";\n if (!fnContent.startsWith(\"(\")) {\n if (fnPrefix.includes(\"(\")) {\n parameters = (fnPrefix.match(/\\((.+)\\)/) ?? [null, \"\"])[1];\n } else {\n parameters = fnPrefix.replace(\"=>\", \"\").replace(\"async\", \"\").replace(\"*\", \"\");\n }\n }\n\n return [\n fnPrefix.includes(\"async\") && \"async \",\n \"function\",\n fnPrefix.includes(\"*\") && \"*\",\n name && ` ${name}`,\n parameters && `(${parameters})`,\n fnContent,\n ]\n .filter(Boolean)\n .join(\"\");\n };\n\n const binds = value?.binds ?? [];\n const fn = Function(\n ...binds.map((b) => b.name),\n `return ${toParsableForm()}`,\n )(...binds.map((b) => (b.value ? b.value : Serializer.getFactory(b.name)!.ref)));\n\n if (value.name) {\n Object.defineProperty(\n fn,\n \"name\",\n Object.assign({}, Object.getOwnPropertyDescriptor(Object.getPrototypeOf(fn), \"name\"), {\n value: value.name,\n }),\n );\n }\n Object.defineProperty(\n fn,\n \"toString\",\n Object.assign({}, Object.getOwnPropertyDescriptor(Object.getPrototypeOf(fn), \"name\"), {\n value: () => value.fn,\n }),\n );\n return hasMinLength(binds, 1) ? toBoundedFunction(fn, binds) : fn;\n },\n});\n\nSerializer.register(Error, {\n toPlain: (value) => serializeError(value),\n fromPlain: (value) => deserializeError(value),\n});\nSerializer.register(RegExp, {\n toPlain: (value) => ({ source: value.source, flags: value.flags }),\n fromPlain: (value) => new RegExp(value.source, value.flags),\n});\nSerializer.register(WeakSet, {\n toPlain: () => {},\n fromPlain: () => new WeakSet(),\n createEmpty: () => new WeakSet(),\n updateInstance: () => {},\n});\nSerializer.register(WeakMap, {\n toPlain: () => {},\n fromPlain: () => new WeakMap(),\n createEmpty: () => new WeakMap(),\n updateInstance: () => {},\n});\nSerializer.register(WeakRef, {\n toPlain: () => {},\n fromPlain: () => new WeakRef({}),\n});\nSerializer.register(primitiveToSerializableClass(undefined), {\n toPlain: () => undefined,\n fromPlain: () => undefined,\n});\nSerializer.register(primitiveToSerializableClass(null), {\n toPlain: () => null,\n fromPlain: () => null,\n});\n// @ts-expect-error\nSerializer.register(ZodType, {\n toPlain: (value) => toJsonSchema(value),\n fromPlain: () => {\n throw new Error(\"JSONSchema cannot be converted to zod!\");\n },\n});\nSerializer.register(Buffer, {\n toPlain: (value: Buffer) => value.toString(\"base64\"),\n fromPlain: (data) => Buffer.from(data, \"base64\"),\n});\nSerializer.register(AbortSignal, {\n toPlain: (value: AbortSignal) => ({\n aborted: value.aborted,\n reason: value.reason,\n }),\n fromPlain: (data) => {\n const controller = createAbortController();\n if (data.aborted) {\n controller.abort(data.reason);\n }\n return controller.signal;\n },\n});\nSerializer.register(AbortController, {\n toPlain: (value: AbortController) => ({\n signal: value.signal,\n }),\n fromPlain: (data) => createAbortController(data.signal),\n});\n"]}
1
+ {"version":3,"sources":["serializer.ts"],"names":["Serializer","factories","Map","registerSerializable","ref","processors","aliases","register","toPlain","value","createSnapshot","fromPlain","fromSnapshot","createEmpty","Object","create","prototype","updateInstance","instance","update","loadSnapshot","R","pickBy","isDefined","deregister","className","extractClassName","delete","oldFactory","get","newFactory","SerializerError","key","entries","set","forEach","alias","aliasTarget","getFactory","clsName","factory","findFactory","targetClass","hasFactory","isFunction","Function","name","isSelfRef","excluded","Set","proto","traversePrototypeChain","has","serialize","rawData","output","_createOutputBuilder","getRefId","id","seen","SafeWeakMap","assertValidSnapshot","allowedTypes","snapshot","Array","from","values","join","toSerializable","rawValue","Serializable","Class","constructor","isSerializationRequired","SerializerSelfRefIdentifier","result","__serializer","__class","__ref","toString","__value","node","traverseWithUpdate","newValue","root","__version","Version","__root","traverseObject","path","content","toJSON","deserializeWithMeta","raw","extraClasses","instances","toDeserialize","contentRaw","isSerializerNode","String","SerializerRefIdentifier","data","RefPlaceholder","traverseNested","placeholder","final","JSON","parse","isRootNode","_obj","deserialize","response","_container","setProp","SafeWeakSet","stringify","updated","add","Task","task","resolvedValue","state","TaskState","RESOLVED","resolve","REJECTED","reject","SlidingTaskMap","config","windowSize","ttl","filter","_","newInstance","assign","slice","push","Number","Boolean","BigInt","Symbol","description","Date","toISOString","CacheFn","fn","options","isNative","getProp","global","isConstructor","obj","binds","getFunctionBinds","map","bound","toParsableForm","match","a","b","c","indexOf","p","p2","halveString","replace","trim","includes","arrowStart","bracketStart","fnPrefix","fnContent","nonReservedSymbols","split","x","every","parameters","startsWith","defineProperty","getOwnPropertyDescriptor","getPrototypeOf","hasMinLength","toBoundedFunction","Error","serializeError","deserializeError","RegExp","source","flags","WeakSet","WeakMap","WeakRef","primitiveToSerializableClass","undefined","ZodType","toJsonSchema","Buffer","AbortSignal","aborted","reason","controller","createAbortController","abort","signal","AbortController"],"mappings":";;;;;;;;;;;;;;;;;;;AAyDO,MAAMA,UAAAA,CAAAA;EAzDb;;;EA0DE,OAAeC,SAAAA,uBAAgBC,GAAAA,EAAAA;EAE/B,OAAOC,oBAAAA,CACLC,GACAC,EAAAA,UAAAA,EACAC,OACA,EAAA;AACA,IAAON,OAAAA,UAAAA,CAAWO,SAChBH,GACA,EAAA;AACEI,MAAAA,OAAAA,kBAAUC,MAAAA,CAAAA,CAAAA,KAAAA,KAAUA,KAAMC,CAAAA,cAAAA,EAAjB,EAAA,SAAA,CAAA;AACTC,MAAAA,SAAAA,kBAAYF,MAAAA,CAAAA,CAAAA,KAAAA,KAAUL,GAAIQ,CAAAA,YAAAA,CAAaH,KAAAA,CAA5B,EAAA,WAAA,CAAA;AACXI,MAAAA,WAAAA,kBAAmBC,MAAAA,CAAAA,MAAAA,MAAAA,CAAOC,MAAOX,CAAAA,GAAAA,CAAIY,SAAS,CAAjC,EAAA,aAAA,CAAA;AACbC,MAAAA,cAAAA,0BAAiBC,QAAUC,EAAAA,MAAAA,KAAWD,QAASE,CAAAA,YAAAA,CAAaD,MAAAA,CAA5C,EAAA,gBAAA,CAAA;AAChB,MAAA,GAAGE,EAAEC,MAAOjB,CAAAA,UAAAA,IAAc,EAAC,EAAGgB,EAAEE,SAAS;AAC3C,KAAA,EACAjB,OAAAA,CAAAA;AAEJ;AAEA,EAAA,OAAOkB,WAAWpB,GAAuC,EAAA;AACvD,IAAMqB,MAAAA,SAAAA,GAAYC,iBAAiBtB,GAAAA,CAAAA;AACnCJ,IAAWC,UAAAA,CAAAA,SAAAA,CAAU0B,OAAOF,SAAAA,CAAAA;AAC9B;EAEA,OAAOlB,QAAAA,CACLH,GACAC,EAAAA,UAAAA,EACAC,OACM,EAAA;AACN,IAAMmB,MAAAA,SAAAA,GAAYC,iBAAiBtB,GAAAA,CAAAA;AACnC,IAAA,MAAMwB,UAAa5B,GAAAA,UAAAA,CAAWC,SAAU4B,CAAAA,GAAAA,CAAIJ,SAAAA,CAAAA;AAC5C,IAAA,MAAMK,UAAqC,GAAA;AACzC1B,MAAAA,GAAAA;MACA,GAAGC;AACL,KAAA;AAEA,IAAA,IAAIuB,UAAY,EAAA;AACd,MAAIA,IAAAA,UAAAA,CAAWxB,QAAQA,GAAK,EAAA;AAC1B,QAAA,MAAM,IAAI2B,eAAAA,CAAgB,CAAsBN,mBAAAA,EAAAA,SAAAA,CAA4B,iBAAA,CAAA,CAAA;AAC9E;AAEA,MAAA,KAAA,MAAW,CAACO,GAAKvB,EAAAA,KAAAA,KAAUT,UAAWC,CAAAA,SAAAA,CAAUgC,SAAW,EAAA;AACzD,QAAA,IAAIxB,UAAUmB,UAAY,EAAA;AACxB5B,UAAWC,UAAAA,CAAAA,SAAAA,CAAUiC,GAAIF,CAAAA,GAAAA,EAAKF,UAAAA,CAAAA;AAChC;AACF;AACF;AACA9B,IAAWC,UAAAA,CAAAA,SAAAA,CAAUiC,GAAIT,CAAAA,SAAAA,EAAWK,UAAAA,CAAAA;AAEpCxB,IAAS6B,OAAAA,EAAAA,OAAAA,CAAQ,CAACC,KAAAA,KAAAA;AAChB,MAAA,MAAMC,WAAcrC,GAAAA,UAAAA,CAAWC,SAAU4B,CAAAA,GAAAA,CAAIO,KAAAA,CAAAA;AAC7C,MAAA,IAAI,CAACC,WAAa,EAAA;AAChB,QAAKpC,IAAAA,CAAAA,SAAAA,CAAUiC,GAAIE,CAAAA,KAAAA,EAAON,UAAAA,CAAAA;AAC5B,OAAA,MAAA,IAAWO,gBAAgBP,UAAY,EAAA;AACrC,QAAA,MAAM,IAAIC,eAAAA,CACR,CAAsBN,mBAAAA,EAAAA,SAAAA,CAA8C,mCAAA,CAAA,CAAA;AAExE;KACF,CAAA;AACF;AAEA,EAAA,OAAOa,WAAWC,OAAmC,EAAA;AACnD,IAAA,MAAMC,OAAUxC,GAAAA,UAAAA,CAAWC,SAAU4B,CAAAA,GAAAA,CAAIU,OAAAA,CAAAA;AACzC,IAAA,IAAI,CAACC,OAAS,EAAA;AACZ,MAAA,MAAM,IAAIT,eAAAA,CAAgB,CAAUQ,OAAAA,EAAAA,OAAAA,CAAyB,gBAAA,CAAA,CAAA;AAC/D;AACA,IAAOC,OAAAA,OAAAA;AACT;AAEA,EAAA,OAAOC,YAAYhC,KAAgB,EAAA;AACjC,IAAIiC,IAAAA,WAAAA,GAAchB,iBAAiBjB,KAAAA,CAAAA;AACnC,IAAI,IAAA,CAACT,WAAW2C,UAAWD,CAAAA,WAAAA,KAAgBrB,CAAEuB,CAAAA,UAAAA,CAAWnC,KAAAA,CAAQ,EAAA;AAC9DiC,MAAAA,WAAAA,GAAcG,QAASC,CAAAA,IAAAA;AACzB;AAEA,IAAI9C,IAAAA,UAAAA,CAAW2C,UAAWD,CAAAA,WAAAA,CAAc,EAAA;AACtC,MAAMF,MAAAA,OAAAA,GAAUxC,UAAWsC,CAAAA,UAAAA,CAAWI,WAAAA,CAAAA;AACtC,MAAO,OAAA;AAAEA,QAAAA,WAAAA;AAAaF,QAAAA,OAAAA;AAASO,QAAAA,SAAAA,EAAWP,QAAQpC,GAAQK,KAAAA;AAAM,OAAA;AAClE;AAEA,IAAMuC,MAAAA,QAAAA,uBAAeC,GAAI,CAAA;AAAC,MAAA,IAAA;MAAMnC,MAAOE,CAAAA;AAAU,KAAA,CAAA;AACjD,IAAA,KAAA,MAAWkC,KAASC,IAAAA,sBAAAA,CAAuB1C,KAAOuC,EAAAA,QAAAA,CAAW,EAAA;AAC3D,MAAMN,MAAAA,YAAAA,GAAchB,iBAAiBwB,KAAAA,CAAAA;AAErC,MAAA,MAAMV,OAAU,GAAA,IAAA,CAAKvC,SAAU4B,CAAAA,GAAAA,CAAIa,YAAAA,CAAAA;AACnC,MAAA,IAAIF,OAAS,EAAA;AACX,QAAO,OAAA;UAAEE,WAAAA,EAAAA,YAAAA;AAAaF,UAAAA,OAAAA;UAASO,SAAW,EAAA;AAAM,SAAA;AAClD;AACF;AAEA,IAAA,MAAM,IAAIhB,eAAAA,CAAgB,CAAUW,OAAAA,EAAAA,WAAAA,CAA6B,gBAAA,CAAA,CAAA;AACnE;AAEA,EAAA,OAAOC,WAAWJ,OAAiB,EAAA;AACjC,IAAOvC,OAAAA,UAAAA,CAAWC,SAAUmD,CAAAA,GAAAA,CAAIb,OAAAA,CAAAA;AAClC;AAEA,EAAA,aAAac,UAAaC,OAA6B,EAAA;AACrD,IAAMC,MAAAA,MAAAA,GAASvD,WAAWwD,oBAAoB,EAAA;AAC9C,IAAA,MAAMC,2BAAY,CAAA,MAAA;AAChB,MAAA,IAAIC,EAAK,GAAA,CAAA;AACT,MAAA,OAAO,MAAA;AACLA,QAAM,EAAA,IAAA,CAAA;AACN,QAAOA,OAAAA,EAAAA;AACT,OAAA;KACF,GAAA;AAEA,IAAMC,MAAAA,IAAAA,GAAO,IAAIC,WAAAA,EAAAA;AAEjB,IAAA,MAAMC,sCAAuB,CAAA,MAAA;AAC3B,MAAMC,MAAAA,YAAAA,uBAAmBb,GAAI,CAAA;AAC3B,QAAA,QAAA;AACA,QAAA,QAAA;AACA,QAAA,QAAA;AACA,QAAA,OAAA;AACA,QAAA,WAAA;AACA,QAAA,MAAA;AACA,QAAA;AACD,OAAA,CAAA;AACD,MAAO,OAAA,CAACc,UAAmBvB,OAAAA,KAAAA;AACzB,QAAMf,MAAAA,SAAAA,GAAYC,iBAAiBqC,QAAAA,CAAAA;AAEnC,QAAA,IAAI,CAACD,YAAAA,CAAaV,GAAI3B,CAAAA,SAAAA,CAAY,EAAA;AAChC,UAAA,MAAM,IAAIM,eACR,CAAA,CAAA,kBAAA,EAAqBN,SAAAA,CAA8DC,kDAAAA,EAAAA,gBAAAA,CAAiBc,QAAQpC,GAAG,CAAA,sBAAuB4D,KAAMC,CAAAA,IAAAA,CAAKH,aAAaI,MAAM,EAAA,EAAIC,IAAK,CAAA,GAAA,CAAA,CAAO,CAAA,CAAA,CAAA;AAExL;AACF,OAAA;KACF,GAAA;AAEA,IAAMC,MAAAA,cAAAA,iCAAwBC,QAAAA,KAAAA;AAC5B,MAAIV,IAAAA,IAAAA,CAAKP,GAAIiB,CAAAA,QAAAA,CAAW,EAAA;AACtB,QAAOV,OAAAA,IAAAA,CAAK9B,IAAIwC,QAAAA,CAAAA;AAClB;AAEA,MAAIA,IAAAA,QAAAA,YAAoBC,gBAAgB,CAAC,IAAA,CAAK3B,WAAWjB,gBAAiB2C,CAAAA,QAAAA,CAAAA,CAAY,EAAA;AACpF,QAAA,MAAME,QAAQF,QAASG,CAAAA,WAAAA;AACvBxE,QAAAA,UAAAA,CAAWG,qBAAqBoE,KAAAA,CAAAA;AAClC;AAEA,MAAA,MAAM,EAAE7B,WAAaF,EAAAA,OAAAA,EAASO,WAAc/C,GAAAA,UAAAA,CAAWyC,YAAY4B,QAAAA,CAAAA;AACnE,MAAA,IAAI,CAACI,uBAAAA,CAAwBjC,OAAQpC,CAAAA,GAAG,CAAG,EAAA;AACzC,QAAOiE,OAAAA,QAAAA;AACT;AAEA,MAAA,MAAMN,WAAWhB,SAAY2B,GAAAA,2BAAAA,GAA8B,MAAMlC,OAAAA,CAAQhC,QAAQ6D,QAAAA,CAAAA;AACjFR,MAAAA,mBAAAA,CAAoBE,UAAUvB,OAAAA,CAAAA;AAE9B,MAAA,MAAMmC,MAAyB,GAAA;QAC7BC,YAAc,EAAA,IAAA;QACdC,OAASnC,EAAAA,WAAAA;QACToC,KAAOrB,EAAAA,QAAAA,GAAWsB,QAAQ,EAAA;QAC1BC,OAASjB,EAAAA;AACX,OAAA;AACAJ,MAAKzB,IAAAA,CAAAA,GAAAA,CAAImC,UAAUM,MAAAA,CAAAA;AAEnB,MAAWM,KAAAA,MAAAA,IAAAA,IAAQC,kBAAmBnB,CAAAA,QAAAA,CAAW,EAAA;AAC/C,QAAA,MAAMoB,QAAW,GAAA,MAAMf,cAAea,CAAAA,IAAAA,CAAKxE,KAAK,CAAA;AAChD,QAAI0E,IAAAA,QAAAA,KAAaF,KAAKxE,KAAO,EAAA;AAC3BwE,UAAAA,IAAAA,CAAK9D,OAAOgE,QAAAA,CAAAA;AACd;AACF;AACA,MAAOR,OAAAA,MAAAA;KAhCc,EAAA,gBAAA,CAAA;AAmCvB,IAAA,MAAMS,IAAoB,GAAA;MAAEC,SAAWC,EAAAA,OAAAA;MAASC,MAAQjC,EAAAA;AAAQ,KAAA;AAChE,IAAA,MAAMkC,eAAeJ,IAAM,EAAA,OAAO,EAAE3E,KAAAA,EAAOgF,MAAM,KAAA;AAC/C,MAAMC,MAAAA,OAAAA,GAAU,MAAMtB,cAAAA,CAAe3D,KAAAA,CAAAA;AACrC8C,MAAOpC,MAAAA,CAAAA,MAAAA,CAAOsE,MAAMC,OAAAA,CAAAA;KACtB,CAAA;AACA,IAAA,OAAOnC,OAAOoC,MAAM,EAAA;AACtB;;EAGA,aAAaC,mBAAAA,CACXC,KACAC,YACsB,EAAA;AACtBA,IAAAA,YAAAA,EAAc3D,QAAQ,CAAC/B,GAAAA,KAAQJ,UAAWG,CAAAA,oBAAAA,CAAqBC,GAAAA,CAAAA,CAAAA;AAE/D,IAAMmD,MAAAA,MAAAA,GAASvD,WAAWwD,oBAAoB,EAAA;AAC9C,IAAMuC,MAAAA,SAAAA,uBAAgB7F,GAAAA,EAAAA;AAEtB,IAAM8F,MAAAA,aAAAA,iCAAuBC,UAAAA,KAAAA;AAC3B,MAAIC,IAAAA,gBAAAA,CAAiBD,UAAAA,CAAa,EAAA;AAChC,QAAM1D,MAAAA,OAAAA,GAAU4D,MAAOF,CAAAA,UAAAA,CAAWpB,OAAO,CAAA;AACzC,QAAMrC,MAAAA,OAAAA,GAAUxC,UAAWsC,CAAAA,UAAAA,CAAWC,OAAAA,CAAAA;AACtC,QAAA,MAAMe,UAAU2C,UAAWjB,CAAAA,OAAAA;AAE3B,QAAA,IAAI1B,YAAYoB,2BAA6B,EAAA;AAC3C,UAAA,OAAOlC,OAAQpC,CAAAA,GAAAA;AACjB;AAEA,QAAA,IAAIkD,YAAY8C,uBAAyB,EAAA;AACvC,UAAA,IAAI,CAACL,SAAAA,CAAU3C,GAAI6C,CAAAA,UAAAA,CAAWnB,KAAK,CAAI,EAAA;AACrC,YAAA,MAAM,IAAI/C,eAAAA,CAAgB,CAAsBkE,mBAAAA,EAAAA,UAAAA,CAAWnB,KAAK,CAAI,EAAA,CAAA,CAAA;AACtE;AAEA,UAAA,MAAMuB,IAAON,GAAAA,SAAAA,CAAUlE,GAAIoE,CAAAA,UAAAA,CAAWnB,KAAK,CAAA;AAC3C,UAAA,IAAIuB,gBAAgBC,cAAgB,EAAA;AAClC,YAAA,OAAOD,IAAK5F,CAAAA,KAAAA;AACd;AACA,UAAO4F,OAAAA,IAAAA;AACT;AAEA,QAAA,MAAME,iCAAiB,MAAA,CAAA,YAAA;AACrB,UAAWtB,KAAAA,MAAAA,IAAAA,IAAQC,kBAAmB5B,CAAAA,OAAAA,CAAU,EAAA;AAC9C,YAAA,MAAM6B,QAAW,GAAA,MAAMa,aAAcf,CAAAA,IAAAA,CAAKxE,KAAK,CAAA;AAC/C,YAAI0E,IAAAA,QAAAA,KAAaF,KAAKxE,KAAO,EAAA;AAC3BwE,cAAAA,IAAAA,CAAK9D,OAAOgE,QAAAA,CAAAA;AACd;AACF;SANqB,EAAA,gBAAA,CAAA;AAUvB,QAAA,MAAMqB,WAAc,GAAA,IAAIF,cAAoBL,CAAAA,UAAAA,EAAYzD,OAAAA,CAAAA;AACxDuD,QAAU7D,SAAAA,CAAAA,GAAAA,CAAI+D,UAAWnB,CAAAA,KAAAA,EAAQ0B,WAAAA,CAAAA;AACjC,QAAA,MAAMD,cAAAA,EAAAA;AACN,QAAME,MAAAA,KAAAA,GAAQ,MAAMD,WAAAA,CAAYC,KAAK,EAAA;AACrCV,QAAU7D,SAAAA,CAAAA,GAAAA,CAAI+D,UAAWnB,CAAAA,KAAAA,EAAQ2B,KAAAA,CAAAA;AACjC,QAAOA,OAAAA,KAAAA;AACT;AACA,MAAOR,OAAAA,UAAAA;KAvCa,EAAA,eAAA,CAAA;AA0CtB,IAAMb,MAAAA,IAAAA,GAAOsB,IAAKC,CAAAA,KAAAA,CAAMd,GAAAA,CAAAA;AACxB,IAAI,IAAA,CAACe,UAAWxB,CAAAA,IAAAA,CAAO,EAAA;AACrB,MAAM,MAAA,IAAIrD,gBAAgB,+DAAA,CAAA;AAC5B;AAEA,IAAA,MAAMyD,eACJJ,IACA,EAAA,OAAO,EAAE3E,KAAOwF,EAAAA,UAAAA,EAAYR,MAAM,KAAA;AAChClC,MAAAA,MAAAA,CAAOpC,MAAOsE,CAAAA,IAAAA,EAAM,MAAMO,aAAAA,CAAcC,UAAAA,CAAAA,CAAAA;AAC1C,KAAA,EACA,CAACY,IAAAA,KAASX,gBAAiBW,CAAAA,IAAAA,CAAAA,CAAAA;AAE7B,IAAA,OAAOtD,OAAO1B,GAAG,EAAA;AACnB;EAEA,aAAaiF,WAAAA,CACXjB,KACAC,YACY,EAAA;AACZ,IAAA,MAAMiB,QAAW,GAAA,MAAM/G,UAAW4F,CAAAA,mBAAAA,CAAoBC,KAAKC,YAAAA,CAAAA;AAC3D,IAAA,OAAOiB,QAASxB,CAAAA,MAAAA;AAClB;AAEA,EAAA,OAAiB/B,oBAA0B,GAAA;AACzC,IAAO,OAAA;AACLwD,MAAAA,UAAAA,EAAY,EAAC;MACbnF,GAAAA,GAAAA;AACE,QAAA,OAAO,IAAKmF,CAAAA,UAAAA;AACd,OAAA;AACA7F,MAAAA,MAAAA,CAAOsE,MAAyBhF,KAAU,EAAA;AACxCwG,QAAQ,OAAA,CAAA,IAAA,CAAKD,UAAYvB,EAAAA,IAAAA,EAAMhF,KAAAA,CAAAA;AACjC,OAAA;MACAkF,MAAAA,GAAAA;AACE,QAAMhC,MAAAA,IAAAA,GAAO,IAAIuD,WAAAA,EAAAA;AAEjB,QAAA,OAAOR,KAAKS,SAAU,CAAA,IAAA,CAAKH,UAAY,EAAA,CAAChF,KAAKvB,KAAAA,KAAAA;AAC3C,UAAA,IAAIkD,KAAKP,GAAI3C,CAAAA,KAAAA,CAAUyF,IAAAA,gBAAAA,CAAiBzF,KAAAA,CAAQ,EAAA;AAC9C,YAAA,MAAM2G,OAA0B,GAAA;cAC9B,GAAG3G,KAAAA;cACHuE,OAASoB,EAAAA;AACX,aAAA;AACA,YAAOgB,OAAAA,OAAAA;AACT;AAEAzD,UAAAA,IAAAA,CAAK0D,IAAI5G,KAAAA,CAAAA;AACT,UAAOA,OAAAA,KAAAA;SACT,CAAA;AACF;AACF,KAAA;AACF;AACF;AAEAT,UAAAA,CAAWO,SAAS+G,IAAW,EAAA;AAC7B9G,EAAAA,OAAAA,0BAAU+G,IAAU,MAAA;AAAE9G,IAAAA,KAAAA,EAAO8G,KAAKC,aAAa,EAAA;AAAIC,IAAAA,KAAAA,EAAOF,IAAKE,CAAAA;GAAtD,CAAA,EAAA,SAAA,CAAA;AACT9G,EAAAA,SAAAA,kBAAY,MAAA,CAAA,CAAA,EAAE8G,KAAOhH,EAAAA,KAAAA,EAAO,KAAA;AAC1B,IAAM8G,MAAAA,IAAAA,GAAO,IAAID,IAAAA,EAAAA;AACjB,IAAIG,IAAAA,KAAAA,KAAUC,UAAUC,QAAU,EAAA;AAChCJ,MAAAA,IAAAA,CAAKK,QAAQnH,KAAAA,CAAAA;KACJgH,MAAAA,IAAAA,KAAAA,KAAUC,UAAUG,QAAU,EAAA;AACvCN,MAAAA,IAAAA,CAAKO,OAAOrH,KAAAA,CAAAA;KACP,MAAA;AACL8G,MAAAA,IAAAA,CAAKO,MAAO,CAAA,IAAI/F,eAAgB,CAAA,6CAAA,CAAA,CAAA;AAClC;AACAwF,IAAAA,IAAAA,CAAKK,QAAQnH,KAAAA,CAAAA;AACb,IAAO8G,OAAAA,IAAAA;GAVE,EAAA,WAAA,CAAA;EAYX1G,WAAa,kBAAA,MAAA,CAAA,MAAM,IAAIyG,IAAAA,EAAV,EAAA,aAAA,CAAA;EACbrG,cAAgB,kBAAA,MAAA,CAAA,OAAOC,UAAUT,KAAAA,KAAAA;AAC/BS,IAAAA,QAAAA,CAAS0G,QAAQnH,KAAAA,CAAAA;GADH,EAAA,gBAAA;AAGlB,CAAA,CAAA;AACAT,UAAAA,CAAWO,SAASwH,cAAgB,EAAA;AAClCvH,EAAAA,OAAAA,0BAAUC,KAAW,MAAA;IACnBuH,MAAQ,EAAA;AACNC,MAAAA,UAAAA,EAAYxH,KAAMwH,CAAAA,UAAAA;AAClBC,MAAAA,GAAAA,EAAKzH,KAAMyH,CAAAA;AACb,KAAA;IACAjG,OAAS+B,EAAAA,KAAAA,CAAMC,IAAKxD,CAAAA,KAAAA,CAAMwB,OAAO,EAAA,CAAIkG,CAAAA,MAAAA,CAAO,CAAC,CAACC,CAAGb,EAAAA,IAAAA,CAAK,KAAA;AACpD,MAAA,IAAIA,gBAAgBD,IAAM,EAAA;AACxB,QAAOC,OAAAA,IAAAA,CAAKE,UAAUC,SAAUC,CAAAA,QAAAA;AAClC;AACA,MAAO,OAAA,IAAA;KACT;GAVO,CAAA,EAAA,SAAA,CAAA;AAYThH,EAAAA,SAAAA,kBAAY,MAAA,CAAA,CAAA,EAAEsB,OAAS+F,EAAAA,MAAAA,EAAQ,KAAA;AAC7B,IAAA,MAAM9G,WAAW,IAAI6G,cAAAA,CAAeC,MAAOC,CAAAA,UAAAA,EAAYD,OAAOE,GAAG,CAAA;AACjE,IAAA,KAAA,MAAW,CAAClG,GAAAA,EAAKvB,KAAAA,CAAAA,IAAUwB,OAAS,EAAA;AAClCf,MAASgB,QAAAA,CAAAA,GAAAA,CAAIF,KAAKvB,KAAAA,CAAAA;AACpB;AACA,IAAOS,OAAAA,QAAAA;GALE,EAAA,WAAA,CAAA;AAOXL,EAAAA,WAAAA,kBAAmB,MAAA,CAAA,MAAA,IAAIkH,cAAe,CAAA,CAAA,EAAG,GAAA,CAA5B,EAAA,aAAA,CAAA;EACb9G,cAAgB,kBAAA,MAAA,CAAA,CAACC,UAAUmH,WAAAA,KAAAA;AACzBvH,IAAAA,MAAAA,CAAOwH,OAAOpH,QAAU,EAAA;AAAE+G,MAAAA,UAAAA,EAAYI,WAAYJ,CAAAA,UAAAA;AAAYC,MAAAA,GAAAA,EAAKG,WAAYH,CAAAA;KAAI,CAAA;AACnFG,IAAYlG,WAAAA,CAAAA,OAAAA,CAAQ,CAAC1B,KAAOuB,EAAAA,GAAAA,KAAQd,SAASgB,GAAIF,CAAAA,GAAAA,EAAKvB,KAAAA,CAAAA,CAAAA;GAFxC,EAAA,gBAAA;AAIlB,CAAA,CAAA;AACAT,UAAAA,CAAWO,SAASL,GAAK,EAAA;AACvBM,EAAAA,OAAAA,0BAAUC,KAAUuD,KAAAA,KAAAA,CAAMC,KAAKxD,KAAMwB,CAAAA,OAAAA,EAAO,CAAnC,EAAA,SAAA,CAAA;AACTtB,EAAAA,SAAAA,kBAAYF,MAAAA,CAAAA,CAAAA,KAAAA,KAAU,IAAIP,GAAAA,CAAIO,KAAAA,CAAnB,EAAA,WAAA,CAAA;EACXI,WAAa,kBAAA,MAAA,CAAA,sBAAUX,IAAAA,GAAAA,EAAV,EAAA,aAAA,CAAA;EACbe,cAAgB,kBAAA,MAAA,CAAA,CAACC,UAAUC,MAAAA,KAAAA;AACzBA,IAAOgB,MAAAA,CAAAA,OAAAA,CAAQ,CAAC,CAACH,GAAKvB,EAAAA,KAAAA,MAAWS,QAASgB,CAAAA,GAAAA,CAAIF,GAAKvB,EAAAA,KAAAA,CAAAA,CAAAA;GADrC,EAAA,gBAAA;AAGlB,CAAA,CAAA;AACAT,UAAAA,CAAWO,SAAS0C,GAAK,EAAA;AACvBzC,EAAAA,OAAAA,0BAAUC,KAAUuD,KAAAA,KAAAA,CAAMC,KAAKxD,KAAMyD,CAAAA,MAAAA,EAAM,CAAlC,EAAA,SAAA,CAAA;AACTvD,EAAAA,SAAAA,kBAAYF,MAAAA,CAAAA,CAAAA,KAAAA,KAAU,IAAIwC,GAAAA,CAAIxC,KAAAA,CAAnB,EAAA,WAAA,CAAA;EACXI,WAAa,kBAAA,MAAA,CAAA,sBAAUoC,IAAAA,GAAAA,EAAV,EAAA,aAAA,CAAA;EACbhC,cAAgB,kBAAA,MAAA,CAAA,CAACC,UAAUC,MAAAA,KAAAA;AACzBA,IAAAA,MAAAA,CAAOgB,QAAQ,CAAC1B,KAAAA,KAAUS,QAASmG,CAAAA,GAAAA,CAAI5G,KAAAA,CAAAA,CAAAA;GADzB,EAAA,gBAAA;AAGlB,CAAA,CAAA;AACAT,UAAAA,CAAWO,SAASyD,KAAO,EAAA;AACzBxD,EAAAA,OAAAA,kBAAUC,MAAAA,CAAAA,CAAAA,KAAAA,KAAUA,KAAM8H,CAAAA,KAAAA,EAAjB,EAAA,SAAA,CAAA;AACT5H,EAAAA,SAAAA,kBAAYF,MAAAA,CAAAA,CAAAA,KAAAA,KAAUA,KAAM8H,CAAAA,KAAAA,EAAjB,EAAA,WAAA,CAAA;EACX1H,WAAa,kBAAA,MAAA,CAAA,MAAM,EAAN,EAAA,aAAA,CAAA;EACbI,cAAgB,kBAAA,MAAA,CAAA,CAACR,OAAOU,MAAAA,KAAAA;AACtBV,IAAM+H,KAAAA,CAAAA,IAAAA,CAAI,GAAIrH,MAAAA,CAAAA;GADA,EAAA,gBAAA;AAGlB,CAAA,CAAA;AACAnB,UAAAA,CAAWO,SAASO,MAAQ,EAAA;AAC1BN,EAAAA,OAAAA,0BAAUC,KAAUK,KAAAA,MAAAA,CAAOwH,OAAO,EAAC,EAAG7H,KAAAA,CAA7B,EAAA,SAAA,CAAA;AACTE,EAAAA,SAAAA,0BAAYF,KAAUK,KAAAA,MAAAA,CAAOwH,OAAO,EAAC,EAAG7H,KAAAA,CAA7B,EAAA,WAAA,CAAA;EACXI,WAAa,kBAAA,MAAA,CAAA,OAAO,EAAP,CAAA,EAAA,aAAA,CAAA;AACbI,EAAAA,cAAAA,0BAAiBR,KAAOU,EAAAA,MAAAA,KAAWL,OAAOwH,MAAO7H,CAAAA,KAAAA,EAAOU,MAAAA,CAAxC,EAAA,gBAAA;AAClB,CAAA,CAAA;AACAnB,UAAAA,CAAWO,SAASkI,MAAQ,EAAA;AAC1BjI,EAAAA,OAAAA,0BAAUC,KAAUgI,KAAAA,MAAAA,CAAOhI,KAAAA,CAAAA,CAAOsE,UAAzB,EAAA,SAAA,CAAA;AACTpE,EAAAA,SAAAA,kBAAYF,MAAAA,CAAAA,CAAAA,KAAAA,KAAUgI,MAAOhI,CAAAA,KAAAA,CAAlB,EAAA,WAAA;AACb,CAAA,CAAA;AACAT,UAAAA,CAAWO,SAAS4F,MAAQ,EAAA;AAC1B3F,EAAAA,OAAAA,kBAAUC,MAAAA,CAAAA,CAAAA,KAAAA,KAAU0F,MAAO1F,CAAAA,KAAAA,CAAlB,EAAA,SAAA,CAAA;AACTE,EAAAA,SAAAA,kBAAYF,MAAAA,CAAAA,CAAAA,KAAAA,KAAU0F,MAAO1F,CAAAA,KAAAA,CAAlB,EAAA,WAAA;AACb,CAAA,CAAA;AACAT,UAAAA,CAAWO,SAASmI,OAAS,EAAA;AAC3BlI,EAAAA,OAAAA,kBAAUC,MAAAA,CAAAA,CAAAA,KAAAA,KAAUiI,OAAQjI,CAAAA,KAAAA,CAAnB,EAAA,SAAA,CAAA;AACTE,EAAAA,SAAAA,kBAAYF,MAAAA,CAAAA,CAAAA,KAAAA,KAAUiI,OAAQjI,CAAAA,KAAAA,CAAnB,EAAA,WAAA;AACb,CAAA,CAAA;AACAT,UAAAA,CAAWO,SAASoI,MAAQ,EAAA;AAC1BnI,EAAAA,OAAAA,kBAAUC,MAAAA,CAAAA,CAAAA,KAAAA,KAAU0F,MAAO1F,CAAAA,KAAAA,CAAlB,EAAA,SAAA,CAAA;AACTE,EAAAA,SAAAA,kBAAYF,MAAAA,CAAAA,CAAAA,KAAAA,KAAUkI,MAAOlI,CAAAA,KAAAA,CAAlB,EAAA,WAAA;AACb,CAAA,CAAA;AACAT,UAAAA,CAAWO,SAASqI,MAAQ,EAAA;EAC1BpI,OAAS,kBAAA,MAAA,CAAA,CAACC,KAAUA,KAAAA,KAAAA,CAAMoI,WAAjB,EAAA,SAAA,CAAA;AACTlI,EAAAA,SAAAA,kBAAYF,MAAAA,CAAAA,CAAAA,KAAAA,KAAUmI,MAAOnI,CAAAA,KAAAA,CAAlB,EAAA,WAAA;AACb,CAAA,CAAA;AACAT,UAAAA,CAAWO,SAASuI,IAAM,EAAA;AACxBtI,EAAAA,OAAAA,kBAAUC,MAAAA,CAAAA,CAAAA,KAAAA,KAAUA,KAAMsI,CAAAA,WAAAA,EAAjB,EAAA,SAAA,CAAA;AACTpI,EAAAA,SAAAA,kBAAYF,MAAAA,CAAAA,CAAAA,KAAAA,KAAU,IAAIqI,IAAAA,CAAKrI,KAAAA,CAApB,EAAA,WAAA;AACb,CAAA,CAAA;AACAT,UAAAA,CAAWO,SAASyI,OAAS,EAAA;AAC3BxI,EAAAA,OAAAA,kBAAUC,MAAAA,CAAAA,CAAAA,KAAAA,KAAUA,KAAMC,CAAAA,cAAAA,EAAjB,EAAA,SAAA,CAAA;EACTC,SAAW,kBAAA,MAAA,CAAA,CAACF,UAAUuI,OAAQjI,CAAAA,MAAAA,CAAON,MAAMwI,EAAIxI,EAAAA,KAAAA,CAAMyI,OAAO,CAAjD,EAAA,WAAA;AACb,CAAA,CAAA;AACAlJ,UAAAA,CAAWO,SAASsC,QAAU,EAAA;AAC5BrC,EAAAA,OAAAA,0BAAUC,KAAAA,KAAAA;AACR,IAAM0I,MAAAA,QAAAA,GAAWC,QAAQC,MAAQ,EAAA;MAAC5I,KAAMqC,CAAAA;KAAK,CAAMrC,KAAAA,KAAAA;AAEnD,IAAA,SAAS6I,cAAcC,GAAQ,EAAA;AAC7B,MAAOA,OAAAA,GAAAA,IAAO,CAAC,CAACA,GAAAA,CAAIvI,aAAa,CAAC,CAACuI,GAAIvI,CAAAA,SAAAA,CAAUwD,WAAY1B,CAAAA,IAAAA;AAC/D;AAFSwG,IAAAA,MAAAA,CAAAA,aAAAA,EAAAA,eAAAA,CAAAA;AAIT,IAAO,OAAA;AACLxG,MAAAA,IAAAA,EAAMrC,KAAMqC,CAAAA,IAAAA;AACZ0G,MAAAA,KAAAA,EAAOC,gBAAiBhJ,CAAAA,KAAAA,CAAOiJ,CAAAA,GAAAA,CAAI,CAACC,KAAW,MAAA;QAC7C7G,IAAMwG,EAAAA,aAAAA,CAAcK,KAAAA,CAAS3J,GAAAA,UAAAA,CAAWyC,YAAYkH,KAAAA,CAAAA,CAAOjH,cAAciH,KAAM7G,CAAAA,IAAAA;QAC/ErC,KAAO,EAAA,OAAA,IAAWkJ,KAAQA,GAAAA,KAAAA,CAAMlJ,KAAQ,GAAA;OAC1C,CAAA,CAAA;MACAwI,EAAIE,EAAAA,QAAAA,GAAW,EAAKhD,GAAAA,MAAAA,CAAO1F,KAAAA,CAAAA;AAC3B0I,MAAAA;AACF,KAAA;GAfO,EAAA,SAAA,CAAA;AAiBTxI,EAAAA,SAAAA,0BAAYF,KAAAA,KAAAA;AACV,IAAA,IAAIA,MAAM0I,QAAU,EAAA;AAClB,MAAA,OAAOC,QAAQC,MAAQ,EAAA;QAAC5I,KAAMqC,CAAAA;AAAK,OAAA,CAAA;AACrC;AAEA,IAAA,MAAM8G,iCAAiB,MAAA,CAAA,MAAA;AACrB,MAAA,IAAIX,MAAKxI,KAAMwI,CAAAA,EAAAA;AAEf,MAAIA,IAAAA,GAAAA,CAAGY,KAAM,CAAA,mBAAA,CAAsB,EAAA;AACjC,QAAOZ,OAAAA,GAAAA;AACT;AAEA,MAAA,MAAM,CAACa,CAAAA,EAAGC,CAAGC,EAAAA,CAAAA,CAAK,GAAA;AAACf,QAAAA,GAAAA,CAAGgB,QAAQ,IAAA,CAAA;AAAOhB,QAAAA,GAAAA,CAAGgB,QAAQ,GAAA,CAAA;AAAMhB,QAAAA,GAAAA,CAAGgB,QAAQ,GAAA;;AACjE,MAAA,IAAIH,IAAI,EAAI,EAAA;AACV,QAAA,IAAIC,MAAM,EAAMA,IAAAA,CAAAA,GAAID,KAAME,CAAM,KAAA,EAAA,IAAMA,IAAIF,CAAI,EAAA;AAC5C,UAAA,MAAM,CAACI,CAAGC,EAAAA,EAAAA,IAAMC,WAAYnB,CAAAA,GAAAA,EAAI,MAAM,KAAA,CAAA;AACtCA,UAAAA,GAAK,GAAA,CAAA,CAAA,EAAIiB,CAAEG,CAAAA,OAAAA,CAAQ,SAAS,EAAA,CAAA,CAAIA,OAAQ,CAAA,GAAA,EAAK,EAAA,CAAA,CAAIC,IAAI,EAAA,MAAQH,EAAAA,CAAAA,CAAAA;AAC7DlB,UAAAA,GAAK,GAAA;YAACiB,CAAEK,CAAAA,QAAAA,CAAS,OAAA,CAAY,IAAA,QAAA;YAAUL,CAAEK,CAAAA,QAAAA,CAAS,GAAA,CAAQ,IAAA,GAAA;AAAKtB,YAAAA;YAC5Dd,MAAOO,CAAAA,OAAAA,CACPvE,CAAAA,IAAAA,CAAK,GAAA,CAAA;AACV;AACF;AAEA,MAAMqG,MAAAA,UAAAA,GAAavB,GAAGgB,CAAAA,OAAAA,CAAQ,IAAA,CAAA;AAC9B,MAAMQ,MAAAA,YAAAA,GAAexB,GAAGgB,CAAAA,OAAAA,CAAQ,GAAA,CAAA;AAEhC,MAAA,MAAM,CAACS,QAAUC,EAAAA,SAAAA,GAAY,EAAE,CAAA,GAC7BF,iBAAiB,EAAMA,IAAAA,YAAAA,GAAeD,UAClCJ,GAAAA,WAAAA,CAAYnB,KAAI,GAAK,EAAA,IAAA,IACrBmB,WAAYnB,CAAAA,GAAAA,EAAI,KAAK,IAAA,CAAA;AAE3B,MAAA,MAAM2B,qBAAqBF,QACxBJ,CAAAA,IAAAA,GACAO,KAAM,CAAA,GAAA,EACNnB,GAAI,CAAA,CAACoB,MAAMA,CAAER,CAAAA,IAAAA,EAAI,CACjBnC,CAAAA,MAAAA,CAAOO,OAAAA,CACPqC,CAAAA,KAAAA,CAAM,CAACrF,OAAY,KAAA;AAAC,QAAA,OAAA;AAAS,QAAA;AAAK6E,OAAAA,CAAAA,QAAAA,CAAS7E,OAAAA,CAAAA,CAAAA;AAE9C,MAAA,IAAIkF,kBAAoB,EAAA;AACtB,QAAO3B,OAAAA,GAAAA;AACT;AAEA,MAAMnG,MAAAA,IAAAA,GAAOrC,MAAMqC,IAAQ4H,IAAAA,QAAAA,CAASH,SAAS9J,KAAMqC,CAAAA,IAAI,CAAIrC,GAAAA,KAAAA,CAAMqC,IAAO,GAAA,EAAA;AACxE,MAAA,IAAIkI,UAAa,GAAA,EAAA;AACjB,MAAA,IAAI,CAACL,SAAAA,CAAUM,UAAW,CAAA,GAAA,CAAM,EAAA;AAC9B,QAAIP,IAAAA,QAAAA,CAASH,QAAS,CAAA,GAAA,CAAM,EAAA;AAC1BS,UAAcN,UAAAA,GAAAA,CAAAA,QAAAA,CAASb,KAAM,CAAA,UAAA,CAAe,IAAA;AAAC,YAAA,IAAA;AAAM,YAAA;aAAK,CAAA,CAAA;SACnD,MAAA;AACLmB,UAAaN,UAAAA,GAAAA,QAAAA,CAASL,OAAQ,CAAA,IAAA,EAAM,EAAA,CAAA,CAAIA,OAAQ,CAAA,OAAA,EAAS,EAAA,CAAA,CAAIA,OAAQ,CAAA,GAAA,EAAK,EAAA,CAAA;AAC5E;AACF;AAEA,MAAO,OAAA;QACLK,QAASH,CAAAA,QAAAA,CAAS,OAAA,CAAY,IAAA,QAAA;AAC9B,QAAA,UAAA;QACAG,QAASH,CAAAA,QAAAA,CAAS,GAAA,CAAQ,IAAA,GAAA;AAC1BzH,QAAAA,IAAAA,IAAQ,IAAIA,IAAAA,CAAAA,CAAAA;AACZkI,QAAAA,UAAAA,IAAc,IAAIA,UAAAA,CAAAA,CAAAA,CAAAA;AAClBL,QAAAA;QAECxC,MAAOO,CAAAA,OAAAA,CACPvE,CAAAA,IAAAA,CAAK,EAAA,CAAA;KAxDa,EAAA,gBAAA,CAAA;AA2DvB,IAAMqF,MAAAA,KAAAA,GAAQ/I,KAAO+I,EAAAA,KAAAA,IAAS,EAAA;AAC9B,IAAA,MAAMP,EAAKpG,GAAAA,QAAAA,CAAAA,GACN2G,KAAAA,CAAME,GAAI,CAAA,CAACK,CAAMA,KAAAA,CAAAA,CAAEjH,IAAI,CAAA,EAC1B,CAAU8G,OAAAA,EAAAA,cAAAA,EAAAA,CAAkB,CAAA,CAAA,CAAA,GACzBJ,KAAAA,CAAME,GAAI,CAAA,CAACK,CAAOA,KAAAA,CAAAA,CAAEtJ,KAAQsJ,GAAAA,CAAAA,CAAEtJ,KAAQT,GAAAA,UAAAA,CAAWsC,UAAWyH,CAAAA,CAAAA,CAAEjH,IAAI,CAAA,CAAG1C,GAAG,CAAA,CAAA;AAE7E,IAAA,IAAIK,MAAMqC,IAAM,EAAA;AACdhC,MAAAA,MAAAA,CAAOoK,cACLjC,CAAAA,EAAAA,EACA,MACAnI,EAAAA,MAAAA,CAAOwH,OAAO,EAAC,EAAGxH,MAAOqK,CAAAA,wBAAAA,CAAyBrK,MAAOsK,CAAAA,cAAAA,CAAenC,EAAAA,CAAAA,EAAK,MAAA,CAAS,EAAA;AACpFxI,QAAAA,KAAAA,EAAOA,KAAMqC,CAAAA;AACf,OAAA,CAAA,CAAA;AAEJ;AACAhC,IAAAA,MAAAA,CAAOoK,cACLjC,CAAAA,EAAAA,EACA,UACAnI,EAAAA,MAAAA,CAAOwH,OAAO,EAAC,EAAGxH,MAAOqK,CAAAA,wBAAAA,CAAyBrK,MAAOsK,CAAAA,cAAAA,CAAenC,EAAAA,CAAAA,EAAK,MAAA,CAAS,EAAA;MACpFxI,KAAO,kBAAA,MAAA,CAAA,MAAMA,MAAMwI,EAAZ,EAAA,OAAA;AACT,KAAA,CAAA,CAAA;AAEF,IAAA,OAAOoC,aAAa7B,KAAO,EAAA,CAAA,IAAK8B,iBAAkBrC,CAAAA,EAAAA,EAAIO,KAAAA,CAASP,GAAAA,EAAAA;GAtFtD,EAAA,WAAA;AAwFb,CAAA,CAAA;AAEAjJ,UAAAA,CAAWO,SAASgL,KAAO,EAAA;AACzB/K,EAAAA,OAAAA,kBAAUC,MAAAA,CAAAA,CAAAA,KAAAA,KAAU+K,cAAe/K,CAAAA,KAAAA,CAA1B,EAAA,SAAA,CAAA;AACTE,EAAAA,SAAAA,kBAAYF,MAAAA,CAAAA,CAAAA,KAAAA,KAAUgL,gBAAiBhL,CAAAA,KAAAA,CAA5B,EAAA,WAAA;AACb,CAAA,CAAA;AACAT,UAAAA,CAAWO,SAASmL,MAAQ,EAAA;AAC1BlL,EAAAA,OAAAA,0BAAUC,KAAW,MAAA;AAAEkL,IAAAA,MAAAA,EAAQlL,KAAMkL,CAAAA,MAAAA;AAAQC,IAAAA,KAAAA,EAAOnL,KAAMmL,CAAAA;GAAjD,CAAA,EAAA,SAAA,CAAA;EACTjL,SAAW,kBAAA,MAAA,CAAA,CAACF,UAAU,IAAIiL,MAAAA,CAAOjL,MAAMkL,MAAQlL,EAAAA,KAAAA,CAAMmL,KAAK,CAA/C,EAAA,WAAA;AACb,CAAA,CAAA;AACA5L,UAAAA,CAAWO,SAASsL,OAAS,EAAA;AAC3BrL,EAAAA,OAAAA,kBAAS,MAAA,CAAA,MAAA;GAAA,EAAA,SAAA,CAAA;EACTG,SAAW,kBAAA,MAAA,CAAA,sBAAUkL,IAAAA,OAAAA,EAAV,EAAA,WAAA,CAAA;EACXhL,WAAa,kBAAA,MAAA,CAAA,sBAAUgL,IAAAA,OAAAA,EAAV,EAAA,aAAA,CAAA;AACb5K,EAAAA,cAAAA,kBAAgB,MAAA,CAAA,MAAA;GAAA,EAAA,gBAAA;AAClB,CAAA,CAAA;AACAjB,UAAAA,CAAWO,SAASuL,OAAS,EAAA;AAC3BtL,EAAAA,OAAAA,kBAAS,MAAA,CAAA,MAAA;GAAA,EAAA,SAAA,CAAA;EACTG,SAAW,kBAAA,MAAA,CAAA,sBAAUmL,IAAAA,OAAAA,EAAV,EAAA,WAAA,CAAA;EACXjL,WAAa,kBAAA,MAAA,CAAA,sBAAUiL,IAAAA,OAAAA,EAAV,EAAA,aAAA,CAAA;AACb7K,EAAAA,cAAAA,kBAAgB,MAAA,CAAA,MAAA;GAAA,EAAA,gBAAA;AAClB,CAAA,CAAA;AACAjB,UAAAA,CAAWO,SAASwL,OAAS,EAAA;AAC3BvL,EAAAA,OAAAA,kBAAS,MAAA,CAAA,MAAA;GAAA,EAAA,SAAA,CAAA;AACTG,EAAAA,SAAAA,kBAAiB,MAAA,CAAA,MAAA,IAAIoL,OAAQ,CAAA,EAAC,CAAnB,EAAA,WAAA;AACb,CAAA,CAAA;AACA/L,UAAWO,CAAAA,QAAAA,CAASyL,4BAA6BC,CAAAA,MAAAA,CAAY,EAAA;AAC3DzL,EAAAA,OAAAA,+BAAeyL,MAAN,EAAA,SAAA,CAAA;AACTtL,EAAAA,SAAAA,+BAAiBsL,MAAN,EAAA,WAAA;AACb,CAAA,CAAA;AACAjM,UAAWO,CAAAA,QAAAA,CAASyL,4BAA6B,CAAA,IAAA,CAAO,EAAA;AACtDxL,EAAAA,OAAAA,+BAAe,IAAN,EAAA,SAAA,CAAA;AACTG,EAAAA,SAAAA,+BAAiB,IAAN,EAAA,WAAA;AACb,CAAA,CAAA;AAEAX,UAAAA,CAAWO,SAAS2L,OAAS,EAAA;AAC3B1L,EAAAA,OAAAA,kBAAUC,MAAAA,CAAAA,CAAAA,KAAAA,KAAU0L,YAAa1L,CAAAA,KAAAA,CAAxB,EAAA,SAAA,CAAA;AACTE,EAAAA,SAAAA,kBAAW,MAAA,CAAA,MAAA;AACT,IAAM,MAAA,IAAI4K,MAAM,wCAAA,CAAA;GADP,EAAA,WAAA;AAGb,CAAA,CAAA;AACAvL,UAAAA,CAAWO,SAAS6L,MAAQ,EAAA;AAC1B5L,EAAAA,OAAAA,kBAAUC,MAAAA,CAAAA,CAAAA,KAAAA,KAAkBA,KAAMsE,CAAAA,QAAAA,CAAS,QAAA,CAAlC,EAAA,SAAA,CAAA;AACTpE,EAAAA,SAAAA,0BAAY0F,IAAS+F,KAAAA,MAAAA,CAAOnI,IAAKoC,CAAAA,IAAAA,EAAM,QAAA,CAA5B,EAAA,WAAA;AACb,CAAA,CAAA;AACArG,UAAAA,CAAWO,SAAS8L,WAAa,EAAA;AAC/B7L,EAAAA,OAAAA,0BAAUC,KAAwB,MAAA;AAChC6L,IAAAA,OAAAA,EAAS7L,KAAM6L,CAAAA,OAAAA;AACfC,IAAAA,MAAAA,EAAQ9L,KAAM8L,CAAAA;GAFP,CAAA,EAAA,SAAA,CAAA;AAIT5L,EAAAA,SAAAA,0BAAY0F,IAAAA,KAAAA;AACV,IAAA,MAAMmG,aAAaC,qBAAAA,EAAAA;AACnB,IAAA,IAAIpG,KAAKiG,OAAS,EAAA;AAChBE,MAAWE,UAAAA,CAAAA,KAAAA,CAAMrG,KAAKkG,MAAM,CAAA;AAC9B;AACA,IAAA,OAAOC,UAAWG,CAAAA,MAAAA;GALT,EAAA,WAAA;AAOb,CAAA,CAAA;AACA3M,UAAAA,CAAWO,SAASqM,eAAiB,EAAA;AACnCpM,EAAAA,OAAAA,0BAAUC,KAA4B,MAAA;AACpCkM,IAAAA,MAAAA,EAAQlM,KAAMkM,CAAAA;GADP,CAAA,EAAA,SAAA,CAAA;AAGThM,EAAAA,SAAAA,kBAAY0F,MAAAA,CAAAA,CAAAA,IAAAA,KAASoG,qBAAsBpG,CAAAA,IAAAA,CAAKsG,MAAM,CAA3C,EAAA,WAAA;AACb,CAAA,CAAA","file":"serializer.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as R from \"remeda\";\nimport { Serializable, SerializableClass } from \"@/internals/serializable.js\";\nimport { AnyConstructable, ClassConstructor, NamedFunction } from \"@/internals/types.js\";\nimport { SafeWeakMap, SafeWeakSet } from \"@/internals/helpers/weakRef.js\";\nimport { deserializeError, serializeError } from \"serialize-error-cjs\";\nimport { Version } from \"@/version.js\";\nimport {\n extractClassName,\n getFunctionBinds,\n isRootNode,\n isSerializationRequired,\n isSerializerNode,\n primitiveToSerializableClass,\n RefPlaceholder,\n RootNode,\n SerializerNode,\n SerializerRefIdentifier,\n SerializerSelfRefIdentifier,\n toBoundedFunction,\n traverseObject,\n traverseWithUpdate,\n} from \"@/serializer/utils.js\";\nimport { SlidingTaskMap, Task, TaskState } from \"promise-based-task\";\nimport { getProp, setProp } from \"@/internals/helpers/object.js\";\nimport { halveString } from \"@/internals/helpers/string.js\";\nimport { traversePrototypeChain } from \"@/internals/helpers/prototype.js\";\nimport { CacheFn } from \"@/cache/decoratorCache.js\";\nimport { SerializerError } from \"@/serializer/error.js\";\nimport { ZodType } from \"zod\";\nimport { toJsonSchema } from \"@/internals/helpers/schema.js\";\nimport { createAbortController } from \"@/internals/helpers/cancellation.js\";\nimport { hasMinLength } from \"@/internals/helpers/array.js\";\n\nexport interface SerializeFactory<A = unknown, B = unknown> {\n ref: ClassConstructor<A> | NamedFunction<A>;\n createEmpty?: () => A;\n updateInstance?: (instance: A, update: A) => void | Promise<void>;\n toPlain: (value: A) => B | Promise<B>;\n fromPlain: (value: B, ref: ClassConstructor<A> | NamedFunction<A>) => A | Promise<A>;\n}\n\nexport class Serializer {\n private static factories = new Map<string, SerializeFactory<any, any>>();\n\n static registerSerializable<A>(\n ref: SerializableClass<A>,\n processors?: Partial<Omit<SerializeFactory<Serializable<A>, A>, \"ref\">>,\n aliases?: string[],\n ) {\n return Serializer.register(\n ref,\n {\n toPlain: (value) => value.createSnapshot(),\n fromPlain: (value) => ref.fromSnapshot(value),\n createEmpty: () => Object.create(ref.prototype),\n updateInstance: (instance, update) => instance.loadSnapshot(update),\n ...R.pickBy(processors ?? {}, R.isDefined),\n },\n aliases,\n );\n }\n\n static deregister(ref: ClassConstructor | NamedFunction) {\n const className = extractClassName(ref);\n Serializer.factories.delete(className);\n }\n\n static register<A, B = unknown>(\n ref: ClassConstructor<A> | NamedFunction<A>,\n processors: Omit<SerializeFactory<A, B>, \"ref\">,\n aliases?: string[],\n ): void {\n const className = extractClassName(ref);\n const oldFactory = Serializer.factories.get(className);\n const newFactory: SerializeFactory<A, B> = {\n ref,\n ...processors,\n };\n\n if (oldFactory) {\n if (oldFactory.ref !== ref) {\n throw new SerializerError(`Factory for class \"${className}\" already exists!`);\n }\n\n for (const [key, value] of Serializer.factories.entries()) {\n if (value === oldFactory) {\n Serializer.factories.set(key, newFactory);\n }\n }\n }\n Serializer.factories.set(className, newFactory);\n\n aliases?.forEach((alias) => {\n const aliasTarget = Serializer.factories.get(alias);\n if (!aliasTarget) {\n this.factories.set(alias, newFactory);\n } else if (aliasTarget !== newFactory) {\n throw new SerializerError(\n `Factory for class \"${className}\" already exists! Cannot add alias.`,\n );\n }\n });\n }\n\n static getFactory(clsName: string): SerializeFactory {\n const factory = Serializer.factories.get(clsName);\n if (!factory) {\n throw new SerializerError(`Class \"${clsName}\" was not found!`);\n }\n return factory;\n }\n\n static findFactory(value: unknown) {\n let targetClass = extractClassName(value);\n if (!Serializer.hasFactory(targetClass) && R.isFunction(value)) {\n targetClass = Function.name;\n }\n\n if (Serializer.hasFactory(targetClass)) {\n const factory = Serializer.getFactory(targetClass);\n return { targetClass, factory, isSelfRef: factory.ref === value };\n }\n\n const excluded = new Set([null, Object.prototype]);\n for (const proto of traversePrototypeChain(value, excluded)) {\n const targetClass = extractClassName(proto);\n\n const factory = this.factories.get(targetClass);\n if (factory) {\n return { targetClass, factory, isSelfRef: false };\n }\n }\n\n throw new SerializerError(`Class \"${targetClass}\" was not found!`);\n }\n\n static hasFactory(clsName: string) {\n return Serializer.factories.has(clsName);\n }\n\n static async serialize<T>(rawData: T): Promise<string> {\n const output = Serializer._createOutputBuilder();\n const getRefId = (() => {\n let id = 0;\n return () => {\n id += 1;\n return id;\n };\n })();\n\n const seen = new SafeWeakMap<SerializerNode>();\n\n const assertValidSnapshot = (() => {\n const allowedTypes = new Set([\n \"Number\",\n \"String\",\n \"Object\",\n \"Array\",\n \"Undefined\",\n \"Null\",\n \"Boolean\",\n ]);\n return (snapshot: unknown, factory: SerializeFactory) => {\n const className = extractClassName(snapshot);\n\n if (!allowedTypes.has(className)) {\n throw new SerializerError(\n `Cannot serialize '${className}' as a top level property. \"toPlain\" function in \"${extractClassName(factory.ref)}\" should return an ${Array.from(allowedTypes.values()).join(\",\")}.`,\n );\n }\n };\n })();\n\n const toSerializable = async (rawValue: unknown): Promise<SerializerNode | unknown> => {\n if (seen.has(rawValue)) {\n return seen.get(rawValue);\n }\n\n if (rawValue instanceof Serializable && !this.hasFactory(extractClassName(rawValue))) {\n const Class = rawValue.constructor as SerializableClass<T>;\n Serializer.registerSerializable(Class);\n }\n\n const { targetClass, factory, isSelfRef } = Serializer.findFactory(rawValue);\n if (!isSerializationRequired(factory.ref)) {\n return rawValue;\n }\n\n const snapshot = isSelfRef ? SerializerSelfRefIdentifier : await factory.toPlain(rawValue);\n assertValidSnapshot(snapshot, factory);\n\n const result: SerializerNode = {\n __serializer: true,\n __class: targetClass,\n __ref: getRefId().toString(),\n __value: snapshot,\n };\n seen.set(rawValue, result);\n\n for (const node of traverseWithUpdate(snapshot)) {\n const newValue = await toSerializable(node.value);\n if (newValue !== node.value) {\n node.update(newValue);\n }\n }\n return result;\n };\n\n const root: RootNode<T> = { __version: Version, __root: rawData };\n await traverseObject(root, async ({ value, path }) => {\n const content = await toSerializable(value);\n output.update(path, content);\n });\n return output.toJSON();\n }\n\n /** @internal */\n static async deserializeWithMeta<T = any>(\n raw: string,\n extraClasses?: SerializableClass<unknown>[],\n ): Promise<RootNode<T>> {\n extraClasses?.forEach((ref) => Serializer.registerSerializable(ref));\n\n const output = Serializer._createOutputBuilder<RootNode<T>>();\n const instances = new Map<string, unknown>();\n\n const toDeserialize = async (contentRaw: unknown) => {\n if (isSerializerNode(contentRaw)) {\n const clsName = String(contentRaw.__class);\n const factory = Serializer.getFactory(clsName);\n const rawData = contentRaw.__value;\n\n if (rawData === SerializerSelfRefIdentifier) {\n return factory.ref;\n }\n\n if (rawData === SerializerRefIdentifier) {\n if (!instances.has(contentRaw.__ref!)) {\n throw new SerializerError(`Missing reference \"${contentRaw.__ref}\"!`);\n }\n\n const data = instances.get(contentRaw.__ref!)!;\n if (data instanceof RefPlaceholder) {\n return data.value;\n }\n return data;\n }\n\n const traverseNested = async () => {\n for (const node of traverseWithUpdate(rawData)) {\n const newValue = await toDeserialize(node.value);\n if (newValue !== node.value) {\n node.update(newValue);\n }\n }\n };\n\n // Handle circular dependencies\n const placeholder = new RefPlaceholder<any>(contentRaw, factory);\n instances.set(contentRaw.__ref!, placeholder);\n await traverseNested();\n const final = await placeholder.final();\n instances.set(contentRaw.__ref!, final);\n return final;\n }\n return contentRaw;\n };\n\n const root = JSON.parse(raw);\n if (!isRootNode(root)) {\n throw new SerializerError(\"Provided data cannot be deserialized due to malformed format!\");\n }\n\n await traverseObject(\n root,\n async ({ value: contentRaw, path }) => {\n output.update(path, await toDeserialize(contentRaw));\n },\n (_obj) => isSerializerNode(_obj),\n );\n return output.get();\n }\n\n static async deserialize<T = any>(\n raw: string,\n extraClasses?: SerializableClass<unknown>[],\n ): Promise<T> {\n const response = await Serializer.deserializeWithMeta(raw, extraClasses);\n return response.__root;\n }\n\n protected static _createOutputBuilder<T>() {\n return {\n _container: {} as T,\n get() {\n return this._container;\n },\n update(path: readonly string[], value: any) {\n setProp(this._container, path, value);\n },\n toJSON() {\n const seen = new SafeWeakSet();\n\n return JSON.stringify(this._container, (key, value) => {\n if (seen.has(value) && isSerializerNode(value)) {\n const updated: SerializerNode = {\n ...value,\n __value: SerializerRefIdentifier,\n };\n return updated;\n }\n\n seen.add(value);\n return value;\n });\n },\n };\n }\n}\n\nSerializer.register(Task<any>, {\n toPlain: (task) => ({ value: task.resolvedValue(), state: task.state }),\n fromPlain: ({ state, value }) => {\n const task = new Task();\n if (state === TaskState.RESOLVED) {\n task.resolve(value);\n } else if (state === TaskState.REJECTED) {\n task.reject(value);\n } else {\n task.reject(new SerializerError(\"Task cannot be solved due to serialization.\"));\n }\n task.resolve(value);\n return task;\n },\n createEmpty: () => new Task(),\n updateInstance: async (instance, value) => {\n instance.resolve(value);\n },\n});\nSerializer.register(SlidingTaskMap, {\n toPlain: (value) => ({\n config: {\n windowSize: value.windowSize,\n ttl: value.ttl,\n },\n entries: Array.from(value.entries()).filter(([_, task]) => {\n if (task instanceof Task) {\n return task.state === TaskState.RESOLVED;\n }\n return true;\n }),\n }),\n fromPlain: ({ entries, config }) => {\n const instance = new SlidingTaskMap(config.windowSize, config.ttl);\n for (const [key, value] of entries) {\n instance.set(key, value);\n }\n return instance;\n },\n createEmpty: () => new SlidingTaskMap(1, 1000),\n updateInstance: (instance, newInstance) => {\n Object.assign(instance, { windowSize: newInstance.windowSize, ttl: newInstance.ttl });\n newInstance.forEach((value, key) => instance.set(key, value));\n },\n});\nSerializer.register(Map, {\n toPlain: (value) => Array.from(value.entries()),\n fromPlain: (value) => new Map(value),\n createEmpty: () => new Map(),\n updateInstance: (instance, update) => {\n update.forEach(([key, value]) => instance.set(key, value));\n },\n});\nSerializer.register(Set, {\n toPlain: (value) => Array.from(value.values()),\n fromPlain: (value) => new Set(value),\n createEmpty: () => new Set(),\n updateInstance: (instance, update) => {\n update.forEach((value) => instance.add(value));\n },\n});\nSerializer.register(Array, {\n toPlain: (value) => value.slice(),\n fromPlain: (value) => value.slice(),\n createEmpty: () => [],\n updateInstance: (value, update) => {\n value.push(...update);\n },\n});\nSerializer.register(Object, {\n toPlain: (value) => Object.assign({}, value),\n fromPlain: (value) => Object.assign({}, value),\n createEmpty: () => ({}),\n updateInstance: (value, update) => Object.assign(value, update),\n});\nSerializer.register(Number, {\n toPlain: (value) => Number(value).toString(),\n fromPlain: (value) => Number(value),\n});\nSerializer.register(String, {\n toPlain: (value) => String(value),\n fromPlain: (value) => String(value),\n});\nSerializer.register(Boolean, {\n toPlain: (value) => Boolean(value),\n fromPlain: (value) => Boolean(value),\n});\nSerializer.register(BigInt, {\n toPlain: (value) => String(value),\n fromPlain: (value) => BigInt(value),\n});\nSerializer.register(Symbol, {\n toPlain: (value) => value.description,\n fromPlain: (value) => Symbol(value),\n});\nSerializer.register(Date, {\n toPlain: (value) => value.toISOString(),\n fromPlain: (value) => new Date(value),\n});\nSerializer.register(CacheFn, {\n toPlain: (value) => value.createSnapshot(),\n fromPlain: (value) => CacheFn.create(value.fn, value.options),\n});\nSerializer.register(Function, {\n toPlain: (value) => {\n const isNative = getProp(global, [value.name]) === value;\n\n function isConstructor(obj: any): obj is AnyConstructable {\n return obj && !!obj.prototype && !!obj.prototype.constructor.name;\n }\n\n return {\n name: value.name,\n binds: getFunctionBinds(value).map((bound) => ({\n name: isConstructor(bound) ? Serializer.findFactory(bound).targetClass : bound.name,\n value: \"value\" in bound ? bound.value : null,\n })),\n fn: isNative ? \"\" : String(value),\n isNative,\n };\n },\n fromPlain: (value) => {\n if (value.isNative) {\n return getProp(global, [value.name])!;\n }\n\n const toParsableForm = (): string => {\n let fn = value.fn;\n\n if (fn.match(/^\\s*function.*?\\(/)) {\n return fn;\n }\n\n const [a, b, c] = [fn.indexOf(\"=>\"), fn.indexOf(\"(\"), fn.indexOf(\"{\")];\n if (a > -1) {\n if (b === -1 || b > a || (c === -1 && c > a)) {\n const [p, p2] = halveString(fn, \"=>\", false);\n fn = `(${p.replace(\"async\", \"\").replace(\"*\", \"\").trim()})=>${p2}`;\n fn = [p.includes(\"async\") && \"async \", p.includes(\"*\") && \"*\", fn]\n .filter(Boolean)\n .join(\" \");\n }\n }\n\n const arrowStart = fn.indexOf(\"=>\");\n const bracketStart = fn.indexOf(\"(\");\n\n const [fnPrefix, fnContent = \"\"] =\n bracketStart === -1 || bracketStart > arrowStart\n ? halveString(fn, \"{\", true)\n : halveString(fn, \"(\", true);\n\n const nonReservedSymbols = fnPrefix\n .trim()\n .split(\" \")\n .map((x) => x.trim())\n .filter(Boolean)\n .every((content) => [\"async\", \"*\"].includes(content));\n\n if (nonReservedSymbols) {\n return fn;\n }\n\n const name = value.name && fnPrefix.includes(value.name) ? value.name : \"\";\n let parameters = \"\";\n if (!fnContent.startsWith(\"(\")) {\n if (fnPrefix.includes(\"(\")) {\n parameters = (fnPrefix.match(/\\((.+)\\)/) ?? [null, \"\"])[1];\n } else {\n parameters = fnPrefix.replace(\"=>\", \"\").replace(\"async\", \"\").replace(\"*\", \"\");\n }\n }\n\n return [\n fnPrefix.includes(\"async\") && \"async \",\n \"function\",\n fnPrefix.includes(\"*\") && \"*\",\n name && ` ${name}`,\n parameters && `(${parameters})`,\n fnContent,\n ]\n .filter(Boolean)\n .join(\"\");\n };\n\n const binds = value?.binds ?? [];\n const fn = Function(\n ...binds.map((b) => b.name),\n `return ${toParsableForm()}`,\n )(...binds.map((b) => (b.value ? b.value : Serializer.getFactory(b.name)!.ref)));\n\n if (value.name) {\n Object.defineProperty(\n fn,\n \"name\",\n Object.assign({}, Object.getOwnPropertyDescriptor(Object.getPrototypeOf(fn), \"name\"), {\n value: value.name,\n }),\n );\n }\n Object.defineProperty(\n fn,\n \"toString\",\n Object.assign({}, Object.getOwnPropertyDescriptor(Object.getPrototypeOf(fn), \"name\"), {\n value: () => value.fn,\n }),\n );\n return hasMinLength(binds, 1) ? toBoundedFunction(fn, binds) : fn;\n },\n});\n\nSerializer.register(Error, {\n toPlain: (value) => serializeError(value),\n fromPlain: (value) => deserializeError(value),\n});\nSerializer.register(RegExp, {\n toPlain: (value) => ({ source: value.source, flags: value.flags }),\n fromPlain: (value) => new RegExp(value.source, value.flags),\n});\nSerializer.register(WeakSet, {\n toPlain: () => {},\n fromPlain: () => new WeakSet(),\n createEmpty: () => new WeakSet(),\n updateInstance: () => {},\n});\nSerializer.register(WeakMap, {\n toPlain: () => {},\n fromPlain: () => new WeakMap(),\n createEmpty: () => new WeakMap(),\n updateInstance: () => {},\n});\nSerializer.register(WeakRef, {\n toPlain: () => {},\n fromPlain: () => new WeakRef({}),\n});\nSerializer.register(primitiveToSerializableClass(undefined), {\n toPlain: () => undefined,\n fromPlain: () => undefined,\n});\nSerializer.register(primitiveToSerializableClass(null), {\n toPlain: () => null,\n fromPlain: () => null,\n});\n// @ts-expect-error\nSerializer.register(ZodType, {\n toPlain: (value) => toJsonSchema(value),\n fromPlain: () => {\n throw new Error(\"JSONSchema cannot be converted to zod!\");\n },\n});\nSerializer.register(Buffer, {\n toPlain: (value: Buffer) => value.toString(\"base64\"),\n fromPlain: (data) => Buffer.from(data, \"base64\"),\n});\nSerializer.register(AbortSignal, {\n toPlain: (value: AbortSignal) => ({\n aborted: value.aborted,\n reason: value.reason,\n }),\n fromPlain: (data) => {\n const controller = createAbortController();\n if (data.aborted) {\n controller.abort(data.reason);\n }\n return controller.signal;\n },\n});\nSerializer.register(AbortController, {\n toPlain: (value: AbortController) => ({\n signal: value.signal,\n }),\n fromPlain: (data) => createAbortController(data.signal),\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/serializer/utils.ts"],"names":["SerializerSelfRefIdentifier","SerializerRefIdentifier","ClassConstructorPlaceholder","RefPlaceholder","EmptyPlaceholder","Symbol","partialResult","constructor","node","factory","value","createEmpty","updateInstance","SerializerError","final","finalInstance","fromPlain","__value","ref","isSerializerNode","data","R","isPlainObject","hasProp","isRootNode","extractClassName","registry","Map","register","name","has","set","target","get","index","indexOf","push","filter","Boolean","join","isObjectType","isFunction","Function","primitiveToSerializableClass","ClassByValueType","string","String","number","Number","bigint","BigInt","boolean","symbol","undefined","Undefined","null","Null","object","Object","function","type","traverseObject","obj","handler","stopFn","seen","SafeWeakSet","traverse","_obj","path","add","key","entries","concat","isSerializationRequired","primitive","includes","traverseWithUpdate","Array","isArray","idx","update","newValue","Set","values","delete","shallowCopy","assign","slice","isDirectInstanceOf","Date","deepCopy","source","clone","copy","result","setProp","toBoundedFunction","fn","binds","getFunctionBinds","getProp"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBO,MAAMA,2BAA8B,GAAA;AACpC,MAAMC,uBAA0B,GAAA;AAChC,MAAMC,2BAAAA,CAAAA;EA3Bb;;;AA2B0C;AACnC,MAAMC,cAAAA,CAAAA;EA5Bb;;;;;AA6BE,EAAA,OAAeC,mBAAmBC,MAAAA,EAAAA;AAC1BC,EAAAA,aAAAA;AAERC,EAAAA,WAAAA,CACqBC,MACAC,OACnB,EAAA;SAFmBD,IAAAA,GAAAA,IAAAA;SACAC,OAAAA,GAAAA,OAAAA;AAJbH,IAAAA,IAAAA,CAAAA,aAAAA,GAAmBH,cAAeC,CAAAA,gBAAAA;AAKvC;AAEH,EAAA,IAAIM,KAAQ,GAAA;AACV,IAAI,IAAA,IAAA,CAAKJ,aAAkBH,KAAAA,cAAAA,CAAeC,gBAAkB,EAAA;AAC1D,MAAA,OAAO,IAAKE,CAAAA,aAAAA;AACd;AAEA,IAAA,MAAM,EAAEK,WAAAA,EAAaC,cAAc,EAAA,GAAK,IAAKH,CAAAA,OAAAA;AAC7C,IAAI,IAAA,CAACE,WAAe,IAAA,CAACC,cAAgB,EAAA;AACnC,MAAM,MAAA,IAAIC,0BAAgB,wCAAA,CAAA;AAC5B;AAEA,IAAA,IAAA,CAAKP,gBAAgBK,WAAAA,EAAAA;AACrB,IAAA,OAAO,IAAKL,CAAAA,aAAAA;AACd;AAEA,EAAA,MAAMQ,KAAQ,GAAA;AACZ,IAAMC,MAAAA,aAAAA,GAAgB,MAAM,IAAA,CAAKN,OAAQO,CAAAA,SAAAA,CAAU,KAAKR,IAAKS,CAAAA,OAAAA,EAAS,IAAKR,CAAAA,OAAAA,CAAQS,GAAG,CAAA;AACtF,IAAI,IAAA,IAAA,CAAKZ,aAAkBH,KAAAA,cAAAA,CAAeC,gBAAkB,EAAA;AAC1D,MAAOW,OAAAA,aAAAA;AACT;AAEA,IAAA,MAAM,IAAKN,CAAAA,OAAAA,CAAQG,cAAgB,CAAA,IAAA,CAAKN,eAAeS,aAAAA,CAAAA;AACvD,IAAA,OAAO,IAAKT,CAAAA,aAAAA;AACd;AACF;AAQO,SAASa,iBAAiBC,IAAa,EAAA;AAC5C,EAAA,OAAOC,aAAEC,aAAcF,CAAAA,IAAAA,CAASG,IAAAA,kBAAAA,CAAQH,MAAmC,cAAA,CAAA;AAC7E;AAFgBD,MAAAA,CAAAA,gBAAAA,EAAAA,kBAAAA,CAAAA;AAST,SAASK,WAAcJ,IAAa,EAAA;AACzC,EACEC,OAAAA,YAAAA,CAAEC,aAAcF,CAAAA,IAAAA,CAChBG,IAAAA,kBAAAA,CAAQH,MAAgC,QAAA,CAAA,IACxCG,kBAAQH,CAAAA,IAAAA,EAAgC,WAAA,CAAA;AAE5C;AANgBI,MAAAA,CAAAA,UAAAA,EAAAA,YAAAA,CAAAA;AAQT,MAAMC,mCAAoB,CAAA,MAAA;AAC/B,EAAMC,MAAAA,QAAAA,uBAAeC,GAAAA,EAAAA;AACrB,EAAMC,MAAAA,QAAAA,mBAAYC,MAAAA,CAAAA,CAAAA,IAAAA,EAAcpB,OAAAA,KAAAA;AAC9B,IAAA,IAAI,CAACiB,QAAAA,CAASI,GAAID,CAAAA,IAAAA,CAAO,EAAA;AACvBH,MAASK,QAAAA,CAAAA,GAAAA,CAAIF,IAAM,EAAA,EAAE,CAAA;AACvB;AACA,IAAMG,MAAAA,MAAAA,GAASN,QAASO,CAAAA,GAAAA,CAAIJ,IAAAA,CAAAA;AAC5B,IAAIK,IAAAA,KAAAA,GAAQF,MAAOG,CAAAA,OAAAA,CAAQ1B,OAAAA,CAAAA;AAC3B,IAAA,IAAIyB,UAAU,CAAI,CAAA,EAAA;AAChBA,MAAQF,KAAAA,GAAAA,MAAAA,CAAOI,IAAK3B,CAAAA,OAAAA,CAAW,GAAA,CAAA;AACjC;AACA,IAAO,OAAA;AAACoB,MAAAA,IAAAA;AAAMK,MAAAA;MAAOG,MAAOC,CAAAA,OAAAA,CAASC,CAAAA,IAAAA,CAAK,EAAA,CAAA;GAT3B,EAAA,UAAA,CAAA;AAYjB,EAAA,OAAO,CAAC7B,KAAAA,KAAAA;AACN,IAAA,IAAIW,YAAEmB,CAAAA,YAAAA,CAAa9B,KAAAA,CAAAA,IAAU,iBAAiBA,KAAO,EAAA;AACnD,MAAMmB,MAAAA,IAAAA,GAAOnB,MAAMH,WAAYsB,CAAAA,IAAAA;AAC/B,MAAOD,OAAAA,QAAAA,CAASC,IAAMnB,EAAAA,KAAAA,CAAMH,WAAW,CAAA;AACzC;AACA,IAAIc,IAAAA,YAAAA,CAAEoB,UAAW/B,CAAAA,KAAAA,CAAQ,EAAA;AACvB,MAAA,MAAMmB,OAAOnB,KAAMmB,CAAAA,IAAAA,IAAQnB,KAAMH,CAAAA,WAAAA,EAAasB,QAAQa,QAASb,CAAAA,IAAAA;AAC/D,MAAOD,OAAAA,QAAAA,CAASC,MAAMnB,KAAAA,CAAAA;AACxB;AACA,IAAOe,OAAAA,gBAAAA,CAAiBkB,4BAA6BjC,CAAAA,KAAAA,CAAAA,CAAAA;AACvD,GAAA;AACF,CAAA;AAEA,MAAMkC,gBAAmB,GAAA;EACvBC,MAAQC,EAAAA,MAAAA;EACRC,MAAQC,EAAAA,MAAAA;EACRC,MAAQC,EAAAA,MAAAA;EACRC,OAASb,EAAAA,OAAAA;EACTc,MAAQ/C,EAAAA,MAAAA;AACRgD,EAAAA,SAAAA,EAAW,MAAMC,SAAAA,CAAAA;IAtHnB;;;AAsH8B,GAAA;AAC5BC,EAAAA,IAAAA,EAAM,MAAMC,IAAAA,CAAAA;IAvHd;;;AAuHoB,GAAA;EAClBC,MAAQC,EAAAA,MAAAA;EACRC,QAAUjB,EAAAA;AACZ,CAAA;AAEO,SAASC,6BAA6BjC,KAAc,EAAA;AACzD,EAAA,MAAMkD,IAAOlD,GAAAA,KAAAA,KAAU,IAAO,GAAA,MAAA,GAAS,OAAOA,KAAAA;AAC9C,EAAA,OAAOkC,iBAAiBgB,IAAAA,CAAAA;AAC1B;AAHgBjB,MAAAA,CAAAA,4BAAAA,EAAAA,8BAAAA,CAAAA;AAMhB,eAAsBkB,cAAAA,CACpBC,GACAC,EAAAA,OAAAA,EACAC,MAAmC,EAAA;AAEnC,EAAMC,MAAAA,IAAAA,GAAO,IAAIC,uBAAAA,EAAAA;AAEjB,EAAA,MAAMC,QAAW,mBAAA,MAAA,CAAA,OAAOC,IAAeC,EAAAA,IAAAA,GAA0B,EAAE,KAAA;AACjE,IAAI,IAAA,CAAChD,aAAEC,aAAc8C,CAAAA,IAAAA,KAASH,IAAKnC,CAAAA,GAAAA,CAAIsC,IAAAA,CAAO,EAAA;AAC5C,MAAA;AACF;AACAH,IAAAA,IAAAA,CAAKK,IAAIF,IAAAA,CAAAA;AAET,IAAIJ,IAAAA,MAAAA,GAASI,IAAAA,CAAO,EAAA;AAClB,MAAA;AACF;AAEA,IAAA,KAAA,MAAW,CAACG,GAAK7D,EAAAA,KAAAA,KAAUgD,MAAOc,CAAAA,OAAAA,CAAQJ,IAAAA,CAAO,EAAA;AAC/C,MAAA,MAAMD,QAASzD,CAAAA,KAAAA,EAAO2D,IAAKI,CAAAA,MAAAA,CAAOF,GAAAA,CAAAA,CAAAA;AAClC,MAAA,MAAMR,OAAQ,CAAA;AACZQ,QAAAA,GAAAA;AACA7D,QAAAA,KAAAA;QACA2D,IAAMA,EAAAA,IAAAA,CAAKI,OAAOF,GAAAA;OACpB,CAAA;AACF;GAjBe,EAAA,UAAA,CAAA;AAoBjB,EAAA,OAAO,MAAMJ,QAAAA,CAASL,GAAK,EAAA,EAAE,CAAA;AAC/B;AA5BsBD,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA;AA8Bf,SAASa,wBAAwBjE,OAAyC,EAAA;AAC/E,EAAA,MAAMkE,SAAuB,GAAA;IAAC/B,gBAAiBC,CAAAA,MAAAA;IAAQD,gBAAiBO,CAAAA;;AACxE,EAAO,OAAA,CAACwB,SAAUC,CAAAA,QAAAA,CAASnE,OAAAA,CAAAA;AAC7B;AAHgBiE,MAAAA,CAAAA,uBAAAA,EAAAA,yBAAAA,CAAAA;AAKT,UAAUG,mBACfT,IAAa,EAAA;AAEb,EAAIU,IAAAA,KAAAA,CAAMC,OAAQX,CAAAA,IAAAA,CAAO,EAAA;AACvB,IAAA,KAAA,MAAW,CAACY,GAAKtE,EAAAA,KAAAA,CAAU0D,IAAAA,IAAAA,CAAKI,SAAW,EAAA;AACzC,MAAM,MAAA;AACJ9D,QAAAA,KAAAA;AACAuE,QAAAA,MAAAA,0BAASC,QAAAA,KAAAA;AACPd,UAAAA,IAAAA,CAAKY,GAAAA,CAAOE,GAAAA,QAAAA;SADN,EAAA,QAAA;AAGV,OAAA;AACF;GACS7D,MAAAA,IAAAA,YAAAA,CAAEC,aAAc8C,CAAAA,IAAAA,CAAO,EAAA;AAChC,IAAA,KAAA,MAAW,CAACG,GAAK7D,EAAAA,KAAAA,KAAUW,YAAEmD,CAAAA,OAAAA,CAAQJ,IAAAA,CAAO,EAAA;AAC1C,MAAM,MAAA;AACJ1D,QAAAA,KAAAA;AACAuE,QAAAA,MAAAA,0BAASC,QAAAA,KAAAA;AACPd,UAAAA,IAAAA,CAAKG,GAAAA,CAAOW,GAAAA,QAAAA;SADN,EAAA,QAAA;AAGV,OAAA;AACF;AACF,GAAA,MAAA,IAAWd,gBAAgBzC,GAAK,EAAA;AAC9B,IAAA,KAAA,MAAW,CAAC4C,GAAK7D,EAAAA,KAAAA,CAAU0D,IAAAA,IAAAA,CAAKI,SAAW,EAAA;AACzC,MAAM,MAAA;AACJ9D,QAAAA,KAAAA;AACAuE,QAAAA,MAAAA,0BAASC,QAAAA,KAAAA;AACPd,UAAKrC,IAAAA,CAAAA,GAAAA,CAAIwC,KAAKW,QAAAA,CAAAA;SADR,EAAA,QAAA;AAGV,OAAA;AACF;AACF,GAAA,MAAA,IAAWd,gBAAgBe,GAAK,EAAA;AAC9B,IAAWzE,KAAAA,MAAAA,KAAAA,IAAS0D,IAAKgB,CAAAA,MAAAA,EAAU,EAAA;AACjC,MAAM,MAAA;AACJ1E,QAAAA,KAAAA;AACAuE,QAAAA,MAAAA,0BAASC,QAAAA,KAAAA;AACPd,UAAAA,IAAAA,CAAKiB,OAAO3E,KAAAA,CAAAA;AACZ0D,UAAAA,IAAAA,CAAKE,IAAIY,QAAAA,CAAAA;SAFH,EAAA,QAAA;AAIV,OAAA;AACF;AACF;AACF;AAzCiBL,MAAAA,CAAAA,kBAAAA,EAAAA,oBAAAA,CAAAA;AA2CV,SAASS,YAAe5E,KAAQ,EAAA;AACrC,EAAIW,IAAAA,YAAAA,CAAEC,aAAcZ,CAAAA,KAAAA,CAAQ,EAAA;AAC1B,IAAA,OAAOgD,MAAO6B,CAAAA,MAAAA,CAAO,EAAC,EAAG7E,KAAAA,CAAAA;GAChBW,MAAAA,IAAAA,YAAAA,CAAE0D,OAAQrE,CAAAA,KAAAA,CAAQ,EAAA;AAC3B,IAAA,OAAOA,MAAM8E,KAAK,EAAA;GACTC,MAAAA,IAAAA,gCAAAA,CAAmB/E,KAAOiB,EAAAA,GAAAA,CAAM,EAAA;AACzC,IAAA,OAAO,IAAIA,GAAAA,CAAIjB,KAAM8D,CAAAA,OAAAA,EAAO,CAAA;GACnBiB,MAAAA,IAAAA,gCAAAA,CAAmB/E,KAAOyE,EAAAA,GAAAA,CAAM,EAAA;AACzC,IAAA,OAAO,IAAIA,GAAAA,CAAIzE,KAAM0E,CAAAA,MAAAA,EAAM,CAAA;GAClBK,MAAAA,IAAAA,gCAAAA,CAAmB/E,KAAOgF,EAAAA,IAAAA,CAAO,EAAA;AAC1C,IAAO,OAAA,IAAIA,KAAKhF,KAAAA,CAAAA;AAClB;AACA,EAAOA,OAAAA,KAAAA;AACT;AAbgB4E,MAAAA,CAAAA,WAAAA,EAAAA,aAAAA,CAAAA;AAehB,eAAsBK,SAAYC,MAAS,EAAA;AACzC,EAAIpD,IAAAA,cAAAA,CAAaoD,MAAAA,CAAW,IAAA,OAAA,IAAWA,UAAUnD,YAAWmD,CAAAA,MAAAA,CAAOC,KAAK,CAAG,EAAA;AACzE,IAAO,OAAA,MAAMD,OAAOC,KAAK,EAAA;AAC3B;AACA,EAAMC,MAAAA,IAAAA,GAAOR,YAAYM,MAAAA,CAAAA;AACzB,EAAA,MAAM/B,eAAe+B,MAAQ,EAAA,OAAO,EAAElF,KAAAA,EAAO2D,MAAM,KAAA;AACjD,IAAM0B,MAAAA,MAAAA,GAAS,MAAMJ,QAAAA,CAASjF,KAAAA,CAAAA;AAC9BsF,IAAQF,kBAAAA,CAAAA,IAAAA,EAAMzB,MAAM0B,MAAAA,CAAAA;GACtB,CAAA;AACA,EAAOD,OAAAA,IAAAA;AACT;AAVsBH,MAAAA,CAAAA,QAAAA,EAAAA,UAAAA,CAAAA;AAmBf,SAASM,iBAAAA,CAAmCC,IAAOC,KAA8B,EAAA;AACtFzC,EAAAA,MAAAA,CAAO6B,OAAOW,EAAI,EAAA;IAAE,CAACD,iBAAAA,CAAkB7C,MAAM,GAAG+C;GAAM,CAAA;AACtD,EAAOD,OAAAA,EAAAA;AACT;AAHgBD,MAAAA,CAAAA,iBAAAA,EAAAA,mBAAAA,CAAAA;AAIhBA,iBAAkB7C,CAAAA,MAAAA,GAAS/C,OAAO,SAAA,CAAA;AAG3B,SAAS+F,iBAAqCF,EAAK,EAAA;AACxD,EAAMlE,MAAAA,MAAAA,GAASqE,mBAAQH,EAAI,EAAA;IAACD,iBAAkB7C,CAAAA;AAAS,GAAA,EAAA,EAAE,CAAA;AACzD,EAAOpB,OAAAA,MAAAA;AACT;AAHgBoE,MAAAA,CAAAA,gBAAAA,EAAAA,kBAAAA,CAAAA","file":"utils.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as R from \"remeda\";\nimport { SafeWeakSet } from \"@/internals/helpers/weakRef.js\";\nimport { AnyConstructable, AnyFn, ClassConstructor, NamedFunction } from \"@/internals/types.js\";\nimport { SerializeFactory } from \"@/serializer/serializer.js\";\nimport { getProp, hasProp, setProp } from \"@/internals/helpers/object.js\";\nimport { isDirectInstanceOf } from \"@/internals/helpers/prototype.js\";\nimport { SerializerError } from \"@/serializer/error.js\";\nimport { isFunction, isObjectType } from \"remeda\";\n\nexport const SerializerSelfRefIdentifier = \"__self_ref\";\nexport const SerializerRefIdentifier = \"__ref\";\nexport class ClassConstructorPlaceholder {}\nexport class RefPlaceholder<T = unknown> {\n private static EmptyPlaceholder = Symbol();\n private partialResult: T = RefPlaceholder.EmptyPlaceholder as T;\n\n constructor(\n protected readonly node: SerializerNode,\n protected readonly factory: SerializeFactory<T>,\n ) {}\n\n get value() {\n if (this.partialResult !== RefPlaceholder.EmptyPlaceholder) {\n return this.partialResult;\n }\n\n const { createEmpty, updateInstance } = this.factory;\n if (!createEmpty || !updateInstance) {\n throw new SerializerError(\"Circular dependency has been detected!\");\n }\n\n this.partialResult = createEmpty();\n return this.partialResult;\n }\n\n async final() {\n const finalInstance = await this.factory.fromPlain(this.node.__value, this.factory.ref);\n if (this.partialResult === RefPlaceholder.EmptyPlaceholder) {\n return finalInstance;\n }\n\n await this.factory.updateInstance!(this.partialResult, finalInstance);\n return this.partialResult;\n }\n}\n\nexport interface SerializerNode {\n __class: string;\n __ref: string;\n __value: unknown;\n __serializer: true;\n}\nexport function isSerializerNode(data: unknown): data is SerializerNode {\n return R.isPlainObject(data) && hasProp(data as unknown as SerializerNode, \"__serializer\");\n}\n\nexport interface RootNode<T = any> {\n __version: string;\n __root: T;\n}\n\nexport function isRootNode<T>(data: unknown): data is RootNode<T> {\n return (\n R.isPlainObject(data) &&\n hasProp(data as unknown as RootNode<T>, \"__root\") &&\n hasProp(data as unknown as RootNode<T>, \"__version\")\n );\n}\n\nexport const extractClassName = (() => {\n const registry = new Map<string, unknown[]>();\n const register = (name: string, factory: any) => {\n if (!registry.has(name)) {\n registry.set(name, []);\n }\n const target = registry.get(name)!;\n let index = target.indexOf(factory);\n if (index === -1) {\n index = target.push(factory) - 1;\n }\n return [name, index].filter(Boolean).join(\"\");\n };\n\n return (value: unknown): string => {\n if (R.isObjectType(value) && \"constructor\" in value) {\n const name = value.constructor.name;\n return register(name, value.constructor);\n }\n if (R.isFunction(value)) {\n const name = value.name || value.constructor?.name || Function.name;\n return register(name, value);\n }\n return extractClassName(primitiveToSerializableClass(value));\n };\n})();\n\nconst ClassByValueType = {\n string: String,\n number: Number,\n bigint: BigInt,\n boolean: Boolean,\n symbol: Symbol,\n undefined: class Undefined {},\n null: class Null {},\n object: Object,\n function: Function,\n} as const;\n\nexport function primitiveToSerializableClass(value: unknown) {\n const type = value === null ? \"null\" : typeof value;\n return ClassByValueType[type];\n}\n\ntype TraverseObjectFn = (el: { key: string; path: readonly string[]; value: any }) => Promise<void>;\nexport async function traverseObject(\n obj: unknown,\n handler: TraverseObjectFn,\n stopFn?: (_obj: unknown) => boolean,\n) {\n const seen = new SafeWeakSet();\n\n const traverse = async (_obj: unknown, path: readonly string[] = []) => {\n if (!R.isPlainObject(_obj) || seen.has(_obj)) {\n return;\n }\n seen.add(_obj);\n\n if (stopFn?.(_obj)) {\n return;\n }\n\n for (const [key, value] of Object.entries(_obj)) {\n await traverse(value, path.concat(key));\n await handler({\n key,\n value,\n path: path.concat(key),\n });\n }\n };\n\n return await traverse(obj, []);\n}\n\nexport function isSerializationRequired(factory: ClassConstructor | NamedFunction) {\n const primitive: unknown[] = [ClassByValueType.string, ClassByValueType.boolean];\n return !primitive.includes(factory);\n}\n\nexport function* traverseWithUpdate<T = unknown>(\n _obj: unknown,\n): Generator<{ value: T; update: (value: T) => void }> {\n if (Array.isArray(_obj)) {\n for (const [idx, value] of _obj.entries()) {\n yield {\n value,\n update: (newValue) => {\n _obj[idx] = newValue;\n },\n };\n }\n } else if (R.isPlainObject(_obj)) {\n for (const [key, value] of R.entries(_obj)) {\n yield {\n value: value as T,\n update: (newValue) => {\n _obj[key] = newValue;\n },\n };\n }\n } else if (_obj instanceof Map) {\n for (const [key, value] of _obj.entries()) {\n yield {\n value,\n update: (newValue) => {\n _obj.set(key, newValue);\n },\n };\n }\n } else if (_obj instanceof Set) {\n for (const value of _obj.values()) {\n yield {\n value,\n update: (newValue) => {\n _obj.delete(value);\n _obj.add(newValue);\n },\n };\n }\n }\n}\n\nexport function shallowCopy<T>(value: T): T {\n if (R.isPlainObject(value)) {\n return Object.assign({}, value);\n } else if (R.isArray(value)) {\n return value.slice() as T;\n } else if (isDirectInstanceOf(value, Map)) {\n return new Map(value.entries()) as T;\n } else if (isDirectInstanceOf(value, Set)) {\n return new Set(value.values()) as T;\n } else if (isDirectInstanceOf(value, Date)) {\n return new Date(value) as T;\n }\n return value;\n}\n\nexport async function deepCopy<T>(source: T): Promise<T> {\n if (isObjectType(source) && \"clone\" in source && isFunction(source.clone)) {\n return await source.clone();\n }\n const copy = shallowCopy(source);\n await traverseObject(source, async ({ value, path }) => {\n const result = await deepCopy(value);\n setProp(copy, path, result);\n });\n return copy;\n}\n\ntype Bounded =\n | {\n name: string;\n value: any;\n }\n | AnyConstructable;\n\nexport function toBoundedFunction<T extends AnyFn>(fn: T, binds: [Bounded, ...Bounded[]]) {\n Object.assign(fn, { [toBoundedFunction.symbol]: binds });\n return fn;\n}\ntoBoundedFunction.symbol = Symbol(\"bounded\");\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function getFunctionBinds<T extends Function>(fn: T) {\n const target = getProp(fn, [toBoundedFunction.symbol], []);\n return target as Bounded[];\n}\n"]}
1
+ {"version":3,"sources":["utils.ts"],"names":["SerializerSelfRefIdentifier","SerializerRefIdentifier","ClassConstructorPlaceholder","RefPlaceholder","EmptyPlaceholder","Symbol","partialResult","constructor","node","factory","value","createEmpty","updateInstance","SerializerError","final","finalInstance","fromPlain","__value","ref","isSerializerNode","data","R","isPlainObject","hasProp","isRootNode","extractClassName","registry","Map","register","name","has","set","target","get","index","indexOf","push","filter","Boolean","join","isObjectType","isFunction","Function","primitiveToSerializableClass","ClassByValueType","string","String","number","Number","bigint","BigInt","boolean","symbol","undefined","Undefined","null","Null","object","Object","function","type","traverseObject","obj","handler","stopFn","seen","SafeWeakSet","traverse","_obj","path","add","key","entries","concat","isSerializationRequired","primitive","includes","traverseWithUpdate","Array","isArray","idx","update","newValue","Set","values","delete","shallowCopy","assign","slice","isDirectInstanceOf","Date","deepCopy","source","clone","copy","result","setProp","toBoundedFunction","fn","binds","getFunctionBinds","getProp"],"mappings":"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","file":"utils.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as R from \"remeda\";\nimport { SafeWeakSet } from \"@/internals/helpers/weakRef.js\";\nimport { AnyConstructable, AnyFn, ClassConstructor, NamedFunction } from \"@/internals/types.js\";\nimport { SerializeFactory } from \"@/serializer/serializer.js\";\nimport { getProp, hasProp, setProp } from \"@/internals/helpers/object.js\";\nimport { isDirectInstanceOf } from \"@/internals/helpers/prototype.js\";\nimport { SerializerError } from \"@/serializer/error.js\";\nimport { isFunction, isObjectType } from \"remeda\";\n\nexport const SerializerSelfRefIdentifier = \"__self_ref\";\nexport const SerializerRefIdentifier = \"__ref\";\nexport class ClassConstructorPlaceholder {}\nexport class RefPlaceholder<T = unknown> {\n private static EmptyPlaceholder = Symbol();\n private partialResult: T = RefPlaceholder.EmptyPlaceholder as T;\n\n constructor(\n protected readonly node: SerializerNode,\n protected readonly factory: SerializeFactory<T>,\n ) {}\n\n get value() {\n if (this.partialResult !== RefPlaceholder.EmptyPlaceholder) {\n return this.partialResult;\n }\n\n const { createEmpty, updateInstance } = this.factory;\n if (!createEmpty || !updateInstance) {\n throw new SerializerError(\"Circular dependency has been detected!\");\n }\n\n this.partialResult = createEmpty();\n return this.partialResult;\n }\n\n async final() {\n const finalInstance = await this.factory.fromPlain(this.node.__value, this.factory.ref);\n if (this.partialResult === RefPlaceholder.EmptyPlaceholder) {\n return finalInstance;\n }\n\n await this.factory.updateInstance!(this.partialResult, finalInstance);\n return this.partialResult;\n }\n}\n\nexport interface SerializerNode {\n __class: string;\n __ref: string;\n __value: unknown;\n __serializer: true;\n}\nexport function isSerializerNode(data: unknown): data is SerializerNode {\n return R.isPlainObject(data) && hasProp(data as unknown as SerializerNode, \"__serializer\");\n}\n\nexport interface RootNode<T = any> {\n __version: string;\n __root: T;\n}\n\nexport function isRootNode<T>(data: unknown): data is RootNode<T> {\n return (\n R.isPlainObject(data) &&\n hasProp(data as unknown as RootNode<T>, \"__root\") &&\n hasProp(data as unknown as RootNode<T>, \"__version\")\n );\n}\n\nexport const extractClassName = (() => {\n const registry = new Map<string, unknown[]>();\n const register = (name: string, factory: any) => {\n if (!registry.has(name)) {\n registry.set(name, []);\n }\n const target = registry.get(name)!;\n let index = target.indexOf(factory);\n if (index === -1) {\n index = target.push(factory) - 1;\n }\n return [name, index].filter(Boolean).join(\"\");\n };\n\n return (value: unknown): string => {\n if (R.isObjectType(value) && \"constructor\" in value) {\n const name = value.constructor.name;\n return register(name, value.constructor);\n }\n if (R.isFunction(value)) {\n const name = value.name || value.constructor?.name || Function.name;\n return register(name, value);\n }\n return extractClassName(primitiveToSerializableClass(value));\n };\n})();\n\nconst ClassByValueType = {\n string: String,\n number: Number,\n bigint: BigInt,\n boolean: Boolean,\n symbol: Symbol,\n undefined: class Undefined {},\n null: class Null {},\n object: Object,\n function: Function,\n} as const;\n\nexport function primitiveToSerializableClass(value: unknown) {\n const type = value === null ? \"null\" : typeof value;\n return ClassByValueType[type];\n}\n\ntype TraverseObjectFn = (el: { key: string; path: readonly string[]; value: any }) => Promise<void>;\nexport async function traverseObject(\n obj: unknown,\n handler: TraverseObjectFn,\n stopFn?: (_obj: unknown) => boolean,\n) {\n const seen = new SafeWeakSet();\n\n const traverse = async (_obj: unknown, path: readonly string[] = []) => {\n if (!R.isPlainObject(_obj) || seen.has(_obj)) {\n return;\n }\n seen.add(_obj);\n\n if (stopFn?.(_obj)) {\n return;\n }\n\n for (const [key, value] of Object.entries(_obj)) {\n await traverse(value, path.concat(key));\n await handler({\n key,\n value,\n path: path.concat(key),\n });\n }\n };\n\n return await traverse(obj, []);\n}\n\nexport function isSerializationRequired(factory: ClassConstructor | NamedFunction) {\n const primitive: unknown[] = [ClassByValueType.string, ClassByValueType.boolean];\n return !primitive.includes(factory);\n}\n\nexport function* traverseWithUpdate<T = unknown>(\n _obj: unknown,\n): Generator<{ value: T; update: (value: T) => void }> {\n if (Array.isArray(_obj)) {\n for (const [idx, value] of _obj.entries()) {\n yield {\n value,\n update: (newValue) => {\n _obj[idx] = newValue;\n },\n };\n }\n } else if (R.isPlainObject(_obj)) {\n for (const [key, value] of R.entries(_obj)) {\n yield {\n value: value as T,\n update: (newValue) => {\n _obj[key] = newValue;\n },\n };\n }\n } else if (_obj instanceof Map) {\n for (const [key, value] of _obj.entries()) {\n yield {\n value,\n update: (newValue) => {\n _obj.set(key, newValue);\n },\n };\n }\n } else if (_obj instanceof Set) {\n for (const value of _obj.values()) {\n yield {\n value,\n update: (newValue) => {\n _obj.delete(value);\n _obj.add(newValue);\n },\n };\n }\n }\n}\n\nexport function shallowCopy<T>(value: T): T {\n if (R.isPlainObject(value)) {\n return Object.assign({}, value);\n } else if (R.isArray(value)) {\n return value.slice() as T;\n } else if (isDirectInstanceOf(value, Map)) {\n return new Map(value.entries()) as T;\n } else if (isDirectInstanceOf(value, Set)) {\n return new Set(value.values()) as T;\n } else if (isDirectInstanceOf(value, Date)) {\n return new Date(value) as T;\n }\n return value;\n}\n\nexport async function deepCopy<T>(source: T): Promise<T> {\n if (isObjectType(source) && \"clone\" in source && isFunction(source.clone)) {\n return await source.clone();\n }\n const copy = shallowCopy(source);\n await traverseObject(source, async ({ value, path }) => {\n const result = await deepCopy(value);\n setProp(copy, path, result);\n });\n return copy;\n}\n\ntype Bounded =\n | {\n name: string;\n value: any;\n }\n | AnyConstructable;\n\nexport function toBoundedFunction<T extends AnyFn>(fn: T, binds: [Bounded, ...Bounded[]]) {\n Object.assign(fn, { [toBoundedFunction.symbol]: binds });\n return fn;\n}\ntoBoundedFunction.symbol = Symbol(\"bounded\");\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function getFunctionBinds<T extends Function>(fn: T) {\n const target = getProp(fn, [toBoundedFunction.symbol], []);\n return target as Bounded[];\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/serializer/utils.ts"],"names":["SerializerSelfRefIdentifier","SerializerRefIdentifier","ClassConstructorPlaceholder","RefPlaceholder","EmptyPlaceholder","Symbol","partialResult","constructor","node","factory","value","createEmpty","updateInstance","SerializerError","final","finalInstance","fromPlain","__value","ref","isSerializerNode","data","R","isPlainObject","hasProp","isRootNode","extractClassName","registry","Map","register","name","has","set","target","get","index","indexOf","push","filter","Boolean","join","isObjectType","isFunction","Function","primitiveToSerializableClass","ClassByValueType","string","String","number","Number","bigint","BigInt","boolean","symbol","undefined","Undefined","null","Null","object","Object","function","type","traverseObject","obj","handler","stopFn","seen","SafeWeakSet","traverse","_obj","path","add","key","entries","concat","isSerializationRequired","primitive","includes","traverseWithUpdate","Array","isArray","idx","update","newValue","Set","values","delete","shallowCopy","assign","slice","isDirectInstanceOf","Date","deepCopy","source","clone","copy","result","setProp","toBoundedFunction","fn","binds","getFunctionBinds","getProp"],"mappings":"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","file":"utils.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as R from \"remeda\";\nimport { SafeWeakSet } from \"@/internals/helpers/weakRef.js\";\nimport { AnyConstructable, AnyFn, ClassConstructor, NamedFunction } from \"@/internals/types.js\";\nimport { SerializeFactory } from \"@/serializer/serializer.js\";\nimport { getProp, hasProp, setProp } from \"@/internals/helpers/object.js\";\nimport { isDirectInstanceOf } from \"@/internals/helpers/prototype.js\";\nimport { SerializerError } from \"@/serializer/error.js\";\nimport { isFunction, isObjectType } from \"remeda\";\n\nexport const SerializerSelfRefIdentifier = \"__self_ref\";\nexport const SerializerRefIdentifier = \"__ref\";\nexport class ClassConstructorPlaceholder {}\nexport class RefPlaceholder<T = unknown> {\n private static EmptyPlaceholder = Symbol();\n private partialResult: T = RefPlaceholder.EmptyPlaceholder as T;\n\n constructor(\n protected readonly node: SerializerNode,\n protected readonly factory: SerializeFactory<T>,\n ) {}\n\n get value() {\n if (this.partialResult !== RefPlaceholder.EmptyPlaceholder) {\n return this.partialResult;\n }\n\n const { createEmpty, updateInstance } = this.factory;\n if (!createEmpty || !updateInstance) {\n throw new SerializerError(\"Circular dependency has been detected!\");\n }\n\n this.partialResult = createEmpty();\n return this.partialResult;\n }\n\n async final() {\n const finalInstance = await this.factory.fromPlain(this.node.__value, this.factory.ref);\n if (this.partialResult === RefPlaceholder.EmptyPlaceholder) {\n return finalInstance;\n }\n\n await this.factory.updateInstance!(this.partialResult, finalInstance);\n return this.partialResult;\n }\n}\n\nexport interface SerializerNode {\n __class: string;\n __ref: string;\n __value: unknown;\n __serializer: true;\n}\nexport function isSerializerNode(data: unknown): data is SerializerNode {\n return R.isPlainObject(data) && hasProp(data as unknown as SerializerNode, \"__serializer\");\n}\n\nexport interface RootNode<T = any> {\n __version: string;\n __root: T;\n}\n\nexport function isRootNode<T>(data: unknown): data is RootNode<T> {\n return (\n R.isPlainObject(data) &&\n hasProp(data as unknown as RootNode<T>, \"__root\") &&\n hasProp(data as unknown as RootNode<T>, \"__version\")\n );\n}\n\nexport const extractClassName = (() => {\n const registry = new Map<string, unknown[]>();\n const register = (name: string, factory: any) => {\n if (!registry.has(name)) {\n registry.set(name, []);\n }\n const target = registry.get(name)!;\n let index = target.indexOf(factory);\n if (index === -1) {\n index = target.push(factory) - 1;\n }\n return [name, index].filter(Boolean).join(\"\");\n };\n\n return (value: unknown): string => {\n if (R.isObjectType(value) && \"constructor\" in value) {\n const name = value.constructor.name;\n return register(name, value.constructor);\n }\n if (R.isFunction(value)) {\n const name = value.name || value.constructor?.name || Function.name;\n return register(name, value);\n }\n return extractClassName(primitiveToSerializableClass(value));\n };\n})();\n\nconst ClassByValueType = {\n string: String,\n number: Number,\n bigint: BigInt,\n boolean: Boolean,\n symbol: Symbol,\n undefined: class Undefined {},\n null: class Null {},\n object: Object,\n function: Function,\n} as const;\n\nexport function primitiveToSerializableClass(value: unknown) {\n const type = value === null ? \"null\" : typeof value;\n return ClassByValueType[type];\n}\n\ntype TraverseObjectFn = (el: { key: string; path: readonly string[]; value: any }) => Promise<void>;\nexport async function traverseObject(\n obj: unknown,\n handler: TraverseObjectFn,\n stopFn?: (_obj: unknown) => boolean,\n) {\n const seen = new SafeWeakSet();\n\n const traverse = async (_obj: unknown, path: readonly string[] = []) => {\n if (!R.isPlainObject(_obj) || seen.has(_obj)) {\n return;\n }\n seen.add(_obj);\n\n if (stopFn?.(_obj)) {\n return;\n }\n\n for (const [key, value] of Object.entries(_obj)) {\n await traverse(value, path.concat(key));\n await handler({\n key,\n value,\n path: path.concat(key),\n });\n }\n };\n\n return await traverse(obj, []);\n}\n\nexport function isSerializationRequired(factory: ClassConstructor | NamedFunction) {\n const primitive: unknown[] = [ClassByValueType.string, ClassByValueType.boolean];\n return !primitive.includes(factory);\n}\n\nexport function* traverseWithUpdate<T = unknown>(\n _obj: unknown,\n): Generator<{ value: T; update: (value: T) => void }> {\n if (Array.isArray(_obj)) {\n for (const [idx, value] of _obj.entries()) {\n yield {\n value,\n update: (newValue) => {\n _obj[idx] = newValue;\n },\n };\n }\n } else if (R.isPlainObject(_obj)) {\n for (const [key, value] of R.entries(_obj)) {\n yield {\n value: value as T,\n update: (newValue) => {\n _obj[key] = newValue;\n },\n };\n }\n } else if (_obj instanceof Map) {\n for (const [key, value] of _obj.entries()) {\n yield {\n value,\n update: (newValue) => {\n _obj.set(key, newValue);\n },\n };\n }\n } else if (_obj instanceof Set) {\n for (const value of _obj.values()) {\n yield {\n value,\n update: (newValue) => {\n _obj.delete(value);\n _obj.add(newValue);\n },\n };\n }\n }\n}\n\nexport function shallowCopy<T>(value: T): T {\n if (R.isPlainObject(value)) {\n return Object.assign({}, value);\n } else if (R.isArray(value)) {\n return value.slice() as T;\n } else if (isDirectInstanceOf(value, Map)) {\n return new Map(value.entries()) as T;\n } else if (isDirectInstanceOf(value, Set)) {\n return new Set(value.values()) as T;\n } else if (isDirectInstanceOf(value, Date)) {\n return new Date(value) as T;\n }\n return value;\n}\n\nexport async function deepCopy<T>(source: T): Promise<T> {\n if (isObjectType(source) && \"clone\" in source && isFunction(source.clone)) {\n return await source.clone();\n }\n const copy = shallowCopy(source);\n await traverseObject(source, async ({ value, path }) => {\n const result = await deepCopy(value);\n setProp(copy, path, result);\n });\n return copy;\n}\n\ntype Bounded =\n | {\n name: string;\n value: any;\n }\n | AnyConstructable;\n\nexport function toBoundedFunction<T extends AnyFn>(fn: T, binds: [Bounded, ...Bounded[]]) {\n Object.assign(fn, { [toBoundedFunction.symbol]: binds });\n return fn;\n}\ntoBoundedFunction.symbol = Symbol(\"bounded\");\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function getFunctionBinds<T extends Function>(fn: T) {\n const target = getProp(fn, [toBoundedFunction.symbol], []);\n return target as Bounded[];\n}\n"]}
1
+ {"version":3,"sources":["utils.ts"],"names":["SerializerSelfRefIdentifier","SerializerRefIdentifier","ClassConstructorPlaceholder","RefPlaceholder","EmptyPlaceholder","Symbol","partialResult","constructor","node","factory","value","createEmpty","updateInstance","SerializerError","final","finalInstance","fromPlain","__value","ref","isSerializerNode","data","R","isPlainObject","hasProp","isRootNode","extractClassName","registry","Map","register","name","has","set","target","get","index","indexOf","push","filter","Boolean","join","isObjectType","isFunction","Function","primitiveToSerializableClass","ClassByValueType","string","String","number","Number","bigint","BigInt","boolean","symbol","undefined","Undefined","null","Null","object","Object","function","type","traverseObject","obj","handler","stopFn","seen","SafeWeakSet","traverse","_obj","path","add","key","entries","concat","isSerializationRequired","primitive","includes","traverseWithUpdate","Array","isArray","idx","update","newValue","Set","values","delete","shallowCopy","assign","slice","isDirectInstanceOf","Date","deepCopy","source","clone","copy","result","setProp","toBoundedFunction","fn","binds","getFunctionBinds","getProp"],"mappings":"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","file":"utils.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as R from \"remeda\";\nimport { SafeWeakSet } from \"@/internals/helpers/weakRef.js\";\nimport { AnyConstructable, AnyFn, ClassConstructor, NamedFunction } from \"@/internals/types.js\";\nimport { SerializeFactory } from \"@/serializer/serializer.js\";\nimport { getProp, hasProp, setProp } from \"@/internals/helpers/object.js\";\nimport { isDirectInstanceOf } from \"@/internals/helpers/prototype.js\";\nimport { SerializerError } from \"@/serializer/error.js\";\nimport { isFunction, isObjectType } from \"remeda\";\n\nexport const SerializerSelfRefIdentifier = \"__self_ref\";\nexport const SerializerRefIdentifier = \"__ref\";\nexport class ClassConstructorPlaceholder {}\nexport class RefPlaceholder<T = unknown> {\n private static EmptyPlaceholder = Symbol();\n private partialResult: T = RefPlaceholder.EmptyPlaceholder as T;\n\n constructor(\n protected readonly node: SerializerNode,\n protected readonly factory: SerializeFactory<T>,\n ) {}\n\n get value() {\n if (this.partialResult !== RefPlaceholder.EmptyPlaceholder) {\n return this.partialResult;\n }\n\n const { createEmpty, updateInstance } = this.factory;\n if (!createEmpty || !updateInstance) {\n throw new SerializerError(\"Circular dependency has been detected!\");\n }\n\n this.partialResult = createEmpty();\n return this.partialResult;\n }\n\n async final() {\n const finalInstance = await this.factory.fromPlain(this.node.__value, this.factory.ref);\n if (this.partialResult === RefPlaceholder.EmptyPlaceholder) {\n return finalInstance;\n }\n\n await this.factory.updateInstance!(this.partialResult, finalInstance);\n return this.partialResult;\n }\n}\n\nexport interface SerializerNode {\n __class: string;\n __ref: string;\n __value: unknown;\n __serializer: true;\n}\nexport function isSerializerNode(data: unknown): data is SerializerNode {\n return R.isPlainObject(data) && hasProp(data as unknown as SerializerNode, \"__serializer\");\n}\n\nexport interface RootNode<T = any> {\n __version: string;\n __root: T;\n}\n\nexport function isRootNode<T>(data: unknown): data is RootNode<T> {\n return (\n R.isPlainObject(data) &&\n hasProp(data as unknown as RootNode<T>, \"__root\") &&\n hasProp(data as unknown as RootNode<T>, \"__version\")\n );\n}\n\nexport const extractClassName = (() => {\n const registry = new Map<string, unknown[]>();\n const register = (name: string, factory: any) => {\n if (!registry.has(name)) {\n registry.set(name, []);\n }\n const target = registry.get(name)!;\n let index = target.indexOf(factory);\n if (index === -1) {\n index = target.push(factory) - 1;\n }\n return [name, index].filter(Boolean).join(\"\");\n };\n\n return (value: unknown): string => {\n if (R.isObjectType(value) && \"constructor\" in value) {\n const name = value.constructor.name;\n return register(name, value.constructor);\n }\n if (R.isFunction(value)) {\n const name = value.name || value.constructor?.name || Function.name;\n return register(name, value);\n }\n return extractClassName(primitiveToSerializableClass(value));\n };\n})();\n\nconst ClassByValueType = {\n string: String,\n number: Number,\n bigint: BigInt,\n boolean: Boolean,\n symbol: Symbol,\n undefined: class Undefined {},\n null: class Null {},\n object: Object,\n function: Function,\n} as const;\n\nexport function primitiveToSerializableClass(value: unknown) {\n const type = value === null ? \"null\" : typeof value;\n return ClassByValueType[type];\n}\n\ntype TraverseObjectFn = (el: { key: string; path: readonly string[]; value: any }) => Promise<void>;\nexport async function traverseObject(\n obj: unknown,\n handler: TraverseObjectFn,\n stopFn?: (_obj: unknown) => boolean,\n) {\n const seen = new SafeWeakSet();\n\n const traverse = async (_obj: unknown, path: readonly string[] = []) => {\n if (!R.isPlainObject(_obj) || seen.has(_obj)) {\n return;\n }\n seen.add(_obj);\n\n if (stopFn?.(_obj)) {\n return;\n }\n\n for (const [key, value] of Object.entries(_obj)) {\n await traverse(value, path.concat(key));\n await handler({\n key,\n value,\n path: path.concat(key),\n });\n }\n };\n\n return await traverse(obj, []);\n}\n\nexport function isSerializationRequired(factory: ClassConstructor | NamedFunction) {\n const primitive: unknown[] = [ClassByValueType.string, ClassByValueType.boolean];\n return !primitive.includes(factory);\n}\n\nexport function* traverseWithUpdate<T = unknown>(\n _obj: unknown,\n): Generator<{ value: T; update: (value: T) => void }> {\n if (Array.isArray(_obj)) {\n for (const [idx, value] of _obj.entries()) {\n yield {\n value,\n update: (newValue) => {\n _obj[idx] = newValue;\n },\n };\n }\n } else if (R.isPlainObject(_obj)) {\n for (const [key, value] of R.entries(_obj)) {\n yield {\n value: value as T,\n update: (newValue) => {\n _obj[key] = newValue;\n },\n };\n }\n } else if (_obj instanceof Map) {\n for (const [key, value] of _obj.entries()) {\n yield {\n value,\n update: (newValue) => {\n _obj.set(key, newValue);\n },\n };\n }\n } else if (_obj instanceof Set) {\n for (const value of _obj.values()) {\n yield {\n value,\n update: (newValue) => {\n _obj.delete(value);\n _obj.add(newValue);\n },\n };\n }\n }\n}\n\nexport function shallowCopy<T>(value: T): T {\n if (R.isPlainObject(value)) {\n return Object.assign({}, value);\n } else if (R.isArray(value)) {\n return value.slice() as T;\n } else if (isDirectInstanceOf(value, Map)) {\n return new Map(value.entries()) as T;\n } else if (isDirectInstanceOf(value, Set)) {\n return new Set(value.values()) as T;\n } else if (isDirectInstanceOf(value, Date)) {\n return new Date(value) as T;\n }\n return value;\n}\n\nexport async function deepCopy<T>(source: T): Promise<T> {\n if (isObjectType(source) && \"clone\" in source && isFunction(source.clone)) {\n return await source.clone();\n }\n const copy = shallowCopy(source);\n await traverseObject(source, async ({ value, path }) => {\n const result = await deepCopy(value);\n setProp(copy, path, result);\n });\n return copy;\n}\n\ntype Bounded =\n | {\n name: string;\n value: any;\n }\n | AnyConstructable;\n\nexport function toBoundedFunction<T extends AnyFn>(fn: T, binds: [Bounded, ...Bounded[]]) {\n Object.assign(fn, { [toBoundedFunction.symbol]: binds });\n return fn;\n}\ntoBoundedFunction.symbol = Symbol(\"bounded\");\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function getFunctionBinds<T extends Function>(fn: T) {\n const target = getProp(fn, [toBoundedFunction.symbol], []);\n return target as Bounded[];\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/template.ts"],"names":["PromptTemplateError","FrameworkError","template","constructor","message","context","ValidationPromptTemplateError","PromptTemplate","Serializable","config","functions","trim","text","render","replace","defaults","schema","toJsonSchema","escape","Boolean","customTags","register","validateInput","input","validator","createSchemaValidator","coerceTypes","success","errors","fork","customizer","clone","newConfig","isPlainObject","ValueError","updatedInput","Object","assign","pickBy","_","k","getProp","undefined","view","output","Mustache","tags","identity","match","loadSnapshot","data","createSnapshot"],"mappings":"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","file":"template.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FrameworkError, ValueError } from \"@/errors.js\";\nimport { ObjectLike, PlainObject } from \"@/internals/types.js\";\nimport { clone, identity, isPlainObject, pickBy } from \"remeda\";\nimport Mustache from \"mustache\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { z, ZodType } from \"zod\";\nimport { createSchemaValidator, toJsonSchema } from \"@/internals/helpers/schema.js\";\nimport type { SchemaObject, ValidateFunction } from \"ajv\";\nimport { getProp } from \"@/internals/helpers/object.js\";\n\ntype PostInfer<T> = T extends PlainObject\n ? {\n [K in keyof T]: T[K] extends Date ? string : T[K];\n }\n : T;\ntype InferValue<T> = T extends ZodType<infer A> ? PostInfer<A> : never;\nexport type PromptTemplateRenderFn<K extends ZodType> = (this: InferValue<K>) => any;\n\nexport type PromptTemplateRenderInput<T extends ZodType, T2 extends z.input<T> = z.input<T>> = {\n [K in Extract<keyof T2, string>]: T2[K] | PromptTemplateRenderFn<T> | undefined;\n};\n\nexport interface PromptTemplateInput<T extends ZodType> {\n template: string;\n customTags?: [string, string];\n escape?: boolean;\n schema: SchemaObject;\n defaults?: Partial<InferValue<T>>;\n functions?: Record<string, PromptTemplateRenderFn<T>>;\n}\n\ntype PromptTemplateConstructor<T extends ZodType, N> = N extends ZodType\n ? Omit<PromptTemplateInput<N>, \"schema\" | \"functions\" | \"defaults\"> & {\n schema: N;\n functions?: Record<string, PromptTemplateRenderFn<N | T>>;\n defaults?: Partial<InferValue<N | T>>;\n }\n : Omit<PromptTemplateInput<T>, \"schema\"> & { schema: T | SchemaObject };\n\ntype Customizer<T extends ZodType, N> =\n | ((config: Required<PromptTemplateInput<T>>) => PromptTemplateConstructor<T, N>)\n | ((config: Required<PromptTemplateInput<T>>) => void);\n\nexport class PromptTemplateError<T extends ZodType> extends FrameworkError {\n template: PromptTemplate<T>;\n\n constructor(message: string, template: PromptTemplate<T>, context?: ObjectLike) {\n super(message, [], {\n context,\n });\n this.template = template;\n }\n}\n\nexport class ValidationPromptTemplateError<T extends ZodType> extends PromptTemplateError<T> {}\n\nexport class PromptTemplate<T extends ZodType> extends Serializable {\n protected config: Required<PromptTemplateInput<T>>;\n\n public static functions = {\n trim: () => (text: string, render: (value: string) => string) => {\n return render(text).replace(/(,\\s*$)/g, \"\");\n },\n };\n\n constructor(config: Omit<PromptTemplateInput<T>, \"schema\"> & { schema: T | SchemaObject }) {\n super();\n this.config = {\n ...config,\n defaults: (config.defaults ?? {}) as Partial<InferValue<T>>,\n schema: toJsonSchema(config.schema),\n escape: Boolean(config.escape),\n customTags: config.customTags ?? [\"{{\", \"}}\"],\n functions: {\n ...PromptTemplate.functions,\n ...config.functions,\n },\n };\n }\n\n static {\n this.register();\n }\n\n validateInput(input: unknown): asserts input is T {\n const validator = createSchemaValidator(this.config.schema, {\n coerceTypes: false,\n }) as ValidateFunction<T>;\n\n const success = validator(input);\n if (!success) {\n throw new ValidationPromptTemplateError(\n `Template cannot be rendered because input does not adhere to the template schema.`,\n this,\n {\n errors: validator.errors,\n },\n );\n }\n }\n\n fork(customizer: Customizer<T, SchemaObject>): PromptTemplate<T>;\n fork<R extends ZodType>(customizer: Customizer<T, R>): PromptTemplate<R>;\n fork<R extends ZodType>(\n customizer: Customizer<T, SchemaObject> | Customizer<T, R>,\n ): PromptTemplate<T | R> {\n const config = clone(this.config);\n const newConfig = customizer?.(config) ?? config;\n if (!isPlainObject(newConfig)) {\n throw new ValueError(\"Return type from customizer must be a config or nothing.\");\n }\n return new PromptTemplate(newConfig);\n }\n\n render(input: PromptTemplateRenderInput<T>): string {\n const updatedInput: typeof input = { ...input };\n Object.assign(\n updatedInput,\n pickBy(this.config.defaults, (_, k) => getProp(updatedInput, [k]) === undefined),\n );\n\n this.validateInput(updatedInput);\n const view: Record<string, any> = {\n ...this.config.functions,\n ...updatedInput,\n };\n\n const output = Mustache.render(\n this.config.template,\n view,\n {},\n {\n tags: this.config.customTags,\n ...(!this.config.escape && {\n escape: identity(),\n }),\n },\n );\n\n if (output.match(/\\[object (.+)]/)) {\n throw new ValidationPromptTemplateError(\n \"Rendered template contains incorrectly serialized value!\",\n this,\n {\n output,\n },\n );\n }\n\n return output;\n }\n\n loadSnapshot(data: ReturnType<typeof this.createSnapshot>) {\n this.config = data.config;\n }\n\n createSnapshot() {\n return {\n config: this.config,\n };\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace PromptTemplate {\n export type infer<T> = PromptTemplate<ZodType<T>>;\n}\n"]}
1
+ {"version":3,"sources":["template.ts"],"names":["PromptTemplateError","FrameworkError","template","constructor","message","context","ValidationPromptTemplateError","PromptTemplate","Serializable","config","functions","trim","text","render","replace","defaults","schema","toJsonSchema","escape","Boolean","customTags","register","validateInput","input","validator","createSchemaValidator","coerceTypes","success","errors","fork","customizer","clone","newConfig","isPlainObject","ValueError","updatedInput","Object","assign","pickBy","_","k","getProp","undefined","view","output","Mustache","tags","identity","match","loadSnapshot","data","createSnapshot"],"mappings":"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","file":"template.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FrameworkError, ValueError } from \"@/errors.js\";\nimport { ObjectLike, PlainObject } from \"@/internals/types.js\";\nimport { clone, identity, isPlainObject, pickBy } from \"remeda\";\nimport Mustache from \"mustache\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { z, ZodType } from \"zod\";\nimport { createSchemaValidator, toJsonSchema } from \"@/internals/helpers/schema.js\";\nimport type { SchemaObject, ValidateFunction } from \"ajv\";\nimport { getProp } from \"@/internals/helpers/object.js\";\n\ntype PostInfer<T> = T extends PlainObject\n ? {\n [K in keyof T]: T[K] extends Date ? string : T[K];\n }\n : T;\ntype InferValue<T> = T extends ZodType<infer A> ? PostInfer<A> : never;\nexport type PromptTemplateRenderFn<K extends ZodType> = (this: InferValue<K>) => any;\n\nexport type PromptTemplateRenderInput<T extends ZodType, T2 extends z.input<T> = z.input<T>> = {\n [K in Extract<keyof T2, string>]: T2[K] | PromptTemplateRenderFn<T> | undefined;\n};\n\nexport interface PromptTemplateInput<T extends ZodType> {\n template: string;\n customTags?: [string, string];\n escape?: boolean;\n schema: SchemaObject;\n defaults?: Partial<InferValue<T>>;\n functions?: Record<string, PromptTemplateRenderFn<T>>;\n}\n\ntype PromptTemplateConstructor<T extends ZodType, N> = N extends ZodType\n ? Omit<PromptTemplateInput<N>, \"schema\" | \"functions\" | \"defaults\"> & {\n schema: N;\n functions?: Record<string, PromptTemplateRenderFn<N | T>>;\n defaults?: Partial<InferValue<N | T>>;\n }\n : Omit<PromptTemplateInput<T>, \"schema\"> & { schema: T | SchemaObject };\n\ntype Customizer<T extends ZodType, N> =\n | ((config: Required<PromptTemplateInput<T>>) => PromptTemplateConstructor<T, N>)\n | ((config: Required<PromptTemplateInput<T>>) => void);\n\nexport class PromptTemplateError<T extends ZodType> extends FrameworkError {\n template: PromptTemplate<T>;\n\n constructor(message: string, template: PromptTemplate<T>, context?: ObjectLike) {\n super(message, [], {\n context,\n });\n this.template = template;\n }\n}\n\nexport class ValidationPromptTemplateError<T extends ZodType> extends PromptTemplateError<T> {}\n\nexport class PromptTemplate<T extends ZodType> extends Serializable {\n protected config: Required<PromptTemplateInput<T>>;\n\n public static functions = {\n trim: () => (text: string, render: (value: string) => string) => {\n return render(text).replace(/(,\\s*$)/g, \"\");\n },\n };\n\n constructor(config: Omit<PromptTemplateInput<T>, \"schema\"> & { schema: T | SchemaObject }) {\n super();\n this.config = {\n ...config,\n defaults: (config.defaults ?? {}) as Partial<InferValue<T>>,\n schema: toJsonSchema(config.schema),\n escape: Boolean(config.escape),\n customTags: config.customTags ?? [\"{{\", \"}}\"],\n functions: {\n ...PromptTemplate.functions,\n ...config.functions,\n },\n };\n }\n\n static {\n this.register();\n }\n\n validateInput(input: unknown): asserts input is T {\n const validator = createSchemaValidator(this.config.schema, {\n coerceTypes: false,\n }) as ValidateFunction<T>;\n\n const success = validator(input);\n if (!success) {\n throw new ValidationPromptTemplateError(\n `Template cannot be rendered because input does not adhere to the template schema.`,\n this,\n {\n errors: validator.errors,\n },\n );\n }\n }\n\n fork(customizer: Customizer<T, SchemaObject>): PromptTemplate<T>;\n fork<R extends ZodType>(customizer: Customizer<T, R>): PromptTemplate<R>;\n fork<R extends ZodType>(\n customizer: Customizer<T, SchemaObject> | Customizer<T, R>,\n ): PromptTemplate<T | R> {\n const config = clone(this.config);\n const newConfig = customizer?.(config) ?? config;\n if (!isPlainObject(newConfig)) {\n throw new ValueError(\"Return type from customizer must be a config or nothing.\");\n }\n return new PromptTemplate(newConfig);\n }\n\n render(input: PromptTemplateRenderInput<T>): string {\n const updatedInput: typeof input = { ...input };\n Object.assign(\n updatedInput,\n pickBy(this.config.defaults, (_, k) => getProp(updatedInput, [k]) === undefined),\n );\n\n this.validateInput(updatedInput);\n const view: Record<string, any> = {\n ...this.config.functions,\n ...updatedInput,\n };\n\n const output = Mustache.render(\n this.config.template,\n view,\n {},\n {\n tags: this.config.customTags,\n ...(!this.config.escape && {\n escape: identity(),\n }),\n },\n );\n\n if (output.match(/\\[object (.+)]/)) {\n throw new ValidationPromptTemplateError(\n \"Rendered template contains incorrectly serialized value!\",\n this,\n {\n output,\n },\n );\n }\n\n return output;\n }\n\n loadSnapshot(data: ReturnType<typeof this.createSnapshot>) {\n this.config = data.config;\n }\n\n createSnapshot() {\n return {\n config: this.config,\n };\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace PromptTemplate {\n export type infer<T> = PromptTemplate<ZodType<T>>;\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { FrameworkError } from './errors.cjs';
2
- import { ObjectLike, PlainObject } from './internals/types.cjs';
2
+ import { PlainObject, ObjectLike } from './internals/types.cjs';
3
3
  import { Serializable } from './internals/serializable.cjs';
4
4
  import { ZodType, z } from 'zod';
5
5
  import { SchemaObject } from 'ajv';
@@ -1,5 +1,5 @@
1
1
  import { FrameworkError } from './errors.js';
2
- import { ObjectLike, PlainObject } from './internals/types.js';
2
+ import { PlainObject, ObjectLike } from './internals/types.js';
3
3
  import { Serializable } from './internals/serializable.js';
4
4
  import { ZodType, z } from 'zod';
5
5
  import { SchemaObject } from 'ajv';
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/template.ts"],"names":["PromptTemplateError","FrameworkError","template","constructor","message","context","ValidationPromptTemplateError","PromptTemplate","Serializable","config","functions","trim","text","render","replace","defaults","schema","toJsonSchema","escape","Boolean","customTags","register","validateInput","input","validator","createSchemaValidator","coerceTypes","success","errors","fork","customizer","clone","newConfig","isPlainObject","ValueError","updatedInput","Object","assign","pickBy","_","k","getProp","undefined","view","output","Mustache","tags","identity","match","loadSnapshot","data","createSnapshot"],"mappings":"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","file":"template.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FrameworkError, ValueError } from \"@/errors.js\";\nimport { ObjectLike, PlainObject } from \"@/internals/types.js\";\nimport { clone, identity, isPlainObject, pickBy } from \"remeda\";\nimport Mustache from \"mustache\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { z, ZodType } from \"zod\";\nimport { createSchemaValidator, toJsonSchema } from \"@/internals/helpers/schema.js\";\nimport type { SchemaObject, ValidateFunction } from \"ajv\";\nimport { getProp } from \"@/internals/helpers/object.js\";\n\ntype PostInfer<T> = T extends PlainObject\n ? {\n [K in keyof T]: T[K] extends Date ? string : T[K];\n }\n : T;\ntype InferValue<T> = T extends ZodType<infer A> ? PostInfer<A> : never;\nexport type PromptTemplateRenderFn<K extends ZodType> = (this: InferValue<K>) => any;\n\nexport type PromptTemplateRenderInput<T extends ZodType, T2 extends z.input<T> = z.input<T>> = {\n [K in Extract<keyof T2, string>]: T2[K] | PromptTemplateRenderFn<T> | undefined;\n};\n\nexport interface PromptTemplateInput<T extends ZodType> {\n template: string;\n customTags?: [string, string];\n escape?: boolean;\n schema: SchemaObject;\n defaults?: Partial<InferValue<T>>;\n functions?: Record<string, PromptTemplateRenderFn<T>>;\n}\n\ntype PromptTemplateConstructor<T extends ZodType, N> = N extends ZodType\n ? Omit<PromptTemplateInput<N>, \"schema\" | \"functions\" | \"defaults\"> & {\n schema: N;\n functions?: Record<string, PromptTemplateRenderFn<N | T>>;\n defaults?: Partial<InferValue<N | T>>;\n }\n : Omit<PromptTemplateInput<T>, \"schema\"> & { schema: T | SchemaObject };\n\ntype Customizer<T extends ZodType, N> =\n | ((config: Required<PromptTemplateInput<T>>) => PromptTemplateConstructor<T, N>)\n | ((config: Required<PromptTemplateInput<T>>) => void);\n\nexport class PromptTemplateError<T extends ZodType> extends FrameworkError {\n template: PromptTemplate<T>;\n\n constructor(message: string, template: PromptTemplate<T>, context?: ObjectLike) {\n super(message, [], {\n context,\n });\n this.template = template;\n }\n}\n\nexport class ValidationPromptTemplateError<T extends ZodType> extends PromptTemplateError<T> {}\n\nexport class PromptTemplate<T extends ZodType> extends Serializable {\n protected config: Required<PromptTemplateInput<T>>;\n\n public static functions = {\n trim: () => (text: string, render: (value: string) => string) => {\n return render(text).replace(/(,\\s*$)/g, \"\");\n },\n };\n\n constructor(config: Omit<PromptTemplateInput<T>, \"schema\"> & { schema: T | SchemaObject }) {\n super();\n this.config = {\n ...config,\n defaults: (config.defaults ?? {}) as Partial<InferValue<T>>,\n schema: toJsonSchema(config.schema),\n escape: Boolean(config.escape),\n customTags: config.customTags ?? [\"{{\", \"}}\"],\n functions: {\n ...PromptTemplate.functions,\n ...config.functions,\n },\n };\n }\n\n static {\n this.register();\n }\n\n validateInput(input: unknown): asserts input is T {\n const validator = createSchemaValidator(this.config.schema, {\n coerceTypes: false,\n }) as ValidateFunction<T>;\n\n const success = validator(input);\n if (!success) {\n throw new ValidationPromptTemplateError(\n `Template cannot be rendered because input does not adhere to the template schema.`,\n this,\n {\n errors: validator.errors,\n },\n );\n }\n }\n\n fork(customizer: Customizer<T, SchemaObject>): PromptTemplate<T>;\n fork<R extends ZodType>(customizer: Customizer<T, R>): PromptTemplate<R>;\n fork<R extends ZodType>(\n customizer: Customizer<T, SchemaObject> | Customizer<T, R>,\n ): PromptTemplate<T | R> {\n const config = clone(this.config);\n const newConfig = customizer?.(config) ?? config;\n if (!isPlainObject(newConfig)) {\n throw new ValueError(\"Return type from customizer must be a config or nothing.\");\n }\n return new PromptTemplate(newConfig);\n }\n\n render(input: PromptTemplateRenderInput<T>): string {\n const updatedInput: typeof input = { ...input };\n Object.assign(\n updatedInput,\n pickBy(this.config.defaults, (_, k) => getProp(updatedInput, [k]) === undefined),\n );\n\n this.validateInput(updatedInput);\n const view: Record<string, any> = {\n ...this.config.functions,\n ...updatedInput,\n };\n\n const output = Mustache.render(\n this.config.template,\n view,\n {},\n {\n tags: this.config.customTags,\n ...(!this.config.escape && {\n escape: identity(),\n }),\n },\n );\n\n if (output.match(/\\[object (.+)]/)) {\n throw new ValidationPromptTemplateError(\n \"Rendered template contains incorrectly serialized value!\",\n this,\n {\n output,\n },\n );\n }\n\n return output;\n }\n\n loadSnapshot(data: ReturnType<typeof this.createSnapshot>) {\n this.config = data.config;\n }\n\n createSnapshot() {\n return {\n config: this.config,\n };\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace PromptTemplate {\n export type infer<T> = PromptTemplate<ZodType<T>>;\n}\n"]}
1
+ {"version":3,"sources":["template.ts"],"names":["PromptTemplateError","FrameworkError","template","constructor","message","context","ValidationPromptTemplateError","PromptTemplate","Serializable","config","functions","trim","text","render","replace","defaults","schema","toJsonSchema","escape","Boolean","customTags","register","validateInput","input","validator","createSchemaValidator","coerceTypes","success","errors","fork","customizer","clone","newConfig","isPlainObject","ValueError","updatedInput","Object","assign","pickBy","_","k","getProp","undefined","view","output","Mustache","tags","identity","match","loadSnapshot","data","createSnapshot"],"mappings":"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","file":"template.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FrameworkError, ValueError } from \"@/errors.js\";\nimport { ObjectLike, PlainObject } from \"@/internals/types.js\";\nimport { clone, identity, isPlainObject, pickBy } from \"remeda\";\nimport Mustache from \"mustache\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { z, ZodType } from \"zod\";\nimport { createSchemaValidator, toJsonSchema } from \"@/internals/helpers/schema.js\";\nimport type { SchemaObject, ValidateFunction } from \"ajv\";\nimport { getProp } from \"@/internals/helpers/object.js\";\n\ntype PostInfer<T> = T extends PlainObject\n ? {\n [K in keyof T]: T[K] extends Date ? string : T[K];\n }\n : T;\ntype InferValue<T> = T extends ZodType<infer A> ? PostInfer<A> : never;\nexport type PromptTemplateRenderFn<K extends ZodType> = (this: InferValue<K>) => any;\n\nexport type PromptTemplateRenderInput<T extends ZodType, T2 extends z.input<T> = z.input<T>> = {\n [K in Extract<keyof T2, string>]: T2[K] | PromptTemplateRenderFn<T> | undefined;\n};\n\nexport interface PromptTemplateInput<T extends ZodType> {\n template: string;\n customTags?: [string, string];\n escape?: boolean;\n schema: SchemaObject;\n defaults?: Partial<InferValue<T>>;\n functions?: Record<string, PromptTemplateRenderFn<T>>;\n}\n\ntype PromptTemplateConstructor<T extends ZodType, N> = N extends ZodType\n ? Omit<PromptTemplateInput<N>, \"schema\" | \"functions\" | \"defaults\"> & {\n schema: N;\n functions?: Record<string, PromptTemplateRenderFn<N | T>>;\n defaults?: Partial<InferValue<N | T>>;\n }\n : Omit<PromptTemplateInput<T>, \"schema\"> & { schema: T | SchemaObject };\n\ntype Customizer<T extends ZodType, N> =\n | ((config: Required<PromptTemplateInput<T>>) => PromptTemplateConstructor<T, N>)\n | ((config: Required<PromptTemplateInput<T>>) => void);\n\nexport class PromptTemplateError<T extends ZodType> extends FrameworkError {\n template: PromptTemplate<T>;\n\n constructor(message: string, template: PromptTemplate<T>, context?: ObjectLike) {\n super(message, [], {\n context,\n });\n this.template = template;\n }\n}\n\nexport class ValidationPromptTemplateError<T extends ZodType> extends PromptTemplateError<T> {}\n\nexport class PromptTemplate<T extends ZodType> extends Serializable {\n protected config: Required<PromptTemplateInput<T>>;\n\n public static functions = {\n trim: () => (text: string, render: (value: string) => string) => {\n return render(text).replace(/(,\\s*$)/g, \"\");\n },\n };\n\n constructor(config: Omit<PromptTemplateInput<T>, \"schema\"> & { schema: T | SchemaObject }) {\n super();\n this.config = {\n ...config,\n defaults: (config.defaults ?? {}) as Partial<InferValue<T>>,\n schema: toJsonSchema(config.schema),\n escape: Boolean(config.escape),\n customTags: config.customTags ?? [\"{{\", \"}}\"],\n functions: {\n ...PromptTemplate.functions,\n ...config.functions,\n },\n };\n }\n\n static {\n this.register();\n }\n\n validateInput(input: unknown): asserts input is T {\n const validator = createSchemaValidator(this.config.schema, {\n coerceTypes: false,\n }) as ValidateFunction<T>;\n\n const success = validator(input);\n if (!success) {\n throw new ValidationPromptTemplateError(\n `Template cannot be rendered because input does not adhere to the template schema.`,\n this,\n {\n errors: validator.errors,\n },\n );\n }\n }\n\n fork(customizer: Customizer<T, SchemaObject>): PromptTemplate<T>;\n fork<R extends ZodType>(customizer: Customizer<T, R>): PromptTemplate<R>;\n fork<R extends ZodType>(\n customizer: Customizer<T, SchemaObject> | Customizer<T, R>,\n ): PromptTemplate<T | R> {\n const config = clone(this.config);\n const newConfig = customizer?.(config) ?? config;\n if (!isPlainObject(newConfig)) {\n throw new ValueError(\"Return type from customizer must be a config or nothing.\");\n }\n return new PromptTemplate(newConfig);\n }\n\n render(input: PromptTemplateRenderInput<T>): string {\n const updatedInput: typeof input = { ...input };\n Object.assign(\n updatedInput,\n pickBy(this.config.defaults, (_, k) => getProp(updatedInput, [k]) === undefined),\n );\n\n this.validateInput(updatedInput);\n const view: Record<string, any> = {\n ...this.config.functions,\n ...updatedInput,\n };\n\n const output = Mustache.render(\n this.config.template,\n view,\n {},\n {\n tags: this.config.customTags,\n ...(!this.config.escape && {\n escape: identity(),\n }),\n },\n );\n\n if (output.match(/\\[object (.+)]/)) {\n throw new ValidationPromptTemplateError(\n \"Rendered template contains incorrectly serialized value!\",\n this,\n {\n output,\n },\n );\n }\n\n return output;\n }\n\n loadSnapshot(data: ReturnType<typeof this.createSnapshot>) {\n this.config = data.config;\n }\n\n createSnapshot() {\n return {\n config: this.config,\n };\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace PromptTemplate {\n export type infer<T> = PromptTemplate<ZodType<T>>;\n}\n"]}