UNPKG

@bitrix24/b24jssdk

Version:

Bitrix24 REST API JavaScript SDK

1 lines 5.5 kB
{"version":3,"file":"version-manager.mjs","sources":["../../../src/core/version-manager.ts"],"sourcesContent":["import { ApiVersion } from '../types/b24'\nimport type {\n BatchCommandsArrayUniversal,\n BatchCommandsObjectUniversal,\n BatchNamedCommandsUniversal\n} from '../types/http'\nimport { ParseRow } from './interaction/batch/parse-row'\nimport { SdkError } from './sdk-error'\n\n/**\n * @todo add docs ??\n */\nclass VersionManager {\n #supportMethods: string[]\n\n constructor() {\n /**\n * get from https://{portal}/rest/api/{user_id}/{webhook}/documentation\n * @see https://apidocs.bitrix24.com/api-reference/rest-v3/index.html#openapi\n */\n this.#supportMethods = [\n '/batch', // done\n '/scopes', // done\n '/rest.scope.list', // done\n '/rest.documentation.openapi',\n '/documentation',\n /** @see /settings/configs/event_log.php */\n '/main.eventlog.list', // done\n '/main.eventlog.get', // done\n '/main.eventlog.tail', // done\n '/tasks.task.chat.message.send',\n '/tasks.task.access.get',\n '/tasks.task.file.attach',\n '/tasks.task.update', // done\n '/tasks.task.delete',\n '/tasks.task.add',\n '/tasks.task.get' // done\n // @todo When API.v3 arrives - change in AuthOAuthManager.initIsAdmin()\n // '/profile' // waite\n // '/main.message.get' // waite\n // '/main.chat.update' // waite\n // '/main.chat.list' // waite\n // '/main.user.list' // waite\n ]\n }\n\n static create(): VersionManager {\n return new VersionManager()\n }\n\n /**\n * List of supported API versions\n * The highest version must be first\n */\n public getAllApiVersions(): ApiVersion[] {\n return [ApiVersion.v3, ApiVersion.v2]\n }\n\n public isSupport(version: ApiVersion, method: string): boolean {\n switch (version) {\n case ApiVersion.v3:\n return this.#v3Support(method)\n case ApiVersion.v2:\n return true\n }\n\n return false\n }\n\n #v3Support(method: string): boolean {\n return this.#supportMethods.includes(`/${method}`)\n }\n\n /**\n * Automatically obtain the API version\n */\n public automaticallyObtainApiVersion(method: string): ApiVersion {\n const version = this.getAllApiVersions().find(version => versionManager.isSupport(version, method))\n if (!version) {\n throw new SdkError({\n code: 'JSSDK_VERSION_MANAGER_NOT_DETECT_FOR_METHOD',\n description: `No API version found that supports method ${method}.`,\n status: 500\n })\n }\n\n return version\n }\n\n /**\n * Automatically obtain the API version for Batch\n *\n * @todo test methods\n * `[['crm.item.get', { entityTypeId: 3, id: 1 }]]`\n * `[{ method: 'crm.item.get', params: { entityTypeId: 3, id: 1 } }]`\n * `{ cmd1: { method: 'crm.item.get', params: { entityTypeId: 3, id: 1 } }, cmd2: ['crm.item.get', { entityTypeId: 2, id: 2 }] }`\n */\n public automaticallyObtainApiVersionForBatch(\n calls: BatchCommandsArrayUniversal | BatchCommandsObjectUniversal | BatchNamedCommandsUniversal\n ): ApiVersion {\n const commands = ParseRow.getMethodsFromCommands(calls)\n\n let isAllSupportV3 = true\n for (const [_, method] of commands.entries()) {\n if (!this.isSupport(ApiVersion.v3, method)) {\n isAllSupportV3 = false\n break\n }\n }\n\n if (isAllSupportV3) {\n return ApiVersion.v3\n }\n return ApiVersion.v2\n }\n}\n\nexport const versionManager = VersionManager.create()\n"],"names":["version"],"mappings":";;;;;;;;;;;;;;AAYA,MAAM,cAAA,CAAe;AAAA,EAZrB;AAYqB,IAAA,MAAA,CAAA,IAAA,EAAA,gBAAA,CAAA;AAAA;AAAA,EACnB,eAAA;AAAA,EAEA,WAAA,GAAc;AAKZ,IAAA,IAAA,CAAK,eAAA,GAAkB;AAAA,MACrB,QAAA;AAAA;AAAA,MACA,SAAA;AAAA;AAAA,MACA,kBAAA;AAAA;AAAA,MACA,6BAAA;AAAA,MACA,gBAAA;AAAA;AAAA,MAEA,qBAAA;AAAA;AAAA,MACA,oBAAA;AAAA;AAAA,MACA,qBAAA;AAAA;AAAA,MACA,+BAAA;AAAA,MACA,wBAAA;AAAA,MACA,yBAAA;AAAA,MACA,oBAAA;AAAA;AAAA,MACA,oBAAA;AAAA,MACA,iBAAA;AAAA,MACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAOF;AAAA,EACF;AAAA,EAEA,OAAO,MAAA,GAAyB;AAC9B,IAAA,OAAO,IAAI,cAAA,EAAe;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMO,iBAAA,GAAkC;AACvC,IAAA,OAAO,CAAC,UAAA,CAAW,EAAA,EAAI,UAAA,CAAW,EAAE,CAAA;AAAA,EACtC;AAAA,EAEO,SAAA,CAAU,SAAqB,MAAA,EAAyB;AAC7D,IAAA,QAAQ,OAAA;AAAS,MACf,KAAK,UAAA,CAAW,EAAA;AACd,QAAA,OAAO,IAAA,CAAK,WAAW,MAAM,CAAA;AAAA,MAC/B,KAAK,UAAA,CAAW,EAAA;AACd,QAAA,OAAO,IAAA;AAAA;AAGX,IAAA,OAAO,KAAA;AAAA,EACT;AAAA,EAEA,WAAW,MAAA,EAAyB;AAClC,IAAA,OAAO,IAAA,CAAK,eAAA,CAAgB,QAAA,CAAS,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE,CAAA;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA,EAKO,8BAA8B,MAAA,EAA4B;AAC/D,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,iBAAA,EAAkB,CAAE,IAAA,CAAK,CAAAA,QAAAA,KAAW,cAAA,CAAe,SAAA,CAAUA,QAAAA,EAAS,MAAM,CAAC,CAAA;AAClG,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,MAAM,IAAI,QAAA,CAAS;AAAA,QACjB,IAAA,EAAM,6CAAA;AAAA,QACN,WAAA,EAAa,6CAA6C,MAAM,CAAA,CAAA,CAAA;AAAA,QAChE,MAAA,EAAQ;AAAA,OACT,CAAA;AAAA,IACH;AAEA,IAAA,OAAO,OAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUO,sCACL,KAAA,EACY;AACZ,IAAA,MAAM,QAAA,GAAW,QAAA,CAAS,sBAAA,CAAuB,KAAK,CAAA;AAEtD,IAAA,IAAI,cAAA,GAAiB,IAAA;AACrB,IAAA,KAAA,MAAW,CAAC,CAAA,EAAG,MAAM,CAAA,IAAK,QAAA,CAAS,SAAQ,EAAG;AAC5C,MAAA,IAAI,CAAC,IAAA,CAAK,SAAA,CAAU,UAAA,CAAW,EAAA,EAAI,MAAM,CAAA,EAAG;AAC1C,QAAA,cAAA,GAAiB,KAAA;AACjB,QAAA;AAAA,MACF;AAAA,IACF;AAEA,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,OAAO,UAAA,CAAW,EAAA;AAAA,IACpB;AACA,IAAA,OAAO,UAAA,CAAW,EAAA;AAAA,EACpB;AACF;AAEO,MAAM,cAAA,GAAiB,eAAe,MAAA;;;;"}