UNPKG

@bitrix24/b24jssdk

Version:

Bitrix24 REST API JavaScript SDK

1 lines 6.87 kB
{"version":3,"file":"b24.mjs","sources":["../../../src/hook/b24.ts"],"sourcesContent":["import type { AuthActions, B24HookParams } from '../types/auth'\nimport type { RestrictionParams } from '../types/limiters'\nimport type { TypeB24, ApiVersion } from '../types/b24'\nimport { AbstractB24 } from '../core/abstract-b24'\nimport { HttpV2 } from '../core/http/v2'\nimport { HttpV3 } from '../core/http/v3'\nimport { AuthHookManager } from './auth'\nimport { versionManager } from '../core/version-manager'\n\n/**\n * B24.Hook Manager.\n *\n * @link https://bitrix24.github.io/b24jssdk/docs/hook/\n *\n * @todo docs\n */\nexport class B24Hook extends AbstractB24 implements TypeB24 {\n readonly #authHookManager: AuthHookManager\n\n // region Init ////\n constructor(\n b24HookParams: B24HookParams,\n options?: {\n restrictionParams?: Partial<RestrictionParams>\n }\n ) {\n super()\n\n this.#authHookManager = new AuthHookManager(\n b24HookParams\n )\n\n const warningText = 'The B24Hook object is intended exclusively for use on the server.\\nA webhook contains a secret access key, which MUST NOT be used in client-side code (browser, mobile app).'\n\n this._httpV2 = new HttpV2(this.#authHookManager, this._getHttpOptions(), options?.restrictionParams)\n this._httpV2.setClientSideWarning(true, warningText)\n this._httpV3 = new HttpV3(this.#authHookManager, this._getHttpOptions(), options?.restrictionParams)\n this._httpV3.setClientSideWarning(true, warningText)\n\n this._isInit = true\n }\n // endregion ////\n\n override get auth(): AuthActions {\n return this.#authHookManager\n }\n\n // region Core ////\n /**\n * Disables warning about client-side query execution\n */\n public offClientSideWarning(): void {\n versionManager.getAllApiVersions().forEach((version) => {\n this.getHttpClient(version).setClientSideWarning(false, '')\n })\n }\n\n // endregion ////\n\n // region Get ////\n /**\n * @inheritDoc\n */\n public override getTargetOrigin(): string {\n this._ensureInitialized()\n return this.#authHookManager.getTargetOrigin()\n }\n\n /**\n * @inheritDoc\n */\n public override getTargetOriginWithPath(): Map<ApiVersion, string> {\n this._ensureInitialized()\n return this.#authHookManager.getTargetOriginWithPath()\n }\n\n // endregion ////\n\n // region Tools ////\n /**\n * Init Webhook from url\n * - ver2 `https://your_domain.bitrix24.com/rest/{id}/{webhook}`\n * - ver3 `https://your_domain.bitrix24.com/rest/api/{id}/{webhook}`\n *\n * @todo docs\n */\n public static fromWebhookUrl(\n url: string,\n options?: { restrictionParams?: Partial<RestrictionParams> }\n ): B24Hook {\n if (!url.trim()) {\n throw new Error('Webhook URL cannot be empty')\n }\n\n let parsedUrl: URL\n\n try {\n parsedUrl = new URL(url.replace('/rest/api', '/rest'))\n } catch {\n throw new Error(`Invalid webhook URL format: ${url}`)\n }\n\n if (parsedUrl.protocol !== 'https:') {\n throw new Error('Webhook requires HTTPS protocol')\n }\n\n const pathParts = parsedUrl.pathname.split('/').filter(Boolean)\n const isValidFormat = (\n // Format: /rest/{id}/{webhook}\n (pathParts.length === 3 && pathParts[0] === 'rest')\n // Format: /rest/api/{id}/{webhook}\n || (pathParts.length === 4 && pathParts[0] === 'rest' && pathParts[1] === 'api')\n )\n\n if (!isValidFormat) {\n throw new Error('Webhook URL must follow format: /rest/<userId>/<secret> or /rest/api/<userId>/<secret>')\n }\n\n // Determine the position of userId and secret depending on the format\n const userIdIndex = pathParts[1] === 'api' ? 2 : 1\n const secretIndex = pathParts[1] === 'api' ? 3 : 2\n\n const userIdStr = pathParts[userIdIndex]!\n const secret = pathParts[secretIndex]!\n\n if (!/^\\d+$/.test(userIdStr)) {\n throw new Error(`User ID must be numeric in webhook URL, received: ${userIdStr}`)\n }\n const userId = Number.parseInt(userIdStr, 10)\n\n return new B24Hook(\n {\n b24Url: parsedUrl.origin,\n userId,\n secret\n },\n options\n )\n }\n // endregion ////\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAgBO,MAAM,gBAAgB,WAAA,CAA+B;AAAA,EAhB5D;AAgB4D,IAAA,MAAA,CAAA,IAAA,EAAA,SAAA,CAAA;AAAA;AAAA,EACjD,gBAAA;AAAA;AAAA,EAGT,WAAA,CACE,eACA,OAAA,EAGA;AACA,IAAA,KAAA,EAAM;AAEN,IAAA,IAAA,CAAK,mBAAmB,IAAI,eAAA;AAAA,MAC1B;AAAA,KACF;AAEA,IAAA,MAAM,WAAA,GAAc,8KAAA;AAEpB,IAAA,IAAA,CAAK,OAAA,GAAU,IAAI,MAAA,CAAO,IAAA,CAAK,kBAAkB,IAAA,CAAK,eAAA,EAAgB,EAAG,OAAA,EAAS,iBAAiB,CAAA;AACnG,IAAA,IAAA,CAAK,OAAA,CAAQ,oBAAA,CAAqB,IAAA,EAAM,WAAW,CAAA;AACnD,IAAA,IAAA,CAAK,OAAA,GAAU,IAAI,MAAA,CAAO,IAAA,CAAK,kBAAkB,IAAA,CAAK,eAAA,EAAgB,EAAG,OAAA,EAAS,iBAAiB,CAAA;AACnG,IAAA,IAAA,CAAK,OAAA,CAAQ,oBAAA,CAAqB,IAAA,EAAM,WAAW,CAAA;AAEnD,IAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AAAA,EACjB;AAAA;AAAA,EAGA,IAAa,IAAA,GAAoB;AAC/B,IAAA,OAAO,IAAA,CAAK,gBAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMO,oBAAA,GAA6B;AAClC,IAAA,cAAA,CAAe,iBAAA,EAAkB,CAAE,OAAA,CAAQ,CAAC,OAAA,KAAY;AACtD,MAAA,IAAA,CAAK,aAAA,CAAc,OAAO,CAAA,CAAE,oBAAA,CAAqB,OAAO,EAAE,CAAA;AAAA,IAC5D,CAAC,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQgB,eAAA,GAA0B;AACxC,IAAA,IAAA,CAAK,kBAAA,EAAmB;AACxB,IAAA,OAAO,IAAA,CAAK,iBAAiB,eAAA,EAAgB;AAAA,EAC/C;AAAA;AAAA;AAAA;AAAA,EAKgB,uBAAA,GAAmD;AACjE,IAAA,IAAA,CAAK,kBAAA,EAAmB;AACxB,IAAA,OAAO,IAAA,CAAK,iBAAiB,uBAAA,EAAwB;AAAA,EACvD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,OAAc,cAAA,CACZ,GAAA,EACA,OAAA,EACS;AACT,IAAA,IAAI,CAAC,GAAA,CAAI,IAAA,EAAK,EAAG;AACf,MAAA,MAAM,IAAI,MAAM,6BAA6B,CAAA;AAAA,IAC/C;AAEA,IAAA,IAAI,SAAA;AAEJ,IAAA,IAAI;AACF,MAAA,SAAA,GAAY,IAAI,GAAA,CAAI,GAAA,CAAI,OAAA,CAAQ,WAAA,EAAa,OAAO,CAAC,CAAA;AAAA,IACvD,CAAA,CAAA,MAAQ;AACN,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,4BAAA,EAA+B,GAAG,CAAA,CAAE,CAAA;AAAA,IACtD;AAEA,IAAA,IAAI,SAAA,CAAU,aAAa,QAAA,EAAU;AACnC,MAAA,MAAM,IAAI,MAAM,iCAAiC,CAAA;AAAA,IACnD;AAEA,IAAA,MAAM,YAAY,SAAA,CAAU,QAAA,CAAS,MAAM,GAAG,CAAA,CAAE,OAAO,OAAO,CAAA;AAC9D,IAAA,MAAM,aAAA;AAAA;AAAA,MAEH,UAAU,MAAA,KAAW,CAAA,IAAK,SAAA,CAAU,CAAC,MAAM,MAAA,IAExC,SAAA,CAAU,MAAA,KAAW,CAAA,IAAK,UAAU,CAAC,CAAA,KAAM,MAAA,IAAU,SAAA,CAAU,CAAC,CAAA,KAAM;AAAA,KAAA;AAG5E,IAAA,IAAI,CAAC,aAAA,EAAe;AAClB,MAAA,MAAM,IAAI,MAAM,wFAAwF,CAAA;AAAA,IAC1G;AAGA,IAAA,MAAM,WAAA,GAAc,SAAA,CAAU,CAAC,CAAA,KAAM,QAAQ,CAAA,GAAI,CAAA;AACjD,IAAA,MAAM,WAAA,GAAc,SAAA,CAAU,CAAC,CAAA,KAAM,QAAQ,CAAA,GAAI,CAAA;AAEjD,IAAA,MAAM,SAAA,GAAY,UAAU,WAAW,CAAA;AACvC,IAAA,MAAM,MAAA,GAAS,UAAU,WAAW,CAAA;AAEpC,IAAA,IAAI,CAAC,OAAA,CAAQ,IAAA,CAAK,SAAS,CAAA,EAAG;AAC5B,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,kDAAA,EAAqD,SAAS,CAAA,CAAE,CAAA;AAAA,IAClF;AACA,IAAA,MAAM,MAAA,GAAS,MAAA,CAAO,QAAA,CAAS,SAAA,EAAW,EAAE,CAAA;AAE5C,IAAA,OAAO,IAAI,OAAA;AAAA,MACT;AAAA,QACE,QAAQ,SAAA,CAAU,MAAA;AAAA,QAClB,MAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAAA;AAEF;;;;"}