@bitrix24/b24jssdk 1.2.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 (447) hide show
  1. package/README-AI.md +6 -5
  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 +17 -10
  280. package/dist/esm/core/actions/v2/call-list.mjs.map +1 -1
  281. package/dist/esm/core/actions/v2/call.mjs +1 -15
  282. package/dist/esm/core/actions/v2/call.mjs.map +1 -1
  283. package/dist/esm/core/actions/v2/fetch-list.mjs +17 -10
  284. package/dist/esm/core/actions/v2/fetch-list.mjs.map +1 -1
  285. package/dist/esm/core/actions/v2/manager-v2.mjs +6 -6
  286. package/dist/esm/core/actions/v2/manager-v2.mjs.map +1 -1
  287. package/dist/esm/core/actions/v3/_keyset-paginate.mjs +66 -0
  288. package/dist/esm/core/actions/v3/_keyset-paginate.mjs.map +1 -0
  289. package/dist/esm/core/actions/v3/aggregate.mjs +94 -0
  290. package/dist/esm/core/actions/v3/aggregate.mjs.map +1 -0
  291. package/dist/esm/core/actions/v3/batch-by-chunk.mjs +1 -1
  292. package/dist/esm/core/actions/v3/batch.mjs +1 -10
  293. package/dist/esm/core/actions/v3/batch.mjs.map +1 -1
  294. package/dist/esm/core/actions/v3/call-list.mjs +40 -47
  295. package/dist/esm/core/actions/v3/call-list.mjs.map +1 -1
  296. package/dist/esm/core/actions/v3/call-tail.mjs +116 -0
  297. package/dist/esm/core/actions/v3/call-tail.mjs.map +1 -0
  298. package/dist/esm/core/actions/v3/call.mjs +1 -10
  299. package/dist/esm/core/actions/v3/call.mjs.map +1 -1
  300. package/dist/esm/core/actions/v3/fetch-list.mjs +34 -44
  301. package/dist/esm/core/actions/v3/fetch-list.mjs.map +1 -1
  302. package/dist/esm/core/actions/v3/fetch-tail.mjs +110 -0
  303. package/dist/esm/core/actions/v3/fetch-tail.mjs.map +1 -0
  304. package/dist/esm/core/actions/v3/manager-v3.mjs +30 -6
  305. package/dist/esm/core/actions/v3/manager-v3.mjs.map +1 -1
  306. package/dist/esm/core/http/abstract-http.mjs +96 -21
  307. package/dist/esm/core/http/abstract-http.mjs.map +1 -1
  308. package/dist/esm/core/http/ajax-error.mjs +1 -1
  309. package/dist/esm/core/http/ajax-result.mjs +9 -8
  310. package/dist/esm/core/http/ajax-result.mjs.map +1 -1
  311. package/dist/esm/core/http/limiters/adaptive-delayer.mjs +1 -1
  312. package/dist/esm/core/http/limiters/manager.mjs +2 -1
  313. package/dist/esm/core/http/limiters/manager.mjs.map +1 -1
  314. package/dist/esm/core/http/limiters/operating-limiter.mjs +1 -1
  315. package/dist/esm/core/http/limiters/params-factory.mjs +1 -1
  316. package/dist/esm/core/http/limiters/rate-limiter.mjs +1 -1
  317. package/dist/esm/core/http/redact.mjs +41 -13
  318. package/dist/esm/core/http/redact.mjs.map +1 -1
  319. package/dist/esm/core/http/v2.mjs +1 -18
  320. package/dist/esm/core/http/v2.mjs.map +1 -1
  321. package/dist/esm/core/http/v3.mjs +1 -15
  322. package/dist/esm/core/http/v3.mjs.map +1 -1
  323. package/dist/esm/core/interaction/batch/abstract-interaction-batch.mjs +1 -1
  324. package/dist/esm/core/interaction/batch/parse-row.mjs +1 -1
  325. package/dist/esm/core/interaction/batch/processing/interface-strategy.mjs +44 -1
  326. package/dist/esm/core/interaction/batch/processing/interface-strategy.mjs.map +1 -1
  327. package/dist/esm/core/interaction/batch/processing/v2/abstract-processing.mjs +7 -6
  328. package/dist/esm/core/interaction/batch/processing/v2/abstract-processing.mjs.map +1 -1
  329. package/dist/esm/core/interaction/batch/processing/v2/as-array.mjs +3 -3
  330. package/dist/esm/core/interaction/batch/processing/v2/as-array.mjs.map +1 -1
  331. package/dist/esm/core/interaction/batch/processing/v2/as-object.mjs +1 -1
  332. package/dist/esm/core/interaction/batch/processing/v3/abstract-processing.mjs +7 -19
  333. package/dist/esm/core/interaction/batch/processing/v3/abstract-processing.mjs.map +1 -1
  334. package/dist/esm/core/interaction/batch/processing/v3/as-array.mjs +3 -3
  335. package/dist/esm/core/interaction/batch/processing/v3/as-array.mjs.map +1 -1
  336. package/dist/esm/core/interaction/batch/processing/v3/as-object.mjs +1 -1
  337. package/dist/esm/core/interaction/batch/v2.mjs +1 -1
  338. package/dist/esm/core/interaction/batch/v3.mjs +1 -1
  339. package/dist/esm/core/language/list.mjs +1 -1
  340. package/dist/esm/core/request-id-generator.mjs +1 -1
  341. package/dist/esm/core/result.mjs +35 -1
  342. package/dist/esm/core/result.mjs.map +1 -1
  343. package/dist/esm/core/sdk-error.mjs +1 -1
  344. package/dist/esm/core/tools/abstract-tool.mjs +1 -1
  345. package/dist/esm/core/tools/healthcheck.mjs +1 -1
  346. package/dist/esm/core/tools/manager.mjs +3 -3
  347. package/dist/esm/core/tools/manager.mjs.map +1 -1
  348. package/dist/esm/core/tools/ping.mjs +1 -1
  349. package/dist/esm/core/version-manager.mjs +19 -80
  350. package/dist/esm/core/version-manager.mjs.map +1 -1
  351. package/dist/esm/frame/auth.mjs +1 -1
  352. package/dist/esm/frame/b24.mjs +8 -2
  353. package/dist/esm/frame/b24.mjs.map +1 -1
  354. package/dist/esm/frame/dialog.mjs +1 -1
  355. package/dist/esm/frame/frame.mjs +1 -1
  356. package/dist/esm/frame/message/commands.mjs +1 -1
  357. package/dist/esm/frame/message/controller.mjs +17 -6
  358. package/dist/esm/frame/message/controller.mjs.map +1 -1
  359. package/dist/esm/frame/options.mjs +1 -1
  360. package/dist/esm/frame/parent.mjs +6 -2
  361. package/dist/esm/frame/parent.mjs.map +1 -1
  362. package/dist/esm/frame/placement.mjs +1 -1
  363. package/dist/esm/frame/slider.mjs +5 -1
  364. package/dist/esm/frame/slider.mjs.map +1 -1
  365. package/dist/esm/helper/abstract-helper.mjs +1 -1
  366. package/dist/esm/helper/app-manager.mjs +1 -1
  367. package/dist/esm/helper/currency-manager.mjs +1 -1
  368. package/dist/esm/helper/helper-manager.mjs +1 -1
  369. package/dist/esm/helper/license-manager.mjs +1 -1
  370. package/dist/esm/helper/options-manager.mjs +1 -1
  371. package/dist/esm/helper/payment-manager.mjs +1 -1
  372. package/dist/esm/helper/profile-manager.mjs +1 -1
  373. package/dist/esm/helper/use-b24-helper.mjs +1 -1
  374. package/dist/esm/hook/auth.mjs +1 -1
  375. package/dist/esm/hook/b24.mjs +3 -3
  376. package/dist/esm/hook/b24.mjs.map +1 -1
  377. package/dist/esm/index.d.mts +501 -49
  378. package/dist/esm/index.d.ts +501 -49
  379. package/dist/esm/index.mjs +3 -1
  380. package/dist/esm/index.mjs.map +1 -1
  381. package/dist/esm/loader-b24frame.mjs +1 -1
  382. package/dist/esm/logger/abstract-logger.mjs +1 -1
  383. package/dist/esm/logger/browser.mjs +1 -1
  384. package/dist/esm/logger/formatter/abstract-formatter.mjs +1 -1
  385. package/dist/esm/logger/formatter/json-formatter.mjs +1 -1
  386. package/dist/esm/logger/formatter/line-formatter.mjs +1 -1
  387. package/dist/esm/logger/formatter/telegram-formatter.mjs +1 -1
  388. package/dist/esm/logger/handler/abstract-handler.mjs +1 -1
  389. package/dist/esm/logger/handler/consola-adapter.mjs +1 -1
  390. package/dist/esm/logger/handler/console-handler.mjs +1 -1
  391. package/dist/esm/logger/handler/console-v2-handler.mjs +1 -1
  392. package/dist/esm/logger/handler/memory-handler.mjs +1 -1
  393. package/dist/esm/logger/handler/stream-handler.mjs +1 -1
  394. package/dist/esm/logger/handler/telegram-handler.mjs +1 -1
  395. package/dist/esm/logger/handler/winston-adapter.mjs +1 -1
  396. package/dist/esm/logger/logger-factory.mjs +1 -1
  397. package/dist/esm/logger/logger.mjs +1 -1
  398. package/dist/esm/logger/null-logger.mjs +1 -1
  399. package/dist/esm/logger/processor/memory-usage-processor.mjs +1 -1
  400. package/dist/esm/logger/processor/pid-processor.mjs +1 -1
  401. package/dist/esm/oauth/auth.mjs +13 -16
  402. package/dist/esm/oauth/auth.mjs.map +1 -1
  403. package/dist/esm/oauth/b24.mjs +1 -1
  404. package/dist/esm/oauth/refresh-token-error.mjs +1 -1
  405. package/dist/esm/pullClient/abstract-connector.mjs +1 -1
  406. package/dist/esm/pullClient/channel-manager.mjs +1 -1
  407. package/dist/esm/pullClient/client.mjs +141 -30
  408. package/dist/esm/pullClient/client.mjs.map +1 -1
  409. package/dist/esm/pullClient/errors.mjs +1 -1
  410. package/dist/esm/pullClient/json-rpc.mjs +5 -4
  411. package/dist/esm/pullClient/json-rpc.mjs.map +1 -1
  412. package/dist/esm/pullClient/long-polling-connector.mjs +1 -1
  413. package/dist/esm/pullClient/protobuf/index.mjs +1 -1
  414. package/dist/esm/pullClient/protobuf/model.mjs +1 -1
  415. package/dist/esm/pullClient/protobuf/protobuf.mjs +1 -1
  416. package/dist/esm/pullClient/shared-config.mjs +1 -1
  417. package/dist/esm/pullClient/storage-manager.mjs +1 -1
  418. package/dist/esm/pullClient/web-socket-connector.mjs +1 -1
  419. package/dist/esm/tools/batch-ref-v3.mjs +52 -0
  420. package/dist/esm/tools/batch-ref-v3.mjs.map +1 -0
  421. package/dist/esm/tools/browser.mjs +1 -1
  422. package/dist/esm/tools/environment.mjs +1 -1
  423. package/dist/esm/tools/filter-v3.mjs +137 -0
  424. package/dist/esm/tools/filter-v3.mjs.map +1 -0
  425. package/dist/esm/tools/formatters/iban.mjs +1 -1
  426. package/dist/esm/tools/formatters/numbers.mjs +1 -1
  427. package/dist/esm/tools/index.mjs +1 -1
  428. package/dist/esm/tools/scroll-size.mjs +1 -1
  429. package/dist/esm/tools/text.mjs +1 -1
  430. package/dist/esm/tools/type.mjs +1 -1
  431. package/dist/esm/tools/use-formatters.mjs +1 -1
  432. package/dist/esm/tools/uuidv7.mjs +1 -1
  433. package/dist/esm/types/b24-helper.mjs +1 -1
  434. package/dist/esm/types/b24.mjs +1 -1
  435. package/dist/esm/types/bizproc/index.mjs +1 -1
  436. package/dist/esm/types/catalog/index.mjs +1 -1
  437. package/dist/esm/types/common.mjs +1 -1
  438. package/dist/esm/types/crm/entity-type.mjs +1 -1
  439. package/dist/esm/types/crm/productrow.mjs +1 -1
  440. package/dist/esm/types/logger.mjs +1 -1
  441. package/dist/esm/types/pull.mjs +1 -1
  442. package/dist/umd/index.js +1384 -680
  443. package/dist/umd/index.js.map +1 -1
  444. package/dist/umd/index.min.js +26 -26
  445. package/dist/umd/index.min.js.map +1 -1
  446. package/dist/umd/package.json +3 -0
  447. package/package.json +12 -4
@@ -0,0 +1,41 @@
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 logger = require('../../types/logger.cjs');
12
+
13
+ var __defProp = Object.defineProperty;
14
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
15
+ class AbstractHandler {
16
+ static {
17
+ __name(this, "AbstractHandler");
18
+ }
19
+ level;
20
+ formatter = null;
21
+ bubble = true;
22
+ constructor(level = logger.LogLevel.DEBUG, bubble) {
23
+ this.level = level;
24
+ if (bubble !== void 0) this.bubble = bubble;
25
+ }
26
+ isHandling(level) {
27
+ return level >= this.level;
28
+ }
29
+ shouldBubble() {
30
+ return this.bubble;
31
+ }
32
+ setFormatter(formatter) {
33
+ this.formatter = formatter;
34
+ }
35
+ getFormatter() {
36
+ return this.formatter;
37
+ }
38
+ }
39
+
40
+ exports.AbstractHandler = AbstractHandler;
41
+ //# sourceMappingURL=abstract-handler.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abstract-handler.cjs","sources":["../../../../src/logger/handler/abstract-handler.ts"],"sourcesContent":["import type { Handler, Formatter, LogRecord } from '../../types/logger'\nimport { LogLevel } from '../../types/logger'\n\n/**\n * Abstract Handler\n */\nexport abstract class AbstractHandler implements Handler {\n protected level: LogLevel\n protected formatter: Formatter | null = null\n protected bubble: boolean = true\n\n constructor(\n level: LogLevel = LogLevel.DEBUG,\n bubble?: boolean\n ) {\n this.level = level\n\n if (bubble !== undefined) this.bubble = bubble\n }\n\n public isHandling(level: LogLevel): boolean {\n return level >= this.level\n }\n\n public shouldBubble(): boolean {\n return this.bubble\n }\n\n public setFormatter(formatter: Formatter): void {\n this.formatter = formatter\n }\n\n public getFormatter(): Formatter | null {\n return this.formatter\n }\n\n /**\n * @inheritDoc\n */\n public abstract handle(record: LogRecord): Promise<boolean>\n}\n"],"names":["LogLevel"],"mappings":";;;;;;;;;;;;;;AAMO,MAAe,eAAA,CAAmC;AAAA,EANzD;AAMyD,IAAA,MAAA,CAAA,IAAA,EAAA,iBAAA,CAAA;AAAA;AAAA,EAC7C,KAAA;AAAA,EACA,SAAA,GAA8B,IAAA;AAAA,EAC9B,MAAA,GAAkB,IAAA;AAAA,EAE5B,WAAA,CACE,KAAA,GAAkBA,eAAA,CAAS,KAAA,EAC3B,MAAA,EACA;AACA,IAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AAEb,IAAA,IAAI,MAAA,KAAW,MAAA,EAAW,IAAA,CAAK,MAAA,GAAS,MAAA;AAAA,EAC1C;AAAA,EAEO,WAAW,KAAA,EAA0B;AAC1C,IAAA,OAAO,SAAS,IAAA,CAAK,KAAA;AAAA,EACvB;AAAA,EAEO,YAAA,GAAwB;AAC7B,IAAA,OAAO,IAAA,CAAK,MAAA;AAAA,EACd;AAAA,EAEO,aAAa,SAAA,EAA4B;AAC9C,IAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AAAA,EACnB;AAAA,EAEO,YAAA,GAAiC;AACtC,IAAA,OAAO,IAAA,CAAK,SAAA;AAAA,EACd;AAMF;;;;"}
@@ -0,0 +1,64 @@
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 logger = require('../../types/logger.cjs');
12
+ const abstractHandler = require('./abstract-handler.cjs');
13
+
14
+ var __defProp = Object.defineProperty;
15
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
16
+ class ConsolaAdapter extends abstractHandler.AbstractHandler {
17
+ static {
18
+ __name(this, "ConsolaAdapter");
19
+ }
20
+ consolaInstance;
21
+ constructor(level = logger.LogLevel.DEBUG, options) {
22
+ const opts = {
23
+ bubble: true,
24
+ ...options
25
+ };
26
+ super(level, opts.bubble);
27
+ this.consolaInstance = opts.consolaInstance;
28
+ }
29
+ setFormatter(_formatter) {
30
+ }
31
+ getFormatter() {
32
+ return null;
33
+ }
34
+ async handle(record) {
35
+ const message = `[${record.channel}] ${record.levelName}: ${record.message}`;
36
+ const args = { ...record.context, ...record.extra, timestamp: record.timestamp };
37
+ switch (record.level) {
38
+ case logger.LogLevel.DEBUG:
39
+ this.consolaInstance.log(message, args);
40
+ break;
41
+ case logger.LogLevel.INFO:
42
+ this.consolaInstance.info(message, args);
43
+ break;
44
+ case logger.LogLevel.NOTICE:
45
+ this.consolaInstance.success(message, args);
46
+ break;
47
+ case logger.LogLevel.WARNING:
48
+ this.consolaInstance.warn(message, args);
49
+ break;
50
+ case logger.LogLevel.ERROR:
51
+ case logger.LogLevel.CRITICAL:
52
+ case logger.LogLevel.ALERT:
53
+ case logger.LogLevel.EMERGENCY:
54
+ this.consolaInstance.error(message, args);
55
+ break;
56
+ default:
57
+ this.consolaInstance.log(message, args);
58
+ }
59
+ return true;
60
+ }
61
+ }
62
+
63
+ exports.ConsolaAdapter = ConsolaAdapter;
64
+ //# sourceMappingURL=consola-adapter.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consola-adapter.cjs","sources":["../../../../src/logger/handler/consola-adapter.ts"],"sourcesContent":["import type { Handler, HandlerOptions, LogRecord, Formatter } from '../../types/logger'\nimport { LogLevel } from '../../types/logger'\nimport { AbstractHandler } from './abstract-handler'\n\nexport interface ConsolaAdapterOptions extends HandlerOptions {\n consolaInstance: any\n}\n\n/**\n * Adapter for Consola\n *\n * @memo Consola has its own formatter\n * @link https://github.com/unjs/consola\n */\nexport class ConsolaAdapter extends AbstractHandler implements Handler {\n private consolaInstance: any\n\n constructor(\n level: LogLevel = LogLevel.DEBUG,\n options: ConsolaAdapterOptions\n ) {\n const opts = {\n bubble: true,\n ...options\n }\n\n super(level, opts.bubble)\n this.consolaInstance = opts.consolaInstance\n }\n\n public override setFormatter(_formatter: Formatter): void {\n // Consola has its own formatter\n }\n\n public override getFormatter(): Formatter | null {\n return null\n }\n\n public override async handle(record: LogRecord): Promise<boolean> {\n const message = `[${record.channel}] ${record.levelName}: ${record.message}`\n const args = { ...record.context, ...record.extra, timestamp: record.timestamp }\n\n switch (record.level) {\n case LogLevel.DEBUG:\n this.consolaInstance.log(message, args)\n break\n case LogLevel.INFO:\n this.consolaInstance.info(message, args)\n break\n case LogLevel.NOTICE:\n this.consolaInstance.success(message, args)\n break\n case LogLevel.WARNING:\n this.consolaInstance.warn(message, args)\n break\n case LogLevel.ERROR:\n case LogLevel.CRITICAL:\n case LogLevel.ALERT:\n case LogLevel.EMERGENCY:\n this.consolaInstance.error(message, args)\n break\n default:\n this.consolaInstance.log(message, args)\n }\n\n return true\n }\n}\n"],"names":["AbstractHandler","LogLevel"],"mappings":";;;;;;;;;;;;;;;AAcO,MAAM,uBAAuBA,+BAAA,CAAmC;AAAA,EAdvE;AAcuE,IAAA,MAAA,CAAA,IAAA,EAAA,gBAAA,CAAA;AAAA;AAAA,EAC7D,eAAA;AAAA,EAER,WAAA,CACE,KAAA,GAAkBC,eAAA,CAAS,KAAA,EAC3B,OAAA,EACA;AACA,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,MAAA,EAAQ,IAAA;AAAA,MACR,GAAG;AAAA,KACL;AAEA,IAAA,KAAA,CAAM,KAAA,EAAO,KAAK,MAAM,CAAA;AACxB,IAAA,IAAA,CAAK,kBAAkB,IAAA,CAAK,eAAA;AAAA,EAC9B;AAAA,EAEgB,aAAa,UAAA,EAA6B;AAAA,EAE1D;AAAA,EAEgB,YAAA,GAAiC;AAC/C,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,MAAsB,OAAO,MAAA,EAAqC;AAChE,IAAA,MAAM,OAAA,GAAU,IAAI,MAAA,CAAO,OAAO,KAAK,MAAA,CAAO,SAAS,CAAA,EAAA,EAAK,MAAA,CAAO,OAAO,CAAA,CAAA;AAC1E,IAAA,MAAM,IAAA,GAAO,EAAE,GAAG,MAAA,CAAO,OAAA,EAAS,GAAG,MAAA,CAAO,KAAA,EAAO,SAAA,EAAW,MAAA,CAAO,SAAA,EAAU;AAE/E,IAAA,QAAQ,OAAO,KAAA;AAAO,MACpB,KAAKA,eAAA,CAAS,KAAA;AACZ,QAAA,IAAA,CAAK,eAAA,CAAgB,GAAA,CAAI,OAAA,EAAS,IAAI,CAAA;AACtC,QAAA;AAAA,MACF,KAAKA,eAAA,CAAS,IAAA;AACZ,QAAA,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,OAAA,EAAS,IAAI,CAAA;AACvC,QAAA;AAAA,MACF,KAAKA,eAAA,CAAS,MAAA;AACZ,QAAA,IAAA,CAAK,eAAA,CAAgB,OAAA,CAAQ,OAAA,EAAS,IAAI,CAAA;AAC1C,QAAA;AAAA,MACF,KAAKA,eAAA,CAAS,OAAA;AACZ,QAAA,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,OAAA,EAAS,IAAI,CAAA;AACvC,QAAA;AAAA,MACF,KAAKA,eAAA,CAAS,KAAA;AAAA,MACd,KAAKA,eAAA,CAAS,QAAA;AAAA,MACd,KAAKA,eAAA,CAAS,KAAA;AAAA,MACd,KAAKA,eAAA,CAAS,SAAA;AACZ,QAAA,IAAA,CAAK,eAAA,CAAgB,KAAA,CAAM,OAAA,EAAS,IAAI,CAAA;AACxC,QAAA;AAAA,MACF;AACE,QAAA,IAAA,CAAK,eAAA,CAAgB,GAAA,CAAI,OAAA,EAAS,IAAI,CAAA;AAAA;AAG1C,IAAA,OAAO,IAAA;AAAA,EACT;AACF;;;;"}
@@ -0,0 +1,100 @@
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 logger = require('../../types/logger.cjs');
12
+ const abstractHandler = require('./abstract-handler.cjs');
13
+ const lineFormatter = require('../formatter/line-formatter.cjs');
14
+
15
+ var __defProp = Object.defineProperty;
16
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
17
+ class ConsoleHandler extends abstractHandler.AbstractHandler {
18
+ static {
19
+ __name(this, "ConsoleHandler");
20
+ }
21
+ _styles = /* @__PURE__ */ new Map();
22
+ _useStyles;
23
+ constructor(level = logger.LogLevel.DEBUG, options) {
24
+ const opts = {
25
+ useStyles: true,
26
+ ...options
27
+ };
28
+ super(level, opts.bubble);
29
+ this._useStyles = opts.useStyles;
30
+ this._initStyles();
31
+ this.setFormatter(new lineFormatter.LineFormatter());
32
+ }
33
+ _initStyles() {
34
+ const style = "color: _color_; background: _bg_; padding: 2px 6px; border-radius: 3px; font-size: 11px;";
35
+ this._styles.set(logger.LogLevel.DEBUG, [
36
+ "%cDEBUG",
37
+ style.replace("_color_", "#666666").replace("_bg_", "#F0F0F0")
38
+ ]);
39
+ this._styles.set(logger.LogLevel.INFO, [
40
+ "%cINFO",
41
+ style.replace("_color_", "white").replace("_bg_", "#2196F3")
42
+ ]);
43
+ this._styles.set(logger.LogLevel.NOTICE, [
44
+ "%cNOTICE",
45
+ style.replace("_color_", "white").replace("_bg_", "#213BF3")
46
+ ]);
47
+ this._styles.set(logger.LogLevel.WARNING, [
48
+ "%cWARN",
49
+ style.replace("_color_", "white").replace("_bg_", "#FF9800")
50
+ ]);
51
+ this._styles.set(logger.LogLevel.ERROR, [
52
+ "%cERROR",
53
+ style.replace("_color_", "white").replace("_bg_", "#F44336")
54
+ ]);
55
+ this._styles.set(logger.LogLevel.CRITICAL, [
56
+ "%cCRITICAL",
57
+ style.replace("_color_", "white").replace("_bg_", "#9C27B0")
58
+ ]);
59
+ }
60
+ /**
61
+ * @inheritDoc
62
+ */
63
+ async handle(record) {
64
+ const formatter = this.getFormatter();
65
+ const message = formatter.format(record);
66
+ let method = this._getConsoleMethod(record.level);
67
+ if (record.context["needTrace"] === true) {
68
+ method = "trace";
69
+ }
70
+ const params = [];
71
+ if (this._useStyles && this._styles.has(record.level)) {
72
+ const style = this._styles.get(record.level);
73
+ params.push(style[0], style[1]);
74
+ }
75
+ params.push(message);
76
+ console[method](
77
+ ...params.filter(Boolean)
78
+ );
79
+ return true;
80
+ }
81
+ _getConsoleMethod(level) {
82
+ switch (level) {
83
+ case logger.LogLevel.INFO:
84
+ case logger.LogLevel.NOTICE:
85
+ return "info";
86
+ case logger.LogLevel.WARNING:
87
+ return "warn";
88
+ case logger.LogLevel.ERROR:
89
+ case logger.LogLevel.CRITICAL:
90
+ case logger.LogLevel.ALERT:
91
+ case logger.LogLevel.EMERGENCY:
92
+ return "error";
93
+ default:
94
+ return "log";
95
+ }
96
+ }
97
+ }
98
+
99
+ exports.ConsoleHandler = ConsoleHandler;
100
+ //# sourceMappingURL=console-handler.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-handler.cjs","sources":["../../../../src/logger/handler/console-handler.ts"],"sourcesContent":["import type { Handler, HandlerOptions, LogRecord } from '../../types/logger'\nimport { LogLevel } from '../../types/logger'\nimport { AbstractHandler } from './abstract-handler'\nimport { LineFormatter } from '../formatter'\n\nexport interface ConsoleHandlerOptions extends HandlerOptions {\n useStyles?: boolean\n}\n\n/**\n * Console Handler\n */\nexport class ConsoleHandler extends AbstractHandler implements Handler {\n protected _styles: Map<LogLevel, string[]> = new Map()\n protected readonly _useStyles: boolean\n\n constructor(\n level: LogLevel = LogLevel.DEBUG,\n options?: ConsoleHandlerOptions\n ) {\n const opts = {\n useStyles: true,\n ...options\n }\n\n super(level, opts.bubble)\n this._useStyles = opts.useStyles\n this._initStyles()\n this.setFormatter(new LineFormatter())\n }\n\n protected _initStyles(): void {\n const style: string = 'color: _color_; background: _bg_; padding: 2px 6px; border-radius: 3px; font-size: 11px;'\n\n this._styles.set(LogLevel.DEBUG, [\n '%cDEBUG',\n style.replace('_color_', '#666666').replace('_bg_', '#F0F0F0')\n ])\n this._styles.set(LogLevel.INFO, [\n '%cINFO',\n style.replace('_color_', 'white').replace('_bg_', '#2196F3')\n ])\n this._styles.set(LogLevel.NOTICE, [\n '%cNOTICE',\n style.replace('_color_', 'white').replace('_bg_', '#213BF3')\n ])\n this._styles.set(LogLevel.WARNING, [\n '%cWARN',\n style.replace('_color_', 'white').replace('_bg_', '#FF9800')\n ])\n this._styles.set(LogLevel.ERROR, [\n '%cERROR',\n style.replace('_color_', 'white').replace('_bg_', '#F44336')\n ])\n this._styles.set(LogLevel.CRITICAL, [\n '%cCRITICAL',\n style.replace('_color_', 'white').replace('_bg_', '#9C27B0')\n ])\n }\n\n /**\n * @inheritDoc\n */\n public override async handle(record: LogRecord): Promise<boolean> {\n const formatter = this.getFormatter()!\n const message = formatter.format(record)\n\n let method = this._getConsoleMethod(record.level)\n if (record.context['needTrace'] === true) {\n method = 'trace'\n }\n\n const params = []\n if (this._useStyles && this._styles.has(record.level)) {\n const style = this._styles.get(record.level)!\n params.push(style[0], style[1])\n }\n params.push(message)\n console[method](\n ...params.filter(Boolean)\n )\n\n return true\n }\n\n protected _getConsoleMethod(level: LogLevel): 'log' | 'info' | 'warn' | 'error' | 'trace' {\n switch (level) {\n case LogLevel.INFO:\n case LogLevel.NOTICE:\n return 'info'\n case LogLevel.WARNING:\n return 'warn'\n case LogLevel.ERROR:\n case LogLevel.CRITICAL:\n case LogLevel.ALERT:\n case LogLevel.EMERGENCY:\n return 'error'\n default:\n return 'log'\n }\n }\n}\n"],"names":["AbstractHandler","LogLevel","LineFormatter"],"mappings":"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"}
@@ -0,0 +1,53 @@
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 logger = require('../../types/logger.cjs');
12
+ const consoleHandler = require('./console-handler.cjs');
13
+ const lineFormatter = require('../formatter/line-formatter.cjs');
14
+
15
+ var __defProp = Object.defineProperty;
16
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
17
+ class ConsoleV2Handler extends consoleHandler.ConsoleHandler {
18
+ static {
19
+ __name(this, "ConsoleV2Handler");
20
+ }
21
+ constructor(level = logger.LogLevel.DEBUG, options) {
22
+ super(level, options);
23
+ this.setFormatter(new lineFormatter.LineFormatter("[{channel}]: {message}"));
24
+ }
25
+ /**
26
+ * @inheritDoc
27
+ */
28
+ async handle(record) {
29
+ const formatter = this.getFormatter();
30
+ const message = formatter.format(record);
31
+ let method = this._getConsoleMethod(record.level);
32
+ if (record.context["needTrace"] === true) {
33
+ method = "trace";
34
+ }
35
+ const context = record.context && Object.keys(record.context).length > 0 ? record.context : void 0;
36
+ const extra = record.extra && Object.keys(record.extra).length > 0 ? record.extra : void 0;
37
+ const params = [];
38
+ if (this._useStyles && this._styles.has(record.level)) {
39
+ const style = this._styles.get(record.level);
40
+ params.push(style[0], style[1]);
41
+ }
42
+ params.push(message);
43
+ params.push(context);
44
+ params.push(extra);
45
+ console[method](
46
+ ...params.filter(Boolean)
47
+ );
48
+ return true;
49
+ }
50
+ }
51
+
52
+ exports.ConsoleV2Handler = ConsoleV2Handler;
53
+ //# sourceMappingURL=console-v2-handler.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-v2-handler.cjs","sources":["../../../../src/logger/handler/console-v2-handler.ts"],"sourcesContent":["import type { Handler, LogRecord } from '../../types/logger'\nimport type { ConsoleHandlerOptions } from './console-handler'\nimport { LogLevel } from '../../types/logger'\nimport { LineFormatter } from '../formatter'\nimport { ConsoleHandler } from './console-handler'\n\n/**\n * Console Handler V2\n */\nexport class ConsoleV2Handler extends ConsoleHandler implements Handler {\n constructor(\n level: LogLevel = LogLevel.DEBUG,\n options?: ConsoleHandlerOptions\n ) {\n super(level, options)\n this.setFormatter(new LineFormatter('[{channel}]: {message}'))\n }\n\n /**\n * @inheritDoc\n */\n public override async handle(record: LogRecord): Promise<boolean> {\n const formatter = this.getFormatter()!\n const message = formatter.format(record)\n\n let method = this._getConsoleMethod(record.level)\n if (record.context['needTrace'] === true) {\n method = 'trace'\n }\n\n const context = record.context && Object.keys(record.context).length > 0\n ? record.context\n : undefined\n const extra = record.extra && Object.keys(record.extra).length > 0\n ? record.extra\n : undefined\n\n const params = []\n if (this._useStyles && this._styles.has(record.level)) {\n const style = this._styles.get(record.level)!\n params.push(style[0], style[1])\n }\n params.push(message)\n params.push(context)\n params.push(extra)\n console[method](\n ...params.filter(Boolean)\n )\n\n return true\n }\n}\n"],"names":["ConsoleHandler","LogLevel","LineFormatter"],"mappings":";;;;;;;;;;;;;;;;AASO,MAAM,yBAAyBA,6BAAA,CAAkC;AAAA,EATxE;AASwE,IAAA,MAAA,CAAA,IAAA,EAAA,kBAAA,CAAA;AAAA;AAAA,EACtE,WAAA,CACE,KAAA,GAAkBC,eAAA,CAAS,KAAA,EAC3B,OAAA,EACA;AACA,IAAA,KAAA,CAAM,OAAO,OAAO,CAAA;AACpB,IAAA,IAAA,CAAK,YAAA,CAAa,IAAIC,2BAAA,CAAc,wBAAwB,CAAC,CAAA;AAAA,EAC/D;AAAA;AAAA;AAAA;AAAA,EAKA,MAAsB,OAAO,MAAA,EAAqC;AAChE,IAAA,MAAM,SAAA,GAAY,KAAK,YAAA,EAAa;AACpC,IAAA,MAAM,OAAA,GAAU,SAAA,CAAU,MAAA,CAAO,MAAM,CAAA;AAEvC,IAAA,IAAI,MAAA,GAAS,IAAA,CAAK,iBAAA,CAAkB,MAAA,CAAO,KAAK,CAAA;AAChD,IAAA,IAAI,MAAA,CAAO,OAAA,CAAQ,WAAW,CAAA,KAAM,IAAA,EAAM;AACxC,MAAA,MAAA,GAAS,OAAA;AAAA,IACX;AAEA,IAAA,MAAM,OAAA,GAAU,MAAA,CAAO,OAAA,IAAW,MAAA,CAAO,IAAA,CAAK,MAAA,CAAO,OAAO,CAAA,CAAE,MAAA,GAAS,CAAA,GACnE,MAAA,CAAO,OAAA,GACP,MAAA;AACJ,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,KAAA,IAAS,MAAA,CAAO,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA,CAAE,MAAA,GAAS,CAAA,GAC7D,MAAA,CAAO,KAAA,GACP,MAAA;AAEJ,IAAA,MAAM,SAAS,EAAC;AAChB,IAAA,IAAI,KAAK,UAAA,IAAc,IAAA,CAAK,QAAQ,GAAA,CAAI,MAAA,CAAO,KAAK,CAAA,EAAG;AACrD,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,OAAO,KAAK,CAAA;AAC3C,MAAA,MAAA,CAAO,KAAK,KAAA,CAAM,CAAC,CAAA,EAAG,KAAA,CAAM,CAAC,CAAC,CAAA;AAAA,IAChC;AACA,IAAA,MAAA,CAAO,KAAK,OAAO,CAAA;AACnB,IAAA,MAAA,CAAO,KAAK,OAAO,CAAA;AACnB,IAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AACjB,IAAA,OAAA,CAAQ,MAAM,CAAA;AAAA,MACZ,GAAG,MAAA,CAAO,MAAA,CAAO,OAAO;AAAA,KAC1B;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AACF;;;;"}
@@ -0,0 +1,50 @@
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 logger = require('../../types/logger.cjs');
12
+ const abstractHandler = require('./abstract-handler.cjs');
13
+
14
+ var __defProp = Object.defineProperty;
15
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
16
+ class MemoryHandler extends abstractHandler.AbstractHandler {
17
+ static {
18
+ __name(this, "MemoryHandler");
19
+ }
20
+ records = [];
21
+ limit;
22
+ constructor(level = logger.LogLevel.DEBUG, options) {
23
+ const opts = {
24
+ bubble: true,
25
+ limit: 1e3,
26
+ ...options
27
+ };
28
+ super(level, opts.bubble);
29
+ this.limit = opts.limit;
30
+ }
31
+ /**
32
+ * @inheritDoc
33
+ */
34
+ async handle(record) {
35
+ this.records.push(record);
36
+ if (this.records.length > this.limit) {
37
+ this.records.shift();
38
+ }
39
+ return true;
40
+ }
41
+ getRecords() {
42
+ return [...this.records];
43
+ }
44
+ clear() {
45
+ this.records = [];
46
+ }
47
+ }
48
+
49
+ exports.MemoryHandler = MemoryHandler;
50
+ //# sourceMappingURL=memory-handler.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-handler.cjs","sources":["../../../../src/logger/handler/memory-handler.ts"],"sourcesContent":["import type { Handler, HandlerOptions, LogRecord } from '../../types/logger'\nimport { LogLevel } from '../../types/logger'\nimport { AbstractHandler } from './abstract-handler'\n\nexport interface MemoryHandlerOptions extends HandlerOptions {\n limit?: number\n}\n\n/**\n * Memory Handler\n */\nexport class MemoryHandler extends AbstractHandler implements Handler {\n private records: LogRecord[] = []\n private readonly limit: number\n\n constructor(\n level: LogLevel = LogLevel.DEBUG,\n options?: MemoryHandlerOptions\n ) {\n const opts = {\n bubble: true,\n limit: 1_000,\n ...options\n }\n super(level, opts.bubble)\n this.limit = opts.limit\n }\n\n /**\n * @inheritDoc\n */\n public override async handle(record: LogRecord): Promise<boolean> {\n this.records.push(record)\n if (this.records.length > this.limit) {\n this.records.shift()\n }\n\n return true\n }\n\n getRecords(): LogRecord[] {\n return [...this.records]\n }\n\n clear(): void {\n this.records = []\n }\n}\n"],"names":["AbstractHandler","LogLevel"],"mappings":";;;;;;;;;;;;;;;AAWO,MAAM,sBAAsBA,+BAAA,CAAmC;AAAA,EAXtE;AAWsE,IAAA,MAAA,CAAA,IAAA,EAAA,eAAA,CAAA;AAAA;AAAA,EAC5D,UAAuB,EAAC;AAAA,EACf,KAAA;AAAA,EAEjB,WAAA,CACE,KAAA,GAAkBC,eAAA,CAAS,KAAA,EAC3B,OAAA,EACA;AACA,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,MAAA,EAAQ,IAAA;AAAA,MACR,KAAA,EAAO,GAAA;AAAA,MACP,GAAG;AAAA,KACL;AACA,IAAA,KAAA,CAAM,KAAA,EAAO,KAAK,MAAM,CAAA;AACxB,IAAA,IAAA,CAAK,QAAQ,IAAA,CAAK,KAAA;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAsB,OAAO,MAAA,EAAqC;AAChE,IAAA,IAAA,CAAK,OAAA,CAAQ,KAAK,MAAM,CAAA;AACxB,IAAA,IAAI,IAAA,CAAK,OAAA,CAAQ,MAAA,GAAS,IAAA,CAAK,KAAA,EAAO;AACpC,MAAA,IAAA,CAAK,QAAQ,KAAA,EAAM;AAAA,IACrB;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,UAAA,GAA0B;AACxB,IAAA,OAAO,CAAC,GAAG,IAAA,CAAK,OAAO,CAAA;AAAA,EACzB;AAAA,EAEA,KAAA,GAAc;AACZ,IAAA,IAAA,CAAK,UAAU,EAAC;AAAA,EAClB;AACF;;;;"}
@@ -0,0 +1,75 @@
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 logger = require('../../types/logger.cjs');
12
+ const abstractHandler = require('./abstract-handler.cjs');
13
+ const lineFormatter = require('../formatter/line-formatter.cjs');
14
+
15
+ var __defProp = Object.defineProperty;
16
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
17
+ class StreamHandler extends abstractHandler.AbstractHandler {
18
+ static {
19
+ __name(this, "StreamHandler");
20
+ }
21
+ /**
22
+ * Stream for writing logs.
23
+ * @private
24
+ */
25
+ stream;
26
+ /**
27
+ * Creates a StreamHandler instance.
28
+ *
29
+ * @param {LogLevel} level - Minimum log level.
30
+ * @param options
31
+ * - `stream: Writable` - Stream to write to (e.g., `process.stdout`, `process.stderr`, `fs.WriteStream`)
32
+ * - `bubble?: boolean` - Determines whether the handler should bubble the record to the next handler.
33
+ */
34
+ constructor(level = logger.LogLevel.DEBUG, options) {
35
+ const opts = {
36
+ bubble: true,
37
+ ...options
38
+ };
39
+ super(level, opts.bubble);
40
+ this.stream = opts.stream;
41
+ this.setFormatter(new lineFormatter.LineFormatter());
42
+ }
43
+ /**
44
+ * @inheritDoc
45
+ */
46
+ async handle(record) {
47
+ try {
48
+ const formatter = this.getFormatter();
49
+ const message = formatter.format(record) + "\n";
50
+ this.stream.write(message);
51
+ } catch (error) {
52
+ console.error(`StreamHandler write error: ${error}`);
53
+ return false;
54
+ }
55
+ return true;
56
+ }
57
+ /**
58
+ * Closes the stream (if supported).
59
+ *
60
+ * @returns {Promise<void>}
61
+ */
62
+ async close() {
63
+ if (typeof this.stream.end === "function") {
64
+ return new Promise((resolve, reject) => {
65
+ this.stream.end((error) => {
66
+ if (error) reject(error);
67
+ else resolve();
68
+ });
69
+ });
70
+ }
71
+ }
72
+ }
73
+
74
+ exports.StreamHandler = StreamHandler;
75
+ //# sourceMappingURL=stream-handler.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-handler.cjs","sources":["../../../../src/logger/handler/stream-handler.ts"],"sourcesContent":["import type { Writable } from 'node:stream'\nimport type { Handler, HandlerOptions, LogRecord } from '../../types/logger'\nimport { LogLevel } from '../../types/logger'\nimport { AbstractHandler } from './abstract-handler'\nimport { LineFormatter } from '../formatter'\n\nexport interface StreamHandlerOptions extends HandlerOptions {\n stream: Writable\n}\n\n/**\n * Stream Handler\n *\n * Node.js stream handler for writing logs to streams.\n */\nexport class StreamHandler extends AbstractHandler implements Handler {\n /**\n * Stream for writing logs.\n * @private\n */\n private stream: Writable\n\n /**\n * Creates a StreamHandler instance.\n *\n * @param {LogLevel} level - Minimum log level.\n * @param options\n * - `stream: Writable` - Stream to write to (e.g., `process.stdout`, `process.stderr`, `fs.WriteStream`)\n * - `bubble?: boolean` - Determines whether the handler should bubble the record to the next handler.\n */\n constructor(\n level: LogLevel = LogLevel.DEBUG,\n options: StreamHandlerOptions\n ) {\n const opts = {\n bubble: true,\n ...options\n }\n super(level, opts.bubble)\n\n this.stream = opts.stream\n this.setFormatter(new LineFormatter())\n }\n\n /**\n * @inheritDoc\n */\n public override async handle(record: LogRecord): Promise<boolean> {\n try {\n const formatter = this.getFormatter()!\n const message = formatter.format(record) + '\\n'\n this.stream.write(message)\n } catch (error) {\n // If stream write fails, log to stderr\n console.error(`StreamHandler write error: ${error}`)\n return false\n }\n\n return true\n }\n\n /**\n * Closes the stream (if supported).\n *\n * @returns {Promise<void>}\n */\n public async close(): Promise<void> {\n if (typeof this.stream.end === 'function') {\n return new Promise((resolve, reject) => {\n this.stream.end((error?: Error | null) => {\n if (error) reject(error)\n else resolve()\n })\n })\n }\n }\n}\n"],"names":["AbstractHandler","LogLevel","LineFormatter"],"mappings":";;;;;;;;;;;;;;;;AAeO,MAAM,sBAAsBA,+BAAA,CAAmC;AAAA,EAftE;AAesE,IAAA,MAAA,CAAA,IAAA,EAAA,eAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAK5D,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUR,WAAA,CACE,KAAA,GAAkBC,eAAA,CAAS,KAAA,EAC3B,OAAA,EACA;AACA,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,MAAA,EAAQ,IAAA;AAAA,MACR,GAAG;AAAA,KACL;AACA,IAAA,KAAA,CAAM,KAAA,EAAO,KAAK,MAAM,CAAA;AAExB,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK,MAAA;AACnB,IAAA,IAAA,CAAK,YAAA,CAAa,IAAIC,2BAAA,EAAe,CAAA;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAsB,OAAO,MAAA,EAAqC;AAChE,IAAA,IAAI;AACF,MAAA,MAAM,SAAA,GAAY,KAAK,YAAA,EAAa;AACpC,MAAA,MAAM,OAAA,GAAU,SAAA,CAAU,MAAA,CAAO,MAAM,CAAA,GAAI,IAAA;AAC3C,MAAA,IAAA,CAAK,MAAA,CAAO,MAAM,OAAO,CAAA;AAAA,IAC3B,SAAS,KAAA,EAAO;AAEd,MAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,2BAAA,EAA8B,KAAK,CAAA,CAAE,CAAA;AACnD,MAAA,OAAO,KAAA;AAAA,IACT;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAa,KAAA,GAAuB;AAClC,IAAA,IAAI,OAAO,IAAA,CAAK,MAAA,CAAO,GAAA,KAAQ,UAAA,EAAY;AACzC,MAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAA,KAAW;AACtC,QAAA,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAyB;AACxC,UAAA,IAAI,KAAA,SAAc,KAAK,CAAA;AAAA,eAClB,OAAA,EAAQ;AAAA,QACf,CAAC,CAAA;AAAA,MACH,CAAC,CAAA;AAAA,IACH;AAAA,EACF;AACF;;;;"}
@@ -0,0 +1,159 @@
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 logger = require('../../types/logger.cjs');
12
+ const abstractHandler = require('./abstract-handler.cjs');
13
+ const environment = require('../../tools/environment.cjs');
14
+ const telegramFormatter = require('../formatter/telegram-formatter.cjs');
15
+
16
+ var __defProp = Object.defineProperty;
17
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
18
+ class TelegramHandler extends abstractHandler.AbstractHandler {
19
+ static {
20
+ __name(this, "TelegramHandler");
21
+ }
22
+ botToken;
23
+ chatId;
24
+ parseMode;
25
+ disableNotification;
26
+ disableWebPagePreview;
27
+ environment;
28
+ warnInBrowser;
29
+ constructor(level = logger.LogLevel.ERROR, options) {
30
+ super(level, options.bubble);
31
+ if (!options.botToken) {
32
+ throw new Error("botToken is required for TelegramHandler");
33
+ }
34
+ if (!options.chatId) {
35
+ throw new Error("chatId is required for TelegramHandler");
36
+ }
37
+ this.botToken = options.botToken;
38
+ this.chatId = options.chatId;
39
+ this.parseMode = options.parseMode || "HTML";
40
+ this.disableNotification = options.disableNotification || false;
41
+ this.disableWebPagePreview = options.disableWebPagePreview || true;
42
+ this.environment = environment.getEnvironment();
43
+ this.warnInBrowser = options.warnInBrowser !== false;
44
+ this.setFormatter(new telegramFormatter.TelegramFormatter(this.parseMode === "HTML"));
45
+ }
46
+ /**
47
+ * @inheritDoc
48
+ */
49
+ async handle(record) {
50
+ const formatter = this.getFormatter();
51
+ if (!formatter) {
52
+ console.error("TelegramHandler: No formatter set");
53
+ return false;
54
+ }
55
+ const message = formatter.format(record);
56
+ if (this.environment === environment.Environment.BROWSE) {
57
+ return this._handleInBrowser(message, record);
58
+ } else if (this.environment === environment.Environment.NODE) {
59
+ return this._handleInNode(message, record);
60
+ }
61
+ console.warn("TelegramHandler: Unknown environment, using fallback");
62
+ return this._handleFallback(message);
63
+ }
64
+ /**
65
+ * Processing in the browser
66
+ */
67
+ async _handleInBrowser(_message, record) {
68
+ if (this.warnInBrowser) {
69
+ const warningMessage = `\u26A0\uFE0F TelegramHandler: Cannot send logs to Telegram from browser environment.
70
+ This would expose your bot token. Consider disabling this handler in browser.
71
+ Log message: ${record.message}
72
+ If you need to send logs from browser, use a proxy server.`;
73
+ console.warn(warningMessage);
74
+ const style = "color: #FF9800; background: #FFF3E0; padding: 8px; border: 1px solid #FFB74D; border-radius: 4px;";
75
+ console.log("%cTelegram Handler Warning", style, warningMessage);
76
+ }
77
+ return false;
78
+ }
79
+ /**
80
+ * Processing in Node.js
81
+ */
82
+ async _handleInNode(message, _record) {
83
+ try {
84
+ const url = `https://api.telegram.org/bot${this.botToken}/sendMessage`;
85
+ const config = JSON.stringify({
86
+ chat_id: this.chatId,
87
+ text: message,
88
+ parse_mode: this.parseMode,
89
+ disable_notification: this.disableNotification,
90
+ disable_web_page_preview: this.disableWebPagePreview
91
+ });
92
+ const response = await fetch(url, {
93
+ method: "POST",
94
+ headers: {
95
+ "Content-Type": "application/json"
96
+ },
97
+ body: config
98
+ });
99
+ const result = await response.json();
100
+ if (!result.ok) {
101
+ console.error("TelegramHandler: Failed to send message", result);
102
+ return false;
103
+ }
104
+ return true;
105
+ } catch (error) {
106
+ console.error("TelegramHandler: Error sending message", error);
107
+ return false;
108
+ }
109
+ }
110
+ /**
111
+ * Fallback processing for unknown environments
112
+ */
113
+ async _handleFallback(message) {
114
+ console.log("TelegramHandler (fallback):", message);
115
+ return false;
116
+ }
117
+ updateSettings(options) {
118
+ if (options.botToken) this.botToken = options.botToken;
119
+ if (options.chatId) this.chatId = options.chatId;
120
+ if (options.parseMode) this.parseMode = options.parseMode;
121
+ if (options.disableNotification !== void 0) {
122
+ this.disableNotification = options.disableNotification;
123
+ }
124
+ if (options.disableWebPagePreview !== void 0) {
125
+ this.disableWebPagePreview = options.disableWebPagePreview;
126
+ }
127
+ if (options.warnInBrowser !== void 0) {
128
+ this.warnInBrowser = options.warnInBrowser;
129
+ }
130
+ return this;
131
+ }
132
+ /**
133
+ * Get current environment
134
+ */
135
+ getEnvironment() {
136
+ return this.environment;
137
+ }
138
+ /**
139
+ * Check if the Telegram API is available
140
+ */
141
+ async testConnection() {
142
+ if (this.environment === "browser") {
143
+ console.warn("TelegramHandler: Cannot test connection in browser environment");
144
+ return false;
145
+ }
146
+ try {
147
+ const url = `https://api.telegram.org/bot${this.botToken}/getMe`;
148
+ const response = await fetch(url);
149
+ const result = await response.json();
150
+ return result.ok === true;
151
+ } catch (error) {
152
+ console.error("TelegramHandler: Test connection failed", error);
153
+ return false;
154
+ }
155
+ }
156
+ }
157
+
158
+ exports.TelegramHandler = TelegramHandler;
159
+ //# sourceMappingURL=telegram-handler.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telegram-handler.cjs","sources":["../../../../src/logger/handler/telegram-handler.ts"],"sourcesContent":["import type { Handler, HandlerOptions, LogRecord } from '../../types/logger'\nimport { LogLevel } from '../../types/logger'\nimport { AbstractHandler } from './abstract-handler'\nimport { TelegramFormatter } from '../formatter'\nimport { Environment, getEnvironment } from '../../tools/environment'\n\nexport interface TelegramHandlerOptions extends HandlerOptions {\n botToken: string\n chatId: string | number\n parseMode?: 'HTML' | 'Markdown' | 'MarkdownV2'\n disableNotification?: boolean\n disableWebPagePreview?: boolean\n useStyles?: boolean\n warnInBrowser?: boolean\n}\n\n/**\n * Telegram Handler\n *\n * Sends logs to Telegram chat.\n * The browser displays a warning in the console.\n * In Node.js, sends a message via the Telegram Bot API.\n */\nexport class TelegramHandler extends AbstractHandler implements Handler {\n protected botToken: string\n protected chatId: string | number\n protected parseMode: 'HTML' | 'Markdown' | 'MarkdownV2'\n protected disableNotification: boolean\n protected disableWebPagePreview: boolean\n protected readonly environment: Environment\n protected warnInBrowser: boolean\n\n constructor(\n level: LogLevel = LogLevel.ERROR,\n options: TelegramHandlerOptions\n ) {\n super(level, options.bubble)\n\n if (!options.botToken) {\n throw new Error('botToken is required for TelegramHandler')\n }\n\n if (!options.chatId) {\n throw new Error('chatId is required for TelegramHandler')\n }\n\n this.botToken = options.botToken\n this.chatId = options.chatId\n this.parseMode = options.parseMode || 'HTML'\n this.disableNotification = options.disableNotification || false\n this.disableWebPagePreview = options.disableWebPagePreview || true\n this.environment = getEnvironment()\n this.warnInBrowser = options.warnInBrowser !== false // By default, we warn you in the browser\n\n // Set the default formatter\n this.setFormatter(new TelegramFormatter(this.parseMode === 'HTML'))\n }\n\n /**\n * @inheritDoc\n */\n public override async handle(record: LogRecord): Promise<boolean> {\n const formatter = this.getFormatter()\n if (!formatter) {\n console.error('TelegramHandler: No formatter set')\n return false\n }\n\n const message = formatter.format(record)\n\n // Depending on the environment, we process it differently.\n if (this.environment === Environment.BROWSE) {\n return this._handleInBrowser(message, record)\n } else if (this.environment === Environment.NODE) {\n return this._handleInNode(message, record)\n }\n\n console.warn('TelegramHandler: Unknown environment, using fallback')\n return this._handleFallback(message)\n }\n\n /**\n * Processing in the browser\n */\n protected async _handleInBrowser(_message: string, record: LogRecord): Promise<boolean> {\n if (this.warnInBrowser) {\n const warningMessage\n = `⚠️ TelegramHandler: Cannot send logs to Telegram from browser environment.\\n`\n + `This would expose your bot token. Consider disabling this handler in browser.\\n`\n + `Log message: ${record.message}\\n`\n + `If you need to send logs from browser, use a proxy server.`\n\n console.warn(warningMessage)\n\n // We also display a styled message for the developer\n const style = 'color: #FF9800; background: #FFF3E0; padding: 8px; border: 1px solid #FFB74D; border-radius: 4px;'\n console.log('%cTelegram Handler Warning', style, warningMessage)\n }\n\n // In the browser, we always return false, since the message was not sent.\n return false\n }\n\n /**\n * Processing in Node.js\n */\n protected async _handleInNode(message: string, _record: LogRecord): Promise<boolean> {\n try {\n const url = `https://api.telegram.org/bot${this.botToken}/sendMessage`\n const config = JSON.stringify({\n chat_id: this.chatId,\n text: message,\n parse_mode: this.parseMode,\n disable_notification: this.disableNotification,\n disable_web_page_preview: this.disableWebPagePreview\n })\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: config\n })\n\n const result = await response.json()\n\n if (!result.ok) {\n console.error('TelegramHandler: Failed to send message', result)\n return false\n }\n\n return true\n } catch (error) {\n console.error('TelegramHandler: Error sending message', error)\n return false\n }\n }\n\n /**\n * Fallback processing for unknown environments\n */\n protected async _handleFallback(message: string): Promise<boolean> {\n console.log('TelegramHandler (fallback):', message)\n return false\n }\n\n public updateSettings(options: Partial<TelegramHandlerOptions>): this {\n if (options.botToken) this.botToken = options.botToken\n if (options.chatId) this.chatId = options.chatId\n if (options.parseMode) this.parseMode = options.parseMode\n if (options.disableNotification !== undefined) {\n this.disableNotification = options.disableNotification\n }\n if (options.disableWebPagePreview !== undefined) {\n this.disableWebPagePreview = options.disableWebPagePreview\n }\n if (options.warnInBrowser !== undefined) {\n this.warnInBrowser = options.warnInBrowser\n }\n return this\n }\n\n /**\n * Get current environment\n */\n public getEnvironment(): Environment {\n return this.environment\n }\n\n /**\n * Check if the Telegram API is available\n */\n public async testConnection(): Promise<boolean> {\n if (this.environment === 'browser') {\n console.warn('TelegramHandler: Cannot test connection in browser environment')\n return false\n }\n\n try {\n const url = `https://api.telegram.org/bot${this.botToken}/getMe`\n const response = await fetch(url)\n const result = await response.json()\n return result.ok === true\n } catch (error) {\n console.error('TelegramHandler: Test connection failed', error)\n return false\n }\n }\n}\n"],"names":["AbstractHandler","LogLevel","getEnvironment","TelegramFormatter","Environment"],"mappings":"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"}