@bitrix24/b24jssdk 0.5.1 → 1.0.1

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 +308 -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 +177 -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 +250 -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 +2757 -526
  143. package/dist/esm/index.d.ts +2757 -526
  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 +31216 -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 +36 -31
@@ -0,0 +1,208 @@
1
+ /**
2
+ * @package @bitrix24/b24jssdk
3
+ * @version 1.0.1
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 { DateTime } from 'luxon';
10
+ import uuidv7 from './uuidv7.mjs';
11
+ import { Type } from './type.mjs';
12
+
13
+ var __defProp = Object.defineProperty;
14
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
15
+ const reEscape = /[&<>'"]/g;
16
+ const reUnescape = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34)/g;
17
+ const escapeEntities = {
18
+ "&": "&amp",
19
+ "<": "&lt",
20
+ ">": "&gt",
21
+ "'": "&#39",
22
+ '"': "&quot"
23
+ };
24
+ const unescapeEntities = {
25
+ "&amp": "&",
26
+ "&#38": "&",
27
+ "&lt": "<",
28
+ "&#60": "<",
29
+ "&gt": ">",
30
+ "&#62": ">",
31
+ "&apos": "'",
32
+ "&#39": "'",
33
+ "&quot": '"',
34
+ "&#34": '"'
35
+ };
36
+ class TextManager {
37
+ static {
38
+ __name(this, "TextManager");
39
+ }
40
+ getRandom(length = 8) {
41
+ return [...Array(length)].map(() => Math.trunc(Math.random() * 36).toString(36)).join("");
42
+ }
43
+ /**
44
+ * Generates UUID
45
+ */
46
+ getUniqId() {
47
+ return "xxxxxxxx-xlsx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => {
48
+ const r = Math.trunc(Math.random() * 16);
49
+ const v = c === "x" ? r : r & 3 | 8;
50
+ return v.toString(16);
51
+ });
52
+ }
53
+ /**
54
+ * Generate uuid v7
55
+ * @return {string}
56
+ */
57
+ getUuidRfc4122() {
58
+ return uuidv7();
59
+ }
60
+ /**
61
+ * Encodes all unsafe entities
62
+ * @param {string} value
63
+ * @return {string}
64
+ */
65
+ encode(value) {
66
+ if (Type.isString(value)) {
67
+ return value.replace(reEscape, (item) => escapeEntities[item]);
68
+ }
69
+ return value;
70
+ }
71
+ /**
72
+ * Decodes all encoded entities
73
+ * @param {string} value
74
+ * @return {string}
75
+ */
76
+ decode(value) {
77
+ if (Type.isString(value)) {
78
+ return value.replace(reUnescape, (item) => unescapeEntities[item]);
79
+ }
80
+ return value;
81
+ }
82
+ toNumber(value) {
83
+ const parsedValue = Number.parseFloat(value);
84
+ if (Type.isNumber(parsedValue)) {
85
+ return parsedValue;
86
+ }
87
+ return 0;
88
+ }
89
+ toInteger(value) {
90
+ return this.toNumber(Number.parseInt(value, 10));
91
+ }
92
+ toBoolean(value, trueValues = []) {
93
+ const transformedValue = Type.isString(value) ? value.toLowerCase() : value;
94
+ return ["true", "y", "1", 1, true, ...trueValues].includes(transformedValue);
95
+ }
96
+ toCamelCase(str) {
97
+ if (!Type.isStringFilled(str)) {
98
+ return str;
99
+ }
100
+ const regex = /[-_\s]+(.)?/g;
101
+ if (!regex.test(str)) {
102
+ return str.match(/^[A-Z]+$/) ? str.toLowerCase() : str[0].toLowerCase() + str.slice(1);
103
+ }
104
+ str = str.toLowerCase();
105
+ str = str.replace(
106
+ regex,
107
+ (_match, letter) => letter ? letter.toUpperCase() : ""
108
+ );
109
+ return str[0].toLowerCase() + str.substring(1);
110
+ }
111
+ toPascalCase(str) {
112
+ if (!Type.isStringFilled(str)) {
113
+ return str;
114
+ }
115
+ return this.capitalize(this.toCamelCase(str));
116
+ }
117
+ toKebabCase(str) {
118
+ if (!Type.isStringFilled(str)) {
119
+ return str;
120
+ }
121
+ const matches = str.match(
122
+ /[A-Z]{2,}(?=[A-Z][a-z]+\d*|\b)|[A-Z]?[a-z]+\d*|[A-Z]|\d+/g
123
+ );
124
+ if (!matches) {
125
+ return str;
126
+ }
127
+ return matches.map((x) => x.toLowerCase()).join("-");
128
+ }
129
+ capitalize(str) {
130
+ if (!Type.isStringFilled(str)) {
131
+ return str;
132
+ }
133
+ return str[0].toUpperCase() + str.substring(1);
134
+ }
135
+ numberFormat(number, decimals = 0, decPoint = ".", thousandsSep = ",") {
136
+ const n = !Number.isFinite(number) ? 0 : number;
137
+ const fractionDigits = !Number.isFinite(decimals) ? 0 : Math.abs(decimals);
138
+ const toFixedFix = /* @__PURE__ */ __name((n2, fractionDigits2) => {
139
+ const k = Math.pow(10, fractionDigits2);
140
+ return Math.round(n2 * k) / k;
141
+ }, "toFixedFix");
142
+ const s = (fractionDigits ? toFixedFix(n, fractionDigits) : Math.round(n)).toString().split(".");
143
+ if (s[0] && s[0].length > 3) {
144
+ s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, thousandsSep);
145
+ }
146
+ if ((s[1] || "").length < fractionDigits) {
147
+ s[1] = s[1] || "";
148
+ s[1] += new Array(fractionDigits - s[1].length + 1).join("0");
149
+ }
150
+ return s.join(decPoint);
151
+ }
152
+ /**
153
+ * Convert string to DateTime from ISO 8601 or self template
154
+ *
155
+ * @param {string} dateString
156
+ * @param {string} template
157
+ * @param opts
158
+ * @returns {DateTime} Convert string to DateTime from ISO 8601 or self template
159
+ *
160
+ * @link https://moment.github.io/luxon/#/parsing?id=parsing-technical-formats
161
+ */
162
+ toDateTime(dateString, template, opts) {
163
+ if (!(typeof template === "undefined") && Type.isStringFilled(template)) {
164
+ return DateTime.fromFormat(dateString, template, opts);
165
+ }
166
+ return DateTime.fromISO(dateString, opts);
167
+ }
168
+ /**
169
+ * Convert Date to Bitrix24 REST API FORMAT Y-m-d\TH:i:sP
170
+ * @param date
171
+ */
172
+ toB24Format(date) {
173
+ if (typeof date === "string") {
174
+ return date;
175
+ } else if (date instanceof Date) {
176
+ return this.toB24Format(DateTime.fromJSDate(date));
177
+ }
178
+ return date.toFormat("yyyy-MM-dd'T'HH:mm:ssZZ");
179
+ }
180
+ getDateForLog() {
181
+ const now = DateTime.now();
182
+ return now.toFormat("y-MM-dd HH:mm:ss");
183
+ }
184
+ buildQueryString(params) {
185
+ let result = "";
186
+ for (const key in params) {
187
+ if (!Object.prototype.hasOwnProperty.call(params, key)) {
188
+ continue;
189
+ }
190
+ const value = params[key];
191
+ if (Type.isArray(value)) {
192
+ value.forEach((valueElement, index) => {
193
+ result += encodeURIComponent(key + "[" + index + "]") + "=" + encodeURIComponent(valueElement) + "&";
194
+ });
195
+ } else {
196
+ result += encodeURIComponent(key) + "=" + encodeURIComponent(value) + "&";
197
+ }
198
+ }
199
+ if (result.length > 0) {
200
+ result = result.substring(0, result.length - 1);
201
+ }
202
+ return result;
203
+ }
204
+ }
205
+ const Text = new TextManager();
206
+
207
+ export { Text };
208
+ //# sourceMappingURL=text.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.mjs","sources":["../../../src/tools/text.ts"],"sourcesContent":["import type { DateTimeOptions } from 'luxon'\nimport { DateTime } from 'luxon'\nimport uuidv7 from './uuidv7'\nimport { Type } from './type'\n\nconst reEscape = /[&<>'\"]/g\nconst reUnescape = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34)/g\n\nconst escapeEntities: Record<string, string> = {\n '&': '&amp',\n '<': '&lt',\n '>': '&gt',\n '\\'': '&#39',\n '\"': '&quot'\n}\n\nconst unescapeEntities: Record<string, string> = {\n '&amp': '&',\n '&#38': '&',\n '&lt': '<',\n '&#60': '<',\n '&gt': '>',\n '&#62': '>',\n '&apos': '\\'',\n '&#39': '\\'',\n '&quot': '\"',\n '&#34': '\"'\n}\n\n/**\n * The `Text` class provides a set of utility methods for working with text data.\n * It includes functions for encoding and decoding HTML entities, generating random strings,\n * converting values to different data types, and changing the case and format of strings\n *\n * @see bitrix/js/main/core/src/lib/text.js\n */\nclass TextManager {\n getRandom(length = 8): string {\n return [...Array(length)]\n .map(() => Math.trunc(Math.random() * 36).toString(36))\n .join('')\n }\n\n /**\n * Generates UUID\n */\n getUniqId(): string {\n return 'xxxxxxxx-xlsx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = Math.trunc(Math.random() * 16)\n const v = c === 'x' ? r : (r & 0x3) | 0x8\n return v.toString(16)\n })\n }\n\n /**\n * Generate uuid v7\n * @return {string}\n */\n getUuidRfc4122(): string {\n return uuidv7()\n }\n\n /**\n * Encodes all unsafe entities\n * @param {string} value\n * @return {string}\n */\n encode(value: string): string {\n if (Type.isString(value)) {\n return value.replace(reEscape, item => escapeEntities[item]!)\n }\n\n return value\n }\n\n /**\n * Decodes all encoded entities\n * @param {string} value\n * @return {string}\n */\n decode(value: string): string {\n if (Type.isString(value)) {\n return value.replace(reUnescape, item => unescapeEntities[item]!)\n }\n\n return value\n }\n\n toNumber(value: any): number {\n const parsedValue = Number.parseFloat(value)\n\n if (Type.isNumber(parsedValue)) {\n return parsedValue\n }\n\n return 0.0\n }\n\n toInteger(value: any): number {\n return this.toNumber(Number.parseInt(value, 10))\n }\n\n toBoolean(value: any, trueValues: string[] = []): boolean {\n const transformedValue = Type.isString(value) ? value.toLowerCase() : value\n return ['true', 'y', '1', 1, true, ...trueValues].includes(transformedValue)\n }\n\n toCamelCase(str: string): string {\n if (!Type.isStringFilled(str)) {\n return str\n }\n\n const regex = /[-_\\s]+(.)?/g\n if (!regex.test(str)) {\n return str.match(/^[A-Z]+$/)\n ? str.toLowerCase()\n : str[0]!.toLowerCase() + str.slice(1)\n }\n\n str = str.toLowerCase()\n str = str.replace(regex, (_match: string, letter) =>\n letter ? letter.toUpperCase() : ''\n )\n\n return str[0]!.toLowerCase() + str.substring(1)\n }\n\n toPascalCase(str: string): string {\n if (!Type.isStringFilled(str)) {\n return str\n }\n\n return this.capitalize(this.toCamelCase(str))\n }\n\n toKebabCase(str: string): string {\n if (!Type.isStringFilled(str)) {\n return str\n }\n\n const matches = str.match(\n /[A-Z]{2,}(?=[A-Z][a-z]+\\d*|\\b)|[A-Z]?[a-z]+\\d*|[A-Z]|\\d+/g\n )\n if (!matches) {\n return str\n }\n\n return matches.map(x => x.toLowerCase()).join('-')\n }\n\n capitalize(str: string): string {\n if (!Type.isStringFilled(str)) {\n return str\n }\n\n return str[0]!.toUpperCase() + str.substring(1)\n }\n\n numberFormat(\n number: number,\n decimals: number = 0,\n decPoint: string = '.',\n thousandsSep: string = ','\n ): string {\n const n = !Number.isFinite(number) ? 0 : number\n\n const fractionDigits = !Number.isFinite(decimals) ? 0 : Math.abs(decimals)\n\n const toFixedFix = (n: number, fractionDigits: number): number => {\n const k = Math.pow(10, fractionDigits)\n return Math.round(n * k) / k\n }\n\n const s = (fractionDigits ? toFixedFix(n, fractionDigits) : Math.round(n))\n .toString()\n .split('.')\n\n if (s[0] && s[0].length > 3) {\n s[0] = s[0].replace(/\\B(?=(?:\\d{3})+(?!\\d))/g, thousandsSep)\n }\n\n if ((s[1] || '').length < fractionDigits) {\n s[1] = s[1] || ''\n // eslint-disable-next-line\n s[1] += new Array(fractionDigits - s[1].length + 1).join('0')\n }\n\n return s.join(decPoint)\n }\n\n /**\n * Convert string to DateTime from ISO 8601 or self template\n *\n * @param {string} dateString\n * @param {string} template\n * @param opts\n * @returns {DateTime} Convert string to DateTime from ISO 8601 or self template\n *\n * @link https://moment.github.io/luxon/#/parsing?id=parsing-technical-formats\n */\n toDateTime(\n dateString: string,\n template?: string,\n opts?: DateTimeOptions\n ): DateTime {\n if (!(typeof template === 'undefined') && Type.isStringFilled(template)) {\n return DateTime.fromFormat(dateString, template, opts)\n }\n\n return DateTime.fromISO(dateString, opts)\n }\n\n /**\n * Convert Date to Bitrix24 REST API FORMAT Y-m-d\\TH:i:sP\n * @param date\n */\n toB24Format(\n date: string | DateTime | Date\n ): string {\n if (typeof date === 'string') {\n return date\n } else if (date instanceof Date) {\n return this.toB24Format(DateTime.fromJSDate(date))\n }\n return date.toFormat('yyyy-MM-dd\\'T\\'HH:mm:ssZZ')\n }\n\n getDateForLog(): string {\n const now = DateTime.now()\n return now.toFormat('y-MM-dd HH:mm:ss')\n }\n\n buildQueryString(params: any): string {\n let result = ''\n for (const key in params) {\n if (!Object.prototype.hasOwnProperty.call(params, key)) {\n continue\n }\n\n const value = params[key]\n if (Type.isArray(value)) {\n value.forEach((valueElement: any, index: any) => {\n result\n += encodeURIComponent(key + '[' + index + ']')\n + '='\n + encodeURIComponent(valueElement)\n + '&'\n })\n } else {\n result\n += encodeURIComponent(key) + '=' + encodeURIComponent(value) + '&'\n }\n }\n\n if (result.length > 0) {\n result = result.substring(0, result.length - 1)\n }\n\n return result\n }\n}\n\nexport const Text = new TextManager()\n"],"names":["n","fractionDigits"],"mappings":"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"}
@@ -0,0 +1,337 @@
1
+ /**
2
+ * @package @bitrix24/b24jssdk
3
+ * @version 1.0.1
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
+ const OBJECT_CONSTRUCTOR_STRING = Function.prototype.toString.call(Object);
12
+ class TypeManager {
13
+ static {
14
+ __name(this, "TypeManager");
15
+ }
16
+ getTag(value) {
17
+ return Object.prototype.toString.call(value);
18
+ }
19
+ /**
20
+ * Checks that value is string
21
+ * @param value
22
+ * @return {boolean}
23
+ *
24
+ * @memo get from pull.client.Utils
25
+ */
26
+ isString(value) {
27
+ return typeof value === "string" || value instanceof String;
28
+ }
29
+ /**
30
+ * Returns true if a value is not an empty string
31
+ * @param value
32
+ * @returns {boolean} Returns true if a value is not an empty string
33
+ */
34
+ isStringFilled(value) {
35
+ return this.isString(value) && value !== "";
36
+ }
37
+ /**
38
+ * Checks that value is function
39
+ * @param value
40
+ * @return {boolean}
41
+ *
42
+ * @memo get from pull.client.Utils
43
+ */
44
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
45
+ isFunction(value) {
46
+ return value === null ? false : typeof value === "function" || value instanceof Function;
47
+ }
48
+ /**
49
+ * Checks that value is an object
50
+ * @param value
51
+ * @return {boolean}
52
+ */
53
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
54
+ isObject(value) {
55
+ return !!value && (typeof value === "object" || typeof value === "function");
56
+ }
57
+ /**
58
+ * Checks that value is object like
59
+ * @param value
60
+ * @return {boolean}
61
+ */
62
+ isObjectLike(value) {
63
+ return !!value && typeof value === "object";
64
+ }
65
+ /**
66
+ * Checks that value is plain object
67
+ * @param value
68
+ * @return {boolean}
69
+ */
70
+ isPlainObject(value) {
71
+ if (!this.isObjectLike(value) || this.getTag(value) !== "[object Object]") {
72
+ return false;
73
+ }
74
+ const proto = Object.getPrototypeOf(value);
75
+ if (proto === null) {
76
+ return true;
77
+ }
78
+ const ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor;
79
+ return typeof ctor === "function" && Function.prototype.toString.call(ctor) === OBJECT_CONSTRUCTOR_STRING;
80
+ }
81
+ isJsonRpcRequest(value) {
82
+ return typeof value === "object" && value && "jsonrpc" in value && this.isStringFilled(value.jsonrpc) && "method" in value && this.isStringFilled(value.method);
83
+ }
84
+ isJsonRpcResponse(value) {
85
+ return typeof value === "object" && value && "jsonrpc" in value && this.isStringFilled(value.jsonrpc) && "id" in value && ("result" in value || "error" in value);
86
+ }
87
+ /**
88
+ * Checks that value is boolean
89
+ * @param value
90
+ * @return {boolean}
91
+ */
92
+ isBoolean(value) {
93
+ return value === true || value === false;
94
+ }
95
+ /**
96
+ * Checks that value is number
97
+ * @param value
98
+ * @return {boolean}
99
+ */
100
+ isNumber(value) {
101
+ return typeof value === "number" && !Number.isNaN(value);
102
+ }
103
+ /**
104
+ * Checks that value is integer
105
+ * @param value
106
+ * @return {boolean}
107
+ */
108
+ isInteger(value) {
109
+ return Number.isInteger(value);
110
+ }
111
+ /**
112
+ * Checks that value is float
113
+ * @param value
114
+ * @return {boolean}
115
+ */
116
+ isFloat(value) {
117
+ return this.isNumber(value) && !this.isInteger(value);
118
+ }
119
+ /**
120
+ * Checks that value is nil
121
+ * @param value
122
+ * @return {boolean}
123
+ */
124
+ isNil(value) {
125
+ return value === null || value === void 0;
126
+ }
127
+ /**
128
+ * Checks that value is an array
129
+ * @param value
130
+ * @return {boolean}
131
+ */
132
+ isArray(value) {
133
+ return !this.isNil(value) && Array.isArray(value);
134
+ }
135
+ /**
136
+ * Returns true if a value is an array, and it has at least one element
137
+ * @param value
138
+ * @returns {boolean} Returns true if a value is an array, and it has at least one element
139
+ */
140
+ isArrayFilled(value) {
141
+ return this.isArray(value) && value.length > 0;
142
+ }
143
+ /**
144
+ * Checks that value is array like
145
+ * @param value
146
+ * @return {boolean}
147
+ */
148
+ isArrayLike(value) {
149
+ return !this.isNil(value) && !this.isFunction(value) && value.length > -1 && value.length <= Number.MAX_SAFE_INTEGER;
150
+ }
151
+ /**
152
+ * Checks that value is Date
153
+ * @param value
154
+ * @return {boolean}
155
+ */
156
+ isDate(value) {
157
+ return value instanceof Date;
158
+ }
159
+ /**
160
+ * Checks that is a DOM node
161
+ * @param value
162
+ * @return {boolean}
163
+ */
164
+ isDomNode(value) {
165
+ return this.isObjectLike(value) && !this.isPlainObject(value) && "nodeType" in value;
166
+ }
167
+ /**
168
+ * Checks that value is element node
169
+ * @param value
170
+ * @return {boolean}
171
+ */
172
+ isElementNode(value) {
173
+ return this.isDomNode(value) && value.nodeType === Node.ELEMENT_NODE;
174
+ }
175
+ /**
176
+ * Checks that value is a text node
177
+ * @param value
178
+ * @return {boolean}
179
+ */
180
+ isTextNode(value) {
181
+ return this.isDomNode(value) && value.nodeType === Node.TEXT_NODE;
182
+ }
183
+ /**
184
+ * Checks that value is Map
185
+ * @param value
186
+ * @return {boolean}
187
+ */
188
+ isMap(value) {
189
+ return this.isObjectLike(value) && this.getTag(value) === "[object Map]";
190
+ }
191
+ /**
192
+ * Checks that value is Set
193
+ * @param value
194
+ * @return {boolean}
195
+ */
196
+ isSet(value) {
197
+ return this.isObjectLike(value) && this.getTag(value) === "[object Set]";
198
+ }
199
+ /**
200
+ * Checks that value is WeakMap
201
+ * @param value
202
+ * @return {boolean}
203
+ */
204
+ isWeakMap(value) {
205
+ return this.isObjectLike(value) && this.getTag(value) === "[object WeakMap]";
206
+ }
207
+ /**
208
+ * Checks that value is WeakSet
209
+ * @param value
210
+ * @return {boolean}
211
+ */
212
+ isWeakSet(value) {
213
+ return this.isObjectLike(value) && this.getTag(value) === "[object WeakSet]";
214
+ }
215
+ /**
216
+ * Checks that value is prototype
217
+ * @param value
218
+ * @return {boolean}
219
+ */
220
+ isPrototype(value) {
221
+ return (typeof (value && value.constructor) === "function" && value.constructor.prototype || Object.prototype) === value;
222
+ }
223
+ /**
224
+ * Checks that value is regexp
225
+ * @param value
226
+ * @return {boolean}
227
+ */
228
+ isRegExp(value) {
229
+ return this.isObjectLike(value) && this.getTag(value) === "[object RegExp]";
230
+ }
231
+ /**
232
+ * Checks that value is null
233
+ * @param value
234
+ * @return {boolean}
235
+ */
236
+ isNull(value) {
237
+ return value === null;
238
+ }
239
+ /**
240
+ * Checks that value is undefined
241
+ * @param value
242
+ * @return {boolean}
243
+ */
244
+ isUndefined(value) {
245
+ return typeof value === "undefined";
246
+ }
247
+ /**
248
+ * Checks that value is ArrayBuffer
249
+ * @param value
250
+ * @return {boolean}
251
+ */
252
+ isArrayBuffer(value) {
253
+ return this.isObjectLike(value) && this.getTag(value) === "[object ArrayBuffer]";
254
+ }
255
+ /**
256
+ * Checks that value is typed array
257
+ * @param value
258
+ * @return {boolean}
259
+ */
260
+ isTypedArray(value) {
261
+ const regExpTypedTag = /^\[object (?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)\]$/;
262
+ return this.isObjectLike(value) && regExpTypedTag.test(this.getTag(value));
263
+ }
264
+ /**
265
+ * Checks that value is Blob
266
+ * @param value
267
+ * @return {boolean}
268
+ */
269
+ isBlob(value) {
270
+ return this.isObjectLike(value) && this.isNumber(value.size) && this.isString(value.type) && this.isFunction(value.slice);
271
+ }
272
+ /**
273
+ * Checks that value is File
274
+ * @param value
275
+ * @return {boolean}
276
+ */
277
+ isFile(value) {
278
+ return this.isBlob(value) && this.isString(value.name) && (this.isNumber(value.lastModified) || this.isObjectLike(value.lastModifiedDate));
279
+ }
280
+ /**
281
+ * Checks that value is FormData
282
+ * @param value
283
+ * @return {boolean}
284
+ */
285
+ isFormData(value) {
286
+ if (typeof FormData !== "undefined" && value instanceof FormData) {
287
+ return true;
288
+ }
289
+ return this.isObjectLike(value) && this.getTag(value) === "[object FormData]";
290
+ }
291
+ clone(obj, bCopyObj = true) {
292
+ let _obj, i, l;
293
+ if (this.isNil(obj) || typeof obj !== "object") {
294
+ return obj;
295
+ }
296
+ if (this.isDomNode(obj)) {
297
+ _obj = obj.cloneNode(bCopyObj);
298
+ } else if (typeof obj == "object") {
299
+ if (this.isArray(obj)) {
300
+ _obj = [];
301
+ for (i = 0, l = obj.length; i < l; i++) {
302
+ if (typeof obj[i] == "object" && bCopyObj) {
303
+ _obj[i] = this.clone(obj[i], bCopyObj);
304
+ } else {
305
+ _obj[i] = obj[i];
306
+ }
307
+ }
308
+ } else {
309
+ _obj = {};
310
+ if (obj.constructor) {
311
+ if (this.isDate(obj)) {
312
+ _obj = new Date(obj);
313
+ } else {
314
+ _obj = new obj.constructor();
315
+ }
316
+ }
317
+ for (i in obj) {
318
+ if (!Object.prototype.hasOwnProperty.call(obj, i)) {
319
+ continue;
320
+ }
321
+ if (typeof obj[i] === "object" && bCopyObj) {
322
+ _obj[i] = this.clone(obj[i], bCopyObj);
323
+ } else {
324
+ _obj[i] = obj[i];
325
+ }
326
+ }
327
+ }
328
+ } else {
329
+ _obj = obj;
330
+ }
331
+ return _obj;
332
+ }
333
+ }
334
+ const Type = new TypeManager();
335
+
336
+ export { Type };
337
+ //# sourceMappingURL=type.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.mjs","sources":["../../../src/tools/type.ts"],"sourcesContent":["const OBJECT_CONSTRUCTOR_STRING = Function.prototype.toString.call(Object)\n\ninterface BlobLike {\n readonly size: number\n readonly type: string\n slice(start?: number, end?: number, contentType?: string): Blob\n}\n\ninterface FileLike extends BlobLike {\n name: string\n lastModified?: number\n lastModifiedDate?: object\n}\n\n/**\n * The `Type` class is designed to check and determine data types\n *\n * @see bitrix/js/main/core/src/lib/type.js\n */\nclass TypeManager {\n getTag(value: any): string {\n return Object.prototype.toString.call(value)\n }\n\n /**\n * Checks that value is string\n * @param value\n * @return {boolean}\n *\n * @memo get from pull.client.Utils\n */\n isString(value: any): value is string {\n return typeof value === 'string' || value instanceof String\n }\n\n /**\n * Returns true if a value is not an empty string\n * @param value\n * @returns {boolean} Returns true if a value is not an empty string\n */\n isStringFilled(value: any): value is string {\n return this.isString(value) && value !== ''\n }\n\n /**\n * Checks that value is function\n * @param value\n * @return {boolean}\n *\n * @memo get from pull.client.Utils\n */\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n isFunction(value: any): value is Function {\n return value === null\n ? false\n : typeof value === 'function' || value instanceof Function\n }\n\n /**\n * Checks that value is an object\n * @param value\n * @return {boolean}\n */\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n isObject(value: any): value is object | Function {\n return !!value && (typeof value === 'object' || typeof value === 'function')\n }\n\n /**\n * Checks that value is object like\n * @param value\n * @return {boolean}\n */\n isObjectLike<T>(value: any): value is T {\n return !!value && typeof value === 'object'\n }\n\n /**\n * Checks that value is plain object\n * @param value\n * @return {boolean}\n */\n isPlainObject(value: any): value is Record<string | number, any> {\n if (!this.isObjectLike(value) || this.getTag(value) !== '[object Object]') {\n return false\n }\n\n const proto = Object.getPrototypeOf(value)\n if (proto === null) {\n return true\n }\n\n const ctor = Object.prototype.hasOwnProperty.call(proto, 'constructor') && proto.constructor\n\n return (\n typeof ctor === 'function'\n && Function.prototype.toString.call(ctor) === OBJECT_CONSTRUCTOR_STRING\n )\n }\n\n isJsonRpcRequest(value: any): boolean {\n return (\n typeof value === 'object'\n && value\n && 'jsonrpc' in value\n && this.isStringFilled(value.jsonrpc)\n && 'method' in value\n && this.isStringFilled(value.method)\n )\n }\n\n isJsonRpcResponse(value: any): boolean {\n return (\n typeof value === 'object'\n && value\n && 'jsonrpc' in value\n && this.isStringFilled(value.jsonrpc)\n && 'id' in value\n && ('result' in value || 'error' in value)\n )\n }\n\n /**\n * Checks that value is boolean\n * @param value\n * @return {boolean}\n */\n isBoolean(value: any): value is boolean {\n return value === true || value === false\n }\n\n /**\n * Checks that value is number\n * @param value\n * @return {boolean}\n */\n isNumber(value: any): value is number {\n return typeof value === 'number' && !Number.isNaN(value)\n }\n\n /**\n * Checks that value is integer\n * @param value\n * @return {boolean}\n */\n isInteger(value: any): value is number {\n return Number.isInteger(value)\n }\n\n /**\n * Checks that value is float\n * @param value\n * @return {boolean}\n */\n isFloat(value: any): value is number {\n return this.isNumber(value) && !this.isInteger(value)\n }\n\n /**\n * Checks that value is nil\n * @param value\n * @return {boolean}\n */\n isNil(value: any): value is null | undefined {\n return value === null || value === undefined\n }\n\n /**\n * Checks that value is an array\n * @param value\n * @return {boolean}\n */\n isArray(value: any): value is any[] {\n return !this.isNil(value) && Array.isArray(value)\n }\n\n /**\n * Returns true if a value is an array, and it has at least one element\n * @param value\n * @returns {boolean} Returns true if a value is an array, and it has at least one element\n */\n isArrayFilled(value: any): value is any[] {\n return this.isArray(value) && value.length > 0\n }\n\n /**\n * Checks that value is array like\n * @param value\n * @return {boolean}\n */\n isArrayLike(value: any): value is ArrayLike<any> {\n return (\n !this.isNil(value)\n && !this.isFunction(value)\n && value.length > -1\n && value.length <= Number.MAX_SAFE_INTEGER\n )\n }\n\n /**\n * Checks that value is Date\n * @param value\n * @return {boolean}\n */\n isDate(value: any): value is Date {\n return value instanceof Date\n }\n\n /**\n * Checks that is a DOM node\n * @param value\n * @return {boolean}\n */\n isDomNode(value: any): value is Node {\n return (\n this.isObjectLike<{\n nodeType?: any\n }>(value)\n && !this.isPlainObject(value)\n && 'nodeType' in value\n )\n }\n\n /**\n * Checks that value is element node\n * @param value\n * @return {boolean}\n */\n isElementNode(value: any): value is HTMLElement {\n return this.isDomNode(value) && value.nodeType === Node.ELEMENT_NODE\n }\n\n /**\n * Checks that value is a text node\n * @param value\n * @return {boolean}\n */\n isTextNode(value: any): value is Text {\n return this.isDomNode(value) && value.nodeType === Node.TEXT_NODE\n }\n\n /**\n * Checks that value is Map\n * @param value\n * @return {boolean}\n */\n isMap(value: any): value is Map<unknown, unknown> {\n return this.isObjectLike(value) && this.getTag(value) === '[object Map]'\n }\n\n /**\n * Checks that value is Set\n * @param value\n * @return {boolean}\n */\n isSet(value: any): value is Set<unknown> {\n return this.isObjectLike(value) && this.getTag(value) === '[object Set]'\n }\n\n /**\n * Checks that value is WeakMap\n * @param value\n * @return {boolean}\n */\n isWeakMap(value: any): value is WeakMap<object, unknown> {\n return this.isObjectLike(value) && this.getTag(value) === '[object WeakMap]'\n }\n\n /**\n * Checks that value is WeakSet\n * @param value\n * @return {boolean}\n */\n isWeakSet(value: any): value is WeakSet<object> {\n return this.isObjectLike(value) && this.getTag(value) === '[object WeakSet]'\n }\n\n /**\n * Checks that value is prototype\n * @param value\n * @return {boolean}\n */\n isPrototype(value: any): value is object {\n return (\n (\n (\n typeof (value && value.constructor) === 'function'\n && value.constructor.prototype\n ) || Object.prototype\n ) === value\n )\n }\n\n /**\n * Checks that value is regexp\n * @param value\n * @return {boolean}\n */\n isRegExp(value: any): value is RegExp {\n return this.isObjectLike(value) && this.getTag(value) === '[object RegExp]'\n }\n\n /**\n * Checks that value is null\n * @param value\n * @return {boolean}\n */\n isNull(value: any): value is null {\n return value === null\n }\n\n /**\n * Checks that value is undefined\n * @param value\n * @return {boolean}\n */\n isUndefined(value: any): value is undefined {\n return typeof value === 'undefined'\n }\n\n /**\n * Checks that value is ArrayBuffer\n * @param value\n * @return {boolean}\n */\n isArrayBuffer(value: any): value is ArrayBuffer {\n return (\n this.isObjectLike(value) && this.getTag(value) === '[object ArrayBuffer]'\n )\n }\n\n /**\n * Checks that value is typed array\n * @param value\n * @return {boolean}\n */\n isTypedArray(value: any): value is\n | Int8Array\n | Uint8Array\n | Uint8ClampedArray\n | Int16Array\n | Uint16Array\n | Int32Array\n | Uint32Array\n | Float32Array\n | Float64Array {\n const regExpTypedTag\n = /^\\[object (?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)\\]$/\n return this.isObjectLike(value) && regExpTypedTag.test(this.getTag(value))\n }\n\n /**\n * Checks that value is Blob\n * @param value\n * @return {boolean}\n */\n isBlob(value: any): value is BlobLike {\n return (\n this.isObjectLike(value)\n && this.isNumber((value as BlobLike).size)\n && this.isString((value as BlobLike).type)\n && this.isFunction((value as BlobLike).slice)\n )\n }\n\n /**\n * Checks that value is File\n * @param value\n * @return {boolean}\n */\n isFile(value: any): value is FileLike {\n return (\n this.isBlob(value)\n && this.isString((value as FileLike).name)\n && (this.isNumber((value as FileLike).lastModified) || this.isObjectLike((value as FileLike).lastModifiedDate))\n )\n }\n\n /**\n * Checks that value is FormData\n * @param value\n * @return {boolean}\n */\n isFormData(value: any): value is FormData {\n if (typeof FormData !== 'undefined' && value instanceof FormData) {\n return true\n }\n\n return this.isObjectLike(value) && this.getTag(value) === '[object FormData]'\n }\n\n clone(obj: any, bCopyObj: boolean = true): any {\n let _obj, i, l\n\n if (this.isNil(obj) || typeof obj !== 'object') {\n return obj\n }\n\n if (this.isDomNode(obj)) {\n _obj = obj.cloneNode(bCopyObj)\n } else if (typeof obj == 'object') {\n if (this.isArray(obj)) {\n _obj = []\n for (i = 0, l = obj.length; i < l; i++) {\n if (typeof obj[i] == 'object' && bCopyObj) {\n _obj[i] = this.clone(obj[i], bCopyObj)\n } else {\n _obj[i] = obj[i]\n }\n }\n } else {\n _obj = {}\n if (obj.constructor) {\n if (this.isDate(obj)) {\n _obj = new Date(obj)\n } else {\n _obj = new obj.constructor()\n }\n }\n\n for (i in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i)) {\n continue\n }\n if (typeof obj[i] === 'object' && bCopyObj) {\n _obj[i] = this.clone(obj[i], bCopyObj)\n } else {\n _obj[i] = obj[i]\n }\n }\n }\n } else {\n _obj = obj\n }\n\n return _obj\n }\n}\n\nexport const Type = new TypeManager()\n"],"names":[],"mappings":"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"}