403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/pull/client/dist/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/pull/client/dist/pull.client.js.map
{"version":3,"file":"pull.client.js","sources":["../src/consts.js","../../util/src/util.js","../src/emitter.js","../../jsonrpc/src/errors/notconnected.js","../../jsonrpc/src/errors/timeout.js","../../jsonrpc/src/jsonrpc.js","../src/workerconnector.js","../../minirest/src/minirest.js","../src/tagwatcher.js","../src/storage.js","../src/client.js","../src/index.js"],"sourcesContent":["export const REVISION = 19; // api revision - check module/pull/include.php\n\nexport const ConnectionType = {\n\tWebSocket: 'webSocket',\n\tLongPolling: 'longPolling',\n};\n\nexport const PullStatus = {\n\tOnline: 'online',\n\tOffline: 'offline',\n\tConnecting: 'connect',\n};\n\nexport const SenderType = {\n\tUnknown: 0,\n\tClient: 1,\n\tBackend: 2,\n};\n\nexport const SubscriptionType = {\n\tServer: 'server',\n\tClient: 'client',\n\tOnline: 'online',\n\tStatus: 'status',\n\tRevision: 'revision',\n};\n\nexport const CloseReasons = {\n\tNORMAL_CLOSURE: 1000,\n\tSERVER_DIE: 1001,\n\tCONFIG_REPLACED: 3000,\n\tCHANNEL_EXPIRED: 3001,\n\tSERVER_RESTARTED: 3002,\n\tCONFIG_EXPIRED: 3003,\n\tMANUAL: 3004,\n\tSTUCK: 3005,\n\tBACKEND_ERROR: 3006,\n\tWRONG_CHANNEL_ID: 4010,\n};\n\nexport const SystemCommands = {\n\tCHANNEL_EXPIRE: 'CHANNEL_EXPIRE',\n\tCONFIG_EXPIRE: 'CONFIG_EXPIRE',\n\tSERVER_RESTART: 'SERVER_RESTART',\n};\n\nexport const ServerMode = {\n\tShared: 'shared',\n\tPersonal: 'personal',\n};\n\nexport const RpcMethod = {\n\tPublish: 'publish',\n\tGetUsersLastSeen: 'getUsersLastSeen',\n\tPing: 'ping',\n\tListChannels: 'listChannels',\n\tSubscribeStatusChange: 'subscribeStatusChange',\n\tUnsubscribeStatusChange: 'unsubscribeStatusChange',\n};\n","/* eslint-disable @bitrix24/bitrix24-rules/no-typeof */\n\nexport const browser = {\n\tIsChrome(): boolean\n\t{\n\t\treturn navigator.userAgent.toLowerCase().includes('chrome');\n\t},\n\n\tIsFirefox(): boolean\n\t{\n\t\treturn navigator.userAgent.toLowerCase().includes('firefox');\n\t},\n\n\tIsIe(): boolean\n\t{\n\t\treturn navigator.userAgent.match(/(Trident\\/|MSIE\\/)/) !== null;\n\t},\n};\n\nexport function getTimestamp(): number\n{\n\treturn Date.now();\n}\n\n/**\n * Reduces errors array to single string.\n * @param {array} errors\n * @return {string}\n */\nexport function errorsToString(errors): string\n{\n\tif (!isArray(errors))\n\t{\n\t\treturn '';\n\t}\n\n\treturn errors.reduce((accum, currentValue) => {\n\t\tconst result = accum === '' ? accum : `${accum}; `;\n\n\t\treturn `${result + currentValue.code}: ${currentValue.message}`;\n\t}, '');\n}\n\nexport function isString(item): boolean\n{\n\treturn item === '' ? true : (item ? (typeof (item) === 'string' || item instanceof String) : false);\n}\n\nexport function isArray(item): boolean\n{\n\treturn item && Object.prototype.toString.call(item) === '[object Array]';\n}\n\nexport function isFunction(item): boolean\n{\n\treturn item === null ? false : (typeof (item) === 'function' || item instanceof Function);\n}\n\nexport function getFunction(f: Function): Function\n{\n\treturn isFunction(f) ? f : function() {};\n}\n\nexport function isDomNode(item): boolean\n{\n\treturn item && typeof (item) === 'object' && 'nodeType' in item;\n}\n\nexport function isDate(item): boolean\n{\n\treturn item && Object.prototype.toString.call(item) === '[object Date]';\n}\n\nexport function isNumber(item): boolean\n{\n\treturn typeof item === 'number' && Number.isFinite(item);\n}\n\nexport function isObject(item): boolean\n{\n\treturn Boolean(item) && typeof item === 'object';\n}\n\nexport function isPlainObject(item): boolean\n{\n\treturn Boolean(item) && typeof item === 'object' && item.constructor === Object;\n}\n\nexport function isNotEmptyString(item): boolean\n{\n\treturn isString(item) ? item.length > 0 : false;\n}\n\nexport function isJsonRpcRequest(item): boolean\n{\n\treturn (\n\t\ttypeof (item) === 'object'\n\t\t&& item\n\t\t&& 'jsonrpc' in item\n\t\t&& isNotEmptyString(item.jsonrpc)\n\t\t&& 'method' in item\n\t\t&& isNotEmptyString(item.method)\n\t);\n}\n\nexport function isJsonRpcResponse(item): boolean\n{\n\treturn (\n\t\ttypeof (item) === 'object'\n\t\t&& item\n\t\t&& 'jsonrpc' in item\n\t\t&& isNotEmptyString(item.jsonrpc)\n\t\t&& 'id' in item\n\t\t&& (\n\t\t\t'result' in item\n\t\t\t|| 'error' in item\n\t\t)\n\t);\n}\n\nexport function buildQueryString(params: Object): string\n{\n\tlet result = '';\n\tfor (const key of Object.keys(params))\n\t{\n\t\tconst value = params[key];\n\t\tif (isArray(value))\n\t\t{\n\t\t\tfor (const [index, valueElement] of value.entries())\n\t\t\t{\n\t\t\t\tconst left = encodeURIComponent(`${key}[${index}]`);\n\t\t\t\tconst right = `${encodeURIComponent(valueElement)}&`;\n\t\t\t\tresult += `${left}=${right}`;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tresult += `${encodeURIComponent(key)}=${encodeURIComponent(value)}&`;\n\t\t}\n\t}\n\n\tif (result.length > 0)\n\t{\n\t\tresult = result.slice(0, Math.max(0, result.length - 1));\n\t}\n\n\treturn result;\n}\n\nexport function clone(obj: any, bCopyObj = true): any\n{\n\tlet _obj, i, l;\n\n\tif (obj === null)\n\t{\n\t\treturn null;\n\t}\n\n\tif (isDomNode(obj))\n\t{\n\t\t_obj = obj.cloneNode(bCopyObj);\n\t}\n\telse if (typeof obj === 'object')\n\t{\n\t\tif (isArray(obj))\n\t\t{\n\t\t\t_obj = [];\n\t\t\tfor (i = 0, l = obj.length; i < l; i++)\n\t\t\t{\n\t\t\t\tif (typeof obj[i] === 'object' && bCopyObj)\n\t\t\t\t{\n\t\t\t\t\t_obj[i] = clone(obj[i], bCopyObj);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t_obj[i] = obj[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_obj = {};\n\t\t\tif (obj.constructor)\n\t\t\t{\n\t\t\t\tif (isDate(obj))\n\t\t\t\t{\n\t\t\t\t\t_obj = new Date(obj);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t_obj = new obj.constructor();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (i in obj)\n\t\t\t{\n\t\t\t\tif (!obj.hasOwnProperty(i))\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (typeof obj[i] === 'object' && bCopyObj)\n\t\t\t\t{\n\t\t\t\t\t_obj[i] = clone(obj[i], bCopyObj);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t_obj[i] = obj[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\telse\n\t{\n\t\t_obj = obj;\n\t}\n\n\treturn _obj;\n}\n\nexport function getDateForLog(): string\n{\n\tconst d = new Date();\n\n\treturn `${d.getFullYear()}-${lpad(d.getMonth(), 2, '0')}-${lpad(d.getDate(), 2, '0')} ${lpad(d.getHours(), 2, '0')}:${lpad(d.getMinutes(), 2, '0')}`;\n}\n\nexport function lpad(str: string, length, chr = ' '): string\n{\n\tif (str.length > length)\n\t{\n\t\treturn str;\n\t}\n\n\tlet result = '';\n\tfor (let i = 0; i < length - result.length; i++)\n\t{\n\t\tresult += chr;\n\t}\n\n\treturn result + str;\n}\n\nexport function isWebSocketSupported(): boolean\n{\n\treturn typeof 'WebSocket' !== 'undefined';\n}\n\nexport class CircularBuffer<T>\n{\n\tstorage: T[];\n\tcapacity: number;\n\tpointer = 0;\n\n\tconstructor(capacity: number)\n\t{\n\t\tif (capacity <= 0)\n\t\t{\n\t\t\tthrow new Error('capacity must be > 0');\n\t\t}\n\n\t\tthis.capacity = capacity;\n\t\tthis.storage = [];\n\t}\n\n\tpush(element: T)\n\t{\n\t\tthis.storage[this.pointer] = element;\n\t\tthis.pointer++;\n\t\tif (this.pointer >= this.capacity)\n\t\t{\n\t\t\tthis.pointer = 0;\n\t\t}\n\t}\n\n\tgetAll(): T[]\n\t{\n\t\tif (this.pointer === 0)\n\t\t{\n\t\t\treturn this.storage;\n\t\t}\n\n\t\treturn [...this.storage.slice(this.pointer), ...this.storage.slice(0, this.pointer)];\n\t}\n}\n","/* eslint-disable @bitrix24/bitrix24-rules/no-typeof */\n/* eslint-disable @bitrix24/bitrix24-rules/no-bx */\n/* eslint-disable @bitrix24/bitrix24-rules/no-bx-message */\n// noinspection JSUnusedAssignment\n\nimport { clone, isArray, isFunction, isNotEmptyString, isObject, isPlainObject } from 'pull.util';\nimport { SenderType, SubscriptionType } from './consts';\n\ninterface Logger\n{\n\tlog(message: string, ...params): void\n}\n\ntype PullEvent = {\n\tmodule_id: string,\n\tcommand: string,\n\tparams: Object,\n\textra: ?EventExtraFields\n}\n\ntype InternalEvent = {\n\ttype: $Values<typeof SubscriptionType>,\n\tmoduleId: string,\n\tdata: CallbackData,\n}\n\ntype CallbackData = {\n\tcommand: string,\n\tparams: Object,\n\textra: ?EventExtraFields\n}\n\ntype EmitterOptions = {\n\tlogger: ?Logger,\n}\n\ntype EventExtraFields = {\n\tsender: Sender\n}\n\ntype Sender = {\n\ttype: $Values<typeof SenderType>,\n}\n\ntype SubscriptionParams = {\n\t// Subscription type (for possible values @see SubscriptionType); SubscriptionType.Server by default\n\ttype: ?string,\n\t// Name of the module.\n\tmoduleId: string,\n\t// Command to be subscribed to\n\tcommand: string,\n\t// Function, that will be called for incoming messages.\n\tcallback: HandlerFunc\n}\n\nexport type HandlerFunc = (params: Object, extra: Object, command: string) => void;\n\nexport type Handler = {\n\tgetSubscriptionType: ? () => string,\n\tgetModuleId: ? () => string,\n\tgetMap: ? () => { [string]: HandlerFunc },\n}\n\nexport class Emitter\n{\n\t#subscribers = {};\n\t#logger: Logger;\n\n\tdebug = false;\n\tuserStatusCallbacks = {}; // [userId] => array of callbacks\n\n\tconstructor(options: EmitterOptions = {})\n\t{\n\t\tthis.#logger = options.logger;\n\t}\n\n\t/**\n\t * Creates a subscription to incoming messages.\n\t *\n\t * @returns {Function} - Unsubscribe callback function\n\t */\n\tsubscribe(params: SubscriptionParams): () => void\n\t{\n\t\t/**\n\t\t * After modify this method, copy to follow scripts:\n\t\t * mobile/install/mobileapp/mobile/extensions/bitrix/pull/client/events/extension.js\n\t\t * mobile/install/js/mobile/pull/client/src/client.js\n\t\t */\n\n\t\tif (!isObject(params))\n\t\t{\n\t\t\tthrow new TypeError('params must be an object');\n\t\t}\n\n\t\tif (!isPlainObject(params))\n\t\t{\n\t\t\treturn this.attachCommandHandler(params);\n\t\t}\n\n\t\tconst { command, moduleId, callback, type = SubscriptionType.Server } = params;\n\n\t\tif (type === SubscriptionType.Server || type === SubscriptionType.Client)\n\t\t{\n\t\t\tif (typeof (this.#subscribers[type]) === 'undefined')\n\t\t\t{\n\t\t\t\tthis.#subscribers[type] = {};\n\t\t\t}\n\n\t\t\tif (typeof (this.#subscribers[type][moduleId]) === 'undefined')\n\t\t\t{\n\t\t\t\tthis.#subscribers[type][moduleId] = {\n\t\t\t\t\tcallbacks: [],\n\t\t\t\t\tcommands: {},\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (command)\n\t\t\t{\n\t\t\t\tif (!isArray(this.#subscribers[type][moduleId].commands[command]))\n\t\t\t\t{\n\t\t\t\t\tthis.#subscribers[type][moduleId].commands[command] = [];\n\t\t\t\t}\n\n\t\t\t\tthis.#subscribers[type][moduleId].commands[command].push(callback);\n\n\t\t\t\treturn () => {\n\t\t\t\t\t// eslint-disable-next-line max-len\n\t\t\t\t\tthis.#subscribers[type][moduleId].commands[command] = this.#subscribers[type][moduleId].commands[command].filter((element) => {\n\t\t\t\t\t\treturn element !== callback;\n\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tthis.#subscribers[type][moduleId].callbacks.push(callback);\n\n\t\t\treturn () => {\n\t\t\t\tthis.#subscribers[type][moduleId].callbacks = this.#subscribers[type][moduleId].callbacks.filter((element) => {\n\t\t\t\t\treturn element !== callback;\n\t\t\t\t});\n\t\t\t};\n\t\t}\n\n\t\tif (typeof (this.#subscribers[type]) === 'undefined')\n\t\t{\n\t\t\tthis.#subscribers[type] = [];\n\t\t}\n\n\t\tthis.#subscribers[type].push(callback);\n\n\t\treturn () => {\n\t\t\tthis.#subscribers[type] = this.#subscribers[type].filter((element) => {\n\t\t\t\treturn element !== callback;\n\t\t\t});\n\t\t};\n\t}\n\n\t/*\n\t Subscribes provided handler to pull events.\n\t @return {() => void} Returns function, that can be called to unsubscribe the handler.\n\t */\n\tattachCommandHandler(handler: Handler): () => void\n\t{\n\t\t/**\n\t\t * After modify this method, copy to follow scripts:\n\t\t * mobile/install/mobileapp/mobile/extensions/bitrix/pull/client/events/extension.js\n\t\t */\n\t\tconst moduleId = isFunction(handler.getModuleId) ? handler.getModuleId() : '';\n\t\tif (!isNotEmptyString(moduleId))\n\t\t{\n\t\t\tthrow new TypeError('handler.getModuleId() must return a string');\n\t\t}\n\n\t\tlet type = SubscriptionType.Server;\n\t\tif (isFunction(handler.getSubscriptionType))\n\t\t{\n\t\t\ttype = handler.getSubscriptionType();\n\t\t\tif (!Object.values(SubscriptionType).includes(type))\n\t\t\t{\n\t\t\t\tthrow new Error('result of handler.getSubscriptionType() must return valid SubscriptionType element');\n\t\t\t}\n\t\t}\n\n\t\treturn this.subscribe({\n\t\t\ttype,\n\t\t\tmoduleId,\n\t\t\tcallback: (data: CallbackData) => {\n\t\t\t\tconst method = findHandlerMethod(handler, data.command);\n\n\t\t\t\tif (method)\n\t\t\t\t{\n\t\t\t\t\tlet loggableData = '';\n\t\t\t\t\ttry\n\t\t\t\t\t{\n\t\t\t\t\t\tloggableData = JSON.stringify(data);\n\t\t\t\t\t}\n\t\t\t\t\tcatch\n\t\t\t\t\t{\n\t\t\t\t\t\tloggableData = '(contains circular references)';\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.#logger?.log(`Pull.attachCommandHandler: receive command ${loggableData}`);\n\t\t\t\t\tmethod(data.params, data.extra, data.command);\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t *\n\t * @param params {Object}\n\t * @returns {boolean}\n\t */\n\temit(params: InternalEvent = {}): boolean\n\t{\n\t\t/**\n\t\t * After modify this method, copy to follow scripts:\n\t\t * mobile/install/mobileapp/mobile/extensions/bitrix/pull/client/events/extension.js\n\t\t * mobile/install/js/mobile/pull/client/src/client.js\n\t\t */\n\t\tif (params.type === SubscriptionType.Server || params.type === SubscriptionType.Client)\n\t\t{\n\t\t\tif (typeof (this.#subscribers[params.type]) === 'undefined')\n\t\t\t{\n\t\t\t\tthis.#subscribers[params.type] = {};\n\t\t\t}\n\n\t\t\tif (typeof (this.#subscribers[params.type][params.moduleId]) === 'undefined')\n\t\t\t{\n\t\t\t\tthis.#subscribers[params.type][params.moduleId] = {\n\t\t\t\t\tcallbacks: [],\n\t\t\t\t\tcommands: {},\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.#subscribers[params.type][params.moduleId].callbacks.length > 0)\n\t\t\t{\n\t\t\t\tthis.#subscribers[params.type][params.moduleId].callbacks.forEach((callback) => {\n\t\t\t\t\tcallback(params.data, { type: params.type, moduleId: params.moduleId });\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tthis.#subscribers[params.type][params.moduleId].commands[params.data.command]\n\t\t\t\t&& this.#subscribers[params.type][params.moduleId].commands[params.data.command].length > 0)\n\t\t\t{\n\t\t\t\tthis.#subscribers[params.type][params.moduleId].commands[params.data.command].forEach((callback) => {\n\t\t\t\t\tcallback(params.data.params, params.data.extra, params.data.command, {\n\t\t\t\t\t\ttype: params.type,\n\t\t\t\t\t\tmoduleId: params.moduleId,\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\tif (typeof (this.#subscribers[params.type]) === 'undefined')\n\t\t{\n\t\t\tthis.#subscribers[params.type] = [];\n\t\t}\n\n\t\tif (this.#subscribers[params.type].length <= 0)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.#subscribers[params.type].forEach((callback) => {\n\t\t\tcallback(params.data, { type: params.type });\n\t\t});\n\n\t\treturn true;\n\t}\n\n\tbroadcastMessage(message: PullEvent)\n\t{\n\t\tconst moduleId = message.module_id.toLowerCase();\n\t\tconst command = message.command;\n\t\tconst params = message.params;\n\t\tconst extra = message.extra ?? {};\n\n\t\tthis.logMessage(message);\n\t\ttry\n\t\t{\n\t\t\tif (extra.sender && extra.sender.type === SenderType.Client)\n\t\t\t{\n\t\t\t\tthis.emitClientEvent(moduleId, command, clone(params), clone(extra));\n\t\t\t}\n\t\t\telse if (moduleId === 'online')\n\t\t\t{\n\t\t\t\tif (extra.server_time_ago < 240)\n\t\t\t\t{\n\t\t\t\t\tthis.emitOnlineEvent(moduleId, command, clone(params), clone(extra));\n\t\t\t\t}\n\n\t\t\t\tif (command === 'userStatusChange')\n\t\t\t\t{\n\t\t\t\t\tthis.emitUserStatusChange(params.user_id, params.online);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.emitServerEvent(moduleId, command, clone(params), clone(extra));\n\t\t\t}\n\t\t}\n\t\tcatch (e)\n\t\t{\n\t\t\tif (typeof (console) === 'object')\n\t\t\t{\n\t\t\t\tconsole.error('\\n========= PULL ERROR ===========\\n'\n\t\t\t\t\t+ 'Error type: broadcastMessages execute error\\n'\n\t\t\t\t\t+ 'Error event: ', e, '\\n'\n\t\t\t\t\t+ 'Message: ', message, '\\n'\n\t\t\t\t\t+ '================================\\n');\n\t\t\t\tif (isFunction(BX.debug))\n\t\t\t\t{\n\t\t\t\t\tBX.debug(e);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\temitServerEvent(moduleId: string, command: string, params: any, extra: any)\n\t{\n\t\tif ('BX' in globalThis && isFunction(BX.onCustomEvent))\n\t\t{\n\t\t\tBX.onCustomEvent(window, `onPullEvent-${moduleId}`, [command, params, extra], true);\n\t\t\tBX.onCustomEvent(window, 'onPullEvent', [moduleId, command, params, extra], true);\n\t\t}\n\n\t\tthis.emit({ type: SubscriptionType.Server, moduleId, data: { command, params, extra } });\n\t}\n\n\temitClientEvent(moduleId: string, command: string, params: any, extra: any)\n\t{\n\t\tif (isFunction(BX.onCustomEvent))\n\t\t{\n\t\t\tBX.onCustomEvent(window, `onPullClientEvent-${moduleId}`, [command, params, extra], true);\n\t\t\tBX.onCustomEvent(window, 'onPullClientEvent', [moduleId, command, params, extra], true);\n\t\t}\n\n\t\tthis.emit({ type: SubscriptionType.Client, moduleId, data: { command, params, extra } });\n\t}\n\n\temitOnlineEvent(moduleId: string, command: string, params: any, extra: any)\n\t{\n\t\tif (isFunction(BX.onCustomEvent))\n\t\t{\n\t\t\tBX.onCustomEvent(window, 'onPullOnlineEvent', [command, params, extra], true);\n\t\t}\n\n\t\tthis.emit({ type: SubscriptionType.Online, data: { command, params, extra } });\n\t}\n\n\taddUserStatusCallback(userId: number, callback: UserStatusCallback)\n\t{\n\t\tif (!this.userStatusCallbacks[userId])\n\t\t{\n\t\t\tthis.userStatusCallbacks[userId] = [];\n\t\t}\n\n\t\tif (isFunction(callback))\n\t\t{\n\t\t\tthis.userStatusCallbacks[userId].push(callback);\n\t\t}\n\t}\n\n\tremoveUserStatusCallback(userId: number, callback: UserStatusCallback)\n\t{\n\t\tif (this.userStatusCallbacks[userId])\n\t\t{\n\t\t\tthis.userStatusCallbacks[userId] = this.userStatusCallbacks[userId].filter((cb) => cb !== callback);\n\t\t}\n\t}\n\n\thasUserStatusCallbacks(userId: number): boolean\n\t{\n\t\treturn this.userStatusCallbacks[userId].length > 0;\n\t}\n\n\temitUserStatusChange(userId, isOnline)\n\t{\n\t\tif (this.userStatusCallbacks[userId])\n\t\t{\n\t\t\tthis.userStatusCallbacks[userId].forEach((cb) => cb({ userId, isOnline }));\n\t\t}\n\t}\n\n\tgetSubscribedUsersList(): number[]\n\t{\n\t\tconst result = [];\n\t\tfor (const userId of Object.keys(this.userStatusCallbacks))\n\t\t{\n\t\t\tif (this.userStatusCallbacks[userId].length > 0)\n\t\t\t{\n\t\t\t\tresult.push(Number(userId));\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tcapturePullEvent(debugFlag: boolean = true)\n\t{\n\t\tthis.debug = debugFlag;\n\t}\n\n\tlogMessage(message: PullEvent)\n\t{\n\t\tif (!this.debug)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (message.extra.sender && message.extra.sender.type === SenderType.Client)\n\t\t{\n\t\t\tconsole.info(`onPullClientEvent-${message.module_id}`, message.command, message.params, message.extra);\n\t\t}\n\t\telse if (message.module_id === 'online')\n\t\t{\n\t\t\tconsole.info('onPullOnlineEvent', message.command, message.params, message.extra);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconsole.info('onPullEvent', message.module_id, message.command, message.params, message.extra);\n\t\t}\n\t}\n}\n\nfunction findHandlerMethod(handler: Handler, command: string): HandlerFunc | null\n{\n\tlet method = null;\n\n\tif (isFunction(handler.getMap))\n\t{\n\t\tconst mapping = handler.getMap();\n\t\tif (isPlainObject(mapping))\n\t\t{\n\t\t\tif (isFunction(mapping[command]))\n\t\t\t{\n\t\t\t\tmethod = mapping[command].bind(handler);\n\t\t\t}\n\t\t\telse if (typeof mapping[command] === 'string' && isFunction(handler[mapping[command]]))\n\t\t\t{\n\t\t\t\tmethod = handler[mapping[command]].bind(handler);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!method)\n\t{\n\t\tconst methodName = getDefaultHandlerMethodName(command);\n\t\tif (isFunction(handler[methodName]))\n\t\t{\n\t\t\tmethod = handler[methodName].bind(handler);\n\t\t}\n\t}\n\n\treturn method;\n}\n\nfunction getDefaultHandlerMethodName(command: string): string\n{\n\treturn `handle${command.charAt(0).toUpperCase()}${command.slice(1)}`;\n}\n","export class ErrorNotConnected extends Error\n{\n\tconstructor(message)\n\t{\n\t\tsuper(message);\n\t\tthis.name = 'ErrorNotConnected';\n\t}\n}\n","export class ErrorTimeout extends Error\n{\n\tconstructor(message)\n\t{\n\t\tsuper(message);\n\t\tthis.name = 'ErrorTimeout';\n\t}\n}\n","import * as Utils from '../../util/src/util';\nimport { ErrorNotConnected } from './errors/notconnected';\nimport { ErrorTimeout } from './errors/timeout';\n\nconst JSON_RPC_VERSION = '2.0';\n\nexport interface JsonRpcRequest\n{\n\tjsonrpc: '2.0',\n\tid?: string | number | null,\n\tmethod: string,\n\tparams?: any,\n}\n\ntype RpcResponseError = {\n\tcode: number,\n\tmessage: string,\n\tdata?: any,\n}\n\nexport interface JsonRpcResponse\n{\n\tjsonrpc: '2.0',\n\tid?: string | number | null,\n\tresult?: any;\n\terror?: RpcResponseError;\n}\n\nexport const RpcError: { [string]: RpcResponseError } = {\n\tParse: { code: -32700, message: 'Parse error' },\n\tInvalidRequest: { code: -32600, message: 'Invalid Request' },\n\tMethodNotFound: { code: -32601, message: 'Method not found' },\n\tInvalidParams: { code: -32602, message: 'Invalid params' },\n\tInternal: { code: -32603, message: 'Internal error' },\n};\n\ninterface ResponseAwaiter\n{\n\tresolve: () => void,\n\treject: (Error) => void,\n\ttimeout: number,\n}\n\nexport interface Sender\n{\n\tsend(string): boolean\n}\n\ntype JsonRpcOptions = {\n\tsender: Sender,\n\thandlers: { [string]: Function },\n\tevents: { [string]: Function },\n}\n\nexport class JsonRpc extends EventTarget\n{\n\tidCounter = 0;\n\n\thandlers = {};\n\trpcResponseAwaiters: Map<number, ResponseAwaiter> = new Map();\n\n\tconstructor(options: JsonRpcOptions)\n\t{\n\t\tsuper();\n\n\t\tthis.sender = options.sender;\n\t\tfor (const method of Object.keys(options.handlers || {}))\n\t\t{\n\t\t\tthis.handle(method, options.handlers[method]);\n\t\t}\n\n\t\tfor (const eventType of Object.keys(options.events || {}))\n\t\t{\n\t\t\t// eslint-disable-next-line @bitrix24/bitrix24-rules/no-native-events-binding\n\t\t\tthis.addEventListener(eventType, options.events[eventType]);\n\t\t}\n\t}\n\n\t/**\n\t * @param {string} method\n\t * @param {function} handler\n\t */\n\thandle(method, handler)\n\t{\n\t\tthis.handlers[method] = handler;\n\t}\n\n\t/**\n\t * Sends RPC command to the server.\n\t *\n\t * @param {string} method Method name\n\t * @param {object} params\n\t * @param {int} timeout\n\t * @returns {Promise}\n\t */\n\texecuteOutgoingRpcCommand(method, params, timeout = 5): Promise<JsonRpcResponse>\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst request = this.createRequest(method, params);\n\n\t\t\tif (this.sender.send(JSON.stringify(request)) === false)\n\t\t\t{\n\t\t\t\treject(new ErrorNotConnected('send failed'));\n\t\t\t}\n\n\t\t\tif (timeout > 0)\n\t\t\t{\n\t\t\t\tconst t = setTimeout(() => {\n\t\t\t\t\tthis.rpcResponseAwaiters.delete(request.id);\n\t\t\t\t\treject(new ErrorTimeout('no response'));\n\t\t\t\t}, timeout * 1000);\n\t\t\t\tthis.rpcResponseAwaiters.set(request.id, { resolve, reject, timeout: t });\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresolve();\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Executes array or rpc commands. Returns array of promises, each promise will be resolved individually.\n\t *\n\t * @param {JsonRpcRequest[]} batch\n\t * @returns {Promise[]}\n\t */\n\texecuteOutgoingRpcBatch(batch: JsonRpcRequest[]): Promise<JsonRpcResponse>[]\n\t{\n\t\tconst requests = [];\n\t\tconst promises = [];\n\t\tbatch.forEach(({ method, params, id }) => {\n\t\t\tconst request = this.createRequest(method, params, id);\n\t\t\trequests.push(request);\n\t\t\tpromises.push(new Promise((resolve, reject) => {\n\t\t\t\tthis.rpcResponseAwaiters.set(request.id, {\n\t\t\t\t\tresolve,\n\t\t\t\t\treject,\n\t\t\t\t});\n\t\t\t}));\n\t\t});\n\n\t\tthis.sender.send(JSON.stringify(requests));\n\n\t\treturn promises;\n\t}\n\n\tprocessRpcResponse(response)\n\t{\n\t\tif ('id' in response && this.rpcResponseAwaiters.has(response.id))\n\t\t{\n\t\t\tconst awaiter = this.rpcResponseAwaiters.get(response.id);\n\t\t\tif ('result' in response)\n\t\t\t{\n\t\t\t\tawaiter.resolve(response.result);\n\t\t\t}\n\t\t\telse if ('error' in response)\n\t\t\t{\n\t\t\t\tawaiter.reject(response.error);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tawaiter.reject(new Error('wrong response structure'));\n\t\t\t}\n\n\t\t\tclearTimeout(awaiter.timeout);\n\t\t\tthis.rpcResponseAwaiters.delete(response.id);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.dispatchEvent(new CustomEvent('error', { error: new Error(`received rpc response with unknown id ${response}`) }));\n\t\t}\n\t}\n\n\tasync handleIncomingMessage(message): void\n\t{\n\t\tlet decoded = {};\n\t\ttry\n\t\t{\n\t\t\tdecoded = JSON.parse(message);\n\t\t}\n\t\tcatch (e)\n\t\t{\n\t\t\tthrow new Error(`could not decode json rpc message: ${e}`);\n\t\t}\n\n\t\tif (Utils.isArray(decoded))\n\t\t{\n\t\t\tthis.executeIncomingRpcBatch(decoded);\n\t\t}\n\t\telse if (Utils.isJsonRpcRequest(decoded))\n\t\t{\n\t\t\tconst commandResult = await this.executeIncomingRpcCommand(decoded);\n\t\t\tif (commandResult !== null && commandResult !== undefined)\n\t\t\t{\n\t\t\t\tconst response = commandResult.error\n\t\t\t\t\t? this.createErrorResponse(decoded.id, commandResult.error)\n\t\t\t\t\t: this.createResponse(decoded.id, commandResult)\n\t\t\t\t;\n\t\t\t\tthis.sender.send(JSON.stringify(response));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.sender.send(JSON.stringify(this.createResponse(decoded.id, null)));\n\t\t\t}\n\t\t}\n\t\telse if (Utils.isJsonRpcResponse(decoded))\n\t\t{\n\t\t\tthis.processRpcResponse(decoded);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthrow new Error(`unknown rpc packet: ${decoded}`);\n\t\t}\n\t}\n\n\t/**\n\t * Executes RPC command, received from the server\n\t *\n\t * @param {string} method\n\t * @param {object} params\n\t * @returns {object}\n\t */\n\tasync executeIncomingRpcCommand({ method, params }): JsonRpcResponse\n\t{\n\t\tif (method in this.handlers)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\treturn this.handlers[method].call(this, params);\n\t\t\t}\n\t\t\tcatch (e)\n\t\t\t{\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: '2.0',\n\t\t\t\t\terror: e.toString(),\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\terror: RpcError.MethodNotFound,\n\t\t};\n\t}\n\n\tasync executeIncomingRpcBatch(batch): JsonRpcResponse[]\n\t{\n\t\tconst result = [];\n\t\tfor (const command of batch)\n\t\t{\n\t\t\tif ('jsonrpc' in command)\n\t\t\t{\n\t\t\t\tif ('method' in command)\n\t\t\t\t{\n\t\t\t\t\tconst commandResult = this.executeIncomingRpcCommand(command);\n\t\t\t\t\tif (commandResult)\n\t\t\t\t\t{\n\t\t\t\t\t\tcommandResult.jsonrpc = JSON_RPC_VERSION;\n\t\t\t\t\t\tcommandResult.id = command.id;\n\n\t\t\t\t\t\tresult.push(commandResult);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.processRpcResponse(command);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.dispatchEvent(new CustomEvent('error', { error: new Error(`unknown rpc command in batch: ${command}`) }));\n\t\t\t\tresult.push({\n\t\t\t\t\tjsonrpc: '2.0',\n\t\t\t\t\terror: RpcError.InvalidRequest,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tnextId(): number\n\t{\n\t\tthis.idCounter++;\n\n\t\treturn this.idCounter;\n\t}\n\n\tcreatePublishRequest(messageBatch): JsonRpcRequest\n\t{\n\t\tconst result = messageBatch.map((message) => this.createRequest('publish', message));\n\n\t\tif (result.length === 0)\n\t\t{\n\t\t\treturn result[0];\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tcreateRequest(method, params, id): JsonRpcRequest\n\t{\n\t\treturn {\n\t\t\tjsonrpc: JSON_RPC_VERSION,\n\t\t\tmethod,\n\t\t\tparams,\n\t\t\tid: id ?? this.nextId(),\n\t\t};\n\t}\n\n\tcreateResponse(id, result): JsonRpcResponse\n\t{\n\t\treturn {\n\t\t\tjsonrpc: JSON_RPC_VERSION,\n\t\t\tid,\n\t\t\tresult,\n\t\t};\n\t}\n\n\tcreateErrorResponse(id, error): JsonRpcResponse\n\t{\n\t\treturn {\n\t\t\tjsonrpc: JSON_RPC_VERSION,\n\t\t\tid,\n\t\t\terror,\n\t\t};\n\t}\n}\n","/* eslint-disable @bitrix24/bitrix24-rules/no-typeof */\n/* eslint-disable @bitrix24/bitrix24-rules/no-native-events-binding */\n// noinspection ES6PreferShortImport\n\nimport { JsonRpc } from '../../jsonrpc/src/jsonrpc';\nimport { ConnectionType, PullStatus } from './consts';\nimport type { JsonRpcResponse } from '../../jsonrpc/src/jsonrpc';\n\nexport const WorkerConnectorEvents = {\n\tMessage: 'message',\n\tRevisionChanged: 'revisionChanged',\n\tConnectionStatus: 'connectionStatus',\n};\n\ntype WorkerConnectorOptions = {\n\tbundleTimestamp: number,\n\tconfigTimestamp: number,\n\tevents: { [string]: Function }\n}\n\nconst WORKER_PATH = '/bitrix/js/pull/worker/dist/pull.worker.bundle.js';\nconst WORKER_NAME = 'Bitrix24 Push&Pull';\n\nexport class WorkerConnector extends EventTarget\n{\n\tconnectionType = ConnectionType.WebSocket;\n\tconnectionStatus = PullStatus.Offline;\n\tisJsonRpcConnection = false;\n\n\tstatic isSharedWorkerSupported(): boolean\n\t{\n\t\treturn 'SharedWorker' in window;\n\t}\n\n\tconstructor(options: WorkerConnectorOptions)\n\t{\n\t\tsuper();\n\n\t\tthis.bundleTimestamp = options.bundleTimestamp;\n\t\tthis.configTimestamp = options.configTimestamp;\n\n\t\tfor (const eventName of Object.keys(options.events || {}))\n\t\t{\n\t\t\tthis.addEventListener(eventName, options.events[eventName]);\n\t\t}\n\n\t\tthis.worker = new SharedWorker(`${WORKER_PATH}?${this.bundleTimestamp}`, WORKER_NAME);\n\n\t\tthis.rpcAdapter = this.createRpcAdapter();\n\n\t\tthis.worker.port.start();\n\t\tthis.worker.port.addEventListener('message', this.onPortMessage.bind(this));\n\n\t\twindow.addEventListener('offline', this.onOffline.bind(this));\n\t\twindow.addEventListener('online', this.onOnline.bind(this));\n\t\twindow.addEventListener('pagehide', this.onPageHide.bind(this));\n\t}\n\n\tcreateRpcAdapter(): JsonRpc\n\t{\n\t\treturn new JsonRpc({\n\t\t\tsender: {\n\t\t\t\tsend: (m: string) => this.worker.port.postMessage(m),\n\t\t\t},\n\t\t\thandlers: {\n\t\t\t\tready: this.handleReady.bind(this),\n\t\t\t\tincomingMessage: this.handleIncomingMessage.bind(this),\n\t\t\t\trevisionChanged: this.handleRevisionChanged.bind(this),\n\t\t\t\tconnectionStatusChanged: this.handleConnectionStatusChanged.bind(this),\n\t\t\t},\n\t\t\tevents: {\n\t\t\t\terror: (error) => console.error('rpc error', error),\n\t\t\t},\n\t\t});\n\t}\n\n\tsetPublicIds(publicIds): Promise<void>\n\t{\n\t\treturn this.rpcAdapter.executeOutgoingRpcCommand(\n\t\t\t'setPublicIds',\n\t\t\t{ publicIds },\n\t\t);\n\t}\n\n\tsendMessage(users, moduleId, command, params, expiry): Promise<void>\n\t{\n\t\treturn this.rpcAdapter.executeOutgoingRpcCommand(\n\t\t\t'sendMessage',\n\t\t\t{ users, moduleId, command, params, expiry },\n\t\t);\n\t}\n\n\tsendMessageBatch(messageBatch): Promise<void>\n\t{\n\t\treturn this.rpcAdapter.executeOutgoingRpcCommand('sendMessageBatch', { messageBatch });\n\t}\n\n\tsendMessageToChannels(publicChannels, moduleId, command, params, expiry): Promise<void>\n\t{\n\t\treturn this.rpcAdapter.executeOutgoingRpcCommand(\n\t\t\t'sendMessageToChannels',\n\t\t\t{ publicChannels, moduleId, command, params, expiry },\n\t\t);\n\t}\n\n\tconnect(): Promise<void>\n\t{\n\t\treturn Promise.resolve();\n\t}\n\n\tgetUsersLastSeen(userList: number[]): Promise<{ [number]: number }>\n\t{\n\t\treturn this.rpcAdapter.executeOutgoingRpcCommand('getUsersLastSeen', { userList });\n\t}\n\n\tlistChannels(): Promise<JsonRpcResponse>\n\t{\n\t\treturn this.rpcAdapter.executeOutgoingRpcCommand('listChannels');\n\t}\n\n\tisJsonRpc(): boolean\n\t{\n\t\treturn this.isJsonRpcConnection;\n\t}\n\n\tsubscribeUserStatusChange(userId): Promise<void>\n\t{\n\t\treturn this.rpcAdapter.executeOutgoingRpcCommand('subscribeUserStatusChange', { userId });\n\t}\n\n\tunsubscribeUserStatusChange(userId): Promise<void>\n\t{\n\t\treturn this.rpcAdapter.executeOutgoingRpcCommand('unsubscribeUserStatusChange', { userId });\n\t}\n\n\tisWebSocketConnected(): boolean\n\t{\n\t\treturn this.connectionType === ConnectionType.WebSocket && this.connectionStatus === PullStatus.Online;\n\t}\n\n\tgetConnectionPath(): string\n\t{\n\t\treturn 'not available in SharedWorker mode';\n\t}\n\n\tgetServerMode(): string\n\t{\n\t\treturn 'n/a';\n\t}\n\n\tonLoginSuccess()\n\t{\n\t\tthis.rpcAdapter.executeOutgoingRpcCommand('notifyLogin');\n\t}\n\n\thandleReady()\n\t{\n\t\tthis.rpcAdapter.executeOutgoingRpcCommand(\n\t\t\t'notifyConfigTimestamp',\n\t\t\t{ configTimestamp: this.configTimestamp },\n\t\t);\n\t}\n\n\thandleIncomingMessage({ payload })\n\t{\n\t\tthis.dispatchEvent(new CustomEvent(WorkerConnectorEvents.Message, { detail: payload }));\n\t}\n\n\thandleRevisionChanged({ revision })\n\t{\n\t\tthis.dispatchEvent(new CustomEvent(WorkerConnectorEvents.RevisionChanged, { detail: { revision } }));\n\t}\n\n\thandleConnectionStatusChanged({ status, connectionType, isJsonRpc })\n\t{\n\t\tthis.dispatchEvent(new CustomEvent(WorkerConnectorEvents.ConnectionStatus, { detail: { status } }));\n\t\tthis.connectionType = connectionType;\n\t\tthis.connectionStatus = status;\n\t\tthis.isJsonRpcConnection = isJsonRpc;\n\t}\n\n\tonPortMessage(e: MessageEvent)\n\t{\n\t\tconst message = e.data;\n\t\tthis.rpcAdapter.handleIncomingMessage(message);\n\t}\n\n\tonOffline()\n\t{\n\t\tthis.rpcAdapter.executeOutgoingRpcCommand('notifyOffline');\n\t}\n\n\tonOnline()\n\t{\n\t\tthis.rpcAdapter.executeOutgoingRpcCommand('notifyOnline');\n\t}\n\n\tonPageHide()\n\t{\n\t\tthis.rpcAdapter.executeOutgoingRpcCommand('bye');\n\t}\n\n\tisConnected()\n\t{\n\t\treturn this.connectionStatus === PullStatus.Online;\n\t}\n\n\tasync pingWorker()\n\t{\n\t\treturn this.rpcAdapter.executeOutgoingRpcCommand('bye');\n\t}\n\n\tasync getWorkerLog()\n\t{\n\t\treturn this.rpcAdapter.executeOutgoingRpcCommand('getLog');\n\t}\n\n\tasync getWorkerConfig()\n\t{\n\t\treturn this.rpcAdapter.executeOutgoingRpcCommand('getConfig');\n\t}\n\n\tdisconnect()\n\t{\n\t\tconsole.warn('Pull: SharedWorker mode: disconnection request ignored');\n\t}\n\n\tscheduleReconnect()\n\t{\n\t\t// nothing\n\t}\n\n\tresetSession()\n\t{\n\t\t// nothing\n\t}\n}\n","/* eslint-disable max-classes-per-file */\n\nimport { buildQueryString, isNotEmptyString, isPlainObject } from '../../util/src/util';\n\nexport class MiniRest\n{\n\tsessid = '';\n\tqueryParams = {};\n\n\tconstructor(options = {})\n\t{\n\t\tif (isNotEmptyString(options.sessid))\n\t\t{\n\t\t\tthis.sessid = options.sessid;\n\t\t}\n\n\t\tif (isPlainObject(options.queryParams))\n\t\t{\n\t\t\tthis.queryParams = options.queryParams;\n\t\t}\n\t}\n\n\tasync callMethod(method: string, params: ?Object = {}, _ = null, __ = null, logTag: string = ''): Promise\n\t{\n\t\tconst lt = logTag ? `?logTag=${logTag}` : '';\n\t\tconst url = `/rest/${method}.json${lt}`;\n\n\t\tlet decoded = null;\n\t\tlet responseStatus = 0;\n\t\ttry\n\t\t{\n\t\t\tconst response = await fetch(url, this.getFetchOptions({ ...this.queryParams, ...params }));\n\t\t\tresponseStatus = response.status;\n\t\t\tdecoded = await response.json();\n\t\t}\n\t\tcatch\n\t\t{\n\t\t\tthrow new RestCompatResult(0, { error: 'NETWORK_ERROR', error_description: 'Network error' });\n\t\t}\n\n\t\tif (decoded && 'error' in decoded && decoded.error === 'session_failed' && 'sessid' in decoded && isNotEmptyString(decoded.sessid))\n\t\t{\n\t\t\tthis.sessid = decoded.sessid;\n\t\t\t// after setting sessid fetch options should differ\n\t\t\ttry\n\t\t\t{\n\t\t\t\tconst fallbackResponse = await fetch(url, this.getFetchOptions({ ...this.queryParams, ...params }));\n\t\t\t\tresponseStatus = fallbackResponse.status;\n\t\t\t\tdecoded = await fallbackResponse.json();\n\t\t\t}\n\t\t\tcatch\n\t\t\t{\n\t\t\t\tthrow new RestCompatResult(0, { error: 'NETWORK_ERROR', error_description: 'Network error' });\n\t\t\t}\n\t\t}\n\n\t\tconst result = new RestCompatResult(responseStatus, decoded);\n\t\tif (result.isError)\n\t\t{\n\t\t\tthrow result;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tgetFetchOptions(params: ?Object = {}): Object\n\t{\n\t\tconst query = buildQueryString({\n\t\t\tsessid: this.getSessid(),\n\t\t\t...params,\n\t\t});\n\n\t\treturn {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/x-www-form-urlencoded',\n\t\t\t\t'X-Bitrix-Csrf-Token': this.getSessid(),\n\t\t\t},\n\t\t\tcredentials: 'same-origin',\n\t\t\tbody: query,\n\t\t};\n\t}\n\n\tgetSessid(): string\n\t{\n\t\tif (this.sessid !== '')\n\t\t{\n\t\t\treturn this.sessid;\n\t\t}\n\n\t\t// eslint-disable-next-line @bitrix24/bitrix24-rules/no-typeof\n\t\tif (typeof BX !== 'undefined' && BX.bitrix_sessid)\n\t\t{\n\t\t\t// eslint-disable-next-line @bitrix24/bitrix24-rules/no-bx\n\t\t\treturn BX.bitrix_sessid();\n\t\t}\n\n\t\treturn '';\n\t}\n}\n\nclass RestCompatResult\n{\n\tconstructor(status, answer)\n\t{\n\t\tthis.isError = false;\n\t\tthis.status = status;\n\t\tthis.answer = answer;\n\n\t\tif (typeof this.answer.error !== 'undefined')\n\t\t{\n\t\t\tthis.isError = true;\n\t\t\tthis.answer.ex = new RestCompatError(this.status, typeof this.answer.error === 'string' ? this.answer : this.answer.error)\n\t\t}\n\t}\n\n\tdata()\n\t{\n\t\treturn this.answer.result;\n\t}\n\n\ttime()\n\t{\n\t\treturn this.answer.time;\n\t}\n\n\terror()\n\t{\n\t\treturn this.answer.ex;\n\t}\n}\n\nclass RestCompatError\n{\n\tconstructor(status, ex)\n\t{\n\t\tthis.status = status;\n\t\tthis.ex = ex;\n\t}\n\n\tgetError()\n\t{\n\t\treturn this.ex;\n\t}\n\n\tgetStatus()\n\t{\n\t\treturn this.status;\n\t}\n\n\ttoString(): string\n\t{\n\t\tconst description = this.ex.error_description ? `: ${this.ex.error_description}` : '';\n\n\t\treturn `${this.ex.error}${description} (${this.status})`;\n\t}\n}\n","export type TagWatcherOptions = {\n\trestClient: any\n}\n\nexport class TagWatcher\n{\n\tqueue: { [string]: boolean } = {};\n\twatchUpdateInterval = 1_740_000;\n\twatchForceUpdateInterval = 5000;\n\n\tconstructor(options: TagWatcherOptions)\n\t{\n\t\tthis.restClient = options.restClient;\n\t}\n\n\textend(tag, force)\n\t{\n\t\tif (!tag || this.queue[tag])\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.queue[tag] = true;\n\t\tif (force)\n\t\t{\n\t\t\tthis.scheduleUpdate(true);\n\t\t}\n\t}\n\n\tclear(tagId)\n\t{\n\t\tdelete this.queue[tagId];\n\t}\n\n\tscheduleUpdate(force)\n\t{\n\t\tclearTimeout(this.watchUpdateTimeout);\n\t\tthis.watchUpdateTimeout = setTimeout(\n\t\t\t() => {\n\t\t\t\tthis.update();\n\t\t\t},\n\t\t\tforce ? this.watchForceUpdateInterval : this.watchUpdateInterval,\n\t\t);\n\t}\n\n\tupdate()\n\t{\n\t\tconst watchTags = Object.keys(this.queue);\n\t\tif (watchTags.length > 0)\n\t\t{\n\t\t\tthis.restClient.callMethod('pull.watch.extend', { tags: watchTags }, (result) => {\n\t\t\t\tif (result.error())\n\t\t\t\t{\n\t\t\t\t\tthis.scheduleUpdate();\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst updatedTags = result.data();\n\n\t\t\t\tfor (const tagId of Object.keys(updatedTags))\n\t\t\t\t{\n\t\t\t\t\tif (!updatedTags[tagId])\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.clear(tagId);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.scheduleUpdate();\n\t\t\t});\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.scheduleUpdate();\n\t\t}\n\t}\n}\n","/* eslint-disable @bitrix24/bitrix24-rules/no-bx-message */\n\nimport { isNotEmptyString } from '../../util/src/util';\n\nexport class StorageManager\n{\n\tconstructor(params = {})\n\t{\n\t\tthis.userId = params.userId ?? (BX.message && BX.message.USER_ID ? BX.message.USER_ID : 0);\n\t\tthis.siteId = params.siteId ?? (BX.message && BX.message.SITE_ID ? BX.message.SITE_ID : 'none');\n\t}\n\n\tset(name: string, value: any): void\n\t{\n\t\tif (!window.localStorage)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tlet encoded = value;\n\t\tif (isNotEmptyString(value))\n\t\t{\n\t\t\tencoded = JSON.stringify(value);\n\t\t}\n\n\t\treturn window.localStorage.setItem(this.getKey(name), encoded);\n\t}\n\n\tget(name: string, defaultValue: any = null): any\n\t{\n\t\tif (!window.localStorage)\n\t\t{\n\t\t\treturn defaultValue;\n\t\t}\n\n\t\tconst result = window.localStorage.getItem(this.getKey(name));\n\t\tif (result === null)\n\t\t{\n\t\t\treturn defaultValue;\n\t\t}\n\n\t\treturn JSON.parse(result);\n\t}\n\n\tremove(name: string): void\n\t{\n\t\tif (!window.localStorage)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\twindow.localStorage.removeItem(this.getKey(name));\n\t}\n\n\tgetKey(name: string): string\n\t{\n\t\treturn `bx-pull-${this.userId}-${this.siteId}-${name}`;\n\t}\n\n\tcompareKey(eventKey, userKey): boolean\n\t{\n\t\treturn eventKey === this.getKey(userKey);\n\t}\n}\n","/* eslint-disable @bitrix24/bitrix24-rules/no-typeof */\n/* eslint-disable @bitrix24/bitrix24-rules/no-bx */\n/* eslint-disable @bitrix24/bitrix24-rules/no-bx-message */\n/* eslint-disable @bitrix24/bitrix24-rules/no-native-events-binding */\n/* eslint-disable sonarjs/cognitive-complexity */\n// noinspection ES6PreferShortImport\n\nimport {\n\tCloseReasons,\n\tConnectionType,\n\tPullStatus,\n\tSubscriptionType,\n\tREVISION, ServerMode,\n} from './consts';\nimport { getDateForLog, isArray, clone, isWebSocketSupported } from '../../util/src/util';\nimport { Emitter } from './emitter';\nimport { Connector, ConnectorEvents } from 'pull.connector';\nimport type { Logger } from 'pull.connector';\nimport { ConfigHolder, ConfigHolderEvents } from 'pull.configholder';\nimport { WorkerConnector, WorkerConnectorEvents } from './workerconnector';\nimport { MiniRest } from '../../minirest/src/minirest';\nimport type { PullConfig } from 'pull.configholder';\nimport { TagWatcher } from './tagwatcher';\nimport { StorageManager } from './storage';\nimport type { RestCaller } from '../../minirest/src/restcaller';\n\nconst OFFLINE_STATUS_DELAY = 5000;\n\nconst LS_SESSION = 'bx-pull-session';\nconst LS_SESSION_CACHE_TIME = 20;\n\nexport class PullClient\n{\n\tstatic PullStatus = PullStatus;\n\tstatic SubscriptionType = SubscriptionType;\n\tstatic CloseReasons = CloseReasons;\n\tstatic StorageManager = StorageManager;\n\n\t#status = '';\n\t#emitter: Emitter;\n\n\t#connector: Connector | WorkerConnector | null;\n\trestClient: ?RestCaller;\n\n\t/* eslint-disable no-param-reassign */\n\tconstructor(params = {})\n\t{\n\t\tthis.#emitter = new Emitter({\n\t\t\tlogger: this.getLogger(),\n\t\t});\n\n\t\tthis.#connector = null;\n\n\t\tif (params.restApplication)\n\t\t{\n\t\t\tif (typeof params.configGetMethod === 'undefined')\n\t\t\t{\n\t\t\t\tparams.configGetMethod = 'pull.application.config.get';\n\t\t\t}\n\n\t\t\tif (typeof params.skipCheckRevision === 'undefined')\n\t\t\t{\n\t\t\t\tparams.skipCheckRevision = true;\n\t\t\t}\n\n\t\t\tif (typeof params.restApplication === 'string')\n\t\t\t{\n\t\t\t\tparams.siteId = params.restApplication;\n\t\t\t}\n\n\t\t\tparams.serverEnabled = true;\n\t\t}\n\n\t\tthis.context = 'master';\n\n\t\tthis.guestMode = params.guestMode ?? (getGlobalParam('pull_guest_mode', 'N') === 'Y');\n\t\tthis.guestUserId = params.guestUserId ?? getGlobalParamInt('pull_guest_user_id', 0);\n\t\tif (this.guestMode && this.guestUserId)\n\t\t{\n\t\t\tthis.userId = this.guestUserId;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.userId = params.userId ?? getGlobalParamInt('USER_ID', 0);\n\t\t}\n\t\tthis.siteId = params.siteId ?? getGlobalParam('SITE_ID', 'none');\n\n\t\tthis.restClient = params.restClient ?? this.createRestClint();\n\t\tthis.customRestClient = Boolean(params.restClient);\n\n\t\tthis.enabled = typeof params.serverEnabled === 'undefined' ? (typeof BX.message !== 'undefined' && BX.message.pull_server_enabled === 'Y') : (params.serverEnabled === 'Y' || params.serverEnabled === true);\n\t\tthis.unloading = false;\n\t\tthis.starting = false;\n\t\tthis.connectionAttempt = 0;\n\t\tthis.connectionType = ConnectionType.WebSocket;\n\t\tthis.restartTimeout = null;\n\t\tthis.restoreWebSocketTimeout = null;\n\n\t\tthis.configGetMethod = typeof params.configGetMethod === 'string' ? params.configGetMethod : 'pull.config.get';\n\t\tthis.getPublicListMethod = typeof params.getPublicListMethod === 'string' ? params.getPublicListMethod : 'pull.channel.public.list';\n\n\t\tthis.skipStorageInit = params.skipStorageInit === true;\n\t\tthis.skipCheckRevision = params.skipCheckRevision === true;\n\n\t\tthis.tagWatcher = new TagWatcher({\n\t\t\trestClient: this.restClient,\n\t\t});\n\n\t\tthis.configTimestamp = params.configTimestamp ?? getGlobalParamInt('pull_config_timestamp', 0);\n\n\t\tthis.config = null;\n\n\t\tthis.storage = null;\n\t\tif (this.userId && !this.skipStorageInit)\n\t\t{\n\t\t\tthis.storage = new StorageManager({\n\t\t\t\tuserId: this.userId,\n\t\t\t\tsiteId: this.siteId,\n\t\t\t});\n\t\t}\n\t\tthis.notificationPopup = null;\n\n\t\t// timers\n\t\tthis.checkInterval = null;\n\t\tthis.offlineTimeout = null;\n\n\t\t// manual stop workaround\n\t\tthis.isManualDisconnect = false;\n\n\t\tthis.loggingEnabled = false;\n\n\t\tthis.status = PullStatus.Offline;\n\t}\n\n\tget connector(): Connector\n\t{\n\t\treturn this.#connector;\n\t}\n\n\tget session()\n\t{\n\t\treturn this.#connector.session;\n\t}\n\n\tget status(): string\n\t{\n\t\treturn this.#status;\n\t}\n\n\tset status(status)\n\t{\n\t\tif (this.#status === status)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#status = status;\n\n\t\tif (!this.enabled)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.offlineTimeout)\n\t\t{\n\t\t\tclearTimeout(this.offlineTimeout);\n\t\t\tthis.offlineTimeout = null;\n\t\t}\n\n\t\tif (status === PullStatus.Offline)\n\t\t{\n\t\t\tthis.sendPullStatusDelayed(status, OFFLINE_STATUS_DELAY);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.sendPullStatus(status);\n\t\t}\n\t}\n\n\tsubscribe(params): Function\n\t{\n\t\treturn this.#emitter.subscribe(params);\n\t}\n\n\tattachCommandHandler(handler): Function\n\t{\n\t\treturn this.#emitter.attachCommandHandler(handler);\n\t}\n\n\tasync start(startConfig: ?PullConfig): Promise<boolean>\n\t{\n\t\tif (!this.enabled)\n\t\t{\n\t\t\tthrow new Error('Push & Pull server is disabled');\n\t\t}\n\n\t\tif (this.isConnected())\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\tconst sharedWorkerAllowed = getGlobalParamBool('shared_worker_allowed')\n\t\t\t&& WorkerConnector.isSharedWorkerSupported()\n\t\t;\n\n\t\t/* if config exists - initialize PullConnector with this config, otherwise start SharedWorker */\n\t\tif (startConfig)\n\t\t{\n\t\t\tlet restoreSession = true;\n\t\t\tif (typeof startConfig.skipReconnectToLastSession !== 'undefined')\n\t\t\t{\n\t\t\t\trestoreSession = !startConfig.skipReconnectToLastSession;\n\t\t\t\tdelete startConfig.skipReconnectToLastSession;\n\t\t\t}\n\n\t\t\tthis.#connector = this.createConnector(startConfig, restoreSession);\n\t\t}\n\t\telse if (!this.guestMode && !this.customRestClient && sharedWorkerAllowed)\n\t\t{\n\t\t\tthis.#connector = this.createWorkerConnector();\n\t\t}\n\t\telse\n\t\t{\n\t\t\twindow.addEventListener('beforeunload', this.onBeforeUnload.bind(this));\n\t\t\twindow.addEventListener('offline', this.onOffline.bind(this));\n\t\t\twindow.addEventListener('online', this.onOnline.bind(this));\n\n\t\t\tthis.configHolder = this.createConfigHolder(this.restClient);\n\n\t\t\tlet config = null;\n\t\t\ttry\n\t\t\t{\n\t\t\t\tconfig = await this.configHolder.loadConfig('client_start');\n\t\t\t\tthis.#connector = this.createConnector(config, true);\n\t\t\t}\n\t\t\tcatch (e)\n\t\t\t{\n\t\t\t\tconsole.error(`${getDateForLog()} Pull: load config`, e);\n\t\t\t\tthis.#connector = this.createConnector(null, true);\n\t\t\t\tthis.scheduleRestart(CloseReasons.BACKEND_ERROR, 'backend error');\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tawait this.#connector.connect();\n\n\t\tthis.init();\n\t\tthis.tagWatcher.scheduleUpdate();\n\n\t\treturn true;\n\t}\n\n\tcreateConnector(config: PullConfig, restoreSession: boolean): Connector\n\t{\n\t\treturn new Connector({\n\t\t\tconfig,\n\t\t\trestoreSession,\n\t\t\trestClient: this.restClient,\n\t\t\tgetPublicListMethod: this.getPublicListMethod,\n\t\t\tlogger: this.getLogger(),\n\t\t\tevents: {\n\t\t\t\t[ConnectorEvents.Message]: this.onMessage.bind(this),\n\t\t\t\t[ConnectorEvents.ChannelReplaced]: this.onChannelReplaced.bind(this),\n\t\t\t\t[ConnectorEvents.ConfigExpired]: this.onConfigExpired.bind(this),\n\t\t\t\t[ConnectorEvents.ConnectionStatus]: this.onConnectionStatus.bind(this),\n\t\t\t\t[ConnectorEvents.ConnectionError]: this.onConnectionError.bind(this),\n\t\t\t\t[ConnectorEvents.RevisionChanged]: this.onRevisionChanged.bind(this),\n\t\t\t},\n\t\t});\n\t}\n\n\tcreateWorkerConnector(): WorkerConnector\n\t{\n\t\treturn new WorkerConnector({\n\t\t\tbundleTimestamp: getGlobalParamInt('pull_worker_mtime', 0),\n\t\t\tconfigTimestamp: this.configTimestamp,\n\t\t\tevents: {\n\t\t\t\t[WorkerConnectorEvents.Message]: this.onMessage.bind(this),\n\t\t\t\t[WorkerConnectorEvents.RevisionChanged]: this.onRevisionChanged.bind(this),\n\t\t\t\t[WorkerConnectorEvents.ConnectionStatus]: this.onConnectionStatus.bind(this),\n\t\t\t},\n\t\t});\n\t}\n\n\tinit()\n\t{\n\t\tif (BX && BX.desktop)\n\t\t{\n\t\t\tBX.addCustomEvent('BXLinkOpened', this.connect.bind(this));\n\t\t\tBX.addCustomEvent('onDesktopReload', () => this.#connector?.resetSession());\n\t\t\tBX.desktop.addCustomEvent('BXLoginSuccess', this.onLoginSuccess.bind(this));\n\t\t}\n\t}\n\n\tonLoginSuccess()\n\t{\n\t\tif (this.#connector instanceof WorkerConnector)\n\t\t{\n\t\t\tthis.#connector.onLoginSuccess();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.restart(1000, 'desktop login');\n\t\t}\n\t}\n\n\tcreateConfigHolder(restClient: RestCaller): ConfigHolder\n\t{\n\t\treturn new ConfigHolder({\n\t\t\trestClient,\n\t\t\tconfigGetMethod: this.configGetMethod,\n\t\t\tevents: {\n\t\t\t\t[ConfigHolderEvents.ConfigExpired]: (e: CustomEvent) => {\n\t\t\t\t\tthis.logToConsole('Stale config detected. Restarting');\n\t\t\t\t\tthis.restart(CloseReasons.CONFIG_EXPIRED, 'config expired');\n\t\t\t\t},\n\t\t\t\t[ConfigHolderEvents.RevisionChanged]: this.onRevisionChanged.bind(this),\n\t\t\t},\n\t\t});\n\t}\n\n\tcreateRestClint(): RestCaller\n\t{\n\t\tconst options = {};\n\n\t\tif (this.guestMode && this.guestUserId !== 0)\n\t\t{\n\t\t\toptions.queryParams = {\n\t\t\t\tpull_guest_id: this.guestUserId,\n\t\t\t};\n\t\t}\n\n\t\treturn new MiniRest(options);\n\t}\n\n\tsetLastMessageId(lastMessageId)\n\t{\n\t\tthis.session.mid = lastMessageId;\n\t}\n\n\tsetPublicIds(publicIds)\n\t{\n\t\tthis.#connector.setPublicIds(publicIds);\n\t}\n\n\t/**\n\t * Send single message to the specified users.\n\t *\n\t * @param {integer[]} users User ids of the message receivers.\n\t * @param {string} moduleId Name of the module to receive message,\n\t * @param {string} command Command name.\n\t * @param {object} params Command parameters.\n\t * @param {integer} [expiry] Message expiry time in seconds.\n\t * @return {Promise}\n\t */\n\tsendMessage(users, moduleId, command, params, expiry): Promise<void>\n\t{\n\t\treturn this.#connector.sendMessage(users, moduleId, command, params, expiry);\n\t}\n\n\t/**\n\t * Send single message to the specified public channels.\n\t *\n\t * @param {string[]} publicChannels Public ids of the channels to receive message.\n\t * @param {string} moduleId Name of the module to receive message,\n\t * @param {string} command Command name.\n\t * @param {object} params Command parameters.\n\t * @param {integer} [expiry] Message expiry time in seconds.\n\t * @return {Promise}\n\t */\n\tsendMessageToChannels(publicChannels, moduleId, command, params, expiry): Promise<void>\n\t{\n\t\treturn this.#connector.sendMessageToChannels(publicChannels, moduleId, command, params, expiry);\n\t}\n\n\t/**\n\t * Sends batch of messages to the multiple public channels.\n\t *\n\t * @param {object[]} messageBatch Array of messages to send.\n\t * @param  {int[]} messageBatch.userList User ids the message receivers.\n\t * @param  {string[]|object[]} messageBatch.channelList Public ids of the channels to send messages.\n\t * @param {string} messageBatch.moduleId Name of the module to receive message,\n\t * @param {string} messageBatch.command Command name.\n\t * @param {object} messageBatch.params Command parameters.\n\t * @param {integer} [messageBatch.expiry] Message expiry time in seconds.\n\t * @return void\n\t */\n\tasync sendMessageBatch(messageBatch)\n\t{\n\t\ttry\n\t\t{\n\t\t\tawait this.#connector.sendMessageBatch(messageBatch);\n\t\t}\n\t\tcatch (e)\n\t\t{\n\t\t\tconsole.error(e);\n\t\t}\n\t}\n\n\t/**\n\t * @param userId {number}\n\t * @param callback {UserStatusCallback}\n\t * @returns {Promise}\n\t */\n\tasync subscribeUserStatusChange(userId, callback)\n\t{\n\t\tif (typeof (userId) !== 'number')\n\t\t{\n\t\t\tthrow new TypeError('userId must be a number');\n\t\t}\n\n\t\tawait this.#connector.subscribeUserStatusChange(userId);\n\t\tthis.#emitter.addUserStatusCallback(userId, callback);\n\t}\n\n\t/**\n\t * @param userId {number}\n\t * @param callback {UserStatusCallback}\n\t * @returns {Promise}\n\t */\n\tasync unsubscribeUserStatusChange(userId, callback): Promise<void>\n\t{\n\t\tif (typeof (userId) !== 'number')\n\t\t{\n\t\t\tthrow new TypeError('userId must be a number');\n\t\t}\n\n\t\tthis.#emitter.removeUserStatusCallback(userId, callback);\n\t\tif (!this.#emitter.hasUserStatusCallbacks(userId))\n\t\t{\n\t\t\tawait this.#connector.unsubscribeUserStatusChange(userId);\n\t\t}\n\t}\n\n\trestoreUserStatusSubscription()\n\t{\n\t\tfor (const userId of this.#emitter.getSubscribedUsersList())\n\t\t{\n\t\t\tthis.#connector.subscribeUserStatusChange(userId);\n\t\t}\n\t}\n\n\temitAuthError()\n\t{\n\t\tif (BX && BX.onCustomEvent)\n\t\t{\n\t\t\tBX.onCustomEvent(window, 'onPullError', ['AUTHORIZE_ERROR']);\n\t\t}\n\t}\n\n\tisJsonRpc(): boolean\n\t{\n\t\treturn this.connector ? this.connector.isJsonRpc() : false;\n\t}\n\n\t/**\n\t * Returns \"last seen\" time in seconds for the users. Result format: Object{userId: int}\n\t * If the user is currently connected - will return 0.\n\t * If the user if offline - will return diff between current timestamp and last seen timestamp in seconds.\n\t * If the user was never online - the record for user will be missing from the result object.\n\t *\n\t * @param {integer[]} userList List of user ids.\n\t * @returns {Promise}\n\t */\n\tgetUsersLastSeen(userList: number[]): Promise<{ [number]: number }>\n\t{\n\t\tif (!isArray(userList) || !userList.every((item) => typeof (item) === 'number'))\n\t\t{\n\t\t\tthrow new Error('userList must be an array of numbers');\n\t\t}\n\n\t\treturn this.#connector.getUsersLastSeen(userList);\n\t}\n\n\t/**\n\t * Pings server. In case of success promise will be resolved, otherwise - rejected.\n\t *\n\t * @param {int} timeout Request timeout in seconds\n\t * @returns {Promise}\n\t */\n\tping(timeout): Promise<JsonRpcResponse>\n\t{\n\t\treturn this.#connector.ping(timeout);\n\t}\n\n\t/**\n\t * Returns list channels that the connection is subscribed to.\n\t *\n\t * @returns {Promise}\n\t */\n\tlistChannels(): Promise<JsonRpcResponse>\n\t{\n\t\treturn this.#connector.listChannels();\n\t}\n\n\tscheduleRestart(disconnectCode, disconnectReason, restartDelay)\n\t{\n\t\tclearTimeout(this.restartTimeout);\n\t\tlet delay = restartDelay;\n\t\tif (!delay || delay < 1)\n\t\t{\n\t\t\tdelay = Math.ceil(Math.random() * 30) + 5;\n\t\t}\n\n\t\tthis.restartTimeout = setTimeout(\n\t\t\t() => this.restart(disconnectCode, disconnectReason),\n\t\t\tdelay * 1000,\n\t\t);\n\t}\n\n\tasync restart(disconnectCode = CloseReasons.NORMAL_CLOSURE, disconnectReason = 'manual restart')\n\t{\n\t\tif (this.configHolder && this.#connector instanceof Connector)\n\t\t{\n\t\t\tthis.logToConsole(`Pull: restarting with code ${disconnectCode}`);\n\t\t\tthis.disconnect(disconnectCode, disconnectReason);\n\n\t\t\tconst loadConfigReason = `${disconnectCode}_${disconnectReason.replaceAll(' ', '_')}`;\n\t\t\ttry\n\t\t\t{\n\t\t\t\tconst config = await this.configHolder.loadConfig(loadConfigReason);\n\t\t\t\tthis.#connector.setConfig(config);\n\t\t\t}\n\t\t\tcatch (error)\n\t\t\t{\n\t\t\t\tif ('status' in error && (error.status === 401 || error.status === 403))\n\t\t\t\t{\n\t\t\t\t\tthis.emitAuthError();\n\t\t\t\t}\n\t\t\t\tthis.scheduleRestart(CloseReasons.BACKEND_ERROR, 'backend error');\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttry\n\t\t\t{\n\t\t\t\tawait this.#connector.connect();\n\t\t\t}\n\t\t\tcatch\n\t\t\t{\n\t\t\t\tthis.#connector.scheduleReconnect();\n\t\t\t}\n\n\t\t\tthis.tagWatcher.scheduleUpdate();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.logToConsole('Pull: restart request ignored in shared worker mode');\n\t\t}\n\t}\n\n\tdisconnect(disconnectCode, disconnectReason)\n\t{\n\t\tthis.#connector?.disconnect(disconnectCode, disconnectReason);\n\t}\n\n\tstop(disconnectCode, disconnectReason)\n\t{\n\t\tthis.disconnect(disconnectCode, disconnectReason);\n\t}\n\n\t/**\n\t * @returns {Promise}\n\t */\n\tconnect(): Promise<void>\n\t{\n\t\tif (!this.enabled)\n\t\t{\n\t\t\treturn Promise.reject();\n\t\t}\n\n\t\treturn this.#connector.connect();\n\t}\n\n\tlogToConsole(message, ...params)\n\t{\n\t\tif (this.loggingEnabled)\n\t\t{\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.log(`${getDateForLog()}: ${message}`, ...params);\n\t\t}\n\t}\n\n\tgetLogger(): Logger\n\t{\n\t\treturn {\n\t\t\tlog: this.logToConsole.bind(this),\n\t\t\tlogForce: (message, ...params) => {\n\t\t\t\tconsole.log(`${getDateForLog()}: ${message}`, ...params);\n\t\t\t},\n\t\t};\n\t}\n\n\tisConnected(): boolean\n\t{\n\t\treturn this.#connector ? this.#connector.isConnected() : false;\n\t}\n\n\t// can't be disabled anymore, now when we dropped support for nginx servers\n\tisPublishingSupported(): boolean\n\t{\n\t\treturn true;\n\t}\n\n\t// can't be disabled anymore\n\tisPublishingEnabled(): boolean\n\t{\n\t\treturn true;\n\t}\n\n\tonMessage(e: CustomEvent)\n\t{\n\t\tthis.#emitter.broadcastMessage(e.detail);\n\t}\n\n\tonChannelReplaced(e: CustomEvent)\n\t{\n\t\tthis.logToConsole(`Pull: new config for ${e.detail.type} channel set\\n`);\n\t}\n\n\tonConfigExpired()\n\t{\n\t\tthis.restart(CloseReasons.CONFIG_EXPIRED, 'config expired');\n\t}\n\n\tonConnectionStatus(e: CustomEvent)\n\t{\n\t\tthis.status = e.detail.status;\n\t\tif (this.status === PullStatus.Online && e.detail.connectionType === ConnectionType.WebSocket)\n\t\t{\n\t\t\tthis.restoreUserStatusSubscription();\n\t\t}\n\t}\n\n\tonConnectionError(e: CustomEvent)\n\t{\n\t\tif (e.detail.code === CloseReasons.WRONG_CHANNEL_ID)\n\t\t{\n\t\t\tthis.scheduleRestart(CloseReasons.WRONG_CHANNEL_ID, 'wrong channel signature');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.restart(e.detail.code, e.detail.reason);\n\t\t}\n\t}\n\n\tonRevisionChanged(e: CustomEvent)\n\t{\n\t\tthis.checkRevision(e.detail.revision);\n\t}\n\n\tonBeforeUnload()\n\t{\n\t\tthis.unloading = true;\n\n\t\tconst session = clone(this.session);\n\t\tsession.ttl = Date.now() + LS_SESSION_CACHE_TIME * 1000;\n\t\tif (this.storage)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tthis.storage.set(LS_SESSION, JSON.stringify(session), LS_SESSION_CACHE_TIME);\n\t\t\t}\n\t\t\tcatch (e)\n\t\t\t{\n\t\t\t\tconsole.error(`${getDateForLog()} Pull: Could not save session info in local storage. Error:`, e);\n\t\t\t}\n\t\t}\n\n\t\tthis.#connector.scheduleReconnect(15);\n\t}\n\n\tonOffline()\n\t{\n\t\tthis.disconnect('1000', 'offline');\n\t}\n\n\tonOnline()\n\t{\n\t\tthis.connect();\n\t}\n\n\tcheckRevision(serverRevision: number): boolean\n\t{\n\t\tif (this.skipCheckRevision)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\tif (serverRevision > 0 && serverRevision !== REVISION)\n\t\t{\n\t\t\tthis.enabled = false;\n\t\t\tif (typeof BX.message !== 'undefined')\n\t\t\t{\n\t\t\t\tthis.showNotification(BX.message('PULL_OLD_REVISION'));\n\t\t\t}\n\t\t\tthis.disconnect(CloseReasons.NORMAL_CLOSURE, 'check_revision');\n\n\t\t\tif (typeof BX.onCustomEvent !== 'undefined')\n\t\t\t{\n\t\t\t\tBX.onCustomEvent(window, 'onPullRevisionUp', [serverRevision, REVISION]);\n\t\t\t}\n\n\t\t\tthis.#emitter.emit({\n\t\t\t\ttype: SubscriptionType.Revision,\n\t\t\t\tdata: {\n\t\t\t\t\tserver: serverRevision,\n\t\t\t\t\tclient: REVISION,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tthis.logToConsole(`Pull revision changed from ${REVISION} to ${serverRevision}. Reload required`);\n\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tshowNotification(text)\n\t{\n\t\tif (this.notificationPopup || typeof BX.PopupWindow === 'undefined')\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.notificationPopup = new BX.PopupWindow('bx-notifier-popup-confirm', null, {\n\t\t\tzIndex: 200,\n\t\t\tautoHide: false,\n\t\t\tcloseByEsc: false,\n\t\t\toverlay: true,\n\t\t\tcontent: BX.create('div', {\n\t\t\t\tprops: { className: 'bx-messenger-confirm' },\n\t\t\t\thtml: text,\n\t\t\t}),\n\t\t\tbuttons: [\n\t\t\t\tnew BX.PopupWindowButton({\n\t\t\t\t\ttext: BX.message('JS_CORE_WINDOW_CLOSE'),\n\t\t\t\t\tclassName: 'popup-window-button-decline',\n\t\t\t\t\tevents: {\n\t\t\t\t\t\tclick: () => this.notificationPopup.close(),\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t],\n\t\t\tevents: {\n\t\t\t\tonPopupClose: () => this.notificationPopup.destroy(),\n\t\t\t\tonPopupDestroy: () => {\n\t\t\t\t\tthis.notificationPopup = null;\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\t\tthis.notificationPopup.show();\n\t}\n\n\tgetServerMode(): string\n\t{\n\t\tswitch (this.#connector.getServerMode())\n\t\t{\n\t\t\tcase ServerMode.Shared:\n\t\t\t\treturn 'cloud';\n\t\t\tcase ServerMode.Personal:\n\t\t\t\treturn 'local';\n\t\t\tdefault:\n\t\t\t\treturn 'n/a';\n\t\t}\n\t}\n\n\tgetDebugInfo(): any\n\t{\n\t\tif (!JSON || !JSON.stringify)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tlet configDump = { 'Config error': 'config is not loaded' };\n\t\tif (this.config && this.config.channels)\n\t\t{\n\t\t\tconfigDump = {\n\t\t\t\tChannelID: (this.config.channels.private ? this.config.channels.private.id : 'n/a'),\n\t\t\t\tChannelDie: (this.config.channels.private ? this.config.channels.private.end : 'n/a'),\n\t\t\t\tChannelDieShared: ('shared' in this.config.channels ? this.config.channels.shared.end : 'n/a'),\n\t\t\t};\n\t\t}\n\n\t\tlet websocketMode = '-';\n\t\tif (this.#connector instanceof Connector && this.#connector.isWebSocketConnected())\n\t\t{\n\t\t\tif (this.#connector.isJsonRpc())\n\t\t\t{\n\t\t\t\twebsocketMode = 'json-rpc';\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\twebsocketMode = (this.#connector.isProtobufSupported() ? 'protobuf' : 'text');\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tUserId: this.userId + (this.userId > 0 ? '' : '(guest)'),\n\t\t\t'Guest userId': (this.guestMode && this.guestUserId !== 0 ? this.guestUserId : '-'),\n\t\t\t'Browser online': (navigator.onLine ? 'Y' : 'N'),\n\t\t\tConnect: (this.isConnected() ? 'Y' : 'N'),\n\t\t\t'Server type': this.getServerMode(),\n\t\t\t'WebSocket supported': (isWebSocketSupported() ? 'Y' : 'N'),\n\t\t\t'WebSocket connected': (this.#connector?.isWebSocketConnected() ? 'Y' : 'N'),\n\t\t\t'WebSocket mode': websocketMode,\n\n\t\t\t'Try connect': (this.#connector?.reconnectTimeout ? 'Y' : 'N'),\n\t\t\t'Try number': (this.connectionAttempt),\n\n\t\t\tPath: (this.#connector ? this.#connector.getConnectionPath() : '-'),\n\t\t\t...configDump,\n\n\t\t\t'Last message': (this.session?.mid > 0 ? this.session?.mid : '-'),\n\t\t\t'Session history': this.session?.history ?? null,\n\t\t\t'Watch tags': this.tagWatcher.queue,\n\t\t};\n\t}\n\n\tenableLogging(loggingFlag: boolean = true)\n\t{\n\t\tthis.loggingEnabled = loggingFlag;\n\t}\n\n\tcapturePullEvent(debugFlag: boolean = true)\n\t{\n\t\tthis.#emitter.capturePullEvent(debugFlag);\n\t}\n\n\tsendPullStatusDelayed(status, delay)\n\t{\n\t\tif (this.offlineTimeout)\n\t\t{\n\t\t\tclearTimeout(this.offlineTimeout);\n\t\t}\n\t\tthis.offlineTimeout = setTimeout(\n\t\t\t() => {\n\t\t\t\tthis.offlineTimeout = null;\n\t\t\t\tthis.sendPullStatus(status);\n\t\t\t},\n\t\t\tdelay,\n\t\t);\n\t}\n\n\tsendPullStatus(status)\n\t{\n\t\tif (this.unloading)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (typeof BX.onCustomEvent !== 'undefined')\n\t\t{\n\t\t\tBX.onCustomEvent(window, 'onPullStatus', [status]);\n\t\t}\n\n\t\tthis.#emitter.emit({\n\t\t\ttype: SubscriptionType.Status,\n\t\t\tdata: {\n\t\t\t\tstatus,\n\t\t\t},\n\t\t});\n\t}\n\n\textendWatch(tag, force)\n\t{\n\t\tthis.tagWatcher.extend(tag, force);\n\t}\n\n\tclearWatch(tagId)\n\t{\n\t\tthis.tagWatcher.clear(tagId);\n\t}\n\n\t// old functions, not used anymore.\n\tsetPrivateVar() {}\n\n\treturnPrivateVar() {}\n\n\texpireConfig() {}\n\n\tupdateChannelID() {}\n\n\ttryConnect() {}\n\n\ttryConnectDelay() {}\n\n\ttryConnectSet() {}\n\n\tupdateState() {}\n\n\tsetUpdateStateStepCount() {}\n\n\tsupportWebSocket(): boolean\n\t{\n\t\treturn this.isWebSocketSupported();\n\t}\n\n\tisWebSoketConnected(): boolean\n\t{\n\t\treturn this.isConnected() && this.connectionType === ConnectionType.WebSocket;\n\t}\n\n\tgetPullServerStatus(): boolean\n\t{\n\t\treturn this.isConnected();\n\t}\n\n\tcloseConfirm()\n\t{\n\t\tif (this.notificationPopup)\n\t\t{\n\t\t\tthis.notificationPopup.destroy();\n\t\t}\n\t}\n}\n\nfunction getGlobalParam(name: string, defaultValue: string): string\n{\n\tif (typeof BX.message !== 'undefined' && name in BX.message)\n\t{\n\t\treturn BX.message[name];\n\t}\n\n\treturn defaultValue;\n}\n\nfunction getGlobalParamInt(name: string, defaultValue: number): number\n{\n\tif (typeof BX.message !== 'undefined' && name in BX.message)\n\t{\n\t\treturn parseInt(BX.message[name], 10);\n\t}\n\n\treturn defaultValue;\n}\n\nfunction getGlobalParamBool(name: string, defaultValue: boolean): boolean\n{\n\tif (typeof BX.message !== 'undefined' && name in BX.message)\n\t{\n\t\treturn BX.message[name] === 'Y';\n\t}\n\n\treturn defaultValue;\n}\n","/**\n * Bitrix Push & Pull\n * Pull client\n *\n * @package bitrix\n * @subpackage pull\n * @copyright 2001-2019 Bitrix\n */\n\n/*              !ATTENTION!\n * Do not use Bitrix CoreJS in this package\n * The client can be instantiated on a page without Bitrix Framework\n */\n\nimport { PullClient } from './client';\n\nexport {\n\tPullClient,\n};\n\nif (!globalThis.BX)\n{\n\tglobalThis.BX = {};\n}\n\nif (!BX.PULL)\n{\n\tBX.PULL = new PullClient();\n}\n\nBX.PullClient = PullClient;\n"],"names":["REVISION","ConnectionType","WebSocket","LongPolling","PullStatus","Online","Offline","Connecting","SenderType","Unknown","Client","Backend","SubscriptionType","Server","Status","Revision","CloseReasons","NORMAL_CLOSURE","SERVER_DIE","CONFIG_REPLACED","CHANNEL_EXPIRED","SERVER_RESTARTED","CONFIG_EXPIRED","MANUAL","STUCK","BACKEND_ERROR","WRONG_CHANNEL_ID","ServerMode","Shared","Personal","isString","item","String","isArray","Object","prototype","toString","call","isDomNode","isDate","isPlainObject","Boolean","constructor","isNotEmptyString","length","isJsonRpcRequest","jsonrpc","method","isJsonRpcResponse","buildQueryString","params","result","key","keys","value","index","valueElement","entries","left","encodeURIComponent","right","slice","Math","max","clone","obj","bCopyObj","_obj","i","l","cloneNode","Date","hasOwnProperty","getDateForLog","d","getFullYear","lpad","getMonth","getDate","getHours","getMinutes","str","chr","Emitter","options","debug","userStatusCallbacks","logger","subscribe","isObject","TypeError","attachCommandHandler","command","moduleId","callback","type","callbacks","commands","push","filter","element","handler","isFunction","getModuleId","getSubscriptionType","values","includes","Error","data","findHandlerMethod","loggableData","JSON","stringify","log","extra","emit","forEach","broadcastMessage","message","module_id","toLowerCase","logMessage","sender","emitClientEvent","server_time_ago","emitOnlineEvent","emitUserStatusChange","user_id","online","emitServerEvent","e","console","error","BX","globalThis","onCustomEvent","window","addUserStatusCallback","userId","removeUserStatusCallback","cb","hasUserStatusCallbacks","isOnline","getSubscribedUsersList","Number","capturePullEvent","debugFlag","info","getMap","mapping","bind","methodName","getDefaultHandlerMethodName","charAt","toUpperCase","ErrorNotConnected","name","ErrorTimeout","JSON_RPC_VERSION","RpcError","Parse","code","InvalidRequest","MethodNotFound","InvalidParams","Internal","JsonRpc","EventTarget","idCounter","handlers","rpcResponseAwaiters","Map","handle","eventType","events","addEventListener","executeOutgoingRpcCommand","timeout","Promise","resolve","reject","request","createRequest","send","t","setTimeout","delete","id","set","executeOutgoingRpcBatch","batch","requests","promises","processRpcResponse","response","has","awaiter","get","clearTimeout","dispatchEvent","CustomEvent","handleIncomingMessage","decoded","parse","Utils","executeIncomingRpcBatch","commandResult","executeIncomingRpcCommand","undefined","createErrorResponse","createResponse","nextId","createPublishRequest","messageBatch","map","WorkerConnectorEvents","Message","RevisionChanged","ConnectionStatus","WORKER_PATH","WORKER_NAME","WorkerConnector","isSharedWorkerSupported","connectionType","connectionStatus","isJsonRpcConnection","bundleTimestamp","configTimestamp","eventName","worker","SharedWorker","rpcAdapter","createRpcAdapter","port","start","onPortMessage","onOffline","onOnline","onPageHide","m","postMessage","ready","handleReady","incomingMessage","revisionChanged","handleRevisionChanged","connectionStatusChanged","handleConnectionStatusChanged","setPublicIds","publicIds","sendMessage","users","expiry","sendMessageBatch","sendMessageToChannels","publicChannels","connect","getUsersLastSeen","userList","listChannels","isJsonRpc","subscribeUserStatusChange","unsubscribeUserStatusChange","isWebSocketConnected","getConnectionPath","getServerMode","onLoginSuccess","payload","detail","revision","status","isConnected","pingWorker","getWorkerLog","getWorkerConfig","disconnect","warn","scheduleReconnect","resetSession","MiniRest","sessid","queryParams","callMethod","_","__","logTag","lt","url","responseStatus","fetch","getFetchOptions","json","RestCompatResult","error_description","fallbackResponse","isError","query","getSessid","headers","credentials","body","bitrix_sessid","answer","ex","RestCompatError","time","getError","getStatus","description","TagWatcher","queue","watchUpdateInterval","watchForceUpdateInterval","restClient","extend","tag","force","scheduleUpdate","clear","tagId","watchUpdateTimeout","update","watchTags","tags","updatedTags","StorageManager","USER_ID","siteId","SITE_ID","localStorage","encoded","setItem","getKey","defaultValue","getItem","remove","removeItem","compareKey","eventKey","userKey","OFFLINE_STATUS_DELAY","LS_SESSION","LS_SESSION_CACHE_TIME","PullClient","getLogger","restApplication","configGetMethod","skipCheckRevision","serverEnabled","context","guestMode","getGlobalParam","guestUserId","getGlobalParamInt","createRestClint","customRestClient","enabled","pull_server_enabled","unloading","starting","connectionAttempt","restartTimeout","restoreWebSocketTimeout","getPublicListMethod","skipStorageInit","tagWatcher","config","storage","notificationPopup","checkInterval","offlineTimeout","isManualDisconnect","loggingEnabled","connector","session","sendPullStatusDelayed","sendPullStatus","startConfig","sharedWorkerAllowed","getGlobalParamBool","restoreSession","skipReconnectToLastSession","createConnector","createWorkerConnector","onBeforeUnload","configHolder","createConfigHolder","loadConfig","scheduleRestart","init","Connector","ConnectorEvents","onMessage","ChannelReplaced","onChannelReplaced","ConfigExpired","onConfigExpired","onConnectionStatus","ConnectionError","onConnectionError","onRevisionChanged","desktop","addCustomEvent","restart","ConfigHolder","ConfigHolderEvents","logToConsole","pull_guest_id","setLastMessageId","lastMessageId","mid","restoreUserStatusSubscription","emitAuthError","every","ping","disconnectCode","disconnectReason","restartDelay","delay","ceil","random","loadConfigReason","replaceAll","setConfig","stop","logForce","isPublishingSupported","isPublishingEnabled","reason","checkRevision","ttl","now","serverRevision","showNotification","server","client","text","PopupWindow","zIndex","autoHide","closeByEsc","overlay","content","create","props","className","html","buttons","PopupWindowButton","click","close","onPopupClose","destroy","onPopupDestroy","show","getDebugInfo","configDump","channels","ChannelID","private","ChannelDie","end","ChannelDieShared","shared","websocketMode","isProtobufSupported","UserId","navigator","onLine","Connect","isWebSocketSupported","reconnectTimeout","Path","history","enableLogging","loggingFlag","extendWatch","clearWatch","setPrivateVar","returnPrivateVar","expireConfig","updateChannelID","tryConnect","tryConnectDelay","tryConnectSet","updateState","setUpdateStateStepCount","supportWebSocket","isWebSoketConnected","getPullServerStatus","closeConfirm","parseInt","PULL"],"mappings":"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"}

Youez - 2016 - github.com/yon3zu
LinuXploit