@bitrix24/b24jssdk 1.3.0 → 2.0.0

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 (440) hide show
  1. package/README-AI.md +3 -2
  2. package/README.md +2 -0
  3. package/dist/cjs/_virtual/_commonjsHelpers.cjs +19 -0
  4. package/dist/cjs/_virtual/_commonjsHelpers.cjs.map +1 -0
  5. package/dist/cjs/_virtual/protobuf.cjs +20 -0
  6. package/dist/cjs/_virtual/protobuf.cjs.map +1 -0
  7. package/dist/cjs/_virtual/protobuf2.cjs +14 -0
  8. package/dist/cjs/_virtual/protobuf2.cjs.map +1 -0
  9. package/dist/cjs/core/abstract-b24.cjs +357 -0
  10. package/dist/cjs/core/abstract-b24.cjs.map +1 -0
  11. package/dist/cjs/core/actions/abstract-action.cjs +26 -0
  12. package/dist/cjs/core/actions/abstract-action.cjs.map +1 -0
  13. package/dist/cjs/core/actions/abstract-batch.cjs +97 -0
  14. package/dist/cjs/core/actions/abstract-batch.cjs.map +1 -0
  15. package/dist/cjs/core/actions/manager.cjs +55 -0
  16. package/dist/cjs/core/actions/manager.cjs.map +1 -0
  17. package/dist/cjs/core/actions/v2/batch-by-chunk.cjs +95 -0
  18. package/dist/cjs/core/actions/v2/batch-by-chunk.cjs.map +1 -0
  19. package/dist/cjs/core/actions/v2/batch.cjs +128 -0
  20. package/dist/cjs/core/actions/v2/batch.cjs.map +1 -0
  21. package/dist/cjs/core/actions/v2/call-list.cjs +144 -0
  22. package/dist/cjs/core/actions/v2/call-list.cjs.map +1 -0
  23. package/dist/cjs/core/actions/v2/call.cjs +56 -0
  24. package/dist/cjs/core/actions/v2/call.cjs.map +1 -0
  25. package/dist/cjs/core/actions/v2/fetch-list.cjs +145 -0
  26. package/dist/cjs/core/actions/v2/fetch-list.cjs.map +1 -0
  27. package/dist/cjs/core/actions/v2/manager-v2.cjs +76 -0
  28. package/dist/cjs/core/actions/v2/manager-v2.cjs.map +1 -0
  29. package/dist/cjs/core/actions/v3/_keyset-paginate.cjs +69 -0
  30. package/dist/cjs/core/actions/v3/_keyset-paginate.cjs.map +1 -0
  31. package/dist/cjs/core/actions/v3/aggregate.cjs +96 -0
  32. package/dist/cjs/core/actions/v3/aggregate.cjs.map +1 -0
  33. package/dist/cjs/core/actions/v3/batch-by-chunk.cjs +93 -0
  34. package/dist/cjs/core/actions/v3/batch-by-chunk.cjs.map +1 -0
  35. package/dist/cjs/core/actions/v3/batch.cjs +122 -0
  36. package/dist/cjs/core/actions/v3/batch.cjs.map +1 -0
  37. package/dist/cjs/core/actions/v3/call-list.cjs +126 -0
  38. package/dist/cjs/core/actions/v3/call-list.cjs.map +1 -0
  39. package/dist/cjs/core/actions/v3/call-tail.cjs +118 -0
  40. package/dist/cjs/core/actions/v3/call-tail.cjs.map +1 -0
  41. package/dist/cjs/core/actions/v3/call.cjs +51 -0
  42. package/dist/cjs/core/actions/v3/call.cjs.map +1 -0
  43. package/dist/cjs/core/actions/v3/fetch-list.cjs +122 -0
  44. package/dist/cjs/core/actions/v3/fetch-list.cjs.map +1 -0
  45. package/dist/cjs/core/actions/v3/fetch-tail.cjs +112 -0
  46. package/dist/cjs/core/actions/v3/fetch-tail.cjs.map +1 -0
  47. package/dist/cjs/core/actions/v3/manager-v3.cjs +100 -0
  48. package/dist/cjs/core/actions/v3/manager-v3.cjs.map +1 -0
  49. package/dist/cjs/core/http/abstract-http.cjs +641 -0
  50. package/dist/cjs/core/http/abstract-http.cjs.map +1 -0
  51. package/dist/cjs/core/http/ajax-error.cjs +113 -0
  52. package/dist/cjs/core/http/ajax-error.cjs.map +1 -0
  53. package/dist/cjs/core/http/ajax-result.cjs +219 -0
  54. package/dist/cjs/core/http/ajax-result.cjs.map +1 -0
  55. package/dist/cjs/core/http/limiters/adaptive-delayer.cjs +137 -0
  56. package/dist/cjs/core/http/limiters/adaptive-delayer.cjs.map +1 -0
  57. package/dist/cjs/core/http/limiters/manager.cjs +373 -0
  58. package/dist/cjs/core/http/limiters/manager.cjs.map +1 -0
  59. package/dist/cjs/core/http/limiters/operating-limiter.cjs +173 -0
  60. package/dist/cjs/core/http/limiters/operating-limiter.cjs.map +1 -0
  61. package/dist/cjs/core/http/limiters/params-factory.cjs +124 -0
  62. package/dist/cjs/core/http/limiters/params-factory.cjs.map +1 -0
  63. package/dist/cjs/core/http/limiters/rate-limiter.cjs +404 -0
  64. package/dist/cjs/core/http/limiters/rate-limiter.cjs.map +1 -0
  65. package/dist/cjs/core/http/redact.cjs +85 -0
  66. package/dist/cjs/core/http/redact.cjs.map +1 -0
  67. package/dist/cjs/core/http/v2.cjs +85 -0
  68. package/dist/cjs/core/http/v2.cjs.map +1 -0
  69. package/dist/cjs/core/http/v3.cjs +82 -0
  70. package/dist/cjs/core/http/v3.cjs.map +1 -0
  71. package/dist/cjs/core/interaction/batch/abstract-interaction-batch.cjs +71 -0
  72. package/dist/cjs/core/interaction/batch/abstract-interaction-batch.cjs.map +1 -0
  73. package/dist/cjs/core/interaction/batch/parse-row.cjs +69 -0
  74. package/dist/cjs/core/interaction/batch/parse-row.cjs.map +1 -0
  75. package/dist/cjs/core/interaction/batch/processing/interface-strategy.cjs +87 -0
  76. package/dist/cjs/core/interaction/batch/processing/interface-strategy.cjs.map +1 -0
  77. package/dist/cjs/core/interaction/batch/processing/v2/abstract-processing.cjs +138 -0
  78. package/dist/cjs/core/interaction/batch/processing/v2/abstract-processing.cjs.map +1 -0
  79. package/dist/cjs/core/interaction/batch/processing/v2/as-array.cjs +34 -0
  80. package/dist/cjs/core/interaction/batch/processing/v2/as-array.cjs.map +1 -0
  81. package/dist/cjs/core/interaction/batch/processing/v2/as-object.cjs +34 -0
  82. package/dist/cjs/core/interaction/batch/processing/v2/as-object.cjs.map +1 -0
  83. package/dist/cjs/core/interaction/batch/processing/v3/abstract-processing.cjs +115 -0
  84. package/dist/cjs/core/interaction/batch/processing/v3/abstract-processing.cjs.map +1 -0
  85. package/dist/cjs/core/interaction/batch/processing/v3/as-array.cjs +34 -0
  86. package/dist/cjs/core/interaction/batch/processing/v3/as-array.cjs.map +1 -0
  87. package/dist/cjs/core/interaction/batch/processing/v3/as-object.cjs +34 -0
  88. package/dist/cjs/core/interaction/batch/processing/v3/as-object.cjs.map +1 -0
  89. package/dist/cjs/core/interaction/batch/v2.cjs +47 -0
  90. package/dist/cjs/core/interaction/batch/v2.cjs.map +1 -0
  91. package/dist/cjs/core/interaction/batch/v3.cjs +45 -0
  92. package/dist/cjs/core/interaction/batch/v3.cjs.map +1 -0
  93. package/dist/cjs/core/language/list.cjs +59 -0
  94. package/dist/cjs/core/language/list.cjs.map +1 -0
  95. package/dist/cjs/core/request-id-generator.cjs +44 -0
  96. package/dist/cjs/core/request-id-generator.cjs.map +1 -0
  97. package/dist/cjs/core/result.cjs +137 -0
  98. package/dist/cjs/core/result.cjs.map +1 -0
  99. package/dist/cjs/core/sdk-error.cjs +85 -0
  100. package/dist/cjs/core/sdk-error.cjs.map +1 -0
  101. package/dist/cjs/core/tools/abstract-tool.cjs +26 -0
  102. package/dist/cjs/core/tools/abstract-tool.cjs.map +1 -0
  103. package/dist/cjs/core/tools/healthcheck.cjs +50 -0
  104. package/dist/cjs/core/tools/healthcheck.cjs.map +1 -0
  105. package/dist/cjs/core/tools/manager.cjs +52 -0
  106. package/dist/cjs/core/tools/manager.cjs.map +1 -0
  107. package/dist/cjs/core/tools/ping.cjs +58 -0
  108. package/dist/cjs/core/tools/ping.cjs.map +1 -0
  109. package/dist/cjs/core/version-manager.cjs +57 -0
  110. package/dist/cjs/core/version-manager.cjs.map +1 -0
  111. package/dist/cjs/frame/auth.cjs +100 -0
  112. package/dist/cjs/frame/auth.cjs.map +1 -0
  113. package/dist/cjs/frame/b24.cjs +178 -0
  114. package/dist/cjs/frame/b24.cjs.map +1 -0
  115. package/dist/cjs/frame/dialog.cjs +120 -0
  116. package/dist/cjs/frame/dialog.cjs.map +1 -0
  117. package/dist/cjs/frame/frame.cjs +103 -0
  118. package/dist/cjs/frame/frame.cjs.map +1 -0
  119. package/dist/cjs/frame/message/commands.cjs +39 -0
  120. package/dist/cjs/frame/message/commands.cjs.map +1 -0
  121. package/dist/cjs/frame/message/controller.cjs +191 -0
  122. package/dist/cjs/frame/message/controller.cjs.map +1 -0
  123. package/dist/cjs/frame/options.cjs +108 -0
  124. package/dist/cjs/frame/options.cjs.map +1 -0
  125. package/dist/cjs/frame/parent.cjs +259 -0
  126. package/dist/cjs/frame/parent.cjs.map +1 -0
  127. package/dist/cjs/frame/placement.cjs +156 -0
  128. package/dist/cjs/frame/placement.cjs.map +1 -0
  129. package/dist/cjs/frame/slider.cjs +162 -0
  130. package/dist/cjs/frame/slider.cjs.map +1 -0
  131. package/dist/cjs/helper/abstract-helper.cjs +55 -0
  132. package/dist/cjs/helper/abstract-helper.cjs.map +1 -0
  133. package/dist/cjs/helper/app-manager.cjs +39 -0
  134. package/dist/cjs/helper/app-manager.cjs.map +1 -0
  135. package/dist/cjs/helper/currency-manager.cjs +215 -0
  136. package/dist/cjs/helper/currency-manager.cjs.map +1 -0
  137. package/dist/cjs/helper/helper-manager.cjs +397 -0
  138. package/dist/cjs/helper/helper-manager.cjs.map +1 -0
  139. package/dist/cjs/helper/license-manager.cjs +52 -0
  140. package/dist/cjs/helper/license-manager.cjs.map +1 -0
  141. package/dist/cjs/helper/options-manager.cjs +205 -0
  142. package/dist/cjs/helper/options-manager.cjs.map +1 -0
  143. package/dist/cjs/helper/payment-manager.cjs +35 -0
  144. package/dist/cjs/helper/payment-manager.cjs.map +1 -0
  145. package/dist/cjs/helper/profile-manager.cjs +35 -0
  146. package/dist/cjs/helper/profile-manager.cjs.map +1 -0
  147. package/dist/cjs/helper/use-b24-helper.cjs +85 -0
  148. package/dist/cjs/helper/use-b24-helper.cjs.map +1 -0
  149. package/dist/cjs/hook/auth.cjs +79 -0
  150. package/dist/cjs/hook/auth.cjs.map +1 -0
  151. package/dist/cjs/hook/b24.cjs +117 -0
  152. package/dist/cjs/hook/b24.cjs.map +1 -0
  153. package/dist/cjs/index.cjs +176 -0
  154. package/dist/cjs/index.cjs.map +1 -0
  155. package/dist/cjs/index.d.cts +6415 -0
  156. package/dist/cjs/index.d.mts +6415 -0
  157. package/dist/cjs/index.d.ts +6415 -0
  158. package/dist/cjs/loader-b24frame.cjs +103 -0
  159. package/dist/cjs/loader-b24frame.cjs.map +1 -0
  160. package/dist/cjs/logger/abstract-logger.cjs +71 -0
  161. package/dist/cjs/logger/abstract-logger.cjs.map +1 -0
  162. package/dist/cjs/logger/browser.cjs +165 -0
  163. package/dist/cjs/logger/browser.cjs.map +1 -0
  164. package/dist/cjs/logger/formatter/abstract-formatter.cjs +36 -0
  165. package/dist/cjs/logger/formatter/abstract-formatter.cjs.map +1 -0
  166. package/dist/cjs/logger/formatter/json-formatter.cjs +36 -0
  167. package/dist/cjs/logger/formatter/json-formatter.cjs.map +1 -0
  168. package/dist/cjs/logger/formatter/line-formatter.cjs +43 -0
  169. package/dist/cjs/logger/formatter/line-formatter.cjs.map +1 -0
  170. package/dist/cjs/logger/formatter/telegram-formatter.cjs +105 -0
  171. package/dist/cjs/logger/formatter/telegram-formatter.cjs.map +1 -0
  172. package/dist/cjs/logger/handler/abstract-handler.cjs +41 -0
  173. package/dist/cjs/logger/handler/abstract-handler.cjs.map +1 -0
  174. package/dist/cjs/logger/handler/consola-adapter.cjs +64 -0
  175. package/dist/cjs/logger/handler/consola-adapter.cjs.map +1 -0
  176. package/dist/cjs/logger/handler/console-handler.cjs +100 -0
  177. package/dist/cjs/logger/handler/console-handler.cjs.map +1 -0
  178. package/dist/cjs/logger/handler/console-v2-handler.cjs +53 -0
  179. package/dist/cjs/logger/handler/console-v2-handler.cjs.map +1 -0
  180. package/dist/cjs/logger/handler/memory-handler.cjs +50 -0
  181. package/dist/cjs/logger/handler/memory-handler.cjs.map +1 -0
  182. package/dist/cjs/logger/handler/stream-handler.cjs +75 -0
  183. package/dist/cjs/logger/handler/stream-handler.cjs.map +1 -0
  184. package/dist/cjs/logger/handler/telegram-handler.cjs +159 -0
  185. package/dist/cjs/logger/handler/telegram-handler.cjs.map +1 -0
  186. package/dist/cjs/logger/handler/winston-adapter.cjs +59 -0
  187. package/dist/cjs/logger/handler/winston-adapter.cjs.map +1 -0
  188. package/dist/cjs/logger/logger-factory.cjs +69 -0
  189. package/dist/cjs/logger/logger-factory.cjs.map +1 -0
  190. package/dist/cjs/logger/logger.cjs +78 -0
  191. package/dist/cjs/logger/logger.cjs.map +1 -0
  192. package/dist/cjs/logger/null-logger.cjs +34 -0
  193. package/dist/cjs/logger/null-logger.cjs.map +1 -0
  194. package/dist/cjs/logger/processor/memory-usage-processor.cjs +22 -0
  195. package/dist/cjs/logger/processor/memory-usage-processor.cjs.map +1 -0
  196. package/dist/cjs/logger/processor/pid-processor.cjs +22 -0
  197. package/dist/cjs/logger/processor/pid-processor.cjs.map +1 -0
  198. package/dist/cjs/oauth/auth.cjs +214 -0
  199. package/dist/cjs/oauth/auth.cjs.map +1 -0
  200. package/dist/cjs/oauth/b24.cjs +119 -0
  201. package/dist/cjs/oauth/b24.cjs.map +1 -0
  202. package/dist/cjs/oauth/refresh-token-error.cjs +22 -0
  203. package/dist/cjs/oauth/refresh-token-error.cjs.map +1 -0
  204. package/dist/cjs/pullClient/abstract-connector.cjs +80 -0
  205. package/dist/cjs/pullClient/abstract-connector.cjs.map +1 -0
  206. package/dist/cjs/pullClient/channel-manager.cjs +91 -0
  207. package/dist/cjs/pullClient/channel-manager.cjs.map +1 -0
  208. package/dist/cjs/pullClient/client.cjs +2177 -0
  209. package/dist/cjs/pullClient/client.cjs.map +1 -0
  210. package/dist/cjs/pullClient/errors.cjs +34 -0
  211. package/dist/cjs/pullClient/errors.cjs.map +1 -0
  212. package/dist/cjs/pullClient/json-rpc.cjs +213 -0
  213. package/dist/cjs/pullClient/json-rpc.cjs.map +1 -0
  214. package/dist/cjs/pullClient/long-polling-connector.cjs +159 -0
  215. package/dist/cjs/pullClient/long-polling-connector.cjs.map +1 -0
  216. package/dist/cjs/pullClient/protobuf/index.cjs +22 -0
  217. package/dist/cjs/pullClient/protobuf/index.cjs.map +1 -0
  218. package/dist/cjs/pullClient/protobuf/model.cjs +1060 -0
  219. package/dist/cjs/pullClient/protobuf/model.cjs.map +1 -0
  220. package/dist/cjs/pullClient/protobuf/protobuf.cjs +4655 -0
  221. package/dist/cjs/pullClient/protobuf/protobuf.cjs.map +1 -0
  222. package/dist/cjs/pullClient/shared-config.cjs +135 -0
  223. package/dist/cjs/pullClient/shared-config.cjs.map +1 -0
  224. package/dist/cjs/pullClient/storage-manager.cjs +74 -0
  225. package/dist/cjs/pullClient/storage-manager.cjs.map +1 -0
  226. package/dist/cjs/pullClient/web-socket-connector.cjs +131 -0
  227. package/dist/cjs/pullClient/web-socket-connector.cjs.map +1 -0
  228. package/dist/cjs/tools/batch-ref-v3.cjs +54 -0
  229. package/dist/cjs/tools/batch-ref-v3.cjs.map +1 -0
  230. package/dist/cjs/tools/browser.cjs +156 -0
  231. package/dist/cjs/tools/browser.cjs.map +1 -0
  232. package/dist/cjs/tools/environment.cjs +32 -0
  233. package/dist/cjs/tools/environment.cjs.map +1 -0
  234. package/dist/cjs/tools/filter-v3.cjs +139 -0
  235. package/dist/cjs/tools/filter-v3.cjs.map +1 -0
  236. package/dist/cjs/tools/formatters/iban.cjs +307 -0
  237. package/dist/cjs/tools/formatters/iban.cjs.map +1 -0
  238. package/dist/cjs/tools/formatters/numbers.cjs +68 -0
  239. package/dist/cjs/tools/formatters/numbers.cjs.map +1 -0
  240. package/dist/cjs/tools/index.cjs +42 -0
  241. package/dist/cjs/tools/index.cjs.map +1 -0
  242. package/dist/cjs/tools/scroll-size.cjs +29 -0
  243. package/dist/cjs/tools/scroll-size.cjs.map +1 -0
  244. package/dist/cjs/tools/text.cjs +210 -0
  245. package/dist/cjs/tools/text.cjs.map +1 -0
  246. package/dist/cjs/tools/type.cjs +339 -0
  247. package/dist/cjs/tools/type.cjs.map +1 -0
  248. package/dist/cjs/tools/use-formatters.cjs +462 -0
  249. package/dist/cjs/tools/use-formatters.cjs.map +1 -0
  250. package/dist/cjs/tools/uuidv7.cjs +58 -0
  251. package/dist/cjs/tools/uuidv7.cjs.map +1 -0
  252. package/dist/cjs/types/b24-helper.cjs +62 -0
  253. package/dist/cjs/types/b24-helper.cjs.map +1 -0
  254. package/dist/cjs/types/b24.cjs +18 -0
  255. package/dist/cjs/types/b24.cjs.map +1 -0
  256. package/dist/cjs/types/bizproc/index.cjs +195 -0
  257. package/dist/cjs/types/bizproc/index.cjs.map +1 -0
  258. package/dist/cjs/types/catalog/index.cjs +39 -0
  259. package/dist/cjs/types/catalog/index.cjs.map +1 -0
  260. package/dist/cjs/types/common.cjs +33 -0
  261. package/dist/cjs/types/common.cjs.map +1 -0
  262. package/dist/cjs/types/crm/entity-type.cjs +62 -0
  263. package/dist/cjs/types/crm/entity-type.cjs.map +1 -0
  264. package/dist/cjs/types/crm/productrow.cjs +19 -0
  265. package/dist/cjs/types/crm/productrow.cjs.map +1 -0
  266. package/dist/cjs/types/logger.cjs +24 -0
  267. package/dist/cjs/types/logger.cjs.map +1 -0
  268. package/dist/cjs/types/pull.cjs +94 -0
  269. package/dist/cjs/types/pull.cjs.map +1 -0
  270. package/dist/esm/_virtual/_commonjsHelpers.mjs +1 -1
  271. package/dist/esm/_virtual/protobuf.mjs +1 -1
  272. package/dist/esm/_virtual/protobuf2.mjs +1 -1
  273. package/dist/esm/core/abstract-b24.mjs +1 -1
  274. package/dist/esm/core/actions/abstract-action.mjs +1 -1
  275. package/dist/esm/core/actions/abstract-batch.mjs +1 -1
  276. package/dist/esm/core/actions/manager.mjs +1 -1
  277. package/dist/esm/core/actions/v2/batch-by-chunk.mjs +1 -1
  278. package/dist/esm/core/actions/v2/batch.mjs +1 -1
  279. package/dist/esm/core/actions/v2/call-list.mjs +1 -1
  280. package/dist/esm/core/actions/v2/call.mjs +1 -15
  281. package/dist/esm/core/actions/v2/call.mjs.map +1 -1
  282. package/dist/esm/core/actions/v2/fetch-list.mjs +1 -1
  283. package/dist/esm/core/actions/v2/manager-v2.mjs +1 -1
  284. package/dist/esm/core/actions/v3/_keyset-paginate.mjs +66 -0
  285. package/dist/esm/core/actions/v3/_keyset-paginate.mjs.map +1 -0
  286. package/dist/esm/core/actions/v3/aggregate.mjs +94 -0
  287. package/dist/esm/core/actions/v3/aggregate.mjs.map +1 -0
  288. package/dist/esm/core/actions/v3/batch-by-chunk.mjs +1 -1
  289. package/dist/esm/core/actions/v3/batch.mjs +1 -10
  290. package/dist/esm/core/actions/v3/batch.mjs.map +1 -1
  291. package/dist/esm/core/actions/v3/call-list.mjs +30 -44
  292. package/dist/esm/core/actions/v3/call-list.mjs.map +1 -1
  293. package/dist/esm/core/actions/v3/call-tail.mjs +116 -0
  294. package/dist/esm/core/actions/v3/call-tail.mjs.map +1 -0
  295. package/dist/esm/core/actions/v3/call.mjs +1 -10
  296. package/dist/esm/core/actions/v3/call.mjs.map +1 -1
  297. package/dist/esm/core/actions/v3/fetch-list.mjs +24 -41
  298. package/dist/esm/core/actions/v3/fetch-list.mjs.map +1 -1
  299. package/dist/esm/core/actions/v3/fetch-tail.mjs +110 -0
  300. package/dist/esm/core/actions/v3/fetch-tail.mjs.map +1 -0
  301. package/dist/esm/core/actions/v3/manager-v3.mjs +25 -1
  302. package/dist/esm/core/actions/v3/manager-v3.mjs.map +1 -1
  303. package/dist/esm/core/http/abstract-http.mjs +68 -17
  304. package/dist/esm/core/http/abstract-http.mjs.map +1 -1
  305. package/dist/esm/core/http/ajax-error.mjs +1 -1
  306. package/dist/esm/core/http/ajax-result.mjs +9 -8
  307. package/dist/esm/core/http/ajax-result.mjs.map +1 -1
  308. package/dist/esm/core/http/limiters/adaptive-delayer.mjs +1 -1
  309. package/dist/esm/core/http/limiters/manager.mjs +1 -1
  310. package/dist/esm/core/http/limiters/operating-limiter.mjs +1 -1
  311. package/dist/esm/core/http/limiters/params-factory.mjs +1 -1
  312. package/dist/esm/core/http/limiters/rate-limiter.mjs +1 -1
  313. package/dist/esm/core/http/redact.mjs +41 -13
  314. package/dist/esm/core/http/redact.mjs.map +1 -1
  315. package/dist/esm/core/http/v2.mjs +1 -18
  316. package/dist/esm/core/http/v2.mjs.map +1 -1
  317. package/dist/esm/core/http/v3.mjs +1 -15
  318. package/dist/esm/core/http/v3.mjs.map +1 -1
  319. package/dist/esm/core/interaction/batch/abstract-interaction-batch.mjs +1 -1
  320. package/dist/esm/core/interaction/batch/parse-row.mjs +1 -1
  321. package/dist/esm/core/interaction/batch/processing/interface-strategy.mjs +44 -1
  322. package/dist/esm/core/interaction/batch/processing/interface-strategy.mjs.map +1 -1
  323. package/dist/esm/core/interaction/batch/processing/v2/abstract-processing.mjs +7 -6
  324. package/dist/esm/core/interaction/batch/processing/v2/abstract-processing.mjs.map +1 -1
  325. package/dist/esm/core/interaction/batch/processing/v2/as-array.mjs +3 -3
  326. package/dist/esm/core/interaction/batch/processing/v2/as-array.mjs.map +1 -1
  327. package/dist/esm/core/interaction/batch/processing/v2/as-object.mjs +1 -1
  328. package/dist/esm/core/interaction/batch/processing/v3/abstract-processing.mjs +7 -19
  329. package/dist/esm/core/interaction/batch/processing/v3/abstract-processing.mjs.map +1 -1
  330. package/dist/esm/core/interaction/batch/processing/v3/as-array.mjs +3 -3
  331. package/dist/esm/core/interaction/batch/processing/v3/as-array.mjs.map +1 -1
  332. package/dist/esm/core/interaction/batch/processing/v3/as-object.mjs +1 -1
  333. package/dist/esm/core/interaction/batch/v2.mjs +1 -1
  334. package/dist/esm/core/interaction/batch/v3.mjs +1 -1
  335. package/dist/esm/core/language/list.mjs +1 -1
  336. package/dist/esm/core/request-id-generator.mjs +1 -1
  337. package/dist/esm/core/result.mjs +11 -4
  338. package/dist/esm/core/result.mjs.map +1 -1
  339. package/dist/esm/core/sdk-error.mjs +1 -1
  340. package/dist/esm/core/tools/abstract-tool.mjs +1 -1
  341. package/dist/esm/core/tools/healthcheck.mjs +1 -1
  342. package/dist/esm/core/tools/manager.mjs +1 -1
  343. package/dist/esm/core/tools/ping.mjs +1 -1
  344. package/dist/esm/core/version-manager.mjs +19 -157
  345. package/dist/esm/core/version-manager.mjs.map +1 -1
  346. package/dist/esm/frame/auth.mjs +1 -1
  347. package/dist/esm/frame/b24.mjs +8 -2
  348. package/dist/esm/frame/b24.mjs.map +1 -1
  349. package/dist/esm/frame/dialog.mjs +1 -1
  350. package/dist/esm/frame/frame.mjs +1 -1
  351. package/dist/esm/frame/message/commands.mjs +1 -1
  352. package/dist/esm/frame/message/controller.mjs +17 -6
  353. package/dist/esm/frame/message/controller.mjs.map +1 -1
  354. package/dist/esm/frame/options.mjs +1 -1
  355. package/dist/esm/frame/parent.mjs +1 -1
  356. package/dist/esm/frame/placement.mjs +1 -1
  357. package/dist/esm/frame/slider.mjs +1 -1
  358. package/dist/esm/helper/abstract-helper.mjs +1 -1
  359. package/dist/esm/helper/app-manager.mjs +1 -1
  360. package/dist/esm/helper/currency-manager.mjs +1 -1
  361. package/dist/esm/helper/helper-manager.mjs +1 -1
  362. package/dist/esm/helper/license-manager.mjs +1 -1
  363. package/dist/esm/helper/options-manager.mjs +1 -1
  364. package/dist/esm/helper/payment-manager.mjs +1 -1
  365. package/dist/esm/helper/profile-manager.mjs +1 -1
  366. package/dist/esm/helper/use-b24-helper.mjs +1 -1
  367. package/dist/esm/hook/auth.mjs +1 -1
  368. package/dist/esm/hook/b24.mjs +3 -3
  369. package/dist/esm/hook/b24.mjs.map +1 -1
  370. package/dist/esm/index.d.mts +412 -39
  371. package/dist/esm/index.d.ts +412 -39
  372. package/dist/esm/index.mjs +3 -1
  373. package/dist/esm/index.mjs.map +1 -1
  374. package/dist/esm/loader-b24frame.mjs +1 -1
  375. package/dist/esm/logger/abstract-logger.mjs +1 -1
  376. package/dist/esm/logger/browser.mjs +1 -1
  377. package/dist/esm/logger/formatter/abstract-formatter.mjs +1 -1
  378. package/dist/esm/logger/formatter/json-formatter.mjs +1 -1
  379. package/dist/esm/logger/formatter/line-formatter.mjs +1 -1
  380. package/dist/esm/logger/formatter/telegram-formatter.mjs +1 -1
  381. package/dist/esm/logger/handler/abstract-handler.mjs +1 -1
  382. package/dist/esm/logger/handler/consola-adapter.mjs +1 -1
  383. package/dist/esm/logger/handler/console-handler.mjs +1 -1
  384. package/dist/esm/logger/handler/console-v2-handler.mjs +1 -1
  385. package/dist/esm/logger/handler/memory-handler.mjs +1 -1
  386. package/dist/esm/logger/handler/stream-handler.mjs +1 -1
  387. package/dist/esm/logger/handler/telegram-handler.mjs +1 -1
  388. package/dist/esm/logger/handler/winston-adapter.mjs +1 -1
  389. package/dist/esm/logger/logger-factory.mjs +1 -1
  390. package/dist/esm/logger/logger.mjs +1 -1
  391. package/dist/esm/logger/null-logger.mjs +1 -1
  392. package/dist/esm/logger/processor/memory-usage-processor.mjs +1 -1
  393. package/dist/esm/logger/processor/pid-processor.mjs +1 -1
  394. package/dist/esm/oauth/auth.mjs +13 -16
  395. package/dist/esm/oauth/auth.mjs.map +1 -1
  396. package/dist/esm/oauth/b24.mjs +1 -1
  397. package/dist/esm/oauth/refresh-token-error.mjs +1 -1
  398. package/dist/esm/pullClient/abstract-connector.mjs +1 -1
  399. package/dist/esm/pullClient/channel-manager.mjs +1 -1
  400. package/dist/esm/pullClient/client.mjs +141 -30
  401. package/dist/esm/pullClient/client.mjs.map +1 -1
  402. package/dist/esm/pullClient/errors.mjs +1 -1
  403. package/dist/esm/pullClient/json-rpc.mjs +5 -4
  404. package/dist/esm/pullClient/json-rpc.mjs.map +1 -1
  405. package/dist/esm/pullClient/long-polling-connector.mjs +1 -1
  406. package/dist/esm/pullClient/protobuf/index.mjs +1 -1
  407. package/dist/esm/pullClient/protobuf/model.mjs +1 -1
  408. package/dist/esm/pullClient/protobuf/protobuf.mjs +1 -1
  409. package/dist/esm/pullClient/shared-config.mjs +1 -1
  410. package/dist/esm/pullClient/storage-manager.mjs +1 -1
  411. package/dist/esm/pullClient/web-socket-connector.mjs +1 -1
  412. package/dist/esm/tools/batch-ref-v3.mjs +52 -0
  413. package/dist/esm/tools/batch-ref-v3.mjs.map +1 -0
  414. package/dist/esm/tools/browser.mjs +1 -1
  415. package/dist/esm/tools/environment.mjs +1 -1
  416. package/dist/esm/tools/filter-v3.mjs +137 -0
  417. package/dist/esm/tools/filter-v3.mjs.map +1 -0
  418. package/dist/esm/tools/formatters/iban.mjs +1 -1
  419. package/dist/esm/tools/formatters/numbers.mjs +1 -1
  420. package/dist/esm/tools/index.mjs +1 -1
  421. package/dist/esm/tools/scroll-size.mjs +1 -1
  422. package/dist/esm/tools/text.mjs +1 -1
  423. package/dist/esm/tools/type.mjs +1 -1
  424. package/dist/esm/tools/use-formatters.mjs +1 -1
  425. package/dist/esm/tools/uuidv7.mjs +1 -1
  426. package/dist/esm/types/b24-helper.mjs +1 -1
  427. package/dist/esm/types/b24.mjs +1 -1
  428. package/dist/esm/types/bizproc/index.mjs +1 -1
  429. package/dist/esm/types/catalog/index.mjs +1 -1
  430. package/dist/esm/types/common.mjs +1 -1
  431. package/dist/esm/types/crm/entity-type.mjs +1 -1
  432. package/dist/esm/types/crm/productrow.mjs +1 -1
  433. package/dist/esm/types/logger.mjs +1 -1
  434. package/dist/esm/types/pull.mjs +1 -1
  435. package/dist/umd/index.js +1258 -719
  436. package/dist/umd/index.js.map +1 -1
  437. package/dist/umd/index.min.js +26 -26
  438. package/dist/umd/index.min.js.map +1 -1
  439. package/dist/umd/package.json +3 -0
  440. package/package.json +12 -4
@@ -0,0 +1,124 @@
1
+ /**
2
+ * @package @bitrix24/b24jssdk
3
+ * @version 2.0.0
4
+ * @copyright (c) 2026 Bitrix24
5
+ * @license MIT
6
+ * @see https://github.com/bitrix24/b24jssdk
7
+ * @see https://bitrix24.github.io/b24jssdk/
8
+ */
9
+ 'use strict';
10
+
11
+ var __defProp = Object.defineProperty;
12
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
13
+ class ParamsFactory {
14
+ static {
15
+ __name(this, "ParamsFactory");
16
+ }
17
+ /**
18
+ * Default parameters for regular tariffs
19
+ *
20
+ * @see Http.#restrictionParams
21
+ */
22
+ static getDefault() {
23
+ return {
24
+ rateLimit: {
25
+ burstLimit: 50,
26
+ drainRate: 2,
27
+ adaptiveEnabled: true
28
+ },
29
+ operatingLimit: {
30
+ windowMs: 6e5,
31
+ // 10 min
32
+ limitMs: 48e4,
33
+ // 480 sec
34
+ heavyPercent: 80
35
+ },
36
+ adaptiveConfig: {
37
+ enabled: true,
38
+ thresholdPercent: 80,
39
+ coefficient: 0.01,
40
+ maxDelay: 7e3
41
+ },
42
+ maxRetries: 3,
43
+ retryDelay: 1e3,
44
+ retryOnNetworkError: true
45
+ };
46
+ }
47
+ /**
48
+ * Parameters for the Enterprise plan
49
+ */
50
+ static getEnterprise() {
51
+ return {
52
+ ...this.getDefault(),
53
+ rateLimit: {
54
+ burstLimit: 250,
55
+ drainRate: 5,
56
+ adaptiveEnabled: true
57
+ }
58
+ };
59
+ }
60
+ /**
61
+ * Parameters for bulk data processing
62
+ */
63
+ static getBatchProcessing() {
64
+ return {
65
+ ...this.getDefault(),
66
+ rateLimit: {
67
+ burstLimit: 30,
68
+ drainRate: 1,
69
+ adaptiveEnabled: true
70
+ },
71
+ operatingLimit: {
72
+ windowMs: 6e5,
73
+ limitMs: 48e4,
74
+ heavyPercent: 50
75
+ // Higher threshold for notifications
76
+ },
77
+ adaptiveConfig: {
78
+ enabled: true,
79
+ thresholdPercent: 50,
80
+ // More threshold
81
+ coefficient: 0.015,
82
+ // More pause
83
+ maxDelay: 1e4
84
+ // Max 10 seconds
85
+ },
86
+ maxRetries: 5
87
+ // More attempts
88
+ };
89
+ }
90
+ /**
91
+ * Real-time parameters
92
+ */
93
+ static getRealtime() {
94
+ return {
95
+ ...this.getDefault(),
96
+ adaptiveConfig: {
97
+ enabled: false,
98
+ // Off
99
+ thresholdPercent: 100,
100
+ coefficient: 1e-3,
101
+ maxDelay: 48e4
102
+ },
103
+ maxRetries: 1
104
+ };
105
+ }
106
+ /**
107
+ * Tariff plan based parameters
108
+ */
109
+ static fromTariffPlan(plan) {
110
+ switch (plan.toLowerCase()) {
111
+ case "enterprise":
112
+ return this.getEnterprise();
113
+ case "company":
114
+ case "start":
115
+ case "standard":
116
+ case "basic":
117
+ default:
118
+ return this.getDefault();
119
+ }
120
+ }
121
+ }
122
+
123
+ exports.ParamsFactory = ParamsFactory;
124
+ //# sourceMappingURL=params-factory.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"params-factory.cjs","sources":["../../../../../src/core/http/limiters/params-factory.ts"],"sourcesContent":["import type { RestrictionParams } from '../../../types/limiters'\n\n/**\n * Factory for creating constraint parameters\n */\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport class ParamsFactory {\n /**\n * Default parameters for regular tariffs\n *\n * @see Http.#restrictionParams\n */\n static getDefault(): RestrictionParams {\n return {\n rateLimit: {\n burstLimit: 50,\n drainRate: 2,\n adaptiveEnabled: true\n },\n operatingLimit: {\n windowMs: 600_000, // 10 min\n limitMs: 480_000, // 480 sec\n heavyPercent: 80\n },\n adaptiveConfig: {\n enabled: true,\n thresholdPercent: 80,\n coefficient: 0.01,\n maxDelay: 7_000\n },\n maxRetries: 3,\n retryDelay: 1_000,\n retryOnNetworkError: true\n }\n }\n\n /**\n * Parameters for the Enterprise plan\n */\n static getEnterprise(): RestrictionParams {\n return {\n ...this.getDefault(),\n rateLimit: {\n burstLimit: 250,\n drainRate: 5,\n adaptiveEnabled: true\n }\n }\n }\n\n /**\n * Parameters for bulk data processing\n */\n static getBatchProcessing(): RestrictionParams {\n return {\n ...this.getDefault(),\n rateLimit: {\n burstLimit: 30,\n drainRate: 1,\n adaptiveEnabled: true\n },\n operatingLimit: {\n windowMs: 600_000,\n limitMs: 480_000,\n heavyPercent: 50 // Higher threshold for notifications\n },\n adaptiveConfig: {\n enabled: true,\n thresholdPercent: 50, // More threshold\n coefficient: 0.015, // More pause\n maxDelay: 10_000 // Max 10 seconds\n },\n maxRetries: 5 // More attempts\n }\n }\n\n /**\n * Real-time parameters\n */\n static getRealtime(): RestrictionParams {\n return {\n ...this.getDefault(),\n adaptiveConfig: {\n enabled: false, // Off\n thresholdPercent: 100,\n coefficient: 0.001,\n maxDelay: 480_000\n },\n maxRetries: 1\n }\n }\n\n /**\n * Tariff plan based parameters\n */\n static fromTariffPlan(plan: string): RestrictionParams {\n switch (plan.toLowerCase()) {\n case 'enterprise':\n return this.getEnterprise()\n case 'company':\n case 'start':\n case 'standard':\n case 'basic':\n default:\n return this.getDefault()\n }\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AAMO,MAAM,aAAA,CAAc;AAAA,EAN3B;AAM2B,IAAA,MAAA,CAAA,IAAA,EAAA,eAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMzB,OAAO,UAAA,GAAgC;AACrC,IAAA,OAAO;AAAA,MACL,SAAA,EAAW;AAAA,QACT,UAAA,EAAY,EAAA;AAAA,QACZ,SAAA,EAAW,CAAA;AAAA,QACX,eAAA,EAAiB;AAAA,OACnB;AAAA,MACA,cAAA,EAAgB;AAAA,QACd,QAAA,EAAU,GAAA;AAAA;AAAA,QACV,OAAA,EAAS,IAAA;AAAA;AAAA,QACT,YAAA,EAAc;AAAA,OAChB;AAAA,MACA,cAAA,EAAgB;AAAA,QACd,OAAA,EAAS,IAAA;AAAA,QACT,gBAAA,EAAkB,EAAA;AAAA,QAClB,WAAA,EAAa,IAAA;AAAA,QACb,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,UAAA,EAAY,CAAA;AAAA,MACZ,UAAA,EAAY,GAAA;AAAA,MACZ,mBAAA,EAAqB;AAAA,KACvB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,aAAA,GAAmC;AACxC,IAAA,OAAO;AAAA,MACL,GAAG,KAAK,UAAA,EAAW;AAAA,MACnB,SAAA,EAAW;AAAA,QACT,UAAA,EAAY,GAAA;AAAA,QACZ,SAAA,EAAW,CAAA;AAAA,QACX,eAAA,EAAiB;AAAA;AACnB,KACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,kBAAA,GAAwC;AAC7C,IAAA,OAAO;AAAA,MACL,GAAG,KAAK,UAAA,EAAW;AAAA,MACnB,SAAA,EAAW;AAAA,QACT,UAAA,EAAY,EAAA;AAAA,QACZ,SAAA,EAAW,CAAA;AAAA,QACX,eAAA,EAAiB;AAAA,OACnB;AAAA,MACA,cAAA,EAAgB;AAAA,QACd,QAAA,EAAU,GAAA;AAAA,QACV,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc;AAAA;AAAA,OAChB;AAAA,MACA,cAAA,EAAgB;AAAA,QACd,OAAA,EAAS,IAAA;AAAA,QACT,gBAAA,EAAkB,EAAA;AAAA;AAAA,QAClB,WAAA,EAAa,KAAA;AAAA;AAAA,QACb,QAAA,EAAU;AAAA;AAAA,OACZ;AAAA,MACA,UAAA,EAAY;AAAA;AAAA,KACd;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,WAAA,GAAiC;AACtC,IAAA,OAAO;AAAA,MACL,GAAG,KAAK,UAAA,EAAW;AAAA,MACnB,cAAA,EAAgB;AAAA,QACd,OAAA,EAAS,KAAA;AAAA;AAAA,QACT,gBAAA,EAAkB,GAAA;AAAA,QAClB,WAAA,EAAa,IAAA;AAAA,QACb,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,UAAA,EAAY;AAAA,KACd;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,eAAe,IAAA,EAAiC;AACrD,IAAA,QAAQ,IAAA,CAAK,aAAY;AAAG,MAC1B,KAAK,YAAA;AACH,QAAA,OAAO,KAAK,aAAA,EAAc;AAAA,MAC5B,KAAK,SAAA;AAAA,MACL,KAAK,OAAA;AAAA,MACL,KAAK,UAAA;AAAA,MACL,KAAK,OAAA;AAAA,MACL;AACE,QAAA,OAAO,KAAK,UAAA,EAAW;AAAA;AAC3B,EACF;AACF;;;;"}
@@ -0,0 +1,404 @@
1
+ /**
2
+ * @package @bitrix24/b24jssdk
3
+ * @version 2.0.0
4
+ * @copyright (c) 2026 Bitrix24
5
+ * @license MIT
6
+ * @see https://github.com/bitrix24/b24jssdk
7
+ * @see https://bitrix24.github.io/b24jssdk/
8
+ */
9
+ 'use strict';
10
+
11
+ const loggerFactory = require('../../../logger/logger-factory.cjs');
12
+
13
+ var __defProp = Object.defineProperty;
14
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
15
+ class RateLimiter {
16
+ static {
17
+ __name(this, "RateLimiter");
18
+ }
19
+ #tokens;
20
+ #lastRefill;
21
+ #refillIntervalMs;
22
+ #config;
23
+ #lockQueue = [];
24
+ #originalConfig;
25
+ // Original configuration for recovery
26
+ #errorThreshold = 5;
27
+ // 60-second error threshold to reduce limits
28
+ #successThreshold = 20;
29
+ // Consecutive success threshold for restoring limits
30
+ #minDrainRate = 0.5;
31
+ // Minimum drain rate
32
+ #minBurstLimit = 5;
33
+ // Minimum burst limit
34
+ #errorTimestamps = [];
35
+ // Error timestamps (last 60 seconds)
36
+ #successTimestamps = [];
37
+ // Timestamps of successful requests
38
+ _logger;
39
+ constructor(config) {
40
+ this._logger = loggerFactory.LoggerFactory.createNullLogger();
41
+ this.#config = config;
42
+ this.#originalConfig = { ...config };
43
+ this.#tokens = config.burstLimit;
44
+ this.#lastRefill = Date.now();
45
+ this.#refillIntervalMs = 1e3 / config.drainRate;
46
+ }
47
+ getTitle() {
48
+ return "rateLimiter";
49
+ }
50
+ // region Logger ////
51
+ setLogger(logger) {
52
+ this._logger = logger;
53
+ }
54
+ getLogger() {
55
+ return this._logger;
56
+ }
57
+ // endregion ////
58
+ /**
59
+ * @inheritDoc
60
+ */
61
+ async canProceed(requestId, _method, _params) {
62
+ await this.#acquireLock(requestId);
63
+ try {
64
+ const now = Date.now();
65
+ const timePassed = now - this.#lastRefill;
66
+ const refillAmount = timePassed * this.#config.drainRate / 1e3;
67
+ this.#tokens = Math.min(
68
+ this.#config.burstLimit,
69
+ this.#tokens + refillAmount
70
+ );
71
+ this.#lastRefill = now;
72
+ return this.#tokens >= 1;
73
+ } finally {
74
+ this.#releaseLock();
75
+ }
76
+ }
77
+ /**
78
+ * @inheritDoc
79
+ */
80
+ async waitIfNeeded(requestId, _method, _params) {
81
+ await this.#acquireLock(requestId);
82
+ try {
83
+ const now = Date.now();
84
+ const timePassed = now - this.#lastRefill;
85
+ const refillAmount = timePassed * this.#config.drainRate / 1e3;
86
+ this.#tokens = Math.min(
87
+ this.#config.burstLimit,
88
+ this.#tokens + refillAmount
89
+ );
90
+ this.#lastRefill = now;
91
+ if (this.#tokens >= 1) {
92
+ this.#tokens -= 1;
93
+ return 0;
94
+ }
95
+ const deficit = 1 - this.#tokens;
96
+ return Math.ceil(deficit * this.#refillIntervalMs);
97
+ } finally {
98
+ this.#releaseLock();
99
+ }
100
+ }
101
+ /**
102
+ * Error handler.
103
+ * If there are a lot of errors, we'll lower the limits.
104
+ */
105
+ async handleExceeded(requestId) {
106
+ await this.#acquireLock(requestId);
107
+ try {
108
+ this.#recordError();
109
+ if (this.#config.adaptiveEnabled && this.#shouldReduceLimits()) {
110
+ this.#reduceLimits(requestId);
111
+ }
112
+ this.#tokens = 0;
113
+ return this.#refillIntervalMs + 1e3;
114
+ } finally {
115
+ this.#releaseLock();
116
+ }
117
+ }
118
+ /**
119
+ * Successful request handler.
120
+ * If everything is OK, we'll restore the limits.
121
+ */
122
+ async updateStats(requestId, method, _data) {
123
+ if (method.startsWith("batch::")) {
124
+ return;
125
+ }
126
+ await this.#acquireLock(requestId);
127
+ try {
128
+ this.#recordSuccess();
129
+ if (this.#config.adaptiveEnabled) {
130
+ this.#logStat(requestId);
131
+ }
132
+ if (this.#config.adaptiveEnabled && this.#shouldRestoreLimits()) {
133
+ this.#restoreLimits(requestId);
134
+ }
135
+ } finally {
136
+ this.#releaseLock();
137
+ }
138
+ }
139
+ /**
140
+ * @inheritDoc
141
+ */
142
+ async reset() {
143
+ await this.#acquireLock("reset");
144
+ try {
145
+ this.#tokens = this.#config.burstLimit;
146
+ this.#lastRefill = Date.now();
147
+ this.#errorTimestamps = [];
148
+ this.#successTimestamps = [];
149
+ this.#config.drainRate = this.#originalConfig.drainRate;
150
+ this.#config.burstLimit = this.#originalConfig.burstLimit;
151
+ this.#refillIntervalMs = 1e3 / this.#config.drainRate;
152
+ } finally {
153
+ this.#releaseLock();
154
+ }
155
+ }
156
+ /**
157
+ * @inheritDoc
158
+ */
159
+ getStats() {
160
+ return {
161
+ tokens: this.#tokens,
162
+ burstLimit: this.#config.burstLimit,
163
+ originalBurstLimit: this.#originalConfig.burstLimit,
164
+ drainRate: this.#config.drainRate,
165
+ originalDrainRate: this.#originalConfig.drainRate,
166
+ refillIntervalMs: this.#refillIntervalMs,
167
+ lastRefill: this.#lastRefill,
168
+ pendingRequests: this.#lockQueue.length,
169
+ recentErrors: this.#errorTimestamps.length,
170
+ recentSuccesses: this.#successTimestamps.length
171
+ };
172
+ }
173
+ /**
174
+ * @inheritDoc
175
+ */
176
+ async setConfig(config) {
177
+ await this.#acquireLock("setConfig");
178
+ try {
179
+ this.#config = config;
180
+ this.#originalConfig = { ...config };
181
+ this.#refillIntervalMs = 1e3 / this.#config.drainRate;
182
+ if (config.burstLimit > this.#tokens) {
183
+ this.#tokens = Math.min(config.burstLimit, this.#tokens);
184
+ }
185
+ this.#errorTimestamps = [];
186
+ this.#successTimestamps = [];
187
+ } finally {
188
+ this.#releaseLock();
189
+ }
190
+ }
191
+ /**
192
+ * Acquire a lock for the critical section
193
+ * Uses a promise queue
194
+ */
195
+ async #acquireLock(requestId) {
196
+ return new Promise((resolve) => {
197
+ const queueLength = this.#lockQueue.push(resolve);
198
+ if (queueLength > 1) {
199
+ this.#logAcquireQueue(requestId, queueLength);
200
+ }
201
+ if (this.#lockQueue.length === 1) {
202
+ resolve();
203
+ }
204
+ });
205
+ }
206
+ /**
207
+ * Releases the lock and allows the next person in the queue to proceed
208
+ */
209
+ #releaseLock() {
210
+ this.#lockQueue.shift();
211
+ if (this.#lockQueue.length > 0) {
212
+ const nextResolve = this.#lockQueue[0];
213
+ nextResolve();
214
+ }
215
+ }
216
+ /**
217
+ * Checks whether the limits need to be reduced
218
+ */
219
+ #shouldReduceLimits() {
220
+ return this.#errorTimestamps.length >= this.#errorThreshold;
221
+ }
222
+ /**
223
+ * Checks whether limits need to be restored
224
+ * Restore if:
225
+ * 1. Many successful requests (more than the threshold)
226
+ * 2. Few errors (less than half the threshold)
227
+ * 3. Current limits are lower than the original ones
228
+ */
229
+ #shouldRestoreLimits() {
230
+ return this.#successTimestamps.length >= this.#successThreshold && this.#errorTimestamps.length < this.#errorThreshold / 2 && (this.#config.drainRate < this.#originalConfig.drainRate || this.#config.burstLimit < this.#originalConfig.burstLimit);
231
+ }
232
+ /**
233
+ * Reduces limits for frequent errors
234
+ */
235
+ #reduceLimits(requestId) {
236
+ const newDrainRate = Math.max(
237
+ this.#minDrainRate,
238
+ Number.parseFloat((this.#config.drainRate * 0.8).toFixed(2))
239
+ );
240
+ const newBurstLimit = Math.max(
241
+ this.#minBurstLimit,
242
+ Number.parseFloat((this.#config.burstLimit * 0.8).toFixed(2))
243
+ );
244
+ this.#config.drainRate = newDrainRate;
245
+ this.#config.burstLimit = newBurstLimit;
246
+ this.#refillIntervalMs = 1e3 / newDrainRate;
247
+ this.#logReduceLimits(requestId, newDrainRate, newBurstLimit);
248
+ this.#errorTimestamps = [];
249
+ this.#successTimestamps = [];
250
+ }
251
+ /**
252
+ * Restores limits during stable operation
253
+ */
254
+ #restoreLimits(requestId) {
255
+ if (this.#config.drainRate === this.#originalConfig.drainRate && this.#config.burstLimit === this.#originalConfig.burstLimit) {
256
+ return;
257
+ }
258
+ const newDrainRate = Math.min(
259
+ this.#originalConfig.drainRate,
260
+ Number.parseFloat((this.#config.drainRate * 1.1).toFixed(2))
261
+ );
262
+ const newBurstLimit = Math.min(
263
+ this.#originalConfig.burstLimit,
264
+ Number.parseFloat((this.#config.burstLimit * 1.1).toFixed(2))
265
+ );
266
+ this.#config.drainRate = newDrainRate;
267
+ this.#config.burstLimit = newBurstLimit;
268
+ this.#refillIntervalMs = 1e3 / newDrainRate;
269
+ this.#logRestoreLimits(requestId, newDrainRate, newBurstLimit);
270
+ this.#errorTimestamps = [];
271
+ this.#successTimestamps = [];
272
+ }
273
+ /**
274
+ * Writes an error to the temporary history
275
+ */
276
+ #recordError() {
277
+ const now = Date.now();
278
+ this.#errorTimestamps.push(now);
279
+ this.#successTimestamps = [];
280
+ this.#cleanupOldErrors(now);
281
+ }
282
+ /**
283
+ * Clears old errors (older than 60 seconds)
284
+ */
285
+ #cleanupOldErrors(now) {
286
+ const cutoff = now - 6e4;
287
+ this.#errorTimestamps = this.#errorTimestamps.filter((timestamp) => timestamp > cutoff);
288
+ }
289
+ /**
290
+ * Writes a successful request to the temporary history
291
+ */
292
+ #recordSuccess() {
293
+ const now = Date.now();
294
+ this.#successTimestamps.push(now);
295
+ this.#cleanupOldSuccesses();
296
+ this.#cleanupOldErrors(now);
297
+ }
298
+ /**
299
+ * Clears old progress
300
+ */
301
+ #cleanupOldSuccesses() {
302
+ this.#successTimestamps = this.#successTimestamps.slice(-1 * this.#successThreshold);
303
+ }
304
+ // region Log ////
305
+ #logReduceLimits(requestId, currentDrainRate, currentBurstLimit) {
306
+ const originalDrainRate = this.#originalConfig.drainRate;
307
+ const drainRateCondition = currentDrainRate < originalDrainRate;
308
+ const originalBurstLimit = this.#originalConfig.burstLimit;
309
+ const burstLimitCondition = currentBurstLimit < originalBurstLimit;
310
+ this.getLogger().warning(
311
+ `${this.getTitle()} is lowering limits due to frequent errors`,
312
+ {
313
+ requestId,
314
+ drainRate: {
315
+ current: currentDrainRate,
316
+ original: originalDrainRate,
317
+ condition: drainRateCondition,
318
+ formatted: `(${currentDrainRate} < ${originalDrainRate}) ${drainRateCondition}`
319
+ },
320
+ burstLimit: {
321
+ current: currentBurstLimit,
322
+ original: originalBurstLimit,
323
+ condition: burstLimitCondition,
324
+ formatted: `(${currentBurstLimit} < ${originalBurstLimit}) ${burstLimitCondition}`
325
+ }
326
+ }
327
+ );
328
+ }
329
+ #logRestoreLimits(requestId, currentDrainRate, currentBurstLimit) {
330
+ const originalDrainRate = this.#originalConfig.drainRate;
331
+ const drainRateCondition = currentDrainRate < originalDrainRate;
332
+ const originalBurstLimit = this.#originalConfig.burstLimit;
333
+ const burstLimitCondition = currentBurstLimit < originalBurstLimit;
334
+ this.getLogger().warning(
335
+ `${this.getTitle()} increases limits during stable operation`,
336
+ {
337
+ requestId,
338
+ drainRate: {
339
+ current: currentDrainRate,
340
+ original: originalDrainRate,
341
+ condition: drainRateCondition,
342
+ formatted: `(${currentDrainRate} < ${originalDrainRate}) ${drainRateCondition}`
343
+ },
344
+ burstLimit: {
345
+ current: currentBurstLimit,
346
+ original: originalBurstLimit,
347
+ condition: burstLimitCondition,
348
+ formatted: `(${currentBurstLimit} < ${originalBurstLimit}) ${burstLimitCondition}`
349
+ }
350
+ }
351
+ );
352
+ }
353
+ #logAcquireQueue(requestId, queueLength) {
354
+ this.getLogger().debug(`${this.getTitle()} request in queue`, {
355
+ requestId,
356
+ queueLength
357
+ });
358
+ }
359
+ #logStat(requestId) {
360
+ const successCount = this.#successTimestamps.length;
361
+ const successThreshold = this.#successThreshold;
362
+ const successCondition = successCount >= successThreshold;
363
+ const errorCount = this.#errorTimestamps.length;
364
+ const errorThreshold = this.#errorThreshold;
365
+ const failCondition = errorCount < errorThreshold / 2;
366
+ const currentDrainRate = this.#config.drainRate;
367
+ const originalDrainRate = this.#originalConfig.drainRate;
368
+ const drainRateCondition = currentDrainRate < originalDrainRate;
369
+ const currentBurstLimit = this.#config.burstLimit;
370
+ const originalBurstLimit = this.#originalConfig.burstLimit;
371
+ const burstLimitCondition = currentBurstLimit < originalBurstLimit;
372
+ this.getLogger().debug(`${this.getTitle()} state`, {
373
+ requestId,
374
+ success: {
375
+ count: successCount,
376
+ threshold: successThreshold,
377
+ condition: successCondition,
378
+ formatted: `(${successCount} >= ${successThreshold}) ${successCondition}`
379
+ },
380
+ fail: {
381
+ count: errorCount,
382
+ threshold: errorThreshold / 2,
383
+ condition: failCondition,
384
+ formatted: `(${errorCount} < ${errorThreshold / 2}) ${failCondition}`
385
+ },
386
+ drainRate: {
387
+ current: currentDrainRate,
388
+ original: originalDrainRate,
389
+ condition: drainRateCondition,
390
+ formatted: `(${currentDrainRate} < ${originalDrainRate}) ${drainRateCondition}`
391
+ },
392
+ burstLimit: {
393
+ current: currentBurstLimit,
394
+ original: originalBurstLimit,
395
+ condition: burstLimitCondition,
396
+ formatted: `(${currentBurstLimit} < ${originalBurstLimit}) ${burstLimitCondition}`
397
+ }
398
+ });
399
+ }
400
+ // endregion ////
401
+ }
402
+
403
+ exports.RateLimiter = RateLimiter;
404
+ //# sourceMappingURL=rate-limiter.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.cjs","sources":["../../../../../src/core/http/limiters/rate-limiter.ts"],"sourcesContent":["import type { ILimiter, RateLimitConfig } from '../../../types/limiters'\nimport type { LoggerInterface } from '../../../types/logger'\nimport { LoggerFactory } from '../../../logger'\n\n/**\n * Rate limiting (Leaky Bucket) with adaptive control\n */\nexport class RateLimiter implements ILimiter {\n #tokens: number\n #lastRefill: number\n #refillIntervalMs: number\n #config: RateLimitConfig\n #lockQueue: Array<() => void> = []\n\n #originalConfig: RateLimitConfig // Original configuration for recovery\n #errorThreshold: number = 5 // 60-second error threshold to reduce limits\n #successThreshold: number = 20 // Consecutive success threshold for restoring limits\n #minDrainRate: number = 0.5 // Minimum drain rate\n #minBurstLimit: number = 5 // Minimum burst limit\n #errorTimestamps: number[] = [] // Error timestamps (last 60 seconds)\n #successTimestamps: number[] = [] // Timestamps of successful requests\n\n private _logger: LoggerInterface\n\n constructor(config: RateLimitConfig) {\n this._logger = LoggerFactory.createNullLogger()\n this.#config = config\n this.#originalConfig = { ...config }\n this.#tokens = config.burstLimit\n this.#lastRefill = Date.now()\n this.#refillIntervalMs = 1000 / config.drainRate\n }\n\n getTitle(): string {\n return 'rateLimiter'\n }\n\n // region Logger ////\n setLogger(logger: LoggerInterface): void {\n this._logger = logger\n }\n\n getLogger(): LoggerInterface {\n return this._logger\n }\n // endregion ////\n\n /**\n * @inheritDoc\n */\n async canProceed(requestId: string, _method: string, _params?: any): Promise<boolean> {\n await this.#acquireLock(requestId)\n try {\n const now = Date.now()\n const timePassed = now - this.#lastRefill\n\n // Refill tokens\n const refillAmount = timePassed * this.#config.drainRate / 1000\n this.#tokens = Math.min(\n this.#config.burstLimit,\n this.#tokens + refillAmount\n )\n this.#lastRefill = now\n\n return this.#tokens >= 1\n } finally {\n this.#releaseLock()\n }\n }\n\n /**\n * @inheritDoc\n */\n async waitIfNeeded(requestId: string, _method: string, _params?: any): Promise<number> {\n await this.#acquireLock(requestId)\n\n try {\n const now = Date.now()\n const timePassed = now - this.#lastRefill\n\n // Replenishing tokens\n const refillAmount = timePassed * this.#config.drainRate / 1_000\n this.#tokens = Math.min(\n this.#config.burstLimit,\n this.#tokens + refillAmount\n )\n\n // We always update the time of the last replenishment\n this.#lastRefill = now\n\n // If there are enough tokens\n if (this.#tokens >= 1) {\n // Consume token\n this.#tokens -= 1\n return 0\n }\n\n // Calculating the waiting time for 1 token\n const deficit = 1 - this.#tokens\n return Math.ceil(deficit * this.#refillIntervalMs)\n } finally {\n this.#releaseLock()\n }\n }\n\n /**\n * Error handler.\n * If there are a lot of errors, we'll lower the limits.\n */\n async handleExceeded(requestId: string): Promise<number> {\n await this.#acquireLock(requestId)\n\n try {\n this.#recordError()\n\n // Adaptive regulation: if there are many errors, we reduce the limits\n if (this.#config.adaptiveEnabled && this.#shouldReduceLimits()) {\n this.#reduceLimits(requestId)\n }\n\n this.#tokens = 0\n // Wait for the time to restore at least one token + 1sec\n return this.#refillIntervalMs + 1_000\n } finally {\n this.#releaseLock()\n }\n }\n\n /**\n * Successful request handler.\n * If everything is OK, we'll restore the limits.\n */\n async updateStats(requestId: string, method: string, _data: any): Promise<void> {\n // skip accounting of `batch` subqueries\n if (method.startsWith('batch::')) {\n return\n }\n\n await this.#acquireLock(requestId)\n\n try {\n this.#recordSuccess()\n\n // Adaptive regulation: if we operate stably, we restore the limits\n if (this.#config.adaptiveEnabled) {\n this.#logStat(requestId)\n }\n\n if (this.#config.adaptiveEnabled && this.#shouldRestoreLimits()) {\n this.#restoreLimits(requestId)\n }\n } finally {\n this.#releaseLock()\n }\n }\n\n /**\n * @inheritDoc\n */\n async reset(): Promise<void> {\n await this.#acquireLock('reset')\n\n try {\n this.#tokens = this.#config.burstLimit\n this.#lastRefill = Date.now()\n this.#errorTimestamps = []\n this.#successTimestamps = []\n\n // Restore original settings during reset\n this.#config.drainRate = this.#originalConfig.drainRate\n this.#config.burstLimit = this.#originalConfig.burstLimit\n this.#refillIntervalMs = 1000 / this.#config.drainRate\n } finally {\n this.#releaseLock()\n }\n }\n\n /**\n * @inheritDoc\n */\n getStats() {\n return {\n tokens: this.#tokens,\n burstLimit: this.#config.burstLimit,\n originalBurstLimit: this.#originalConfig.burstLimit,\n drainRate: this.#config.drainRate,\n originalDrainRate: this.#originalConfig.drainRate,\n refillIntervalMs: this.#refillIntervalMs,\n lastRefill: this.#lastRefill,\n pendingRequests: this.#lockQueue.length,\n recentErrors: this.#errorTimestamps.length,\n recentSuccesses: this.#successTimestamps.length\n }\n }\n\n /**\n * @inheritDoc\n */\n async setConfig(config: RateLimitConfig): Promise<void> {\n await this.#acquireLock('setConfig')\n\n try {\n this.#config = config\n this.#originalConfig = { ...config }\n this.#refillIntervalMs = 1000 / this.#config.drainRate\n\n // If the new configuration increases burstLimit, we can increase the current number of tokens\n if (config.burstLimit > this.#tokens) {\n this.#tokens = Math.min(config.burstLimit, this.#tokens)\n }\n\n // Reset statistics when changing configuration\n this.#errorTimestamps = []\n this.#successTimestamps = []\n } finally {\n this.#releaseLock()\n }\n }\n\n /**\n * Acquire a lock for the critical section\n * Uses a promise queue\n */\n async #acquireLock(requestId: string): Promise<void> {\n return new Promise<void>((resolve) => {\n // Add the resolution function to the queue\n const queueLength = this.#lockQueue.push(resolve)\n\n if (queueLength > 1) {\n this.#logAcquireQueue(requestId, queueLength)\n }\n // If it's the first one in the queue, we allow it immediately\n if (this.#lockQueue.length === 1) {\n resolve()\n }\n })\n }\n\n /**\n * Releases the lock and allows the next person in the queue to proceed\n */\n #releaseLock(): void {\n // Remove the current resolver from the front of the queue\n this.#lockQueue.shift()\n\n // If there are any waiting, resolve the next one\n if (this.#lockQueue.length > 0) {\n const nextResolve = this.#lockQueue[0]!\n nextResolve()\n }\n }\n\n /**\n * Checks whether the limits need to be reduced\n */\n #shouldReduceLimits(): boolean {\n // If there are more errors than the threshold in the last 60 seconds\n return this.#errorTimestamps.length >= this.#errorThreshold\n }\n\n /**\n * Checks whether limits need to be restored\n * Restore if:\n * 1. Many successful requests (more than the threshold)\n * 2. Few errors (less than half the threshold)\n * 3. Current limits are lower than the original ones\n */\n #shouldRestoreLimits(): boolean {\n return this.#successTimestamps.length >= this.#successThreshold\n && this.#errorTimestamps.length < (this.#errorThreshold / 2)\n && (\n this.#config.drainRate < this.#originalConfig.drainRate\n || this.#config.burstLimit < this.#originalConfig.burstLimit\n )\n }\n\n /**\n * Reduces limits for frequent errors\n */\n #reduceLimits(requestId: string): void {\n // Reduce drainRate by 20%, but not below the minimum\n const newDrainRate = Math.max(\n this.#minDrainRate,\n Number.parseFloat((this.#config.drainRate * 0.8).toFixed(2))\n )\n\n // Reduce burstLimit by 20%, but not below the minimum\n const newBurstLimit = Math.max(\n this.#minBurstLimit,\n Number.parseFloat((this.#config.burstLimit * 0.8).toFixed(2))\n )\n\n // Applying new limits\n this.#config.drainRate = newDrainRate\n this.#config.burstLimit = newBurstLimit\n this.#refillIntervalMs = 1000 / newDrainRate\n\n this.#logReduceLimits(requestId, newDrainRate, newBurstLimit)\n\n // Reset error statistics after reduction\n this.#errorTimestamps = []\n this.#successTimestamps = []\n }\n\n /**\n * Restores limits during stable operation\n */\n #restoreLimits(requestId: string): void {\n if (\n this.#config.drainRate === this.#originalConfig.drainRate\n && this.#config.burstLimit === this.#originalConfig.burstLimit\n ) {\n return\n }\n\n // Restore drainRate to 10% of its original value\n const newDrainRate = Math.min(\n this.#originalConfig.drainRate,\n Number.parseFloat((this.#config.drainRate * 1.1).toFixed(2))\n )\n\n // Restore burstLimit to 10% of its original value\n const newBurstLimit = Math.min(\n this.#originalConfig.burstLimit,\n Number.parseFloat((this.#config.burstLimit * 1.1).toFixed(2))\n )\n\n // Applying new limits\n this.#config.drainRate = newDrainRate\n this.#config.burstLimit = newBurstLimit\n this.#refillIntervalMs = 1000 / newDrainRate\n\n this.#logRestoreLimits(requestId, newDrainRate, newBurstLimit)\n\n // Reset success statistics after recovery\n this.#errorTimestamps = []\n this.#successTimestamps = []\n }\n\n /**\n * Writes an error to the temporary history\n */\n #recordError(): void {\n const now = Date.now()\n this.#errorTimestamps.push(now)\n\n // Clear ALL progress\n this.#successTimestamps = []\n this.#cleanupOldErrors(now)\n }\n\n /**\n * Clears old errors (older than 60 seconds)\n */\n #cleanupOldErrors(now: number): void {\n const cutoff = now - 60_000\n this.#errorTimestamps = this.#errorTimestamps.filter(timestamp => timestamp > cutoff)\n }\n\n /**\n * Writes a successful request to the temporary history\n */\n #recordSuccess(): void {\n const now = Date.now()\n this.#successTimestamps.push(now)\n\n this.#cleanupOldSuccesses()\n this.#cleanupOldErrors(now)\n }\n\n /**\n * Clears old progress\n */\n #cleanupOldSuccesses(): void {\n this.#successTimestamps = this.#successTimestamps.slice(-1 * this.#successThreshold)\n }\n\n // region Log ////\n #logReduceLimits(requestId: string, currentDrainRate: number, currentBurstLimit: number) {\n const originalDrainRate = this.#originalConfig.drainRate\n const drainRateCondition = currentDrainRate < originalDrainRate\n\n const originalBurstLimit = this.#originalConfig.burstLimit\n const burstLimitCondition = currentBurstLimit < originalBurstLimit\n\n this.getLogger().warning(\n `${this.getTitle()} is lowering limits due to frequent errors`, {\n requestId,\n drainRate: {\n current: currentDrainRate,\n original: originalDrainRate,\n condition: drainRateCondition,\n formatted: `(${currentDrainRate} < ${originalDrainRate}) ${drainRateCondition}`\n },\n burstLimit: {\n current: currentBurstLimit,\n original: originalBurstLimit,\n condition: burstLimitCondition,\n formatted: `(${currentBurstLimit} < ${originalBurstLimit}) ${burstLimitCondition}`\n }\n }\n )\n }\n\n #logRestoreLimits(requestId: string, currentDrainRate: number, currentBurstLimit: number) {\n const originalDrainRate = this.#originalConfig.drainRate\n const drainRateCondition = currentDrainRate < originalDrainRate\n\n const originalBurstLimit = this.#originalConfig.burstLimit\n const burstLimitCondition = currentBurstLimit < originalBurstLimit\n\n this.getLogger().warning(\n `${this.getTitle()} increases limits during stable operation`, {\n requestId,\n drainRate: {\n current: currentDrainRate,\n original: originalDrainRate,\n condition: drainRateCondition,\n formatted: `(${currentDrainRate} < ${originalDrainRate}) ${drainRateCondition}`\n },\n burstLimit: {\n current: currentBurstLimit,\n original: originalBurstLimit,\n condition: burstLimitCondition,\n formatted: `(${currentBurstLimit} < ${originalBurstLimit}) ${burstLimitCondition}`\n }\n }\n )\n }\n\n #logAcquireQueue(requestId: string, queueLength: number) {\n this.getLogger().debug(`${this.getTitle()} request in queue`, {\n requestId,\n queueLength\n })\n }\n\n #logStat(\n requestId: string\n ): void {\n const successCount = this.#successTimestamps.length\n const successThreshold = this.#successThreshold\n const successCondition = successCount >= successThreshold\n\n const errorCount = this.#errorTimestamps.length\n const errorThreshold = this.#errorThreshold\n const failCondition = errorCount < (errorThreshold / 2)\n\n const currentDrainRate = this.#config.drainRate\n const originalDrainRate = this.#originalConfig.drainRate\n const drainRateCondition = currentDrainRate < originalDrainRate\n\n const currentBurstLimit = this.#config.burstLimit\n const originalBurstLimit = this.#originalConfig.burstLimit\n const burstLimitCondition = currentBurstLimit < originalBurstLimit\n\n this.getLogger().debug(`${this.getTitle()} state`, {\n requestId,\n success: {\n count: successCount,\n threshold: successThreshold,\n condition: successCondition,\n formatted: `(${successCount} >= ${successThreshold}) ${successCondition}`\n },\n fail: {\n count: errorCount,\n threshold: errorThreshold / 2,\n condition: failCondition,\n formatted: `(${errorCount} < ${errorThreshold / 2}) ${failCondition}`\n },\n drainRate: {\n current: currentDrainRate,\n original: originalDrainRate,\n condition: drainRateCondition,\n formatted: `(${currentDrainRate} < ${originalDrainRate}) ${drainRateCondition}`\n },\n burstLimit: {\n current: currentBurstLimit,\n original: originalBurstLimit,\n condition: burstLimitCondition,\n formatted: `(${currentBurstLimit} < ${originalBurstLimit}) ${burstLimitCondition}`\n }\n })\n }\n // endregion ////\n}\n"],"names":["LoggerFactory"],"mappings":";;;;;;;;;;;;;;AAOO,MAAM,WAAA,CAAgC;AAAA,EAP7C;AAO6C,IAAA,MAAA,CAAA,IAAA,EAAA,aAAA,CAAA;AAAA;AAAA,EAC3C,OAAA;AAAA,EACA,WAAA;AAAA,EACA,iBAAA;AAAA,EACA,OAAA;AAAA,EACA,aAAgC,EAAC;AAAA,EAEjC,eAAA;AAAA;AAAA,EACA,eAAA,GAA0B,CAAA;AAAA;AAAA,EAC1B,iBAAA,GAA4B,EAAA;AAAA;AAAA,EAC5B,aAAA,GAAwB,GAAA;AAAA;AAAA,EACxB,cAAA,GAAyB,CAAA;AAAA;AAAA,EACzB,mBAA6B,EAAC;AAAA;AAAA,EAC9B,qBAA+B,EAAC;AAAA;AAAA,EAExB,OAAA;AAAA,EAER,YAAY,MAAA,EAAyB;AACnC,IAAA,IAAA,CAAK,OAAA,GAAUA,4BAAc,gBAAA,EAAiB;AAC9C,IAAA,IAAA,CAAK,OAAA,GAAU,MAAA;AACf,IAAA,IAAA,CAAK,eAAA,GAAkB,EAAE,GAAG,MAAA,EAAO;AACnC,IAAA,IAAA,CAAK,UAAU,MAAA,CAAO,UAAA;AACtB,IAAA,IAAA,CAAK,WAAA,GAAc,KAAK,GAAA,EAAI;AAC5B,IAAA,IAAA,CAAK,iBAAA,GAAoB,MAAO,MAAA,CAAO,SAAA;AAAA,EACzC;AAAA,EAEA,QAAA,GAAmB;AACjB,IAAA,OAAO,aAAA;AAAA,EACT;AAAA;AAAA,EAGA,UAAU,MAAA,EAA+B;AACvC,IAAA,IAAA,CAAK,OAAA,GAAU,MAAA;AAAA,EACjB;AAAA,EAEA,SAAA,GAA6B;AAC3B,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,UAAA,CAAW,SAAA,EAAmB,OAAA,EAAiB,OAAA,EAAiC;AACpF,IAAA,MAAM,IAAA,CAAK,aAAa,SAAS,CAAA;AACjC,IAAA,IAAI;AACF,MAAA,MAAM,GAAA,GAAM,KAAK,GAAA,EAAI;AACrB,MAAA,MAAM,UAAA,GAAa,MAAM,IAAA,CAAK,WAAA;AAG9B,MAAA,MAAM,YAAA,GAAe,UAAA,GAAa,IAAA,CAAK,OAAA,CAAQ,SAAA,GAAY,GAAA;AAC3D,MAAA,IAAA,CAAK,UAAU,IAAA,CAAK,GAAA;AAAA,QAClB,KAAK,OAAA,CAAQ,UAAA;AAAA,QACb,KAAK,OAAA,GAAU;AAAA,OACjB;AACA,MAAA,IAAA,CAAK,WAAA,GAAc,GAAA;AAEnB,MAAA,OAAO,KAAK,OAAA,IAAW,CAAA;AAAA,IACzB,CAAA,SAAE;AACA,MAAA,IAAA,CAAK,YAAA,EAAa;AAAA,IACpB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAAA,CAAa,SAAA,EAAmB,OAAA,EAAiB,OAAA,EAAgC;AACrF,IAAA,MAAM,IAAA,CAAK,aAAa,SAAS,CAAA;AAEjC,IAAA,IAAI;AACF,MAAA,MAAM,GAAA,GAAM,KAAK,GAAA,EAAI;AACrB,MAAA,MAAM,UAAA,GAAa,MAAM,IAAA,CAAK,WAAA;AAG9B,MAAA,MAAM,YAAA,GAAe,UAAA,GAAa,IAAA,CAAK,OAAA,CAAQ,SAAA,GAAY,GAAA;AAC3D,MAAA,IAAA,CAAK,UAAU,IAAA,CAAK,GAAA;AAAA,QAClB,KAAK,OAAA,CAAQ,UAAA;AAAA,QACb,KAAK,OAAA,GAAU;AAAA,OACjB;AAGA,MAAA,IAAA,CAAK,WAAA,GAAc,GAAA;AAGnB,MAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AAErB,QAAA,IAAA,CAAK,OAAA,IAAW,CAAA;AAChB,QAAA,OAAO,CAAA;AAAA,MACT;AAGA,MAAA,MAAM,OAAA,GAAU,IAAI,IAAA,CAAK,OAAA;AACzB,MAAA,OAAO,IAAA,CAAK,IAAA,CAAK,OAAA,GAAU,IAAA,CAAK,iBAAiB,CAAA;AAAA,IACnD,CAAA,SAAE;AACA,MAAA,IAAA,CAAK,YAAA,EAAa;AAAA,IACpB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,eAAe,SAAA,EAAoC;AACvD,IAAA,MAAM,IAAA,CAAK,aAAa,SAAS,CAAA;AAEjC,IAAA,IAAI;AACF,MAAA,IAAA,CAAK,YAAA,EAAa;AAGlB,MAAA,IAAI,IAAA,CAAK,OAAA,CAAQ,eAAA,IAAmB,IAAA,CAAK,qBAAoB,EAAG;AAC9D,QAAA,IAAA,CAAK,cAAc,SAAS,CAAA;AAAA,MAC9B;AAEA,MAAA,IAAA,CAAK,OAAA,GAAU,CAAA;AAEf,MAAA,OAAO,KAAK,iBAAA,GAAoB,GAAA;AAAA,IAClC,CAAA,SAAE;AACA,MAAA,IAAA,CAAK,YAAA,EAAa;AAAA,IACpB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,WAAA,CAAY,SAAA,EAAmB,MAAA,EAAgB,KAAA,EAA2B;AAE9E,IAAA,IAAI,MAAA,CAAO,UAAA,CAAW,SAAS,CAAA,EAAG;AAChC,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,IAAA,CAAK,aAAa,SAAS,CAAA;AAEjC,IAAA,IAAI;AACF,MAAA,IAAA,CAAK,cAAA,EAAe;AAGpB,MAAA,IAAI,IAAA,CAAK,QAAQ,eAAA,EAAiB;AAChC,QAAA,IAAA,CAAK,SAAS,SAAS,CAAA;AAAA,MACzB;AAEA,MAAA,IAAI,IAAA,CAAK,OAAA,CAAQ,eAAA,IAAmB,IAAA,CAAK,sBAAqB,EAAG;AAC/D,QAAA,IAAA,CAAK,eAAe,SAAS,CAAA;AAAA,MAC/B;AAAA,IACF,CAAA,SAAE;AACA,MAAA,IAAA,CAAK,YAAA,EAAa;AAAA,IACpB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,KAAA,GAAuB;AAC3B,IAAA,MAAM,IAAA,CAAK,aAAa,OAAO,CAAA;AAE/B,IAAA,IAAI;AACF,MAAA,IAAA,CAAK,OAAA,GAAU,KAAK,OAAA,CAAQ,UAAA;AAC5B,MAAA,IAAA,CAAK,WAAA,GAAc,KAAK,GAAA,EAAI;AAC5B,MAAA,IAAA,CAAK,mBAAmB,EAAC;AACzB,MAAA,IAAA,CAAK,qBAAqB,EAAC;AAG3B,MAAA,IAAA,CAAK,OAAA,CAAQ,SAAA,GAAY,IAAA,CAAK,eAAA,CAAgB,SAAA;AAC9C,MAAA,IAAA,CAAK,OAAA,CAAQ,UAAA,GAAa,IAAA,CAAK,eAAA,CAAgB,UAAA;AAC/C,MAAA,IAAA,CAAK,iBAAA,GAAoB,GAAA,GAAO,IAAA,CAAK,OAAA,CAAQ,SAAA;AAAA,IAC/C,CAAA,SAAE;AACA,MAAA,IAAA,CAAK,YAAA,EAAa;AAAA,IACpB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,QAAA,GAAW;AACT,IAAA,OAAO;AAAA,MACL,QAAQ,IAAA,CAAK,OAAA;AAAA,MACb,UAAA,EAAY,KAAK,OAAA,CAAQ,UAAA;AAAA,MACzB,kBAAA,EAAoB,KAAK,eAAA,CAAgB,UAAA;AAAA,MACzC,SAAA,EAAW,KAAK,OAAA,CAAQ,SAAA;AAAA,MACxB,iBAAA,EAAmB,KAAK,eAAA,CAAgB,SAAA;AAAA,MACxC,kBAAkB,IAAA,CAAK,iBAAA;AAAA,MACvB,YAAY,IAAA,CAAK,WAAA;AAAA,MACjB,eAAA,EAAiB,KAAK,UAAA,CAAW,MAAA;AAAA,MACjC,YAAA,EAAc,KAAK,gBAAA,CAAiB,MAAA;AAAA,MACpC,eAAA,EAAiB,KAAK,kBAAA,CAAmB;AAAA,KAC3C;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,UAAU,MAAA,EAAwC;AACtD,IAAA,MAAM,IAAA,CAAK,aAAa,WAAW,CAAA;AAEnC,IAAA,IAAI;AACF,MAAA,IAAA,CAAK,OAAA,GAAU,MAAA;AACf,MAAA,IAAA,CAAK,eAAA,GAAkB,EAAE,GAAG,MAAA,EAAO;AACnC,MAAA,IAAA,CAAK,iBAAA,GAAoB,GAAA,GAAO,IAAA,CAAK,OAAA,CAAQ,SAAA;AAG7C,MAAA,IAAI,MAAA,CAAO,UAAA,GAAa,IAAA,CAAK,OAAA,EAAS;AACpC,QAAA,IAAA,CAAK,UAAU,IAAA,CAAK,GAAA,CAAI,MAAA,CAAO,UAAA,EAAY,KAAK,OAAO,CAAA;AAAA,MACzD;AAGA,MAAA,IAAA,CAAK,mBAAmB,EAAC;AACzB,MAAA,IAAA,CAAK,qBAAqB,EAAC;AAAA,IAC7B,CAAA,SAAE;AACA,MAAA,IAAA,CAAK,YAAA,EAAa;AAAA,IACpB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,aAAa,SAAA,EAAkC;AACnD,IAAA,OAAO,IAAI,OAAA,CAAc,CAAC,OAAA,KAAY;AAEpC,MAAA,MAAM,WAAA,GAAc,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,OAAO,CAAA;AAEhD,MAAA,IAAI,cAAc,CAAA,EAAG;AACnB,QAAA,IAAA,CAAK,gBAAA,CAAiB,WAAW,WAAW,CAAA;AAAA,MAC9C;AAEA,MAAA,IAAI,IAAA,CAAK,UAAA,CAAW,MAAA,KAAW,CAAA,EAAG;AAChC,QAAA,OAAA,EAAQ;AAAA,MACV;AAAA,IACF,CAAC,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,YAAA,GAAqB;AAEnB,IAAA,IAAA,CAAK,WAAW,KAAA,EAAM;AAGtB,IAAA,IAAI,IAAA,CAAK,UAAA,CAAW,MAAA,GAAS,CAAA,EAAG;AAC9B,MAAA,MAAM,WAAA,GAAc,IAAA,CAAK,UAAA,CAAW,CAAC,CAAA;AACrC,MAAA,WAAA,EAAY;AAAA,IACd;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,mBAAA,GAA+B;AAE7B,IAAA,OAAO,IAAA,CAAK,gBAAA,CAAiB,MAAA,IAAU,IAAA,CAAK,eAAA;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,oBAAA,GAAgC;AAC9B,IAAA,OAAO,IAAA,CAAK,mBAAmB,MAAA,IAAU,IAAA,CAAK,qBACzC,IAAA,CAAK,gBAAA,CAAiB,SAAU,IAAA,CAAK,eAAA,GAAkB,MAExD,IAAA,CAAK,OAAA,CAAQ,YAAY,IAAA,CAAK,eAAA,CAAgB,aAC3C,IAAA,CAAK,OAAA,CAAQ,UAAA,GAAa,IAAA,CAAK,eAAA,CAAgB,UAAA,CAAA;AAAA,EAExD;AAAA;AAAA;AAAA;AAAA,EAKA,cAAc,SAAA,EAAyB;AAErC,IAAA,MAAM,eAAe,IAAA,CAAK,GAAA;AAAA,MACxB,IAAA,CAAK,aAAA;AAAA,MACL,MAAA,CAAO,YAAY,IAAA,CAAK,OAAA,CAAQ,YAAY,GAAA,EAAK,OAAA,CAAQ,CAAC,CAAC;AAAA,KAC7D;AAGA,IAAA,MAAM,gBAAgB,IAAA,CAAK,GAAA;AAAA,MACzB,IAAA,CAAK,cAAA;AAAA,MACL,MAAA,CAAO,YAAY,IAAA,CAAK,OAAA,CAAQ,aAAa,GAAA,EAAK,OAAA,CAAQ,CAAC,CAAC;AAAA,KAC9D;AAGA,IAAA,IAAA,CAAK,QAAQ,SAAA,GAAY,YAAA;AACzB,IAAA,IAAA,CAAK,QAAQ,UAAA,GAAa,aAAA;AAC1B,IAAA,IAAA,CAAK,oBAAoB,GAAA,GAAO,YAAA;AAEhC,IAAA,IAAA,CAAK,gBAAA,CAAiB,SAAA,EAAW,YAAA,EAAc,aAAa,CAAA;AAG5D,IAAA,IAAA,CAAK,mBAAmB,EAAC;AACzB,IAAA,IAAA,CAAK,qBAAqB,EAAC;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA,EAKA,eAAe,SAAA,EAAyB;AACtC,IAAA,IACE,IAAA,CAAK,OAAA,CAAQ,SAAA,KAAc,IAAA,CAAK,eAAA,CAAgB,SAAA,IAC7C,IAAA,CAAK,OAAA,CAAQ,UAAA,KAAe,IAAA,CAAK,eAAA,CAAgB,UAAA,EACpD;AACA,MAAA;AAAA,IACF;AAGA,IAAA,MAAM,eAAe,IAAA,CAAK,GAAA;AAAA,MACxB,KAAK,eAAA,CAAgB,SAAA;AAAA,MACrB,MAAA,CAAO,YAAY,IAAA,CAAK,OAAA,CAAQ,YAAY,GAAA,EAAK,OAAA,CAAQ,CAAC,CAAC;AAAA,KAC7D;AAGA,IAAA,MAAM,gBAAgB,IAAA,CAAK,GAAA;AAAA,MACzB,KAAK,eAAA,CAAgB,UAAA;AAAA,MACrB,MAAA,CAAO,YAAY,IAAA,CAAK,OAAA,CAAQ,aAAa,GAAA,EAAK,OAAA,CAAQ,CAAC,CAAC;AAAA,KAC9D;AAGA,IAAA,IAAA,CAAK,QAAQ,SAAA,GAAY,YAAA;AACzB,IAAA,IAAA,CAAK,QAAQ,UAAA,GAAa,aAAA;AAC1B,IAAA,IAAA,CAAK,oBAAoB,GAAA,GAAO,YAAA;AAEhC,IAAA,IAAA,CAAK,iBAAA,CAAkB,SAAA,EAAW,YAAA,EAAc,aAAa,CAAA;AAG7D,IAAA,IAAA,CAAK,mBAAmB,EAAC;AACzB,IAAA,IAAA,CAAK,qBAAqB,EAAC;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA,EAKA,YAAA,GAAqB;AACnB,IAAA,MAAM,GAAA,GAAM,KAAK,GAAA,EAAI;AACrB,IAAA,IAAA,CAAK,gBAAA,CAAiB,KAAK,GAAG,CAAA;AAG9B,IAAA,IAAA,CAAK,qBAAqB,EAAC;AAC3B,IAAA,IAAA,CAAK,kBAAkB,GAAG,CAAA;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA,EAKA,kBAAkB,GAAA,EAAmB;AACnC,IAAA,MAAM,SAAS,GAAA,GAAM,GAAA;AACrB,IAAA,IAAA,CAAK,mBAAmB,IAAA,CAAK,gBAAA,CAAiB,MAAA,CAAO,CAAA,SAAA,KAAa,YAAY,MAAM,CAAA;AAAA,EACtF;AAAA;AAAA;AAAA;AAAA,EAKA,cAAA,GAAuB;AACrB,IAAA,MAAM,GAAA,GAAM,KAAK,GAAA,EAAI;AACrB,IAAA,IAAA,CAAK,kBAAA,CAAmB,KAAK,GAAG,CAAA;AAEhC,IAAA,IAAA,CAAK,oBAAA,EAAqB;AAC1B,IAAA,IAAA,CAAK,kBAAkB,GAAG,CAAA;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA,EAKA,oBAAA,GAA6B;AAC3B,IAAA,IAAA,CAAK,qBAAqB,IAAA,CAAK,kBAAA,CAAmB,KAAA,CAAM,EAAA,GAAK,KAAK,iBAAiB,CAAA;AAAA,EACrF;AAAA;AAAA,EAGA,gBAAA,CAAiB,SAAA,EAAmB,gBAAA,EAA0B,iBAAA,EAA2B;AACvF,IAAA,MAAM,iBAAA,GAAoB,KAAK,eAAA,CAAgB,SAAA;AAC/C,IAAA,MAAM,qBAAqB,gBAAA,GAAmB,iBAAA;AAE9C,IAAA,MAAM,kBAAA,GAAqB,KAAK,eAAA,CAAgB,UAAA;AAChD,IAAA,MAAM,sBAAsB,iBAAA,GAAoB,kBAAA;AAEhD,IAAA,IAAA,CAAK,WAAU,CAAE,OAAA;AAAA,MACf,CAAA,EAAG,IAAA,CAAK,QAAA,EAAU,CAAA,0CAAA,CAAA;AAAA,MAA8C;AAAA,QAC9D,SAAA;AAAA,QACA,SAAA,EAAW;AAAA,UACT,OAAA,EAAS,gBAAA;AAAA,UACT,QAAA,EAAU,iBAAA;AAAA,UACV,SAAA,EAAW,kBAAA;AAAA,UACX,WAAW,CAAA,CAAA,EAAI,gBAAgB,CAAA,GAAA,EAAM,iBAAiB,KAAK,kBAAkB,CAAA;AAAA,SAC/E;AAAA,QACA,UAAA,EAAY;AAAA,UACV,OAAA,EAAS,iBAAA;AAAA,UACT,QAAA,EAAU,kBAAA;AAAA,UACV,SAAA,EAAW,mBAAA;AAAA,UACX,WAAW,CAAA,CAAA,EAAI,iBAAiB,CAAA,GAAA,EAAM,kBAAkB,KAAK,mBAAmB,CAAA;AAAA;AAClF;AACF,KACF;AAAA,EACF;AAAA,EAEA,iBAAA,CAAkB,SAAA,EAAmB,gBAAA,EAA0B,iBAAA,EAA2B;AACxF,IAAA,MAAM,iBAAA,GAAoB,KAAK,eAAA,CAAgB,SAAA;AAC/C,IAAA,MAAM,qBAAqB,gBAAA,GAAmB,iBAAA;AAE9C,IAAA,MAAM,kBAAA,GAAqB,KAAK,eAAA,CAAgB,UAAA;AAChD,IAAA,MAAM,sBAAsB,iBAAA,GAAoB,kBAAA;AAEhD,IAAA,IAAA,CAAK,WAAU,CAAE,OAAA;AAAA,MACf,CAAA,EAAG,IAAA,CAAK,QAAA,EAAU,CAAA,yCAAA,CAAA;AAAA,MAA6C;AAAA,QAC7D,SAAA;AAAA,QACA,SAAA,EAAW;AAAA,UACT,OAAA,EAAS,gBAAA;AAAA,UACT,QAAA,EAAU,iBAAA;AAAA,UACV,SAAA,EAAW,kBAAA;AAAA,UACX,WAAW,CAAA,CAAA,EAAI,gBAAgB,CAAA,GAAA,EAAM,iBAAiB,KAAK,kBAAkB,CAAA;AAAA,SAC/E;AAAA,QACA,UAAA,EAAY;AAAA,UACV,OAAA,EAAS,iBAAA;AAAA,UACT,QAAA,EAAU,kBAAA;AAAA,UACV,SAAA,EAAW,mBAAA;AAAA,UACX,WAAW,CAAA,CAAA,EAAI,iBAAiB,CAAA,GAAA,EAAM,kBAAkB,KAAK,mBAAmB,CAAA;AAAA;AAClF;AACF,KACF;AAAA,EACF;AAAA,EAEA,gBAAA,CAAiB,WAAmB,WAAA,EAAqB;AACvD,IAAA,IAAA,CAAK,WAAU,CAAE,KAAA,CAAM,GAAG,IAAA,CAAK,QAAA,EAAU,CAAA,iBAAA,CAAA,EAAqB;AAAA,MAC5D,SAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH;AAAA,EAEA,SACE,SAAA,EACM;AACN,IAAA,MAAM,YAAA,GAAe,KAAK,kBAAA,CAAmB,MAAA;AAC7C,IAAA,MAAM,mBAAmB,IAAA,CAAK,iBAAA;AAC9B,IAAA,MAAM,mBAAmB,YAAA,IAAgB,gBAAA;AAEzC,IAAA,MAAM,UAAA,GAAa,KAAK,gBAAA,CAAiB,MAAA;AACzC,IAAA,MAAM,iBAAiB,IAAA,CAAK,eAAA;AAC5B,IAAA,MAAM,aAAA,GAAgB,aAAc,cAAA,GAAiB,CAAA;AAErD,IAAA,MAAM,gBAAA,GAAmB,KAAK,OAAA,CAAQ,SAAA;AACtC,IAAA,MAAM,iBAAA,GAAoB,KAAK,eAAA,CAAgB,SAAA;AAC/C,IAAA,MAAM,qBAAqB,gBAAA,GAAmB,iBAAA;AAE9C,IAAA,MAAM,iBAAA,GAAoB,KAAK,OAAA,CAAQ,UAAA;AACvC,IAAA,MAAM,kBAAA,GAAqB,KAAK,eAAA,CAAgB,UAAA;AAChD,IAAA,MAAM,sBAAsB,iBAAA,GAAoB,kBAAA;AAEhD,IAAA,IAAA,CAAK,WAAU,CAAE,KAAA,CAAM,GAAG,IAAA,CAAK,QAAA,EAAU,CAAA,MAAA,CAAA,EAAU;AAAA,MACjD,SAAA;AAAA,MACA,OAAA,EAAS;AAAA,QACP,KAAA,EAAO,YAAA;AAAA,QACP,SAAA,EAAW,gBAAA;AAAA,QACX,SAAA,EAAW,gBAAA;AAAA,QACX,WAAW,CAAA,CAAA,EAAI,YAAY,CAAA,IAAA,EAAO,gBAAgB,KAAK,gBAAgB,CAAA;AAAA,OACzE;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,KAAA,EAAO,UAAA;AAAA,QACP,WAAW,cAAA,GAAiB,CAAA;AAAA,QAC5B,SAAA,EAAW,aAAA;AAAA,QACX,WAAW,CAAA,CAAA,EAAI,UAAU,MAAM,cAAA,GAAiB,CAAC,KAAK,aAAa,CAAA;AAAA,OACrE;AAAA,MACA,SAAA,EAAW;AAAA,QACT,OAAA,EAAS,gBAAA;AAAA,QACT,QAAA,EAAU,iBAAA;AAAA,QACV,SAAA,EAAW,kBAAA;AAAA,QACX,WAAW,CAAA,CAAA,EAAI,gBAAgB,CAAA,GAAA,EAAM,iBAAiB,KAAK,kBAAkB,CAAA;AAAA,OAC/E;AAAA,MACA,UAAA,EAAY;AAAA,QACV,OAAA,EAAS,iBAAA;AAAA,QACT,QAAA,EAAU,kBAAA;AAAA,QACV,SAAA,EAAW,mBAAA;AAAA,QACX,WAAW,CAAA,CAAA,EAAI,iBAAiB,CAAA,GAAA,EAAM,kBAAkB,KAAK,mBAAmB,CAAA;AAAA;AAClF,KACD,CAAA;AAAA,EACH;AAAA;AAEF;;;;"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * @package @bitrix24/b24jssdk
3
+ * @version 2.0.0
4
+ * @copyright (c) 2026 Bitrix24
5
+ * @license MIT
6
+ * @see https://github.com/bitrix24/b24jssdk
7
+ * @see https://bitrix24.github.io/b24jssdk/
8
+ */
9
+ 'use strict';
10
+
11
+ var __defProp = Object.defineProperty;
12
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
13
+ const SENSITIVE_PARAM_KEYS = [
14
+ "auth",
15
+ "password",
16
+ "token",
17
+ "secret",
18
+ "access_token",
19
+ "refresh_token",
20
+ "client_secret",
21
+ "application_token",
22
+ "sessid",
23
+ "key",
24
+ "signature"
25
+ ];
26
+ const REDACTED_PLACEHOLDER = "***REDACTED***";
27
+ const QS_SENSITIVE_RE = new RegExp(
28
+ `([?&]|^)(${SENSITIVE_PARAM_KEYS.join("|")})=[^&#;]*`,
29
+ "gi"
30
+ );
31
+ function isPlainObject(value) {
32
+ return value !== null && typeof value === "object" && !Array.isArray(value);
33
+ }
34
+ __name(isPlainObject, "isPlainObject");
35
+ function redactQueryString(value) {
36
+ if (!value.includes("=")) return value;
37
+ return value.replace(
38
+ QS_SENSITIVE_RE,
39
+ (_match, sep, key) => `${sep}${key}=${REDACTED_PLACEHOLDER}`
40
+ );
41
+ }
42
+ __name(redactQueryString, "redactQueryString");
43
+ function redactValue(value, depth) {
44
+ if (typeof value === "string") return redactQueryString(value);
45
+ if (depth <= 0) return value;
46
+ if (isPlainObject(value)) return redactObject(value, depth - 1);
47
+ if (Array.isArray(value)) return value.map((item) => redactValue(item, depth));
48
+ return value;
49
+ }
50
+ __name(redactValue, "redactValue");
51
+ function redactObject(source, depth) {
52
+ const sanitized = { ...source };
53
+ for (const key of Object.keys(sanitized)) {
54
+ if (SENSITIVE_PARAM_KEYS.includes(key.toLowerCase())) {
55
+ sanitized[key] = REDACTED_PLACEHOLDER;
56
+ continue;
57
+ }
58
+ sanitized[key] = redactValue(sanitized[key], depth);
59
+ }
60
+ return sanitized;
61
+ }
62
+ __name(redactObject, "redactObject");
63
+ const DEFAULT_REDACT_DEPTH = 2;
64
+ function redactSensitiveParams(params) {
65
+ if (!isPlainObject(params)) return params;
66
+ return redactObject(params, DEFAULT_REDACT_DEPTH);
67
+ }
68
+ __name(redactSensitiveParams, "redactSensitiveParams");
69
+ function redactSensitiveUrl(url, extraKeys = []) {
70
+ if (typeof url !== "string" || !url.includes("=")) return url;
71
+ if (extraKeys.length === 0) return redactQueryString(url);
72
+ const escaped = extraKeys.map((key) => key.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"));
73
+ const re = new RegExp(
74
+ `([?&]|^)(${[...SENSITIVE_PARAM_KEYS, ...escaped].join("|")})=[^&#;]*`,
75
+ "gi"
76
+ );
77
+ return url.replace(re, (_match, sep, key) => `${sep}${key}=${REDACTED_PLACEHOLDER}`);
78
+ }
79
+ __name(redactSensitiveUrl, "redactSensitiveUrl");
80
+
81
+ exports.REDACTED_PLACEHOLDER = REDACTED_PLACEHOLDER;
82
+ exports.SENSITIVE_PARAM_KEYS = SENSITIVE_PARAM_KEYS;
83
+ exports.redactSensitiveParams = redactSensitiveParams;
84
+ exports.redactSensitiveUrl = redactSensitiveUrl;
85
+ //# sourceMappingURL=redact.cjs.map