@bitrix24/b24jssdk 0.5.1 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README-AI.md +2 -1
- package/dist/esm/_virtual/_commonjsHelpers.mjs +16 -0
- package/dist/esm/_virtual/_commonjsHelpers.mjs.map +1 -0
- package/dist/esm/_virtual/protobuf.mjs +16 -0
- package/dist/esm/_virtual/protobuf.mjs.map +1 -0
- package/dist/esm/_virtual/protobuf2.mjs +12 -0
- package/dist/esm/_virtual/protobuf2.mjs.map +1 -0
- package/dist/esm/core/abstract-b24.mjs +355 -0
- package/dist/esm/core/abstract-b24.mjs.map +1 -0
- package/dist/esm/core/actions/abstract-action.mjs +24 -0
- package/dist/esm/core/actions/abstract-action.mjs.map +1 -0
- package/dist/esm/core/actions/abstract-batch.mjs +95 -0
- package/dist/esm/core/actions/abstract-batch.mjs.map +1 -0
- package/dist/esm/core/actions/manager.mjs +53 -0
- package/dist/esm/core/actions/manager.mjs.map +1 -0
- package/dist/esm/core/actions/v2/batch-by-chunk.mjs +92 -0
- package/dist/esm/core/actions/v2/batch-by-chunk.mjs.map +1 -0
- package/dist/esm/core/actions/v2/batch.mjs +126 -0
- package/dist/esm/core/actions/v2/batch.mjs.map +1 -0
- package/dist/esm/core/actions/v2/call-list.mjs +131 -0
- package/dist/esm/core/actions/v2/call-list.mjs.map +1 -0
- package/dist/esm/core/actions/v2/call.mjs +68 -0
- package/dist/esm/core/actions/v2/call.mjs.map +1 -0
- package/dist/esm/core/actions/v2/fetch-list.mjs +132 -0
- package/dist/esm/core/actions/v2/fetch-list.mjs.map +1 -0
- package/dist/esm/core/actions/v2/manager-v2.mjs +74 -0
- package/dist/esm/core/actions/v2/manager-v2.mjs.map +1 -0
- package/dist/esm/core/actions/v3/batch-by-chunk.mjs +91 -0
- package/dist/esm/core/actions/v3/batch-by-chunk.mjs.map +1 -0
- package/dist/esm/core/actions/v3/batch.mjs +129 -0
- package/dist/esm/core/actions/v3/batch.mjs.map +1 -0
- package/dist/esm/core/actions/v3/call-list.mjs +127 -0
- package/dist/esm/core/actions/v3/call-list.mjs.map +1 -0
- package/dist/esm/core/actions/v3/call.mjs +58 -0
- package/dist/esm/core/actions/v3/call.mjs.map +1 -0
- package/dist/esm/core/actions/v3/fetch-list.mjs +125 -0
- package/dist/esm/core/actions/v3/fetch-list.mjs.map +1 -0
- package/dist/esm/core/actions/v3/manager-v3.mjs +74 -0
- package/dist/esm/core/actions/v3/manager-v3.mjs.map +1 -0
- package/dist/esm/core/http/abstract-http.mjs +563 -0
- package/dist/esm/core/http/abstract-http.mjs.map +1 -0
- package/dist/esm/core/http/ajax-error.mjs +107 -0
- package/dist/esm/core/http/ajax-error.mjs.map +1 -0
- package/dist/esm/core/http/ajax-result.mjs +176 -0
- package/dist/esm/core/http/ajax-result.mjs.map +1 -0
- package/dist/esm/core/http/limiters/adaptive-delayer.mjs +135 -0
- package/dist/esm/core/http/limiters/adaptive-delayer.mjs.map +1 -0
- package/dist/esm/core/http/limiters/manager.mjs +308 -0
- package/dist/esm/core/http/limiters/manager.mjs.map +1 -0
- package/dist/esm/core/http/limiters/operating-limiter.mjs +171 -0
- package/dist/esm/core/http/limiters/operating-limiter.mjs.map +1 -0
- package/dist/esm/core/http/limiters/params-factory.mjs +121 -0
- package/dist/esm/core/http/limiters/params-factory.mjs.map +1 -0
- package/dist/esm/core/http/limiters/rate-limiter.mjs +402 -0
- package/dist/esm/core/http/limiters/rate-limiter.mjs.map +1 -0
- package/dist/esm/core/http/v2.mjs +100 -0
- package/dist/esm/core/http/v2.mjs.map +1 -0
- package/dist/esm/core/http/v3.mjs +94 -0
- package/dist/esm/core/http/v3.mjs.map +1 -0
- package/dist/esm/core/interaction/batch/abstract-interaction-batch.mjs +69 -0
- package/dist/esm/core/interaction/batch/abstract-interaction-batch.mjs.map +1 -0
- package/dist/esm/core/interaction/batch/parse-row.mjs +67 -0
- package/dist/esm/core/interaction/batch/parse-row.mjs.map +1 -0
- package/dist/esm/core/interaction/batch/processing/interface-strategy.mjs +42 -0
- package/dist/esm/core/interaction/batch/processing/interface-strategy.mjs.map +1 -0
- package/dist/esm/core/interaction/batch/processing/v2/abstract-processing.mjs +121 -0
- package/dist/esm/core/interaction/batch/processing/v2/abstract-processing.mjs.map +1 -0
- package/dist/esm/core/interaction/batch/processing/v2/as-array.mjs +32 -0
- package/dist/esm/core/interaction/batch/processing/v2/as-array.mjs.map +1 -0
- package/dist/esm/core/interaction/batch/processing/v2/as-object.mjs +32 -0
- package/dist/esm/core/interaction/batch/processing/v2/as-object.mjs.map +1 -0
- package/dist/esm/core/interaction/batch/processing/v3/abstract-processing.mjs +118 -0
- package/dist/esm/core/interaction/batch/processing/v3/abstract-processing.mjs.map +1 -0
- package/dist/esm/core/interaction/batch/processing/v3/as-array.mjs +32 -0
- package/dist/esm/core/interaction/batch/processing/v3/as-array.mjs.map +1 -0
- package/dist/esm/core/interaction/batch/processing/v3/as-object.mjs +32 -0
- package/dist/esm/core/interaction/batch/processing/v3/as-object.mjs.map +1 -0
- package/dist/esm/core/interaction/batch/v2.mjs +44 -0
- package/dist/esm/core/interaction/batch/v2.mjs.map +1 -0
- package/dist/esm/core/interaction/batch/v3.mjs +42 -0
- package/dist/esm/core/interaction/batch/v3.mjs.map +1 -0
- package/dist/esm/core/language/list.mjs +56 -0
- package/dist/esm/core/language/list.mjs.map +1 -0
- package/dist/esm/core/request-id-generator.mjs +42 -0
- package/dist/esm/core/request-id-generator.mjs.map +1 -0
- package/dist/esm/core/result.mjs +101 -0
- package/dist/esm/core/result.mjs.map +1 -0
- package/dist/esm/core/sdk-error.mjs +83 -0
- package/dist/esm/core/sdk-error.mjs.map +1 -0
- package/dist/esm/core/tools/abstract-tool.mjs +24 -0
- package/dist/esm/core/tools/abstract-tool.mjs.map +1 -0
- package/dist/esm/core/tools/healthcheck.mjs +48 -0
- package/dist/esm/core/tools/healthcheck.mjs.map +1 -0
- package/dist/esm/core/tools/manager.mjs +50 -0
- package/dist/esm/core/tools/manager.mjs.map +1 -0
- package/dist/esm/core/tools/ping.mjs +56 -0
- package/dist/esm/core/tools/ping.mjs.map +1 -0
- package/dist/esm/core/version-manager.mjs +116 -0
- package/dist/esm/core/version-manager.mjs.map +1 -0
- package/dist/esm/frame/auth.mjs +98 -0
- package/dist/esm/frame/auth.mjs.map +1 -0
- package/dist/esm/frame/b24.mjs +170 -0
- package/dist/esm/frame/b24.mjs.map +1 -0
- package/dist/esm/frame/dialog.mjs +78 -0
- package/dist/esm/frame/dialog.mjs.map +1 -0
- package/dist/esm/frame/frame.mjs +101 -0
- package/dist/esm/frame/frame.mjs.map +1 -0
- package/dist/esm/frame/message/commands.mjs +37 -0
- package/dist/esm/frame/message/commands.mjs.map +1 -0
- package/dist/esm/frame/message/controller.mjs +177 -0
- package/dist/esm/frame/message/controller.mjs.map +1 -0
- package/dist/esm/frame/options.mjs +106 -0
- package/dist/esm/frame/options.mjs.map +1 -0
- package/dist/esm/frame/parent.mjs +250 -0
- package/dist/esm/frame/parent.mjs.map +1 -0
- package/dist/esm/frame/placement.mjs +131 -0
- package/dist/esm/frame/placement.mjs.map +1 -0
- package/dist/esm/frame/slider.mjs +156 -0
- package/dist/esm/frame/slider.mjs.map +1 -0
- package/dist/esm/helper/abstract-helper.mjs +52 -0
- package/dist/esm/helper/abstract-helper.mjs.map +1 -0
- package/dist/esm/helper/app-manager.mjs +37 -0
- package/dist/esm/helper/app-manager.mjs.map +1 -0
- package/dist/esm/helper/currency-manager.mjs +207 -0
- package/dist/esm/helper/currency-manager.mjs.map +1 -0
- package/dist/esm/helper/helper-manager.mjs +388 -0
- package/dist/esm/helper/helper-manager.mjs.map +1 -0
- package/dist/esm/helper/license-manager.mjs +50 -0
- package/dist/esm/helper/license-manager.mjs.map +1 -0
- package/dist/esm/helper/options-manager.mjs +196 -0
- package/dist/esm/helper/options-manager.mjs.map +1 -0
- package/dist/esm/helper/payment-manager.mjs +33 -0
- package/dist/esm/helper/payment-manager.mjs.map +1 -0
- package/dist/esm/helper/profile-manager.mjs +33 -0
- package/dist/esm/helper/profile-manager.mjs.map +1 -0
- package/dist/esm/helper/use-b24-helper.mjs +84 -0
- package/dist/esm/helper/use-b24-helper.mjs.map +1 -0
- package/dist/esm/hook/auth.mjs +77 -0
- package/dist/esm/hook/auth.mjs.map +1 -0
- package/dist/esm/hook/b24.mjs +115 -0
- package/dist/esm/hook/b24.mjs.map +1 -0
- package/dist/esm/index.d.mts +2757 -526
- package/dist/esm/index.d.ts +2757 -526
- package/dist/esm/index.mjs +70 -14118
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/loader-b24frame.mjs +101 -0
- package/dist/esm/loader-b24frame.mjs.map +1 -0
- package/dist/esm/logger/abstract-logger.mjs +69 -0
- package/dist/esm/logger/abstract-logger.mjs.map +1 -0
- package/dist/esm/logger/browser.mjs +162 -0
- package/dist/esm/logger/browser.mjs.map +1 -0
- package/dist/esm/logger/formatter/abstract-formatter.mjs +34 -0
- package/dist/esm/logger/formatter/abstract-formatter.mjs.map +1 -0
- package/dist/esm/logger/formatter/json-formatter.mjs +34 -0
- package/dist/esm/logger/formatter/json-formatter.mjs.map +1 -0
- package/dist/esm/logger/formatter/line-formatter.mjs +41 -0
- package/dist/esm/logger/formatter/line-formatter.mjs.map +1 -0
- package/dist/esm/logger/formatter/telegram-formatter.mjs +103 -0
- package/dist/esm/logger/formatter/telegram-formatter.mjs.map +1 -0
- package/dist/esm/logger/handler/abstract-handler.mjs +39 -0
- package/dist/esm/logger/handler/abstract-handler.mjs.map +1 -0
- package/dist/esm/logger/handler/consola-adapter.mjs +62 -0
- package/dist/esm/logger/handler/consola-adapter.mjs.map +1 -0
- package/dist/esm/logger/handler/console-handler.mjs +98 -0
- package/dist/esm/logger/handler/console-handler.mjs.map +1 -0
- package/dist/esm/logger/handler/console-v2-handler.mjs +51 -0
- package/dist/esm/logger/handler/console-v2-handler.mjs.map +1 -0
- package/dist/esm/logger/handler/memory-handler.mjs +48 -0
- package/dist/esm/logger/handler/memory-handler.mjs.map +1 -0
- package/dist/esm/logger/handler/stream-handler.mjs +73 -0
- package/dist/esm/logger/handler/stream-handler.mjs.map +1 -0
- package/dist/esm/logger/handler/telegram-handler.mjs +157 -0
- package/dist/esm/logger/handler/telegram-handler.mjs.map +1 -0
- package/dist/esm/logger/handler/winston-adapter.mjs +57 -0
- package/dist/esm/logger/handler/winston-adapter.mjs.map +1 -0
- package/dist/esm/logger/logger-factory.mjs +67 -0
- package/dist/esm/logger/logger-factory.mjs.map +1 -0
- package/dist/esm/logger/logger.mjs +76 -0
- package/dist/esm/logger/logger.mjs.map +1 -0
- package/dist/esm/logger/null-logger.mjs +32 -0
- package/dist/esm/logger/null-logger.mjs.map +1 -0
- package/dist/esm/logger/processor/memory-usage-processor.mjs +20 -0
- package/dist/esm/logger/processor/memory-usage-processor.mjs.map +1 -0
- package/dist/esm/logger/processor/pid-processor.mjs +20 -0
- package/dist/esm/logger/processor/pid-processor.mjs.map +1 -0
- package/dist/esm/oauth/auth.mjs +211 -0
- package/dist/esm/oauth/auth.mjs.map +1 -0
- package/dist/esm/oauth/b24.mjs +117 -0
- package/dist/esm/oauth/b24.mjs.map +1 -0
- package/dist/esm/oauth/refresh-token-error.mjs +20 -0
- package/dist/esm/oauth/refresh-token-error.mjs.map +1 -0
- package/dist/esm/pullClient/abstract-connector.mjs +78 -0
- package/dist/esm/pullClient/abstract-connector.mjs.map +1 -0
- package/dist/esm/pullClient/channel-manager.mjs +89 -0
- package/dist/esm/pullClient/channel-manager.mjs.map +1 -0
- package/dist/esm/pullClient/client.mjs +2064 -0
- package/dist/esm/pullClient/client.mjs.map +1 -0
- package/dist/esm/pullClient/errors.mjs +31 -0
- package/dist/esm/pullClient/errors.mjs.map +1 -0
- package/dist/esm/pullClient/json-rpc.mjs +210 -0
- package/dist/esm/pullClient/json-rpc.mjs.map +1 -0
- package/dist/esm/pullClient/long-polling-connector.mjs +157 -0
- package/dist/esm/pullClient/long-polling-connector.mjs.map +1 -0
- package/dist/esm/pullClient/protobuf/index.mjs +17 -0
- package/dist/esm/pullClient/protobuf/index.mjs.map +1 -0
- package/dist/esm/pullClient/protobuf/model.mjs +1058 -0
- package/dist/esm/pullClient/protobuf/model.mjs.map +1 -0
- package/dist/esm/pullClient/protobuf/protobuf.mjs +4653 -0
- package/dist/esm/pullClient/protobuf/protobuf.mjs.map +1 -0
- package/dist/esm/pullClient/shared-config.mjs +133 -0
- package/dist/esm/pullClient/shared-config.mjs.map +1 -0
- package/dist/esm/pullClient/storage-manager.mjs +72 -0
- package/dist/esm/pullClient/storage-manager.mjs.map +1 -0
- package/dist/esm/pullClient/web-socket-connector.mjs +129 -0
- package/dist/esm/pullClient/web-socket-connector.mjs.map +1 -0
- package/dist/esm/tools/browser.mjs +154 -0
- package/dist/esm/tools/browser.mjs.map +1 -0
- package/dist/esm/tools/environment.mjs +29 -0
- package/dist/esm/tools/environment.mjs.map +1 -0
- package/dist/esm/tools/formatters/iban.mjs +304 -0
- package/dist/esm/tools/formatters/iban.mjs.map +1 -0
- package/dist/esm/tools/formatters/numbers.mjs +64 -0
- package/dist/esm/tools/formatters/numbers.mjs.map +1 -0
- package/dist/esm/tools/index.mjs +37 -0
- package/dist/esm/tools/index.mjs.map +1 -0
- package/dist/esm/tools/scroll-size.mjs +25 -0
- package/dist/esm/tools/scroll-size.mjs.map +1 -0
- package/dist/esm/tools/text.mjs +208 -0
- package/dist/esm/tools/text.mjs.map +1 -0
- package/dist/esm/tools/type.mjs +337 -0
- package/dist/esm/tools/type.mjs.map +1 -0
- package/dist/esm/tools/use-formatters.mjs +460 -0
- package/dist/esm/tools/use-formatters.mjs.map +1 -0
- package/dist/esm/tools/uuidv7.mjs +54 -0
- package/dist/esm/tools/uuidv7.mjs.map +1 -0
- package/dist/esm/types/b24-helper.mjs +56 -0
- package/dist/esm/types/b24-helper.mjs.map +1 -0
- package/dist/esm/types/b24.mjs +16 -0
- package/dist/esm/types/b24.mjs.map +1 -0
- package/dist/esm/types/bizproc/index.mjs +187 -0
- package/dist/esm/types/bizproc/index.mjs.map +1 -0
- package/dist/esm/types/catalog/index.mjs +35 -0
- package/dist/esm/types/catalog/index.mjs.map +1 -0
- package/dist/esm/types/common.mjs +31 -0
- package/dist/esm/types/common.mjs.map +1 -0
- package/dist/esm/types/crm/entity-type.mjs +57 -0
- package/dist/esm/types/crm/entity-type.mjs.map +1 -0
- package/dist/esm/types/crm/productrow.mjs +17 -0
- package/dist/esm/types/crm/productrow.mjs.map +1 -0
- package/dist/esm/types/logger.mjs +22 -0
- package/dist/esm/types/logger.mjs.map +1 -0
- package/dist/esm/types/pull.mjs +83 -0
- package/dist/esm/types/pull.mjs.map +1 -0
- package/dist/umd/index.js +31216 -26912
- package/dist/umd/index.js.map +1 -1
- package/dist/umd/index.min.js +63 -40
- package/dist/umd/index.min.js.map +1 -1
- package/package.json +36 -31
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @package @bitrix24/b24jssdk
|
|
3
|
+
* @version 1.0.1
|
|
4
|
+
* @copyright (c) 2026 Bitrix24
|
|
5
|
+
* @license MIT
|
|
6
|
+
* @see https://github.com/bitrix24/b24jssdk
|
|
7
|
+
* @see https://bitrix24.github.io/b24jssdk/
|
|
8
|
+
*/
|
|
9
|
+
import { B24LangList } from '../core/language/list.mjs';
|
|
10
|
+
import { ApiVersion } from '../types/b24.mjs';
|
|
11
|
+
|
|
12
|
+
var __defProp = Object.defineProperty;
|
|
13
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
14
|
+
class AppFrame {
|
|
15
|
+
static {
|
|
16
|
+
__name(this, "AppFrame");
|
|
17
|
+
}
|
|
18
|
+
#domain = "";
|
|
19
|
+
#protocol = true;
|
|
20
|
+
#appSid = null;
|
|
21
|
+
#path = null;
|
|
22
|
+
#lang = null;
|
|
23
|
+
#b24TargetRest;
|
|
24
|
+
#b24Target;
|
|
25
|
+
#b24TargetRestWithPath;
|
|
26
|
+
constructor(queryParams) {
|
|
27
|
+
if (queryParams.DOMAIN) {
|
|
28
|
+
this.#domain = queryParams.DOMAIN;
|
|
29
|
+
this.#domain = this.#domain.replace(/:(80|443)$/, "");
|
|
30
|
+
}
|
|
31
|
+
this.#protocol = queryParams.PROTOCOL === true;
|
|
32
|
+
if (queryParams.LANG) {
|
|
33
|
+
this.#lang = queryParams.LANG;
|
|
34
|
+
}
|
|
35
|
+
if (queryParams.APP_SID) {
|
|
36
|
+
this.#appSid = queryParams.APP_SID;
|
|
37
|
+
}
|
|
38
|
+
this.#b24TargetRestWithPath = /* @__PURE__ */ new Map();
|
|
39
|
+
this.#b24Target = `${this.#protocol ? "https" : "http"}://${this.#domain}`;
|
|
40
|
+
this.#b24TargetRest = `${this.#b24Target}/rest`;
|
|
41
|
+
this.#b24TargetRestWithPath.set(ApiVersion.v2, `${this.#b24TargetRest}`);
|
|
42
|
+
this.#b24TargetRestWithPath.set(ApiVersion.v3, `${this.#b24TargetRest}/api`);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Initializes the data received from the parent window message.
|
|
46
|
+
* @param data
|
|
47
|
+
*/
|
|
48
|
+
initData(data) {
|
|
49
|
+
if (!this.#domain) {
|
|
50
|
+
this.#domain = data.DOMAIN;
|
|
51
|
+
}
|
|
52
|
+
if (!this.#path) {
|
|
53
|
+
this.#path = data.PATH;
|
|
54
|
+
}
|
|
55
|
+
if (!this.#lang) {
|
|
56
|
+
this.#lang = data.LANG;
|
|
57
|
+
}
|
|
58
|
+
this.#protocol = Number.parseInt(data.PROTOCOL) === 1;
|
|
59
|
+
this.#domain = this.#domain.replace(/:(80|443)$/, "");
|
|
60
|
+
this.#b24Target = `${this.#protocol ? "https" : "http"}://${this.#domain}`;
|
|
61
|
+
this.#b24TargetRest = `${this.#b24Target}/rest`;
|
|
62
|
+
this.#b24TargetRestWithPath.set(ApiVersion.v2, `${this.#b24TargetRest}`);
|
|
63
|
+
this.#b24TargetRestWithPath.set(ApiVersion.v3, `${this.#b24TargetRest}/api`);
|
|
64
|
+
return this;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Returns the sid of the application relative to the parent window like this `9c33468728e1d2c8c97562475edfd96`
|
|
68
|
+
*/
|
|
69
|
+
getAppSid() {
|
|
70
|
+
if (null === this.#appSid) {
|
|
71
|
+
throw new Error(`Not init appSid`);
|
|
72
|
+
}
|
|
73
|
+
return this.#appSid;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Get the account address BX24 (https://your_domain.bitrix24.com)
|
|
77
|
+
*/
|
|
78
|
+
getTargetOrigin() {
|
|
79
|
+
return this.#b24Target;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Get the account address BX24 with path
|
|
83
|
+
* - ver2 `https://your_domain.bitrix24.com/rest/`
|
|
84
|
+
* - ver3` https://your_domain.bitrix24.com/rest/api/`
|
|
85
|
+
*/
|
|
86
|
+
getTargetOriginWithPath() {
|
|
87
|
+
return this.#b24TargetRestWithPath;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Returns the localization of the B24 interface
|
|
91
|
+
* @return {B24LangList} - default `B24LangList.en`
|
|
92
|
+
*
|
|
93
|
+
* @link https://apidocs.bitrix24.com/sdk/bx24-js-sdk/additional-functions/bx24-get-lang.html
|
|
94
|
+
*/
|
|
95
|
+
getLang() {
|
|
96
|
+
return this.#lang || B24LangList.en;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export { AppFrame };
|
|
101
|
+
//# sourceMappingURL=frame.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frame.mjs","sources":["../../../src/frame/frame.ts"],"sourcesContent":["import type { B24FrameQueryParams, MessageInitData } from '../types/auth'\nimport { B24LangList } from '../core/language/list'\nimport { ApiVersion } from '../types/b24'\n\n/**\n * Application Frame Data Manager\n */\nexport class AppFrame {\n #domain: string = ''\n #protocol: boolean = true\n #appSid: null | string = null\n #path: null | string = null\n #lang: null | string = null\n #b24TargetRest: string\n #b24Target: string\n readonly #b24TargetRestWithPath: Map<ApiVersion, string>\n\n constructor(\n queryParams: B24FrameQueryParams\n ) {\n if (queryParams.DOMAIN) {\n this.#domain = queryParams.DOMAIN\n this.#domain = this.#domain.replace(/:(80|443)$/, '')\n }\n\n this.#protocol = queryParams.PROTOCOL === true\n\n if (queryParams.LANG) {\n this.#lang = queryParams.LANG\n }\n\n if (queryParams.APP_SID) {\n this.#appSid = queryParams.APP_SID\n }\n\n this.#b24TargetRestWithPath = new Map()\n\n this.#b24Target = `${this.#protocol ? 'https' : 'http'}://${this.#domain}`\n this.#b24TargetRest = `${this.#b24Target}/rest`\n\n this.#b24TargetRestWithPath.set(ApiVersion.v2, `${this.#b24TargetRest}`)\n this.#b24TargetRestWithPath.set(ApiVersion.v3, `${this.#b24TargetRest}/api`)\n }\n\n /**\n * Initializes the data received from the parent window message.\n * @param data\n */\n initData(data: MessageInitData): AppFrame {\n if (!this.#domain) {\n this.#domain = data.DOMAIN\n }\n\n if (!this.#path) {\n this.#path = data.PATH\n }\n\n if (!this.#lang) {\n this.#lang = data.LANG\n }\n\n this.#protocol = Number.parseInt(data.PROTOCOL) === 1\n this.#domain = this.#domain.replace(/:(80|443)$/, '')\n\n this.#b24Target = `${this.#protocol ? 'https' : 'http'}://${this.#domain}`\n this.#b24TargetRest = `${this.#b24Target}/rest`\n\n this.#b24TargetRestWithPath.set(ApiVersion.v2, `${this.#b24TargetRest}`)\n this.#b24TargetRestWithPath.set(ApiVersion.v3, `${this.#b24TargetRest}/api`)\n\n return this\n }\n\n /**\n * Returns the sid of the application relative to the parent window like this `9c33468728e1d2c8c97562475edfd96`\n */\n getAppSid(): string {\n if (null === this.#appSid) {\n throw new Error(`Not init appSid`)\n }\n\n return this.#appSid\n }\n\n /**\n * Get the account address BX24 (https://your_domain.bitrix24.com)\n */\n getTargetOrigin(): string {\n return this.#b24Target\n }\n\n /**\n * Get the account address BX24 with path\n * - ver2 `https://your_domain.bitrix24.com/rest/`\n * - ver3` https://your_domain.bitrix24.com/rest/api/`\n */\n getTargetOriginWithPath(): Map<ApiVersion, string> {\n return this.#b24TargetRestWithPath\n }\n\n /**\n * Returns the localization of the B24 interface\n * @return {B24LangList} - default `B24LangList.en`\n *\n * @link https://apidocs.bitrix24.com/sdk/bx24-js-sdk/additional-functions/bx24-get-lang.html\n */\n getLang(): B24LangList {\n return (this.#lang as B24LangList) || B24LangList.en\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @package @bitrix24/b24jssdk
|
|
3
|
+
* @version 1.0.1
|
|
4
|
+
* @copyright (c) 2026 Bitrix24
|
|
5
|
+
* @license MIT
|
|
6
|
+
* @see https://github.com/bitrix24/b24jssdk
|
|
7
|
+
* @see https://bitrix24.github.io/b24jssdk/
|
|
8
|
+
*/
|
|
9
|
+
var MessageCommands = /* @__PURE__ */ ((MessageCommands2) => {
|
|
10
|
+
MessageCommands2["getInitData"] = "getInitData";
|
|
11
|
+
MessageCommands2["setInstallFinish"] = "setInstallFinish";
|
|
12
|
+
MessageCommands2["setInstall"] = "setInstall";
|
|
13
|
+
MessageCommands2["refreshAuth"] = "refreshAuth";
|
|
14
|
+
MessageCommands2["setAppOption"] = "setAppOption";
|
|
15
|
+
MessageCommands2["setUserOption"] = "setUserOption";
|
|
16
|
+
MessageCommands2["resizeWindow"] = "resizeWindow";
|
|
17
|
+
MessageCommands2["reloadWindow"] = "reloadWindow";
|
|
18
|
+
MessageCommands2["setTitle"] = "setTitle";
|
|
19
|
+
MessageCommands2["setScroll"] = "setScroll";
|
|
20
|
+
MessageCommands2["openApplication"] = "openApplication";
|
|
21
|
+
MessageCommands2["closeApplication"] = "closeApplication";
|
|
22
|
+
MessageCommands2["openPath"] = "openPath";
|
|
23
|
+
MessageCommands2["imCallTo"] = "imCallTo";
|
|
24
|
+
MessageCommands2["imPhoneTo"] = "imPhoneTo";
|
|
25
|
+
MessageCommands2["imOpenMessenger"] = "imOpenMessenger";
|
|
26
|
+
MessageCommands2["imOpenHistory"] = "imOpenHistory";
|
|
27
|
+
MessageCommands2["selectUser"] = "selectUser";
|
|
28
|
+
MessageCommands2["selectAccess"] = "selectAccess";
|
|
29
|
+
MessageCommands2["selectCRM"] = "selectCRM";
|
|
30
|
+
MessageCommands2["showAppForm"] = "showAppForm";
|
|
31
|
+
MessageCommands2["getInterface"] = "getInterface";
|
|
32
|
+
MessageCommands2["placementBindEvent"] = "placementBindEvent";
|
|
33
|
+
return MessageCommands2;
|
|
34
|
+
})(MessageCommands || {});
|
|
35
|
+
|
|
36
|
+
export { MessageCommands };
|
|
37
|
+
//# sourceMappingURL=commands.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.mjs","sources":["../../../../src/frame/message/commands.ts"],"sourcesContent":["/**\n * List of commands for the B24 parent window\n */\nexport enum MessageCommands {\n getInitData = 'getInitData',\n setInstallFinish = 'setInstallFinish',\n setInstall = 'setInstall',\n refreshAuth = 'refreshAuth',\n setAppOption = 'setAppOption',\n setUserOption = 'setUserOption',\n resizeWindow = 'resizeWindow',\n reloadWindow = 'reloadWindow',\n setTitle = 'setTitle',\n setScroll = 'setScroll',\n openApplication = 'openApplication',\n closeApplication = 'closeApplication',\n openPath = 'openPath',\n imCallTo = 'imCallTo',\n imPhoneTo = 'imPhoneTo',\n imOpenMessenger = 'imOpenMessenger',\n imOpenHistory = 'imOpenHistory',\n selectUser = 'selectUser',\n selectAccess = 'selectAccess',\n selectCRM = 'selectCRM',\n /**\n * @memo this not work. Need test\n */\n showAppForm = 'showAppForm',\n getInterface = 'getInterface',\n placementBindEvent = 'placementBindEvent'\n}\n"],"names":["MessageCommands"],"mappings":";;;;;;;;AAGO,IAAK,eAAA,qBAAAA,gBAAAA,KAAL;AACL,EAAAA,iBAAA,aAAA,CAAA,GAAc,aAAA;AACd,EAAAA,iBAAA,kBAAA,CAAA,GAAmB,kBAAA;AACnB,EAAAA,iBAAA,YAAA,CAAA,GAAa,YAAA;AACb,EAAAA,iBAAA,aAAA,CAAA,GAAc,aAAA;AACd,EAAAA,iBAAA,cAAA,CAAA,GAAe,cAAA;AACf,EAAAA,iBAAA,eAAA,CAAA,GAAgB,eAAA;AAChB,EAAAA,iBAAA,cAAA,CAAA,GAAe,cAAA;AACf,EAAAA,iBAAA,cAAA,CAAA,GAAe,cAAA;AACf,EAAAA,iBAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,iBAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,iBAAA,iBAAA,CAAA,GAAkB,iBAAA;AAClB,EAAAA,iBAAA,kBAAA,CAAA,GAAmB,kBAAA;AACnB,EAAAA,iBAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,iBAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,iBAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,iBAAA,iBAAA,CAAA,GAAkB,iBAAA;AAClB,EAAAA,iBAAA,eAAA,CAAA,GAAgB,eAAA;AAChB,EAAAA,iBAAA,YAAA,CAAA,GAAa,YAAA;AACb,EAAAA,iBAAA,cAAA,CAAA,GAAe,cAAA;AACf,EAAAA,iBAAA,WAAA,CAAA,GAAY,WAAA;AAIZ,EAAAA,iBAAA,aAAA,CAAA,GAAc,aAAA;AACd,EAAAA,iBAAA,cAAA,CAAA,GAAe,cAAA;AACf,EAAAA,iBAAA,oBAAA,CAAA,GAAqB,oBAAA;AA1BX,EAAA,OAAAA,gBAAAA;AAAA,CAAA,EAAA,eAAA,IAAA,EAAA;;;;"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @package @bitrix24/b24jssdk
|
|
3
|
+
* @version 1.0.1
|
|
4
|
+
* @copyright (c) 2026 Bitrix24
|
|
5
|
+
* @license MIT
|
|
6
|
+
* @see https://github.com/bitrix24/b24jssdk
|
|
7
|
+
* @see https://bitrix24.github.io/b24jssdk/
|
|
8
|
+
*/
|
|
9
|
+
import { Type } from '../../tools/type.mjs';
|
|
10
|
+
import { Text } from '../../tools/text.mjs';
|
|
11
|
+
import { omit } from '../../tools/index.mjs';
|
|
12
|
+
import { LoggerFactory } from '../../logger/logger-factory.mjs';
|
|
13
|
+
|
|
14
|
+
var __defProp = Object.defineProperty;
|
|
15
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
16
|
+
class MessageManager {
|
|
17
|
+
static {
|
|
18
|
+
__name(this, "MessageManager");
|
|
19
|
+
}
|
|
20
|
+
#appFrame;
|
|
21
|
+
#callbackPromises;
|
|
22
|
+
#callbackSingletone;
|
|
23
|
+
_logger;
|
|
24
|
+
runCallbackHandler;
|
|
25
|
+
constructor(appFrame) {
|
|
26
|
+
this._logger = LoggerFactory.createNullLogger();
|
|
27
|
+
this.#appFrame = appFrame;
|
|
28
|
+
this.#callbackPromises = /* @__PURE__ */ new Map();
|
|
29
|
+
this.#callbackSingletone = /* @__PURE__ */ new Map();
|
|
30
|
+
this.runCallbackHandler = this._runCallback.bind(this);
|
|
31
|
+
}
|
|
32
|
+
setLogger(logger) {
|
|
33
|
+
this._logger = logger;
|
|
34
|
+
}
|
|
35
|
+
getLogger() {
|
|
36
|
+
return this._logger;
|
|
37
|
+
}
|
|
38
|
+
// region Events ////
|
|
39
|
+
/**
|
|
40
|
+
* Subscribe to the onMessage event of the parent window
|
|
41
|
+
*/
|
|
42
|
+
subscribe() {
|
|
43
|
+
window.addEventListener("message", this.runCallbackHandler);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Unsubscribe from the onMessage event of the parent window
|
|
47
|
+
*/
|
|
48
|
+
unsubscribe() {
|
|
49
|
+
window.removeEventListener("message", this.runCallbackHandler);
|
|
50
|
+
}
|
|
51
|
+
// endregion ////
|
|
52
|
+
/**
|
|
53
|
+
* Send message to parent window
|
|
54
|
+
* The answer (if) we will get in _runCallback
|
|
55
|
+
*
|
|
56
|
+
* @param command
|
|
57
|
+
* @param params
|
|
58
|
+
*/
|
|
59
|
+
async send(command, params = null) {
|
|
60
|
+
return new Promise((resolve, reject) => {
|
|
61
|
+
let cmd;
|
|
62
|
+
const promiseHandler = {
|
|
63
|
+
resolve,
|
|
64
|
+
reject,
|
|
65
|
+
timeoutId: null
|
|
66
|
+
};
|
|
67
|
+
const keyPromise = this.#setCallbackPromise(promiseHandler);
|
|
68
|
+
let paramsSend = null;
|
|
69
|
+
const optionsSend = omit(params || {}, ["singleOption", "callBack", "isSafely", "safelyTime"]);
|
|
70
|
+
const { callBack, singleOption } = params || {};
|
|
71
|
+
if (callBack) {
|
|
72
|
+
this.#callbackSingletone.set(keyPromise, callBack);
|
|
73
|
+
}
|
|
74
|
+
if (singleOption) {
|
|
75
|
+
paramsSend = singleOption;
|
|
76
|
+
} else if (Object.keys(optionsSend).length > 0) {
|
|
77
|
+
paramsSend = { ...optionsSend };
|
|
78
|
+
}
|
|
79
|
+
if (command.toString().includes(":")) {
|
|
80
|
+
cmd = {
|
|
81
|
+
method: command.toString(),
|
|
82
|
+
params: paramsSend || "",
|
|
83
|
+
callback: keyPromise,
|
|
84
|
+
appSid: this.#appFrame.getAppSid()
|
|
85
|
+
};
|
|
86
|
+
} else {
|
|
87
|
+
cmd = command.toString();
|
|
88
|
+
if (params?.isRawValue !== true && paramsSend) {
|
|
89
|
+
paramsSend = JSON.stringify(paramsSend);
|
|
90
|
+
} else if (params?.isRawValue === true && paramsSend && Type.isPlainObject(paramsSend) && paramsSend["value"]) {
|
|
91
|
+
paramsSend = paramsSend["value"];
|
|
92
|
+
}
|
|
93
|
+
const listParams = [
|
|
94
|
+
paramsSend || "",
|
|
95
|
+
keyPromise,
|
|
96
|
+
this.#appFrame.getAppSid()
|
|
97
|
+
];
|
|
98
|
+
cmd += ":" + listParams.filter(Boolean).join(":");
|
|
99
|
+
}
|
|
100
|
+
this.getLogger().debug(`send to ${this.#appFrame.getTargetOrigin()}`, {
|
|
101
|
+
cmd,
|
|
102
|
+
origin: this.#appFrame.getTargetOrigin()
|
|
103
|
+
});
|
|
104
|
+
parent.postMessage(cmd, this.#appFrame.getTargetOrigin());
|
|
105
|
+
if (params?.isSafely) {
|
|
106
|
+
const safelyTime = Number.parseInt(String(params?.safelyTime || 900));
|
|
107
|
+
this.#callbackPromises.get(keyPromise).timeoutId = window.setTimeout(
|
|
108
|
+
() => {
|
|
109
|
+
if (this.#callbackPromises.has(keyPromise)) {
|
|
110
|
+
this.getLogger().warning(`action ${command.toString()} stop by timeout`, {
|
|
111
|
+
command: command.toString(),
|
|
112
|
+
safelyTime
|
|
113
|
+
});
|
|
114
|
+
this.#callbackPromises.delete(keyPromise);
|
|
115
|
+
resolve({ isSafely: true });
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
safelyTime
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Fulfilling a promise based on messages from the parent window
|
|
125
|
+
*
|
|
126
|
+
* @param event
|
|
127
|
+
* @private
|
|
128
|
+
*/
|
|
129
|
+
_runCallback(event) {
|
|
130
|
+
if (event.origin !== this.#appFrame.getTargetOrigin()) {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
if (event.data) {
|
|
134
|
+
this.getLogger().debug(`get from ${event.origin}`, {
|
|
135
|
+
data: event.data,
|
|
136
|
+
origin: event.origin
|
|
137
|
+
});
|
|
138
|
+
const tmp = event.data.split(":");
|
|
139
|
+
const cmd = {
|
|
140
|
+
id: tmp[0],
|
|
141
|
+
args: tmp.slice(1).join(":")
|
|
142
|
+
};
|
|
143
|
+
if (cmd.args) {
|
|
144
|
+
cmd.args = JSON.parse(cmd.args);
|
|
145
|
+
}
|
|
146
|
+
if (this.#callbackPromises.has(cmd.id)) {
|
|
147
|
+
const promise = this.#callbackPromises.get(cmd.id);
|
|
148
|
+
if (promise.timeoutId) {
|
|
149
|
+
clearTimeout(promise.timeoutId);
|
|
150
|
+
}
|
|
151
|
+
this.#callbackPromises.delete(cmd.id);
|
|
152
|
+
promise.resolve(cmd.args);
|
|
153
|
+
} else if (this.#callbackSingletone.has(cmd.id)) {
|
|
154
|
+
const callBack = this.#callbackSingletone.get(cmd.id);
|
|
155
|
+
if (callBack) {
|
|
156
|
+
callBack.apply(globalThis, [cmd.args]);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Storing a promise for a message from the parent window
|
|
163
|
+
*
|
|
164
|
+
* @param promiseHandler
|
|
165
|
+
* @private
|
|
166
|
+
*
|
|
167
|
+
* @memo We don't use Symbol here, because we need to pass it to the parent and then find and restore it.
|
|
168
|
+
*/
|
|
169
|
+
#setCallbackPromise(promiseHandler) {
|
|
170
|
+
const key = Text.getUniqId();
|
|
171
|
+
this.#callbackPromises.set(key, promiseHandler);
|
|
172
|
+
return key;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
export { MessageManager };
|
|
177
|
+
//# sourceMappingURL=controller.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller.mjs","sources":["../../../../src/frame/message/controller.ts"],"sourcesContent":["import type { MessageCommands } from './commands'\nimport type { AppFrame } from '../frame'\nimport type { LoggerInterface } from '../../logger'\nimport { LoggerFactory } from '../../logger'\nimport { Type } from '../../tools/type'\nimport { Text } from '../../tools/text'\nimport { omit } from '../../tools'\n\ninterface PromiseHandlers {\n resolve: (value: any) => void\n reject: (reason?: any) => void\n timeoutId: any\n}\n\n/**\n * Parent Window Request Parameters\n * @prop isRawValue if true then JSON.stringify will not be executed\n * @prop isSafely auto completion mode Promise.resolve()\n * @prop safelyTime after what time (900 ms) should it be automatically resolved Promise\n * @prop callBack for placement event\n */\nexport interface SendParams {\n [index: string]: any\n\n isRawValue?: boolean\n isSafely?: boolean\n safelyTime?: number\n callBack?: (...args: any[]) => void\n}\n\n/**\n * Parent Window Communication Manager at B24\n */\nexport class MessageManager {\n #appFrame: AppFrame\n #callbackPromises: Map<string, PromiseHandlers>\n #callbackSingletone: Map<string, (...args: any[]) => void>\n\n protected _logger: LoggerInterface\n\n private readonly runCallbackHandler: OmitThisParameter<(event: MessageEvent) => void>\n\n constructor(appFrame: AppFrame) {\n this._logger = LoggerFactory.createNullLogger()\n this.#appFrame = appFrame\n\n this.#callbackPromises = new Map()\n this.#callbackSingletone = new Map()\n\n this.runCallbackHandler = this._runCallback.bind(this)\n }\n\n setLogger(logger: LoggerInterface): void {\n this._logger = logger\n }\n\n getLogger(): LoggerInterface {\n return this._logger\n }\n\n // region Events ////\n /**\n * Subscribe to the onMessage event of the parent window\n */\n subscribe() {\n window.addEventListener('message', this.runCallbackHandler)\n }\n\n /**\n * Unsubscribe from the onMessage event of the parent window\n */\n unsubscribe(): void {\n window.removeEventListener('message', this.runCallbackHandler)\n }\n\n // endregion ////\n\n /**\n * Send message to parent window\n * The answer (if) we will get in _runCallback\n *\n * @param command\n * @param params\n */\n async send(\n command: string | MessageCommands,\n params: null | SendParams = null\n ): Promise<any> {\n return new Promise((resolve, reject) => {\n let cmd: string | object\n const promiseHandler: PromiseHandlers = {\n resolve,\n reject,\n timeoutId: null\n }\n\n const keyPromise = this.#setCallbackPromise(promiseHandler)\n let paramsSend: null | string | Record<string, any> = null\n\n const optionsSend = omit(params || {}, ['singleOption', 'callBack', 'isSafely', 'safelyTime'])\n const { callBack, singleOption } = params || {}\n if (callBack) {\n this.#callbackSingletone.set(keyPromise, callBack)\n }\n\n if (singleOption) {\n paramsSend = singleOption\n } else if (Object.keys(optionsSend).length > 0) {\n paramsSend = { ...optionsSend }\n }\n\n if (command.toString().includes(':')) {\n cmd = {\n method: command.toString(),\n params: paramsSend || '',\n callback: keyPromise,\n appSid: this.#appFrame.getAppSid()\n }\n } else {\n /**\n * @memo: delete it after rest 22.0.0\n */\n cmd = command.toString()\n\n if (\n params?.isRawValue !== true\n && paramsSend\n ) {\n paramsSend = JSON.stringify(paramsSend)\n } else if (\n params?.isRawValue === true\n && paramsSend\n && Type.isPlainObject(paramsSend)\n && paramsSend['value']\n ) {\n paramsSend = paramsSend['value']\n }\n\n const listParams = [\n paramsSend || '',\n keyPromise,\n this.#appFrame.getAppSid()\n ]\n\n cmd += ':' + listParams.filter(Boolean).join(':')\n }\n\n this.getLogger().debug(`send to ${this.#appFrame.getTargetOrigin()}`, {\n cmd,\n origin: this.#appFrame.getTargetOrigin()\n })\n\n parent.postMessage(cmd, this.#appFrame.getTargetOrigin())\n\n if (params?.isSafely) {\n const safelyTime = Number.parseInt(String(params?.safelyTime || 900))\n this.#callbackPromises.get(keyPromise)!.timeoutId = window.setTimeout(\n () => {\n if (this.#callbackPromises.has(keyPromise)) {\n this.getLogger().warning(`action ${command.toString()} stop by timeout`, {\n command: command.toString(),\n safelyTime\n })\n\n this.#callbackPromises.delete(keyPromise)\n resolve({ isSafely: true })\n }\n },\n safelyTime\n )\n }\n })\n }\n\n /**\n * Fulfilling a promise based on messages from the parent window\n *\n * @param event\n * @private\n */\n public _runCallback(event: MessageEvent): void {\n if (event.origin !== this.#appFrame.getTargetOrigin()) {\n return\n }\n\n if (event.data) {\n this.getLogger().debug(`get from ${event.origin}`, {\n data: event.data,\n origin: event.origin\n })\n\n const tmp = event.data.split(':')\n\n const cmd: { id: string, args: any } = {\n id: tmp[0],\n args: tmp.slice(1).join(':')\n }\n\n if (cmd.args) {\n cmd.args = JSON.parse(cmd.args)\n }\n\n if (this.#callbackPromises.has(cmd.id)) {\n const promise = this.#callbackPromises.get(cmd.id) as PromiseHandlers\n if (promise.timeoutId) {\n clearTimeout(promise.timeoutId)\n }\n\n this.#callbackPromises.delete(cmd.id)\n\n promise.resolve(cmd.args)\n // promise.reject(cmd.args) ////\n } else if (this.#callbackSingletone.has(cmd.id)) {\n const callBack = this.#callbackSingletone.get(cmd.id) as (...args: any[]) => void\n if (callBack) {\n callBack.apply(globalThis, [cmd.args])\n }\n }\n }\n }\n\n /**\n * Storing a promise for a message from the parent window\n *\n * @param promiseHandler\n * @private\n *\n * @memo We don't use Symbol here, because we need to pass it to the parent and then find and restore it.\n */\n #setCallbackPromise(promiseHandler: PromiseHandlers): string {\n const key = Text.getUniqId()\n this.#callbackPromises.set(key, promiseHandler)\n return key\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @package @bitrix24/b24jssdk
|
|
3
|
+
* @version 1.0.1
|
|
4
|
+
* @copyright (c) 2026 Bitrix24
|
|
5
|
+
* @license MIT
|
|
6
|
+
* @see https://github.com/bitrix24/b24jssdk
|
|
7
|
+
* @see https://bitrix24.github.io/b24jssdk/
|
|
8
|
+
*/
|
|
9
|
+
import { MessageCommands } from './message/commands.mjs';
|
|
10
|
+
|
|
11
|
+
var __defProp = Object.defineProperty;
|
|
12
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
13
|
+
class OptionsManager {
|
|
14
|
+
static {
|
|
15
|
+
__name(this, "OptionsManager");
|
|
16
|
+
}
|
|
17
|
+
#messageManager;
|
|
18
|
+
#appOptions = null;
|
|
19
|
+
#userOptions = null;
|
|
20
|
+
constructor(messageManager) {
|
|
21
|
+
this.#messageManager = messageManager;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Initializes the data received from the parent window message.
|
|
25
|
+
* @param data
|
|
26
|
+
*/
|
|
27
|
+
initData(data) {
|
|
28
|
+
if (data.APP_OPTIONS) {
|
|
29
|
+
this.#appOptions = data.APP_OPTIONS;
|
|
30
|
+
}
|
|
31
|
+
if (data.USER_OPTIONS) {
|
|
32
|
+
this.#userOptions = data.USER_OPTIONS;
|
|
33
|
+
}
|
|
34
|
+
return this;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Getting application option
|
|
38
|
+
*
|
|
39
|
+
* @link https://apidocs.bitrix24.com/sdk/bx24-js-sdk/options/bx24-app-option-get.html
|
|
40
|
+
*/
|
|
41
|
+
appGet(option) {
|
|
42
|
+
if (this.#appOptions && !!this.#appOptions[option]) {
|
|
43
|
+
return this.#appOptions[option];
|
|
44
|
+
}
|
|
45
|
+
throw new Error(`app.option.${option} not set`);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Updates application data through the parent window
|
|
49
|
+
*
|
|
50
|
+
* @link https://apidocs.bitrix24.com/sdk/bx24-js-sdk/options/bx24-app-option-set.html
|
|
51
|
+
*/
|
|
52
|
+
async appSet(option, value) {
|
|
53
|
+
if (!this.#appOptions) {
|
|
54
|
+
this.#appOptions = [];
|
|
55
|
+
}
|
|
56
|
+
this.#appOptions[option] = value;
|
|
57
|
+
return this.#sendParentMessage(
|
|
58
|
+
MessageCommands.setAppOption,
|
|
59
|
+
option,
|
|
60
|
+
this.#appOptions[option]
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Getting user option
|
|
65
|
+
*
|
|
66
|
+
* @link https://apidocs.bitrix24.com/sdk/bx24-js-sdk/options/bx24-user-option-get.html
|
|
67
|
+
*/
|
|
68
|
+
userGet(option) {
|
|
69
|
+
if (this.#userOptions && !!this.#userOptions[option]) {
|
|
70
|
+
return this.#userOptions[option];
|
|
71
|
+
}
|
|
72
|
+
throw new Error(`user.option.${option} not set`);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Updates user data through the parent window
|
|
76
|
+
*
|
|
77
|
+
* @link https://apidocs.bitrix24.com/sdk/bx24-js-sdk/options/bx24-user-option-set.html
|
|
78
|
+
*/
|
|
79
|
+
async userSet(option, value) {
|
|
80
|
+
if (!this.#appOptions) {
|
|
81
|
+
this.#appOptions = [];
|
|
82
|
+
}
|
|
83
|
+
if (!this.#appOptions[option]) {
|
|
84
|
+
this.#appOptions[option] = null;
|
|
85
|
+
}
|
|
86
|
+
this.#userOptions[option] = value;
|
|
87
|
+
return this.#sendParentMessage(
|
|
88
|
+
MessageCommands.setUserOption,
|
|
89
|
+
option,
|
|
90
|
+
// @ts-expect-error this code work success
|
|
91
|
+
this.#userOptions[option]
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
async #sendParentMessage(command, option, value) {
|
|
95
|
+
return this.#messageManager.send(command, {
|
|
96
|
+
name: option,
|
|
97
|
+
value,
|
|
98
|
+
isSafely: true
|
|
99
|
+
}).then(() => {
|
|
100
|
+
return Promise.resolve();
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export { OptionsManager };
|
|
106
|
+
//# sourceMappingURL=options.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.mjs","sources":["../../../src/frame/options.ts"],"sourcesContent":["import type { MessageManager } from './message'\nimport { MessageCommands } from './message'\nimport type { MessageInitData } from '../types/auth'\n\n/**\n * Manager for working with application settings via communication with the parent window\n *\n * @link https://apidocs.bitrix24.com/sdk/bx24-js-sdk/options/index.html\n */\nexport class OptionsManager {\n #messageManager: MessageManager\n #appOptions: null | Record<string, any> = null\n #userOptions: null | Record<string, any> = null\n\n constructor(messageManager: MessageManager) {\n this.#messageManager = messageManager\n }\n\n /**\n * Initializes the data received from the parent window message.\n * @param data\n */\n initData(data: MessageInitData): OptionsManager {\n if (data.APP_OPTIONS) {\n this.#appOptions = data.APP_OPTIONS as Record<string, any>\n }\n\n if (data.USER_OPTIONS) {\n this.#userOptions = data.USER_OPTIONS as Record<string, any>\n }\n\n return this\n }\n\n /**\n * Getting application option\n *\n * @link https://apidocs.bitrix24.com/sdk/bx24-js-sdk/options/bx24-app-option-get.html\n */\n appGet(option: string): any {\n if (this.#appOptions && !!this.#appOptions[option]) {\n return this.#appOptions[option]\n }\n\n throw new Error(`app.option.${option} not set`)\n }\n\n /**\n * Updates application data through the parent window\n *\n * @link https://apidocs.bitrix24.com/sdk/bx24-js-sdk/options/bx24-app-option-set.html\n */\n async appSet(option: string, value: any): Promise<void> {\n if (!this.#appOptions) {\n this.#appOptions = []\n }\n\n this.#appOptions[option] = value\n\n return this.#sendParentMessage(\n MessageCommands.setAppOption,\n option,\n this.#appOptions[option]\n )\n }\n\n /**\n * Getting user option\n *\n * @link https://apidocs.bitrix24.com/sdk/bx24-js-sdk/options/bx24-user-option-get.html\n */\n userGet(option: string): any {\n if (this.#userOptions && !!this.#userOptions[option]) {\n return this.#userOptions[option]\n }\n\n throw new Error(`user.option.${option} not set`)\n }\n\n /**\n * Updates user data through the parent window\n *\n * @link https://apidocs.bitrix24.com/sdk/bx24-js-sdk/options/bx24-user-option-set.html\n */\n async userSet(option: string, value: any): Promise<void> {\n if (!this.#appOptions) {\n this.#appOptions = []\n }\n\n if (!this.#appOptions[option]) {\n this.#appOptions[option] = null\n }\n\n // @ts-expect-error this code work success\n this.#userOptions[option] = value\n\n return this.#sendParentMessage(\n MessageCommands.setUserOption,\n option,\n // @ts-expect-error this code work success\n this.#userOptions[option]\n )\n }\n\n async #sendParentMessage(\n command: string,\n option: string,\n value: any\n ): Promise<void> {\n return this.#messageManager\n .send(command, {\n name: option,\n value: value,\n isSafely: true\n })\n .then(() => {\n return Promise.resolve()\n })\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AASO,MAAM,cAAA,CAAe;AAAA,EAT5B;AAS4B,IAAA,MAAA,CAAA,IAAA,EAAA,gBAAA,CAAA;AAAA;AAAA,EAC1B,eAAA;AAAA,EACA,WAAA,GAA0C,IAAA;AAAA,EAC1C,YAAA,GAA2C,IAAA;AAAA,EAE3C,YAAY,cAAA,EAAgC;AAC1C,IAAA,IAAA,CAAK,eAAA,GAAkB,cAAA;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAS,IAAA,EAAuC;AAC9C,IAAA,IAAI,KAAK,WAAA,EAAa;AACpB,MAAA,IAAA,CAAK,cAAc,IAAA,CAAK,WAAA;AAAA,IAC1B;AAEA,IAAA,IAAI,KAAK,YAAA,EAAc;AACrB,MAAA,IAAA,CAAK,eAAe,IAAA,CAAK,YAAA;AAAA,IAC3B;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,MAAA,EAAqB;AAC1B,IAAA,IAAI,KAAK,WAAA,IAAe,CAAC,CAAC,IAAA,CAAK,WAAA,CAAY,MAAM,CAAA,EAAG;AAClD,MAAA,OAAO,IAAA,CAAK,YAAY,MAAM,CAAA;AAAA,IAChC;AAEA,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,WAAA,EAAc,MAAM,CAAA,QAAA,CAAU,CAAA;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,MAAA,CAAO,MAAA,EAAgB,KAAA,EAA2B;AACtD,IAAA,IAAI,CAAC,KAAK,WAAA,EAAa;AACrB,MAAA,IAAA,CAAK,cAAc,EAAC;AAAA,IACtB;AAEA,IAAA,IAAA,CAAK,WAAA,CAAY,MAAM,CAAA,GAAI,KAAA;AAE3B,IAAA,OAAO,IAAA,CAAK,kBAAA;AAAA,MACV,eAAA,CAAgB,YAAA;AAAA,MAChB,MAAA;AAAA,MACA,IAAA,CAAK,YAAY,MAAM;AAAA,KACzB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,QAAQ,MAAA,EAAqB;AAC3B,IAAA,IAAI,KAAK,YAAA,IAAgB,CAAC,CAAC,IAAA,CAAK,YAAA,CAAa,MAAM,CAAA,EAAG;AACpD,MAAA,OAAO,IAAA,CAAK,aAAa,MAAM,CAAA;AAAA,IACjC;AAEA,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,YAAA,EAAe,MAAM,CAAA,QAAA,CAAU,CAAA;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,OAAA,CAAQ,MAAA,EAAgB,KAAA,EAA2B;AACvD,IAAA,IAAI,CAAC,KAAK,WAAA,EAAa;AACrB,MAAA,IAAA,CAAK,cAAc,EAAC;AAAA,IACtB;AAEA,IAAA,IAAI,CAAC,IAAA,CAAK,WAAA,CAAY,MAAM,CAAA,EAAG;AAC7B,MAAA,IAAA,CAAK,WAAA,CAAY,MAAM,CAAA,GAAI,IAAA;AAAA,IAC7B;AAGA,IAAA,IAAA,CAAK,YAAA,CAAa,MAAM,CAAA,GAAI,KAAA;AAE5B,IAAA,OAAO,IAAA,CAAK,kBAAA;AAAA,MACV,eAAA,CAAgB,aAAA;AAAA,MAChB,MAAA;AAAA;AAAA,MAEA,IAAA,CAAK,aAAa,MAAM;AAAA,KAC1B;AAAA,EACF;AAAA,EAEA,MAAM,kBAAA,CACJ,OAAA,EACA,MAAA,EACA,KAAA,EACe;AACf,IAAA,OAAO,IAAA,CAAK,eAAA,CACT,IAAA,CAAK,OAAA,EAAS;AAAA,MACb,IAAA,EAAM,MAAA;AAAA,MACN,KAAA;AAAA,MACA,QAAA,EAAU;AAAA,KACX,CAAA,CACA,IAAA,CAAK,MAAM;AACV,MAAA,OAAO,QAAQ,OAAA,EAAQ;AAAA,IACzB,CAAC,CAAA;AAAA,EACL;AACF;;;;"}
|