@bitrix24/b24jssdk 1.3.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README-AI.md +3 -2
- package/README.md +2 -0
- package/dist/cjs/_virtual/_commonjsHelpers.cjs +19 -0
- package/dist/cjs/_virtual/_commonjsHelpers.cjs.map +1 -0
- package/dist/cjs/_virtual/protobuf.cjs +20 -0
- package/dist/cjs/_virtual/protobuf.cjs.map +1 -0
- package/dist/cjs/_virtual/protobuf2.cjs +14 -0
- package/dist/cjs/_virtual/protobuf2.cjs.map +1 -0
- package/dist/cjs/core/abstract-b24.cjs +357 -0
- package/dist/cjs/core/abstract-b24.cjs.map +1 -0
- package/dist/cjs/core/actions/abstract-action.cjs +26 -0
- package/dist/cjs/core/actions/abstract-action.cjs.map +1 -0
- package/dist/cjs/core/actions/abstract-batch.cjs +97 -0
- package/dist/cjs/core/actions/abstract-batch.cjs.map +1 -0
- package/dist/cjs/core/actions/manager.cjs +55 -0
- package/dist/cjs/core/actions/manager.cjs.map +1 -0
- package/dist/cjs/core/actions/v2/batch-by-chunk.cjs +95 -0
- package/dist/cjs/core/actions/v2/batch-by-chunk.cjs.map +1 -0
- package/dist/cjs/core/actions/v2/batch.cjs +128 -0
- package/dist/cjs/core/actions/v2/batch.cjs.map +1 -0
- package/dist/cjs/core/actions/v2/call-list.cjs +144 -0
- package/dist/cjs/core/actions/v2/call-list.cjs.map +1 -0
- package/dist/cjs/core/actions/v2/call.cjs +56 -0
- package/dist/cjs/core/actions/v2/call.cjs.map +1 -0
- package/dist/cjs/core/actions/v2/fetch-list.cjs +145 -0
- package/dist/cjs/core/actions/v2/fetch-list.cjs.map +1 -0
- package/dist/cjs/core/actions/v2/manager-v2.cjs +76 -0
- package/dist/cjs/core/actions/v2/manager-v2.cjs.map +1 -0
- package/dist/cjs/core/actions/v3/_keyset-paginate.cjs +69 -0
- package/dist/cjs/core/actions/v3/_keyset-paginate.cjs.map +1 -0
- package/dist/cjs/core/actions/v3/aggregate.cjs +96 -0
- package/dist/cjs/core/actions/v3/aggregate.cjs.map +1 -0
- package/dist/cjs/core/actions/v3/batch-by-chunk.cjs +93 -0
- package/dist/cjs/core/actions/v3/batch-by-chunk.cjs.map +1 -0
- package/dist/cjs/core/actions/v3/batch.cjs +122 -0
- package/dist/cjs/core/actions/v3/batch.cjs.map +1 -0
- package/dist/cjs/core/actions/v3/call-list.cjs +126 -0
- package/dist/cjs/core/actions/v3/call-list.cjs.map +1 -0
- package/dist/cjs/core/actions/v3/call-tail.cjs +118 -0
- package/dist/cjs/core/actions/v3/call-tail.cjs.map +1 -0
- package/dist/cjs/core/actions/v3/call.cjs +51 -0
- package/dist/cjs/core/actions/v3/call.cjs.map +1 -0
- package/dist/cjs/core/actions/v3/fetch-list.cjs +122 -0
- package/dist/cjs/core/actions/v3/fetch-list.cjs.map +1 -0
- package/dist/cjs/core/actions/v3/fetch-tail.cjs +112 -0
- package/dist/cjs/core/actions/v3/fetch-tail.cjs.map +1 -0
- package/dist/cjs/core/actions/v3/manager-v3.cjs +100 -0
- package/dist/cjs/core/actions/v3/manager-v3.cjs.map +1 -0
- package/dist/cjs/core/http/abstract-http.cjs +641 -0
- package/dist/cjs/core/http/abstract-http.cjs.map +1 -0
- package/dist/cjs/core/http/ajax-error.cjs +113 -0
- package/dist/cjs/core/http/ajax-error.cjs.map +1 -0
- package/dist/cjs/core/http/ajax-result.cjs +219 -0
- package/dist/cjs/core/http/ajax-result.cjs.map +1 -0
- package/dist/cjs/core/http/limiters/adaptive-delayer.cjs +137 -0
- package/dist/cjs/core/http/limiters/adaptive-delayer.cjs.map +1 -0
- package/dist/cjs/core/http/limiters/manager.cjs +373 -0
- package/dist/cjs/core/http/limiters/manager.cjs.map +1 -0
- package/dist/cjs/core/http/limiters/operating-limiter.cjs +173 -0
- package/dist/cjs/core/http/limiters/operating-limiter.cjs.map +1 -0
- package/dist/cjs/core/http/limiters/params-factory.cjs +124 -0
- package/dist/cjs/core/http/limiters/params-factory.cjs.map +1 -0
- package/dist/cjs/core/http/limiters/rate-limiter.cjs +404 -0
- package/dist/cjs/core/http/limiters/rate-limiter.cjs.map +1 -0
- package/dist/cjs/core/http/redact.cjs +85 -0
- package/dist/cjs/core/http/redact.cjs.map +1 -0
- package/dist/cjs/core/http/v2.cjs +85 -0
- package/dist/cjs/core/http/v2.cjs.map +1 -0
- package/dist/cjs/core/http/v3.cjs +82 -0
- package/dist/cjs/core/http/v3.cjs.map +1 -0
- package/dist/cjs/core/interaction/batch/abstract-interaction-batch.cjs +71 -0
- package/dist/cjs/core/interaction/batch/abstract-interaction-batch.cjs.map +1 -0
- package/dist/cjs/core/interaction/batch/parse-row.cjs +69 -0
- package/dist/cjs/core/interaction/batch/parse-row.cjs.map +1 -0
- package/dist/cjs/core/interaction/batch/processing/interface-strategy.cjs +87 -0
- package/dist/cjs/core/interaction/batch/processing/interface-strategy.cjs.map +1 -0
- package/dist/cjs/core/interaction/batch/processing/v2/abstract-processing.cjs +138 -0
- package/dist/cjs/core/interaction/batch/processing/v2/abstract-processing.cjs.map +1 -0
- package/dist/cjs/core/interaction/batch/processing/v2/as-array.cjs +34 -0
- package/dist/cjs/core/interaction/batch/processing/v2/as-array.cjs.map +1 -0
- package/dist/cjs/core/interaction/batch/processing/v2/as-object.cjs +34 -0
- package/dist/cjs/core/interaction/batch/processing/v2/as-object.cjs.map +1 -0
- package/dist/cjs/core/interaction/batch/processing/v3/abstract-processing.cjs +115 -0
- package/dist/cjs/core/interaction/batch/processing/v3/abstract-processing.cjs.map +1 -0
- package/dist/cjs/core/interaction/batch/processing/v3/as-array.cjs +34 -0
- package/dist/cjs/core/interaction/batch/processing/v3/as-array.cjs.map +1 -0
- package/dist/cjs/core/interaction/batch/processing/v3/as-object.cjs +34 -0
- package/dist/cjs/core/interaction/batch/processing/v3/as-object.cjs.map +1 -0
- package/dist/cjs/core/interaction/batch/v2.cjs +47 -0
- package/dist/cjs/core/interaction/batch/v2.cjs.map +1 -0
- package/dist/cjs/core/interaction/batch/v3.cjs +45 -0
- package/dist/cjs/core/interaction/batch/v3.cjs.map +1 -0
- package/dist/cjs/core/language/list.cjs +59 -0
- package/dist/cjs/core/language/list.cjs.map +1 -0
- package/dist/cjs/core/request-id-generator.cjs +44 -0
- package/dist/cjs/core/request-id-generator.cjs.map +1 -0
- package/dist/cjs/core/result.cjs +137 -0
- package/dist/cjs/core/result.cjs.map +1 -0
- package/dist/cjs/core/sdk-error.cjs +85 -0
- package/dist/cjs/core/sdk-error.cjs.map +1 -0
- package/dist/cjs/core/tools/abstract-tool.cjs +26 -0
- package/dist/cjs/core/tools/abstract-tool.cjs.map +1 -0
- package/dist/cjs/core/tools/healthcheck.cjs +50 -0
- package/dist/cjs/core/tools/healthcheck.cjs.map +1 -0
- package/dist/cjs/core/tools/manager.cjs +52 -0
- package/dist/cjs/core/tools/manager.cjs.map +1 -0
- package/dist/cjs/core/tools/ping.cjs +58 -0
- package/dist/cjs/core/tools/ping.cjs.map +1 -0
- package/dist/cjs/core/version-manager.cjs +57 -0
- package/dist/cjs/core/version-manager.cjs.map +1 -0
- package/dist/cjs/frame/auth.cjs +100 -0
- package/dist/cjs/frame/auth.cjs.map +1 -0
- package/dist/cjs/frame/b24.cjs +178 -0
- package/dist/cjs/frame/b24.cjs.map +1 -0
- package/dist/cjs/frame/dialog.cjs +120 -0
- package/dist/cjs/frame/dialog.cjs.map +1 -0
- package/dist/cjs/frame/frame.cjs +103 -0
- package/dist/cjs/frame/frame.cjs.map +1 -0
- package/dist/cjs/frame/message/commands.cjs +39 -0
- package/dist/cjs/frame/message/commands.cjs.map +1 -0
- package/dist/cjs/frame/message/controller.cjs +191 -0
- package/dist/cjs/frame/message/controller.cjs.map +1 -0
- package/dist/cjs/frame/options.cjs +108 -0
- package/dist/cjs/frame/options.cjs.map +1 -0
- package/dist/cjs/frame/parent.cjs +259 -0
- package/dist/cjs/frame/parent.cjs.map +1 -0
- package/dist/cjs/frame/placement.cjs +156 -0
- package/dist/cjs/frame/placement.cjs.map +1 -0
- package/dist/cjs/frame/slider.cjs +162 -0
- package/dist/cjs/frame/slider.cjs.map +1 -0
- package/dist/cjs/helper/abstract-helper.cjs +55 -0
- package/dist/cjs/helper/abstract-helper.cjs.map +1 -0
- package/dist/cjs/helper/app-manager.cjs +39 -0
- package/dist/cjs/helper/app-manager.cjs.map +1 -0
- package/dist/cjs/helper/currency-manager.cjs +215 -0
- package/dist/cjs/helper/currency-manager.cjs.map +1 -0
- package/dist/cjs/helper/helper-manager.cjs +397 -0
- package/dist/cjs/helper/helper-manager.cjs.map +1 -0
- package/dist/cjs/helper/license-manager.cjs +52 -0
- package/dist/cjs/helper/license-manager.cjs.map +1 -0
- package/dist/cjs/helper/options-manager.cjs +205 -0
- package/dist/cjs/helper/options-manager.cjs.map +1 -0
- package/dist/cjs/helper/payment-manager.cjs +35 -0
- package/dist/cjs/helper/payment-manager.cjs.map +1 -0
- package/dist/cjs/helper/profile-manager.cjs +35 -0
- package/dist/cjs/helper/profile-manager.cjs.map +1 -0
- package/dist/cjs/helper/use-b24-helper.cjs +85 -0
- package/dist/cjs/helper/use-b24-helper.cjs.map +1 -0
- package/dist/cjs/hook/auth.cjs +79 -0
- package/dist/cjs/hook/auth.cjs.map +1 -0
- package/dist/cjs/hook/b24.cjs +117 -0
- package/dist/cjs/hook/b24.cjs.map +1 -0
- package/dist/cjs/index.cjs +176 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/index.d.cts +6415 -0
- package/dist/cjs/index.d.mts +6415 -0
- package/dist/cjs/index.d.ts +6415 -0
- package/dist/cjs/loader-b24frame.cjs +103 -0
- package/dist/cjs/loader-b24frame.cjs.map +1 -0
- package/dist/cjs/logger/abstract-logger.cjs +71 -0
- package/dist/cjs/logger/abstract-logger.cjs.map +1 -0
- package/dist/cjs/logger/browser.cjs +165 -0
- package/dist/cjs/logger/browser.cjs.map +1 -0
- package/dist/cjs/logger/formatter/abstract-formatter.cjs +36 -0
- package/dist/cjs/logger/formatter/abstract-formatter.cjs.map +1 -0
- package/dist/cjs/logger/formatter/json-formatter.cjs +36 -0
- package/dist/cjs/logger/formatter/json-formatter.cjs.map +1 -0
- package/dist/cjs/logger/formatter/line-formatter.cjs +43 -0
- package/dist/cjs/logger/formatter/line-formatter.cjs.map +1 -0
- package/dist/cjs/logger/formatter/telegram-formatter.cjs +105 -0
- package/dist/cjs/logger/formatter/telegram-formatter.cjs.map +1 -0
- package/dist/cjs/logger/handler/abstract-handler.cjs +41 -0
- package/dist/cjs/logger/handler/abstract-handler.cjs.map +1 -0
- package/dist/cjs/logger/handler/consola-adapter.cjs +64 -0
- package/dist/cjs/logger/handler/consola-adapter.cjs.map +1 -0
- package/dist/cjs/logger/handler/console-handler.cjs +100 -0
- package/dist/cjs/logger/handler/console-handler.cjs.map +1 -0
- package/dist/cjs/logger/handler/console-v2-handler.cjs +53 -0
- package/dist/cjs/logger/handler/console-v2-handler.cjs.map +1 -0
- package/dist/cjs/logger/handler/memory-handler.cjs +50 -0
- package/dist/cjs/logger/handler/memory-handler.cjs.map +1 -0
- package/dist/cjs/logger/handler/stream-handler.cjs +75 -0
- package/dist/cjs/logger/handler/stream-handler.cjs.map +1 -0
- package/dist/cjs/logger/handler/telegram-handler.cjs +159 -0
- package/dist/cjs/logger/handler/telegram-handler.cjs.map +1 -0
- package/dist/cjs/logger/handler/winston-adapter.cjs +59 -0
- package/dist/cjs/logger/handler/winston-adapter.cjs.map +1 -0
- package/dist/cjs/logger/logger-factory.cjs +69 -0
- package/dist/cjs/logger/logger-factory.cjs.map +1 -0
- package/dist/cjs/logger/logger.cjs +78 -0
- package/dist/cjs/logger/logger.cjs.map +1 -0
- package/dist/cjs/logger/null-logger.cjs +34 -0
- package/dist/cjs/logger/null-logger.cjs.map +1 -0
- package/dist/cjs/logger/processor/memory-usage-processor.cjs +22 -0
- package/dist/cjs/logger/processor/memory-usage-processor.cjs.map +1 -0
- package/dist/cjs/logger/processor/pid-processor.cjs +22 -0
- package/dist/cjs/logger/processor/pid-processor.cjs.map +1 -0
- package/dist/cjs/oauth/auth.cjs +214 -0
- package/dist/cjs/oauth/auth.cjs.map +1 -0
- package/dist/cjs/oauth/b24.cjs +119 -0
- package/dist/cjs/oauth/b24.cjs.map +1 -0
- package/dist/cjs/oauth/refresh-token-error.cjs +22 -0
- package/dist/cjs/oauth/refresh-token-error.cjs.map +1 -0
- package/dist/cjs/pullClient/abstract-connector.cjs +80 -0
- package/dist/cjs/pullClient/abstract-connector.cjs.map +1 -0
- package/dist/cjs/pullClient/channel-manager.cjs +91 -0
- package/dist/cjs/pullClient/channel-manager.cjs.map +1 -0
- package/dist/cjs/pullClient/client.cjs +2177 -0
- package/dist/cjs/pullClient/client.cjs.map +1 -0
- package/dist/cjs/pullClient/errors.cjs +34 -0
- package/dist/cjs/pullClient/errors.cjs.map +1 -0
- package/dist/cjs/pullClient/json-rpc.cjs +213 -0
- package/dist/cjs/pullClient/json-rpc.cjs.map +1 -0
- package/dist/cjs/pullClient/long-polling-connector.cjs +159 -0
- package/dist/cjs/pullClient/long-polling-connector.cjs.map +1 -0
- package/dist/cjs/pullClient/protobuf/index.cjs +22 -0
- package/dist/cjs/pullClient/protobuf/index.cjs.map +1 -0
- package/dist/cjs/pullClient/protobuf/model.cjs +1060 -0
- package/dist/cjs/pullClient/protobuf/model.cjs.map +1 -0
- package/dist/cjs/pullClient/protobuf/protobuf.cjs +4655 -0
- package/dist/cjs/pullClient/protobuf/protobuf.cjs.map +1 -0
- package/dist/cjs/pullClient/shared-config.cjs +135 -0
- package/dist/cjs/pullClient/shared-config.cjs.map +1 -0
- package/dist/cjs/pullClient/storage-manager.cjs +74 -0
- package/dist/cjs/pullClient/storage-manager.cjs.map +1 -0
- package/dist/cjs/pullClient/web-socket-connector.cjs +131 -0
- package/dist/cjs/pullClient/web-socket-connector.cjs.map +1 -0
- package/dist/cjs/tools/batch-ref-v3.cjs +54 -0
- package/dist/cjs/tools/batch-ref-v3.cjs.map +1 -0
- package/dist/cjs/tools/browser.cjs +156 -0
- package/dist/cjs/tools/browser.cjs.map +1 -0
- package/dist/cjs/tools/environment.cjs +32 -0
- package/dist/cjs/tools/environment.cjs.map +1 -0
- package/dist/cjs/tools/filter-v3.cjs +139 -0
- package/dist/cjs/tools/filter-v3.cjs.map +1 -0
- package/dist/cjs/tools/formatters/iban.cjs +307 -0
- package/dist/cjs/tools/formatters/iban.cjs.map +1 -0
- package/dist/cjs/tools/formatters/numbers.cjs +68 -0
- package/dist/cjs/tools/formatters/numbers.cjs.map +1 -0
- package/dist/cjs/tools/index.cjs +42 -0
- package/dist/cjs/tools/index.cjs.map +1 -0
- package/dist/cjs/tools/scroll-size.cjs +29 -0
- package/dist/cjs/tools/scroll-size.cjs.map +1 -0
- package/dist/cjs/tools/text.cjs +210 -0
- package/dist/cjs/tools/text.cjs.map +1 -0
- package/dist/cjs/tools/type.cjs +339 -0
- package/dist/cjs/tools/type.cjs.map +1 -0
- package/dist/cjs/tools/use-formatters.cjs +462 -0
- package/dist/cjs/tools/use-formatters.cjs.map +1 -0
- package/dist/cjs/tools/uuidv7.cjs +58 -0
- package/dist/cjs/tools/uuidv7.cjs.map +1 -0
- package/dist/cjs/types/b24-helper.cjs +62 -0
- package/dist/cjs/types/b24-helper.cjs.map +1 -0
- package/dist/cjs/types/b24.cjs +18 -0
- package/dist/cjs/types/b24.cjs.map +1 -0
- package/dist/cjs/types/bizproc/index.cjs +195 -0
- package/dist/cjs/types/bizproc/index.cjs.map +1 -0
- package/dist/cjs/types/catalog/index.cjs +39 -0
- package/dist/cjs/types/catalog/index.cjs.map +1 -0
- package/dist/cjs/types/common.cjs +33 -0
- package/dist/cjs/types/common.cjs.map +1 -0
- package/dist/cjs/types/crm/entity-type.cjs +62 -0
- package/dist/cjs/types/crm/entity-type.cjs.map +1 -0
- package/dist/cjs/types/crm/productrow.cjs +19 -0
- package/dist/cjs/types/crm/productrow.cjs.map +1 -0
- package/dist/cjs/types/logger.cjs +24 -0
- package/dist/cjs/types/logger.cjs.map +1 -0
- package/dist/cjs/types/pull.cjs +94 -0
- package/dist/cjs/types/pull.cjs.map +1 -0
- package/dist/esm/_virtual/_commonjsHelpers.mjs +1 -1
- package/dist/esm/_virtual/protobuf.mjs +1 -1
- package/dist/esm/_virtual/protobuf2.mjs +1 -1
- package/dist/esm/core/abstract-b24.mjs +1 -1
- package/dist/esm/core/actions/abstract-action.mjs +1 -1
- package/dist/esm/core/actions/abstract-batch.mjs +1 -1
- package/dist/esm/core/actions/manager.mjs +1 -1
- package/dist/esm/core/actions/v2/batch-by-chunk.mjs +1 -1
- package/dist/esm/core/actions/v2/batch.mjs +1 -1
- package/dist/esm/core/actions/v2/call-list.mjs +1 -1
- package/dist/esm/core/actions/v2/call.mjs +1 -15
- package/dist/esm/core/actions/v2/call.mjs.map +1 -1
- package/dist/esm/core/actions/v2/fetch-list.mjs +1 -1
- package/dist/esm/core/actions/v2/manager-v2.mjs +1 -1
- package/dist/esm/core/actions/v3/_keyset-paginate.mjs +66 -0
- package/dist/esm/core/actions/v3/_keyset-paginate.mjs.map +1 -0
- package/dist/esm/core/actions/v3/aggregate.mjs +94 -0
- package/dist/esm/core/actions/v3/aggregate.mjs.map +1 -0
- package/dist/esm/core/actions/v3/batch-by-chunk.mjs +1 -1
- package/dist/esm/core/actions/v3/batch.mjs +1 -10
- package/dist/esm/core/actions/v3/batch.mjs.map +1 -1
- package/dist/esm/core/actions/v3/call-list.mjs +30 -44
- package/dist/esm/core/actions/v3/call-list.mjs.map +1 -1
- package/dist/esm/core/actions/v3/call-tail.mjs +116 -0
- package/dist/esm/core/actions/v3/call-tail.mjs.map +1 -0
- package/dist/esm/core/actions/v3/call.mjs +1 -10
- package/dist/esm/core/actions/v3/call.mjs.map +1 -1
- package/dist/esm/core/actions/v3/fetch-list.mjs +24 -41
- package/dist/esm/core/actions/v3/fetch-list.mjs.map +1 -1
- package/dist/esm/core/actions/v3/fetch-tail.mjs +110 -0
- package/dist/esm/core/actions/v3/fetch-tail.mjs.map +1 -0
- package/dist/esm/core/actions/v3/manager-v3.mjs +25 -1
- package/dist/esm/core/actions/v3/manager-v3.mjs.map +1 -1
- package/dist/esm/core/http/abstract-http.mjs +68 -17
- package/dist/esm/core/http/abstract-http.mjs.map +1 -1
- package/dist/esm/core/http/ajax-error.mjs +1 -1
- package/dist/esm/core/http/ajax-result.mjs +9 -8
- package/dist/esm/core/http/ajax-result.mjs.map +1 -1
- package/dist/esm/core/http/limiters/adaptive-delayer.mjs +1 -1
- package/dist/esm/core/http/limiters/manager.mjs +1 -1
- package/dist/esm/core/http/limiters/operating-limiter.mjs +1 -1
- package/dist/esm/core/http/limiters/params-factory.mjs +1 -1
- package/dist/esm/core/http/limiters/rate-limiter.mjs +1 -1
- package/dist/esm/core/http/redact.mjs +41 -13
- package/dist/esm/core/http/redact.mjs.map +1 -1
- package/dist/esm/core/http/v2.mjs +1 -18
- package/dist/esm/core/http/v2.mjs.map +1 -1
- package/dist/esm/core/http/v3.mjs +1 -15
- package/dist/esm/core/http/v3.mjs.map +1 -1
- package/dist/esm/core/interaction/batch/abstract-interaction-batch.mjs +1 -1
- package/dist/esm/core/interaction/batch/parse-row.mjs +1 -1
- package/dist/esm/core/interaction/batch/processing/interface-strategy.mjs +44 -1
- package/dist/esm/core/interaction/batch/processing/interface-strategy.mjs.map +1 -1
- package/dist/esm/core/interaction/batch/processing/v2/abstract-processing.mjs +7 -6
- package/dist/esm/core/interaction/batch/processing/v2/abstract-processing.mjs.map +1 -1
- package/dist/esm/core/interaction/batch/processing/v2/as-array.mjs +3 -3
- package/dist/esm/core/interaction/batch/processing/v2/as-array.mjs.map +1 -1
- package/dist/esm/core/interaction/batch/processing/v2/as-object.mjs +1 -1
- package/dist/esm/core/interaction/batch/processing/v3/abstract-processing.mjs +7 -19
- package/dist/esm/core/interaction/batch/processing/v3/abstract-processing.mjs.map +1 -1
- package/dist/esm/core/interaction/batch/processing/v3/as-array.mjs +3 -3
- package/dist/esm/core/interaction/batch/processing/v3/as-array.mjs.map +1 -1
- package/dist/esm/core/interaction/batch/processing/v3/as-object.mjs +1 -1
- package/dist/esm/core/interaction/batch/v2.mjs +1 -1
- package/dist/esm/core/interaction/batch/v3.mjs +1 -1
- package/dist/esm/core/language/list.mjs +1 -1
- package/dist/esm/core/request-id-generator.mjs +1 -1
- package/dist/esm/core/result.mjs +11 -4
- package/dist/esm/core/result.mjs.map +1 -1
- package/dist/esm/core/sdk-error.mjs +1 -1
- package/dist/esm/core/tools/abstract-tool.mjs +1 -1
- package/dist/esm/core/tools/healthcheck.mjs +1 -1
- package/dist/esm/core/tools/manager.mjs +1 -1
- package/dist/esm/core/tools/ping.mjs +1 -1
- package/dist/esm/core/version-manager.mjs +19 -157
- package/dist/esm/core/version-manager.mjs.map +1 -1
- package/dist/esm/frame/auth.mjs +1 -1
- package/dist/esm/frame/b24.mjs +8 -2
- package/dist/esm/frame/b24.mjs.map +1 -1
- package/dist/esm/frame/dialog.mjs +1 -1
- package/dist/esm/frame/frame.mjs +1 -1
- package/dist/esm/frame/message/commands.mjs +1 -1
- package/dist/esm/frame/message/controller.mjs +17 -6
- package/dist/esm/frame/message/controller.mjs.map +1 -1
- package/dist/esm/frame/options.mjs +1 -1
- package/dist/esm/frame/parent.mjs +1 -1
- package/dist/esm/frame/placement.mjs +1 -1
- package/dist/esm/frame/slider.mjs +1 -1
- package/dist/esm/helper/abstract-helper.mjs +1 -1
- package/dist/esm/helper/app-manager.mjs +1 -1
- package/dist/esm/helper/currency-manager.mjs +1 -1
- package/dist/esm/helper/helper-manager.mjs +1 -1
- package/dist/esm/helper/license-manager.mjs +1 -1
- package/dist/esm/helper/options-manager.mjs +1 -1
- package/dist/esm/helper/payment-manager.mjs +1 -1
- package/dist/esm/helper/profile-manager.mjs +1 -1
- package/dist/esm/helper/use-b24-helper.mjs +1 -1
- package/dist/esm/hook/auth.mjs +1 -1
- package/dist/esm/hook/b24.mjs +3 -3
- package/dist/esm/hook/b24.mjs.map +1 -1
- package/dist/esm/index.d.mts +412 -39
- package/dist/esm/index.d.ts +412 -39
- package/dist/esm/index.mjs +3 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/loader-b24frame.mjs +1 -1
- package/dist/esm/logger/abstract-logger.mjs +1 -1
- package/dist/esm/logger/browser.mjs +1 -1
- package/dist/esm/logger/formatter/abstract-formatter.mjs +1 -1
- package/dist/esm/logger/formatter/json-formatter.mjs +1 -1
- package/dist/esm/logger/formatter/line-formatter.mjs +1 -1
- package/dist/esm/logger/formatter/telegram-formatter.mjs +1 -1
- package/dist/esm/logger/handler/abstract-handler.mjs +1 -1
- package/dist/esm/logger/handler/consola-adapter.mjs +1 -1
- package/dist/esm/logger/handler/console-handler.mjs +1 -1
- package/dist/esm/logger/handler/console-v2-handler.mjs +1 -1
- package/dist/esm/logger/handler/memory-handler.mjs +1 -1
- package/dist/esm/logger/handler/stream-handler.mjs +1 -1
- package/dist/esm/logger/handler/telegram-handler.mjs +1 -1
- package/dist/esm/logger/handler/winston-adapter.mjs +1 -1
- package/dist/esm/logger/logger-factory.mjs +1 -1
- package/dist/esm/logger/logger.mjs +1 -1
- package/dist/esm/logger/null-logger.mjs +1 -1
- package/dist/esm/logger/processor/memory-usage-processor.mjs +1 -1
- package/dist/esm/logger/processor/pid-processor.mjs +1 -1
- package/dist/esm/oauth/auth.mjs +13 -16
- package/dist/esm/oauth/auth.mjs.map +1 -1
- package/dist/esm/oauth/b24.mjs +1 -1
- package/dist/esm/oauth/refresh-token-error.mjs +1 -1
- package/dist/esm/pullClient/abstract-connector.mjs +1 -1
- package/dist/esm/pullClient/channel-manager.mjs +1 -1
- package/dist/esm/pullClient/client.mjs +141 -30
- package/dist/esm/pullClient/client.mjs.map +1 -1
- package/dist/esm/pullClient/errors.mjs +1 -1
- package/dist/esm/pullClient/json-rpc.mjs +5 -4
- package/dist/esm/pullClient/json-rpc.mjs.map +1 -1
- package/dist/esm/pullClient/long-polling-connector.mjs +1 -1
- package/dist/esm/pullClient/protobuf/index.mjs +1 -1
- package/dist/esm/pullClient/protobuf/model.mjs +1 -1
- package/dist/esm/pullClient/protobuf/protobuf.mjs +1 -1
- package/dist/esm/pullClient/shared-config.mjs +1 -1
- package/dist/esm/pullClient/storage-manager.mjs +1 -1
- package/dist/esm/pullClient/web-socket-connector.mjs +1 -1
- package/dist/esm/tools/batch-ref-v3.mjs +52 -0
- package/dist/esm/tools/batch-ref-v3.mjs.map +1 -0
- package/dist/esm/tools/browser.mjs +1 -1
- package/dist/esm/tools/environment.mjs +1 -1
- package/dist/esm/tools/filter-v3.mjs +137 -0
- package/dist/esm/tools/filter-v3.mjs.map +1 -0
- package/dist/esm/tools/formatters/iban.mjs +1 -1
- package/dist/esm/tools/formatters/numbers.mjs +1 -1
- package/dist/esm/tools/index.mjs +1 -1
- package/dist/esm/tools/scroll-size.mjs +1 -1
- package/dist/esm/tools/text.mjs +1 -1
- package/dist/esm/tools/type.mjs +1 -1
- package/dist/esm/tools/use-formatters.mjs +1 -1
- package/dist/esm/tools/uuidv7.mjs +1 -1
- package/dist/esm/types/b24-helper.mjs +1 -1
- package/dist/esm/types/b24.mjs +1 -1
- package/dist/esm/types/bizproc/index.mjs +1 -1
- package/dist/esm/types/catalog/index.mjs +1 -1
- package/dist/esm/types/common.mjs +1 -1
- package/dist/esm/types/crm/entity-type.mjs +1 -1
- package/dist/esm/types/crm/productrow.mjs +1 -1
- package/dist/esm/types/logger.mjs +1 -1
- package/dist/esm/types/pull.mjs +1 -1
- package/dist/umd/index.js +1258 -719
- package/dist/umd/index.js.map +1 -1
- package/dist/umd/index.min.js +26 -26
- package/dist/umd/index.min.js.map +1 -1
- package/dist/umd/package.json +3 -0
- package/package.json +12 -4
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @package @bitrix24/b24jssdk
|
|
3
|
-
* @version
|
|
3
|
+
* @version 2.0.0
|
|
4
4
|
* @copyright (c) 2026 Bitrix24
|
|
5
5
|
* @license MIT
|
|
6
6
|
* @see https://github.com/bitrix24/b24jssdk
|
|
@@ -23,8 +23,8 @@ class ProcessingAsArrayV3 extends AbstractProcessingV3 {
|
|
|
23
23
|
});
|
|
24
24
|
return result;
|
|
25
25
|
}
|
|
26
|
-
_processResponseError(result, ajaxError,
|
|
27
|
-
result.addError(ajaxError);
|
|
26
|
+
_processResponseError(result, ajaxError, index) {
|
|
27
|
+
result.addError(ajaxError, index);
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"as-array.mjs","sources":["../../../../../../../src/core/interaction/batch/processing/v3/as-array.ts"],"sourcesContent":["import type { GetCommandsOptions, IProcessingStrategy } from '../interface-strategy'\nimport type {\n BatchCommandsArrayUniversal,\n BatchCommandsObjectUniversal,\n BatchCommandV3, ICallBatchResult\n} from '../../../../../types/http'\nimport type { Result } from '../../../../result'\nimport type { AjaxError } from '../../../../http/ajax-error'\nimport { AbstractProcessingV3 } from './abstract-processing'\nimport { ParseRow } from '../../parse-row'\n\nexport class ProcessingAsArrayV3 extends AbstractProcessingV3 implements IProcessingStrategy {\n public prepareCommands(\n calls: BatchCommandsArrayUniversal | BatchCommandsObjectUniversal,\n options: GetCommandsOptions\n ): BatchCommandV3[] {\n const result: BatchCommandV3[] = []\n calls.forEach((row) => {\n const command = ParseRow.getBatchCommand(row, options)\n result.push(command)\n })\n\n return result\n }\n\n protected _processResponseError<T>(\n result: Result<ICallBatchResult<T>>,\n ajaxError: AjaxError,\n
|
|
1
|
+
{"version":3,"file":"as-array.mjs","sources":["../../../../../../../src/core/interaction/batch/processing/v3/as-array.ts"],"sourcesContent":["import type { GetCommandsOptions, IProcessingStrategy } from '../interface-strategy'\nimport type {\n BatchCommandsArrayUniversal,\n BatchCommandsObjectUniversal,\n BatchCommandV3, ICallBatchResult\n} from '../../../../../types/http'\nimport type { Result } from '../../../../result'\nimport type { AjaxError } from '../../../../http/ajax-error'\nimport { AbstractProcessingV3 } from './abstract-processing'\nimport { ParseRow } from '../../parse-row'\n\nexport class ProcessingAsArrayV3 extends AbstractProcessingV3 implements IProcessingStrategy {\n public prepareCommands(\n calls: BatchCommandsArrayUniversal | BatchCommandsObjectUniversal,\n options: GetCommandsOptions\n ): BatchCommandV3[] {\n const result: BatchCommandV3[] = []\n calls.forEach((row) => {\n const command = ParseRow.getBatchCommand(row, options)\n result.push(command)\n })\n\n return result\n }\n\n protected _processResponseError<T>(\n result: Result<ICallBatchResult<T>>,\n ajaxError: AjaxError,\n index: string\n ): void {\n // Key the error by the command's numeric position so getErrorsByKey() /\n // getErrorMessagesByKey() tell the caller *which* command failed, matching\n // object/named-command mode. (#255)\n result.addError(ajaxError, index)\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;AAWO,MAAM,4BAA4B,oBAAA,CAAoD;AAAA,EAX7F;AAW6F,IAAA,MAAA,CAAA,IAAA,EAAA,qBAAA,CAAA;AAAA;AAAA,EACpF,eAAA,CACL,OACA,OAAA,EACkB;AAClB,IAAA,MAAM,SAA2B,EAAC;AAClC,IAAA,KAAA,CAAM,OAAA,CAAQ,CAAC,GAAA,KAAQ;AACrB,MAAA,MAAM,OAAA,GAAU,QAAA,CAAS,eAAA,CAAgB,GAAA,EAAK,OAAO,CAAA;AACrD,MAAA,MAAA,CAAO,KAAK,OAAO,CAAA;AAAA,IACrB,CAAC,CAAA;AAED,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEU,qBAAA,CACR,MAAA,EACA,SAAA,EACA,KAAA,EACM;AAIN,IAAA,MAAA,CAAO,QAAA,CAAS,WAAW,KAAK,CAAA;AAAA,EAClC;AACF;;;;"}
|
package/dist/esm/core/result.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @package @bitrix24/b24jssdk
|
|
3
|
-
* @version
|
|
3
|
+
* @version 2.0.0
|
|
4
4
|
* @copyright (c) 2026 Bitrix24
|
|
5
5
|
* @license MIT
|
|
6
6
|
* @see https://github.com/bitrix24/b24jssdk
|
|
@@ -66,9 +66,16 @@ class Result {
|
|
|
66
66
|
* {@link Result.getErrors}, the keys are not discarded — useful for batch
|
|
67
67
|
* calls with `isHaltOnError: false`.
|
|
68
68
|
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
69
|
+
* For batch calls the key tells you *which* command failed:
|
|
70
|
+
* - an **object / named-command batch** keys each error by the command label;
|
|
71
|
+
* - an **array-mode batch** keys each per-command error by its **numeric
|
|
72
|
+
* position** (`'0'`, `'1'`, … as a string), matching the command order you
|
|
73
|
+
* passed in. (#255 — previously these fell back to a random UUID.)
|
|
74
|
+
*
|
|
75
|
+
* An envelope-level soft error (not tied to one command) lands under the
|
|
76
|
+
* internal `'base-error'` key, and {@link Result.addErrors} (no explicit key)
|
|
77
|
+
* still uses generated UUIDs — for those, prefer {@link Result.getErrors} /
|
|
78
|
+
* {@link Result.getErrorMessages}. (#230)
|
|
72
79
|
*
|
|
73
80
|
* @returns {Record<string, Error>} A map of error key to Error object.
|
|
74
81
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result.mjs","sources":["../../../src/core/result.ts"],"sourcesContent":["import { Text } from '../tools/text'\n\n/**\n * Interface defining the structure and methods of a Result object.\n */\nexport interface IResult<T = any> {\n /**\n * Indicates whether the operation resulted in success (no errors).\n */\n readonly isSuccess: boolean\n /**\n * Collection of errors\n */\n readonly errors: Map<string, Error>\n\n /**\n * Sets the data associated with the result.\n *\n * @param data The data to be stored in the result.\n * @returns The current Result object for chaining methods.\n */\n setData: (data: T) => IResult<T>\n /**\n * Retrieves the data associated with the result.\n *\n * @returns The data stored in the result, if any.\n */\n getData: () => T | null | undefined\n\n /**\n * Adds an error message or Error object to the result.\n * @param error The error message or Error object to be added.\n * @param key Error key. You can leave it blank. Then it will be generated automatically.\n * @returns {IResult} The current Result object for chaining methods.\n */\n addError: (error: Error | string, key?: string) => IResult\n /**\n * Adds multiple errors to the result in a single call.\n *\n * @param errors An array of errors or strings that will be converted to errors.\n * @returns {IResult} The current Result object for chaining methods.\n */\n addErrors: (errors: (Error | string)[]) => IResult\n /**\n * Retrieves an iterator for the errors collected in the result.\n *\n * @returns {IterableIterator<Error>} An iterator over the stored Error objects.\n * @see {@link IResult.getErrorsByKey} — keeps the request keys.\n */\n getErrors: () => IterableIterator<Error>\n\n /**\n * Retrieves an array of error messages from the collected errors.\n *\n * @returns {string[]} An array of strings representing the error messages.\n */\n getErrorMessages: () => string[]\n\n /**\n * Retrieves all errors keyed by their identifier (e.g. the batch request key),\n * preserving which request produced each error. Unlike {@link getErrors}, the\n * keys are not discarded — useful for batch calls with `isHaltOnError: false`.\n *\n * @returns {Record<string, Error>} A map of error key to Error object.\n */\n getErrorsByKey: () => Record<string, Error>\n\n /**\n * Retrieves all error messages keyed by their identifier (e.g. the batch\n * request key). Unlike {@link getErrorMessages}, the keys are preserved.\n *\n * @returns {Record<string, string>} A map of error key to error message.\n */\n getErrorMessagesByKey: () => Record<string, string>\n\n /**\n * Checks for an error in a collection by key\n * @param key - Error key\n */\n hasError(key: string): boolean\n /**\n * Converts the Result object to a string.\n *\n * @returns {string} Returns a string representation of the result operation\n */\n toString: () => string\n}\n\n/**\n * A class representing an operation result with success/failure status, data, and errors.\n * Similar to \\Bitrix\\Main\\Result from Bitrix Framework.\n * @link https://dev.1c-bitrix.ru/api_d7/bitrix/main/result/index.php\n */\nexport class Result<T = any> implements IResult<T> {\n protected _errors: Map<string, Error>\n protected _data: T | null | undefined\n\n constructor(data?: T) {\n this._errors = new Map()\n this._data = data ?? null\n }\n\n get isSuccess(): boolean {\n return this._errors.size === 0\n }\n\n get errors(): Map<string, Error> {\n return this._errors\n }\n\n setData(data: T | null | undefined): Result<T> {\n this._data = data\n\n return this\n }\n\n getData(): T | null | undefined {\n return this._data\n }\n\n addError(error: Error | string, key?: string): Result<T> {\n const errorKey = key ?? Text.getUuidRfc4122()\n const errorObj = typeof error === 'string' ? new Error(error) : error\n\n this._errors.set(errorKey, errorObj)\n\n return this\n }\n\n addErrors(errors: (Error | string)[]): Result<T> {\n for (const error of errors) {\n this.addError(error)\n }\n\n return this\n }\n\n getErrors(): IterableIterator<Error> {\n return this._errors.values()\n }\n\n hasError(key: string): boolean {\n return this._errors.has(key)\n }\n\n /**\n * Retrieves an array of error messages from the collected errors.\n *\n * @returns An array of strings representing the error messages. Each string\n * contains the message of a corresponding error object.\n */\n getErrorMessages(): string[] {\n return Array.from(this._errors.values(), e => e.message)\n }\n\n /**\n * Retrieves all errors as a plain object (a snapshot copy) keyed by their\n * identifier, preserving which request produced each error. Unlike\n * {@link Result.getErrors}, the keys are not discarded — useful for batch\n * calls with `isHaltOnError: false`.\n *\n * Keys are meaningful only when the error was added with an explicit key\n * (e.g. an object / named-command batch). Array-mode batches and\n * {@link Result.addErrors} fall back to generated UUID keys.\n *\n * @returns {Record<string, Error>} A map of error key to Error object.\n */\n getErrorsByKey(): Record<string, Error> {\n return Object.fromEntries(this._errors)\n }\n\n /**\n * Retrieves all error messages as a plain object (a snapshot copy) keyed by\n * their identifier. Unlike {@link Result.getErrorMessages}, the keys are\n * preserved. See {@link Result.getErrorsByKey} for when keys are meaningful.\n *\n * @returns {Record<string, string>} A map of error key to error message.\n */\n getErrorMessagesByKey(): Record<string, string> {\n // `Object.fromEntries` (like getErrorsByKey) is prototype-safe: a literal\n // `__proto__` key becomes an own property instead of being silently dropped.\n return Object.fromEntries(\n Array.from(this._errors, ([key, error]): [string, string] => [key, error.message])\n )\n }\n\n /**\n * Converts the Result object to a string.\n *\n * @returns {string} Returns a string representation of the result operation\n */\n toString(): string {\n const status = this.isSuccess ? 'success' : 'failure'\n const data = this.safeStringify(this._data)\n\n return this.isSuccess\n ? `Result(${status}): ${data}`\n : `Result(${status}): ${data}\\nErrors: ${this.getErrorMessages().join(', ')}`\n }\n\n private safeStringify(data: unknown): string {\n try {\n return JSON.stringify(data, this.replacer, 2)\n } catch {\n return '[Unable to serialize data]'\n }\n }\n\n private replacer(_: string, value: unknown) {\n if (value instanceof Error) {\n return {\n name: value.name,\n message: value.message,\n stack: value.stack\n }\n }\n return value\n }\n\n // Static constructors\n static ok<U>(data?: U): Result<U> {\n return new Result<U>(data)\n }\n\n static fail<U>(error: Error | string, key?: string): Result<U> {\n return new Result<U>().addError(error, key)\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"result.mjs","sources":["../../../src/core/result.ts"],"sourcesContent":["import { Text } from '../tools/text'\n\n/**\n * Interface defining the structure and methods of a Result object.\n */\nexport interface IResult<T = any> {\n /**\n * Indicates whether the operation resulted in success (no errors).\n */\n readonly isSuccess: boolean\n /**\n * Collection of errors\n */\n readonly errors: Map<string, Error>\n\n /**\n * Sets the data associated with the result.\n *\n * @param data The data to be stored in the result.\n * @returns The current Result object for chaining methods.\n */\n setData: (data: T) => IResult<T>\n /**\n * Retrieves the data associated with the result.\n *\n * @returns The data stored in the result, if any.\n */\n getData: () => T | null | undefined\n\n /**\n * Adds an error message or Error object to the result.\n * @param error The error message or Error object to be added.\n * @param key Error key. You can leave it blank. Then it will be generated automatically.\n * @returns {IResult} The current Result object for chaining methods.\n */\n addError: (error: Error | string, key?: string) => IResult\n /**\n * Adds multiple errors to the result in a single call.\n *\n * @param errors An array of errors or strings that will be converted to errors.\n * @returns {IResult} The current Result object for chaining methods.\n */\n addErrors: (errors: (Error | string)[]) => IResult\n /**\n * Retrieves an iterator for the errors collected in the result.\n *\n * @returns {IterableIterator<Error>} An iterator over the stored Error objects.\n * @see {@link IResult.getErrorsByKey} — keeps the request keys.\n */\n getErrors: () => IterableIterator<Error>\n\n /**\n * Retrieves an array of error messages from the collected errors.\n *\n * @returns {string[]} An array of strings representing the error messages.\n */\n getErrorMessages: () => string[]\n\n /**\n * Retrieves all errors keyed by their identifier (e.g. the batch request key),\n * preserving which request produced each error. Unlike {@link getErrors}, the\n * keys are not discarded — useful for batch calls with `isHaltOnError: false`.\n *\n * @returns {Record<string, Error>} A map of error key to Error object.\n */\n getErrorsByKey: () => Record<string, Error>\n\n /**\n * Retrieves all error messages keyed by their identifier (e.g. the batch\n * request key). Unlike {@link getErrorMessages}, the keys are preserved.\n *\n * @returns {Record<string, string>} A map of error key to error message.\n */\n getErrorMessagesByKey: () => Record<string, string>\n\n /**\n * Checks for an error in a collection by key\n * @param key - Error key\n */\n hasError(key: string): boolean\n /**\n * Converts the Result object to a string.\n *\n * @returns {string} Returns a string representation of the result operation\n */\n toString: () => string\n}\n\n/**\n * A class representing an operation result with success/failure status, data, and errors.\n * Similar to \\Bitrix\\Main\\Result from Bitrix Framework.\n * @link https://dev.1c-bitrix.ru/api_d7/bitrix/main/result/index.php\n */\nexport class Result<T = any> implements IResult<T> {\n protected _errors: Map<string, Error>\n protected _data: T | null | undefined\n\n constructor(data?: T) {\n this._errors = new Map()\n this._data = data ?? null\n }\n\n get isSuccess(): boolean {\n return this._errors.size === 0\n }\n\n get errors(): Map<string, Error> {\n return this._errors\n }\n\n setData(data: T | null | undefined): Result<T> {\n this._data = data\n\n return this\n }\n\n getData(): T | null | undefined {\n return this._data\n }\n\n addError(error: Error | string, key?: string): Result<T> {\n const errorKey = key ?? Text.getUuidRfc4122()\n const errorObj = typeof error === 'string' ? new Error(error) : error\n\n this._errors.set(errorKey, errorObj)\n\n return this\n }\n\n addErrors(errors: (Error | string)[]): Result<T> {\n for (const error of errors) {\n this.addError(error)\n }\n\n return this\n }\n\n getErrors(): IterableIterator<Error> {\n return this._errors.values()\n }\n\n hasError(key: string): boolean {\n return this._errors.has(key)\n }\n\n /**\n * Retrieves an array of error messages from the collected errors.\n *\n * @returns An array of strings representing the error messages. Each string\n * contains the message of a corresponding error object.\n */\n getErrorMessages(): string[] {\n return Array.from(this._errors.values(), e => e.message)\n }\n\n /**\n * Retrieves all errors as a plain object (a snapshot copy) keyed by their\n * identifier, preserving which request produced each error. Unlike\n * {@link Result.getErrors}, the keys are not discarded — useful for batch\n * calls with `isHaltOnError: false`.\n *\n * For batch calls the key tells you *which* command failed:\n * - an **object / named-command batch** keys each error by the command label;\n * - an **array-mode batch** keys each per-command error by its **numeric\n * position** (`'0'`, `'1'`, … as a string), matching the command order you\n * passed in. (#255 — previously these fell back to a random UUID.)\n *\n * An envelope-level soft error (not tied to one command) lands under the\n * internal `'base-error'` key, and {@link Result.addErrors} (no explicit key)\n * still uses generated UUIDs — for those, prefer {@link Result.getErrors} /\n * {@link Result.getErrorMessages}. (#230)\n *\n * @returns {Record<string, Error>} A map of error key to Error object.\n */\n getErrorsByKey(): Record<string, Error> {\n return Object.fromEntries(this._errors)\n }\n\n /**\n * Retrieves all error messages as a plain object (a snapshot copy) keyed by\n * their identifier. Unlike {@link Result.getErrorMessages}, the keys are\n * preserved. See {@link Result.getErrorsByKey} for when keys are meaningful.\n *\n * @returns {Record<string, string>} A map of error key to error message.\n */\n getErrorMessagesByKey(): Record<string, string> {\n // `Object.fromEntries` (like getErrorsByKey) is prototype-safe: a literal\n // `__proto__` key becomes an own property instead of being silently dropped.\n return Object.fromEntries(\n Array.from(this._errors, ([key, error]): [string, string] => [key, error.message])\n )\n }\n\n /**\n * Converts the Result object to a string.\n *\n * @returns {string} Returns a string representation of the result operation\n */\n toString(): string {\n const status = this.isSuccess ? 'success' : 'failure'\n const data = this.safeStringify(this._data)\n\n return this.isSuccess\n ? `Result(${status}): ${data}`\n : `Result(${status}): ${data}\\nErrors: ${this.getErrorMessages().join(', ')}`\n }\n\n private safeStringify(data: unknown): string {\n try {\n return JSON.stringify(data, this.replacer, 2)\n } catch {\n return '[Unable to serialize data]'\n }\n }\n\n private replacer(_: string, value: unknown) {\n if (value instanceof Error) {\n return {\n name: value.name,\n message: value.message,\n stack: value.stack\n }\n }\n return value\n }\n\n // Static constructors\n static ok<U>(data?: U): Result<U> {\n return new Result<U>(data)\n }\n\n static fail<U>(error: Error | string, key?: string): Result<U> {\n return new Result<U>().addError(error, key)\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AA6FO,MAAM,MAAA,CAAsC;AAAA,EA7FnD;AA6FmD,IAAA,MAAA,CAAA,IAAA,EAAA,QAAA,CAAA;AAAA;AAAA,EACvC,OAAA;AAAA,EACA,KAAA;AAAA,EAEV,YAAY,IAAA,EAAU;AACpB,IAAA,IAAA,CAAK,OAAA,uBAAc,GAAA,EAAI;AACvB,IAAA,IAAA,CAAK,QAAQ,IAAA,IAAQ,IAAA;AAAA,EACvB;AAAA,EAEA,IAAI,SAAA,GAAqB;AACvB,IAAA,OAAO,IAAA,CAAK,QAAQ,IAAA,KAAS,CAAA;AAAA,EAC/B;AAAA,EAEA,IAAI,MAAA,GAA6B;AAC/B,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,EACd;AAAA,EAEA,QAAQ,IAAA,EAAuC;AAC7C,IAAA,IAAA,CAAK,KAAA,GAAQ,IAAA;AAEb,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,OAAA,GAAgC;AAC9B,IAAA,OAAO,IAAA,CAAK,KAAA;AAAA,EACd;AAAA,EAEA,QAAA,CAAS,OAAuB,GAAA,EAAyB;AACvD,IAAA,MAAM,QAAA,GAAW,GAAA,IAAO,IAAA,CAAK,cAAA,EAAe;AAC5C,IAAA,MAAM,WAAW,OAAO,KAAA,KAAU,WAAW,IAAI,KAAA,CAAM,KAAK,CAAA,GAAI,KAAA;AAEhE,IAAA,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,QAAA,EAAU,QAAQ,CAAA;AAEnC,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,UAAU,MAAA,EAAuC;AAC/C,IAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,MAAA,IAAA,CAAK,SAAS,KAAK,CAAA;AAAA,IACrB;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,SAAA,GAAqC;AACnC,IAAA,OAAO,IAAA,CAAK,QAAQ,MAAA,EAAO;AAAA,EAC7B;AAAA,EAEA,SAAS,GAAA,EAAsB;AAC7B,IAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,GAAG,CAAA;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,gBAAA,GAA6B;AAC3B,IAAA,OAAO,KAAA,CAAM,KAAK,IAAA,CAAK,OAAA,CAAQ,QAAO,EAAG,CAAA,CAAA,KAAK,EAAE,OAAO,CAAA;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBA,cAAA,GAAwC;AACtC,IAAA,OAAO,MAAA,CAAO,WAAA,CAAY,IAAA,CAAK,OAAO,CAAA;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,qBAAA,GAAgD;AAG9C,IAAA,OAAO,MAAA,CAAO,WAAA;AAAA,MACZ,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,OAAA,EAAS,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAwB,CAAC,GAAA,EAAK,KAAA,CAAM,OAAO,CAAC;AAAA,KACnF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,QAAA,GAAmB;AACjB,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,SAAA,GAAY,SAAA,GAAY,SAAA;AAC5C,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,aAAA,CAAc,IAAA,CAAK,KAAK,CAAA;AAE1C,IAAA,OAAO,IAAA,CAAK,SAAA,GACR,CAAA,OAAA,EAAU,MAAM,CAAA,GAAA,EAAM,IAAI,CAAA,CAAA,GAC1B,CAAA,OAAA,EAAU,MAAM,CAAA,GAAA,EAAM,IAAI;AAAA,QAAA,EAAa,IAAA,CAAK,gBAAA,EAAiB,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA;AAAA,EAC/E;AAAA,EAEQ,cAAc,IAAA,EAAuB;AAC3C,IAAA,IAAI;AACF,MAAA,OAAO,IAAA,CAAK,SAAA,CAAU,IAAA,EAAM,IAAA,CAAK,UAAU,CAAC,CAAA;AAAA,IAC9C,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,4BAAA;AAAA,IACT;AAAA,EACF;AAAA,EAEQ,QAAA,CAAS,GAAW,KAAA,EAAgB;AAC1C,IAAA,IAAI,iBAAiB,KAAA,EAAO;AAC1B,MAAA,OAAO;AAAA,QACL,MAAM,KAAA,CAAM,IAAA;AAAA,QACZ,SAAS,KAAA,CAAM,OAAA;AAAA,QACf,OAAO,KAAA,CAAM;AAAA,OACf;AAAA,IACF;AACA,IAAA,OAAO,KAAA;AAAA,EACT;AAAA;AAAA,EAGA,OAAO,GAAM,IAAA,EAAqB;AAChC,IAAA,OAAO,IAAI,OAAU,IAAI,CAAA;AAAA,EAC3B;AAAA,EAEA,OAAO,IAAA,CAAQ,KAAA,EAAuB,GAAA,EAAyB;AAC7D,IAAA,OAAO,IAAI,MAAA,EAAU,CAAE,QAAA,CAAS,OAAO,GAAG,CAAA;AAAA,EAC5C;AACF;;;;"}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @package @bitrix24/b24jssdk
|
|
3
|
-
* @version
|
|
3
|
+
* @version 2.0.0
|
|
4
4
|
* @copyright (c) 2026 Bitrix24
|
|
5
5
|
* @license MIT
|
|
6
6
|
* @see https://github.com/bitrix24/b24jssdk
|
|
7
7
|
* @see https://bitrix24.github.io/b24jssdk/
|
|
8
8
|
*/
|
|
9
9
|
import { ApiVersion } from '../types/b24.mjs';
|
|
10
|
-
import { ParseRow } from './interaction/batch/parse-row.mjs';
|
|
11
|
-
import { SdkError } from './sdk-error.mjs';
|
|
12
10
|
|
|
13
11
|
var __defProp = Object.defineProperty;
|
|
14
12
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
@@ -16,174 +14,38 @@ class VersionManager {
|
|
|
16
14
|
static {
|
|
17
15
|
__name(this, "VersionManager");
|
|
18
16
|
}
|
|
19
|
-
#supportMethods;
|
|
20
|
-
constructor() {
|
|
21
|
-
this.#supportMethods = [
|
|
22
|
-
// --- infrastructure ---
|
|
23
|
-
"/batch",
|
|
24
|
-
// done
|
|
25
|
-
"/scopes",
|
|
26
|
-
// done
|
|
27
|
-
"/rest.scope.list",
|
|
28
|
-
// done
|
|
29
|
-
"/rest.documentation.openapi",
|
|
30
|
-
"/documentation",
|
|
31
|
-
// --- main ---
|
|
32
|
-
/** @see /settings/configs/event_log.php */
|
|
33
|
-
"/main.eventlog.list",
|
|
34
|
-
// done
|
|
35
|
-
"/main.eventlog.get",
|
|
36
|
-
// done
|
|
37
|
-
"/main.eventlog.tail",
|
|
38
|
-
// done
|
|
39
|
-
"/main.eventlog.field.list",
|
|
40
|
-
"/main.eventlog.field.get",
|
|
41
|
-
// --- mail (rest-v3) ---
|
|
42
|
-
"/mail.mailbox.list",
|
|
43
|
-
"/mail.mailbox.get",
|
|
44
|
-
"/mail.mailbox.senders",
|
|
45
|
-
"/mail.mailbox.field.list",
|
|
46
|
-
"/mail.mailbox.field.get",
|
|
47
|
-
"/mail.message.list",
|
|
48
|
-
"/mail.message.get",
|
|
49
|
-
"/mail.message.thread",
|
|
50
|
-
"/mail.message.send",
|
|
51
|
-
"/mail.message.reply",
|
|
52
|
-
"/mail.message.forward",
|
|
53
|
-
"/mail.message.movetofolder",
|
|
54
|
-
"/mail.message.createcrmactivity",
|
|
55
|
-
"/mail.message.removecrmactivity",
|
|
56
|
-
"/mail.message.createtask",
|
|
57
|
-
"/mail.message.createcalendarevent",
|
|
58
|
-
"/mail.message.createchat",
|
|
59
|
-
"/mail.message.createfeedpost",
|
|
60
|
-
"/mail.message.field.list",
|
|
61
|
-
"/mail.message.field.get",
|
|
62
|
-
"/mail.recipient.listcontacts",
|
|
63
|
-
"/mail.recipient.listemployees",
|
|
64
|
-
"/mail.recipient.field.list",
|
|
65
|
-
"/mail.recipient.field.get",
|
|
66
|
-
// --- humanresources (rest-v3) ---
|
|
67
|
-
"/humanresources.node.add",
|
|
68
|
-
"/humanresources.node.edit",
|
|
69
|
-
"/humanresources.node.get",
|
|
70
|
-
"/humanresources.node.list",
|
|
71
|
-
"/humanresources.node.search",
|
|
72
|
-
"/humanresources.node.children",
|
|
73
|
-
"/humanresources.node.count",
|
|
74
|
-
"/humanresources.node.move",
|
|
75
|
-
"/humanresources.node.field.list",
|
|
76
|
-
"/humanresources.node.field.get",
|
|
77
|
-
"/humanresources.node.member.add",
|
|
78
|
-
"/humanresources.node.member.set",
|
|
79
|
-
"/humanresources.node.member.move",
|
|
80
|
-
"/humanresources.node.member.remove",
|
|
81
|
-
"/humanresources.node.communication.edit",
|
|
82
|
-
"/humanresources.node.communication.list",
|
|
83
|
-
"/humanresources.employee.search",
|
|
84
|
-
"/humanresources.employee.subordinates",
|
|
85
|
-
"/humanresources.employee.count",
|
|
86
|
-
"/humanresources.employee.multidepartment",
|
|
87
|
-
"/humanresources.employee.field.list",
|
|
88
|
-
"/humanresources.employee.field.get",
|
|
89
|
-
// --- tasks (rest-v3) ---
|
|
90
|
-
"/tasks.task.add",
|
|
91
|
-
"/tasks.task.get",
|
|
92
|
-
// done
|
|
93
|
-
"/tasks.task.update",
|
|
94
|
-
// done
|
|
95
|
-
"/tasks.task.delete",
|
|
96
|
-
"/tasks.task.access.get",
|
|
97
|
-
"/tasks.task.file.attach",
|
|
98
|
-
"/tasks.task.chat.message.send",
|
|
99
|
-
"/tasks.task.result.add",
|
|
100
|
-
"/tasks.task.result.addfromchatmessage",
|
|
101
|
-
"/tasks.task.result.update",
|
|
102
|
-
"/tasks.task.result.list",
|
|
103
|
-
"/tasks.task.result.delete",
|
|
104
|
-
"/tasks.task.field.list",
|
|
105
|
-
"/tasks.task.field.get",
|
|
106
|
-
"/tasks.task.access.field.list",
|
|
107
|
-
"/tasks.task.access.field.get",
|
|
108
|
-
"/tasks.task.file.field.list",
|
|
109
|
-
"/tasks.task.file.field.get",
|
|
110
|
-
"/tasks.task.chat.message.field.list",
|
|
111
|
-
"/tasks.task.chat.message.field.get",
|
|
112
|
-
// --- timeman (rest-v3) — read-only in v3 (no record.get / add / update / delete) ---
|
|
113
|
-
"/timeman.record.list",
|
|
114
|
-
"/timeman.record.field.list",
|
|
115
|
-
"/timeman.record.field.get"
|
|
116
|
-
// Cross-module methods are cross-referenced from the rest-v3 pages above but
|
|
117
|
-
// belong to modules not actualized here — add them when those modules land:
|
|
118
|
-
// user.get — user module (seen on humanresources + timeman)
|
|
119
|
-
// im.message.update / im.message.delete / im.dialog.messages.get — im module (seen on tasks)
|
|
120
|
-
// disk.storage.uploadfile / disk.folder.uploadfile /
|
|
121
|
-
// disk.storage.getchildren / disk.folder.getchildren — disk module (seen on tasks)
|
|
122
|
-
//
|
|
123
|
-
// @todo When API.v3 arrives - change in AuthOAuthManager.initIsAdmin()
|
|
124
|
-
// '/profile' // wait
|
|
125
|
-
// '/main.message.get' // wait
|
|
126
|
-
// '/main.chat.update' // wait
|
|
127
|
-
// '/main.chat.list' // wait
|
|
128
|
-
// '/main.user.list' // wait
|
|
129
|
-
];
|
|
130
|
-
}
|
|
131
17
|
static create() {
|
|
132
18
|
return new VersionManager();
|
|
133
19
|
}
|
|
134
20
|
/**
|
|
135
|
-
* List of supported API versions
|
|
136
|
-
* The highest version must be first
|
|
21
|
+
* List of supported API versions.
|
|
22
|
+
* The highest version must be first.
|
|
137
23
|
*/
|
|
138
24
|
getAllApiVersions() {
|
|
139
25
|
return [ApiVersion.v3, ApiVersion.v2];
|
|
140
26
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
return false;
|
|
149
|
-
}
|
|
150
|
-
#v3Support(method) {
|
|
151
|
-
return this.#supportMethods.includes(`/${method}`);
|
|
27
|
+
/**
|
|
28
|
+
* Retained for backward compatibility. The SDK no longer keeps a v3 method
|
|
29
|
+
* allowlist, so support is not decided client-side any more — always returns
|
|
30
|
+
* `true`. Method existence is validated by the server.
|
|
31
|
+
*/
|
|
32
|
+
isSupport(_version, _method) {
|
|
33
|
+
return true;
|
|
152
34
|
}
|
|
153
35
|
/**
|
|
154
|
-
*
|
|
36
|
+
* Returns the API version to use when the caller did not specify one. With the
|
|
37
|
+
* allowlist removed there is no client-side signal that a method is a v3
|
|
38
|
+
* method, so this defaults to v2 (the universal endpoint). Use the explicit
|
|
39
|
+
* `actions.v3.*` surface to call a method on v3.
|
|
155
40
|
*/
|
|
156
|
-
automaticallyObtainApiVersion(
|
|
157
|
-
|
|
158
|
-
if (!version) {
|
|
159
|
-
throw new SdkError({
|
|
160
|
-
code: "JSSDK_VERSION_MANAGER_NOT_DETECT_FOR_METHOD",
|
|
161
|
-
description: `No API version found that supports method ${method}.`,
|
|
162
|
-
status: 500
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
return version;
|
|
41
|
+
automaticallyObtainApiVersion(_method) {
|
|
42
|
+
return ApiVersion.v2;
|
|
166
43
|
}
|
|
167
44
|
/**
|
|
168
|
-
*
|
|
169
|
-
*
|
|
170
|
-
* @todo test methods
|
|
171
|
-
* `[['crm.item.get', { entityTypeId: 3, id: 1 }]]`
|
|
172
|
-
* `[{ method: 'crm.item.get', params: { entityTypeId: 3, id: 1 } }]`
|
|
173
|
-
* `{ cmd1: { method: 'crm.item.get', params: { entityTypeId: 3, id: 1 } }, cmd2: ['crm.item.get', { entityTypeId: 2, id: 2 }] }`
|
|
45
|
+
* Batch counterpart of {@link automaticallyObtainApiVersion}. Defaults to v2;
|
|
46
|
+
* call `actions.v3.batch.make` explicitly to run a batch on v3.
|
|
174
47
|
*/
|
|
175
|
-
automaticallyObtainApiVersionForBatch(
|
|
176
|
-
const commands = ParseRow.getMethodsFromCommands(calls);
|
|
177
|
-
let isAllSupportV3 = true;
|
|
178
|
-
for (const [_, method] of commands.entries()) {
|
|
179
|
-
if (!this.isSupport(ApiVersion.v3, method)) {
|
|
180
|
-
isAllSupportV3 = false;
|
|
181
|
-
break;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
if (isAllSupportV3) {
|
|
185
|
-
return ApiVersion.v3;
|
|
186
|
-
}
|
|
48
|
+
automaticallyObtainApiVersionForBatch(_calls) {
|
|
187
49
|
return ApiVersion.v2;
|
|
188
50
|
}
|
|
189
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version-manager.mjs","sources":["../../../src/core/version-manager.ts"],"sourcesContent":["import { ApiVersion } from '../types/b24'\nimport type {\n BatchCommandsArrayUniversal,\n BatchCommandsObjectUniversal,\n BatchNamedCommandsUniversal\n} from '../types/http'\nimport { ParseRow } from './interaction/batch/parse-row'\nimport { SdkError } from './sdk-error'\n\n/**\n * Decides which REST API version (v2 or v3) a method is routed through:\n * v3 only for methods on the published allowlist (`#supportMethods`); everything\n * else falls back to v2.\n */\nclass VersionManager {\n #supportMethods: string[]\n\n constructor() {\n /**\n * Mirrors the methods published under Bitrix24 REST v3 (per the module pages\n * of apidocs rest-v3). Absences are intentional — a module exposes only what\n * is published (e.g. `timeman` is read-only in v3: no `record.get` / `add` /\n * `update`). Entries WITHOUT a `// done` marker are routed but not yet verified\n * end-to-end against a live portal in this SDK.\n *\n * Source of truth: https://{portal}/rest/api/{user_id}/{webhook}/documentation\n * @see https://apidocs.bitrix24.com/api-reference/rest-v3/index.html#openapi\n */\n this.#supportMethods = [\n // --- infrastructure ---\n '/batch', // done\n '/scopes', // done\n '/rest.scope.list', // done\n '/rest.documentation.openapi',\n '/documentation',\n\n // --- main ---\n /** @see /settings/configs/event_log.php */\n '/main.eventlog.list', // done\n '/main.eventlog.get', // done\n '/main.eventlog.tail', // done\n '/main.eventlog.field.list',\n '/main.eventlog.field.get',\n\n // --- mail (rest-v3) ---\n '/mail.mailbox.list',\n '/mail.mailbox.get',\n '/mail.mailbox.senders',\n '/mail.mailbox.field.list',\n '/mail.mailbox.field.get',\n '/mail.message.list',\n '/mail.message.get',\n '/mail.message.thread',\n '/mail.message.send',\n '/mail.message.reply',\n '/mail.message.forward',\n '/mail.message.movetofolder',\n '/mail.message.createcrmactivity',\n '/mail.message.removecrmactivity',\n '/mail.message.createtask',\n '/mail.message.createcalendarevent',\n '/mail.message.createchat',\n '/mail.message.createfeedpost',\n '/mail.message.field.list',\n '/mail.message.field.get',\n '/mail.recipient.listcontacts',\n '/mail.recipient.listemployees',\n '/mail.recipient.field.list',\n '/mail.recipient.field.get',\n\n // --- humanresources (rest-v3) ---\n '/humanresources.node.add',\n '/humanresources.node.edit',\n '/humanresources.node.get',\n '/humanresources.node.list',\n '/humanresources.node.search',\n '/humanresources.node.children',\n '/humanresources.node.count',\n '/humanresources.node.move',\n '/humanresources.node.field.list',\n '/humanresources.node.field.get',\n '/humanresources.node.member.add',\n '/humanresources.node.member.set',\n '/humanresources.node.member.move',\n '/humanresources.node.member.remove',\n '/humanresources.node.communication.edit',\n '/humanresources.node.communication.list',\n '/humanresources.employee.search',\n '/humanresources.employee.subordinates',\n '/humanresources.employee.count',\n '/humanresources.employee.multidepartment',\n '/humanresources.employee.field.list',\n '/humanresources.employee.field.get',\n\n // --- tasks (rest-v3) ---\n '/tasks.task.add',\n '/tasks.task.get', // done\n '/tasks.task.update', // done\n '/tasks.task.delete',\n '/tasks.task.access.get',\n '/tasks.task.file.attach',\n '/tasks.task.chat.message.send',\n '/tasks.task.result.add',\n '/tasks.task.result.addfromchatmessage',\n '/tasks.task.result.update',\n '/tasks.task.result.list',\n '/tasks.task.result.delete',\n '/tasks.task.field.list',\n '/tasks.task.field.get',\n '/tasks.task.access.field.list',\n '/tasks.task.access.field.get',\n '/tasks.task.file.field.list',\n '/tasks.task.file.field.get',\n '/tasks.task.chat.message.field.list',\n '/tasks.task.chat.message.field.get',\n\n // --- timeman (rest-v3) — read-only in v3 (no record.get / add / update / delete) ---\n '/timeman.record.list',\n '/timeman.record.field.list',\n '/timeman.record.field.get'\n\n // Cross-module methods are cross-referenced from the rest-v3 pages above but\n // belong to modules not actualized here — add them when those modules land:\n // user.get — user module (seen on humanresources + timeman)\n // im.message.update / im.message.delete / im.dialog.messages.get — im module (seen on tasks)\n // disk.storage.uploadfile / disk.folder.uploadfile /\n // disk.storage.getchildren / disk.folder.getchildren — disk module (seen on tasks)\n //\n // @todo When API.v3 arrives - change in AuthOAuthManager.initIsAdmin()\n // '/profile' // wait\n // '/main.message.get' // wait\n // '/main.chat.update' // wait\n // '/main.chat.list' // wait\n // '/main.user.list' // wait\n ]\n }\n\n static create(): VersionManager {\n return new VersionManager()\n }\n\n /**\n * List of supported API versions\n * The highest version must be first\n */\n public getAllApiVersions(): ApiVersion[] {\n return [ApiVersion.v3, ApiVersion.v2]\n }\n\n public isSupport(version: ApiVersion, method: string): boolean {\n switch (version) {\n case ApiVersion.v3:\n return this.#v3Support(method)\n case ApiVersion.v2:\n return true\n }\n\n return false\n }\n\n #v3Support(method: string): boolean {\n return this.#supportMethods.includes(`/${method}`)\n }\n\n /**\n * Automatically obtain the API version\n */\n public automaticallyObtainApiVersion(method: string): ApiVersion {\n const version = this.getAllApiVersions().find(version => versionManager.isSupport(version, method))\n if (!version) {\n throw new SdkError({\n code: 'JSSDK_VERSION_MANAGER_NOT_DETECT_FOR_METHOD',\n description: `No API version found that supports method ${method}.`,\n status: 500\n })\n }\n\n return version\n }\n\n /**\n * Automatically obtain the API version for Batch\n *\n * @todo test methods\n * `[['crm.item.get', { entityTypeId: 3, id: 1 }]]`\n * `[{ method: 'crm.item.get', params: { entityTypeId: 3, id: 1 } }]`\n * `{ cmd1: { method: 'crm.item.get', params: { entityTypeId: 3, id: 1 } }, cmd2: ['crm.item.get', { entityTypeId: 2, id: 2 }] }`\n */\n public automaticallyObtainApiVersionForBatch(\n calls: BatchCommandsArrayUniversal | BatchCommandsObjectUniversal | BatchNamedCommandsUniversal\n ): ApiVersion {\n const commands = ParseRow.getMethodsFromCommands(calls)\n\n let isAllSupportV3 = true\n for (const [_, method] of commands.entries()) {\n if (!this.isSupport(ApiVersion.v3, method)) {\n isAllSupportV3 = false\n break\n }\n }\n\n if (isAllSupportV3) {\n return ApiVersion.v3\n }\n return ApiVersion.v2\n }\n}\n\nexport const versionManager = VersionManager.create()\n"],"names":["version"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"version-manager.mjs","sources":["../../../src/core/version-manager.ts"],"sourcesContent":["import { ApiVersion } from '../types/b24'\nimport type {\n BatchCommandsArrayUniversal,\n BatchCommandsObjectUniversal,\n BatchNamedCommandsUniversal\n} from '../types/http'\n\n/**\n * Decides which REST API version a method is routed through.\n *\n * The SDK no longer maintains a hardcoded v3 method allowlist. A portal's set of\n * v3 methods is large and version/edition-dependent (the authoritative list is\n * the portal's own OpenAPI document, `rest.documentation.openapi`), so gating on\n * a static list both lagged behind the server and blocked valid methods. The\n * server is now the single source of truth: an unknown v3 method simply comes\n * back as `METHODNOTFOUNDEXCEPTION`.\n *\n * Consequences:\n * - `actions.v3.*` no longer pre-flight-rejects a method — it is sent to the v3\n * endpoint and the server validates it.\n * - v3 is opt-in only via the explicit `actions.v3.*` surface; version\n * auto-detection therefore defaults to v2 (the universal endpoint).\n */\nclass VersionManager {\n static create(): VersionManager {\n return new VersionManager()\n }\n\n /**\n * List of supported API versions.\n * The highest version must be first.\n */\n public getAllApiVersions(): ApiVersion[] {\n return [ApiVersion.v3, ApiVersion.v2]\n }\n\n /**\n * Retained for backward compatibility. The SDK no longer keeps a v3 method\n * allowlist, so support is not decided client-side any more — always returns\n * `true`. Method existence is validated by the server.\n */\n public isSupport(_version: ApiVersion, _method: string): boolean {\n return true\n }\n\n /**\n * Returns the API version to use when the caller did not specify one. With the\n * allowlist removed there is no client-side signal that a method is a v3\n * method, so this defaults to v2 (the universal endpoint). Use the explicit\n * `actions.v3.*` surface to call a method on v3.\n */\n public automaticallyObtainApiVersion(_method: string): ApiVersion {\n return ApiVersion.v2\n }\n\n /**\n * Batch counterpart of {@link automaticallyObtainApiVersion}. Defaults to v2;\n * call `actions.v3.batch.make` explicitly to run a batch on v3.\n */\n public automaticallyObtainApiVersionForBatch(\n _calls: BatchCommandsArrayUniversal | BatchCommandsObjectUniversal | BatchNamedCommandsUniversal\n ): ApiVersion {\n return ApiVersion.v2\n }\n}\n\nexport const versionManager = VersionManager.create()\n"],"names":[],"mappings":";;;;;;;;;;;;AAuBA,MAAM,cAAA,CAAe;AAAA,EAvBrB;AAuBqB,IAAA,MAAA,CAAA,IAAA,EAAA,gBAAA,CAAA;AAAA;AAAA,EACnB,OAAO,MAAA,GAAyB;AAC9B,IAAA,OAAO,IAAI,cAAA,EAAe;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMO,iBAAA,GAAkC;AACvC,IAAA,OAAO,CAAC,UAAA,CAAW,EAAA,EAAI,UAAA,CAAW,EAAE,CAAA;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,SAAA,CAAU,UAAsB,OAAA,EAA0B;AAC/D,IAAA,OAAO,IAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,8BAA8B,OAAA,EAA6B;AAChE,IAAA,OAAO,UAAA,CAAW,EAAA;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMO,sCACL,MAAA,EACY;AACZ,IAAA,OAAO,UAAA,CAAW,EAAA;AAAA,EACpB;AACF;AAEO,MAAM,cAAA,GAAiB,eAAe,MAAA;;;;"}
|
package/dist/esm/frame/auth.mjs
CHANGED
package/dist/esm/frame/b24.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @package @bitrix24/b24jssdk
|
|
3
|
-
* @version
|
|
3
|
+
* @version 2.0.0
|
|
4
4
|
* @copyright (c) 2026 Bitrix24
|
|
5
5
|
* @license MIT
|
|
6
6
|
* @see https://github.com/bitrix24/b24jssdk
|
|
@@ -95,7 +95,13 @@ class B24Frame extends AbstractB24 {
|
|
|
95
95
|
}
|
|
96
96
|
async init() {
|
|
97
97
|
const data = await this.#messageManager.send(MessageCommands.getInitData, {});
|
|
98
|
-
this.getLogger().debug("init data", {
|
|
98
|
+
this.getLogger().debug("init data", {
|
|
99
|
+
PLACEMENT: data.PLACEMENT,
|
|
100
|
+
LANG: data.LANG,
|
|
101
|
+
INSTALL: data.INSTALL,
|
|
102
|
+
IS_ADMIN: data.IS_ADMIN,
|
|
103
|
+
FIRST_RUN: data.FIRST_RUN
|
|
104
|
+
});
|
|
99
105
|
this.#appFrame.initData(data);
|
|
100
106
|
this.#authManager.initData(data);
|
|
101
107
|
this.#placementManager.initData(data);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"b24.mjs","sources":["../../../src/frame/b24.ts"],"sourcesContent":["import type { LoggerInterface } from '../logger'\nimport type { B24LangList } from '../core/language/list'\nimport type { AuthActions, MessageInitData, B24FrameQueryParams } 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 { AppFrame } from './frame'\nimport { MessageManager, MessageCommands } from './message'\nimport { AuthManager } from './auth'\nimport { ParentManager } from './parent'\nimport { OptionsManager } from './options'\nimport { DialogManager } from './dialog'\nimport { SliderManager } from './slider'\nimport { PlacementManager } from './placement'\n\n/**\n * B24 Manager. Replacement api.bitrix24.com\n *\n * @link https://api.bitrix24.com/api/v1/\n * @link https://bitrix24.github.io/b24jssdk/docs/frame/\n * @see /bitrix/js/rest/applayout.js\n *\n * @todo add docs\n */\nexport class B24Frame extends AbstractB24 implements TypeB24 {\n #isInstallMode: boolean = false\n #isFirstRun: boolean = false\n\n readonly #appFrame: AppFrame\n readonly #messageManager: MessageManager\n readonly #authManager: AuthManager\n readonly #parentManager: ParentManager\n readonly #optionsManager: OptionsManager\n readonly #dialogManager: DialogManager\n readonly #sliderManager: SliderManager\n readonly #placementManager: PlacementManager\n\n readonly #restrictionParams: undefined | Partial<RestrictionParams>\n\n // region Init ////\n constructor(\n queryParams: B24FrameQueryParams,\n options?: {\n restrictionParams?: Partial<RestrictionParams>\n }\n ) {\n super()\n\n this.#restrictionParams = options?.restrictionParams\n\n this.#appFrame = new AppFrame(queryParams)\n\n this.#messageManager = new MessageManager(this.#appFrame)\n this.#messageManager.subscribe()\n\n this.#authManager = new AuthManager(\n this.#appFrame,\n this.#messageManager\n )\n this.#parentManager = new ParentManager(this.#messageManager)\n this.#optionsManager = new OptionsManager(this.#messageManager)\n this.#dialogManager = new DialogManager(this.#messageManager)\n this.#sliderManager = new SliderManager(\n this.#appFrame,\n this.#messageManager\n )\n this.#placementManager = new PlacementManager(this.#messageManager)\n\n this._isInit = false\n }\n\n public override setLogger(logger: LoggerInterface): void {\n super.setLogger(logger)\n this.#messageManager.setLogger(this.getLogger())\n }\n\n get isFirstRun(): boolean {\n this._ensureInitialized()\n return this.#isFirstRun\n }\n\n get isInstallMode(): boolean {\n this._ensureInitialized()\n return this.#isInstallMode\n }\n\n get parent(): ParentManager {\n this._ensureInitialized()\n return this.#parentManager\n }\n\n override get auth(): AuthActions {\n this._ensureInitialized()\n return this.#authManager\n }\n\n get slider(): SliderManager {\n this._ensureInitialized()\n return this.#sliderManager\n }\n\n get placement(): PlacementManager {\n this._ensureInitialized()\n return this.#placementManager\n }\n\n get options(): OptionsManager {\n this._ensureInitialized()\n return this.#optionsManager\n }\n\n get dialog(): DialogManager {\n this._ensureInitialized()\n return this.#dialogManager\n }\n\n public override async init(): Promise<void> {\n const data: MessageInitData = await this.#messageManager.send(MessageCommands.getInitData, {})\n\n this.getLogger().debug('init data', { data })\n\n this.#appFrame.initData(data)\n this.#authManager.initData(data)\n this.#placementManager.initData(data)\n this.#optionsManager.initData(data)\n\n this.#isInstallMode = data.INSTALL\n this.#isFirstRun = data.FIRST_RUN\n\n this._httpV2 = new HttpV2(this.#authManager, this._getHttpOptions(), this.#restrictionParams)\n this._httpV3 = new HttpV3(this.#authManager, this._getHttpOptions(), this.#restrictionParams)\n\n this._isInit = true\n\n /**\n * @memo Writes the fact of the 1st launch to `app_options`\n */\n if (this.#isFirstRun) {\n return this.#messageManager.send(MessageCommands.setInstall, { install: true })\n }\n\n return Promise.resolve()\n }\n\n /**\n * Destructor.\n * Removes an event subscription\n */\n public override destroy() {\n this.#messageManager.unsubscribe()\n super.destroy()\n }\n // endregion ////\n\n // region Core ////\n /**\n * Signals that the installer or application setup has finished running.\n *\n * @link https://apidocs.bitrix24.com/sdk/bx24-js-sdk/system-functions/bx24-install-finish.html\n */\n public async installFinish(): Promise<any> {\n if (!this.isInstallMode) {\n return Promise.reject(new Error('Application was previously installed. You cannot call installFinish'))\n }\n\n return this.#messageManager.send(MessageCommands.setInstallFinish, {})\n }\n // endregion ////\n\n // region Get ////\n /**\n * @inheritDoc\n */\n public override getTargetOrigin(): string {\n this._ensureInitialized()\n return this.#authManager.getTargetOrigin()\n }\n\n /**\n * @inheritDoc\n */\n public override getTargetOriginWithPath(): Map<ApiVersion, string> {\n this._ensureInitialized()\n return this.#authManager.getTargetOriginWithPath()\n }\n\n /**\n * Returns the sid of the application relative to the parent window like this `9c33468728e1d2c8c97562475edfd96`\n */\n public getAppSid(): string {\n this._ensureInitialized()\n return this.#appFrame.getAppSid()\n }\n\n /**\n * Returns the localization of the B24 interface\n *\n * @link https://apidocs.bitrix24.com/sdk/bx24-js-sdk/additional-functions/bx24-get-lang.html\n */\n public getLang(): B24LangList {\n this._ensureInitialized()\n return this.#appFrame.getLang()\n }\n // endregion ////\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"b24.mjs","sources":["../../../src/frame/b24.ts"],"sourcesContent":["import type { LoggerInterface } from '../logger'\nimport type { B24LangList } from '../core/language/list'\nimport type { AuthActions, MessageInitData, B24FrameQueryParams } 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 { AppFrame } from './frame'\nimport { MessageManager, MessageCommands } from './message'\nimport { AuthManager } from './auth'\nimport { ParentManager } from './parent'\nimport { OptionsManager } from './options'\nimport { DialogManager } from './dialog'\nimport { SliderManager } from './slider'\nimport { PlacementManager } from './placement'\n\n/**\n * B24 Manager. Replacement api.bitrix24.com\n *\n * @link https://api.bitrix24.com/api/v1/\n * @link https://bitrix24.github.io/b24jssdk/docs/frame/\n * @see /bitrix/js/rest/applayout.js\n *\n * @todo add docs\n */\nexport class B24Frame extends AbstractB24 implements TypeB24 {\n #isInstallMode: boolean = false\n #isFirstRun: boolean = false\n\n readonly #appFrame: AppFrame\n readonly #messageManager: MessageManager\n readonly #authManager: AuthManager\n readonly #parentManager: ParentManager\n readonly #optionsManager: OptionsManager\n readonly #dialogManager: DialogManager\n readonly #sliderManager: SliderManager\n readonly #placementManager: PlacementManager\n\n readonly #restrictionParams: undefined | Partial<RestrictionParams>\n\n // region Init ////\n constructor(\n queryParams: B24FrameQueryParams,\n options?: {\n restrictionParams?: Partial<RestrictionParams>\n }\n ) {\n super()\n\n this.#restrictionParams = options?.restrictionParams\n\n this.#appFrame = new AppFrame(queryParams)\n\n this.#messageManager = new MessageManager(this.#appFrame)\n this.#messageManager.subscribe()\n\n this.#authManager = new AuthManager(\n this.#appFrame,\n this.#messageManager\n )\n this.#parentManager = new ParentManager(this.#messageManager)\n this.#optionsManager = new OptionsManager(this.#messageManager)\n this.#dialogManager = new DialogManager(this.#messageManager)\n this.#sliderManager = new SliderManager(\n this.#appFrame,\n this.#messageManager\n )\n this.#placementManager = new PlacementManager(this.#messageManager)\n\n this._isInit = false\n }\n\n public override setLogger(logger: LoggerInterface): void {\n super.setLogger(logger)\n this.#messageManager.setLogger(this.getLogger())\n }\n\n get isFirstRun(): boolean {\n this._ensureInitialized()\n return this.#isFirstRun\n }\n\n get isInstallMode(): boolean {\n this._ensureInitialized()\n return this.#isInstallMode\n }\n\n get parent(): ParentManager {\n this._ensureInitialized()\n return this.#parentManager\n }\n\n override get auth(): AuthActions {\n this._ensureInitialized()\n return this.#authManager\n }\n\n get slider(): SliderManager {\n this._ensureInitialized()\n return this.#sliderManager\n }\n\n get placement(): PlacementManager {\n this._ensureInitialized()\n return this.#placementManager\n }\n\n get options(): OptionsManager {\n this._ensureInitialized()\n return this.#optionsManager\n }\n\n get dialog(): DialogManager {\n this._ensureInitialized()\n return this.#dialogManager\n }\n\n public override async init(): Promise<void> {\n const data: MessageInitData = await this.#messageManager.send(MessageCommands.getInitData, {})\n\n // Log only a fixed allowlist of known-safe scalar fields. The raw `data`\n // carries the bearer tokens AUTH_ID (access) / REFRESH_ID (refresh), the\n // MEMBER_ID portal identifier, and the app-defined APP_OPTIONS /\n // USER_OPTIONS / PLACEMENT_OPTIONS stores (which may hold developer-stored\n // secrets) — none of which must reach a wired logger sink (#43).\n this.getLogger().debug('init data', {\n PLACEMENT: data.PLACEMENT,\n LANG: data.LANG,\n INSTALL: data.INSTALL,\n IS_ADMIN: data.IS_ADMIN,\n FIRST_RUN: data.FIRST_RUN\n })\n\n this.#appFrame.initData(data)\n this.#authManager.initData(data)\n this.#placementManager.initData(data)\n this.#optionsManager.initData(data)\n\n this.#isInstallMode = data.INSTALL\n this.#isFirstRun = data.FIRST_RUN\n\n this._httpV2 = new HttpV2(this.#authManager, this._getHttpOptions(), this.#restrictionParams)\n this._httpV3 = new HttpV3(this.#authManager, this._getHttpOptions(), this.#restrictionParams)\n\n this._isInit = true\n\n /**\n * @memo Writes the fact of the 1st launch to `app_options`\n */\n if (this.#isFirstRun) {\n return this.#messageManager.send(MessageCommands.setInstall, { install: true })\n }\n\n return Promise.resolve()\n }\n\n /**\n * Destructor.\n * Removes an event subscription\n */\n public override destroy() {\n this.#messageManager.unsubscribe()\n super.destroy()\n }\n // endregion ////\n\n // region Core ////\n /**\n * Signals that the installer or application setup has finished running.\n *\n * @link https://apidocs.bitrix24.com/sdk/bx24-js-sdk/system-functions/bx24-install-finish.html\n */\n public async installFinish(): Promise<any> {\n if (!this.isInstallMode) {\n return Promise.reject(new Error('Application was previously installed. You cannot call installFinish'))\n }\n\n return this.#messageManager.send(MessageCommands.setInstallFinish, {})\n }\n // endregion ////\n\n // region Get ////\n /**\n * @inheritDoc\n */\n public override getTargetOrigin(): string {\n this._ensureInitialized()\n return this.#authManager.getTargetOrigin()\n }\n\n /**\n * @inheritDoc\n */\n public override getTargetOriginWithPath(): Map<ApiVersion, string> {\n this._ensureInitialized()\n return this.#authManager.getTargetOriginWithPath()\n }\n\n /**\n * Returns the sid of the application relative to the parent window like this `9c33468728e1d2c8c97562475edfd96`\n */\n public getAppSid(): string {\n this._ensureInitialized()\n return this.#appFrame.getAppSid()\n }\n\n /**\n * Returns the localization of the B24 interface\n *\n * @link https://apidocs.bitrix24.com/sdk/bx24-js-sdk/additional-functions/bx24-get-lang.html\n */\n public getLang(): B24LangList {\n this._ensureInitialized()\n return this.#appFrame.getLang()\n }\n // endregion ////\n}\n"],"names":[],"mappings":"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"}
|
package/dist/esm/frame/frame.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @package @bitrix24/b24jssdk
|
|
3
|
-
* @version
|
|
3
|
+
* @version 2.0.0
|
|
4
4
|
* @copyright (c) 2026 Bitrix24
|
|
5
5
|
* @license MIT
|
|
6
6
|
* @see https://github.com/bitrix24/b24jssdk
|
|
@@ -20,6 +20,9 @@ class MessageManager {
|
|
|
20
20
|
#appFrame;
|
|
21
21
|
#callbackPromises;
|
|
22
22
|
#callbackSingletone;
|
|
23
|
+
// origins already warned about (#244) — dedup so a peer spamming postMessage
|
|
24
|
+
// from a foreign origin can't flood a wired logger sink
|
|
25
|
+
#rejectedOrigins = /* @__PURE__ */ new Set();
|
|
23
26
|
_logger;
|
|
24
27
|
runCallbackHandler;
|
|
25
28
|
constructor(appFrame) {
|
|
@@ -99,7 +102,8 @@ class MessageManager {
|
|
|
99
102
|
cmd += ":" + listParams.filter(Boolean).join(":");
|
|
100
103
|
}
|
|
101
104
|
this.getLogger().debug(`send to ${this.#appFrame.getTargetOrigin()}`, {
|
|
102
|
-
|
|
105
|
+
command: command.toString(),
|
|
106
|
+
callbackKey: keyPromise,
|
|
103
107
|
origin: this.#appFrame.getTargetOrigin()
|
|
104
108
|
});
|
|
105
109
|
parent.postMessage(cmd, this.#appFrame.getTargetOrigin());
|
|
@@ -129,18 +133,25 @@ class MessageManager {
|
|
|
129
133
|
*/
|
|
130
134
|
_runCallback(event) {
|
|
131
135
|
if (event.origin !== this.#appFrame.getTargetOrigin()) {
|
|
136
|
+
if (!this.#rejectedOrigins.has(event.origin)) {
|
|
137
|
+
this.#rejectedOrigins.add(event.origin);
|
|
138
|
+
this.getLogger().warning("message rejected: unexpected origin", {
|
|
139
|
+
origin: event.origin,
|
|
140
|
+
expected: this.#appFrame.getTargetOrigin()
|
|
141
|
+
});
|
|
142
|
+
}
|
|
132
143
|
return;
|
|
133
144
|
}
|
|
134
145
|
if (event.data) {
|
|
135
|
-
this.getLogger().debug(`get from ${event.origin}`, {
|
|
136
|
-
data: event.data,
|
|
137
|
-
origin: event.origin
|
|
138
|
-
});
|
|
139
146
|
const tmp = event.data.split(":");
|
|
140
147
|
const cmd = {
|
|
141
148
|
id: tmp[0],
|
|
142
149
|
args: tmp.slice(1).join(":")
|
|
143
150
|
};
|
|
151
|
+
this.getLogger().debug(`get from ${event.origin}`, {
|
|
152
|
+
id: cmd.id,
|
|
153
|
+
origin: event.origin
|
|
154
|
+
});
|
|
144
155
|
if (cmd.args) {
|
|
145
156
|
cmd.args = JSON.parse(cmd.args);
|
|
146
157
|
}
|