@bitrix24/b24jssdk 1.2.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 +6 -5
- 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 +17 -10
- package/dist/esm/core/actions/v2/call-list.mjs.map +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 +17 -10
- package/dist/esm/core/actions/v2/fetch-list.mjs.map +1 -1
- package/dist/esm/core/actions/v2/manager-v2.mjs +6 -6
- package/dist/esm/core/actions/v2/manager-v2.mjs.map +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 +40 -47
- 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 +34 -44
- 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 +30 -6
- package/dist/esm/core/actions/v3/manager-v3.mjs.map +1 -1
- package/dist/esm/core/http/abstract-http.mjs +96 -21
- 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 +2 -1
- package/dist/esm/core/http/limiters/manager.mjs.map +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 +35 -1
- 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 +3 -3
- package/dist/esm/core/tools/manager.mjs.map +1 -1
- package/dist/esm/core/tools/ping.mjs +1 -1
- package/dist/esm/core/version-manager.mjs +19 -80
- 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 +6 -2
- package/dist/esm/frame/parent.mjs.map +1 -1
- package/dist/esm/frame/placement.mjs +1 -1
- package/dist/esm/frame/slider.mjs +5 -1
- package/dist/esm/frame/slider.mjs.map +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 +501 -49
- package/dist/esm/index.d.ts +501 -49
- 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 +1384 -680
- 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
|
|
@@ -10,6 +10,7 @@ import { ErrorNotConnected, ErrorTimeout } from './errors.mjs';
|
|
|
10
10
|
import { Type } from '../tools/type.mjs';
|
|
11
11
|
import { Text } from '../tools/text.mjs';
|
|
12
12
|
import { ListRpcError } from '../types/pull.mjs';
|
|
13
|
+
import { redactSensitiveParams } from '../core/http/redact.mjs';
|
|
13
14
|
import { LoggerFactory } from '../logger/logger-factory.mjs';
|
|
14
15
|
|
|
15
16
|
var __defProp = Object.defineProperty;
|
|
@@ -113,7 +114,7 @@ class JsonRpc {
|
|
|
113
114
|
}
|
|
114
115
|
return;
|
|
115
116
|
}
|
|
116
|
-
this.getLogger().error(`${Text.getDateForLog()}: Pull: Received rpc response with unknown id`, { response });
|
|
117
|
+
this.getLogger().error(`${Text.getDateForLog()}: Pull: Received rpc response with unknown id`, redactSensitiveParams({ response }));
|
|
117
118
|
}
|
|
118
119
|
parseJsonRpcMessage(message) {
|
|
119
120
|
let decoded;
|
|
@@ -136,7 +137,7 @@ class JsonRpc {
|
|
|
136
137
|
} else {
|
|
137
138
|
this.getLogger().error(
|
|
138
139
|
`${Text.getDateForLog()}: Pull: unknown rpc packet`,
|
|
139
|
-
{ decoded }
|
|
140
|
+
redactSensitiveParams({ decoded })
|
|
140
141
|
);
|
|
141
142
|
}
|
|
142
143
|
return [];
|
|
@@ -177,7 +178,7 @@ class JsonRpc {
|
|
|
177
178
|
} else {
|
|
178
179
|
this.getLogger().error(
|
|
179
180
|
`${Text.getDateForLog()}: Pull: unknown rpc command in batch`,
|
|
180
|
-
{ command }
|
|
181
|
+
redactSensitiveParams({ command })
|
|
181
182
|
);
|
|
182
183
|
result.push({
|
|
183
184
|
jsonrpc: JSON_RPC_VERSION,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-rpc.mjs","sources":["../../../src/pullClient/json-rpc.ts"],"sourcesContent":["import type { RpcCommand, RpcCommandResult, TypeRpcResponseAwaiters, JsonRpcRequest, RpcRequest, TypeConnector, TypeJsonRpcConfig, TypePullClientMessageBatch } from '../types/pull'\nimport type { LoggerInterface } from '../logger'\nimport { LoggerFactory } from '../logger'\nimport { ErrorNotConnected, ErrorTimeout } from './errors'\nimport { Type } from '../tools/type'\nimport { Text } from '../tools/text'\nimport { ListRpcError } from '../types/pull'\n\nconst JSON_RPC_VERSION = '2.0'\n\nexport class JsonRpc {\n private _logger: LoggerInterface\n\n private _connector: TypeConnector\n private _idCounter: number = 0\n\n private _handlers: Record<string, (params: any) => RpcCommandResult> = {}\n\n private _rpcResponseAwaiters: Map<number, TypeRpcResponseAwaiters> = new Map()\n\n constructor(options: TypeJsonRpcConfig) {\n this._logger = LoggerFactory.createNullLogger()\n this._connector = options.connector\n\n if (Type.isPlainObject(options.handlers)) {\n for (const method in options.handlers) {\n this.handle(method, options.handlers[method]!)\n }\n }\n }\n\n setLogger(logger: LoggerInterface): void {\n this._logger = logger\n }\n\n getLogger(): LoggerInterface {\n return this._logger\n }\n\n /**\n * @param {string} method\n * @param {function} handler\n */\n handle(method: string, handler: (params: any) => RpcCommandResult) {\n this._handlers[method] = handler\n }\n\n /**\n * Sends RPC command to the server.\n *\n * @param {string} method Method name\n * @param {object} params\n * @param {int} timeout\n * @returns {Promise}\n */\n async executeOutgoingRpcCommand(\n method: string,\n params: object,\n timeout: number = 5\n ): Promise<any> {\n return new Promise((resolve, reject) => {\n const request = this.createRequest(method, params)\n\n if (!this._connector.send(JSON.stringify(request))) {\n reject(new ErrorNotConnected('websocket is not connected'))\n }\n\n const timeoutHandler = setTimeout(() => {\n this._rpcResponseAwaiters.delete(request.id)\n reject(new ErrorTimeout('no response'))\n }, timeout * 1_000)\n\n this._rpcResponseAwaiters.set(request.id, {\n resolve,\n reject,\n timeout: timeoutHandler\n } as unknown as TypeRpcResponseAwaiters)\n })\n }\n\n /**\n * Executes array or rpc commands.\n * Returns an array of promises, each promise will be resolved individually.\n *\n * @param {JsonRpcRequest[]} batch\n * @returns {Promise[]}\n */\n // @ts-expect-error When we rewrite it to something more modern, then we'll remove this\n private executeOutgoingRpcBatch(batch: JsonRpcRequest[]): Promise<any>[] {\n const requests: RpcRequest[] = []\n const promises: Promise<any>[] = []\n\n // eslint-disable-next-line\n\t\tbatch.forEach(({ method, params, id }) => {\n const request = this.createRequest(method, params, id)\n requests.push(request)\n promises.push(\n new Promise((resolve, reject) =>\n this._rpcResponseAwaiters.set(request.id, {\n resolve,\n reject\n } as TypeRpcResponseAwaiters)\n )\n )\n })\n\n this._connector.send(JSON.stringify(requests))\n return promises\n }\n\n private processRpcResponse(response: RpcCommandResult): void {\n if (\n 'id' in response\n && this._rpcResponseAwaiters.has(Number(response.id))\n ) {\n const awaiter = this._rpcResponseAwaiters.get(Number(response.id))\n if (awaiter) {\n if ('result' in response) {\n awaiter.resolve(response.result)\n } else if ('error' in response) {\n awaiter.reject(response?.error || 'error')\n } else {\n awaiter.reject('wrong response structure')\n }\n\n clearTimeout(awaiter.timeout)\n this._rpcResponseAwaiters.delete(Number(response.id))\n }\n\n return\n }\n\n this.getLogger().error(`${Text.getDateForLog()}: Pull: Received rpc response with unknown id`, { response })\n }\n\n parseJsonRpcMessage(\n message: string\n ): RpcCommandResult[] | RpcCommandResult {\n let decoded\n try {\n decoded = JSON.parse(message)\n } catch (error) {\n this.getLogger().error(\n `${Text.getDateForLog()}: Pull: Could not decode json rpc message`,\n { error }\n )\n\n return []\n }\n\n if (Type.isArray(decoded)) {\n return this.executeIncomingRpcBatch(decoded)\n } else if (Type.isJsonRpcRequest(decoded)) {\n return this.executeIncomingRpcCommand(decoded)\n } else if (Type.isJsonRpcResponse(decoded)) {\n this.processRpcResponse(decoded)\n return []\n } else {\n this.getLogger().error(\n `${Text.getDateForLog()}: Pull: unknown rpc packet`,\n { decoded }\n )\n }\n\n return []\n }\n\n /**\n * Executes RPC command, received from the server\n *\n * @param {string} method\n * @param {object} params\n * @returns {object} RpcCommandResult\n */\n private executeIncomingRpcCommand({\n method,\n params\n }: RpcCommand): RpcCommandResult {\n if (method in this._handlers) {\n return this._handlers[method]!.call(this, params || {})\n }\n\n return {\n jsonrpc: JSON_RPC_VERSION,\n error: ListRpcError.MethodNotFound\n } as RpcCommandResult\n }\n\n private executeIncomingRpcBatch(batch: RpcCommand[]): RpcCommandResult[] {\n const result: RpcCommandResult[] = []\n\n for (const command of batch) {\n if ('jsonrpc' in command) {\n if ('method' in command) {\n const commandResult = this.executeIncomingRpcCommand(command)\n if (commandResult) {\n commandResult['jsonrpc'] = JSON_RPC_VERSION\n commandResult['id'] = command['id']\n\n result.push(commandResult)\n }\n } else {\n this.processRpcResponse(command)\n }\n } else {\n this.getLogger().error(\n `${Text.getDateForLog()}: Pull: unknown rpc command in batch`,\n { command }\n )\n\n result.push({\n jsonrpc: JSON_RPC_VERSION,\n error: ListRpcError.InvalidRequest\n } as RpcCommandResult)\n }\n }\n\n return result\n }\n\n private nextId(): number {\n return ++this._idCounter\n }\n\n public createPublishRequest(\n messageBatch: TypePullClientMessageBatch[]\n ): RpcRequest[] {\n return messageBatch.map(message => this.createRequest('publish', message))\n }\n\n private createRequest(method: string, params: any, id?: number): RpcRequest {\n if (!id) {\n id = this.nextId()\n }\n\n return {\n jsonrpc: JSON_RPC_VERSION,\n method,\n params,\n id\n } as RpcRequest\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"json-rpc.mjs","sources":["../../../src/pullClient/json-rpc.ts"],"sourcesContent":["import type { RpcCommand, RpcCommandResult, TypeRpcResponseAwaiters, JsonRpcRequest, RpcRequest, TypeConnector, TypeJsonRpcConfig, TypePullClientMessageBatch } from '../types/pull'\nimport type { LoggerInterface } from '../logger'\nimport { LoggerFactory } from '../logger'\nimport { ErrorNotConnected, ErrorTimeout } from './errors'\nimport { Type } from '../tools/type'\nimport { Text } from '../tools/text'\nimport { ListRpcError } from '../types/pull'\nimport { redactSensitiveParams } from '../core/http/redact'\n\nconst JSON_RPC_VERSION = '2.0'\n\nexport class JsonRpc {\n private _logger: LoggerInterface\n\n private _connector: TypeConnector\n private _idCounter: number = 0\n\n private _handlers: Record<string, (params: any) => RpcCommandResult> = {}\n\n private _rpcResponseAwaiters: Map<number, TypeRpcResponseAwaiters> = new Map()\n\n constructor(options: TypeJsonRpcConfig) {\n this._logger = LoggerFactory.createNullLogger()\n this._connector = options.connector\n\n if (Type.isPlainObject(options.handlers)) {\n for (const method in options.handlers) {\n this.handle(method, options.handlers[method]!)\n }\n }\n }\n\n setLogger(logger: LoggerInterface): void {\n this._logger = logger\n }\n\n getLogger(): LoggerInterface {\n return this._logger\n }\n\n /**\n * @param {string} method\n * @param {function} handler\n */\n handle(method: string, handler: (params: any) => RpcCommandResult) {\n this._handlers[method] = handler\n }\n\n /**\n * Sends RPC command to the server.\n *\n * @param {string} method Method name\n * @param {object} params\n * @param {int} timeout\n * @returns {Promise}\n */\n async executeOutgoingRpcCommand(\n method: string,\n params: object,\n timeout: number = 5\n ): Promise<any> {\n return new Promise((resolve, reject) => {\n const request = this.createRequest(method, params)\n\n if (!this._connector.send(JSON.stringify(request))) {\n reject(new ErrorNotConnected('websocket is not connected'))\n }\n\n const timeoutHandler = setTimeout(() => {\n this._rpcResponseAwaiters.delete(request.id)\n reject(new ErrorTimeout('no response'))\n }, timeout * 1_000)\n\n this._rpcResponseAwaiters.set(request.id, {\n resolve,\n reject,\n timeout: timeoutHandler\n } as unknown as TypeRpcResponseAwaiters)\n })\n }\n\n /**\n * Executes array or rpc commands.\n * Returns an array of promises, each promise will be resolved individually.\n *\n * @param {JsonRpcRequest[]} batch\n * @returns {Promise[]}\n */\n // @ts-expect-error When we rewrite it to something more modern, then we'll remove this\n private executeOutgoingRpcBatch(batch: JsonRpcRequest[]): Promise<any>[] {\n const requests: RpcRequest[] = []\n const promises: Promise<any>[] = []\n\n // eslint-disable-next-line\n\t\tbatch.forEach(({ method, params, id }) => {\n const request = this.createRequest(method, params, id)\n requests.push(request)\n promises.push(\n new Promise((resolve, reject) =>\n this._rpcResponseAwaiters.set(request.id, {\n resolve,\n reject\n } as TypeRpcResponseAwaiters)\n )\n )\n })\n\n this._connector.send(JSON.stringify(requests))\n return promises\n }\n\n private processRpcResponse(response: RpcCommandResult): void {\n if (\n 'id' in response\n && this._rpcResponseAwaiters.has(Number(response.id))\n ) {\n const awaiter = this._rpcResponseAwaiters.get(Number(response.id))\n if (awaiter) {\n if ('result' in response) {\n awaiter.resolve(response.result)\n } else if ('error' in response) {\n awaiter.reject(response?.error || 'error')\n } else {\n awaiter.reject('wrong response structure')\n }\n\n clearTimeout(awaiter.timeout)\n this._rpcResponseAwaiters.delete(Number(response.id))\n }\n\n return\n }\n\n // Redact: an unknown/error server frame is opaque and could carry a credential key (#43).\n this.getLogger().error(`${Text.getDateForLog()}: Pull: Received rpc response with unknown id`, redactSensitiveParams({ response }))\n }\n\n parseJsonRpcMessage(\n message: string\n ): RpcCommandResult[] | RpcCommandResult {\n let decoded\n try {\n decoded = JSON.parse(message)\n } catch (error) {\n this.getLogger().error(\n `${Text.getDateForLog()}: Pull: Could not decode json rpc message`,\n { error }\n )\n\n return []\n }\n\n if (Type.isArray(decoded)) {\n return this.executeIncomingRpcBatch(decoded)\n } else if (Type.isJsonRpcRequest(decoded)) {\n return this.executeIncomingRpcCommand(decoded)\n } else if (Type.isJsonRpcResponse(decoded)) {\n this.processRpcResponse(decoded)\n return []\n } else {\n this.getLogger().error(\n `${Text.getDateForLog()}: Pull: unknown rpc packet`,\n redactSensitiveParams({ decoded })\n )\n }\n\n return []\n }\n\n /**\n * Executes RPC command, received from the server\n *\n * @param {string} method\n * @param {object} params\n * @returns {object} RpcCommandResult\n */\n private executeIncomingRpcCommand({\n method,\n params\n }: RpcCommand): RpcCommandResult {\n if (method in this._handlers) {\n return this._handlers[method]!.call(this, params || {})\n }\n\n return {\n jsonrpc: JSON_RPC_VERSION,\n error: ListRpcError.MethodNotFound\n } as RpcCommandResult\n }\n\n private executeIncomingRpcBatch(batch: RpcCommand[]): RpcCommandResult[] {\n const result: RpcCommandResult[] = []\n\n for (const command of batch) {\n if ('jsonrpc' in command) {\n if ('method' in command) {\n const commandResult = this.executeIncomingRpcCommand(command)\n if (commandResult) {\n commandResult['jsonrpc'] = JSON_RPC_VERSION\n commandResult['id'] = command['id']\n\n result.push(commandResult)\n }\n } else {\n this.processRpcResponse(command)\n }\n } else {\n this.getLogger().error(\n `${Text.getDateForLog()}: Pull: unknown rpc command in batch`,\n redactSensitiveParams({ command })\n )\n\n result.push({\n jsonrpc: JSON_RPC_VERSION,\n error: ListRpcError.InvalidRequest\n } as RpcCommandResult)\n }\n }\n\n return result\n }\n\n private nextId(): number {\n return ++this._idCounter\n }\n\n public createPublishRequest(\n messageBatch: TypePullClientMessageBatch[]\n ): RpcRequest[] {\n return messageBatch.map(message => this.createRequest('publish', message))\n }\n\n private createRequest(method: string, params: any, id?: number): RpcRequest {\n if (!id) {\n id = this.nextId()\n }\n\n return {\n jsonrpc: JSON_RPC_VERSION,\n method,\n params,\n id\n } as RpcRequest\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @package @bitrix24/b24jssdk
|
|
3
|
+
* @version 2.0.0
|
|
4
|
+
* @copyright (c) 2026 Bitrix24
|
|
5
|
+
* @license MIT
|
|
6
|
+
* @see https://github.com/bitrix24/b24jssdk
|
|
7
|
+
* @see https://bitrix24.github.io/b24jssdk/
|
|
8
|
+
*/
|
|
9
|
+
import { SdkError } from '../core/sdk-error.mjs';
|
|
10
|
+
|
|
11
|
+
var __defProp = Object.defineProperty;
|
|
12
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
13
|
+
function assertPath(path, who) {
|
|
14
|
+
if (typeof path !== "string" || path.length === 0) {
|
|
15
|
+
throw new SdkError({
|
|
16
|
+
code: "JSSDK_BATCH_REF_V3_INVALID_PATH",
|
|
17
|
+
description: `${who}: path must be a non-empty dotted string (e.g. "tasks.id").`,
|
|
18
|
+
status: 400
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
__name(assertPath, "assertPath");
|
|
23
|
+
const BatchRefV3 = Object.freeze({
|
|
24
|
+
/**
|
|
25
|
+
* `{ $ref: path }` — substitute a single value from context, e.g.
|
|
26
|
+
* `ref('newTask.item.id')`. `add` → id / `update` → bool results are NOT in
|
|
27
|
+
* context (reference §8); only `item` (get) and `items` (list/tail) are.
|
|
28
|
+
*/
|
|
29
|
+
ref(path) {
|
|
30
|
+
assertPath(path, "BatchRefV3.ref");
|
|
31
|
+
return { $ref: path };
|
|
32
|
+
},
|
|
33
|
+
/**
|
|
34
|
+
* `{ $refArray: path }` — collect one field across the `items[]` of an earlier
|
|
35
|
+
* list/tail command, e.g. `refArray('tasks.id')`. The path MUST contain a dot
|
|
36
|
+
* (`alias.field`); the server rejects a dot-less path with INVALIDSELECTEXCEPTION.
|
|
37
|
+
*/
|
|
38
|
+
refArray(path) {
|
|
39
|
+
assertPath(path, "BatchRefV3.refArray");
|
|
40
|
+
if (!path.includes(".")) {
|
|
41
|
+
throw new SdkError({
|
|
42
|
+
code: "JSSDK_BATCH_REF_V3_INVALID_REF_ARRAY",
|
|
43
|
+
description: `BatchRefV3.refArray: path "${path}" must contain a dot ("alias.field") \u2014 the server collects <field> across the alias's items[].`,
|
|
44
|
+
status: 400
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
return { $refArray: path };
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
export { BatchRefV3 };
|
|
52
|
+
//# sourceMappingURL=batch-ref-v3.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-ref-v3.mjs","sources":["../../../src/tools/batch-ref-v3.ts"],"sourcesContent":["import { SdkError } from '../core/sdk-error'\n\n/**\n * A `$ref` substitution marker: pulls a single value from an earlier batch\n * command's context by dotted path (reference §8).\n */\nexport interface BatchRef { $ref: string }\n\n/**\n * A `$refArray` substitution marker: collects one field across the `items[]` of\n * an earlier list/tail command into an array (reference §8).\n */\nexport interface BatchRefArray { $refArray: string }\n\nfunction assertPath(path: string, who: string): void {\n if (typeof path !== 'string' || path.length === 0) {\n throw new SdkError({\n code: 'JSSDK_BATCH_REF_V3_INVALID_PATH',\n description: `${who}: path must be a non-empty dotted string (e.g. \"tasks.id\").`,\n status: 400\n })\n }\n}\n\n/**\n * Helpers for the v3 batch `$ref` / `$refArray` substitution markers (reference\n * §8). The **server** performs the substitution: these helpers just build the\n * marker objects you drop into a later command's `params` (the SDK forwards\n * `params` to the wire `query`), with a little client-side validation. Reference\n * an earlier command by its `as` alias — or by its numeric index if you omit `as`.\n * Only `item` (get) and `items` (list/tail) results land in context; `add` → id\n * and `update` → bool results do not.\n *\n * **v3 only.** Substitution is a v3 batch feature. Dropped into a v2 batch\n * (`actions.v2.batch.make`) the markers are NOT substituted — they are encoded\n * as literal filter values and silently yield wrong/empty results.\n *\n * **Security:** the `path` selects from the batch's own response context, but do\n * not build it from untrusted end-user input — a crafted path could read context\n * the caller did not intend to expose to the next command.\n *\n * @example\n * import { BatchRefV3 as R } from '@bitrix24/b24jssdk'\n *\n * const response = await b24.actions.v3.batch.make({\n * calls: [\n * { method: 'tasks.task.list', as: 'tasks', params: { select: ['id'] } },\n * {\n * method: 'tasks.task.comment.list',\n * // server substitutes the array of ids collected from the first command's items[]\n * params: { filter: [['taskId', 'in', R.refArray('tasks.id')]] }\n * }\n * ]\n * })\n */\nexport const BatchRefV3 = Object.freeze({\n /**\n * `{ $ref: path }` — substitute a single value from context, e.g.\n * `ref('newTask.item.id')`. `add` → id / `update` → bool results are NOT in\n * context (reference §8); only `item` (get) and `items` (list/tail) are.\n */\n ref(path: string): BatchRef {\n assertPath(path, 'BatchRefV3.ref')\n return { $ref: path }\n },\n /**\n * `{ $refArray: path }` — collect one field across the `items[]` of an earlier\n * list/tail command, e.g. `refArray('tasks.id')`. The path MUST contain a dot\n * (`alias.field`); the server rejects a dot-less path with INVALIDSELECTEXCEPTION.\n */\n refArray(path: string): BatchRefArray {\n assertPath(path, 'BatchRefV3.refArray')\n if (!path.includes('.')) {\n throw new SdkError({\n code: 'JSSDK_BATCH_REF_V3_INVALID_REF_ARRAY',\n description: `BatchRefV3.refArray: path \"${path}\" must contain a dot (\"alias.field\") — the server collects <field> across the alias's items[].`,\n status: 400\n })\n }\n return { $refArray: path }\n }\n})\n"],"names":[],"mappings":";;;;;;;;;;;;AAcA,SAAS,UAAA,CAAW,MAAc,GAAA,EAAmB;AACnD,EAAA,IAAI,OAAO,IAAA,KAAS,QAAA,IAAY,IAAA,CAAK,WAAW,CAAA,EAAG;AACjD,IAAA,MAAM,IAAI,QAAA,CAAS;AAAA,MACjB,IAAA,EAAM,iCAAA;AAAA,MACN,WAAA,EAAa,GAAG,GAAG,CAAA,2DAAA,CAAA;AAAA,MACnB,MAAA,EAAQ;AAAA,KACT,CAAA;AAAA,EACH;AACF;AARS,MAAA,CAAA,UAAA,EAAA,YAAA,CAAA;AAyCF,MAAM,UAAA,GAAa,OAAO,MAAA,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMtC,IAAI,IAAA,EAAwB;AAC1B,IAAA,UAAA,CAAW,MAAM,gBAAgB,CAAA;AACjC,IAAA,OAAO,EAAE,MAAM,IAAA,EAAK;AAAA,EACtB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAS,IAAA,EAA6B;AACpC,IAAA,UAAA,CAAW,MAAM,qBAAqB,CAAA;AACtC,IAAA,IAAI,CAAC,IAAA,CAAK,QAAA,CAAS,GAAG,CAAA,EAAG;AACvB,MAAA,MAAM,IAAI,QAAA,CAAS;AAAA,QACjB,IAAA,EAAM,sCAAA;AAAA,QACN,WAAA,EAAa,8BAA8B,IAAI,CAAA,mGAAA,CAAA;AAAA,QAC/C,MAAA,EAAQ;AAAA,OACT,CAAA;AAAA,IACH;AACA,IAAA,OAAO,EAAE,WAAW,IAAA,EAAK;AAAA,EAC3B;AACF,CAAC;;;;"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @package @bitrix24/b24jssdk
|
|
3
|
+
* @version 2.0.0
|
|
4
|
+
* @copyright (c) 2026 Bitrix24
|
|
5
|
+
* @license MIT
|
|
6
|
+
* @see https://github.com/bitrix24/b24jssdk
|
|
7
|
+
* @see https://bitrix24.github.io/b24jssdk/
|
|
8
|
+
*/
|
|
9
|
+
import { SdkError } from '../core/sdk-error.mjs';
|
|
10
|
+
|
|
11
|
+
var __defProp = Object.defineProperty;
|
|
12
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
13
|
+
const FILTER_V3_OPERATORS = ["=", "!=", ">", ">=", "<", "<=", "in", "between"];
|
|
14
|
+
function condition(field, operator, value) {
|
|
15
|
+
if (typeof field !== "string" || field.length === 0) {
|
|
16
|
+
throw new SdkError({
|
|
17
|
+
code: "JSSDK_FILTER_V3_INVALID_FIELD",
|
|
18
|
+
description: `FilterV3: field name must be a non-empty string, got ${JSON.stringify(field)}.`,
|
|
19
|
+
status: 400
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
if (!FILTER_V3_OPERATORS.includes(operator)) {
|
|
23
|
+
throw new SdkError({
|
|
24
|
+
code: "JSSDK_FILTER_V3_INVALID_OPERATOR",
|
|
25
|
+
description: `FilterV3: operator "${operator}" is not one of ${FILTER_V3_OPERATORS.join(" ")}.`,
|
|
26
|
+
status: 400
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
return [field, operator, value];
|
|
30
|
+
}
|
|
31
|
+
__name(condition, "condition");
|
|
32
|
+
const FilterV3 = Object.freeze({
|
|
33
|
+
/** `field = value` */
|
|
34
|
+
eq(field, value) {
|
|
35
|
+
return condition(field, "=", value);
|
|
36
|
+
},
|
|
37
|
+
/** `field != value` */
|
|
38
|
+
ne(field, value) {
|
|
39
|
+
return condition(field, "!=", value);
|
|
40
|
+
},
|
|
41
|
+
/** `field > value` */
|
|
42
|
+
gt(field, value) {
|
|
43
|
+
return condition(field, ">", value);
|
|
44
|
+
},
|
|
45
|
+
/** `field >= value` */
|
|
46
|
+
ge(field, value) {
|
|
47
|
+
return condition(field, ">=", value);
|
|
48
|
+
},
|
|
49
|
+
/** `field < value` */
|
|
50
|
+
lt(field, value) {
|
|
51
|
+
return condition(field, "<", value);
|
|
52
|
+
},
|
|
53
|
+
/** `field <= value` */
|
|
54
|
+
le(field, value) {
|
|
55
|
+
return condition(field, "<=", value);
|
|
56
|
+
},
|
|
57
|
+
/** `field in [values]` — `values` must be a non-empty array. */
|
|
58
|
+
in(field, values) {
|
|
59
|
+
if (!Array.isArray(values) || values.length === 0) {
|
|
60
|
+
throw new SdkError({
|
|
61
|
+
code: "JSSDK_FILTER_V3_INVALID_IN",
|
|
62
|
+
description: `FilterV3.in("${field}"): value must be a non-empty array.`,
|
|
63
|
+
status: 400
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
return condition(field, "in", values);
|
|
67
|
+
},
|
|
68
|
+
/** `field between [from, to]` — inclusive range of exactly two defined operands. */
|
|
69
|
+
between(field, from, to) {
|
|
70
|
+
if (from === void 0 || from === null || to === void 0 || to === null) {
|
|
71
|
+
throw new SdkError({
|
|
72
|
+
code: "JSSDK_FILTER_V3_INVALID_BETWEEN",
|
|
73
|
+
description: `FilterV3.between("${field}"): both range operands must be defined (got [${String(from)}, ${String(to)}]).`,
|
|
74
|
+
status: 400
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
return condition(field, "between", [from, to]);
|
|
78
|
+
},
|
|
79
|
+
/** Combine nodes with AND (for nesting inside an OR; the top level is already AND). */
|
|
80
|
+
and(...conditions) {
|
|
81
|
+
return { logic: "and", conditions };
|
|
82
|
+
},
|
|
83
|
+
/** Combine nodes with OR. */
|
|
84
|
+
or(...conditions) {
|
|
85
|
+
return { logic: "or", conditions };
|
|
86
|
+
},
|
|
87
|
+
/**
|
|
88
|
+
* Negate a condition or group (wraps it in a NOT). A bare condition is wrapped
|
|
89
|
+
* in a single-item AND group so the `negative` flag has somewhere to live.
|
|
90
|
+
* Returns a fresh group (the input's `conditions` array is copied, not shared).
|
|
91
|
+
*/
|
|
92
|
+
not(node) {
|
|
93
|
+
if (isGroup(node)) {
|
|
94
|
+
return { ...node, conditions: [...node.conditions], negative: true };
|
|
95
|
+
}
|
|
96
|
+
return { logic: "and", negative: true, conditions: [node] };
|
|
97
|
+
},
|
|
98
|
+
/**
|
|
99
|
+
* Assemble the top-level filter array (its elements are AND-joined) ready to
|
|
100
|
+
* pass as `params.filter`. Falsy nodes are skipped, so you can inline
|
|
101
|
+
* conditionals: `F.build(F.eq('a', 1), flag && F.gt('b', 2))`.
|
|
102
|
+
*
|
|
103
|
+
* Always wrap with `build` (or an array) even for a single condition —
|
|
104
|
+
* `params.filter` must be an array, so pass `build(F.eq('a', 1))`, not the bare
|
|
105
|
+
* `F.eq('a', 1)`. Each surviving node is shape-checked, so a forgotten spread
|
|
106
|
+
* (`build([F.eq(...)])`) or a hand-rolled malformed triple fails fast here
|
|
107
|
+
* instead of as an opaque server error.
|
|
108
|
+
*/
|
|
109
|
+
build(...nodes) {
|
|
110
|
+
const result = nodes.filter(Boolean);
|
|
111
|
+
for (const node of result) {
|
|
112
|
+
assertNode(node);
|
|
113
|
+
}
|
|
114
|
+
return result;
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
function isGroup(node) {
|
|
118
|
+
return !Array.isArray(node) && typeof node === "object" && node !== null && "conditions" in node;
|
|
119
|
+
}
|
|
120
|
+
__name(isGroup, "isGroup");
|
|
121
|
+
function assertNode(node) {
|
|
122
|
+
if (isGroup(node)) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
const ok = Array.isArray(node) && node.length === 3 && typeof node[0] === "string" && FILTER_V3_OPERATORS.includes(node[1]);
|
|
126
|
+
if (!ok) {
|
|
127
|
+
throw new SdkError({
|
|
128
|
+
code: "JSSDK_FILTER_V3_INVALID_NODE",
|
|
129
|
+
description: `FilterV3.build: each node must be a [field, operator, value] condition or a group \u2014 got ${JSON.stringify(node)}. Did you forget to spread (build(...nodes)) or build a condition with FilterV3 helpers?`,
|
|
130
|
+
status: 400
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
__name(assertNode, "assertNode");
|
|
135
|
+
|
|
136
|
+
export { FilterV3 };
|
|
137
|
+
//# sourceMappingURL=filter-v3.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-v3.mjs","sources":["../../../src/tools/filter-v3.ts"],"sourcesContent":["import { SdkError } from '../core/sdk-error'\n\n/**\n * The eight — and only eight — comparison operators the Bitrix24 REST API v3\n * filter grammar accepts. Anything else is rejected server-side with\n * `UNKNOWNFILTEROPERATOREXCEPTION`.\n */\nexport type FilterV3Operator = '=' | '!=' | '>' | '>=' | '<' | '<=' | 'in' | 'between'\n\nconst FILTER_V3_OPERATORS: readonly FilterV3Operator[] = ['=', '!=', '>', '>=', '<', '<=', 'in', 'between']\n\n/**\n * A single condition in short-form: `[field, operator, value]`.\n */\nexport type FilterV3Condition = [string, FilterV3Operator, unknown]\n\n/**\n * A logical group of conditions / nested groups. `logic` defaults to `'and'`;\n * `negative: true` wraps the whole group in a NOT.\n */\nexport interface FilterV3Group {\n logic?: 'and' | 'or'\n negative?: boolean\n conditions: FilterV3Node[]\n}\n\nexport type FilterV3Node = FilterV3Condition | FilterV3Group\n\nfunction condition(field: string, operator: FilterV3Operator, value: unknown): FilterV3Condition {\n if (typeof field !== 'string' || field.length === 0) {\n throw new SdkError({\n code: 'JSSDK_FILTER_V3_INVALID_FIELD',\n description: `FilterV3: field name must be a non-empty string, got ${JSON.stringify(field)}.`,\n status: 400\n })\n }\n if (!FILTER_V3_OPERATORS.includes(operator)) {\n throw new SdkError({\n code: 'JSSDK_FILTER_V3_INVALID_OPERATOR',\n description: `FilterV3: operator \"${operator}\" is not one of ${FILTER_V3_OPERATORS.join(' ')}.`,\n status: 400\n })\n }\n return [field, operator, value]\n}\n\n/**\n * Typed builder for Bitrix24 REST API **v3** filters (the array-of-triples\n * dialect with AND/OR/NOT groups — see the v3 reference §3). Produces exactly\n * the structures the server accepts, so a bad operator or a malformed\n * `in` / `between` value fails fast on the client instead of as a server 400.\n *\n * @example\n * import { FilterV3 as F } from '@bitrix24/b24jssdk'\n *\n * // status = NEW AND (id in [1,2] OR id > 100)\n * const filter = F.build(\n * F.eq('status', 'NEW'),\n * F.or(\n * F.in('id', [1, 2]),\n * F.gt('id', 100)\n * )\n * )\n * await b24.actions.v3.call.make({ method: 'tasks.task.list', params: { filter } })\n */\nexport const FilterV3 = Object.freeze({\n /** `field = value` */\n eq(field: string, value: unknown): FilterV3Condition {\n return condition(field, '=', value)\n },\n /** `field != value` */\n ne(field: string, value: unknown): FilterV3Condition {\n return condition(field, '!=', value)\n },\n /** `field > value` */\n gt(field: string, value: unknown): FilterV3Condition {\n return condition(field, '>', value)\n },\n /** `field >= value` */\n ge(field: string, value: unknown): FilterV3Condition {\n return condition(field, '>=', value)\n },\n /** `field < value` */\n lt(field: string, value: unknown): FilterV3Condition {\n return condition(field, '<', value)\n },\n /** `field <= value` */\n le(field: string, value: unknown): FilterV3Condition {\n return condition(field, '<=', value)\n },\n /** `field in [values]` — `values` must be a non-empty array. */\n in(field: string, values: unknown[]): FilterV3Condition {\n if (!Array.isArray(values) || values.length === 0) {\n throw new SdkError({\n code: 'JSSDK_FILTER_V3_INVALID_IN',\n description: `FilterV3.in(\"${field}\"): value must be a non-empty array.`,\n status: 400\n })\n }\n return condition(field, 'in', values)\n },\n /** `field between [from, to]` — inclusive range of exactly two defined operands. */\n between(field: string, from: unknown, to: unknown): FilterV3Condition {\n if (from === undefined || from === null || to === undefined || to === null) {\n throw new SdkError({\n code: 'JSSDK_FILTER_V3_INVALID_BETWEEN',\n description: `FilterV3.between(\"${field}\"): both range operands must be defined (got [${String(from)}, ${String(to)}]).`,\n status: 400\n })\n }\n return condition(field, 'between', [from, to])\n },\n\n /** Combine nodes with AND (for nesting inside an OR; the top level is already AND). */\n and(...conditions: FilterV3Node[]): FilterV3Group {\n return { logic: 'and', conditions }\n },\n /** Combine nodes with OR. */\n or(...conditions: FilterV3Node[]): FilterV3Group {\n return { logic: 'or', conditions }\n },\n /**\n * Negate a condition or group (wraps it in a NOT). A bare condition is wrapped\n * in a single-item AND group so the `negative` flag has somewhere to live.\n * Returns a fresh group (the input's `conditions` array is copied, not shared).\n */\n not(node: FilterV3Node): FilterV3Group {\n if (isGroup(node)) {\n return { ...node, conditions: [...node.conditions], negative: true }\n }\n return { logic: 'and', negative: true, conditions: [node] }\n },\n\n /**\n * Assemble the top-level filter array (its elements are AND-joined) ready to\n * pass as `params.filter`. Falsy nodes are skipped, so you can inline\n * conditionals: `F.build(F.eq('a', 1), flag && F.gt('b', 2))`.\n *\n * Always wrap with `build` (or an array) even for a single condition —\n * `params.filter` must be an array, so pass `build(F.eq('a', 1))`, not the bare\n * `F.eq('a', 1)`. Each surviving node is shape-checked, so a forgotten spread\n * (`build([F.eq(...)])`) or a hand-rolled malformed triple fails fast here\n * instead of as an opaque server error.\n */\n build(...nodes: Array<FilterV3Node | false | null | undefined>): FilterV3Node[] {\n const result = nodes.filter(Boolean) as FilterV3Node[]\n for (const node of result) {\n assertNode(node)\n }\n return result\n }\n})\n\nfunction isGroup(node: unknown): node is FilterV3Group {\n return !Array.isArray(node) && typeof node === 'object' && node !== null && 'conditions' in node\n}\n\nfunction assertNode(node: FilterV3Node): void {\n if (isGroup(node)) {\n return\n }\n const ok = Array.isArray(node)\n && node.length === 3\n && typeof node[0] === 'string'\n && FILTER_V3_OPERATORS.includes(node[1] as FilterV3Operator)\n if (!ok) {\n throw new SdkError({\n code: 'JSSDK_FILTER_V3_INVALID_NODE',\n description: `FilterV3.build: each node must be a [field, operator, value] condition or a group — got ${JSON.stringify(node)}. Did you forget to spread (build(...nodes)) or build a condition with FilterV3 helpers?`,\n status: 400\n })\n }\n}\n"],"names":[],"mappings":"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"}
|
package/dist/esm/tools/index.mjs
CHANGED
package/dist/esm/tools/text.mjs
CHANGED
package/dist/esm/tools/type.mjs
CHANGED
package/dist/esm/types/b24.mjs
CHANGED