@openclaw/mattermost 2026.2.21 → 2026.6.11-beta.2

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 (787) hide show
  1. package/README.md +13 -0
  2. package/dist/accounts-DnAHfb5f.js +438 -0
  3. package/dist/api.js +2 -0
  4. package/dist/channel-plugin-api.js +31 -0
  5. package/dist/channel-plugin-runtime-MXClEU4F.js +1160 -0
  6. package/dist/channel-plugin-runtime.js +2 -0
  7. package/dist/channel.runtime-W-pjr9zL.js +2671 -0
  8. package/dist/doctor-contract-api.js +2 -0
  9. package/dist/doctor-contract-ttH0DCuq.js +7 -0
  10. package/dist/gateway-auth-api.js +2 -0
  11. package/dist/gateway-auth-bypass-BHgOAkk8.js +37 -0
  12. package/dist/index.js +31 -0
  13. package/dist/monitor-auth-BiDuyvOc.js +183 -0
  14. package/dist/policy-api.js +2 -0
  15. package/dist/runtime-CNB4YGqJ.js +8 -0
  16. package/dist/runtime-api.js +24 -0
  17. package/dist/secret-contract-Cx0LUNXy.js +44 -0
  18. package/dist/secret-contract-api.js +2 -0
  19. package/dist/setup-entry.js +15 -0
  20. package/dist/slash-route-api.js +2 -0
  21. package/dist/slash-state-I1qleAHM.js +2251 -0
  22. package/node_modules/ws/LICENSE +20 -0
  23. package/node_modules/ws/README.md +548 -0
  24. package/node_modules/ws/browser.js +8 -0
  25. package/node_modules/ws/index.js +22 -0
  26. package/node_modules/ws/lib/buffer-util.js +131 -0
  27. package/node_modules/ws/lib/constants.js +19 -0
  28. package/node_modules/ws/lib/event-target.js +292 -0
  29. package/node_modules/ws/lib/extension.js +203 -0
  30. package/node_modules/ws/lib/limiter.js +55 -0
  31. package/node_modules/ws/lib/permessage-deflate.js +528 -0
  32. package/node_modules/ws/lib/receiver.js +760 -0
  33. package/node_modules/ws/lib/sender.js +607 -0
  34. package/node_modules/ws/lib/stream.js +161 -0
  35. package/node_modules/ws/lib/subprotocol.js +62 -0
  36. package/node_modules/ws/lib/validation.js +152 -0
  37. package/node_modules/ws/lib/websocket-server.js +562 -0
  38. package/node_modules/ws/lib/websocket.js +1407 -0
  39. package/node_modules/ws/package.json +70 -0
  40. package/node_modules/ws/wrapper.mjs +21 -0
  41. package/node_modules/zod/LICENSE +21 -0
  42. package/node_modules/zod/README.md +191 -0
  43. package/node_modules/zod/index.cjs +33 -0
  44. package/node_modules/zod/index.d.cts +4 -0
  45. package/node_modules/zod/index.d.ts +4 -0
  46. package/node_modules/zod/index.js +4 -0
  47. package/node_modules/zod/locales/index.cjs +17 -0
  48. package/node_modules/zod/locales/index.d.cts +1 -0
  49. package/node_modules/zod/locales/index.d.ts +1 -0
  50. package/node_modules/zod/locales/index.js +1 -0
  51. package/node_modules/zod/locales/package.json +7 -0
  52. package/node_modules/zod/mini/index.cjs +32 -0
  53. package/node_modules/zod/mini/index.d.cts +3 -0
  54. package/node_modules/zod/mini/index.d.ts +3 -0
  55. package/node_modules/zod/mini/index.js +3 -0
  56. package/node_modules/zod/mini/package.json +7 -0
  57. package/node_modules/zod/package.json +135 -0
  58. package/node_modules/zod/src/index.ts +4 -0
  59. package/node_modules/zod/src/locales/index.ts +1 -0
  60. package/node_modules/zod/src/mini/index.ts +3 -0
  61. package/node_modules/zod/src/v3/ZodError.ts +330 -0
  62. package/node_modules/zod/src/v3/benchmarks/datetime.ts +58 -0
  63. package/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +80 -0
  64. package/node_modules/zod/src/v3/benchmarks/index.ts +59 -0
  65. package/node_modules/zod/src/v3/benchmarks/ipv4.ts +57 -0
  66. package/node_modules/zod/src/v3/benchmarks/object.ts +69 -0
  67. package/node_modules/zod/src/v3/benchmarks/primitives.ts +162 -0
  68. package/node_modules/zod/src/v3/benchmarks/realworld.ts +63 -0
  69. package/node_modules/zod/src/v3/benchmarks/string.ts +55 -0
  70. package/node_modules/zod/src/v3/benchmarks/union.ts +80 -0
  71. package/node_modules/zod/src/v3/errors.ts +13 -0
  72. package/node_modules/zod/src/v3/external.ts +6 -0
  73. package/node_modules/zod/src/v3/helpers/enumUtil.ts +17 -0
  74. package/node_modules/zod/src/v3/helpers/errorUtil.ts +8 -0
  75. package/node_modules/zod/src/v3/helpers/parseUtil.ts +176 -0
  76. package/node_modules/zod/src/v3/helpers/partialUtil.ts +34 -0
  77. package/node_modules/zod/src/v3/helpers/typeAliases.ts +2 -0
  78. package/node_modules/zod/src/v3/helpers/util.ts +224 -0
  79. package/node_modules/zod/src/v3/index.ts +4 -0
  80. package/node_modules/zod/src/v3/locales/en.ts +124 -0
  81. package/node_modules/zod/src/v3/standard-schema.ts +113 -0
  82. package/node_modules/zod/src/v3/tests/Mocker.ts +54 -0
  83. package/node_modules/zod/src/v3/tests/all-errors.test.ts +157 -0
  84. package/node_modules/zod/src/v3/tests/anyunknown.test.ts +28 -0
  85. package/node_modules/zod/src/v3/tests/array.test.ts +71 -0
  86. package/node_modules/zod/src/v3/tests/async-parsing.test.ts +388 -0
  87. package/node_modules/zod/src/v3/tests/async-refinements.test.ts +46 -0
  88. package/node_modules/zod/src/v3/tests/base.test.ts +29 -0
  89. package/node_modules/zod/src/v3/tests/bigint.test.ts +55 -0
  90. package/node_modules/zod/src/v3/tests/branded.test.ts +53 -0
  91. package/node_modules/zod/src/v3/tests/catch.test.ts +220 -0
  92. package/node_modules/zod/src/v3/tests/coerce.test.ts +133 -0
  93. package/node_modules/zod/src/v3/tests/complex.test.ts +70 -0
  94. package/node_modules/zod/src/v3/tests/custom.test.ts +31 -0
  95. package/node_modules/zod/src/v3/tests/date.test.ts +32 -0
  96. package/node_modules/zod/src/v3/tests/deepmasking.test.ts +186 -0
  97. package/node_modules/zod/src/v3/tests/default.test.ts +112 -0
  98. package/node_modules/zod/src/v3/tests/description.test.ts +33 -0
  99. package/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +315 -0
  100. package/node_modules/zod/src/v3/tests/enum.test.ts +80 -0
  101. package/node_modules/zod/src/v3/tests/error.test.ts +551 -0
  102. package/node_modules/zod/src/v3/tests/firstparty.test.ts +87 -0
  103. package/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +21 -0
  104. package/node_modules/zod/src/v3/tests/function.test.ts +261 -0
  105. package/node_modules/zod/src/v3/tests/generics.test.ts +48 -0
  106. package/node_modules/zod/src/v3/tests/instanceof.test.ts +37 -0
  107. package/node_modules/zod/src/v3/tests/intersection.test.ts +110 -0
  108. package/node_modules/zod/src/v3/tests/language-server.source.ts +76 -0
  109. package/node_modules/zod/src/v3/tests/language-server.test.ts +207 -0
  110. package/node_modules/zod/src/v3/tests/literal.test.ts +36 -0
  111. package/node_modules/zod/src/v3/tests/map.test.ts +110 -0
  112. package/node_modules/zod/src/v3/tests/masking.test.ts +4 -0
  113. package/node_modules/zod/src/v3/tests/mocker.test.ts +19 -0
  114. package/node_modules/zod/src/v3/tests/nan.test.ts +24 -0
  115. package/node_modules/zod/src/v3/tests/nativeEnum.test.ts +87 -0
  116. package/node_modules/zod/src/v3/tests/nullable.test.ts +42 -0
  117. package/node_modules/zod/src/v3/tests/number.test.ts +176 -0
  118. package/node_modules/zod/src/v3/tests/object-augmentation.test.ts +29 -0
  119. package/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +29 -0
  120. package/node_modules/zod/src/v3/tests/object.test.ts +434 -0
  121. package/node_modules/zod/src/v3/tests/optional.test.ts +42 -0
  122. package/node_modules/zod/src/v3/tests/parseUtil.test.ts +23 -0
  123. package/node_modules/zod/src/v3/tests/parser.test.ts +41 -0
  124. package/node_modules/zod/src/v3/tests/partials.test.ts +243 -0
  125. package/node_modules/zod/src/v3/tests/pickomit.test.ts +111 -0
  126. package/node_modules/zod/src/v3/tests/pipeline.test.ts +29 -0
  127. package/node_modules/zod/src/v3/tests/preprocess.test.ts +186 -0
  128. package/node_modules/zod/src/v3/tests/primitive.test.ts +440 -0
  129. package/node_modules/zod/src/v3/tests/promise.test.ts +90 -0
  130. package/node_modules/zod/src/v3/tests/readonly.test.ts +194 -0
  131. package/node_modules/zod/src/v3/tests/record.test.ts +171 -0
  132. package/node_modules/zod/src/v3/tests/recursive.test.ts +197 -0
  133. package/node_modules/zod/src/v3/tests/refine.test.ts +313 -0
  134. package/node_modules/zod/src/v3/tests/safeparse.test.ts +27 -0
  135. package/node_modules/zod/src/v3/tests/set.test.ts +142 -0
  136. package/node_modules/zod/src/v3/tests/standard-schema.test.ts +83 -0
  137. package/node_modules/zod/src/v3/tests/string.test.ts +916 -0
  138. package/node_modules/zod/src/v3/tests/transformer.test.ts +233 -0
  139. package/node_modules/zod/src/v3/tests/tuple.test.ts +90 -0
  140. package/node_modules/zod/src/v3/tests/unions.test.ts +57 -0
  141. package/node_modules/zod/src/v3/tests/validations.test.ts +133 -0
  142. package/node_modules/zod/src/v3/tests/void.test.ts +15 -0
  143. package/node_modules/zod/src/v3/types.ts +5138 -0
  144. package/node_modules/zod/src/v4/classic/checks.ts +32 -0
  145. package/node_modules/zod/src/v4/classic/coerce.ts +27 -0
  146. package/node_modules/zod/src/v4/classic/compat.ts +70 -0
  147. package/node_modules/zod/src/v4/classic/errors.ts +82 -0
  148. package/node_modules/zod/src/v4/classic/external.ts +52 -0
  149. package/node_modules/zod/src/v4/classic/from-json-schema.ts +659 -0
  150. package/node_modules/zod/src/v4/classic/index.ts +5 -0
  151. package/node_modules/zod/src/v4/classic/iso.ts +90 -0
  152. package/node_modules/zod/src/v4/classic/parse.ts +82 -0
  153. package/node_modules/zod/src/v4/classic/schemas.ts +2672 -0
  154. package/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +26 -0
  155. package/node_modules/zod/src/v4/classic/tests/apply.test.ts +59 -0
  156. package/node_modules/zod/src/v4/classic/tests/array.test.ts +264 -0
  157. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +216 -0
  158. package/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +381 -0
  159. package/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +68 -0
  160. package/node_modules/zod/src/v4/classic/tests/base.test.ts +7 -0
  161. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +54 -0
  162. package/node_modules/zod/src/v4/classic/tests/brand.test.ts +106 -0
  163. package/node_modules/zod/src/v4/classic/tests/catch.test.ts +326 -0
  164. package/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +20 -0
  165. package/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +573 -0
  166. package/node_modules/zod/src/v4/classic/tests/codec.test.ts +703 -0
  167. package/node_modules/zod/src/v4/classic/tests/coerce.test.ts +160 -0
  168. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +374 -0
  169. package/node_modules/zod/src/v4/classic/tests/custom.test.ts +40 -0
  170. package/node_modules/zod/src/v4/classic/tests/date.test.ts +62 -0
  171. package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +302 -0
  172. package/node_modules/zod/src/v4/classic/tests/default.test.ts +409 -0
  173. package/node_modules/zod/src/v4/classic/tests/describe-meta-checks.test.ts +27 -0
  174. package/node_modules/zod/src/v4/classic/tests/description.test.ts +32 -0
  175. package/node_modules/zod/src/v4/classic/tests/detached-methods.test.ts +197 -0
  176. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +694 -0
  177. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +285 -0
  178. package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +807 -0
  179. package/node_modules/zod/src/v4/classic/tests/error.test.ts +711 -0
  180. package/node_modules/zod/src/v4/classic/tests/file.test.ts +96 -0
  181. package/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +179 -0
  182. package/node_modules/zod/src/v4/classic/tests/fix-json-issue.test.ts +26 -0
  183. package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +895 -0
  184. package/node_modules/zod/src/v4/classic/tests/function.test.ts +360 -0
  185. package/node_modules/zod/src/v4/classic/tests/generics.test.ts +72 -0
  186. package/node_modules/zod/src/v4/classic/tests/global-config.test.ts +39 -0
  187. package/node_modules/zod/src/v4/classic/tests/hash.test.ts +68 -0
  188. package/node_modules/zod/src/v4/classic/tests/index.test.ts +939 -0
  189. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +60 -0
  190. package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +198 -0
  191. package/node_modules/zod/src/v4/classic/tests/jitless-allows-eval.test.ts +46 -0
  192. package/node_modules/zod/src/v4/classic/tests/json.test.ts +109 -0
  193. package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +227 -0
  194. package/node_modules/zod/src/v4/classic/tests/literal.test.ts +117 -0
  195. package/node_modules/zod/src/v4/classic/tests/locales_ka.test.ts +29 -0
  196. package/node_modules/zod/src/v4/classic/tests/locales_ro.test.ts +24 -0
  197. package/node_modules/zod/src/v4/classic/tests/map.test.ts +330 -0
  198. package/node_modules/zod/src/v4/classic/tests/nan.test.ts +21 -0
  199. package/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +168 -0
  200. package/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +101 -0
  201. package/node_modules/zod/src/v4/classic/tests/nullable.test.ts +22 -0
  202. package/node_modules/zod/src/v4/classic/tests/number.test.ts +325 -0
  203. package/node_modules/zod/src/v4/classic/tests/object.test.ts +717 -0
  204. package/node_modules/zod/src/v4/classic/tests/optional.test.ts +333 -0
  205. package/node_modules/zod/src/v4/classic/tests/partial.test.ts +450 -0
  206. package/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +211 -0
  207. package/node_modules/zod/src/v4/classic/tests/pipe.test.ts +101 -0
  208. package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +74 -0
  209. package/node_modules/zod/src/v4/classic/tests/preprocess-types.test.ts +26 -0
  210. package/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +351 -0
  211. package/node_modules/zod/src/v4/classic/tests/primitive.test.ts +175 -0
  212. package/node_modules/zod/src/v4/classic/tests/promise.test.ts +81 -0
  213. package/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +23 -0
  214. package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +252 -0
  215. package/node_modules/zod/src/v4/classic/tests/record.test.ts +717 -0
  216. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +631 -0
  217. package/node_modules/zod/src/v4/classic/tests/refine.test.ts +633 -0
  218. package/node_modules/zod/src/v4/classic/tests/registries.test.ts +243 -0
  219. package/node_modules/zod/src/v4/classic/tests/set.test.ts +181 -0
  220. package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +134 -0
  221. package/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +125 -0
  222. package/node_modules/zod/src/v4/classic/tests/string.test.ts +1224 -0
  223. package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +106 -0
  224. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +771 -0
  225. package/node_modules/zod/src/v4/classic/tests/to-json-schema-methods.test.ts +438 -0
  226. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +3125 -0
  227. package/node_modules/zod/src/v4/classic/tests/transform.test.ts +378 -0
  228. package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +496 -0
  229. package/node_modules/zod/src/v4/classic/tests/union.test.ts +273 -0
  230. package/node_modules/zod/src/v4/classic/tests/url.test.ts +13 -0
  231. package/node_modules/zod/src/v4/classic/tests/validations.test.ts +283 -0
  232. package/node_modules/zod/src/v4/classic/tests/void.test.ts +12 -0
  233. package/node_modules/zod/src/v4/core/api.ts +1823 -0
  234. package/node_modules/zod/src/v4/core/checks.ts +1293 -0
  235. package/node_modules/zod/src/v4/core/config.ts +15 -0
  236. package/node_modules/zod/src/v4/core/core.ts +153 -0
  237. package/node_modules/zod/src/v4/core/doc.ts +44 -0
  238. package/node_modules/zod/src/v4/core/errors.ts +455 -0
  239. package/node_modules/zod/src/v4/core/index.ts +16 -0
  240. package/node_modules/zod/src/v4/core/json-schema-generator.ts +126 -0
  241. package/node_modules/zod/src/v4/core/json-schema-processors.ts +666 -0
  242. package/node_modules/zod/src/v4/core/json-schema.ts +147 -0
  243. package/node_modules/zod/src/v4/core/parse.ts +195 -0
  244. package/node_modules/zod/src/v4/core/regexes.ts +190 -0
  245. package/node_modules/zod/src/v4/core/registries.ts +105 -0
  246. package/node_modules/zod/src/v4/core/schemas.ts +4730 -0
  247. package/node_modules/zod/src/v4/core/standard-schema.ts +159 -0
  248. package/node_modules/zod/src/v4/core/tests/extend.test.ts +59 -0
  249. package/node_modules/zod/src/v4/core/tests/index.test.ts +46 -0
  250. package/node_modules/zod/src/v4/core/tests/locales/be.test.ts +124 -0
  251. package/node_modules/zod/src/v4/core/tests/locales/el.test.ts +215 -0
  252. package/node_modules/zod/src/v4/core/tests/locales/en.test.ts +22 -0
  253. package/node_modules/zod/src/v4/core/tests/locales/es.test.ts +181 -0
  254. package/node_modules/zod/src/v4/core/tests/locales/fr.test.ts +72 -0
  255. package/node_modules/zod/src/v4/core/tests/locales/he.test.ts +379 -0
  256. package/node_modules/zod/src/v4/core/tests/locales/hr.test.ts +163 -0
  257. package/node_modules/zod/src/v4/core/tests/locales/nl.test.ts +46 -0
  258. package/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +128 -0
  259. package/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +69 -0
  260. package/node_modules/zod/src/v4/core/tests/locales/uz.test.ts +105 -0
  261. package/node_modules/zod/src/v4/core/tests/record-constructor.test.ts +125 -0
  262. package/node_modules/zod/src/v4/core/tests/recursive-tuples.test.ts +45 -0
  263. package/node_modules/zod/src/v4/core/to-json-schema.ts +622 -0
  264. package/node_modules/zod/src/v4/core/util.ts +983 -0
  265. package/node_modules/zod/src/v4/core/versions.ts +5 -0
  266. package/node_modules/zod/src/v4/core/zsf.ts +323 -0
  267. package/node_modules/zod/src/v4/index.ts +4 -0
  268. package/node_modules/zod/src/v4/locales/ar.ts +115 -0
  269. package/node_modules/zod/src/v4/locales/az.ts +111 -0
  270. package/node_modules/zod/src/v4/locales/be.ts +176 -0
  271. package/node_modules/zod/src/v4/locales/bg.ts +128 -0
  272. package/node_modules/zod/src/v4/locales/ca.ts +116 -0
  273. package/node_modules/zod/src/v4/locales/cs.ts +118 -0
  274. package/node_modules/zod/src/v4/locales/da.ts +123 -0
  275. package/node_modules/zod/src/v4/locales/de.ts +116 -0
  276. package/node_modules/zod/src/v4/locales/el.ts +121 -0
  277. package/node_modules/zod/src/v4/locales/en.ts +123 -0
  278. package/node_modules/zod/src/v4/locales/eo.ts +118 -0
  279. package/node_modules/zod/src/v4/locales/es.ts +141 -0
  280. package/node_modules/zod/src/v4/locales/fa.ts +126 -0
  281. package/node_modules/zod/src/v4/locales/fi.ts +121 -0
  282. package/node_modules/zod/src/v4/locales/fr-CA.ts +116 -0
  283. package/node_modules/zod/src/v4/locales/fr.ts +132 -0
  284. package/node_modules/zod/src/v4/locales/he.ts +246 -0
  285. package/node_modules/zod/src/v4/locales/hr.ts +131 -0
  286. package/node_modules/zod/src/v4/locales/hu.ts +117 -0
  287. package/node_modules/zod/src/v4/locales/hy.ts +164 -0
  288. package/node_modules/zod/src/v4/locales/id.ts +115 -0
  289. package/node_modules/zod/src/v4/locales/index.ts +52 -0
  290. package/node_modules/zod/src/v4/locales/is.ts +119 -0
  291. package/node_modules/zod/src/v4/locales/it.ts +116 -0
  292. package/node_modules/zod/src/v4/locales/ja.ts +114 -0
  293. package/node_modules/zod/src/v4/locales/ka.ts +123 -0
  294. package/node_modules/zod/src/v4/locales/kh.ts +7 -0
  295. package/node_modules/zod/src/v4/locales/km.ts +119 -0
  296. package/node_modules/zod/src/v4/locales/ko.ts +121 -0
  297. package/node_modules/zod/src/v4/locales/lt.ts +239 -0
  298. package/node_modules/zod/src/v4/locales/mk.ts +118 -0
  299. package/node_modules/zod/src/v4/locales/ms.ts +115 -0
  300. package/node_modules/zod/src/v4/locales/nl.ts +121 -0
  301. package/node_modules/zod/src/v4/locales/no.ts +116 -0
  302. package/node_modules/zod/src/v4/locales/ota.ts +117 -0
  303. package/node_modules/zod/src/v4/locales/pl.ts +118 -0
  304. package/node_modules/zod/src/v4/locales/ps.ts +126 -0
  305. package/node_modules/zod/src/v4/locales/pt.ts +116 -0
  306. package/node_modules/zod/src/v4/locales/ro.ts +129 -0
  307. package/node_modules/zod/src/v4/locales/ru.ts +176 -0
  308. package/node_modules/zod/src/v4/locales/sl.ts +118 -0
  309. package/node_modules/zod/src/v4/locales/sv.ts +119 -0
  310. package/node_modules/zod/src/v4/locales/ta.ts +118 -0
  311. package/node_modules/zod/src/v4/locales/th.ts +119 -0
  312. package/node_modules/zod/src/v4/locales/tr.ts +111 -0
  313. package/node_modules/zod/src/v4/locales/ua.ts +7 -0
  314. package/node_modules/zod/src/v4/locales/uk.ts +117 -0
  315. package/node_modules/zod/src/v4/locales/ur.ts +119 -0
  316. package/node_modules/zod/src/v4/locales/uz.ts +117 -0
  317. package/node_modules/zod/src/v4/locales/vi.ts +117 -0
  318. package/node_modules/zod/src/v4/locales/yo.ts +124 -0
  319. package/node_modules/zod/src/v4/locales/zh-CN.ts +116 -0
  320. package/node_modules/zod/src/v4/locales/zh-TW.ts +115 -0
  321. package/node_modules/zod/src/v4/mini/checks.ts +32 -0
  322. package/node_modules/zod/src/v4/mini/coerce.ts +27 -0
  323. package/node_modules/zod/src/v4/mini/external.ts +41 -0
  324. package/node_modules/zod/src/v4/mini/index.ts +3 -0
  325. package/node_modules/zod/src/v4/mini/iso.ts +66 -0
  326. package/node_modules/zod/src/v4/mini/parse.ts +14 -0
  327. package/node_modules/zod/src/v4/mini/schemas.ts +1947 -0
  328. package/node_modules/zod/src/v4/mini/tests/apply.test.ts +24 -0
  329. package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +129 -0
  330. package/node_modules/zod/src/v4/mini/tests/brand.test.ts +94 -0
  331. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +144 -0
  332. package/node_modules/zod/src/v4/mini/tests/codec.test.ts +548 -0
  333. package/node_modules/zod/src/v4/mini/tests/computed.test.ts +36 -0
  334. package/node_modules/zod/src/v4/mini/tests/error.test.ts +22 -0
  335. package/node_modules/zod/src/v4/mini/tests/functions.test.ts +5 -0
  336. package/node_modules/zod/src/v4/mini/tests/index.test.ts +993 -0
  337. package/node_modules/zod/src/v4/mini/tests/number.test.ts +95 -0
  338. package/node_modules/zod/src/v4/mini/tests/object.test.ts +227 -0
  339. package/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +43 -0
  340. package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +325 -0
  341. package/node_modules/zod/src/v4/mini/tests/standard-schema.test.ts +50 -0
  342. package/node_modules/zod/src/v4/mini/tests/string.test.ts +352 -0
  343. package/node_modules/zod/src/v4-mini/index.ts +3 -0
  344. package/node_modules/zod/v3/ZodError.cjs +138 -0
  345. package/node_modules/zod/v3/ZodError.d.cts +164 -0
  346. package/node_modules/zod/v3/ZodError.d.ts +164 -0
  347. package/node_modules/zod/v3/ZodError.js +133 -0
  348. package/node_modules/zod/v3/errors.cjs +17 -0
  349. package/node_modules/zod/v3/errors.d.cts +5 -0
  350. package/node_modules/zod/v3/errors.d.ts +5 -0
  351. package/node_modules/zod/v3/errors.js +9 -0
  352. package/node_modules/zod/v3/external.cjs +22 -0
  353. package/node_modules/zod/v3/external.d.cts +6 -0
  354. package/node_modules/zod/v3/external.d.ts +6 -0
  355. package/node_modules/zod/v3/external.js +6 -0
  356. package/node_modules/zod/v3/helpers/enumUtil.cjs +2 -0
  357. package/node_modules/zod/v3/helpers/enumUtil.d.cts +8 -0
  358. package/node_modules/zod/v3/helpers/enumUtil.d.ts +8 -0
  359. package/node_modules/zod/v3/helpers/enumUtil.js +1 -0
  360. package/node_modules/zod/v3/helpers/errorUtil.cjs +9 -0
  361. package/node_modules/zod/v3/helpers/errorUtil.d.cts +9 -0
  362. package/node_modules/zod/v3/helpers/errorUtil.d.ts +9 -0
  363. package/node_modules/zod/v3/helpers/errorUtil.js +6 -0
  364. package/node_modules/zod/v3/helpers/parseUtil.cjs +124 -0
  365. package/node_modules/zod/v3/helpers/parseUtil.d.cts +78 -0
  366. package/node_modules/zod/v3/helpers/parseUtil.d.ts +78 -0
  367. package/node_modules/zod/v3/helpers/parseUtil.js +109 -0
  368. package/node_modules/zod/v3/helpers/partialUtil.cjs +2 -0
  369. package/node_modules/zod/v3/helpers/partialUtil.d.cts +8 -0
  370. package/node_modules/zod/v3/helpers/partialUtil.d.ts +8 -0
  371. package/node_modules/zod/v3/helpers/partialUtil.js +1 -0
  372. package/node_modules/zod/v3/helpers/typeAliases.cjs +2 -0
  373. package/node_modules/zod/v3/helpers/typeAliases.d.cts +2 -0
  374. package/node_modules/zod/v3/helpers/typeAliases.d.ts +2 -0
  375. package/node_modules/zod/v3/helpers/typeAliases.js +1 -0
  376. package/node_modules/zod/v3/helpers/util.cjs +137 -0
  377. package/node_modules/zod/v3/helpers/util.d.cts +85 -0
  378. package/node_modules/zod/v3/helpers/util.d.ts +85 -0
  379. package/node_modules/zod/v3/helpers/util.js +133 -0
  380. package/node_modules/zod/v3/index.cjs +33 -0
  381. package/node_modules/zod/v3/index.d.cts +4 -0
  382. package/node_modules/zod/v3/index.d.ts +4 -0
  383. package/node_modules/zod/v3/index.js +4 -0
  384. package/node_modules/zod/v3/locales/en.cjs +112 -0
  385. package/node_modules/zod/v3/locales/en.d.cts +3 -0
  386. package/node_modules/zod/v3/locales/en.d.ts +3 -0
  387. package/node_modules/zod/v3/locales/en.js +109 -0
  388. package/node_modules/zod/v3/package.json +7 -0
  389. package/node_modules/zod/v3/standard-schema.cjs +2 -0
  390. package/node_modules/zod/v3/standard-schema.d.cts +102 -0
  391. package/node_modules/zod/v3/standard-schema.d.ts +102 -0
  392. package/node_modules/zod/v3/standard-schema.js +1 -0
  393. package/node_modules/zod/v3/types.cjs +3777 -0
  394. package/node_modules/zod/v3/types.d.cts +1034 -0
  395. package/node_modules/zod/v3/types.d.ts +1034 -0
  396. package/node_modules/zod/v3/types.js +3695 -0
  397. package/node_modules/zod/v4/classic/checks.cjs +33 -0
  398. package/node_modules/zod/v4/classic/checks.d.cts +1 -0
  399. package/node_modules/zod/v4/classic/checks.d.ts +1 -0
  400. package/node_modules/zod/v4/classic/checks.js +1 -0
  401. package/node_modules/zod/v4/classic/coerce.cjs +47 -0
  402. package/node_modules/zod/v4/classic/coerce.d.cts +17 -0
  403. package/node_modules/zod/v4/classic/coerce.d.ts +17 -0
  404. package/node_modules/zod/v4/classic/coerce.js +17 -0
  405. package/node_modules/zod/v4/classic/compat.cjs +61 -0
  406. package/node_modules/zod/v4/classic/compat.d.cts +50 -0
  407. package/node_modules/zod/v4/classic/compat.d.ts +50 -0
  408. package/node_modules/zod/v4/classic/compat.js +31 -0
  409. package/node_modules/zod/v4/classic/errors.cjs +74 -0
  410. package/node_modules/zod/v4/classic/errors.d.cts +30 -0
  411. package/node_modules/zod/v4/classic/errors.d.ts +30 -0
  412. package/node_modules/zod/v4/classic/errors.js +48 -0
  413. package/node_modules/zod/v4/classic/external.cjs +73 -0
  414. package/node_modules/zod/v4/classic/external.d.cts +16 -0
  415. package/node_modules/zod/v4/classic/external.d.ts +16 -0
  416. package/node_modules/zod/v4/classic/external.js +20 -0
  417. package/node_modules/zod/v4/classic/from-json-schema.cjs +625 -0
  418. package/node_modules/zod/v4/classic/from-json-schema.d.cts +12 -0
  419. package/node_modules/zod/v4/classic/from-json-schema.d.ts +12 -0
  420. package/node_modules/zod/v4/classic/from-json-schema.js +599 -0
  421. package/node_modules/zod/v4/classic/index.cjs +33 -0
  422. package/node_modules/zod/v4/classic/index.d.cts +4 -0
  423. package/node_modules/zod/v4/classic/index.d.ts +4 -0
  424. package/node_modules/zod/v4/classic/index.js +4 -0
  425. package/node_modules/zod/v4/classic/iso.cjs +60 -0
  426. package/node_modules/zod/v4/classic/iso.d.cts +22 -0
  427. package/node_modules/zod/v4/classic/iso.d.ts +22 -0
  428. package/node_modules/zod/v4/classic/iso.js +30 -0
  429. package/node_modules/zod/v4/classic/package.json +7 -0
  430. package/node_modules/zod/v4/classic/parse.cjs +41 -0
  431. package/node_modules/zod/v4/classic/parse.d.cts +31 -0
  432. package/node_modules/zod/v4/classic/parse.d.ts +31 -0
  433. package/node_modules/zod/v4/classic/parse.js +15 -0
  434. package/node_modules/zod/v4/classic/schemas.cjs +1511 -0
  435. package/node_modules/zod/v4/classic/schemas.d.cts +767 -0
  436. package/node_modules/zod/v4/classic/schemas.d.ts +767 -0
  437. package/node_modules/zod/v4/classic/schemas.js +1395 -0
  438. package/node_modules/zod/v4/core/api.cjs +1227 -0
  439. package/node_modules/zod/v4/core/api.d.cts +325 -0
  440. package/node_modules/zod/v4/core/api.d.ts +325 -0
  441. package/node_modules/zod/v4/core/api.js +1087 -0
  442. package/node_modules/zod/v4/core/checks.cjs +601 -0
  443. package/node_modules/zod/v4/core/checks.d.cts +278 -0
  444. package/node_modules/zod/v4/core/checks.d.ts +278 -0
  445. package/node_modules/zod/v4/core/checks.js +575 -0
  446. package/node_modules/zod/v4/core/core.cjs +85 -0
  447. package/node_modules/zod/v4/core/core.d.cts +70 -0
  448. package/node_modules/zod/v4/core/core.d.ts +70 -0
  449. package/node_modules/zod/v4/core/core.js +78 -0
  450. package/node_modules/zod/v4/core/doc.cjs +39 -0
  451. package/node_modules/zod/v4/core/doc.d.cts +14 -0
  452. package/node_modules/zod/v4/core/doc.d.ts +14 -0
  453. package/node_modules/zod/v4/core/doc.js +35 -0
  454. package/node_modules/zod/v4/core/errors.cjs +216 -0
  455. package/node_modules/zod/v4/core/errors.d.cts +221 -0
  456. package/node_modules/zod/v4/core/errors.d.ts +221 -0
  457. package/node_modules/zod/v4/core/errors.js +185 -0
  458. package/node_modules/zod/v4/core/index.cjs +47 -0
  459. package/node_modules/zod/v4/core/index.d.cts +16 -0
  460. package/node_modules/zod/v4/core/index.d.ts +16 -0
  461. package/node_modules/zod/v4/core/index.js +16 -0
  462. package/node_modules/zod/v4/core/json-schema-generator.cjs +99 -0
  463. package/node_modules/zod/v4/core/json-schema-generator.d.cts +65 -0
  464. package/node_modules/zod/v4/core/json-schema-generator.d.ts +65 -0
  465. package/node_modules/zod/v4/core/json-schema-generator.js +95 -0
  466. package/node_modules/zod/v4/core/json-schema-processors.cjs +644 -0
  467. package/node_modules/zod/v4/core/json-schema-processors.d.cts +49 -0
  468. package/node_modules/zod/v4/core/json-schema-processors.d.ts +49 -0
  469. package/node_modules/zod/v4/core/json-schema-processors.js +601 -0
  470. package/node_modules/zod/v4/core/json-schema.cjs +2 -0
  471. package/node_modules/zod/v4/core/json-schema.d.cts +88 -0
  472. package/node_modules/zod/v4/core/json-schema.d.ts +88 -0
  473. package/node_modules/zod/v4/core/json-schema.js +1 -0
  474. package/node_modules/zod/v4/core/package.json +7 -0
  475. package/node_modules/zod/v4/core/parse.cjs +131 -0
  476. package/node_modules/zod/v4/core/parse.d.cts +49 -0
  477. package/node_modules/zod/v4/core/parse.d.ts +49 -0
  478. package/node_modules/zod/v4/core/parse.js +93 -0
  479. package/node_modules/zod/v4/core/regexes.cjs +172 -0
  480. package/node_modules/zod/v4/core/regexes.d.cts +85 -0
  481. package/node_modules/zod/v4/core/regexes.d.ts +85 -0
  482. package/node_modules/zod/v4/core/regexes.js +139 -0
  483. package/node_modules/zod/v4/core/registries.cjs +56 -0
  484. package/node_modules/zod/v4/core/registries.d.cts +35 -0
  485. package/node_modules/zod/v4/core/registries.d.ts +35 -0
  486. package/node_modules/zod/v4/core/registries.js +51 -0
  487. package/node_modules/zod/v4/core/schemas.cjs +2270 -0
  488. package/node_modules/zod/v4/core/schemas.d.cts +1184 -0
  489. package/node_modules/zod/v4/core/schemas.d.ts +1184 -0
  490. package/node_modules/zod/v4/core/schemas.js +2239 -0
  491. package/node_modules/zod/v4/core/standard-schema.cjs +2 -0
  492. package/node_modules/zod/v4/core/standard-schema.d.cts +126 -0
  493. package/node_modules/zod/v4/core/standard-schema.d.ts +126 -0
  494. package/node_modules/zod/v4/core/standard-schema.js +1 -0
  495. package/node_modules/zod/v4/core/to-json-schema.cjs +457 -0
  496. package/node_modules/zod/v4/core/to-json-schema.d.cts +114 -0
  497. package/node_modules/zod/v4/core/to-json-schema.d.ts +114 -0
  498. package/node_modules/zod/v4/core/to-json-schema.js +448 -0
  499. package/node_modules/zod/v4/core/util.cjs +734 -0
  500. package/node_modules/zod/v4/core/util.d.cts +200 -0
  501. package/node_modules/zod/v4/core/util.d.ts +200 -0
  502. package/node_modules/zod/v4/core/util.js +674 -0
  503. package/node_modules/zod/v4/core/versions.cjs +8 -0
  504. package/node_modules/zod/v4/core/versions.d.cts +5 -0
  505. package/node_modules/zod/v4/core/versions.d.ts +5 -0
  506. package/node_modules/zod/v4/core/versions.js +5 -0
  507. package/node_modules/zod/v4/index.cjs +22 -0
  508. package/node_modules/zod/v4/index.d.cts +3 -0
  509. package/node_modules/zod/v4/index.d.ts +3 -0
  510. package/node_modules/zod/v4/index.js +3 -0
  511. package/node_modules/zod/v4/locales/ar.cjs +133 -0
  512. package/node_modules/zod/v4/locales/ar.d.cts +5 -0
  513. package/node_modules/zod/v4/locales/ar.d.ts +4 -0
  514. package/node_modules/zod/v4/locales/ar.js +106 -0
  515. package/node_modules/zod/v4/locales/az.cjs +132 -0
  516. package/node_modules/zod/v4/locales/az.d.cts +5 -0
  517. package/node_modules/zod/v4/locales/az.d.ts +4 -0
  518. package/node_modules/zod/v4/locales/az.js +105 -0
  519. package/node_modules/zod/v4/locales/be.cjs +183 -0
  520. package/node_modules/zod/v4/locales/be.d.cts +5 -0
  521. package/node_modules/zod/v4/locales/be.d.ts +4 -0
  522. package/node_modules/zod/v4/locales/be.js +156 -0
  523. package/node_modules/zod/v4/locales/bg.cjs +147 -0
  524. package/node_modules/zod/v4/locales/bg.d.cts +5 -0
  525. package/node_modules/zod/v4/locales/bg.d.ts +4 -0
  526. package/node_modules/zod/v4/locales/bg.js +120 -0
  527. package/node_modules/zod/v4/locales/ca.cjs +134 -0
  528. package/node_modules/zod/v4/locales/ca.d.cts +5 -0
  529. package/node_modules/zod/v4/locales/ca.d.ts +4 -0
  530. package/node_modules/zod/v4/locales/ca.js +107 -0
  531. package/node_modules/zod/v4/locales/cs.cjs +138 -0
  532. package/node_modules/zod/v4/locales/cs.d.cts +5 -0
  533. package/node_modules/zod/v4/locales/cs.d.ts +4 -0
  534. package/node_modules/zod/v4/locales/cs.js +111 -0
  535. package/node_modules/zod/v4/locales/da.cjs +142 -0
  536. package/node_modules/zod/v4/locales/da.d.cts +5 -0
  537. package/node_modules/zod/v4/locales/da.d.ts +4 -0
  538. package/node_modules/zod/v4/locales/da.js +115 -0
  539. package/node_modules/zod/v4/locales/de.cjs +135 -0
  540. package/node_modules/zod/v4/locales/de.d.cts +5 -0
  541. package/node_modules/zod/v4/locales/de.d.ts +4 -0
  542. package/node_modules/zod/v4/locales/de.js +108 -0
  543. package/node_modules/zod/v4/locales/el.cjs +136 -0
  544. package/node_modules/zod/v4/locales/el.d.cts +5 -0
  545. package/node_modules/zod/v4/locales/el.d.ts +4 -0
  546. package/node_modules/zod/v4/locales/el.js +109 -0
  547. package/node_modules/zod/v4/locales/en.cjs +140 -0
  548. package/node_modules/zod/v4/locales/en.d.cts +5 -0
  549. package/node_modules/zod/v4/locales/en.d.ts +4 -0
  550. package/node_modules/zod/v4/locales/en.js +113 -0
  551. package/node_modules/zod/v4/locales/eo.cjs +136 -0
  552. package/node_modules/zod/v4/locales/eo.d.cts +5 -0
  553. package/node_modules/zod/v4/locales/eo.d.ts +4 -0
  554. package/node_modules/zod/v4/locales/eo.js +109 -0
  555. package/node_modules/zod/v4/locales/es.cjs +159 -0
  556. package/node_modules/zod/v4/locales/es.d.cts +5 -0
  557. package/node_modules/zod/v4/locales/es.d.ts +4 -0
  558. package/node_modules/zod/v4/locales/es.js +132 -0
  559. package/node_modules/zod/v4/locales/fa.cjs +141 -0
  560. package/node_modules/zod/v4/locales/fa.d.cts +5 -0
  561. package/node_modules/zod/v4/locales/fa.d.ts +4 -0
  562. package/node_modules/zod/v4/locales/fa.js +114 -0
  563. package/node_modules/zod/v4/locales/fi.cjs +139 -0
  564. package/node_modules/zod/v4/locales/fi.d.cts +5 -0
  565. package/node_modules/zod/v4/locales/fi.d.ts +4 -0
  566. package/node_modules/zod/v4/locales/fi.js +112 -0
  567. package/node_modules/zod/v4/locales/fr-CA.cjs +134 -0
  568. package/node_modules/zod/v4/locales/fr-CA.d.cts +5 -0
  569. package/node_modules/zod/v4/locales/fr-CA.d.ts +4 -0
  570. package/node_modules/zod/v4/locales/fr-CA.js +107 -0
  571. package/node_modules/zod/v4/locales/fr.cjs +152 -0
  572. package/node_modules/zod/v4/locales/fr.d.cts +5 -0
  573. package/node_modules/zod/v4/locales/fr.d.ts +4 -0
  574. package/node_modules/zod/v4/locales/fr.js +125 -0
  575. package/node_modules/zod/v4/locales/he.cjs +241 -0
  576. package/node_modules/zod/v4/locales/he.d.cts +5 -0
  577. package/node_modules/zod/v4/locales/he.d.ts +4 -0
  578. package/node_modules/zod/v4/locales/he.js +214 -0
  579. package/node_modules/zod/v4/locales/hr.cjs +149 -0
  580. package/node_modules/zod/v4/locales/hr.d.cts +5 -0
  581. package/node_modules/zod/v4/locales/hr.d.ts +4 -0
  582. package/node_modules/zod/v4/locales/hr.js +122 -0
  583. package/node_modules/zod/v4/locales/hu.cjs +135 -0
  584. package/node_modules/zod/v4/locales/hu.d.cts +5 -0
  585. package/node_modules/zod/v4/locales/hu.d.ts +4 -0
  586. package/node_modules/zod/v4/locales/hu.js +108 -0
  587. package/node_modules/zod/v4/locales/hy.cjs +174 -0
  588. package/node_modules/zod/v4/locales/hy.d.cts +5 -0
  589. package/node_modules/zod/v4/locales/hy.d.ts +4 -0
  590. package/node_modules/zod/v4/locales/hy.js +147 -0
  591. package/node_modules/zod/v4/locales/id.cjs +133 -0
  592. package/node_modules/zod/v4/locales/id.d.cts +5 -0
  593. package/node_modules/zod/v4/locales/id.d.ts +4 -0
  594. package/node_modules/zod/v4/locales/id.js +106 -0
  595. package/node_modules/zod/v4/locales/index.cjs +111 -0
  596. package/node_modules/zod/v4/locales/index.d.cts +52 -0
  597. package/node_modules/zod/v4/locales/index.d.ts +52 -0
  598. package/node_modules/zod/v4/locales/index.js +52 -0
  599. package/node_modules/zod/v4/locales/is.cjs +136 -0
  600. package/node_modules/zod/v4/locales/is.d.cts +5 -0
  601. package/node_modules/zod/v4/locales/is.d.ts +4 -0
  602. package/node_modules/zod/v4/locales/is.js +109 -0
  603. package/node_modules/zod/v4/locales/it.cjs +135 -0
  604. package/node_modules/zod/v4/locales/it.d.cts +5 -0
  605. package/node_modules/zod/v4/locales/it.d.ts +4 -0
  606. package/node_modules/zod/v4/locales/it.js +108 -0
  607. package/node_modules/zod/v4/locales/ja.cjs +134 -0
  608. package/node_modules/zod/v4/locales/ja.d.cts +5 -0
  609. package/node_modules/zod/v4/locales/ja.d.ts +4 -0
  610. package/node_modules/zod/v4/locales/ja.js +107 -0
  611. package/node_modules/zod/v4/locales/ka.cjs +139 -0
  612. package/node_modules/zod/v4/locales/ka.d.cts +5 -0
  613. package/node_modules/zod/v4/locales/ka.d.ts +4 -0
  614. package/node_modules/zod/v4/locales/ka.js +112 -0
  615. package/node_modules/zod/v4/locales/kh.cjs +12 -0
  616. package/node_modules/zod/v4/locales/kh.d.cts +5 -0
  617. package/node_modules/zod/v4/locales/kh.d.ts +5 -0
  618. package/node_modules/zod/v4/locales/kh.js +5 -0
  619. package/node_modules/zod/v4/locales/km.cjs +137 -0
  620. package/node_modules/zod/v4/locales/km.d.cts +5 -0
  621. package/node_modules/zod/v4/locales/km.d.ts +4 -0
  622. package/node_modules/zod/v4/locales/km.js +110 -0
  623. package/node_modules/zod/v4/locales/ko.cjs +138 -0
  624. package/node_modules/zod/v4/locales/ko.d.cts +5 -0
  625. package/node_modules/zod/v4/locales/ko.d.ts +4 -0
  626. package/node_modules/zod/v4/locales/ko.js +111 -0
  627. package/node_modules/zod/v4/locales/lt.cjs +230 -0
  628. package/node_modules/zod/v4/locales/lt.d.cts +5 -0
  629. package/node_modules/zod/v4/locales/lt.d.ts +4 -0
  630. package/node_modules/zod/v4/locales/lt.js +203 -0
  631. package/node_modules/zod/v4/locales/mk.cjs +136 -0
  632. package/node_modules/zod/v4/locales/mk.d.cts +5 -0
  633. package/node_modules/zod/v4/locales/mk.d.ts +4 -0
  634. package/node_modules/zod/v4/locales/mk.js +109 -0
  635. package/node_modules/zod/v4/locales/ms.cjs +134 -0
  636. package/node_modules/zod/v4/locales/ms.d.cts +5 -0
  637. package/node_modules/zod/v4/locales/ms.d.ts +4 -0
  638. package/node_modules/zod/v4/locales/ms.js +107 -0
  639. package/node_modules/zod/v4/locales/nl.cjs +137 -0
  640. package/node_modules/zod/v4/locales/nl.d.cts +5 -0
  641. package/node_modules/zod/v4/locales/nl.d.ts +4 -0
  642. package/node_modules/zod/v4/locales/nl.js +110 -0
  643. package/node_modules/zod/v4/locales/no.cjs +135 -0
  644. package/node_modules/zod/v4/locales/no.d.cts +5 -0
  645. package/node_modules/zod/v4/locales/no.d.ts +4 -0
  646. package/node_modules/zod/v4/locales/no.js +108 -0
  647. package/node_modules/zod/v4/locales/ota.cjs +136 -0
  648. package/node_modules/zod/v4/locales/ota.d.cts +5 -0
  649. package/node_modules/zod/v4/locales/ota.d.ts +4 -0
  650. package/node_modules/zod/v4/locales/ota.js +109 -0
  651. package/node_modules/zod/v4/locales/package.json +7 -0
  652. package/node_modules/zod/v4/locales/pl.cjs +136 -0
  653. package/node_modules/zod/v4/locales/pl.d.cts +5 -0
  654. package/node_modules/zod/v4/locales/pl.d.ts +4 -0
  655. package/node_modules/zod/v4/locales/pl.js +109 -0
  656. package/node_modules/zod/v4/locales/ps.cjs +141 -0
  657. package/node_modules/zod/v4/locales/ps.d.cts +5 -0
  658. package/node_modules/zod/v4/locales/ps.d.ts +4 -0
  659. package/node_modules/zod/v4/locales/ps.js +114 -0
  660. package/node_modules/zod/v4/locales/pt.cjs +135 -0
  661. package/node_modules/zod/v4/locales/pt.d.cts +5 -0
  662. package/node_modules/zod/v4/locales/pt.d.ts +4 -0
  663. package/node_modules/zod/v4/locales/pt.js +108 -0
  664. package/node_modules/zod/v4/locales/ro.cjs +146 -0
  665. package/node_modules/zod/v4/locales/ro.d.cts +5 -0
  666. package/node_modules/zod/v4/locales/ro.d.ts +4 -0
  667. package/node_modules/zod/v4/locales/ro.js +119 -0
  668. package/node_modules/zod/v4/locales/ru.cjs +183 -0
  669. package/node_modules/zod/v4/locales/ru.d.cts +5 -0
  670. package/node_modules/zod/v4/locales/ru.d.ts +4 -0
  671. package/node_modules/zod/v4/locales/ru.js +156 -0
  672. package/node_modules/zod/v4/locales/sl.cjs +136 -0
  673. package/node_modules/zod/v4/locales/sl.d.cts +5 -0
  674. package/node_modules/zod/v4/locales/sl.d.ts +4 -0
  675. package/node_modules/zod/v4/locales/sl.js +109 -0
  676. package/node_modules/zod/v4/locales/sv.cjs +137 -0
  677. package/node_modules/zod/v4/locales/sv.d.cts +5 -0
  678. package/node_modules/zod/v4/locales/sv.d.ts +4 -0
  679. package/node_modules/zod/v4/locales/sv.js +110 -0
  680. package/node_modules/zod/v4/locales/ta.cjs +137 -0
  681. package/node_modules/zod/v4/locales/ta.d.cts +5 -0
  682. package/node_modules/zod/v4/locales/ta.d.ts +4 -0
  683. package/node_modules/zod/v4/locales/ta.js +110 -0
  684. package/node_modules/zod/v4/locales/th.cjs +137 -0
  685. package/node_modules/zod/v4/locales/th.d.cts +5 -0
  686. package/node_modules/zod/v4/locales/th.d.ts +4 -0
  687. package/node_modules/zod/v4/locales/th.js +110 -0
  688. package/node_modules/zod/v4/locales/tr.cjs +132 -0
  689. package/node_modules/zod/v4/locales/tr.d.cts +5 -0
  690. package/node_modules/zod/v4/locales/tr.d.ts +4 -0
  691. package/node_modules/zod/v4/locales/tr.js +105 -0
  692. package/node_modules/zod/v4/locales/ua.cjs +12 -0
  693. package/node_modules/zod/v4/locales/ua.d.cts +5 -0
  694. package/node_modules/zod/v4/locales/ua.d.ts +5 -0
  695. package/node_modules/zod/v4/locales/ua.js +5 -0
  696. package/node_modules/zod/v4/locales/uk.cjs +135 -0
  697. package/node_modules/zod/v4/locales/uk.d.cts +5 -0
  698. package/node_modules/zod/v4/locales/uk.d.ts +4 -0
  699. package/node_modules/zod/v4/locales/uk.js +108 -0
  700. package/node_modules/zod/v4/locales/ur.cjs +137 -0
  701. package/node_modules/zod/v4/locales/ur.d.cts +5 -0
  702. package/node_modules/zod/v4/locales/ur.d.ts +4 -0
  703. package/node_modules/zod/v4/locales/ur.js +110 -0
  704. package/node_modules/zod/v4/locales/uz.cjs +137 -0
  705. package/node_modules/zod/v4/locales/uz.d.cts +5 -0
  706. package/node_modules/zod/v4/locales/uz.d.ts +4 -0
  707. package/node_modules/zod/v4/locales/uz.js +110 -0
  708. package/node_modules/zod/v4/locales/vi.cjs +135 -0
  709. package/node_modules/zod/v4/locales/vi.d.cts +5 -0
  710. package/node_modules/zod/v4/locales/vi.d.ts +4 -0
  711. package/node_modules/zod/v4/locales/vi.js +108 -0
  712. package/node_modules/zod/v4/locales/yo.cjs +134 -0
  713. package/node_modules/zod/v4/locales/yo.d.cts +5 -0
  714. package/node_modules/zod/v4/locales/yo.d.ts +4 -0
  715. package/node_modules/zod/v4/locales/yo.js +107 -0
  716. package/node_modules/zod/v4/locales/zh-CN.cjs +136 -0
  717. package/node_modules/zod/v4/locales/zh-CN.d.cts +5 -0
  718. package/node_modules/zod/v4/locales/zh-CN.d.ts +4 -0
  719. package/node_modules/zod/v4/locales/zh-CN.js +109 -0
  720. package/node_modules/zod/v4/locales/zh-TW.cjs +134 -0
  721. package/node_modules/zod/v4/locales/zh-TW.d.cts +5 -0
  722. package/node_modules/zod/v4/locales/zh-TW.d.ts +4 -0
  723. package/node_modules/zod/v4/locales/zh-TW.js +107 -0
  724. package/node_modules/zod/v4/mini/checks.cjs +34 -0
  725. package/node_modules/zod/v4/mini/checks.d.cts +1 -0
  726. package/node_modules/zod/v4/mini/checks.d.ts +1 -0
  727. package/node_modules/zod/v4/mini/checks.js +1 -0
  728. package/node_modules/zod/v4/mini/coerce.cjs +52 -0
  729. package/node_modules/zod/v4/mini/coerce.d.cts +7 -0
  730. package/node_modules/zod/v4/mini/coerce.d.ts +7 -0
  731. package/node_modules/zod/v4/mini/coerce.js +22 -0
  732. package/node_modules/zod/v4/mini/external.cjs +63 -0
  733. package/node_modules/zod/v4/mini/external.d.cts +13 -0
  734. package/node_modules/zod/v4/mini/external.d.ts +13 -0
  735. package/node_modules/zod/v4/mini/external.js +14 -0
  736. package/node_modules/zod/v4/mini/index.cjs +32 -0
  737. package/node_modules/zod/v4/mini/index.d.cts +3 -0
  738. package/node_modules/zod/v4/mini/index.d.ts +3 -0
  739. package/node_modules/zod/v4/mini/index.js +3 -0
  740. package/node_modules/zod/v4/mini/iso.cjs +64 -0
  741. package/node_modules/zod/v4/mini/iso.d.cts +22 -0
  742. package/node_modules/zod/v4/mini/iso.d.ts +22 -0
  743. package/node_modules/zod/v4/mini/iso.js +34 -0
  744. package/node_modules/zod/v4/mini/package.json +7 -0
  745. package/node_modules/zod/v4/mini/parse.cjs +16 -0
  746. package/node_modules/zod/v4/mini/parse.d.cts +1 -0
  747. package/node_modules/zod/v4/mini/parse.d.ts +1 -0
  748. package/node_modules/zod/v4/mini/parse.js +1 -0
  749. package/node_modules/zod/v4/mini/schemas.cjs +1083 -0
  750. package/node_modules/zod/v4/mini/schemas.d.cts +445 -0
  751. package/node_modules/zod/v4/mini/schemas.d.ts +445 -0
  752. package/node_modules/zod/v4/mini/schemas.js +961 -0
  753. package/node_modules/zod/v4/package.json +7 -0
  754. package/node_modules/zod/v4-mini/index.cjs +32 -0
  755. package/node_modules/zod/v4-mini/index.d.cts +3 -0
  756. package/node_modules/zod/v4-mini/index.d.ts +3 -0
  757. package/node_modules/zod/v4-mini/index.js +3 -0
  758. package/node_modules/zod/v4-mini/package.json +7 -0
  759. package/npm-shrinkwrap.json +54 -0
  760. package/openclaw.plugin.json +997 -1
  761. package/package.json +48 -7
  762. package/index.ts +0 -17
  763. package/src/channel.test.ts +0 -235
  764. package/src/channel.ts +0 -433
  765. package/src/config-schema.ts +0 -61
  766. package/src/group-mentions.ts +0 -15
  767. package/src/mattermost/accounts.ts +0 -128
  768. package/src/mattermost/client.test.ts +0 -19
  769. package/src/mattermost/client.ts +0 -230
  770. package/src/mattermost/index.ts +0 -9
  771. package/src/mattermost/monitor-helpers.ts +0 -93
  772. package/src/mattermost/monitor-onchar.ts +0 -25
  773. package/src/mattermost/monitor-websocket.test.ts +0 -232
  774. package/src/mattermost/monitor-websocket.ts +0 -221
  775. package/src/mattermost/monitor.ts +0 -1030
  776. package/src/mattermost/probe.ts +0 -73
  777. package/src/mattermost/reactions.test-helpers.ts +0 -83
  778. package/src/mattermost/reactions.test.ts +0 -103
  779. package/src/mattermost/reactions.ts +0 -124
  780. package/src/mattermost/reconnect.test.ts +0 -192
  781. package/src/mattermost/reconnect.ts +0 -103
  782. package/src/mattermost/send.ts +0 -231
  783. package/src/normalize.ts +0 -46
  784. package/src/onboarding-helpers.ts +0 -1
  785. package/src/onboarding.ts +0 -186
  786. package/src/runtime.ts +0 -14
  787. package/src/types.ts +0 -57
@@ -1,73 +0,0 @@
1
- import type { BaseProbeResult } from "openclaw/plugin-sdk";
2
- import { normalizeMattermostBaseUrl, type MattermostUser } from "./client.js";
3
-
4
- export type MattermostProbe = BaseProbeResult & {
5
- status?: number | null;
6
- elapsedMs?: number | null;
7
- bot?: MattermostUser;
8
- };
9
-
10
- async function readMattermostError(res: Response): Promise<string> {
11
- const contentType = res.headers.get("content-type") ?? "";
12
- if (contentType.includes("application/json")) {
13
- const data = (await res.json()) as { message?: string } | undefined;
14
- if (data?.message) {
15
- return data.message;
16
- }
17
- return JSON.stringify(data);
18
- }
19
- return await res.text();
20
- }
21
-
22
- export async function probeMattermost(
23
- baseUrl: string,
24
- botToken: string,
25
- timeoutMs = 2500,
26
- ): Promise<MattermostProbe> {
27
- const normalized = normalizeMattermostBaseUrl(baseUrl);
28
- if (!normalized) {
29
- return { ok: false, error: "baseUrl missing" };
30
- }
31
- const url = `${normalized}/api/v4/users/me`;
32
- const start = Date.now();
33
- const controller = timeoutMs > 0 ? new AbortController() : undefined;
34
- let timer: NodeJS.Timeout | null = null;
35
- if (controller) {
36
- timer = setTimeout(() => controller.abort(), timeoutMs);
37
- }
38
- try {
39
- const res = await fetch(url, {
40
- headers: { Authorization: `Bearer ${botToken}` },
41
- signal: controller?.signal,
42
- });
43
- const elapsedMs = Date.now() - start;
44
- if (!res.ok) {
45
- const detail = await readMattermostError(res);
46
- return {
47
- ok: false,
48
- status: res.status,
49
- error: detail || res.statusText,
50
- elapsedMs,
51
- };
52
- }
53
- const bot = (await res.json()) as MattermostUser;
54
- return {
55
- ok: true,
56
- status: res.status,
57
- elapsedMs,
58
- bot,
59
- };
60
- } catch (err) {
61
- const message = err instanceof Error ? err.message : String(err);
62
- return {
63
- ok: false,
64
- status: null,
65
- error: message,
66
- elapsedMs: Date.now() - start,
67
- };
68
- } finally {
69
- if (timer) {
70
- clearTimeout(timer);
71
- }
72
- }
73
- }
@@ -1,83 +0,0 @@
1
- import type { OpenClawConfig } from "openclaw/plugin-sdk";
2
- import { expect, vi } from "vitest";
3
-
4
- export function createMattermostTestConfig(): OpenClawConfig {
5
- return {
6
- channels: {
7
- mattermost: {
8
- enabled: true,
9
- botToken: "test-token",
10
- baseUrl: "https://chat.example.com",
11
- },
12
- },
13
- };
14
- }
15
-
16
- export function createMattermostReactionFetchMock(params: {
17
- postId: string;
18
- emojiName: string;
19
- mode: "add" | "remove" | "both";
20
- userId?: string;
21
- status?: number;
22
- body?: unknown;
23
- }) {
24
- const userId = params.userId ?? "BOT123";
25
- const mode = params.mode;
26
- const allowAdd = mode === "add" || mode === "both";
27
- const allowRemove = mode === "remove" || mode === "both";
28
- const addStatus = params.status ?? 201;
29
- const removeStatus = params.status ?? 204;
30
- const removePath = `/api/v4/users/${userId}/posts/${params.postId}/reactions/${encodeURIComponent(params.emojiName)}`;
31
-
32
- return vi.fn(async (url: any, init?: any) => {
33
- if (String(url).endsWith("/api/v4/users/me")) {
34
- return new Response(JSON.stringify({ id: userId }), {
35
- status: 200,
36
- headers: { "content-type": "application/json" },
37
- });
38
- }
39
-
40
- if (allowAdd && String(url).endsWith("/api/v4/reactions")) {
41
- expect(init?.method).toBe("POST");
42
- expect(JSON.parse(init?.body)).toEqual({
43
- user_id: userId,
44
- post_id: params.postId,
45
- emoji_name: params.emojiName,
46
- });
47
-
48
- const responseBody = params.body === undefined ? { ok: true } : params.body;
49
- return new Response(
50
- responseBody === null ? null : JSON.stringify(responseBody),
51
- responseBody === null
52
- ? { status: addStatus, headers: { "content-type": "text/plain" } }
53
- : { status: addStatus, headers: { "content-type": "application/json" } },
54
- );
55
- }
56
-
57
- if (allowRemove && String(url).endsWith(removePath)) {
58
- expect(init?.method).toBe("DELETE");
59
- const responseBody = params.body === undefined ? null : params.body;
60
- return new Response(
61
- responseBody === null ? null : JSON.stringify(responseBody),
62
- responseBody === null
63
- ? { status: removeStatus, headers: { "content-type": "text/plain" } }
64
- : { status: removeStatus, headers: { "content-type": "application/json" } },
65
- );
66
- }
67
-
68
- throw new Error(`unexpected url: ${url}`);
69
- });
70
- }
71
-
72
- export async function withMockedGlobalFetch<T>(
73
- fetchImpl: typeof fetch,
74
- run: () => Promise<T>,
75
- ): Promise<T> {
76
- const prevFetch = globalThis.fetch;
77
- (globalThis as any).fetch = fetchImpl;
78
- try {
79
- return await run();
80
- } finally {
81
- (globalThis as any).fetch = prevFetch;
82
- }
83
- }
@@ -1,103 +0,0 @@
1
- import { beforeEach, describe, expect, it } from "vitest";
2
- import {
3
- addMattermostReaction,
4
- removeMattermostReaction,
5
- resetMattermostReactionBotUserCacheForTests,
6
- } from "./reactions.js";
7
- import {
8
- createMattermostReactionFetchMock,
9
- createMattermostTestConfig,
10
- } from "./reactions.test-helpers.js";
11
-
12
- describe("mattermost reactions", () => {
13
- beforeEach(() => {
14
- resetMattermostReactionBotUserCacheForTests();
15
- });
16
-
17
- it("adds reactions by calling /users/me then POST /reactions", async () => {
18
- const fetchMock = createMattermostReactionFetchMock({
19
- mode: "add",
20
- postId: "POST1",
21
- emojiName: "thumbsup",
22
- });
23
-
24
- const result = await addMattermostReaction({
25
- cfg: createMattermostTestConfig(),
26
- postId: "POST1",
27
- emojiName: "thumbsup",
28
- fetchImpl: fetchMock as unknown as typeof fetch,
29
- });
30
-
31
- expect(result).toEqual({ ok: true });
32
- expect(fetchMock).toHaveBeenCalled();
33
- });
34
-
35
- it("returns a Result error when add reaction API call fails", async () => {
36
- const fetchMock = createMattermostReactionFetchMock({
37
- mode: "add",
38
- postId: "POST1",
39
- emojiName: "thumbsup",
40
- status: 500,
41
- body: { id: "err", message: "boom" },
42
- });
43
-
44
- const result = await addMattermostReaction({
45
- cfg: createMattermostTestConfig(),
46
- postId: "POST1",
47
- emojiName: "thumbsup",
48
- fetchImpl: fetchMock as unknown as typeof fetch,
49
- });
50
-
51
- expect(result.ok).toBe(false);
52
- if (!result.ok) {
53
- expect(result.error).toContain("Mattermost add reaction failed");
54
- }
55
- });
56
-
57
- it("removes reactions by calling /users/me then DELETE /users/:id/posts/:postId/reactions/:emoji", async () => {
58
- const fetchMock = createMattermostReactionFetchMock({
59
- mode: "remove",
60
- postId: "POST1",
61
- emojiName: "thumbsup",
62
- });
63
-
64
- const result = await removeMattermostReaction({
65
- cfg: createMattermostTestConfig(),
66
- postId: "POST1",
67
- emojiName: "thumbsup",
68
- fetchImpl: fetchMock as unknown as typeof fetch,
69
- });
70
-
71
- expect(result).toEqual({ ok: true });
72
- expect(fetchMock).toHaveBeenCalled();
73
- });
74
-
75
- it("caches the bot user id across reaction mutations", async () => {
76
- const fetchMock = createMattermostReactionFetchMock({
77
- mode: "both",
78
- postId: "POST1",
79
- emojiName: "thumbsup",
80
- });
81
-
82
- const cfg = createMattermostTestConfig();
83
- const addResult = await addMattermostReaction({
84
- cfg,
85
- postId: "POST1",
86
- emojiName: "thumbsup",
87
- fetchImpl: fetchMock as unknown as typeof fetch,
88
- });
89
- const removeResult = await removeMattermostReaction({
90
- cfg,
91
- postId: "POST1",
92
- emojiName: "thumbsup",
93
- fetchImpl: fetchMock as unknown as typeof fetch,
94
- });
95
-
96
- const usersMeCalls = fetchMock.mock.calls.filter((call) =>
97
- String(call[0]).endsWith("/api/v4/users/me"),
98
- );
99
- expect(addResult).toEqual({ ok: true });
100
- expect(removeResult).toEqual({ ok: true });
101
- expect(usersMeCalls).toHaveLength(1);
102
- });
103
- });
@@ -1,124 +0,0 @@
1
- import type { OpenClawConfig } from "openclaw/plugin-sdk";
2
- import { resolveMattermostAccount } from "./accounts.js";
3
- import { createMattermostClient, fetchMattermostMe, type MattermostClient } from "./client.js";
4
-
5
- type Result = { ok: true } | { ok: false; error: string };
6
- type ReactionParams = {
7
- cfg: OpenClawConfig;
8
- postId: string;
9
- emojiName: string;
10
- accountId?: string | null;
11
- fetchImpl?: typeof fetch;
12
- };
13
- type ReactionMutation = (client: MattermostClient, params: MutationPayload) => Promise<void>;
14
- type MutationPayload = { userId: string; postId: string; emojiName: string };
15
-
16
- const BOT_USER_CACHE_TTL_MS = 10 * 60_000;
17
- const botUserIdCache = new Map<string, { userId: string; expiresAt: number }>();
18
-
19
- async function resolveBotUserId(
20
- client: MattermostClient,
21
- cacheKey: string,
22
- ): Promise<string | null> {
23
- const cached = botUserIdCache.get(cacheKey);
24
- if (cached && cached.expiresAt > Date.now()) {
25
- return cached.userId;
26
- }
27
- const me = await fetchMattermostMe(client);
28
- const userId = me?.id?.trim();
29
- if (!userId) {
30
- return null;
31
- }
32
- botUserIdCache.set(cacheKey, { userId, expiresAt: Date.now() + BOT_USER_CACHE_TTL_MS });
33
- return userId;
34
- }
35
-
36
- export async function addMattermostReaction(params: {
37
- cfg: OpenClawConfig;
38
- postId: string;
39
- emojiName: string;
40
- accountId?: string | null;
41
- fetchImpl?: typeof fetch;
42
- }): Promise<Result> {
43
- return runMattermostReaction(params, {
44
- action: "add",
45
- mutation: createReaction,
46
- });
47
- }
48
-
49
- export async function removeMattermostReaction(params: {
50
- cfg: OpenClawConfig;
51
- postId: string;
52
- emojiName: string;
53
- accountId?: string | null;
54
- fetchImpl?: typeof fetch;
55
- }): Promise<Result> {
56
- return runMattermostReaction(params, {
57
- action: "remove",
58
- mutation: deleteReaction,
59
- });
60
- }
61
-
62
- export function resetMattermostReactionBotUserCacheForTests(): void {
63
- botUserIdCache.clear();
64
- }
65
-
66
- async function runMattermostReaction(
67
- params: ReactionParams,
68
- options: {
69
- action: "add" | "remove";
70
- mutation: ReactionMutation;
71
- },
72
- ): Promise<Result> {
73
- const resolved = resolveMattermostAccount({ cfg: params.cfg, accountId: params.accountId });
74
- const baseUrl = resolved.baseUrl?.trim();
75
- const botToken = resolved.botToken?.trim();
76
- if (!baseUrl || !botToken) {
77
- return { ok: false, error: "Mattermost botToken/baseUrl missing." };
78
- }
79
-
80
- const client = createMattermostClient({
81
- baseUrl,
82
- botToken,
83
- fetchImpl: params.fetchImpl,
84
- });
85
-
86
- const cacheKey = `${baseUrl}:${botToken}`;
87
- const userId = await resolveBotUserId(client, cacheKey);
88
- if (!userId) {
89
- return { ok: false, error: "Mattermost reactions failed: could not resolve bot user id." };
90
- }
91
-
92
- try {
93
- await options.mutation(client, {
94
- userId,
95
- postId: params.postId,
96
- emojiName: params.emojiName,
97
- });
98
- } catch (err) {
99
- return { ok: false, error: `Mattermost ${options.action} reaction failed: ${String(err)}` };
100
- }
101
-
102
- return { ok: true };
103
- }
104
-
105
- async function createReaction(client: MattermostClient, params: MutationPayload): Promise<void> {
106
- await client.request<Record<string, unknown>>("/reactions", {
107
- method: "POST",
108
- body: JSON.stringify({
109
- user_id: params.userId,
110
- post_id: params.postId,
111
- emoji_name: params.emojiName,
112
- }),
113
- });
114
- }
115
-
116
- async function deleteReaction(client: MattermostClient, params: MutationPayload): Promise<void> {
117
- const emoji = encodeURIComponent(params.emojiName);
118
- await client.request<unknown>(
119
- `/users/${params.userId}/posts/${params.postId}/reactions/${emoji}`,
120
- {
121
- method: "DELETE",
122
- },
123
- );
124
- }
@@ -1,192 +0,0 @@
1
- import { beforeEach, describe, expect, it, vi } from "vitest";
2
- import { runWithReconnect } from "./reconnect.js";
3
-
4
- beforeEach(() => {
5
- vi.clearAllMocks();
6
- });
7
-
8
- describe("runWithReconnect", () => {
9
- it("retries after connectFn resolves (normal close)", async () => {
10
- let callCount = 0;
11
- const abort = new AbortController();
12
- const connectFn = vi.fn(async () => {
13
- callCount++;
14
- if (callCount >= 3) {
15
- abort.abort();
16
- }
17
- });
18
-
19
- await runWithReconnect(connectFn, {
20
- abortSignal: abort.signal,
21
- initialDelayMs: 1,
22
- });
23
-
24
- expect(connectFn).toHaveBeenCalledTimes(3);
25
- });
26
-
27
- it("retries after connectFn throws (connection error)", async () => {
28
- let callCount = 0;
29
- const abort = new AbortController();
30
- const onError = vi.fn();
31
- const connectFn = vi.fn(async () => {
32
- callCount++;
33
- if (callCount < 3) {
34
- throw new Error("fetch failed");
35
- }
36
- abort.abort();
37
- });
38
-
39
- await runWithReconnect(connectFn, {
40
- abortSignal: abort.signal,
41
- onError,
42
- initialDelayMs: 1,
43
- });
44
-
45
- expect(connectFn).toHaveBeenCalledTimes(3);
46
- expect(onError).toHaveBeenCalledTimes(2);
47
- expect(onError).toHaveBeenCalledWith(expect.objectContaining({ message: "fetch failed" }));
48
- });
49
-
50
- it("uses exponential backoff on consecutive errors, capped at maxDelayMs", async () => {
51
- const abort = new AbortController();
52
- const delays: number[] = [];
53
- let callCount = 0;
54
- const connectFn = vi.fn(async () => {
55
- callCount++;
56
- if (callCount >= 6) {
57
- abort.abort();
58
- return;
59
- }
60
- throw new Error("connection refused");
61
- });
62
-
63
- await runWithReconnect(connectFn, {
64
- abortSignal: abort.signal,
65
- onReconnect: (delayMs) => delays.push(delayMs),
66
- // Keep this test fast: validate the exponential pattern, not real-time waiting.
67
- initialDelayMs: 1,
68
- maxDelayMs: 10,
69
- });
70
-
71
- expect(connectFn).toHaveBeenCalledTimes(6);
72
- // 5 errors produce delays: 1, 2, 4, 8, 10(cap)
73
- // 6th succeeds -> delay resets to 100
74
- // But 6th also aborts → onReconnect NOT called (abort check fires first)
75
- expect(delays).toEqual([1, 2, 4, 8, 10]);
76
- });
77
-
78
- it("resets backoff after successful connection", async () => {
79
- const abort = new AbortController();
80
- const delays: number[] = [];
81
- let callCount = 0;
82
- const connectFn = vi.fn(async () => {
83
- callCount++;
84
- if (callCount === 1) {
85
- throw new Error("first failure");
86
- }
87
- if (callCount === 2) {
88
- return; // success
89
- }
90
- if (callCount === 3) {
91
- throw new Error("second failure");
92
- }
93
- abort.abort();
94
- });
95
-
96
- await runWithReconnect(connectFn, {
97
- abortSignal: abort.signal,
98
- onReconnect: (delayMs) => delays.push(delayMs),
99
- initialDelayMs: 1,
100
- maxDelayMs: 60_000,
101
- });
102
-
103
- expect(connectFn).toHaveBeenCalledTimes(4);
104
- // call 1: fail -> delay 1
105
- // call 2: success → delay resets to 1
106
- // call 3: fail -> delay 1 (reset held)
107
- // call 4: success + abort → no onReconnect
108
- expect(delays).toEqual([1, 1, 1]);
109
- });
110
-
111
- it("stops immediately when abort signal is pre-fired", async () => {
112
- const abort = new AbortController();
113
- abort.abort();
114
- const connectFn = vi.fn(async () => {});
115
-
116
- await runWithReconnect(connectFn, { abortSignal: abort.signal });
117
-
118
- expect(connectFn).not.toHaveBeenCalled();
119
- });
120
-
121
- it("stops after current connection when abort fires mid-connection", async () => {
122
- const abort = new AbortController();
123
- const connectFn = vi.fn(async () => {
124
- abort.abort();
125
- });
126
-
127
- await runWithReconnect(connectFn, {
128
- abortSignal: abort.signal,
129
- initialDelayMs: 1,
130
- });
131
-
132
- expect(connectFn).toHaveBeenCalledTimes(1);
133
- });
134
-
135
- it("abort signal interrupts backoff sleep immediately", async () => {
136
- const abort = new AbortController();
137
- const connectFn = vi.fn(async () => {
138
- // Schedule abort to fire 10ms into the 60s sleep
139
- setTimeout(() => abort.abort(), 10);
140
- });
141
-
142
- const start = Date.now();
143
- await runWithReconnect(connectFn, {
144
- abortSignal: abort.signal,
145
- initialDelayMs: 60_000,
146
- });
147
- const elapsed = Date.now() - start;
148
-
149
- expect(connectFn).toHaveBeenCalledTimes(1);
150
- expect(elapsed).toBeLessThan(5000);
151
- });
152
-
153
- it("applies jitter to reconnect delay when configured", async () => {
154
- const abort = new AbortController();
155
- const delays: number[] = [];
156
- let callCount = 0;
157
- const connectFn = vi.fn(async () => {
158
- callCount++;
159
- if (callCount === 1) {
160
- throw new Error("connection refused");
161
- }
162
- abort.abort();
163
- });
164
-
165
- await runWithReconnect(connectFn, {
166
- abortSignal: abort.signal,
167
- onReconnect: (delayMs) => delays.push(delayMs),
168
- initialDelayMs: 10,
169
- jitterRatio: 0.5,
170
- random: () => 1,
171
- });
172
-
173
- expect(connectFn).toHaveBeenCalledTimes(2);
174
- expect(delays).toEqual([15]);
175
- });
176
-
177
- it("supports strategy hook to stop reconnecting after failure", async () => {
178
- const onReconnect = vi.fn();
179
- const connectFn = vi.fn(async () => {
180
- throw new Error("fatal");
181
- });
182
-
183
- await runWithReconnect(connectFn, {
184
- initialDelayMs: 1,
185
- onReconnect,
186
- shouldReconnect: (params) => params.outcome !== "rejected",
187
- });
188
-
189
- expect(connectFn).toHaveBeenCalledTimes(1);
190
- expect(onReconnect).not.toHaveBeenCalled();
191
- });
192
- });
@@ -1,103 +0,0 @@
1
- export type ReconnectOutcome = "resolved" | "rejected";
2
-
3
- export type ShouldReconnectParams = {
4
- attempt: number;
5
- delayMs: number;
6
- outcome: ReconnectOutcome;
7
- error?: unknown;
8
- };
9
-
10
- export type RunWithReconnectOpts = {
11
- abortSignal?: AbortSignal;
12
- onError?: (err: unknown) => void;
13
- onReconnect?: (delayMs: number) => void;
14
- initialDelayMs?: number;
15
- maxDelayMs?: number;
16
- jitterRatio?: number;
17
- random?: () => number;
18
- shouldReconnect?: (params: ShouldReconnectParams) => boolean;
19
- };
20
-
21
- /**
22
- * Reconnection loop with exponential backoff.
23
- *
24
- * Calls `connectFn` in a while loop. On normal resolve (connection closed),
25
- * the backoff resets. On thrown error (connection failed), the current delay is
26
- * used, then doubled for the next retry.
27
- * The loop exits when `abortSignal` fires.
28
- */
29
- export async function runWithReconnect(
30
- connectFn: () => Promise<void>,
31
- opts: RunWithReconnectOpts = {},
32
- ): Promise<void> {
33
- const { initialDelayMs = 2000, maxDelayMs = 60_000 } = opts;
34
- const jitterRatio = Math.max(0, opts.jitterRatio ?? 0);
35
- const random = opts.random ?? Math.random;
36
- let retryDelay = initialDelayMs;
37
- let attempt = 0;
38
-
39
- while (!opts.abortSignal?.aborted) {
40
- let shouldIncreaseDelay = false;
41
- let outcome: ReconnectOutcome = "resolved";
42
- let error: unknown;
43
- try {
44
- await connectFn();
45
- retryDelay = initialDelayMs;
46
- } catch (err) {
47
- if (opts.abortSignal?.aborted) {
48
- return;
49
- }
50
- outcome = "rejected";
51
- error = err;
52
- opts.onError?.(err);
53
- shouldIncreaseDelay = true;
54
- }
55
- if (opts.abortSignal?.aborted) {
56
- return;
57
- }
58
- const delayMs = withJitter(retryDelay, jitterRatio, random);
59
- const shouldReconnect =
60
- opts.shouldReconnect?.({
61
- attempt,
62
- delayMs,
63
- outcome,
64
- error,
65
- }) ?? true;
66
- if (!shouldReconnect) {
67
- return;
68
- }
69
- opts.onReconnect?.(delayMs);
70
- await sleepAbortable(delayMs, opts.abortSignal);
71
- if (shouldIncreaseDelay) {
72
- retryDelay = Math.min(retryDelay * 2, maxDelayMs);
73
- }
74
- attempt++;
75
- }
76
- }
77
-
78
- function withJitter(baseMs: number, jitterRatio: number, random: () => number): number {
79
- if (jitterRatio <= 0) {
80
- return baseMs;
81
- }
82
- const normalized = Math.max(0, Math.min(1, random()));
83
- const spread = baseMs * jitterRatio;
84
- return Math.max(1, Math.round(baseMs - spread + normalized * spread * 2));
85
- }
86
-
87
- function sleepAbortable(ms: number, signal?: AbortSignal): Promise<void> {
88
- return new Promise((resolve) => {
89
- if (signal?.aborted) {
90
- resolve();
91
- return;
92
- }
93
- const onAbort = () => {
94
- clearTimeout(timer);
95
- resolve();
96
- };
97
- const timer = setTimeout(() => {
98
- signal?.removeEventListener("abort", onAbort);
99
- resolve();
100
- }, ms);
101
- signal?.addEventListener("abort", onAbort, { once: true });
102
- });
103
- }