@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 @@
1
+ {"version":3,"file":"winston-adapter.mjs","sources":["../../../../src/logger/handler/winston-adapter.ts"],"sourcesContent":["import type { Handler, HandlerOptions, LogRecord, Formatter, LogLevelName } from '../../types/logger'\nimport { LogLevel } from '../../types/logger'\nimport { AbstractHandler } from './abstract-handler'\n\nexport interface WinstonAdapterOptions extends HandlerOptions {\n winstonLogger: any\n}\n\n/**\n * Adapter for Winston\n *\n * @memo Winston has its own formatter\n * @link https://github.com/winstonjs/winston\n */\nexport class WinstonAdapter extends AbstractHandler implements Handler {\n private winstonLogger: any\n\n constructor(\n level: LogLevel = LogLevel.DEBUG,\n options: WinstonAdapterOptions\n ) {\n const opts = {\n bubble: true,\n ...options\n }\n\n super(level, opts.bubble)\n this.winstonLogger = opts.winstonLogger\n }\n\n public override setFormatter(_formatter: Formatter): void {\n // Consola has its own formatter\n }\n\n public override getFormatter(): Formatter | null {\n return null\n }\n\n public override async handle(record: LogRecord): Promise<boolean> {\n const levelMap: Record<LogLevelName, string> = {\n DEBUG: 'debug',\n INFO: 'info',\n NOTICE: 'notice',\n WARNING: 'warn',\n ERROR: 'error',\n CRITICAL: 'error',\n ALERT: 'error',\n EMERGENCY: 'error'\n }\n\n const winstonLevel = levelMap[record.levelName] || levelMap.INFO\n\n this.winstonLogger.log({\n level: winstonLevel,\n channel: record.channel,\n message: record.message,\n context: record.context,\n extra: record.extra,\n timestamp: record.timestamp\n })\n\n return true\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;AAcO,MAAM,uBAAuB,eAAA,CAAmC;AAAA,EAdvE;AAcuE,IAAA,MAAA,CAAA,IAAA,EAAA,gBAAA,CAAA;AAAA;AAAA,EAC7D,aAAA;AAAA,EAER,WAAA,CACE,KAAA,GAAkB,QAAA,CAAS,KAAA,EAC3B,OAAA,EACA;AACA,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,MAAA,EAAQ,IAAA;AAAA,MACR,GAAG;AAAA,KACL;AAEA,IAAA,KAAA,CAAM,KAAA,EAAO,KAAK,MAAM,CAAA;AACxB,IAAA,IAAA,CAAK,gBAAgB,IAAA,CAAK,aAAA;AAAA,EAC5B;AAAA,EAEgB,aAAa,UAAA,EAA6B;AAAA,EAE1D;AAAA,EAEgB,YAAA,GAAiC;AAC/C,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,MAAsB,OAAO,MAAA,EAAqC;AAChE,IAAA,MAAM,QAAA,GAAyC;AAAA,MAC7C,KAAA,EAAO,OAAA;AAAA,MACP,IAAA,EAAM,MAAA;AAAA,MACN,MAAA,EAAQ,QAAA;AAAA,MACR,OAAA,EAAS,MAAA;AAAA,MACT,KAAA,EAAO,OAAA;AAAA,MACP,QAAA,EAAU,OAAA;AAAA,MACV,KAAA,EAAO,OAAA;AAAA,MACP,SAAA,EAAW;AAAA,KACb;AAEA,IAAA,MAAM,YAAA,GAAe,QAAA,CAAS,MAAA,CAAO,SAAS,KAAK,QAAA,CAAS,IAAA;AAE5D,IAAA,IAAA,CAAK,cAAc,GAAA,CAAI;AAAA,MACrB,KAAA,EAAO,YAAA;AAAA,MACP,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,OAAO,MAAA,CAAO,KAAA;AAAA,MACd,WAAW,MAAA,CAAO;AAAA,KACnB,CAAA;AAED,IAAA,OAAO,IAAA;AAAA,EACT;AACF;;;;"}
@@ -0,0 +1,67 @@
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 { LogLevel } from '../types/logger.mjs';
10
+ import { Logger } from './logger.mjs';
11
+ import { NullLogger } from './null-logger.mjs';
12
+ import { ConsoleV2Handler } from './handler/console-v2-handler.mjs';
13
+
14
+ var __defProp = Object.defineProperty;
15
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
16
+ class LoggerFactory {
17
+ static {
18
+ __name(this, "LoggerFactory");
19
+ }
20
+ static createNullLogger() {
21
+ return NullLogger.create();
22
+ }
23
+ static createForBrowser(channel, isDevMode = false) {
24
+ if (isDevMode) {
25
+ return LoggerFactory.createForBrowserDevelopment(channel);
26
+ }
27
+ return LoggerFactory.createForBrowserProduction(channel);
28
+ }
29
+ static createForBrowserDevelopment(channel, level = LogLevel.DEBUG) {
30
+ const logger = new Logger(channel);
31
+ const handler = new ConsoleV2Handler(level);
32
+ logger.pushHandler(handler);
33
+ return logger;
34
+ }
35
+ static createForBrowserProduction(channel, level = LogLevel.ERROR) {
36
+ const logger = new Logger(channel);
37
+ const handler = new ConsoleV2Handler(level);
38
+ logger.pushHandler(handler);
39
+ return logger;
40
+ }
41
+ static async forcedLog(logger, action, message, context) {
42
+ if (typeof globalThis !== "undefined" && "vitest" in globalThis) {
43
+ return;
44
+ }
45
+ if (logger instanceof NullLogger) {
46
+ switch (action) {
47
+ case "debug":
48
+ console.log(message, context);
49
+ return;
50
+ case "info":
51
+ case "notice":
52
+ console.info(message, context);
53
+ return;
54
+ case "warning":
55
+ console.warn(message, context);
56
+ return;
57
+ default:
58
+ console.error(message, context);
59
+ return;
60
+ }
61
+ }
62
+ return logger[action](message, context);
63
+ }
64
+ }
65
+
66
+ export { LoggerFactory };
67
+ //# sourceMappingURL=logger-factory.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger-factory.mjs","sources":["../../../src/logger/logger-factory.ts"],"sourcesContent":["import type { LoggerInterface } from '../types/logger'\nimport { LogLevel } from '../types/logger'\nimport { Logger } from './logger'\nimport { NullLogger } from './null-logger'\nimport { ConsoleV2Handler } from './handler'\n\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport class LoggerFactory {\n static createNullLogger(): LoggerInterface {\n return NullLogger.create()\n }\n\n static createForBrowser(channel: string, isDevMode: boolean = false): LoggerInterface {\n if (isDevMode) {\n return LoggerFactory.createForBrowserDevelopment(channel)\n }\n\n return LoggerFactory.createForBrowserProduction(channel)\n }\n\n static createForBrowserDevelopment(channel: string, level: LogLevel = LogLevel.DEBUG): LoggerInterface {\n const logger = new Logger(channel)\n const handler = new ConsoleV2Handler(level)\n logger.pushHandler(handler)\n return logger\n }\n\n static createForBrowserProduction(channel: string, level: LogLevel = LogLevel.ERROR): LoggerInterface {\n const logger = new Logger(channel)\n const handler = new ConsoleV2Handler(level)\n logger.pushHandler(handler)\n return logger\n }\n\n static async forcedLog(\n logger: LoggerInterface,\n action: 'debug' | 'info' | 'notice' | 'warning' | 'error' | 'critical' | 'alert' | 'emergency',\n message: string,\n context: Record<string, any>\n ): Promise<void> {\n if (typeof globalThis !== 'undefined' && 'vitest' in globalThis) {\n return\n }\n\n if (logger instanceof NullLogger) {\n switch (action) {\n case 'debug':\n console.log(message, context)\n return\n case 'info':\n case 'notice':\n console.info(message, context)\n return\n case 'warning':\n console.warn(message, context)\n return\n default:\n console.error(message, context)\n return\n }\n }\n\n return logger[action](message, context)\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAOO,MAAM,aAAA,CAAc;AAAA,EAP3B;AAO2B,IAAA,MAAA,CAAA,IAAA,EAAA,eAAA,CAAA;AAAA;AAAA,EACzB,OAAO,gBAAA,GAAoC;AACzC,IAAA,OAAO,WAAW,MAAA,EAAO;AAAA,EAC3B;AAAA,EAEA,OAAO,gBAAA,CAAiB,OAAA,EAAiB,SAAA,GAAqB,KAAA,EAAwB;AACpF,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,OAAO,aAAA,CAAc,4BAA4B,OAAO,CAAA;AAAA,IAC1D;AAEA,IAAA,OAAO,aAAA,CAAc,2BAA2B,OAAO,CAAA;AAAA,EACzD;AAAA,EAEA,OAAO,2BAAA,CAA4B,OAAA,EAAiB,KAAA,GAAkB,SAAS,KAAA,EAAwB;AACrG,IAAA,MAAM,MAAA,GAAS,IAAI,MAAA,CAAO,OAAO,CAAA;AACjC,IAAA,MAAM,OAAA,GAAU,IAAI,gBAAA,CAAiB,KAAK,CAAA;AAC1C,IAAA,MAAA,CAAO,YAAY,OAAO,CAAA;AAC1B,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEA,OAAO,0BAAA,CAA2B,OAAA,EAAiB,KAAA,GAAkB,SAAS,KAAA,EAAwB;AACpG,IAAA,MAAM,MAAA,GAAS,IAAI,MAAA,CAAO,OAAO,CAAA;AACjC,IAAA,MAAM,OAAA,GAAU,IAAI,gBAAA,CAAiB,KAAK,CAAA;AAC1C,IAAA,MAAA,CAAO,YAAY,OAAO,CAAA;AAC1B,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEA,aAAa,SAAA,CACX,MAAA,EACA,MAAA,EACA,SACA,OAAA,EACe;AACf,IAAA,IAAI,OAAO,UAAA,KAAe,WAAA,IAAe,QAAA,IAAY,UAAA,EAAY;AAC/D,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,kBAAkB,UAAA,EAAY;AAChC,MAAA,QAAQ,MAAA;AAAQ,QACd,KAAK,OAAA;AACH,UAAA,OAAA,CAAQ,GAAA,CAAI,SAAS,OAAO,CAAA;AAC5B,UAAA;AAAA,QACF,KAAK,MAAA;AAAA,QACL,KAAK,QAAA;AACH,UAAA,OAAA,CAAQ,IAAA,CAAK,SAAS,OAAO,CAAA;AAC7B,UAAA;AAAA,QACF,KAAK,SAAA;AACH,UAAA,OAAA,CAAQ,IAAA,CAAK,SAAS,OAAO,CAAA;AAC7B,UAAA;AAAA,QACF;AACE,UAAA,OAAA,CAAQ,KAAA,CAAM,SAAS,OAAO,CAAA;AAC9B,UAAA;AAAA;AACJ,IACF;AAEA,IAAA,OAAO,MAAA,CAAO,MAAM,CAAA,CAAE,OAAA,EAAS,OAAO,CAAA;AAAA,EACxC;AACF;;;;"}
@@ -0,0 +1,76 @@
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 { LogLevel } from '../types/logger.mjs';
10
+ import { AbstractLogger } from './abstract-logger.mjs';
11
+
12
+ var __defProp = Object.defineProperty;
13
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
14
+ class Logger extends AbstractLogger {
15
+ static {
16
+ __name(this, "Logger");
17
+ }
18
+ channel;
19
+ handlers = [];
20
+ processors = [];
21
+ constructor(channel) {
22
+ super();
23
+ this.channel = channel;
24
+ }
25
+ // region static methods for creation ////
26
+ static create(channel) {
27
+ return new Logger(channel);
28
+ }
29
+ // endregion ////
30
+ // region config ////
31
+ pushHandler(handler) {
32
+ this.handlers.push(handler);
33
+ return this;
34
+ }
35
+ popHandler() {
36
+ return this.handlers.pop() || null;
37
+ }
38
+ setHandlers(handlers) {
39
+ this.handlers = handlers;
40
+ return this;
41
+ }
42
+ pushProcessor(processor) {
43
+ this.processors.push(processor);
44
+ return this;
45
+ }
46
+ // endregion ////
47
+ /**
48
+ * @inheritDoc
49
+ */
50
+ async log(level, message, context) {
51
+ const record = {
52
+ channel: this.channel,
53
+ level,
54
+ levelName: LogLevel[level],
55
+ message,
56
+ context: context ?? {},
57
+ extra: {},
58
+ timestamp: /* @__PURE__ */ new Date()
59
+ };
60
+ let processedRecord = record;
61
+ for (const processor of this.processors) {
62
+ processedRecord = processor(processedRecord);
63
+ }
64
+ for (const handler of this.handlers) {
65
+ if (handler.isHandling(level)) {
66
+ const handled = await handler.handle(processedRecord);
67
+ if (handled && !handler.shouldBubble()) {
68
+ break;
69
+ }
70
+ }
71
+ }
72
+ }
73
+ }
74
+
75
+ export { Logger };
76
+ //# sourceMappingURL=logger.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.mjs","sources":["../../../src/logger/logger.ts"],"sourcesContent":["import type { Handler, Processor, LogRecord, LogLevelName, LoggerInterface } from '../types/logger'\nimport { LogLevel } from '../types/logger'\nimport { AbstractLogger } from './abstract-logger'\n\n/**\n * A logger created according to the principles of `Monolog`\n *\n * @link https://github.com/Seldaek/monolog\n */\nexport class Logger extends AbstractLogger implements LoggerInterface {\n private readonly channel: string\n private handlers: Handler[] = []\n private processors: Processor[] = []\n\n constructor(channel: string) {\n super()\n this.channel = channel\n }\n\n // region static methods for creation ////\n static create(channel: string): Logger {\n return new Logger(channel)\n }\n // endregion ////\n\n // region config ////\n public pushHandler(handler: Handler): this {\n this.handlers.push(handler)\n return this\n }\n\n public popHandler(): Handler | null {\n return this.handlers.pop() || null\n }\n\n public setHandlers(handlers: Handler[]): this {\n this.handlers = handlers\n return this\n }\n\n public pushProcessor(processor: Processor): this {\n this.processors.push(processor)\n return this\n }\n // endregion ////\n\n /**\n * @inheritDoc\n */\n public async log(level: LogLevel, message: string, context?: Record<string, any>): Promise<void> {\n const record: LogRecord = {\n channel: this.channel,\n level,\n levelName: LogLevel[level] as LogLevelName,\n message,\n context: context ?? {},\n extra: {},\n timestamp: new Date()\n }\n\n // Using processors\n let processedRecord = record\n for (const processor of this.processors) {\n processedRecord = processor(processedRecord)\n }\n\n // Pass the record to the handlers\n for (const handler of this.handlers) {\n if (handler.isHandling(level)) {\n // The handler returns a boolean indicating whether it was processed successfully.\n const handled = await handler.handle(processedRecord)\n\n // If the handler has processed the record and should NOT proceed further (bubble: false)\n // break the chain of handlers\n if (handled && !handler.shouldBubble()) {\n break\n }\n }\n }\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;AASO,MAAM,eAAe,cAAA,CAA0C;AAAA,EATtE;AASsE,IAAA,MAAA,CAAA,IAAA,EAAA,QAAA,CAAA;AAAA;AAAA,EACnD,OAAA;AAAA,EACT,WAAsB,EAAC;AAAA,EACvB,aAA0B,EAAC;AAAA,EAEnC,YAAY,OAAA,EAAiB;AAC3B,IAAA,KAAA,EAAM;AACN,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,EACjB;AAAA;AAAA,EAGA,OAAO,OAAO,OAAA,EAAyB;AACrC,IAAA,OAAO,IAAI,OAAO,OAAO,CAAA;AAAA,EAC3B;AAAA;AAAA;AAAA,EAIO,YAAY,OAAA,EAAwB;AACzC,IAAA,IAAA,CAAK,QAAA,CAAS,KAAK,OAAO,CAAA;AAC1B,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEO,UAAA,GAA6B;AAClC,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,GAAA,EAAI,IAAK,IAAA;AAAA,EAChC;AAAA,EAEO,YAAY,QAAA,EAA2B;AAC5C,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEO,cAAc,SAAA,EAA4B;AAC/C,IAAA,IAAA,CAAK,UAAA,CAAW,KAAK,SAAS,CAAA;AAC9B,IAAA,OAAO,IAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAa,GAAA,CAAI,KAAA,EAAiB,OAAA,EAAiB,OAAA,EAA8C;AAC/F,IAAA,MAAM,MAAA,GAAoB;AAAA,MACxB,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,KAAA;AAAA,MACA,SAAA,EAAW,SAAS,KAAK,CAAA;AAAA,MACzB,OAAA;AAAA,MACA,OAAA,EAAS,WAAW,EAAC;AAAA,MACrB,OAAO,EAAC;AAAA,MACR,SAAA,sBAAe,IAAA;AAAK,KACtB;AAGA,IAAA,IAAI,eAAA,GAAkB,MAAA;AACtB,IAAA,KAAA,MAAW,SAAA,IAAa,KAAK,UAAA,EAAY;AACvC,MAAA,eAAA,GAAkB,UAAU,eAAe,CAAA;AAAA,IAC7C;AAGA,IAAA,KAAA,MAAW,OAAA,IAAW,KAAK,QAAA,EAAU;AACnC,MAAA,IAAI,OAAA,CAAQ,UAAA,CAAW,KAAK,CAAA,EAAG;AAE7B,QAAA,MAAM,OAAA,GAAU,MAAM,OAAA,CAAQ,MAAA,CAAO,eAAe,CAAA;AAIpD,QAAA,IAAI,OAAA,IAAW,CAAC,OAAA,CAAQ,YAAA,EAAa,EAAG;AACtC,UAAA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;;"}
@@ -0,0 +1,32 @@
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 { AbstractLogger } from './abstract-logger.mjs';
10
+
11
+ var __defProp = Object.defineProperty;
12
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
13
+ class NullLogger extends AbstractLogger {
14
+ static {
15
+ __name(this, "NullLogger");
16
+ }
17
+ // region static methods for creation ////
18
+ static create() {
19
+ return new NullLogger();
20
+ }
21
+ // endregion ////
22
+ // region logging methods ////
23
+ /**
24
+ * @inheritDoc
25
+ */
26
+ async log(_level, _message, _context) {
27
+ }
28
+ // endregion ////
29
+ }
30
+
31
+ export { NullLogger };
32
+ //# sourceMappingURL=null-logger.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"null-logger.mjs","sources":["../../../src/logger/null-logger.ts"],"sourcesContent":["import type { LoggerInterface, LogLevel } from '../types/logger'\nimport { AbstractLogger } from './abstract-logger'\n\n/**\n * This Logger can be used to avoid conditional log calls.\n *\n * Logging should always be optional, and if no logger is provided to your\n * library creating a NullLogger instance to have something to throw logs at\n * is a good way to avoid littering your code with `if (this.logger) { }`\n * blocks.\n */\nexport class NullLogger extends AbstractLogger implements LoggerInterface {\n // region static methods for creation ////\n static create(): NullLogger {\n return new NullLogger()\n }\n // endregion ////\n\n // region logging methods ////\n /**\n * @inheritDoc\n */\n public async log(_level: LogLevel, _message: string, _context?: Record<string, any>): Promise<void> {\n // noop\n }\n // endregion ////\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AAWO,MAAM,mBAAmB,cAAA,CAA0C;AAAA,EAX1E;AAW0E,IAAA,MAAA,CAAA,IAAA,EAAA,YAAA,CAAA;AAAA;AAAA;AAAA,EAExE,OAAO,MAAA,GAAqB;AAC1B,IAAA,OAAO,IAAI,UAAA,EAAW;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAa,GAAA,CAAI,MAAA,EAAkB,QAAA,EAAkB,QAAA,EAA+C;AAAA,EAEpG;AAAA;AAEF;;;;"}
@@ -0,0 +1,20 @@
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 memoryUsageProcessor = /* @__PURE__ */ __name((record) => {
12
+ record.extra["memoryUsage"] = "?";
13
+ if (typeof process !== "undefined" && process.memoryUsage) {
14
+ record.extra["memoryUsage"] = Math.round(process.memoryUsage().heapUsed / 1024 / 1024) + "MB";
15
+ }
16
+ return record;
17
+ }, "memoryUsageProcessor");
18
+
19
+ export { memoryUsageProcessor };
20
+ //# sourceMappingURL=memory-usage-processor.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-usage-processor.mjs","sources":["../../../../src/logger/processor/memory-usage-processor.ts"],"sourcesContent":["import type { Processor, LogRecord } from '../../types/logger'\n\nexport const memoryUsageProcessor: Processor = (record: LogRecord) => {\n record.extra['memoryUsage'] = '?'\n\n if (typeof process !== 'undefined' && process.memoryUsage) {\n record.extra['memoryUsage'] = Math.round(process.memoryUsage().heapUsed / 1024 / 1024) + 'MB'\n }\n\n return record\n}\n"],"names":[],"mappings":";;;;;;;;;;AAEO,MAAM,oBAAA,2BAAmC,MAAA,KAAsB;AACpE,EAAA,MAAA,CAAO,KAAA,CAAM,aAAa,CAAA,GAAI,GAAA;AAE9B,EAAA,IAAI,OAAO,OAAA,KAAY,WAAA,IAAe,OAAA,CAAQ,WAAA,EAAa;AACzD,IAAA,MAAA,CAAO,KAAA,CAAM,aAAa,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,OAAA,CAAQ,WAAA,EAAY,CAAE,QAAA,GAAW,IAAA,GAAO,IAAI,CAAA,GAAI,IAAA;AAAA,EAC3F;AAEA,EAAA,OAAO,MAAA;AACT,CAAA,EAR+C,sBAAA;;;;"}
@@ -0,0 +1,20 @@
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 pidProcessor = /* @__PURE__ */ __name((record) => {
12
+ record.extra["pid"] = "?";
13
+ if (typeof process !== "undefined" && process.pid) {
14
+ record.extra["pid"] = process.pid;
15
+ }
16
+ return record;
17
+ }, "pidProcessor");
18
+
19
+ export { pidProcessor };
20
+ //# sourceMappingURL=pid-processor.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pid-processor.mjs","sources":["../../../../src/logger/processor/pid-processor.ts"],"sourcesContent":["import type { Processor, LogRecord } from '../../types/logger'\n\nexport const pidProcessor: Processor = (record: LogRecord) => {\n record.extra['pid'] = '?'\n\n if (typeof process !== 'undefined' && process.pid) {\n record.extra['pid'] = process.pid\n }\n\n return record\n}\n"],"names":[],"mappings":";;;;;;;;;;AAEO,MAAM,YAAA,2BAA2B,MAAA,KAAsB;AAC5D,EAAA,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA,GAAI,GAAA;AAEtB,EAAA,IAAI,OAAO,OAAA,KAAY,WAAA,IAAe,OAAA,CAAQ,GAAA,EAAK;AACjD,IAAA,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA,GAAI,OAAA,CAAQ,GAAA;AAAA,EAChC;AAEA,EAAA,OAAO,MAAA;AACT,CAAA,EARuC,cAAA;;;;"}
@@ -0,0 +1,211 @@
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 axios, { AxiosError } from 'axios';
10
+ import { RefreshTokenError } from './refresh-token-error.mjs';
11
+ import { Type } from '../tools/type.mjs';
12
+ import { EnumAppStatus } from '../types/b24-helper.mjs';
13
+ import { ApiVersion } from '../types/b24.mjs';
14
+
15
+ var __defProp = Object.defineProperty;
16
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
17
+ class AuthOAuthManager {
18
+ static {
19
+ __name(this, "AuthOAuthManager");
20
+ }
21
+ #clientAxios;
22
+ #callbackRefreshAuth = null;
23
+ #customRefreshAuth = null;
24
+ #authOptions;
25
+ #oAuthSecret;
26
+ #authExpires = 0;
27
+ #authExpiresIn = 0;
28
+ #domain;
29
+ #b24TargetRest;
30
+ #b24Target;
31
+ #b24TargetRestWithPath;
32
+ #oAuthTarget;
33
+ // 'https://oauth.bitrix.info'
34
+ #isAdmin = null;
35
+ constructor(b24OAuthParams, oAuthSecret) {
36
+ this.#authOptions = Object.assign({}, b24OAuthParams);
37
+ this.#oAuthSecret = Object.freeze(Object.assign({}, oAuthSecret));
38
+ this.#domain = this.#authOptions.domain.replaceAll("https://", "").replaceAll("http://", "").replace(/:(80|443)$/, "");
39
+ this.#b24TargetRest = this.#authOptions.clientEndpoint;
40
+ this.#b24Target = this.#b24TargetRest.replace("/rest/", "");
41
+ this.#oAuthTarget = this.#authOptions.serverEndpoint.replace("/rest/", "");
42
+ this.#authExpires = this.#authOptions.expires * 1e3;
43
+ this.#authExpiresIn = this.#authOptions.expiresIn;
44
+ this.#clientAxios = axios.create({
45
+ baseURL: this.#oAuthTarget,
46
+ headers: {
47
+ "Content-Type": "application/json"
48
+ }
49
+ });
50
+ this.#b24TargetRestWithPath = /* @__PURE__ */ new Map();
51
+ this.#b24TargetRestWithPath.set(ApiVersion.v2, `${this.#b24TargetRest}`);
52
+ this.#b24TargetRestWithPath.set(ApiVersion.v3, `${this.#b24TargetRest}/api`);
53
+ }
54
+ /**
55
+ * Returns authorization data
56
+ * @see Http.#prepareParams
57
+ */
58
+ getAuthData() {
59
+ return this.#authExpires > Date.now() ? {
60
+ access_token: this.#authOptions.accessToken,
61
+ refresh_token: this.#authOptions.refreshToken,
62
+ expires: this.#authExpires / 1e3,
63
+ expires_in: this.#authExpiresIn,
64
+ domain: this.#domain,
65
+ member_id: this.#authOptions.memberId
66
+ } : false;
67
+ }
68
+ // region RefreshAuth ////
69
+ /**
70
+ * Updates authorization data
71
+ */
72
+ async refreshAuth() {
73
+ try {
74
+ let payload = void 0;
75
+ if (this.#customRefreshAuth) {
76
+ payload = await this.#customRefreshAuth();
77
+ } else {
78
+ const response = await this.#clientAxios.get(
79
+ "/oauth/token/",
80
+ {
81
+ params: {
82
+ grant_type: "refresh_token",
83
+ client_id: this.#oAuthSecret.clientId,
84
+ client_secret: this.#oAuthSecret.clientSecret,
85
+ refresh_token: this.#authOptions.refreshToken
86
+ }
87
+ }
88
+ );
89
+ if (response.data.error) {
90
+ throw new Error(`Token update error: ${response.data.error}`);
91
+ }
92
+ if (response.status !== 200) {
93
+ throw new Error(`Token update error status code: ${response.status}`);
94
+ }
95
+ payload = response.data;
96
+ }
97
+ if (!payload) {
98
+ throw new Error("Unable to obtain authorization update data");
99
+ }
100
+ this.#authOptions.accessToken = payload.access_token;
101
+ this.#authOptions.refreshToken = payload.refresh_token;
102
+ this.#authOptions.expires = Number.parseInt(payload.expires || "0");
103
+ this.#authOptions.expiresIn = Number.parseInt(payload.expires_in || "3600");
104
+ this.#authOptions.clientEndpoint = payload.client_endpoint;
105
+ this.#authOptions.serverEndpoint = payload.server_endpoint;
106
+ this.#authOptions.scope = payload.scope;
107
+ this.#authOptions.status = Object.values(EnumAppStatus).find((value) => value === payload.status) || EnumAppStatus.Free;
108
+ this.#authExpires = this.#authOptions.expires * 1e3;
109
+ const authData = this.getAuthData();
110
+ if (this.#callbackRefreshAuth) {
111
+ await this.#callbackRefreshAuth({ authData, b24OAuthParams: this.#authOptions });
112
+ }
113
+ return authData;
114
+ } catch (error) {
115
+ if (error instanceof AxiosError) {
116
+ const answerError = {
117
+ code: error?.code || 0,
118
+ description: error?.message || ""
119
+ };
120
+ if (error.response && error.response.data && !Type.isUndefined(error.response.data.error)) {
121
+ const responseData = error.response.data;
122
+ if (responseData.error && typeof responseData.error === "object" && "code" in responseData.error) {
123
+ answerError.code = responseData.error.code;
124
+ answerError.description = responseData.error.message;
125
+ if (responseData.error.validation) {
126
+ responseData.error.validation.forEach((row) => {
127
+ answerError.description += `${row?.message || JSON.stringify(row)}`;
128
+ });
129
+ }
130
+ } else if (responseData.error && typeof responseData.error === "string") {
131
+ answerError.code = responseData.error;
132
+ answerError.description = responseData?.error_description ?? answerError.description;
133
+ }
134
+ }
135
+ throw new RefreshTokenError({
136
+ code: String(answerError.code),
137
+ description: answerError.description,
138
+ status: error.response?.status || 0
139
+ });
140
+ } else if (error instanceof Error) {
141
+ throw error;
142
+ }
143
+ throw new Error(
144
+ `Strange error: ${error instanceof Error ? error.message : error}`,
145
+ { cause: error }
146
+ );
147
+ }
148
+ }
149
+ setCallbackRefreshAuth(cb) {
150
+ this.#callbackRefreshAuth = cb;
151
+ }
152
+ removeCallbackRefreshAuth() {
153
+ this.#callbackRefreshAuth = null;
154
+ }
155
+ setCustomRefreshAuth(cb) {
156
+ this.#customRefreshAuth = cb;
157
+ }
158
+ removeCustomRefreshAuth() {
159
+ this.#customRefreshAuth = null;
160
+ }
161
+ // endregion ////
162
+ getUniq(prefix) {
163
+ return [prefix, this.#authOptions.memberId || ""].join("_");
164
+ }
165
+ /**
166
+ * @inheritDoc
167
+ */
168
+ getTargetOrigin() {
169
+ return `${this.#b24Target}`;
170
+ }
171
+ /**
172
+ * @inheritDoc
173
+ */
174
+ getTargetOriginWithPath() {
175
+ return this.#b24TargetRestWithPath;
176
+ }
177
+ /**
178
+ * Determines whether the current user has administrator rights
179
+ */
180
+ get isAdmin() {
181
+ if (null === this.#isAdmin) {
182
+ throw new Error("isAdmin not init. You need call B24OAuth::initIsAdmin().");
183
+ }
184
+ return this.#isAdmin;
185
+ }
186
+ async initIsAdmin(http, requestId) {
187
+ this.#isAdmin = false;
188
+ if (http.apiVersion === ApiVersion.v3) {
189
+ const response2 = await http.call("profile", {}, requestId);
190
+ if (!response2.isSuccess) {
191
+ throw new Error(response2.getErrorMessages().join(";"));
192
+ }
193
+ const data2 = response2.getData().result;
194
+ if (data2.profile?.admin) {
195
+ this.#isAdmin = true;
196
+ }
197
+ return;
198
+ }
199
+ const response = await http.call("profile", {}, requestId);
200
+ if (!response.isSuccess) {
201
+ throw new Error(response.getErrorMessages().join(";"));
202
+ }
203
+ const data = response.getData().result;
204
+ if (data?.ADMIN) {
205
+ this.#isAdmin = true;
206
+ }
207
+ }
208
+ }
209
+
210
+ export { AuthOAuthManager };
211
+ //# sourceMappingURL=auth.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.mjs","sources":["../../../src/oauth/auth.ts"],"sourcesContent":["import type { AxiosInstance } from 'axios'\nimport type { AuthActions, AuthData, B24OAuthParams, B24OAuthSecret, CallbackRefreshAuth, CustomRefreshAuth, HandlerRefreshAuth, TypeDescriptionError, TypeDescriptionErrorV3 } from '../types/auth'\nimport type { TypeHttp } from '../types/http'\nimport axios, { AxiosError } from 'axios'\nimport { RefreshTokenError } from './refresh-token-error'\nimport { Type } from '../tools/type'\nimport { EnumAppStatus } from '../types/b24-helper'\nimport { ApiVersion } from '../types/b24'\n\n/**\n * OAuth Authorization Manager\n *\n * @link https://apidocs.bitrix24.com/settings/oauth/index.html\n * @link https://bitrix24.github.io/b24jssdk/docs/oauth/\n */\nexport class AuthOAuthManager implements AuthActions {\n #clientAxios: AxiosInstance\n #callbackRefreshAuth: null | CallbackRefreshAuth = null\n #customRefreshAuth: null | CustomRefreshAuth = null\n #authOptions: B24OAuthParams\n readonly #oAuthSecret: B24OAuthSecret\n #authExpires: number = 0\n #authExpiresIn: number = 0\n readonly #domain: string\n readonly #b24TargetRest: string\n readonly #b24Target: string\n readonly #b24TargetRestWithPath: Map<ApiVersion, string>\n readonly #oAuthTarget: string // 'https://oauth.bitrix.info'\n\n #isAdmin: null | boolean = null\n\n constructor(\n b24OAuthParams: B24OAuthParams,\n oAuthSecret: B24OAuthSecret\n ) {\n this.#authOptions = Object.assign({}, b24OAuthParams) as B24OAuthParams\n this.#oAuthSecret = Object.freeze(Object.assign({}, oAuthSecret)) as B24OAuthSecret\n\n this.#domain = this.#authOptions.domain\n .replaceAll('https://', '')\n .replaceAll('http://', '')\n .replace(/:(80|443)$/, '')\n\n this.#b24TargetRest = this.#authOptions.clientEndpoint\n this.#b24Target = this.#b24TargetRest.replace('/rest/', '')\n this.#oAuthTarget = this.#authOptions.serverEndpoint.replace('/rest/', '')\n this.#authExpires = this.#authOptions.expires * 1_000\n this.#authExpiresIn = this.#authOptions.expiresIn\n\n this.#clientAxios = axios.create({\n baseURL: this.#oAuthTarget,\n headers: {\n 'Content-Type': 'application/json'\n }\n })\n\n this.#b24TargetRestWithPath = new Map()\n this.#b24TargetRestWithPath.set(ApiVersion.v2, `${this.#b24TargetRest}`)\n this.#b24TargetRestWithPath.set(ApiVersion.v3, `${this.#b24TargetRest}/api`)\n }\n\n /**\n * Returns authorization data\n * @see Http.#prepareParams\n */\n public getAuthData(): false | AuthData {\n return this.#authExpires > Date.now()\n ? ({\n access_token: this.#authOptions.accessToken,\n refresh_token: this.#authOptions.refreshToken,\n expires: this.#authExpires / 1_000,\n expires_in: this.#authExpiresIn,\n domain: this.#domain,\n member_id: this.#authOptions.memberId\n } as AuthData)\n : false\n }\n\n // region RefreshAuth ////\n /**\n * Updates authorization data\n */\n public async refreshAuth(): Promise<AuthData> {\n try {\n let payload: undefined | HandlerRefreshAuth = undefined\n\n if (this.#customRefreshAuth) {\n payload = await this.#customRefreshAuth()\n } else {\n const response = await this.#clientAxios.get(\n '/oauth/token/',\n {\n params: {\n grant_type: 'refresh_token',\n client_id: this.#oAuthSecret.clientId,\n client_secret: this.#oAuthSecret.clientSecret,\n refresh_token: this.#authOptions.refreshToken\n }\n }\n )\n\n if (response.data.error) {\n throw new Error(`Token update error: ${response.data.error}`)\n }\n if (response.status !== 200) {\n throw new Error(`Token update error status code: ${response.status}`)\n }\n\n /**\n * @memo domain = 'oauth.bitrix.info'\n */\n payload = response.data\n }\n\n if (!payload) {\n throw new Error('Unable to obtain authorization update data')\n }\n\n this.#authOptions.accessToken = payload.access_token\n this.#authOptions.refreshToken = payload.refresh_token\n this.#authOptions.expires = Number.parseInt(payload.expires || '0')\n this.#authOptions.expiresIn = Number.parseInt(payload.expires_in || '3600')\n this.#authOptions.clientEndpoint = payload.client_endpoint\n this.#authOptions.serverEndpoint = payload.server_endpoint\n this.#authOptions.scope = payload.scope\n this.#authOptions.status = Object.values(EnumAppStatus).find(value => value === payload.status) || EnumAppStatus.Free\n\n this.#authExpires = this.#authOptions.expires * 1_000\n\n const authData = this.getAuthData() as AuthData\n\n if (this.#callbackRefreshAuth) {\n await this.#callbackRefreshAuth({ authData, b24OAuthParams: this.#authOptions })\n }\n\n return authData\n } catch (error) {\n if (error instanceof AxiosError) {\n const answerError = {\n code: error?.code || 0,\n description: error?.message || ''\n }\n\n if (\n error.response\n && error.response.data\n && !Type.isUndefined(error.response.data.error)\n ) {\n const responseData = error.response.data as TypeDescriptionError | TypeDescriptionErrorV3\n\n if (\n responseData.error\n && typeof responseData.error === 'object'\n && 'code' in responseData.error\n ) {\n answerError.code = responseData.error.code\n answerError.description = responseData.error.message\n if (responseData.error.validation) {\n responseData.error.validation.forEach((row) => {\n answerError.description += `${row?.message || JSON.stringify(row)}`\n })\n }\n } else if (responseData.error && typeof responseData.error === 'string') {\n answerError.code = responseData.error\n answerError.description = (responseData as TypeDescriptionError)?.error_description ?? answerError.description\n }\n }\n\n throw new RefreshTokenError({\n code: String(answerError.code),\n description: answerError.description,\n status: error.response?.status || 0\n })\n } else if (error instanceof Error) {\n throw error\n }\n\n throw new Error(\n `Strange error: ${error instanceof Error ? error.message : error}`,\n { cause: error }\n )\n }\n }\n\n public setCallbackRefreshAuth(cb: CallbackRefreshAuth): void {\n this.#callbackRefreshAuth = cb\n }\n\n public removeCallbackRefreshAuth(): void {\n this.#callbackRefreshAuth = null\n }\n\n public setCustomRefreshAuth(cb: CustomRefreshAuth): void {\n this.#customRefreshAuth = cb\n }\n\n public removeCustomRefreshAuth(): void {\n this.#customRefreshAuth = null\n }\n // endregion ////\n\n public getUniq(prefix: string): string {\n return [prefix, this.#authOptions.memberId || ''].join('_')\n }\n\n /**\n * @inheritDoc\n */\n public getTargetOrigin(): string {\n return `${this.#b24Target}`\n }\n\n /**\n * @inheritDoc\n */\n public getTargetOriginWithPath(): Map<ApiVersion, string> {\n return this.#b24TargetRestWithPath\n }\n\n /**\n * Determines whether the current user has administrator rights\n */\n get isAdmin(): boolean {\n if (null === this.#isAdmin) {\n throw new Error('isAdmin not init. You need call B24OAuth::initIsAdmin().')\n }\n\n return this.#isAdmin\n }\n\n public async initIsAdmin(http: TypeHttp, requestId?: string): Promise<void> {\n // set def value\n this.#isAdmin = false\n\n // region ver3 ////\n /**\n * This is just a template. When API.v3 arrives, we'll replace it.\n * @todo fix then the new API will be available\n */\n if (http.apiVersion === ApiVersion.v3) {\n const response = await http.call('profile', {}, requestId)\n if (!response.isSuccess) {\n throw new Error(response.getErrorMessages().join(';'))\n }\n\n const data: { profile: { id: number, admin: boolean } } = response.getData()!.result\n\n if (data.profile?.admin) {\n this.#isAdmin = true\n }\n\n return\n }\n // endregion ////\n\n // region ver2 ////\n const response = await http.call('profile', {}, requestId)\n if (!response.isSuccess) {\n throw new Error(response.getErrorMessages().join(';'))\n }\n\n const data: {\n ID: number\n ADMIN: boolean\n } = response.getData()!.result\n\n if (data?.ADMIN) {\n this.#isAdmin = true\n }\n // endregion ////\n }\n}\n"],"names":["response","data"],"mappings":"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"}
@@ -0,0 +1,117 @@
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 { AbstractB24 } from '../core/abstract-b24.mjs';
10
+ import { HttpV2 } from '../core/http/v2.mjs';
11
+ import { HttpV3 } from '../core/http/v3.mjs';
12
+ import { AuthOAuthManager } from './auth.mjs';
13
+ import { versionManager } from '../core/version-manager.mjs';
14
+
15
+ var __defProp = Object.defineProperty;
16
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
17
+ class B24OAuth extends AbstractB24 {
18
+ static {
19
+ __name(this, "B24OAuth");
20
+ }
21
+ #authOAuthManager;
22
+ // region Init ////
23
+ constructor(authOptions, oAuthSecret, options) {
24
+ super();
25
+ this.#authOAuthManager = new AuthOAuthManager(
26
+ authOptions,
27
+ oAuthSecret
28
+ );
29
+ const warningText = "The B24OAuth object is intended exclusively for use on the server.\nA webhook contains a secret access key, which MUST NOT be used in client-side code (browser, mobile app).";
30
+ this._httpV2 = new HttpV2(this.#authOAuthManager, this._getHttpOptions(), options?.restrictionParams);
31
+ this._httpV2.setClientSideWarning(true, warningText);
32
+ this._httpV3 = new HttpV3(this.#authOAuthManager, this._getHttpOptions(), options?.restrictionParams);
33
+ this._httpV3.setClientSideWarning(true, warningText);
34
+ this._isInit = true;
35
+ }
36
+ /**
37
+ * Used to initialize information about the current user.
38
+ *
39
+ * @todo test this
40
+ */
41
+ async initIsAdmin(requestId) {
42
+ const method = "profile";
43
+ this._ensureInitialized();
44
+ try {
45
+ const version = versionManager.automaticallyObtainApiVersion(method);
46
+ const client = this.getHttpClient(version);
47
+ return this.#authOAuthManager.initIsAdmin(client, requestId);
48
+ } catch {
49
+ return;
50
+ }
51
+ }
52
+ /**
53
+ * Sets an asynchronous Callback to receive updated authorization data
54
+ * @param cb
55
+ */
56
+ setCallbackRefreshAuth(cb) {
57
+ this._ensureInitialized();
58
+ this.#authOAuthManager.setCallbackRefreshAuth(cb);
59
+ }
60
+ /**
61
+ * Removes Callback to receive updated authorization data
62
+ */
63
+ removeCallbackRefreshAuth() {
64
+ this._ensureInitialized();
65
+ this.#authOAuthManager.removeCallbackRefreshAuth();
66
+ }
67
+ /**
68
+ * Sets an asynchronous function for custom get new refresh token
69
+ * @param cb
70
+ */
71
+ setCustomRefreshAuth(cb) {
72
+ this._ensureInitialized();
73
+ this.#authOAuthManager.setCustomRefreshAuth(cb);
74
+ }
75
+ /**
76
+ * Removes function for custom get new refresh token
77
+ */
78
+ removeCustomRefreshAuth() {
79
+ this._ensureInitialized();
80
+ this.#authOAuthManager.removeCustomRefreshAuth();
81
+ }
82
+ // endregion ////
83
+ // region Core ////
84
+ /**
85
+ * Disables warning about client-side query execution
86
+ */
87
+ offClientSideWarning() {
88
+ versionManager.getAllApiVersions().forEach((version) => {
89
+ this.getHttpClient(version).setClientSideWarning(false, "");
90
+ });
91
+ }
92
+ // endregion ////
93
+ get auth() {
94
+ return this.#authOAuthManager;
95
+ }
96
+ // region Get ////
97
+ /**
98
+ * @inheritDoc
99
+ */
100
+ getTargetOrigin() {
101
+ this._ensureInitialized();
102
+ return this.#authOAuthManager.getTargetOrigin();
103
+ }
104
+ /**
105
+ * @inheritDoc
106
+ */
107
+ getTargetOriginWithPath() {
108
+ this._ensureInitialized();
109
+ return this.#authOAuthManager.getTargetOriginWithPath();
110
+ }
111
+ // endregion ////
112
+ // region Tools ////
113
+ // endregion ////
114
+ }
115
+
116
+ export { B24OAuth };
117
+ //# sourceMappingURL=b24.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"b24.mjs","sources":["../../../src/oauth/b24.ts"],"sourcesContent":["import type { AuthActions, B24OAuthParams, B24OAuthSecret, CallbackRefreshAuth, CustomRefreshAuth } from '../types/auth'\nimport type { RestrictionParams } from '../types/limiters'\nimport type { TypeB24, ApiVersion } from '../types/b24'\nimport { AbstractB24 } from '../core/abstract-b24'\nimport { HttpV2 } from '../core/http/v2'\nimport { HttpV3 } from '../core/http/v3'\nimport { AuthOAuthManager } from './auth'\nimport { versionManager } from '../core/version-manager'\n\n/**\n * B24.OAuth Manager\n *\n * @link https://apidocs.bitrix24.com/settings/oauth/index.html\n * @link https://bitrix24.github.io/b24jssdk/docs/oauth/\n *\n * @todo add docs\n */\nexport class B24OAuth extends AbstractB24 implements TypeB24 {\n readonly #authOAuthManager: AuthOAuthManager\n\n // region Init ////\n constructor(\n authOptions: B24OAuthParams,\n oAuthSecret: B24OAuthSecret,\n options?: {\n restrictionParams?: Partial<RestrictionParams>\n }\n ) {\n super()\n\n this.#authOAuthManager = new AuthOAuthManager(\n authOptions,\n oAuthSecret\n )\n\n const warningText = 'The B24OAuth object is intended exclusively for use on the server.\\nA webhook contains a secret access key, which MUST NOT be used in client-side code (browser, mobile app).'\n\n this._httpV2 = new HttpV2(this.#authOAuthManager, this._getHttpOptions(), options?.restrictionParams)\n this._httpV2.setClientSideWarning(true, warningText)\n this._httpV3 = new HttpV3(this.#authOAuthManager, this._getHttpOptions(), options?.restrictionParams)\n this._httpV3.setClientSideWarning(true, warningText)\n\n this._isInit = true\n }\n\n /**\n * Used to initialize information about the current user.\n *\n * @todo test this\n */\n public async initIsAdmin(requestId?: string): Promise<void> {\n const method = 'profile'\n\n this._ensureInitialized()\n try {\n const version = versionManager.automaticallyObtainApiVersion(method)\n const client = this.getHttpClient(version)\n return this.#authOAuthManager.initIsAdmin(client, requestId)\n } catch {\n return\n }\n }\n\n /**\n * Sets an asynchronous Callback to receive updated authorization data\n * @param cb\n */\n public setCallbackRefreshAuth(cb: CallbackRefreshAuth): void {\n this._ensureInitialized()\n this.#authOAuthManager.setCallbackRefreshAuth(cb)\n }\n\n /**\n * Removes Callback to receive updated authorization data\n */\n public removeCallbackRefreshAuth(): void {\n this._ensureInitialized()\n this.#authOAuthManager.removeCallbackRefreshAuth()\n }\n\n /**\n * Sets an asynchronous function for custom get new refresh token\n * @param cb\n */\n public setCustomRefreshAuth(cb: CustomRefreshAuth): void {\n this._ensureInitialized()\n this.#authOAuthManager.setCustomRefreshAuth(cb)\n }\n\n /**\n * Removes function for custom get new refresh token\n */\n public removeCustomRefreshAuth(): void {\n this._ensureInitialized()\n this.#authOAuthManager.removeCustomRefreshAuth()\n }\n // endregion ////\n\n // region Core ////\n /**\n * Disables warning about client-side query execution\n */\n public offClientSideWarning(): void {\n versionManager.getAllApiVersions().forEach((version) => {\n this.getHttpClient(version).setClientSideWarning(false, '')\n })\n }\n // endregion ////\n\n override get auth(): AuthActions {\n return this.#authOAuthManager\n }\n\n // region Get ////\n /**\n * @inheritDoc\n */\n public override getTargetOrigin(): string {\n this._ensureInitialized()\n return this.#authOAuthManager.getTargetOrigin()\n }\n\n /**\n * @inheritDoc\n */\n public override getTargetOriginWithPath(): Map<ApiVersion, string> {\n this._ensureInitialized()\n return this.#authOAuthManager.getTargetOriginWithPath()\n }\n // endregion ////\n\n // region Tools ////\n // endregion ////\n}\n"],"names":[],"mappings":"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"}