@bitrix24/b24jssdk 1.1.0 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/README-AI.md +2 -0
  2. package/dist/esm/_virtual/_commonjsHelpers.mjs +1 -1
  3. package/dist/esm/_virtual/protobuf.mjs +1 -1
  4. package/dist/esm/_virtual/protobuf2.mjs +1 -1
  5. package/dist/esm/core/abstract-b24.mjs +1 -1
  6. package/dist/esm/core/actions/abstract-action.mjs +1 -1
  7. package/dist/esm/core/actions/abstract-batch.mjs +1 -1
  8. package/dist/esm/core/actions/manager.mjs +1 -1
  9. package/dist/esm/core/actions/v2/batch-by-chunk.mjs +1 -1
  10. package/dist/esm/core/actions/v2/batch.mjs +1 -1
  11. package/dist/esm/core/actions/v2/call-list.mjs +1 -1
  12. package/dist/esm/core/actions/v2/call.mjs +1 -1
  13. package/dist/esm/core/actions/v2/fetch-list.mjs +1 -1
  14. package/dist/esm/core/actions/v2/manager-v2.mjs +1 -1
  15. package/dist/esm/core/actions/v3/batch-by-chunk.mjs +1 -1
  16. package/dist/esm/core/actions/v3/batch.mjs +1 -1
  17. package/dist/esm/core/actions/v3/call-list.mjs +1 -1
  18. package/dist/esm/core/actions/v3/call.mjs +1 -1
  19. package/dist/esm/core/actions/v3/fetch-list.mjs +1 -1
  20. package/dist/esm/core/actions/v3/manager-v3.mjs +1 -1
  21. package/dist/esm/core/http/abstract-http.mjs +9 -13
  22. package/dist/esm/core/http/abstract-http.mjs.map +1 -1
  23. package/dist/esm/core/http/ajax-error.mjs +9 -5
  24. package/dist/esm/core/http/ajax-error.mjs.map +1 -1
  25. package/dist/esm/core/http/ajax-result.mjs +1 -1
  26. package/dist/esm/core/http/limiters/adaptive-delayer.mjs +1 -1
  27. package/dist/esm/core/http/limiters/manager.mjs +70 -38
  28. package/dist/esm/core/http/limiters/manager.mjs.map +1 -1
  29. package/dist/esm/core/http/limiters/operating-limiter.mjs +1 -1
  30. package/dist/esm/core/http/limiters/params-factory.mjs +3 -2
  31. package/dist/esm/core/http/limiters/params-factory.mjs.map +1 -1
  32. package/dist/esm/core/http/limiters/rate-limiter.mjs +1 -1
  33. package/dist/esm/core/http/redact.mjs +52 -0
  34. package/dist/esm/core/http/redact.mjs.map +1 -0
  35. package/dist/esm/core/http/v2.mjs +2 -2
  36. package/dist/esm/core/http/v3.mjs +2 -2
  37. package/dist/esm/core/interaction/batch/abstract-interaction-batch.mjs +1 -1
  38. package/dist/esm/core/interaction/batch/parse-row.mjs +1 -1
  39. package/dist/esm/core/interaction/batch/processing/interface-strategy.mjs +1 -1
  40. package/dist/esm/core/interaction/batch/processing/v2/abstract-processing.mjs +2 -2
  41. package/dist/esm/core/interaction/batch/processing/v2/abstract-processing.mjs.map +1 -1
  42. package/dist/esm/core/interaction/batch/processing/v2/as-array.mjs +1 -1
  43. package/dist/esm/core/interaction/batch/processing/v2/as-object.mjs +1 -1
  44. package/dist/esm/core/interaction/batch/processing/v3/abstract-processing.mjs +16 -9
  45. package/dist/esm/core/interaction/batch/processing/v3/abstract-processing.mjs.map +1 -1
  46. package/dist/esm/core/interaction/batch/processing/v3/as-array.mjs +1 -1
  47. package/dist/esm/core/interaction/batch/processing/v3/as-object.mjs +1 -1
  48. package/dist/esm/core/interaction/batch/v2.mjs +1 -1
  49. package/dist/esm/core/interaction/batch/v3.mjs +1 -1
  50. package/dist/esm/core/language/list.mjs +1 -1
  51. package/dist/esm/core/request-id-generator.mjs +1 -1
  52. package/dist/esm/core/result.mjs +1 -1
  53. package/dist/esm/core/sdk-error.mjs +1 -1
  54. package/dist/esm/core/tools/abstract-tool.mjs +1 -1
  55. package/dist/esm/core/tools/healthcheck.mjs +1 -1
  56. package/dist/esm/core/tools/manager.mjs +1 -1
  57. package/dist/esm/core/tools/ping.mjs +1 -1
  58. package/dist/esm/core/version-manager.mjs +1 -1
  59. package/dist/esm/frame/auth.mjs +1 -1
  60. package/dist/esm/frame/b24.mjs +1 -1
  61. package/dist/esm/frame/dialog.mjs +1 -1
  62. package/dist/esm/frame/frame.mjs +1 -1
  63. package/dist/esm/frame/message/commands.mjs +1 -1
  64. package/dist/esm/frame/message/controller.mjs +1 -1
  65. package/dist/esm/frame/options.mjs +1 -1
  66. package/dist/esm/frame/parent.mjs +1 -1
  67. package/dist/esm/frame/placement.mjs +1 -1
  68. package/dist/esm/frame/slider.mjs +1 -1
  69. package/dist/esm/helper/abstract-helper.mjs +1 -1
  70. package/dist/esm/helper/app-manager.mjs +1 -1
  71. package/dist/esm/helper/currency-manager.mjs +1 -1
  72. package/dist/esm/helper/helper-manager.mjs +1 -1
  73. package/dist/esm/helper/license-manager.mjs +1 -1
  74. package/dist/esm/helper/options-manager.mjs +1 -1
  75. package/dist/esm/helper/payment-manager.mjs +1 -1
  76. package/dist/esm/helper/profile-manager.mjs +1 -1
  77. package/dist/esm/helper/use-b24-helper.mjs +1 -1
  78. package/dist/esm/hook/auth.mjs +1 -1
  79. package/dist/esm/hook/b24.mjs +1 -1
  80. package/dist/esm/index.d.mts +72 -9
  81. package/dist/esm/index.d.ts +72 -9
  82. package/dist/esm/index.mjs +1 -1
  83. package/dist/esm/loader-b24frame.mjs +1 -1
  84. package/dist/esm/logger/abstract-logger.mjs +1 -1
  85. package/dist/esm/logger/browser.mjs +1 -1
  86. package/dist/esm/logger/formatter/abstract-formatter.mjs +1 -1
  87. package/dist/esm/logger/formatter/json-formatter.mjs +1 -1
  88. package/dist/esm/logger/formatter/line-formatter.mjs +1 -1
  89. package/dist/esm/logger/formatter/telegram-formatter.mjs +1 -1
  90. package/dist/esm/logger/handler/abstract-handler.mjs +1 -1
  91. package/dist/esm/logger/handler/consola-adapter.mjs +1 -1
  92. package/dist/esm/logger/handler/console-handler.mjs +1 -1
  93. package/dist/esm/logger/handler/console-v2-handler.mjs +1 -1
  94. package/dist/esm/logger/handler/memory-handler.mjs +1 -1
  95. package/dist/esm/logger/handler/stream-handler.mjs +1 -1
  96. package/dist/esm/logger/handler/telegram-handler.mjs +1 -1
  97. package/dist/esm/logger/handler/winston-adapter.mjs +1 -1
  98. package/dist/esm/logger/logger-factory.mjs +1 -1
  99. package/dist/esm/logger/logger.mjs +1 -1
  100. package/dist/esm/logger/null-logger.mjs +1 -1
  101. package/dist/esm/logger/processor/memory-usage-processor.mjs +1 -1
  102. package/dist/esm/logger/processor/pid-processor.mjs +1 -1
  103. package/dist/esm/oauth/auth.mjs +1 -1
  104. package/dist/esm/oauth/b24.mjs +1 -1
  105. package/dist/esm/oauth/refresh-token-error.mjs +1 -1
  106. package/dist/esm/pullClient/abstract-connector.mjs +1 -1
  107. package/dist/esm/pullClient/channel-manager.mjs +1 -1
  108. package/dist/esm/pullClient/client.mjs +1 -1
  109. package/dist/esm/pullClient/errors.mjs +1 -1
  110. package/dist/esm/pullClient/json-rpc.mjs +1 -1
  111. package/dist/esm/pullClient/long-polling-connector.mjs +1 -1
  112. package/dist/esm/pullClient/protobuf/index.mjs +1 -1
  113. package/dist/esm/pullClient/protobuf/model.mjs +1 -1
  114. package/dist/esm/pullClient/protobuf/protobuf.mjs +1 -1
  115. package/dist/esm/pullClient/shared-config.mjs +1 -1
  116. package/dist/esm/pullClient/storage-manager.mjs +1 -1
  117. package/dist/esm/pullClient/web-socket-connector.mjs +1 -1
  118. package/dist/esm/tools/browser.mjs +1 -1
  119. package/dist/esm/tools/environment.mjs +1 -1
  120. package/dist/esm/tools/formatters/iban.mjs +1 -1
  121. package/dist/esm/tools/formatters/numbers.mjs +1 -1
  122. package/dist/esm/tools/index.mjs +1 -1
  123. package/dist/esm/tools/scroll-size.mjs +1 -1
  124. package/dist/esm/tools/text.mjs +1 -1
  125. package/dist/esm/tools/type.mjs +1 -1
  126. package/dist/esm/tools/use-formatters.mjs +1 -1
  127. package/dist/esm/tools/uuidv7.mjs +1 -1
  128. package/dist/esm/types/b24-helper.mjs +1 -1
  129. package/dist/esm/types/b24.mjs +1 -1
  130. package/dist/esm/types/bizproc/index.mjs +1 -1
  131. package/dist/esm/types/catalog/index.mjs +1 -1
  132. package/dist/esm/types/common.mjs +1 -1
  133. package/dist/esm/types/crm/entity-type.mjs +1 -1
  134. package/dist/esm/types/crm/productrow.mjs +1 -1
  135. package/dist/esm/types/logger.mjs +1 -1
  136. package/dist/esm/types/pull.mjs +1 -1
  137. package/dist/umd/index.js +241 -161
  138. package/dist/umd/index.js.map +1 -1
  139. package/dist/umd/index.min.js +21 -21
  140. package/dist/umd/index.min.js.map +1 -1
  141. package/package.json +1 -1
package/dist/umd/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @package @bitrix24/b24jssdk
3
- * @version 1.1.0
3
+ * @version 1.1.2
4
4
  * @copyright (c) 2026 Bitrix24
5
5
  * @license MIT
6
6
  * @see https://github.com/bitrix24/b24jssdk
@@ -8153,11 +8153,11 @@
8153
8153
  }
8154
8154
  }
8155
8155
 
8156
- var __defProp$1J = Object.defineProperty;
8157
- var __name$1J = (target, value) => __defProp$1J(target, "name", { value, configurable: true });
8156
+ var __defProp$1K = Object.defineProperty;
8157
+ var __name$1K = (target, value) => __defProp$1K(target, "name", { value, configurable: true });
8158
8158
  class AbstractFormatter {
8159
8159
  static {
8160
- __name$1J(this, "AbstractFormatter");
8160
+ __name$1K(this, "AbstractFormatter");
8161
8161
  }
8162
8162
  dateFormat;
8163
8163
  constructor(dateFormat = "YYYY-MM-DD HH:mm:ss") {
@@ -8175,11 +8175,11 @@
8175
8175
  }
8176
8176
  }
8177
8177
 
8178
- var __defProp$1I = Object.defineProperty;
8179
- var __name$1I = (target, value) => __defProp$1I(target, "name", { value, configurable: true });
8178
+ var __defProp$1J = Object.defineProperty;
8179
+ var __name$1J = (target, value) => __defProp$1J(target, "name", { value, configurable: true });
8180
8180
  class JsonFormatter extends AbstractFormatter {
8181
8181
  static {
8182
- __name$1I(this, "JsonFormatter");
8182
+ __name$1J(this, "JsonFormatter");
8183
8183
  }
8184
8184
  constructor(dateFormat = "YYYY-MM-DD HH:mm:ss") {
8185
8185
  super(dateFormat);
@@ -8197,11 +8197,11 @@
8197
8197
  }
8198
8198
  }
8199
8199
 
8200
- var __defProp$1H = Object.defineProperty;
8201
- var __name$1H = (target, value) => __defProp$1H(target, "name", { value, configurable: true });
8200
+ var __defProp$1I = Object.defineProperty;
8201
+ var __name$1I = (target, value) => __defProp$1I(target, "name", { value, configurable: true });
8202
8202
  class LineFormatter extends AbstractFormatter {
8203
8203
  static {
8204
- __name$1H(this, "LineFormatter");
8204
+ __name$1I(this, "LineFormatter");
8205
8205
  }
8206
8206
  formatString;
8207
8207
  constructor(formatString = "[{channel}] {levelName}: {message} {context} {extra} {date}", dateFormat = "YYYY-MM-DD HH:mm:ss") {
@@ -8226,11 +8226,11 @@
8226
8226
  }
8227
8227
  }
8228
8228
 
8229
- var __defProp$1G = Object.defineProperty;
8230
- var __name$1G = (target, value) => __defProp$1G(target, "name", { value, configurable: true });
8229
+ var __defProp$1H = Object.defineProperty;
8230
+ var __name$1H = (target, value) => __defProp$1H(target, "name", { value, configurable: true });
8231
8231
  class TelegramFormatter extends AbstractFormatter {
8232
8232
  static {
8233
- __name$1G(this, "TelegramFormatter");
8233
+ __name$1H(this, "TelegramFormatter");
8234
8234
  }
8235
8235
  useHtml;
8236
8236
  maxMessageLength;
@@ -8317,9 +8317,9 @@ ${extraStr}
8317
8317
  }
8318
8318
  }
8319
8319
 
8320
- var __defProp$1F = Object.defineProperty;
8321
- var __name$1F = (target, value) => __defProp$1F(target, "name", { value, configurable: true });
8322
- const pidProcessor = /* @__PURE__ */ __name$1F((record) => {
8320
+ var __defProp$1G = Object.defineProperty;
8321
+ var __name$1G = (target, value) => __defProp$1G(target, "name", { value, configurable: true });
8322
+ const pidProcessor = /* @__PURE__ */ __name$1G((record) => {
8323
8323
  record.extra["pid"] = "?";
8324
8324
  if (typeof process !== "undefined" && process.pid) {
8325
8325
  record.extra["pid"] = process.pid;
@@ -8327,9 +8327,9 @@ ${extraStr}
8327
8327
  return record;
8328
8328
  }, "pidProcessor");
8329
8329
 
8330
- var __defProp$1E = Object.defineProperty;
8331
- var __name$1E = (target, value) => __defProp$1E(target, "name", { value, configurable: true });
8332
- const memoryUsageProcessor = /* @__PURE__ */ __name$1E((record) => {
8330
+ var __defProp$1F = Object.defineProperty;
8331
+ var __name$1F = (target, value) => __defProp$1F(target, "name", { value, configurable: true });
8332
+ const memoryUsageProcessor = /* @__PURE__ */ __name$1F((record) => {
8333
8333
  record.extra["memoryUsage"] = "?";
8334
8334
  if (typeof process !== "undefined" && process.memoryUsage) {
8335
8335
  record.extra["memoryUsage"] = Math.round(process.memoryUsage().heapUsed / 1024 / 1024) + "MB";
@@ -8337,11 +8337,11 @@ ${extraStr}
8337
8337
  return record;
8338
8338
  }, "memoryUsageProcessor");
8339
8339
 
8340
- var __defProp$1D = Object.defineProperty;
8341
- var __name$1D = (target, value) => __defProp$1D(target, "name", { value, configurable: true });
8340
+ var __defProp$1E = Object.defineProperty;
8341
+ var __name$1E = (target, value) => __defProp$1E(target, "name", { value, configurable: true });
8342
8342
  class AbstractHandler {
8343
8343
  static {
8344
- __name$1D(this, "AbstractHandler");
8344
+ __name$1E(this, "AbstractHandler");
8345
8345
  }
8346
8346
  level;
8347
8347
  formatter = null;
@@ -8364,11 +8364,11 @@ ${extraStr}
8364
8364
  }
8365
8365
  }
8366
8366
 
8367
- var __defProp$1C = Object.defineProperty;
8368
- var __name$1C = (target, value) => __defProp$1C(target, "name", { value, configurable: true });
8367
+ var __defProp$1D = Object.defineProperty;
8368
+ var __name$1D = (target, value) => __defProp$1D(target, "name", { value, configurable: true });
8369
8369
  class ConsoleHandler extends AbstractHandler {
8370
8370
  static {
8371
- __name$1C(this, "ConsoleHandler");
8371
+ __name$1D(this, "ConsoleHandler");
8372
8372
  }
8373
8373
  _styles = /* @__PURE__ */ new Map();
8374
8374
  _useStyles;
@@ -8448,11 +8448,11 @@ ${extraStr}
8448
8448
  }
8449
8449
  }
8450
8450
 
8451
- var __defProp$1B = Object.defineProperty;
8452
- var __name$1B = (target, value) => __defProp$1B(target, "name", { value, configurable: true });
8451
+ var __defProp$1C = Object.defineProperty;
8452
+ var __name$1C = (target, value) => __defProp$1C(target, "name", { value, configurable: true });
8453
8453
  class ConsoleV2Handler extends ConsoleHandler {
8454
8454
  static {
8455
- __name$1B(this, "ConsoleV2Handler");
8455
+ __name$1C(this, "ConsoleV2Handler");
8456
8456
  }
8457
8457
  constructor(level = LogLevel.DEBUG, options) {
8458
8458
  super(level, options);
@@ -8485,11 +8485,11 @@ ${extraStr}
8485
8485
  }
8486
8486
  }
8487
8487
 
8488
- var __defProp$1A = Object.defineProperty;
8489
- var __name$1A = (target, value) => __defProp$1A(target, "name", { value, configurable: true });
8488
+ var __defProp$1B = Object.defineProperty;
8489
+ var __name$1B = (target, value) => __defProp$1B(target, "name", { value, configurable: true });
8490
8490
  class MemoryHandler extends AbstractHandler {
8491
8491
  static {
8492
- __name$1A(this, "MemoryHandler");
8492
+ __name$1B(this, "MemoryHandler");
8493
8493
  }
8494
8494
  records = [];
8495
8495
  limit;
@@ -8520,11 +8520,11 @@ ${extraStr}
8520
8520
  }
8521
8521
  }
8522
8522
 
8523
- var __defProp$1z = Object.defineProperty;
8524
- var __name$1z = (target, value) => __defProp$1z(target, "name", { value, configurable: true });
8523
+ var __defProp$1A = Object.defineProperty;
8524
+ var __name$1A = (target, value) => __defProp$1A(target, "name", { value, configurable: true });
8525
8525
  class StreamHandler extends AbstractHandler {
8526
8526
  static {
8527
- __name$1z(this, "StreamHandler");
8527
+ __name$1A(this, "StreamHandler");
8528
8528
  }
8529
8529
  /**
8530
8530
  * Stream for writing logs.
@@ -8579,11 +8579,11 @@ ${extraStr}
8579
8579
  }
8580
8580
  }
8581
8581
 
8582
- var __defProp$1y = Object.defineProperty;
8583
- var __name$1y = (target, value) => __defProp$1y(target, "name", { value, configurable: true });
8582
+ var __defProp$1z = Object.defineProperty;
8583
+ var __name$1z = (target, value) => __defProp$1z(target, "name", { value, configurable: true });
8584
8584
  class ConsolaAdapter extends AbstractHandler {
8585
8585
  static {
8586
- __name$1y(this, "ConsolaAdapter");
8586
+ __name$1z(this, "ConsolaAdapter");
8587
8587
  }
8588
8588
  consolaInstance;
8589
8589
  constructor(level = LogLevel.DEBUG, options) {
@@ -8628,11 +8628,11 @@ ${extraStr}
8628
8628
  }
8629
8629
  }
8630
8630
 
8631
- var __defProp$1x = Object.defineProperty;
8632
- var __name$1x = (target, value) => __defProp$1x(target, "name", { value, configurable: true });
8631
+ var __defProp$1y = Object.defineProperty;
8632
+ var __name$1y = (target, value) => __defProp$1y(target, "name", { value, configurable: true });
8633
8633
  class WinstonAdapter extends AbstractHandler {
8634
8634
  static {
8635
- __name$1x(this, "WinstonAdapter");
8635
+ __name$1y(this, "WinstonAdapter");
8636
8636
  }
8637
8637
  winstonLogger;
8638
8638
  constructor(level = LogLevel.DEBUG, options) {
@@ -8672,8 +8672,8 @@ ${extraStr}
8672
8672
  }
8673
8673
  }
8674
8674
 
8675
- var __defProp$1w = Object.defineProperty;
8676
- var __name$1w = (target, value) => __defProp$1w(target, "name", { value, configurable: true });
8675
+ var __defProp$1x = Object.defineProperty;
8676
+ var __name$1x = (target, value) => __defProp$1x(target, "name", { value, configurable: true });
8677
8677
  var Environment = /* @__PURE__ */ ((Environment2) => {
8678
8678
  Environment2["UNKNOWN"] = "unknown";
8679
8679
  Environment2["BROWSE"] = "browser";
@@ -8689,13 +8689,13 @@ ${extraStr}
8689
8689
  }
8690
8690
  return "unknown" /* UNKNOWN */;
8691
8691
  }
8692
- __name$1w(getEnvironment, "getEnvironment");
8692
+ __name$1x(getEnvironment, "getEnvironment");
8693
8693
 
8694
- var __defProp$1v = Object.defineProperty;
8695
- var __name$1v = (target, value) => __defProp$1v(target, "name", { value, configurable: true });
8694
+ var __defProp$1w = Object.defineProperty;
8695
+ var __name$1w = (target, value) => __defProp$1w(target, "name", { value, configurable: true });
8696
8696
  class TelegramHandler extends AbstractHandler {
8697
8697
  static {
8698
- __name$1v(this, "TelegramHandler");
8698
+ __name$1w(this, "TelegramHandler");
8699
8699
  }
8700
8700
  botToken;
8701
8701
  chatId;
@@ -8833,11 +8833,11 @@ If you need to send logs from browser, use a proxy server.`;
8833
8833
  }
8834
8834
  }
8835
8835
 
8836
- var __defProp$1u = Object.defineProperty;
8837
- var __name$1u = (target, value) => __defProp$1u(target, "name", { value, configurable: true });
8836
+ var __defProp$1v = Object.defineProperty;
8837
+ var __name$1v = (target, value) => __defProp$1v(target, "name", { value, configurable: true });
8838
8838
  class AbstractLogger {
8839
8839
  static {
8840
- __name$1u(this, "AbstractLogger");
8840
+ __name$1v(this, "AbstractLogger");
8841
8841
  }
8842
8842
  /**
8843
8843
  * @inheritDoc
@@ -8890,11 +8890,11 @@ If you need to send logs from browser, use a proxy server.`;
8890
8890
  // endregion ////
8891
8891
  }
8892
8892
 
8893
- var __defProp$1t = Object.defineProperty;
8894
- var __name$1t = (target, value) => __defProp$1t(target, "name", { value, configurable: true });
8893
+ var __defProp$1u = Object.defineProperty;
8894
+ var __name$1u = (target, value) => __defProp$1u(target, "name", { value, configurable: true });
8895
8895
  class NullLogger extends AbstractLogger {
8896
8896
  static {
8897
- __name$1t(this, "NullLogger");
8897
+ __name$1u(this, "NullLogger");
8898
8898
  }
8899
8899
  // region static methods for creation ////
8900
8900
  static create() {
@@ -8910,11 +8910,11 @@ If you need to send logs from browser, use a proxy server.`;
8910
8910
  // endregion ////
8911
8911
  }
8912
8912
 
8913
- var __defProp$1s = Object.defineProperty;
8914
- var __name$1s = (target, value) => __defProp$1s(target, "name", { value, configurable: true });
8913
+ var __defProp$1t = Object.defineProperty;
8914
+ var __name$1t = (target, value) => __defProp$1t(target, "name", { value, configurable: true });
8915
8915
  class Logger extends AbstractLogger {
8916
8916
  static {
8917
- __name$1s(this, "Logger");
8917
+ __name$1t(this, "Logger");
8918
8918
  }
8919
8919
  channel;
8920
8920
  handlers = [];
@@ -8973,11 +8973,11 @@ If you need to send logs from browser, use a proxy server.`;
8973
8973
  }
8974
8974
  }
8975
8975
 
8976
- var __defProp$1r = Object.defineProperty;
8977
- var __name$1r = (target, value) => __defProp$1r(target, "name", { value, configurable: true });
8976
+ var __defProp$1s = Object.defineProperty;
8977
+ var __name$1s = (target, value) => __defProp$1s(target, "name", { value, configurable: true });
8978
8978
  class LoggerFactory {
8979
8979
  static {
8980
- __name$1r(this, "LoggerFactory");
8980
+ __name$1s(this, "LoggerFactory");
8981
8981
  }
8982
8982
  static createNullLogger() {
8983
8983
  return NullLogger.create();
@@ -9025,8 +9025,8 @@ If you need to send logs from browser, use a proxy server.`;
9025
9025
  }
9026
9026
  }
9027
9027
 
9028
- var __defProp$1q = Object.defineProperty;
9029
- var __name$1q = (target, value) => __defProp$1q(target, "name", { value, configurable: true });
9028
+ var __defProp$1r = Object.defineProperty;
9029
+ var __name$1r = (target, value) => __defProp$1r(target, "name", { value, configurable: true });
9030
9030
  const deprecateMessage = "@deprecate: use Logger. https://bitrix24.github.io/b24jssdk/docs/working-with-the-rest-api/logger/";
9031
9031
  var LoggerType = /* @__PURE__ */ ((LoggerType2) => {
9032
9032
  LoggerType2["desktop"] = "desktop";
@@ -9039,7 +9039,7 @@ If you need to send logs from browser, use a proxy server.`;
9039
9039
  })(LoggerType || {});
9040
9040
  class LoggerBrowser {
9041
9041
  static {
9042
- __name$1q(this, "LoggerBrowser");
9042
+ __name$1r(this, "LoggerBrowser");
9043
9043
  }
9044
9044
  #logger;
9045
9045
  /**
@@ -9196,12 +9196,12 @@ If you need to send logs from browser, use a proxy server.`;
9196
9196
  return DataType2;
9197
9197
  })(DataType || {});
9198
9198
 
9199
- var __defProp$1p = Object.defineProperty;
9200
- var __name$1p = (target, value) => __defProp$1p(target, "name", { value, configurable: true });
9199
+ var __defProp$1q = Object.defineProperty;
9200
+ var __name$1q = (target, value) => __defProp$1q(target, "name", { value, configurable: true });
9201
9201
  const OBJECT_CONSTRUCTOR_STRING = Function.prototype.toString.call(Object);
9202
9202
  class TypeManager {
9203
9203
  static {
9204
- __name$1p(this, "TypeManager");
9204
+ __name$1q(this, "TypeManager");
9205
9205
  }
9206
9206
  getTag(value) {
9207
9207
  return Object.prototype.toString.call(value);
@@ -9523,8 +9523,8 @@ If you need to send logs from browser, use a proxy server.`;
9523
9523
  }
9524
9524
  const Type = new TypeManager();
9525
9525
 
9526
- var __defProp$1o = Object.defineProperty;
9527
- var __name$1o = (target, value) => __defProp$1o(target, "name", { value, configurable: true });
9526
+ var __defProp$1p = Object.defineProperty;
9527
+ var __name$1p = (target, value) => __defProp$1p(target, "name", { value, configurable: true });
9528
9528
  function pick(data, keys) {
9529
9529
  const result = {};
9530
9530
  for (const key of keys) {
@@ -9532,7 +9532,7 @@ If you need to send logs from browser, use a proxy server.`;
9532
9532
  }
9533
9533
  return result;
9534
9534
  }
9535
- __name$1o(pick, "pick");
9535
+ __name$1p(pick, "pick");
9536
9536
  function omit(data, keys) {
9537
9537
  const result = { ...data };
9538
9538
  for (const key of keys) {
@@ -9540,18 +9540,18 @@ If you need to send logs from browser, use a proxy server.`;
9540
9540
  }
9541
9541
  return result;
9542
9542
  }
9543
- __name$1o(omit, "omit");
9543
+ __name$1p(omit, "omit");
9544
9544
  function isArrayOfArray(item) {
9545
9545
  return Array.isArray(item[0]);
9546
9546
  }
9547
- __name$1o(isArrayOfArray, "isArrayOfArray");
9547
+ __name$1p(isArrayOfArray, "isArrayOfArray");
9548
9548
  function getEnumValue(enumObj, value) {
9549
9549
  return Object.values(enumObj).includes(value) ? value : void 0;
9550
9550
  }
9551
- __name$1o(getEnumValue, "getEnumValue");
9551
+ __name$1p(getEnumValue, "getEnumValue");
9552
9552
 
9553
- var __defProp$1n = Object.defineProperty;
9554
- var __name$1n = (target, value) => __defProp$1n(target, "name", { value, configurable: true });
9553
+ var __defProp$1o = Object.defineProperty;
9554
+ var __name$1o = (target, value) => __defProp$1o(target, "name", { value, configurable: true });
9555
9555
  const byteToHex = [];
9556
9556
  for (let i = 0; i < 256; ++i) {
9557
9557
  byteToHex.push((i + 256).toString(16).slice(1));
@@ -9570,7 +9570,7 @@ If you need to send logs from browser, use a proxy server.`;
9570
9570
  return t >>> 0;
9571
9571
  };
9572
9572
  }
9573
- __name$1n(sfc32, "sfc32");
9573
+ __name$1o(sfc32, "sfc32");
9574
9574
  function uuidv7() {
9575
9575
  const bytes = new Uint8Array(16);
9576
9576
  const timestamp = BigInt(Date.now());
@@ -9592,10 +9592,10 @@ If you need to send logs from browser, use a proxy server.`;
9592
9592
  bytes[8] = 128 | bytes[8] & 63;
9593
9593
  return (byteToHex[bytes[0]] + byteToHex[bytes[1]] + byteToHex[bytes[2]] + byteToHex[bytes[3]] + "-" + byteToHex[bytes[4]] + byteToHex[bytes[5]] + "-" + byteToHex[bytes[6]] + byteToHex[bytes[7]] + "-" + byteToHex[bytes[8]] + byteToHex[bytes[9]] + "-" + byteToHex[bytes[10]] + byteToHex[bytes[11]] + byteToHex[bytes[12]] + byteToHex[bytes[13]] + byteToHex[bytes[14]] + byteToHex[bytes[15]]).toLowerCase();
9594
9594
  }
9595
- __name$1n(uuidv7, "uuidv7");
9595
+ __name$1o(uuidv7, "uuidv7");
9596
9596
 
9597
- var __defProp$1m = Object.defineProperty;
9598
- var __name$1m = (target, value) => __defProp$1m(target, "name", { value, configurable: true });
9597
+ var __defProp$1n = Object.defineProperty;
9598
+ var __name$1n = (target, value) => __defProp$1n(target, "name", { value, configurable: true });
9599
9599
  const reEscape = /[&<>'"]/g;
9600
9600
  const reUnescape = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34)/g;
9601
9601
  const escapeEntities = {
@@ -9619,7 +9619,7 @@ If you need to send logs from browser, use a proxy server.`;
9619
9619
  };
9620
9620
  class TextManager {
9621
9621
  static {
9622
- __name$1m(this, "TextManager");
9622
+ __name$1n(this, "TextManager");
9623
9623
  }
9624
9624
  getRandom(length = 8) {
9625
9625
  return [...Array(length)].map(() => Math.trunc(Math.random() * 36).toString(36)).join("");
@@ -9719,7 +9719,7 @@ If you need to send logs from browser, use a proxy server.`;
9719
9719
  numberFormat(number, decimals = 0, decPoint = ".", thousandsSep = ",") {
9720
9720
  const n = !Number.isFinite(number) ? 0 : number;
9721
9721
  const fractionDigits = !Number.isFinite(decimals) ? 0 : Math.abs(decimals);
9722
- const toFixedFix = /* @__PURE__ */ __name$1m((n2, fractionDigits2) => {
9722
+ const toFixedFix = /* @__PURE__ */ __name$1n((n2, fractionDigits2) => {
9723
9723
  const k = Math.pow(10, fractionDigits2);
9724
9724
  return Math.round(n2 * k) / k;
9725
9725
  }, "toFixedFix");
@@ -9788,8 +9788,8 @@ If you need to send logs from browser, use a proxy server.`;
9788
9788
  }
9789
9789
  const Text = new TextManager();
9790
9790
 
9791
- var __defProp$1l = Object.defineProperty;
9792
- var __name$1l = (target, value) => __defProp$1l(target, "name", { value, configurable: true });
9791
+ var __defProp$1m = Object.defineProperty;
9792
+ var __name$1m = (target, value) => __defProp$1m(target, "name", { value, configurable: true });
9793
9793
  let UA = "";
9794
9794
  try {
9795
9795
  UA = navigator?.userAgent.toLowerCase();
@@ -9798,7 +9798,7 @@ If you need to send logs from browser, use a proxy server.`;
9798
9798
  }
9799
9799
  class BrowserManager {
9800
9800
  static {
9801
- __name$1l(this, "BrowserManager");
9801
+ __name$1m(this, "BrowserManager");
9802
9802
  }
9803
9803
  isOpera() {
9804
9804
  return UA.includes("opera");
@@ -9936,8 +9936,8 @@ If you need to send logs from browser, use a proxy server.`;
9936
9936
  return ApiVersion2;
9937
9937
  })(ApiVersion || {});
9938
9938
 
9939
- var __defProp$1k = Object.defineProperty;
9940
- var __name$1k = (target, value) => __defProp$1k(target, "name", { value, configurable: true });
9939
+ var __defProp$1l = Object.defineProperty;
9940
+ var __name$1l = (target, value) => __defProp$1l(target, "name", { value, configurable: true });
9941
9941
  var EnumCrmEntityType = /* @__PURE__ */ ((EnumCrmEntityType2) => {
9942
9942
  EnumCrmEntityType2["undefined"] = "UNDEFINED";
9943
9943
  EnumCrmEntityType2["lead"] = "CRM_LEAD";
@@ -9981,7 +9981,7 @@ If you need to send logs from browser, use a proxy server.`;
9981
9981
  const key = EnumCrmEntityTypeId[id];
9982
9982
  return EnumCrmEntityTypeShort[key] || "?" /* undefined */;
9983
9983
  }
9984
- __name$1k(getEnumCrmEntityTypeShort, "getEnumCrmEntityTypeShort");
9984
+ __name$1l(getEnumCrmEntityTypeShort, "getEnumCrmEntityTypeShort");
9985
9985
 
9986
9986
  var ProductRowDiscountTypeId = /* @__PURE__ */ ((ProductRowDiscountTypeId2) => {
9987
9987
  ProductRowDiscountTypeId2[ProductRowDiscountTypeId2["undefined"] = 0] = "undefined";
@@ -10015,8 +10015,8 @@ If you need to send logs from browser, use a proxy server.`;
10015
10015
  return CatalogRoundingRuleType2;
10016
10016
  })(CatalogRoundingRuleType || {});
10017
10017
 
10018
- var __defProp$1j = Object.defineProperty;
10019
- var __name$1j = (target, value) => __defProp$1j(target, "name", { value, configurable: true });
10018
+ var __defProp$1k = Object.defineProperty;
10019
+ var __name$1k = (target, value) => __defProp$1k(target, "name", { value, configurable: true });
10020
10020
  var EnumBitrix24Edition = /* @__PURE__ */ ((EnumBitrix24Edition2) => {
10021
10021
  EnumBitrix24Edition2["undefined"] = "undefined";
10022
10022
  EnumBitrix24Edition2["b24"] = "b24";
@@ -10064,7 +10064,7 @@ If you need to send logs from browser, use a proxy server.`;
10064
10064
  }
10065
10065
  return EnumCrmEntityTypeId.undefined;
10066
10066
  }
10067
- __name$1j(convertBizprocDocumentTypeToCrmEntityTypeId, "convertBizprocDocumentTypeToCrmEntityTypeId");
10067
+ __name$1k(convertBizprocDocumentTypeToCrmEntityTypeId, "convertBizprocDocumentTypeToCrmEntityTypeId");
10068
10068
  function getDocumentType(documentType, entityId) {
10069
10069
  let entityIdFormatted = "";
10070
10070
  let base = "undefined" /* undefined */;
@@ -10132,7 +10132,7 @@ If you need to send logs from browser, use a proxy server.`;
10132
10132
  entityIdFormatted
10133
10133
  ];
10134
10134
  }
10135
- __name$1j(getDocumentType, "getDocumentType");
10135
+ __name$1k(getDocumentType, "getDocumentType");
10136
10136
  function getDocumentId(documentType, id, dynamicId) {
10137
10137
  let entityIdFormatted = "";
10138
10138
  const tmp = getDocumentType(documentType, 1);
@@ -10180,7 +10180,7 @@ If you need to send logs from browser, use a proxy server.`;
10180
10180
  entityIdFormatted
10181
10181
  ];
10182
10182
  }
10183
- __name$1j(getDocumentId, "getDocumentId");
10183
+ __name$1k(getDocumentId, "getDocumentId");
10184
10184
  function getDocumentTypeForFilter(documentType) {
10185
10185
  const result = getDocumentType(documentType, 1);
10186
10186
  return [
@@ -10188,7 +10188,7 @@ If you need to send logs from browser, use a proxy server.`;
10188
10188
  result[1]
10189
10189
  ];
10190
10190
  }
10191
- __name$1j(getDocumentTypeForFilter, "getDocumentTypeForFilter");
10191
+ __name$1k(getDocumentTypeForFilter, "getDocumentTypeForFilter");
10192
10192
 
10193
10193
  var LoadDataType = /* @__PURE__ */ ((LoadDataType2) => {
10194
10194
  LoadDataType2["App"] = "app";
@@ -10355,11 +10355,11 @@ If you need to send logs from browser, use a proxy server.`;
10355
10355
  ["ja" /* ja */]: "ja-JP"
10356
10356
  };
10357
10357
 
10358
- var __defProp$1i = Object.defineProperty;
10359
- var __name$1i = (target, value) => __defProp$1i(target, "name", { value, configurable: true });
10358
+ var __defProp$1j = Object.defineProperty;
10359
+ var __name$1j = (target, value) => __defProp$1j(target, "name", { value, configurable: true });
10360
10360
  class Result {
10361
10361
  static {
10362
- __name$1i(this, "Result");
10362
+ __name$1j(this, "Result");
10363
10363
  }
10364
10364
  _errors;
10365
10365
  _data;
@@ -10444,11 +10444,11 @@ Errors: ${this.getErrorMessages().join(", ")}`;
10444
10444
  }
10445
10445
  }
10446
10446
 
10447
- var __defProp$1h = Object.defineProperty;
10448
- var __name$1h = (target, value) => __defProp$1h(target, "name", { value, configurable: true });
10447
+ var __defProp$1i = Object.defineProperty;
10448
+ var __name$1i = (target, value) => __defProp$1i(target, "name", { value, configurable: true });
10449
10449
  class SdkError extends Error {
10450
10450
  static {
10451
- __name$1h(this, "SdkError");
10451
+ __name$1i(this, "SdkError");
10452
10452
  }
10453
10453
  code;
10454
10454
  _status;
@@ -10517,6 +10517,48 @@ ${this.stack}`;
10517
10517
  }
10518
10518
  }
10519
10519
 
10520
+ var __defProp$1h = Object.defineProperty;
10521
+ var __name$1h = (target, value) => __defProp$1h(target, "name", { value, configurable: true });
10522
+ const SENSITIVE_PARAM_KEYS = [
10523
+ "auth",
10524
+ "password",
10525
+ "token",
10526
+ "secret",
10527
+ "access_token",
10528
+ "refresh_token"
10529
+ ];
10530
+ const REDACTED_PLACEHOLDER = "***REDACTED***";
10531
+ function isPlainObject$1(value) {
10532
+ return value !== null && typeof value === "object" && !Array.isArray(value);
10533
+ }
10534
+ __name$1h(isPlainObject$1, "isPlainObject");
10535
+ function redactObject(source, depth) {
10536
+ const sanitized = { ...source };
10537
+ for (const key of Object.keys(sanitized)) {
10538
+ if (SENSITIVE_PARAM_KEYS.includes(key)) {
10539
+ sanitized[key] = REDACTED_PLACEHOLDER;
10540
+ continue;
10541
+ }
10542
+ if (depth <= 0) continue;
10543
+ const child = sanitized[key];
10544
+ if (isPlainObject$1(child)) {
10545
+ sanitized[key] = redactObject(child, depth - 1);
10546
+ } else if (Array.isArray(child)) {
10547
+ sanitized[key] = child.map(
10548
+ (item) => isPlainObject$1(item) ? redactObject(item, depth - 1) : item
10549
+ );
10550
+ }
10551
+ }
10552
+ return sanitized;
10553
+ }
10554
+ __name$1h(redactObject, "redactObject");
10555
+ const DEFAULT_REDACT_DEPTH = 2;
10556
+ function redactSensitiveParams(params) {
10557
+ if (!isPlainObject$1(params)) return params;
10558
+ return redactObject(params, DEFAULT_REDACT_DEPTH);
10559
+ }
10560
+ __name$1h(redactSensitiveParams, "redactSensitiveParams");
10561
+
10520
10562
  var __defProp$1g = Object.defineProperty;
10521
10563
  var __name$1g = (target, value) => __defProp$1g(target, "name", { value, configurable: true });
10522
10564
  class AjaxError extends SdkError {
@@ -10531,7 +10573,10 @@ ${this.stack}`;
10531
10573
  params.description = AjaxError.formatErrorMessage(params);
10532
10574
  super(params);
10533
10575
  this.name = "AjaxError";
10534
- this.requestInfo = params.requestInfo;
10576
+ this.requestInfo = params.requestInfo ? {
10577
+ ...params.requestInfo,
10578
+ ...params.requestInfo.params !== void 0 ? { params: redactSensitiveParams(params.requestInfo.params) } : {}
10579
+ } : void 0;
10535
10580
  this.cleanErrorStack();
10536
10581
  }
10537
10582
  /**
@@ -10580,7 +10625,7 @@ ${this.stack}`;
10580
10625
  let output = `[${this.name}] ${this.code} (${this._status}): ${this.message}`;
10581
10626
  if (this.requestInfo) {
10582
10627
  output += `
10583
- Request: ${this.requestInfo?.requestId ? `[${this.requestInfo.requestId}] ` : ""}${this.requestInfo.method} ${this.requestInfo.url}`;
10628
+ Request: ${this.requestInfo?.requestId ? `[${this.requestInfo.requestId}] ` : ""}${this.requestInfo.method}`;
10584
10629
  }
10585
10630
  if (this.stack) {
10586
10631
  output += `
@@ -10594,8 +10639,8 @@ ${this.stack}`;
10594
10639
  */
10595
10640
  static formatErrorMessage(params) {
10596
10641
  if (!params?.description) {
10597
- if (params.requestInfo?.method && params.requestInfo.url) {
10598
- return `${params.code} (on ${params.requestInfo.method}${params.requestInfo?.url ? " " + params.requestInfo.url : ""})`;
10642
+ if (params.requestInfo?.method) {
10643
+ return `${params.code} (on ${params.requestInfo.method})`;
10599
10644
  } else {
10600
10645
  return `Internal ajax error`;
10601
10646
  }
@@ -10843,7 +10888,8 @@ ${this.stack}`;
10843
10888
  maxDelay: 7e3
10844
10889
  },
10845
10890
  maxRetries: 3,
10846
- retryDelay: 1e3
10891
+ retryDelay: 1e3,
10892
+ retryOnNetworkError: true
10847
10893
  };
10848
10894
  }
10849
10895
  /**
@@ -11735,49 +11781,81 @@ ${this.stack}`;
11735
11781
  ].includes(answerError.code) || (answerError.description ?? "").includes("Could not find value for parameter");
11736
11782
  }
11737
11783
  /**
11738
- * These exceptions will be thrown
11784
+ * Built-in hard error codes (always throw, never retry).
11785
+ *
11786
+ * Includes authorization and fatal codes that must never be silently retried.
11787
+ * Use `RestrictionParams.hardErrorCodes` to extend this list with custom codes.
11788
+ */
11789
+ static BUILT_IN_HARD_ERROR_CODES = [
11790
+ "ERR_BAD_REQUEST",
11791
+ "JSSDK_UNKNOWN_ERROR",
11792
+ "100",
11793
+ "INTERNAL_SERVER_ERROR",
11794
+ "ERROR_UNEXPECTED_ANSWER",
11795
+ "PORTAL_DELETED",
11796
+ "ERROR_BATCH_METHOD_NOT_ALLOWED",
11797
+ "ERROR_BATCH_LENGTH_EXCEEDED",
11798
+ "NO_AUTH_FOUND",
11799
+ "INVALID_REQUEST",
11800
+ "OVERLOAD_LIMIT",
11801
+ "expired_token",
11802
+ "ACCESS_DENIED",
11803
+ "INVALID_CREDENTIALS",
11804
+ "user_access_error",
11805
+ "insufficient_scope",
11806
+ "ERROR_MANIFEST_IS_NOT_AVAILABLE",
11807
+ "allowed_only_intranet_user",
11808
+ "NOT_FOUND",
11809
+ "INVALID_ARG_VALUE"
11810
+ ];
11811
+ /**
11812
+ * Built-in soft error codes (returned as `AjaxResult` with error, never thrown).
11813
+ *
11814
+ * Use `RestrictionParams.softErrorCodes` to extend this list with custom codes.
11815
+ */
11816
+ static BUILT_IN_SOFT_ERROR_CODES = [
11817
+ "ERROR_ENTITY_NOT_FOUND",
11818
+ "BITRIX_REST_V3_EXCEPTION_ACCESSDENIEDEXCEPTION",
11819
+ "BITRIX_REST_V3_EXCEPTION_INVALIDJSONEXCEPTION",
11820
+ "BITRIX_REST_V3_EXCEPTION_INVALIDFILTEREXCEPTION",
11821
+ "BITRIX_REST_V3_EXCEPTION_INVALIDSELECTEXCEPTION",
11822
+ "BITRIX_REST_V3_EXCEPTION_ENTITYNOTFOUNDEXCEPTION",
11823
+ "BITRIX_REST_V3_EXCEPTION_METHODNOTFOUNDEXCEPTION",
11824
+ "BITRIX_REST_V3_EXCEPTION_UNKNOWNDTOPROPERTYEXCEPTION",
11825
+ "BITRIX_REST_V3_EXCEPTION_VALIDATION_REQUESTVALIDATIONEXCEPTION",
11826
+ "BITRIX_REST_V3_EXCEPTION_VALIDATION_DTOVALIDATIONEXCEPTION"
11827
+ ];
11828
+ /**
11829
+ * Codes that cause the SDK to throw immediately.
11830
+ *
11831
+ * Composed of:
11832
+ * - `BUILT_IN_HARD_ERROR_CODES` (always included)
11833
+ * - `NETWORK_ERROR` and `REQUEST_TIMEOUT` when `retryOnNetworkError === false`
11834
+ * - `RestrictionParams.hardErrorCodes` (user-provided extensions)
11739
11835
  */
11740
11836
  get exceptionCodeForHard() {
11741
- return [
11742
- "ERR_BAD_REQUEST",
11743
- "JSSDK_UNKNOWN_ERROR",
11744
- // 'REQUEST_TIMEOUT', 'NETWORK_ERROR',
11745
- "100",
11746
- "INTERNAL_SERVER_ERROR",
11747
- "ERROR_UNEXPECTED_ANSWER",
11748
- "PORTAL_DELETED",
11749
- "ERROR_BATCH_METHOD_NOT_ALLOWED",
11750
- "ERROR_BATCH_LENGTH_EXCEEDED",
11751
- "NO_AUTH_FOUND",
11752
- "INVALID_REQUEST",
11753
- "OVERLOAD_LIMIT",
11754
- "expired_token",
11755
- "ACCESS_DENIED",
11756
- "INVALID_CREDENTIALS",
11757
- "user_access_error",
11758
- "insufficient_scope",
11759
- "ERROR_MANIFEST_IS_NOT_AVAILABLE",
11760
- "allowed_only_intranet_user",
11761
- "NOT_FOUND",
11762
- "INVALID_ARG_VALUE"
11763
- ];
11837
+ const codes = [...RestrictionManager.BUILT_IN_HARD_ERROR_CODES];
11838
+ if (this.#config.retryOnNetworkError === false) {
11839
+ codes.push("NETWORK_ERROR", "REQUEST_TIMEOUT");
11840
+ }
11841
+ if (this.#config.hardErrorCodes && this.#config.hardErrorCodes.length > 0) {
11842
+ codes.push(...this.#config.hardErrorCodes);
11843
+ }
11844
+ return codes;
11764
11845
  }
11765
11846
  /**
11766
- * These exceptions will be thrown into `AjaxResult` as `AjaxError`
11847
+ * Codes returned as `AjaxResult` with an `AjaxError` payload instead of thrown.
11848
+ *
11849
+ * Composed of:
11850
+ * - `BUILT_IN_SOFT_ERROR_CODES` (always included)
11851
+ * - `RestrictionParams.softErrorCodes` (user-provided extensions)
11767
11852
  */
11768
11853
  get exceptionCodeForSoft() {
11769
- return [
11770
- "ERROR_ENTITY_NOT_FOUND",
11771
- "BITRIX_REST_V3_EXCEPTION_ACCESSDENIEDEXCEPTION",
11772
- "BITRIX_REST_V3_EXCEPTION_INVALIDJSONEXCEPTION",
11773
- "BITRIX_REST_V3_EXCEPTION_INVALIDFILTEREXCEPTION",
11774
- "BITRIX_REST_V3_EXCEPTION_INVALIDSELECTEXCEPTION",
11775
- "BITRIX_REST_V3_EXCEPTION_ENTITYNOTFOUNDEXCEPTION",
11776
- "BITRIX_REST_V3_EXCEPTION_METHODNOTFOUNDEXCEPTION",
11777
- "BITRIX_REST_V3_EXCEPTION_UNKNOWNDTOPROPERTYEXCEPTION",
11778
- "BITRIX_REST_V3_EXCEPTION_VALIDATION_REQUESTVALIDATIONEXCEPTION",
11779
- "BITRIX_REST_V3_EXCEPTION_VALIDATION_DTOVALIDATIONEXCEPTION"
11780
- ];
11854
+ const codes = [...RestrictionManager.BUILT_IN_SOFT_ERROR_CODES];
11855
+ if (this.#config.softErrorCodes && this.#config.softErrorCodes.length > 0) {
11856
+ codes.push(...this.#config.softErrorCodes);
11857
+ }
11858
+ return codes;
11781
11859
  }
11782
11860
  /**
11783
11861
  * Delay due to unknown errors
@@ -18130,7 +18208,7 @@ ${JSON.stringify({
18130
18208
  this._logger = LoggerFactory.createNullLogger();
18131
18209
  const defaultHeaders = {};
18132
18210
  if (this.isServerSide()) {
18133
- defaultHeaders["User-Agent"] = "b24-js-sdk/1.1.0";
18211
+ defaultHeaders["User-Agent"] = "b24-js-sdk/1.1.2";
18134
18212
  }
18135
18213
  this._authActions = authActions;
18136
18214
  this._requestIdGenerator = new RequestIdGenerator();
@@ -18397,7 +18475,9 @@ ${JSON.stringify({
18397
18475
  {
18398
18476
  requestId,
18399
18477
  status: error.status,
18400
- responseData: JSON.stringify(error?.response?.data, null, 0)
18478
+ // Redact in case a future portal response embeds credentials in
18479
+ // the error body (today it doesn't, but the channel is open). (#39)
18480
+ responseData: JSON.stringify(redactSensitiveParams(error?.response?.data), null, 0)
18401
18481
  }
18402
18482
  );
18403
18483
  }
@@ -18414,14 +18494,14 @@ ${JSON.stringify({
18414
18494
  async _makeAxiosRequest(requestId, method, params, authData) {
18415
18495
  const methodFormatted = this._prepareMethod(requestId, method, this.getBaseUrl());
18416
18496
  const paramsFormatted = this._prepareParams(authData, params);
18417
- const paramsFormattedForLog = JSON.stringify(paramsFormatted, null, 0);
18497
+ const paramsFormattedForLog = JSON.stringify(redactSensitiveParams(paramsFormatted), null, 0);
18418
18498
  const maxLogLength = 300;
18419
18499
  const sliceLogLength = 100;
18420
18500
  this.getLogger().info(
18421
18501
  `post/send`,
18422
18502
  {
18423
18503
  requestId,
18424
- method: methodFormatted,
18504
+ method,
18425
18505
  params: paramsFormattedForLog.length > maxLogLength ? paramsFormattedForLog.slice(0, sliceLogLength) + "..." : paramsFormattedForLog
18426
18506
  }
18427
18507
  );
@@ -18514,14 +18594,7 @@ ${JSON.stringify({
18514
18594
  // endregion ////
18515
18595
  // region Log ////
18516
18596
  _sanitizeParams(params) {
18517
- const sanitized = { ...params };
18518
- const sensitiveKeys = ["auth", "password", "token", "secret", "access_token", "refresh_token"];
18519
- sensitiveKeys.forEach((key) => {
18520
- if (key in sanitized && sanitized[key]) {
18521
- sanitized[key] = "***REDACTED***";
18522
- }
18523
- });
18524
- return sanitized;
18597
+ return redactSensitiveParams(params);
18525
18598
  }
18526
18599
  _logRequest(requestId, method, params) {
18527
18600
  this.getLogger().debug(`http request starting`, {
@@ -19225,7 +19298,7 @@ ${JSON.stringify({
19225
19298
  answer: {
19226
19299
  error: resultError ? typeof resultError === "string" ? resultError : resultError.error : void 0,
19227
19300
  error_description: resultError ? typeof resultError === "string" ? void 0 : resultError.error_description : void 0,
19228
- result: resultData ?? {},
19301
+ result: resultData,
19229
19302
  total: Number.parseInt(this._getBatchResultByIndex(responseResult.result_total, index) || "0"),
19230
19303
  next: Number.parseInt(this._getBatchResultByIndex(responseResult.result_next, index) || "0"),
19231
19304
  time: resultTime
@@ -19383,7 +19456,7 @@ ${JSON.stringify({
19383
19456
  }
19384
19457
  const queryParams = new URLSearchParams({
19385
19458
  [this._requestIdGenerator.getQueryStringParameterName()]: requestId,
19386
- [this._requestIdGenerator.getQueryStringSdkParameterName()]: "1.1.0",
19459
+ [this._requestIdGenerator.getQueryStringSdkParameterName()]: "1.1.2",
19387
19460
  [this._requestIdGenerator.getQueryStringSdkTypeParameterName()]: "b24-js-sdk"
19388
19461
  });
19389
19462
  return `${baseUrl}${methodUrl}?${queryParams.toString()}`;
@@ -19454,21 +19527,28 @@ ${JSON.stringify({
19454
19527
  return results;
19455
19528
  }
19456
19529
  /**
19457
- * @todo ! api ver3 waite docs
19530
+ * In `restApi:v3`, `response.getData().result` is the array/record of per-command
19531
+ * results directly (no `result_error`/`result_time`/`result_total`/`result_next`
19532
+ * split as in v2). Per-command errors do not exist in this format.
19533
+ *
19534
+ * The per-command `result` value is forwarded as-is, including `null` when the
19535
+ * underlying REST method returns `null` (see issue #23).
19458
19536
  */
19459
19537
  async _processResponseItem(command, index, responseHelper, results) {
19460
19538
  const responseResult = responseHelper.response.getData().result;
19461
19539
  const resultData = this._getBatchResultByIndex(responseResult, index);
19462
- const methodName = command.method;
19463
- const resultError = void 0;
19464
- const resultTime = responseHelper.response.getData().time;
19465
- if (typeof resultTime !== "undefined") {
19466
- await responseHelper.restrictionManager.updateStats(responseHelper.requestId, `batch::${methodName}`, resultTime);
19540
+ if (typeof resultData === "undefined") {
19541
+ throw new SdkError({
19542
+ code: "JSSDK_INTERACTION_BATCH_STRATEGY_V3_EMPTY_COMMAND_RESPONSE",
19543
+ description: `There were difficulties parsing the response for batch { index: ${index}, method: ${command.method} }`,
19544
+ status: 500
19545
+ });
19467
19546
  }
19547
+ const resultTime = responseHelper.response.getData().time;
19468
19548
  const result = new AjaxResult({
19469
19549
  answer: {
19470
- result: resultData ?? {},
19471
- error: resultError,
19550
+ result: resultData,
19551
+ error: void 0,
19472
19552
  time: resultTime
19473
19553
  },
19474
19554
  query: {
@@ -19630,7 +19710,7 @@ ${JSON.stringify({
19630
19710
  const methodUrl = `/${encodeURIComponent(method)}`;
19631
19711
  const queryParams = new URLSearchParams({
19632
19712
  [this._requestIdGenerator.getQueryStringParameterName()]: requestId,
19633
- [this._requestIdGenerator.getQueryStringSdkParameterName()]: "1.1.0",
19713
+ [this._requestIdGenerator.getQueryStringSdkParameterName()]: "1.1.2",
19634
19714
  [this._requestIdGenerator.getQueryStringSdkTypeParameterName()]: "b24-js-sdk"
19635
19715
  });
19636
19716
  return `${baseUrl}${methodUrl}?${queryParams.toString()}`;