@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
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @package @bitrix24/b24jssdk
3
- * @version 1.2.0
3
+ * @version 2.0.0
4
4
  * @copyright (c) 2026 Bitrix24
5
5
  * @license MIT
6
6
  * @see https://github.com/bitrix24/b24jssdk
@@ -9,12 +9,13 @@
9
9
  import { Type } from '../tools/type.mjs';
10
10
  import { Text } from '../tools/text.mjs';
11
11
  import { Browser } from '../tools/browser.mjs';
12
+ import { REDACTED_PLACEHOLDER, redactSensitiveUrl, redactSensitiveParams } from '../core/http/redact.mjs';
12
13
  import { StorageManager } from './storage-manager.mjs';
13
14
  import { JsonRpc } from './json-rpc.mjs';
14
15
  import { SharedConfig } from './shared-config.mjs';
15
16
  import { ChannelManager } from './channel-manager.mjs';
16
17
  import { Receiver, IncomingMessage, RequestBatch, ResponseBatch } from './protobuf/index.mjs';
17
- import { ConnectionType, PullStatus, CloseReasons, SubscriptionType, LsKeys, RpcMethod, ServerMode, SenderType, SystemCommands } from '../types/pull.mjs';
18
+ import { ConnectionType, PullStatus, CloseReasons, LsKeys, SubscriptionType, RpcMethod, ServerMode, SenderType, SystemCommands } from '../types/pull.mjs';
18
19
  import { WebSocketConnector } from './web-socket-connector.mjs';
19
20
  import { LongPollingConnector } from './long-polling-connector.mjs';
20
21
  import { LoggerFactory } from '../logger/logger-factory.mjs';
@@ -101,9 +102,15 @@ class PullClient {
101
102
  _pingWaitTimeout = null;
102
103
  // manual stop workaround ////
103
104
  _isManualDisconnect = false;
105
+ // set once destroy() has run; gates reconnect / watch / online so a torn-down
106
+ // client never schedules new work (#141) ////
107
+ _disposed = false;
104
108
  _loggingEnabled = false;
105
- // bound event handlers ////
109
+ // bound event handlers, stored so they can be removed in destroy() (#141) ////
106
110
  _onPingTimeoutHandler;
111
+ _onBeforeUnloadHandler;
112
+ _onOfflineHandler;
113
+ _onOnlineHandler;
107
114
  // [userId] => array of callbacks
108
115
  _userStatusCallbacks = {};
109
116
  _connectPromise = null;
@@ -164,6 +171,9 @@ class PullClient {
164
171
  });
165
172
  this._loggingEnabled = this._sharedConfig.isLoggingEnabled();
166
173
  this._onPingTimeoutHandler = this.onPingTimeout.bind(this);
174
+ this._onBeforeUnloadHandler = this.onBeforeUnload.bind(this);
175
+ this._onOfflineHandler = this.onOffline.bind(this);
176
+ this._onOnlineHandler = this.onOnline.bind(this);
167
177
  }
168
178
  setLogger(logger) {
169
179
  this._logger = logger;
@@ -177,11 +187,29 @@ class PullClient {
177
187
  getLogger() {
178
188
  return this._logger;
179
189
  }
190
+ /**
191
+ * Terminal teardown: removes the window listeners, cancels every pending timer,
192
+ * persists the session for a quick re-init, and disconnects. Irreversible — a
193
+ * destroyed client schedules no further work and `start()` rejects with
194
+ * `PULL_DISPOSED`; create a new instance to reconnect.
195
+ */
180
196
  destroy() {
197
+ this._disposed = true;
181
198
  this.stop(CloseReasons.NORMAL_CLOSURE, "manual stop");
182
- this.onBeforeUnload();
199
+ if (typeof window !== "undefined") {
200
+ window.removeEventListener("beforeunload", this._onBeforeUnloadHandler);
201
+ window.removeEventListener("offline", this._onOfflineHandler);
202
+ window.removeEventListener("online", this._onOnlineHandler);
203
+ }
204
+ if (this._storage) {
205
+ this._storage.remove(LsKeys.PullConfig);
206
+ }
207
+ this.persistSession();
183
208
  }
184
209
  init() {
210
+ if (this._disposed) {
211
+ return;
212
+ }
185
213
  this._connectors.webSocket = new WebSocketConnector({
186
214
  parent: this,
187
215
  onOpen: this.onWebSocketOpen.bind(this),
@@ -197,9 +225,11 @@ class PullClient {
197
225
  onError: this.onLongPollingError.bind(this)
198
226
  });
199
227
  this._connectionType = this.isWebSocketAllowed() ? ConnectionType.WebSocket : ConnectionType.LongPolling;
200
- window.addEventListener("beforeunload", this.onBeforeUnload.bind(this));
201
- window.addEventListener("offline", this.onOffline.bind(this));
202
- window.addEventListener("online", this.onOnline.bind(this));
228
+ if (typeof window !== "undefined") {
229
+ window.addEventListener("beforeunload", this._onBeforeUnloadHandler);
230
+ window.addEventListener("offline", this._onOfflineHandler);
231
+ window.addEventListener("online", this._onOnlineHandler);
232
+ }
203
233
  this._jsonRpcAdapter = new JsonRpc({
204
234
  connector: this._connectors.webSocket,
205
235
  handlers: {
@@ -351,7 +381,8 @@ class PullClient {
351
381
  if (this._debug && this._context !== "master") {
352
382
  this.getLogger().warning(
353
383
  `${Text.getDateForLog()}: Pull.attachCommandHandler: result of handler.getModuleId() is not a string`,
354
- { data }
384
+ // data.params / data.extra are app-defined and may carry a credential key (#43)
385
+ redactSensitiveParams({ data })
355
386
  );
356
387
  }
357
388
  method(data.params, data.extra, data.command);
@@ -360,9 +391,21 @@ class PullClient {
360
391
  });
361
392
  }
362
393
  /**
394
+ * Connects the client and begins receiving events.
395
+ *
363
396
  * @param config
397
+ * @throws Rejects with `{ ex: { error: 'PULL_DISPOSED' } }` when called after
398
+ * `destroy()` — a destroyed client cannot be restarted; create a new instance.
364
399
  */
365
400
  async start(config = null) {
401
+ if (this._disposed) {
402
+ return Promise.reject({
403
+ ex: {
404
+ error: "PULL_DISPOSED",
405
+ error_description: "PullClient has been destroyed; create a new instance"
406
+ }
407
+ });
408
+ }
366
409
  let allowConfigCaching = true;
367
410
  if (this.isConnected()) {
368
411
  return Promise.resolve(true);
@@ -429,6 +472,9 @@ class PullClient {
429
472
  * @param disconnectReason
430
473
  */
431
474
  restart(disconnectCode = CloseReasons.NORMAL_CLOSURE, disconnectReason = "manual restart") {
475
+ if (this._disposed) {
476
+ return;
477
+ }
432
478
  if (this._restartTimeout) {
433
479
  clearTimeout(this._restartTimeout);
434
480
  this._restartTimeout = null;
@@ -471,6 +517,34 @@ class PullClient {
471
517
  stop(disconnectCode = CloseReasons.NORMAL_CLOSURE, disconnectReason = "manual stop") {
472
518
  this.disconnect(disconnectCode, disconnectReason);
473
519
  this.stopCheckConfig();
520
+ this.clearAllTimers();
521
+ }
522
+ // Cancel every pending timer so a stopped/destroyed client leaves nothing
523
+ // running. Previously only _checkInterval was cleared, so the other six timers
524
+ // (including the self-rescheduling watch-extend) survived teardown (#141).
525
+ clearAllTimers() {
526
+ for (const timer of [
527
+ this._reconnectTimeout,
528
+ this._restartTimeout,
529
+ this._restoreWebSocketTimeout,
530
+ this._offlineTimeout,
531
+ this._watchUpdateTimeout,
532
+ this._pingWaitTimeout
533
+ ]) {
534
+ if (timer) {
535
+ clearTimeout(timer);
536
+ }
537
+ }
538
+ if (this._checkInterval) {
539
+ clearInterval(this._checkInterval);
540
+ }
541
+ this._reconnectTimeout = null;
542
+ this._restartTimeout = null;
543
+ this._restoreWebSocketTimeout = null;
544
+ this._offlineTimeout = null;
545
+ this._watchUpdateTimeout = null;
546
+ this._pingWaitTimeout = null;
547
+ this._checkInterval = null;
474
548
  }
475
549
  reconnect(disconnectCode, disconnectReason, delay = 1) {
476
550
  this.disconnect(disconnectCode, disconnectReason);
@@ -689,7 +763,10 @@ class PullClient {
689
763
  let configDump;
690
764
  if (this._config && this._config.channels) {
691
765
  configDump = {
692
- ChannelID: this._config.channels.private?.id || "n/a",
766
+ // The private channel id is a subscription secret — mask it here too, not
767
+ // just in `Path` below, so the debug dump never surfaces it (#148). Expiry
768
+ // timestamps are non-sensitive and kept for diagnostics.
769
+ ChannelID: this._config.channels.private?.id ? REDACTED_PLACEHOLDER : "n/a",
693
770
  ChannelDie: this._config.channels.private?.end || "n/a",
694
771
  ChannelDieShared: this._config.channels.shared?.end || "n/a"
695
772
  };
@@ -706,6 +783,7 @@ class PullClient {
706
783
  websocketMode = this._connectors.webSocket?.socket?.url.search("binaryMode=true") != -1 ? "protobuf" : "text";
707
784
  }
708
785
  }
786
+ const connectionPath = this.connector?.connectionPath;
709
787
  return {
710
788
  "UserId": this._userId + (this._userId > 0 ? "" : "(guest)"),
711
789
  "Guest userId": this._guestMode && this._guestUserId !== 0 ? this._guestUserId : "-",
@@ -717,7 +795,9 @@ class PullClient {
717
795
  "WebSocket mode": websocketMode,
718
796
  "Try connect": this._reconnectTimeout ? "Y" : "N",
719
797
  "Try number": this._connectionAttempt,
720
- "Path": this.connector?.connectionPath || "-",
798
+ // Mask the push JWT (`token`) and private `CHANNEL_ID`s before exposing
799
+ // the connection path through this developer-facing debug dump (#148).
800
+ "Path": connectionPath ? redactSensitiveUrl(connectionPath, ["CHANNEL_ID"]) : "-",
721
801
  ...configDump,
722
802
  "Last message": this._session.mid || "-",
723
803
  "Session history": this._session.history,
@@ -748,13 +828,10 @@ class PullClient {
748
828
  params["token"] = this._config?.jwt;
749
829
  } else {
750
830
  const channels = [];
751
- if (this._config?.channels?.private) {
752
- channels.push(this._config.channels.private?.id || "");
753
- }
754
- if (this._config?.channels.private?.id) {
831
+ if (this._config?.channels?.private?.id) {
755
832
  channels.push(this._config.channels.private.id);
756
833
  }
757
- if (this._config?.channels.shared?.id) {
834
+ if (this._config?.channels?.shared?.id) {
758
835
  channels.push(this._config.channels.shared.id);
759
836
  }
760
837
  if (channels.length === 0) {
@@ -1003,7 +1080,8 @@ class PullClient {
1003
1080
  this.getLogger().warning("PULL ERROR", {
1004
1081
  errorType: "broadcastMessages execute error",
1005
1082
  errorEvent: error,
1006
- message
1083
+ // app-defined message.params / extra may carry a credential key (#43)
1084
+ message: redactSensitiveParams(message)
1007
1085
  });
1008
1086
  }
1009
1087
  if (message.extra && message.extra.revision_web) {
@@ -1233,6 +1311,9 @@ class PullClient {
1233
1311
  return true;
1234
1312
  }
1235
1313
  startCheckConfig() {
1314
+ if (this._disposed) {
1315
+ return;
1316
+ }
1236
1317
  if (this._checkInterval) {
1237
1318
  clearInterval(this._checkInterval);
1238
1319
  this._checkInterval = null;
@@ -1273,7 +1354,7 @@ class PullClient {
1273
1354
  this.setPublicIds(Object.values(config.publicChannels));
1274
1355
  }
1275
1356
  this._configTimestamp = Number(config.server.config_timestamp);
1276
- if (this._storage && allowCaching) {
1357
+ if (this._storage && allowCaching && !this._disposed) {
1277
1358
  try {
1278
1359
  this._storage.set(LsKeys.PullConfig, config);
1279
1360
  } catch (error) {
@@ -1334,7 +1415,7 @@ class PullClient {
1334
1415
  * @param connectionDelay
1335
1416
  */
1336
1417
  scheduleReconnect(connectionDelay = 0) {
1337
- if (!this._enabled) {
1418
+ if (this._disposed || !this._enabled) {
1338
1419
  return;
1339
1420
  }
1340
1421
  if (!connectionDelay) {
@@ -1358,6 +1439,9 @@ class PullClient {
1358
1439
  }, connectionDelay * 1e3);
1359
1440
  }
1360
1441
  scheduleRestoreWebSocketConnection() {
1442
+ if (this._disposed) {
1443
+ return;
1444
+ }
1361
1445
  this.logToConsole(
1362
1446
  `Pull: scheduling restoration of websocket connection in ${RESTORE_WEBSOCKET_TIMEOUT} seconds`
1363
1447
  );
@@ -1373,7 +1457,7 @@ class PullClient {
1373
1457
  * @returns {Promise}
1374
1458
  */
1375
1459
  async connect() {
1376
- if (!this._enabled) {
1460
+ if (this._disposed || !this._enabled) {
1377
1461
  return Promise.reject();
1378
1462
  }
1379
1463
  if (this.connector?.connected) {
@@ -1399,6 +1483,9 @@ class PullClient {
1399
1483
  * @param restartDelay
1400
1484
  */
1401
1485
  scheduleRestart(disconnectCode, disconnectReason, restartDelay = 0) {
1486
+ if (this._disposed) {
1487
+ return;
1488
+ }
1402
1489
  if (this._restartTimeout) {
1403
1490
  clearTimeout(this._restartTimeout);
1404
1491
  this._restartTimeout = null;
@@ -1481,13 +1568,13 @@ class PullClient {
1481
1568
  if (typeChanel === "private" && this._config?.channels?.private) {
1482
1569
  this._config.channels.private = message.params.new_channel;
1483
1570
  this.logToConsole(
1484
- `Pull: new config for ${message.params.channel.type} channel set: ${this._config.channels.private}`
1571
+ `Pull: new config for ${message.params.channel.type} channel set: [updated]`
1485
1572
  );
1486
1573
  }
1487
1574
  if (typeChanel === "shared" && this._config?.channels?.shared) {
1488
1575
  this._config.channels.shared = message.params.new_channel;
1489
1576
  this.logToConsole(
1490
- `Pull: new config for ${message.params.channel.type} channel set: ${this._config.channels.shared}`
1577
+ `Pull: new config for ${message.params.channel.type} channel set: [updated]`
1491
1578
  );
1492
1579
  }
1493
1580
  this.reconnect(CloseReasons.CONFIG_REPLACED, "config was replaced");
@@ -1744,7 +1831,10 @@ class PullClient {
1744
1831
  if (dataArray === null) {
1745
1832
  this.getLogger().warning("PULL ERROR", {
1746
1833
  errorType: "parseResponse error parsing message",
1747
- dataString: pullEvent
1834
+ // The frame failed the NGINX-delimiter match, so its content is
1835
+ // unparseable anyway and could carry a credential (e.g. a channel
1836
+ // `signature`); log only its size, never the bytes (#43).
1837
+ byteLength: pullEvent.length
1748
1838
  });
1749
1839
  return [];
1750
1840
  }
@@ -1797,15 +1887,28 @@ class PullClient {
1797
1887
  // endregion ////
1798
1888
  // region Events.Status /////
1799
1889
  onOffline() {
1890
+ if (this._disposed) {
1891
+ return;
1892
+ }
1800
1893
  this.disconnect(CloseReasons.NORMAL_CLOSURE, "offline");
1801
1894
  }
1802
1895
  onOnline() {
1896
+ if (this._disposed) {
1897
+ return;
1898
+ }
1803
1899
  this.connect().catch((error) => {
1804
1900
  this.getLogger().error("onOnline", { error });
1805
1901
  });
1806
1902
  }
1807
1903
  onBeforeUnload() {
1808
1904
  this._unloading = true;
1905
+ this.persistSession();
1906
+ this.scheduleReconnect(15);
1907
+ }
1908
+ // Persist the current session (with a short TTL) so a quick reload / re-init can
1909
+ // resume it. Shared by onBeforeUnload and destroy() — destroy() saves WITHOUT
1910
+ // scheduling a reconnect (#141).
1911
+ persistSession() {
1809
1912
  const session = Type.clone(this.session);
1810
1913
  session.ttl = Date.now() + LS_SESSION_CACHE_TIME * 1e3;
1811
1914
  if (this._storage) {
@@ -1822,7 +1925,6 @@ class PullClient {
1822
1925
  );
1823
1926
  }
1824
1927
  }
1825
- this.scheduleReconnect(15);
1826
1928
  }
1827
1929
  // endregion ////
1828
1930
  // region PullStatus ////
@@ -1831,6 +1933,9 @@ class PullClient {
1831
1933
  * @param delay
1832
1934
  */
1833
1935
  sendPullStatusDelayed(status, delay) {
1936
+ if (this._disposed) {
1937
+ return;
1938
+ }
1834
1939
  if (this._offlineTimeout) {
1835
1940
  clearTimeout(this._offlineTimeout);
1836
1941
  this._offlineTimeout = null;
@@ -1876,6 +1981,9 @@ class PullClient {
1876
1981
  * @param force
1877
1982
  */
1878
1983
  updateWatch(force = false) {
1984
+ if (this._disposed) {
1985
+ return;
1986
+ }
1879
1987
  if (this._watchUpdateTimeout) {
1880
1988
  clearTimeout(this._watchUpdateTimeout);
1881
1989
  this._watchUpdateTimeout = null;
@@ -1916,6 +2024,9 @@ class PullClient {
1916
2024
  this.connector?.send(JSON_RPC_PONG);
1917
2025
  }
1918
2026
  updatePingWaitTimeout() {
2027
+ if (this._disposed) {
2028
+ return;
2029
+ }
1919
2030
  if (this._pingWaitTimeout) {
1920
2031
  clearTimeout(this._pingWaitTimeout);
1921
2032
  this._pingWaitTimeout = null;
@@ -1933,7 +2044,7 @@ class PullClient {
1933
2044
  }
1934
2045
  onPingTimeout() {
1935
2046
  this._pingWaitTimeout = null;
1936
- if (!this._enabled || !this.isConnected()) {
2047
+ if (this._disposed || !this._enabled || !this.isConnected()) {
1937
2048
  return;
1938
2049
  }
1939
2050
  this.getLogger().warning(`No pings are received in ${PING_TIMEOUT * 2} seconds. Reconnecting`);
@@ -1994,30 +2105,30 @@ class PullClient {
1994
2105
  if (message.extra?.sender && message.extra.sender.type === SenderType.Client) {
1995
2106
  this.getLogger().info(
1996
2107
  `onPullClientEvent-${message.module_id}`,
1997
- {
2108
+ redactSensitiveParams({
1998
2109
  command: message.command,
1999
2110
  params: message.params,
2000
2111
  extra: message.extra
2001
- }
2112
+ })
2002
2113
  );
2003
2114
  } else if (message.module_id == "online") {
2004
2115
  this.getLogger().info(
2005
2116
  `onPullOnlineEvent`,
2006
- {
2117
+ redactSensitiveParams({
2007
2118
  command: message.command,
2008
2119
  params: message.params,
2009
2120
  extra: message.extra
2010
- }
2121
+ })
2011
2122
  );
2012
2123
  } else {
2013
2124
  this.getLogger().info(
2014
2125
  `onPullEvent`,
2015
- {
2126
+ redactSensitiveParams({
2016
2127
  moduleId: message.module_id,
2017
2128
  command: message.command,
2018
2129
  params: message.params,
2019
2130
  extra: message.extra
2020
- }
2131
+ })
2021
2132
  );
2022
2133
  }
2023
2134
  }