@bitrix24/b24jssdk 0.5.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (258) hide show
  1. package/README-AI.md +2 -1
  2. package/dist/esm/_virtual/_commonjsHelpers.mjs +16 -0
  3. package/dist/esm/_virtual/_commonjsHelpers.mjs.map +1 -0
  4. package/dist/esm/_virtual/protobuf.mjs +16 -0
  5. package/dist/esm/_virtual/protobuf.mjs.map +1 -0
  6. package/dist/esm/_virtual/protobuf2.mjs +12 -0
  7. package/dist/esm/_virtual/protobuf2.mjs.map +1 -0
  8. package/dist/esm/core/abstract-b24.mjs +355 -0
  9. package/dist/esm/core/abstract-b24.mjs.map +1 -0
  10. package/dist/esm/core/actions/abstract-action.mjs +24 -0
  11. package/dist/esm/core/actions/abstract-action.mjs.map +1 -0
  12. package/dist/esm/core/actions/abstract-batch.mjs +95 -0
  13. package/dist/esm/core/actions/abstract-batch.mjs.map +1 -0
  14. package/dist/esm/core/actions/manager.mjs +53 -0
  15. package/dist/esm/core/actions/manager.mjs.map +1 -0
  16. package/dist/esm/core/actions/v2/batch-by-chunk.mjs +92 -0
  17. package/dist/esm/core/actions/v2/batch-by-chunk.mjs.map +1 -0
  18. package/dist/esm/core/actions/v2/batch.mjs +126 -0
  19. package/dist/esm/core/actions/v2/batch.mjs.map +1 -0
  20. package/dist/esm/core/actions/v2/call-list.mjs +131 -0
  21. package/dist/esm/core/actions/v2/call-list.mjs.map +1 -0
  22. package/dist/esm/core/actions/v2/call.mjs +68 -0
  23. package/dist/esm/core/actions/v2/call.mjs.map +1 -0
  24. package/dist/esm/core/actions/v2/fetch-list.mjs +132 -0
  25. package/dist/esm/core/actions/v2/fetch-list.mjs.map +1 -0
  26. package/dist/esm/core/actions/v2/manager-v2.mjs +74 -0
  27. package/dist/esm/core/actions/v2/manager-v2.mjs.map +1 -0
  28. package/dist/esm/core/actions/v3/batch-by-chunk.mjs +91 -0
  29. package/dist/esm/core/actions/v3/batch-by-chunk.mjs.map +1 -0
  30. package/dist/esm/core/actions/v3/batch.mjs +129 -0
  31. package/dist/esm/core/actions/v3/batch.mjs.map +1 -0
  32. package/dist/esm/core/actions/v3/call-list.mjs +127 -0
  33. package/dist/esm/core/actions/v3/call-list.mjs.map +1 -0
  34. package/dist/esm/core/actions/v3/call.mjs +58 -0
  35. package/dist/esm/core/actions/v3/call.mjs.map +1 -0
  36. package/dist/esm/core/actions/v3/fetch-list.mjs +125 -0
  37. package/dist/esm/core/actions/v3/fetch-list.mjs.map +1 -0
  38. package/dist/esm/core/actions/v3/manager-v3.mjs +74 -0
  39. package/dist/esm/core/actions/v3/manager-v3.mjs.map +1 -0
  40. package/dist/esm/core/http/abstract-http.mjs +563 -0
  41. package/dist/esm/core/http/abstract-http.mjs.map +1 -0
  42. package/dist/esm/core/http/ajax-error.mjs +107 -0
  43. package/dist/esm/core/http/ajax-error.mjs.map +1 -0
  44. package/dist/esm/core/http/ajax-result.mjs +176 -0
  45. package/dist/esm/core/http/ajax-result.mjs.map +1 -0
  46. package/dist/esm/core/http/limiters/adaptive-delayer.mjs +135 -0
  47. package/dist/esm/core/http/limiters/adaptive-delayer.mjs.map +1 -0
  48. package/dist/esm/core/http/limiters/manager.mjs +309 -0
  49. package/dist/esm/core/http/limiters/manager.mjs.map +1 -0
  50. package/dist/esm/core/http/limiters/operating-limiter.mjs +171 -0
  51. package/dist/esm/core/http/limiters/operating-limiter.mjs.map +1 -0
  52. package/dist/esm/core/http/limiters/params-factory.mjs +121 -0
  53. package/dist/esm/core/http/limiters/params-factory.mjs.map +1 -0
  54. package/dist/esm/core/http/limiters/rate-limiter.mjs +402 -0
  55. package/dist/esm/core/http/limiters/rate-limiter.mjs.map +1 -0
  56. package/dist/esm/core/http/v2.mjs +100 -0
  57. package/dist/esm/core/http/v2.mjs.map +1 -0
  58. package/dist/esm/core/http/v3.mjs +94 -0
  59. package/dist/esm/core/http/v3.mjs.map +1 -0
  60. package/dist/esm/core/interaction/batch/abstract-interaction-batch.mjs +69 -0
  61. package/dist/esm/core/interaction/batch/abstract-interaction-batch.mjs.map +1 -0
  62. package/dist/esm/core/interaction/batch/parse-row.mjs +67 -0
  63. package/dist/esm/core/interaction/batch/parse-row.mjs.map +1 -0
  64. package/dist/esm/core/interaction/batch/processing/interface-strategy.mjs +42 -0
  65. package/dist/esm/core/interaction/batch/processing/interface-strategy.mjs.map +1 -0
  66. package/dist/esm/core/interaction/batch/processing/v2/abstract-processing.mjs +121 -0
  67. package/dist/esm/core/interaction/batch/processing/v2/abstract-processing.mjs.map +1 -0
  68. package/dist/esm/core/interaction/batch/processing/v2/as-array.mjs +32 -0
  69. package/dist/esm/core/interaction/batch/processing/v2/as-array.mjs.map +1 -0
  70. package/dist/esm/core/interaction/batch/processing/v2/as-object.mjs +32 -0
  71. package/dist/esm/core/interaction/batch/processing/v2/as-object.mjs.map +1 -0
  72. package/dist/esm/core/interaction/batch/processing/v3/abstract-processing.mjs +118 -0
  73. package/dist/esm/core/interaction/batch/processing/v3/abstract-processing.mjs.map +1 -0
  74. package/dist/esm/core/interaction/batch/processing/v3/as-array.mjs +32 -0
  75. package/dist/esm/core/interaction/batch/processing/v3/as-array.mjs.map +1 -0
  76. package/dist/esm/core/interaction/batch/processing/v3/as-object.mjs +32 -0
  77. package/dist/esm/core/interaction/batch/processing/v3/as-object.mjs.map +1 -0
  78. package/dist/esm/core/interaction/batch/v2.mjs +44 -0
  79. package/dist/esm/core/interaction/batch/v2.mjs.map +1 -0
  80. package/dist/esm/core/interaction/batch/v3.mjs +42 -0
  81. package/dist/esm/core/interaction/batch/v3.mjs.map +1 -0
  82. package/dist/esm/core/language/list.mjs +56 -0
  83. package/dist/esm/core/language/list.mjs.map +1 -0
  84. package/dist/esm/core/request-id-generator.mjs +42 -0
  85. package/dist/esm/core/request-id-generator.mjs.map +1 -0
  86. package/dist/esm/core/result.mjs +101 -0
  87. package/dist/esm/core/result.mjs.map +1 -0
  88. package/dist/esm/core/sdk-error.mjs +83 -0
  89. package/dist/esm/core/sdk-error.mjs.map +1 -0
  90. package/dist/esm/core/tools/abstract-tool.mjs +24 -0
  91. package/dist/esm/core/tools/abstract-tool.mjs.map +1 -0
  92. package/dist/esm/core/tools/healthcheck.mjs +48 -0
  93. package/dist/esm/core/tools/healthcheck.mjs.map +1 -0
  94. package/dist/esm/core/tools/manager.mjs +50 -0
  95. package/dist/esm/core/tools/manager.mjs.map +1 -0
  96. package/dist/esm/core/tools/ping.mjs +56 -0
  97. package/dist/esm/core/tools/ping.mjs.map +1 -0
  98. package/dist/esm/core/version-manager.mjs +116 -0
  99. package/dist/esm/core/version-manager.mjs.map +1 -0
  100. package/dist/esm/frame/auth.mjs +98 -0
  101. package/dist/esm/frame/auth.mjs.map +1 -0
  102. package/dist/esm/frame/b24.mjs +170 -0
  103. package/dist/esm/frame/b24.mjs.map +1 -0
  104. package/dist/esm/frame/dialog.mjs +78 -0
  105. package/dist/esm/frame/dialog.mjs.map +1 -0
  106. package/dist/esm/frame/frame.mjs +101 -0
  107. package/dist/esm/frame/frame.mjs.map +1 -0
  108. package/dist/esm/frame/message/commands.mjs +37 -0
  109. package/dist/esm/frame/message/commands.mjs.map +1 -0
  110. package/dist/esm/frame/message/controller.mjs +178 -0
  111. package/dist/esm/frame/message/controller.mjs.map +1 -0
  112. package/dist/esm/frame/options.mjs +106 -0
  113. package/dist/esm/frame/options.mjs.map +1 -0
  114. package/dist/esm/frame/parent.mjs +253 -0
  115. package/dist/esm/frame/parent.mjs.map +1 -0
  116. package/dist/esm/frame/placement.mjs +131 -0
  117. package/dist/esm/frame/placement.mjs.map +1 -0
  118. package/dist/esm/frame/slider.mjs +156 -0
  119. package/dist/esm/frame/slider.mjs.map +1 -0
  120. package/dist/esm/helper/abstract-helper.mjs +52 -0
  121. package/dist/esm/helper/abstract-helper.mjs.map +1 -0
  122. package/dist/esm/helper/app-manager.mjs +37 -0
  123. package/dist/esm/helper/app-manager.mjs.map +1 -0
  124. package/dist/esm/helper/currency-manager.mjs +207 -0
  125. package/dist/esm/helper/currency-manager.mjs.map +1 -0
  126. package/dist/esm/helper/helper-manager.mjs +388 -0
  127. package/dist/esm/helper/helper-manager.mjs.map +1 -0
  128. package/dist/esm/helper/license-manager.mjs +50 -0
  129. package/dist/esm/helper/license-manager.mjs.map +1 -0
  130. package/dist/esm/helper/options-manager.mjs +196 -0
  131. package/dist/esm/helper/options-manager.mjs.map +1 -0
  132. package/dist/esm/helper/payment-manager.mjs +33 -0
  133. package/dist/esm/helper/payment-manager.mjs.map +1 -0
  134. package/dist/esm/helper/profile-manager.mjs +33 -0
  135. package/dist/esm/helper/profile-manager.mjs.map +1 -0
  136. package/dist/esm/helper/use-b24-helper.mjs +84 -0
  137. package/dist/esm/helper/use-b24-helper.mjs.map +1 -0
  138. package/dist/esm/hook/auth.mjs +77 -0
  139. package/dist/esm/hook/auth.mjs.map +1 -0
  140. package/dist/esm/hook/b24.mjs +115 -0
  141. package/dist/esm/hook/b24.mjs.map +1 -0
  142. package/dist/esm/index.d.mts +2768 -534
  143. package/dist/esm/index.d.ts +2768 -534
  144. package/dist/esm/index.mjs +70 -14118
  145. package/dist/esm/index.mjs.map +1 -1
  146. package/dist/esm/loader-b24frame.mjs +101 -0
  147. package/dist/esm/loader-b24frame.mjs.map +1 -0
  148. package/dist/esm/logger/abstract-logger.mjs +69 -0
  149. package/dist/esm/logger/abstract-logger.mjs.map +1 -0
  150. package/dist/esm/logger/browser.mjs +162 -0
  151. package/dist/esm/logger/browser.mjs.map +1 -0
  152. package/dist/esm/logger/formatter/abstract-formatter.mjs +34 -0
  153. package/dist/esm/logger/formatter/abstract-formatter.mjs.map +1 -0
  154. package/dist/esm/logger/formatter/json-formatter.mjs +34 -0
  155. package/dist/esm/logger/formatter/json-formatter.mjs.map +1 -0
  156. package/dist/esm/logger/formatter/line-formatter.mjs +41 -0
  157. package/dist/esm/logger/formatter/line-formatter.mjs.map +1 -0
  158. package/dist/esm/logger/formatter/telegram-formatter.mjs +103 -0
  159. package/dist/esm/logger/formatter/telegram-formatter.mjs.map +1 -0
  160. package/dist/esm/logger/handler/abstract-handler.mjs +39 -0
  161. package/dist/esm/logger/handler/abstract-handler.mjs.map +1 -0
  162. package/dist/esm/logger/handler/consola-adapter.mjs +62 -0
  163. package/dist/esm/logger/handler/consola-adapter.mjs.map +1 -0
  164. package/dist/esm/logger/handler/console-handler.mjs +98 -0
  165. package/dist/esm/logger/handler/console-handler.mjs.map +1 -0
  166. package/dist/esm/logger/handler/console-v2-handler.mjs +51 -0
  167. package/dist/esm/logger/handler/console-v2-handler.mjs.map +1 -0
  168. package/dist/esm/logger/handler/memory-handler.mjs +48 -0
  169. package/dist/esm/logger/handler/memory-handler.mjs.map +1 -0
  170. package/dist/esm/logger/handler/stream-handler.mjs +73 -0
  171. package/dist/esm/logger/handler/stream-handler.mjs.map +1 -0
  172. package/dist/esm/logger/handler/telegram-handler.mjs +157 -0
  173. package/dist/esm/logger/handler/telegram-handler.mjs.map +1 -0
  174. package/dist/esm/logger/handler/winston-adapter.mjs +57 -0
  175. package/dist/esm/logger/handler/winston-adapter.mjs.map +1 -0
  176. package/dist/esm/logger/logger-factory.mjs +67 -0
  177. package/dist/esm/logger/logger-factory.mjs.map +1 -0
  178. package/dist/esm/logger/logger.mjs +76 -0
  179. package/dist/esm/logger/logger.mjs.map +1 -0
  180. package/dist/esm/logger/null-logger.mjs +32 -0
  181. package/dist/esm/logger/null-logger.mjs.map +1 -0
  182. package/dist/esm/logger/processor/memory-usage-processor.mjs +20 -0
  183. package/dist/esm/logger/processor/memory-usage-processor.mjs.map +1 -0
  184. package/dist/esm/logger/processor/pid-processor.mjs +20 -0
  185. package/dist/esm/logger/processor/pid-processor.mjs.map +1 -0
  186. package/dist/esm/oauth/auth.mjs +211 -0
  187. package/dist/esm/oauth/auth.mjs.map +1 -0
  188. package/dist/esm/oauth/b24.mjs +117 -0
  189. package/dist/esm/oauth/b24.mjs.map +1 -0
  190. package/dist/esm/oauth/refresh-token-error.mjs +20 -0
  191. package/dist/esm/oauth/refresh-token-error.mjs.map +1 -0
  192. package/dist/esm/pullClient/abstract-connector.mjs +78 -0
  193. package/dist/esm/pullClient/abstract-connector.mjs.map +1 -0
  194. package/dist/esm/pullClient/channel-manager.mjs +89 -0
  195. package/dist/esm/pullClient/channel-manager.mjs.map +1 -0
  196. package/dist/esm/pullClient/client.mjs +2064 -0
  197. package/dist/esm/pullClient/client.mjs.map +1 -0
  198. package/dist/esm/pullClient/errors.mjs +31 -0
  199. package/dist/esm/pullClient/errors.mjs.map +1 -0
  200. package/dist/esm/pullClient/json-rpc.mjs +210 -0
  201. package/dist/esm/pullClient/json-rpc.mjs.map +1 -0
  202. package/dist/esm/pullClient/long-polling-connector.mjs +157 -0
  203. package/dist/esm/pullClient/long-polling-connector.mjs.map +1 -0
  204. package/dist/esm/pullClient/protobuf/index.mjs +17 -0
  205. package/dist/esm/pullClient/protobuf/index.mjs.map +1 -0
  206. package/dist/esm/pullClient/protobuf/model.mjs +1058 -0
  207. package/dist/esm/pullClient/protobuf/model.mjs.map +1 -0
  208. package/dist/esm/pullClient/protobuf/protobuf.mjs +4653 -0
  209. package/dist/esm/pullClient/protobuf/protobuf.mjs.map +1 -0
  210. package/dist/esm/pullClient/shared-config.mjs +133 -0
  211. package/dist/esm/pullClient/shared-config.mjs.map +1 -0
  212. package/dist/esm/pullClient/storage-manager.mjs +72 -0
  213. package/dist/esm/pullClient/storage-manager.mjs.map +1 -0
  214. package/dist/esm/pullClient/web-socket-connector.mjs +129 -0
  215. package/dist/esm/pullClient/web-socket-connector.mjs.map +1 -0
  216. package/dist/esm/tools/browser.mjs +154 -0
  217. package/dist/esm/tools/browser.mjs.map +1 -0
  218. package/dist/esm/tools/environment.mjs +29 -0
  219. package/dist/esm/tools/environment.mjs.map +1 -0
  220. package/dist/esm/tools/formatters/iban.mjs +304 -0
  221. package/dist/esm/tools/formatters/iban.mjs.map +1 -0
  222. package/dist/esm/tools/formatters/numbers.mjs +64 -0
  223. package/dist/esm/tools/formatters/numbers.mjs.map +1 -0
  224. package/dist/esm/tools/index.mjs +37 -0
  225. package/dist/esm/tools/index.mjs.map +1 -0
  226. package/dist/esm/tools/scroll-size.mjs +25 -0
  227. package/dist/esm/tools/scroll-size.mjs.map +1 -0
  228. package/dist/esm/tools/text.mjs +208 -0
  229. package/dist/esm/tools/text.mjs.map +1 -0
  230. package/dist/esm/tools/type.mjs +337 -0
  231. package/dist/esm/tools/type.mjs.map +1 -0
  232. package/dist/esm/tools/use-formatters.mjs +460 -0
  233. package/dist/esm/tools/use-formatters.mjs.map +1 -0
  234. package/dist/esm/tools/uuidv7.mjs +54 -0
  235. package/dist/esm/tools/uuidv7.mjs.map +1 -0
  236. package/dist/esm/types/b24-helper.mjs +56 -0
  237. package/dist/esm/types/b24-helper.mjs.map +1 -0
  238. package/dist/esm/types/b24.mjs +16 -0
  239. package/dist/esm/types/b24.mjs.map +1 -0
  240. package/dist/esm/types/bizproc/index.mjs +187 -0
  241. package/dist/esm/types/bizproc/index.mjs.map +1 -0
  242. package/dist/esm/types/catalog/index.mjs +35 -0
  243. package/dist/esm/types/catalog/index.mjs.map +1 -0
  244. package/dist/esm/types/common.mjs +31 -0
  245. package/dist/esm/types/common.mjs.map +1 -0
  246. package/dist/esm/types/crm/entity-type.mjs +57 -0
  247. package/dist/esm/types/crm/entity-type.mjs.map +1 -0
  248. package/dist/esm/types/crm/productrow.mjs +17 -0
  249. package/dist/esm/types/crm/productrow.mjs.map +1 -0
  250. package/dist/esm/types/logger.mjs +22 -0
  251. package/dist/esm/types/logger.mjs.map +1 -0
  252. package/dist/esm/types/pull.mjs +83 -0
  253. package/dist/esm/types/pull.mjs.map +1 -0
  254. package/dist/umd/index.js +31312 -26912
  255. package/dist/umd/index.js.map +1 -1
  256. package/dist/umd/index.min.js +63 -40
  257. package/dist/umd/index.min.js.map +1 -1
  258. package/package.json +34 -29
@@ -0,0 +1,133 @@
1
+ /**
2
+ * @package @bitrix24/b24jssdk
3
+ * @version 1.0.2
4
+ * @copyright (c) 2026 Bitrix24
5
+ * @license MIT
6
+ * @see https://github.com/bitrix24/b24jssdk
7
+ * @see https://bitrix24.github.io/b24jssdk/
8
+ */
9
+ import { Type } from '../tools/type.mjs';
10
+ import { Text } from '../tools/text.mjs';
11
+ import { StorageManager } from './storage-manager.mjs';
12
+ import { LsKeys } from '../types/pull.mjs';
13
+ import { LoggerFactory } from '../logger/logger-factory.mjs';
14
+
15
+ var __defProp = Object.defineProperty;
16
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
17
+ class SharedConfig {
18
+ static {
19
+ __name(this, "SharedConfig");
20
+ }
21
+ _logger;
22
+ _storage;
23
+ _ttl = 24 * 60 * 60;
24
+ _callbacks;
25
+ constructor(params = {}) {
26
+ this._logger = LoggerFactory.createNullLogger();
27
+ params = params || {};
28
+ this._storage = params.storage || new StorageManager();
29
+ this._callbacks = {
30
+ onWebSocketBlockChanged: Type.isFunction(params.onWebSocketBlockChanged) ? params.onWebSocketBlockChanged : () => {
31
+ }
32
+ };
33
+ if (this._storage) {
34
+ window.addEventListener("storage", this.onLocalStorageSet.bind(this));
35
+ }
36
+ }
37
+ setLogger(logger) {
38
+ this._logger = logger;
39
+ }
40
+ getLogger() {
41
+ return this._logger;
42
+ }
43
+ onLocalStorageSet(params) {
44
+ if (this._storage.compareKey(
45
+ params.key || "",
46
+ LsKeys.WebsocketBlocked
47
+ ) && params.newValue !== params.oldValue) {
48
+ this._callbacks.onWebSocketBlockChanged({
49
+ isWebSocketBlocked: this.isWebSocketBlocked()
50
+ });
51
+ }
52
+ }
53
+ isWebSocketBlocked() {
54
+ if (!this._storage) {
55
+ return false;
56
+ }
57
+ return this._storage.get(LsKeys.WebsocketBlocked, 0) > Date.now();
58
+ }
59
+ setWebSocketBlocked(isWebSocketBlocked) {
60
+ if (!this._storage) {
61
+ return false;
62
+ }
63
+ try {
64
+ this._storage.set(
65
+ LsKeys.WebsocketBlocked,
66
+ isWebSocketBlocked ? Date.now() + this._ttl : 0
67
+ );
68
+ } catch (error) {
69
+ this.getLogger().error(
70
+ `${Text.getDateForLog()}: Pull: Could not save WS_blocked flag in local storage`,
71
+ { error }
72
+ );
73
+ return false;
74
+ }
75
+ return true;
76
+ }
77
+ isLongPollingBlocked() {
78
+ if (!this._storage) {
79
+ return false;
80
+ }
81
+ return this._storage.get(LsKeys.LongPollingBlocked, 0) > Date.now();
82
+ }
83
+ setLongPollingBlocked(isLongPollingBlocked) {
84
+ if (!this._storage) {
85
+ return false;
86
+ }
87
+ try {
88
+ this._storage.set(
89
+ LsKeys.LongPollingBlocked,
90
+ isLongPollingBlocked ? Date.now() + this._ttl : 0
91
+ );
92
+ } catch (error) {
93
+ this.getLogger().error(
94
+ `${Text.getDateForLog()}: Pull: Could not save LP_blocked flag in local storage.`,
95
+ { error }
96
+ );
97
+ return false;
98
+ }
99
+ return true;
100
+ }
101
+ isLoggingEnabled() {
102
+ if (!this._storage) {
103
+ return false;
104
+ }
105
+ return this._storage.get(LsKeys.LoggingEnabled, 0) > this.getTimestamp();
106
+ }
107
+ setLoggingEnabled(isLoggingEnabled) {
108
+ if (!this._storage) {
109
+ return false;
110
+ }
111
+ try {
112
+ this._storage.set(
113
+ LsKeys.LoggingEnabled,
114
+ isLoggingEnabled ? this.getTimestamp() + this._ttl : 0
115
+ );
116
+ } catch (error) {
117
+ this.getLogger().error(
118
+ `${Text.getDateForLog()}: LocalStorage error.`,
119
+ { error }
120
+ );
121
+ return false;
122
+ }
123
+ return true;
124
+ }
125
+ // region Tools ////
126
+ getTimestamp() {
127
+ return Date.now();
128
+ }
129
+ // endregion ////
130
+ }
131
+
132
+ export { SharedConfig };
133
+ //# sourceMappingURL=shared-config.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-config.mjs","sources":["../../../src/pullClient/shared-config.ts"],"sourcesContent":["import type { SharedConfigCallbacks, SharedConfigParams, TypeStorageManager } from '../types/pull'\nimport type { LoggerInterface } from '../logger'\nimport { LoggerFactory } from '../logger'\nimport { Type } from '../tools/type'\nimport { Text } from '../tools/text'\nimport { StorageManager } from './storage-manager'\nimport { LsKeys } from '../types/pull'\n\nexport class SharedConfig {\n private _logger: LoggerInterface\n private readonly _storage: TypeStorageManager\n private _ttl: number = 24 * 60 * 60\n private _callbacks: SharedConfigCallbacks\n\n constructor(params: SharedConfigParams = {}) {\n this._logger = LoggerFactory.createNullLogger()\n params = params || {}\n this._storage = params.storage || new StorageManager()\n\n this._callbacks = {\n onWebSocketBlockChanged: Type.isFunction(params.onWebSocketBlockChanged)\n ? params.onWebSocketBlockChanged\n : () => {}\n } as SharedConfigCallbacks\n\n if (this._storage) {\n window.addEventListener('storage', this.onLocalStorageSet.bind(this))\n }\n }\n\n setLogger(logger: LoggerInterface): void {\n this._logger = logger\n }\n\n getLogger(): LoggerInterface {\n return this._logger\n }\n\n private onLocalStorageSet(params: StorageEvent): void {\n if (\n (this._storage as StorageManager).compareKey(\n params.key || '',\n LsKeys.WebsocketBlocked\n )\n && params.newValue !== params.oldValue\n ) {\n this._callbacks.onWebSocketBlockChanged({\n isWebSocketBlocked: this.isWebSocketBlocked()\n })\n }\n }\n\n isWebSocketBlocked(): boolean {\n if (!this._storage) {\n return false\n }\n\n return this._storage.get(LsKeys.WebsocketBlocked, 0) > Date.now()\n }\n\n setWebSocketBlocked(isWebSocketBlocked: boolean): boolean {\n if (!this._storage) {\n return false\n }\n\n try {\n this._storage.set(\n LsKeys.WebsocketBlocked,\n isWebSocketBlocked ? Date.now() + this._ttl : 0\n )\n } catch (error) {\n this.getLogger().error(\n `${Text.getDateForLog()}: Pull: Could not save WS_blocked flag in local storage`,\n { error }\n )\n\n return false\n }\n\n return true\n }\n\n isLongPollingBlocked(): boolean {\n if (!this._storage) {\n return false\n }\n\n return this._storage.get(LsKeys.LongPollingBlocked, 0) > Date.now()\n }\n\n setLongPollingBlocked(isLongPollingBlocked: boolean) {\n if (!this._storage) {\n return false\n }\n\n try {\n this._storage.set(\n LsKeys.LongPollingBlocked,\n isLongPollingBlocked ? Date.now() + this._ttl : 0\n )\n } catch (error) {\n this.getLogger().error(\n `${Text.getDateForLog()}: Pull: Could not save LP_blocked flag in local storage.`,\n { error }\n )\n\n return false\n }\n\n return true\n }\n\n isLoggingEnabled(): boolean {\n if (!this._storage) {\n return false\n }\n\n return this._storage.get(LsKeys.LoggingEnabled, 0) > this.getTimestamp()\n }\n\n setLoggingEnabled(isLoggingEnabled: boolean): boolean {\n if (!this._storage) {\n return false\n }\n\n try {\n this._storage.set(\n LsKeys.LoggingEnabled,\n isLoggingEnabled ? this.getTimestamp() + this._ttl : 0\n )\n } catch (error) {\n this.getLogger().error(\n `${Text.getDateForLog()}: LocalStorage error.`,\n { error }\n )\n\n return false\n }\n\n return true\n }\n\n // region Tools ////\n getTimestamp(): number {\n return Date.now()\n }\n // endregion ////\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * @package @bitrix24/b24jssdk
3
+ * @version 1.0.2
4
+ * @copyright (c) 2026 Bitrix24
5
+ * @license MIT
6
+ * @see https://github.com/bitrix24/b24jssdk
7
+ * @see https://bitrix24.github.io/b24jssdk/
8
+ */
9
+ import { Text } from '../tools/text.mjs';
10
+ import { LoggerFactory } from '../logger/logger-factory.mjs';
11
+
12
+ var __defProp = Object.defineProperty;
13
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
14
+ class StorageManager {
15
+ static {
16
+ __name(this, "StorageManager");
17
+ }
18
+ _logger;
19
+ userId;
20
+ siteId;
21
+ constructor(params = {}) {
22
+ this._logger = LoggerFactory.createNullLogger();
23
+ this.userId = params.userId ? Text.toInteger(params.userId) : 0;
24
+ this.siteId = params.siteId ?? "none";
25
+ }
26
+ setLogger(logger) {
27
+ this._logger = logger;
28
+ }
29
+ getLogger() {
30
+ return this._logger;
31
+ }
32
+ set(name, value) {
33
+ if (typeof window.localStorage === "undefined") {
34
+ this.getLogger().error("localStorage undefined", {
35
+ error: new Error("undefined window.localStorage")
36
+ });
37
+ return;
38
+ }
39
+ if (typeof value !== "string" && value) {
40
+ value = JSON.stringify(value);
41
+ }
42
+ window.localStorage.setItem(this._getKey(name), value);
43
+ }
44
+ get(name, defaultValue) {
45
+ if (typeof window.localStorage === "undefined") {
46
+ return defaultValue || null;
47
+ }
48
+ const result = window.localStorage.getItem(this._getKey(name));
49
+ if (result === null) {
50
+ return defaultValue || null;
51
+ }
52
+ return JSON.parse(result);
53
+ }
54
+ remove(name) {
55
+ if (typeof window.localStorage === "undefined") {
56
+ this.getLogger().error("localStorage undefined", {
57
+ error: new Error("undefined window.localStorage")
58
+ });
59
+ return;
60
+ }
61
+ return window.localStorage.removeItem(this._getKey(name));
62
+ }
63
+ _getKey(name) {
64
+ return `@bitrix24/b24jssdk-pull-${this.userId}-${this.siteId}-${name}`;
65
+ }
66
+ compareKey(eventKey, userKey) {
67
+ return eventKey === this._getKey(userKey);
68
+ }
69
+ }
70
+
71
+ export { StorageManager };
72
+ //# sourceMappingURL=storage-manager.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-manager.mjs","sources":["../../../src/pullClient/storage-manager.ts"],"sourcesContent":["import type { StorageManagerParams, TypeStorageManager } from '../types/pull'\nimport type { LoggerInterface } from '../logger'\nimport { LoggerFactory } from '../logger'\nimport { Text } from '../tools/text'\n\nexport class StorageManager implements TypeStorageManager {\n private _logger: LoggerInterface\n\n private readonly userId: number\n private readonly siteId: string\n\n constructor(params: StorageManagerParams = {}) {\n this._logger = LoggerFactory.createNullLogger()\n this.userId = params.userId ? Text.toInteger(params.userId) : 0\n this.siteId = params.siteId ?? 'none'\n }\n\n setLogger(logger: LoggerInterface): void {\n this._logger = logger\n }\n\n getLogger(): LoggerInterface {\n return this._logger\n }\n\n set(name: string, value: any): void {\n if (typeof window.localStorage === 'undefined') {\n this.getLogger().error('localStorage undefined', {\n error: new Error('undefined window.localStorage')\n })\n return\n }\n\n if (typeof value !== 'string' && value) {\n value = JSON.stringify(value)\n }\n\n window.localStorage.setItem(this._getKey(name), value)\n }\n\n get(name: string, defaultValue: any): any {\n if (typeof window.localStorage === 'undefined') {\n return defaultValue || null\n }\n\n const result = window.localStorage.getItem(this._getKey(name))\n if (result === null) {\n return defaultValue || null\n }\n\n return JSON.parse(result)\n }\n\n remove(name: string): void {\n if (typeof window.localStorage === 'undefined') {\n this.getLogger().error('localStorage undefined', {\n error: new Error('undefined window.localStorage')\n })\n return\n }\n\n return window.localStorage.removeItem(this._getKey(name))\n }\n\n private _getKey(name: string): string {\n return `@bitrix24/b24jssdk-pull-${this.userId}-${this.siteId}-${name}`\n }\n\n compareKey(eventKey: string, userKey: string): boolean {\n return eventKey === this._getKey(userKey)\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;AAKO,MAAM,cAAA,CAA6C;AAAA,EAL1D;AAK0D,IAAA,MAAA,CAAA,IAAA,EAAA,gBAAA,CAAA;AAAA;AAAA,EAChD,OAAA;AAAA,EAES,MAAA;AAAA,EACA,MAAA;AAAA,EAEjB,WAAA,CAAY,MAAA,GAA+B,EAAC,EAAG;AAC7C,IAAA,IAAA,CAAK,OAAA,GAAU,cAAc,gBAAA,EAAiB;AAC9C,IAAA,IAAA,CAAK,SAAS,MAAA,CAAO,MAAA,GAAS,KAAK,SAAA,CAAU,MAAA,CAAO,MAAM,CAAA,GAAI,CAAA;AAC9D,IAAA,IAAA,CAAK,MAAA,GAAS,OAAO,MAAA,IAAU,MAAA;AAAA,EACjC;AAAA,EAEA,UAAU,MAAA,EAA+B;AACvC,IAAA,IAAA,CAAK,OAAA,GAAU,MAAA;AAAA,EACjB;AAAA,EAEA,SAAA,GAA6B;AAC3B,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,EACd;AAAA,EAEA,GAAA,CAAI,MAAc,KAAA,EAAkB;AAClC,IAAA,IAAI,OAAO,MAAA,CAAO,YAAA,KAAiB,WAAA,EAAa;AAC9C,MAAA,IAAA,CAAK,SAAA,EAAU,CAAE,KAAA,CAAM,wBAAA,EAA0B;AAAA,QAC/C,KAAA,EAAO,IAAI,KAAA,CAAM,+BAA+B;AAAA,OACjD,CAAA;AACD,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,EAAO;AACtC,MAAA,KAAA,GAAQ,IAAA,CAAK,UAAU,KAAK,CAAA;AAAA,IAC9B;AAEA,IAAA,MAAA,CAAO,aAAa,OAAA,CAAQ,IAAA,CAAK,OAAA,CAAQ,IAAI,GAAG,KAAK,CAAA;AAAA,EACvD;AAAA,EAEA,GAAA,CAAI,MAAc,YAAA,EAAwB;AACxC,IAAA,IAAI,OAAO,MAAA,CAAO,YAAA,KAAiB,WAAA,EAAa;AAC9C,MAAA,OAAO,YAAA,IAAgB,IAAA;AAAA,IACzB;AAEA,IAAA,MAAM,SAAS,MAAA,CAAO,YAAA,CAAa,QAAQ,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAC,CAAA;AAC7D,IAAA,IAAI,WAAW,IAAA,EAAM;AACnB,MAAA,OAAO,YAAA,IAAgB,IAAA;AAAA,IACzB;AAEA,IAAA,OAAO,IAAA,CAAK,MAAM,MAAM,CAAA;AAAA,EAC1B;AAAA,EAEA,OAAO,IAAA,EAAoB;AACzB,IAAA,IAAI,OAAO,MAAA,CAAO,YAAA,KAAiB,WAAA,EAAa;AAC9C,MAAA,IAAA,CAAK,SAAA,EAAU,CAAE,KAAA,CAAM,wBAAA,EAA0B;AAAA,QAC/C,KAAA,EAAO,IAAI,KAAA,CAAM,+BAA+B;AAAA,OACjD,CAAA;AACD,MAAA;AAAA,IACF;AAEA,IAAA,OAAO,OAAO,YAAA,CAAa,UAAA,CAAW,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAC,CAAA;AAAA,EAC1D;AAAA,EAEQ,QAAQ,IAAA,EAAsB;AACpC,IAAA,OAAO,2BAA2B,IAAA,CAAK,MAAM,IAAI,IAAA,CAAK,MAAM,IAAI,IAAI,CAAA,CAAA;AAAA,EACtE;AAAA,EAEA,UAAA,CAAW,UAAkB,OAAA,EAA0B;AACrD,IAAA,OAAO,QAAA,KAAa,IAAA,CAAK,OAAA,CAAQ,OAAO,CAAA;AAAA,EAC1C;AACF;;;;"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * @package @bitrix24/b24jssdk
3
+ * @version 1.0.2
4
+ * @copyright (c) 2026 Bitrix24
5
+ * @license MIT
6
+ * @see https://github.com/bitrix24/b24jssdk
7
+ * @see https://bitrix24.github.io/b24jssdk/
8
+ */
9
+ import { Text } from '../tools/text.mjs';
10
+ import { AbstractConnector } from './abstract-connector.mjs';
11
+ import { ConnectionType } from '../types/pull.mjs';
12
+
13
+ var __defProp = Object.defineProperty;
14
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
15
+ class WebSocketConnector extends AbstractConnector {
16
+ static {
17
+ __name(this, "WebSocketConnector");
18
+ }
19
+ _socket;
20
+ _onSocketOpenHandler;
21
+ _onSocketCloseHandler;
22
+ _onSocketErrorHandler;
23
+ _onSocketMessageHandler;
24
+ constructor(config) {
25
+ super(config);
26
+ this._connectionType = ConnectionType.WebSocket;
27
+ this._socket = null;
28
+ this._onSocketOpenHandler = this._onSocketOpen.bind(this);
29
+ this._onSocketCloseHandler = this._onSocketClose.bind(this);
30
+ this._onSocketErrorHandler = this._onSocketError.bind(this);
31
+ this._onSocketMessageHandler = this._onSocketMessage.bind(this);
32
+ }
33
+ destroy() {
34
+ super.destroy();
35
+ if (this._socket) {
36
+ this._socket.close();
37
+ this._socket = null;
38
+ }
39
+ }
40
+ /**
41
+ * @inheritDoc
42
+ */
43
+ connect() {
44
+ if (this._socket) {
45
+ if (this._socket.readyState === 1) {
46
+ return;
47
+ } else {
48
+ this.clearEventListener();
49
+ this._socket.close();
50
+ this._socket = null;
51
+ }
52
+ }
53
+ this._createSocket();
54
+ }
55
+ get socket() {
56
+ return this._socket;
57
+ }
58
+ /**
59
+ * @inheritDoc
60
+ * @param code
61
+ * @param reason
62
+ */
63
+ disconnect(code, reason) {
64
+ if (this._socket !== null) {
65
+ this.clearEventListener();
66
+ this._socket.close(code, reason);
67
+ }
68
+ this._socket = null;
69
+ this._disconnectCode = code;
70
+ this._disconnectReason = reason;
71
+ this.connected = false;
72
+ }
73
+ /**
74
+ * Via websocket connection
75
+ * @inheritDoc
76
+ */
77
+ send(buffer) {
78
+ if (!this._socket || this._socket.readyState !== 1) {
79
+ this.getLogger().error(`${Text.getDateForLog()}: Pull: WebSocket is not connected`);
80
+ return false;
81
+ }
82
+ this._socket.send(buffer);
83
+ return true;
84
+ }
85
+ // region Event Handlers ////
86
+ _onSocketOpen() {
87
+ this.connected = true;
88
+ }
89
+ _onSocketClose(event) {
90
+ this._socket = null;
91
+ this._disconnectCode = Number(event.code);
92
+ this._disconnectReason = event.reason;
93
+ this.connected = false;
94
+ }
95
+ _onSocketError(event) {
96
+ this._callbacks.onError(new Error(`Socket error: ${event}`));
97
+ }
98
+ _onSocketMessage(event) {
99
+ this._callbacks.onMessage(event.data);
100
+ }
101
+ // endregion ////
102
+ // region Tools ////
103
+ clearEventListener() {
104
+ if (this._socket) {
105
+ this._socket.removeEventListener("open", this._onSocketOpenHandler);
106
+ this._socket.removeEventListener("close", this._onSocketCloseHandler);
107
+ this._socket.removeEventListener("error", this._onSocketErrorHandler);
108
+ this._socket.removeEventListener("message", this._onSocketMessageHandler);
109
+ }
110
+ }
111
+ _createSocket() {
112
+ if (this._socket) {
113
+ throw new Error("Socket already exists");
114
+ }
115
+ if (!this.connectionPath) {
116
+ throw new Error("Websocket connection path is not defined");
117
+ }
118
+ this._socket = new WebSocket(this.connectionPath);
119
+ this._socket.binaryType = "arraybuffer";
120
+ this._socket.addEventListener("open", this._onSocketOpenHandler);
121
+ this._socket.addEventListener("close", this._onSocketCloseHandler);
122
+ this._socket.addEventListener("error", this._onSocketErrorHandler);
123
+ this._socket.addEventListener("message", this._onSocketMessageHandler);
124
+ }
125
+ // endregion ////
126
+ }
127
+
128
+ export { WebSocketConnector };
129
+ //# sourceMappingURL=web-socket-connector.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-socket-connector.mjs","sources":["../../../src/pullClient/web-socket-connector.ts"],"sourcesContent":["import type { ConnectorConfig } from '../types/pull'\nimport { Text } from '../tools/text'\nimport { AbstractConnector } from './abstract-connector'\nimport { ConnectionType } from '../types/pull'\n\nexport class WebSocketConnector extends AbstractConnector {\n private _socket: null | WebSocket\n\n private readonly _onSocketOpenHandler: () => void\n private readonly _onSocketCloseHandler: (event: CloseEvent) => void\n private readonly _onSocketErrorHandler: (event: Event) => void\n private readonly _onSocketMessageHandler: (event: MessageEvent) => void\n\n constructor(config: ConnectorConfig) {\n super(config)\n\n this._connectionType = ConnectionType.WebSocket\n this._socket = null\n\n this._onSocketOpenHandler = this._onSocketOpen.bind(this)\n this._onSocketCloseHandler = this._onSocketClose.bind(this)\n this._onSocketErrorHandler = this._onSocketError.bind(this)\n this._onSocketMessageHandler = this._onSocketMessage.bind(this)\n }\n\n override destroy() {\n super.destroy()\n\n if (this._socket) {\n this._socket.close()\n this._socket = null\n }\n }\n\n /**\n * @inheritDoc\n */\n override connect(): void {\n if (this._socket) {\n if (this._socket.readyState === 1) {\n /**\n * @memo already connected\n */\n return\n } else {\n this.clearEventListener()\n\n this._socket.close()\n this._socket = null\n }\n }\n\n this._createSocket()\n }\n\n get socket(): null | WebSocket {\n return this._socket\n }\n\n /**\n * @inheritDoc\n * @param code\n * @param reason\n */\n override disconnect(code: number, reason: string): void {\n if (this._socket !== null) {\n this.clearEventListener()\n\n this._socket.close(code, reason)\n }\n this._socket = null\n this._disconnectCode = code\n this._disconnectReason = reason\n this.connected = false\n }\n\n /**\n * Via websocket connection\n * @inheritDoc\n */\n override send(buffer: ArrayBuffer | string): boolean {\n if (!this._socket || this._socket.readyState !== 1) {\n this.getLogger().error(`${Text.getDateForLog()}: Pull: WebSocket is not connected`)\n\n return false\n }\n\n this._socket.send(buffer)\n return true\n }\n\n // region Event Handlers ////\n private _onSocketOpen(): void {\n this.connected = true\n }\n\n private _onSocketClose(event: CloseEvent) {\n this._socket = null\n this._disconnectCode = Number(event.code)\n this._disconnectReason = event.reason\n this.connected = false\n }\n\n private _onSocketError(event: Event): void {\n this._callbacks.onError(new Error(`Socket error: ${event}`))\n }\n\n private _onSocketMessage(event: MessageEvent): void {\n this._callbacks.onMessage(event.data)\n }\n // endregion ////\n\n // region Tools ////\n private clearEventListener(): void {\n if (this._socket) {\n this._socket.removeEventListener('open', this._onSocketOpenHandler)\n\n this._socket.removeEventListener('close', this._onSocketCloseHandler)\n\n this._socket.removeEventListener('error', this._onSocketErrorHandler)\n\n this._socket.removeEventListener('message', this._onSocketMessageHandler)\n }\n }\n\n private _createSocket(): void {\n if (this._socket) {\n throw new Error('Socket already exists')\n }\n\n if (!this.connectionPath) {\n throw new Error('Websocket connection path is not defined')\n }\n\n this._socket = new WebSocket(this.connectionPath)\n this._socket.binaryType = 'arraybuffer'\n\n this._socket.addEventListener('open', this._onSocketOpenHandler)\n\n this._socket.addEventListener('close', this._onSocketCloseHandler)\n\n this._socket.addEventListener('error', this._onSocketErrorHandler)\n\n this._socket.addEventListener('message', this._onSocketMessageHandler)\n }\n // endregion ////\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,154 @@
1
+ /**
2
+ * @package @bitrix24/b24jssdk
3
+ * @version 1.0.2
4
+ * @copyright (c) 2026 Bitrix24
5
+ * @license MIT
6
+ * @see https://github.com/bitrix24/b24jssdk
7
+ * @see https://bitrix24.github.io/b24jssdk/
8
+ */
9
+ import { Type } from './type.mjs';
10
+
11
+ var __defProp = Object.defineProperty;
12
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
13
+ let UA = "";
14
+ try {
15
+ UA = navigator?.userAgent.toLowerCase();
16
+ } catch {
17
+ UA = "?";
18
+ }
19
+ class BrowserManager {
20
+ static {
21
+ __name(this, "BrowserManager");
22
+ }
23
+ isOpera() {
24
+ return UA.includes("opera");
25
+ }
26
+ isIE() {
27
+ return "attachEvent" in document && !this.isOpera();
28
+ }
29
+ isIE6() {
30
+ return UA.includes("msie 6");
31
+ }
32
+ isIE7() {
33
+ return UA.includes("msie 7");
34
+ }
35
+ isIE8() {
36
+ return UA.includes("msie 8");
37
+ }
38
+ isIE9() {
39
+ return "documentMode" in document && document?.documentMode >= 9;
40
+ }
41
+ isIE10() {
42
+ return "documentMode" in document && document?.documentMode >= 10;
43
+ }
44
+ isSafari() {
45
+ return UA.includes("safari") && !UA.includes("chrome");
46
+ }
47
+ isFirefox() {
48
+ return UA.includes("firefox");
49
+ }
50
+ isChrome() {
51
+ return UA.includes("chrome");
52
+ }
53
+ detectIEVersion() {
54
+ if (this.isOpera() || this.isSafari() || this.isFirefox() || this.isChrome()) {
55
+ return -1;
56
+ }
57
+ let rv = -1;
58
+ if (
59
+ // @ts-expect-error we detect IEVersion ////
60
+ !!window.MSStream && !window.ActiveXObject && "ActiveXObject" in window
61
+ ) {
62
+ rv = 11;
63
+ } else if (this.isIE10()) {
64
+ rv = 10;
65
+ } else if (this.isIE9()) {
66
+ rv = 9;
67
+ } else if (this.isIE()) {
68
+ rv = 8;
69
+ }
70
+ if (rv === -1 || rv === 8) {
71
+ if (navigator.appName === "Microsoft Internet Explorer") {
72
+ const re = /MSIE (\d[.0-9]*)/;
73
+ const res = navigator.userAgent.match(re);
74
+ if (Type.isArrayLike(res) && res.length > 0) {
75
+ rv = Number.parseFloat(res[1]);
76
+ }
77
+ }
78
+ if (navigator.appName === "Netscape") {
79
+ rv = 11;
80
+ const re = /Trident\/.*rv:(\d[.0-9]*)/;
81
+ if (re.exec(navigator.userAgent) != null) {
82
+ const res = navigator.userAgent.match(re);
83
+ if (Type.isArrayLike(res) && res.length > 0) {
84
+ rv = Number.parseFloat(res[1]);
85
+ }
86
+ }
87
+ }
88
+ }
89
+ return rv;
90
+ }
91
+ isIE11() {
92
+ return this.detectIEVersion() >= 11;
93
+ }
94
+ isMac() {
95
+ return UA.includes("macintosh");
96
+ }
97
+ isWin() {
98
+ return UA.includes("windows");
99
+ }
100
+ isLinux() {
101
+ return UA.includes("linux") && !this.isAndroid();
102
+ }
103
+ isAndroid() {
104
+ return UA.includes("android");
105
+ }
106
+ isIPad() {
107
+ return UA.includes("ipad;") || this.isMac() && this.isTouchDevice();
108
+ }
109
+ isIPhone() {
110
+ return UA.includes("iphone;");
111
+ }
112
+ isIOS() {
113
+ return this.isIPad() || this.isIPhone();
114
+ }
115
+ isMobile() {
116
+ return this.isIPhone() || this.isIPad() || this.isAndroid() || UA.includes("mobile") || UA.includes("touch");
117
+ }
118
+ isRetina() {
119
+ return (window.devicePixelRatio && window.devicePixelRatio >= 2) === true;
120
+ }
121
+ isTouchDevice() {
122
+ return "ontouchstart" in window || navigator.maxTouchPoints > 0;
123
+ }
124
+ isDoctype(target) {
125
+ const doc = target || document;
126
+ if (doc.compatMode) {
127
+ return doc.compatMode === "CSS1Compat";
128
+ }
129
+ return doc.documentElement && doc.documentElement.clientHeight;
130
+ }
131
+ isLocalStorageSupported() {
132
+ try {
133
+ localStorage.setItem("test", "test");
134
+ localStorage.removeItem("test");
135
+ return true;
136
+ } catch {
137
+ return false;
138
+ }
139
+ }
140
+ detectAndroidVersion() {
141
+ const re = /Android (\d[.0-9]*)/;
142
+ if (re.exec(navigator.userAgent) != null) {
143
+ const res = navigator.userAgent.match(re);
144
+ if (Type.isArrayLike(res) && res.length > 0) {
145
+ return Number.parseFloat(res[1]);
146
+ }
147
+ }
148
+ return 0;
149
+ }
150
+ }
151
+ const Browser = new BrowserManager();
152
+
153
+ export { Browser };
154
+ //# sourceMappingURL=browser.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.mjs","sources":["../../../src/tools/browser.ts"],"sourcesContent":["import { Type } from './type'\n\nlet UA: string = ''\ntry {\n UA = navigator?.userAgent.toLowerCase()\n} catch {\n UA = '?'\n}\n\n/**\n * @see bitrix/js/main/core/src/lib/browser.js\n */\nclass BrowserManager {\n isOpera(): boolean {\n return UA.includes('opera')\n }\n\n isIE(): boolean {\n return 'attachEvent' in document && !this.isOpera()\n }\n\n isIE6(): boolean {\n return UA.includes('msie 6')\n }\n\n isIE7(): boolean {\n return UA.includes('msie 7')\n }\n\n isIE8(): boolean {\n return UA.includes('msie 8')\n }\n\n isIE9(): boolean {\n return 'documentMode' in document && ((document?.documentMode as number) >= 9)\n }\n\n isIE10(): boolean {\n return 'documentMode' in document && ((document?.documentMode as number) >= 10)\n }\n\n isSafari(): boolean {\n return UA.includes('safari') && !UA.includes('chrome')\n }\n\n isFirefox() {\n return UA.includes('firefox')\n }\n\n isChrome() {\n return UA.includes('chrome')\n }\n\n detectIEVersion() {\n if (\n this.isOpera()\n || this.isSafari()\n || this.isFirefox()\n || this.isChrome()\n ) {\n return -1\n }\n\n let rv = -1\n\n if (\n // @ts-expect-error we detect IEVersion ////\n !!window.MSStream\n // @ts-expect-error we detect IEVersion ////\n && !window.ActiveXObject\n && 'ActiveXObject' in window\n ) {\n rv = 11\n } else if (this.isIE10()) {\n rv = 10\n } else if (this.isIE9()) {\n rv = 9\n } else if (this.isIE()) {\n rv = 8\n }\n\n if (rv === -1 || rv === 8) {\n if (navigator.appName === 'Microsoft Internet Explorer') {\n const re = /MSIE (\\d[.0-9]*)/\n const res = navigator.userAgent.match(re)\n\n if (Type.isArrayLike(res) && res.length > 0) {\n rv = Number.parseFloat(res[1]!)\n }\n }\n\n if (navigator.appName === 'Netscape') {\n // Alternative check for IE 11\n rv = 11\n const re = /Trident\\/.*rv:(\\d[.0-9]*)/\n\n if (re.exec(navigator.userAgent) != null) {\n const res = navigator.userAgent.match(re)\n\n if (Type.isArrayLike(res) && res.length > 0) {\n rv = Number.parseFloat(res[1]!)\n }\n }\n }\n }\n\n return rv\n }\n\n isIE11(): boolean {\n return this.detectIEVersion() >= 11\n }\n\n isMac(): boolean {\n return UA.includes('macintosh')\n }\n\n isWin(): boolean {\n return UA.includes('windows')\n }\n\n isLinux(): boolean {\n return UA.includes('linux') && !this.isAndroid()\n }\n\n isAndroid(): boolean {\n return UA.includes('android')\n }\n\n isIPad(): boolean {\n return UA.includes('ipad;') || (this.isMac() && this.isTouchDevice())\n }\n\n isIPhone(): boolean {\n return UA.includes('iphone;')\n }\n\n isIOS(): boolean {\n return this.isIPad() || this.isIPhone()\n }\n\n isMobile(): boolean {\n return (\n this.isIPhone()\n || this.isIPad()\n || this.isAndroid()\n || UA.includes('mobile')\n || UA.includes('touch')\n )\n }\n\n isRetina(): boolean {\n return (window.devicePixelRatio && window.devicePixelRatio >= 2) === true\n }\n\n isTouchDevice(): boolean {\n return (\n 'ontouchstart' in window\n || navigator.maxTouchPoints > 0\n )\n }\n\n isDoctype(target: any): boolean {\n const doc = target || document\n\n if (doc.compatMode) {\n return doc.compatMode === 'CSS1Compat'\n }\n\n return doc.documentElement && doc.documentElement.clientHeight\n }\n\n isLocalStorageSupported(): boolean {\n try {\n localStorage.setItem('test', 'test')\n localStorage.removeItem('test')\n return true\n } catch {\n return false\n }\n }\n\n detectAndroidVersion(): number {\n const re = /Android (\\d[.0-9]*)/\n\n if (re.exec(navigator.userAgent) != null) {\n const res = navigator.userAgent.match(re)\n if (Type.isArrayLike(res) && res.length > 0) {\n return Number.parseFloat(res[1]!)\n }\n }\n\n return 0\n }\n}\n\nexport const Browser = new BrowserManager()\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @package @bitrix24/b24jssdk
3
+ * @version 1.0.2
4
+ * @copyright (c) 2026 Bitrix24
5
+ * @license MIT
6
+ * @see https://github.com/bitrix24/b24jssdk
7
+ * @see https://bitrix24.github.io/b24jssdk/
8
+ */
9
+ var __defProp = Object.defineProperty;
10
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
11
+ var Environment = /* @__PURE__ */ ((Environment2) => {
12
+ Environment2["UNKNOWN"] = "unknown";
13
+ Environment2["BROWSE"] = "browser";
14
+ Environment2["NODE"] = "node";
15
+ return Environment2;
16
+ })(Environment || {});
17
+ function getEnvironment() {
18
+ if (typeof window !== "undefined" && typeof window.document !== "undefined") {
19
+ return "browser" /* BROWSE */;
20
+ }
21
+ if (typeof process !== "undefined" && process.versions && process.versions.node) {
22
+ return "node" /* NODE */;
23
+ }
24
+ return "unknown" /* UNKNOWN */;
25
+ }
26
+ __name(getEnvironment, "getEnvironment");
27
+
28
+ export { Environment, getEnvironment };
29
+ //# sourceMappingURL=environment.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.mjs","sources":["../../../src/tools/environment.ts"],"sourcesContent":["/**\n * Define the environment\n */\n\nexport enum Environment {\n UNKNOWN = 'unknown',\n BROWSE = 'browser',\n NODE = 'node'\n}\n\nexport function getEnvironment(): Environment {\n // Check for the presence of a window (browser)\n if (typeof window !== 'undefined' && typeof window.document !== 'undefined') {\n return Environment.BROWSE\n }\n\n // Check for the presence of process (Node.js)\n if (typeof process !== 'undefined' && process.versions && process.versions.node) {\n return Environment.NODE\n }\n\n return Environment.UNKNOWN\n}\n"],"names":["Environment"],"mappings":";;;;;;;;;;AAIO,IAAK,WAAA,qBAAAA,YAAAA,KAAL;AACL,EAAAA,aAAA,SAAA,CAAA,GAAU,SAAA;AACV,EAAAA,aAAA,QAAA,CAAA,GAAS,SAAA;AACT,EAAAA,aAAA,MAAA,CAAA,GAAO,MAAA;AAHG,EAAA,OAAAA,YAAAA;AAAA,CAAA,EAAA,WAAA,IAAA,EAAA;AAML,SAAS,cAAA,GAA8B;AAE5C,EAAA,IAAI,OAAO,MAAA,KAAW,WAAA,IAAe,OAAO,MAAA,CAAO,aAAa,WAAA,EAAa;AAC3E,IAAA,OAAO,SAAA;AAAA,EACT;AAGA,EAAA,IAAI,OAAO,OAAA,KAAY,WAAA,IAAe,QAAQ,QAAA,IAAY,OAAA,CAAQ,SAAS,IAAA,EAAM;AAC/E,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,OAAO,SAAA;AACT;AAZgB,MAAA,CAAA,cAAA,EAAA,gBAAA,CAAA;;;;"}