@bitrix24/b24jssdk
Version:
Bitrix24 REST API JavaScript SDK
1 lines • 9.9 kB
Source Map (JSON)
{"version":3,"file":"abstract-b24.cjs","sources":["../../../src/core/abstract-b24.ts"],"sourcesContent":["import type { LoggerInterface } from '../logger'\nimport type { TypeB24 } from '../types/b24'\nimport type { TypeHttp, TypeHttpOptions } from '../types/http'\nimport type { AuthActions } from '../types/auth'\nimport type { RestrictionParams } from '../types/limiters'\nimport { SdkError } from './sdk-error'\nimport { ApiVersion } from '../types/b24'\nimport { versionManager } from './version-manager'\nimport { LoggerFactory } from '../logger'\n// Internal diagnostic — imported from the module directly so it stays off the\n// package's public surface (`logger/index.ts` is re-exported from `src/index.ts`).\nimport { warnOnNonPromiseLogger } from '../logger/assert-logger-shape'\nimport { ActionsManager } from './actions/manager'\nimport { ToolsManager } from './tools/manager'\n\n/**\n * Abstract base class for all SDK entry points (B24Frame, B24Hook, etc.).\n * Owns the HTTP clients for REST API v2 and v3, the actions surface via {@link ActionsManager},\n * and built-in tools via {@link ToolsManager}.\n * Concrete subclasses must implement authentication and HTTP transport initialization.\n */\nexport abstract class AbstractB24 implements TypeB24 {\n protected _isInit: boolean = false\n protected _httpV2: null | TypeHttp = null\n protected _httpV3: null | TypeHttp = null\n protected _logger: LoggerInterface\n\n protected _actionsManager: ActionsManager\n protected _toolsManager: ToolsManager\n\n // region Init ////\n protected constructor() {\n this._isInit = false\n this._logger = LoggerFactory.createNullLogger()\n\n this._actionsManager = new ActionsManager(this)\n this._toolsManager = new ToolsManager(this)\n }\n\n /**\n * @inheritDoc\n */\n get isInit(): boolean {\n return this._isInit\n }\n\n public async init(): Promise<void> {\n this._isInit = true\n return\n }\n\n public destroy(): void {}\n // endregion ////\n\n // region Core ////\n abstract get auth(): AuthActions\n\n get actions(): ActionsManager {\n this._ensureInitialized()\n return this._actionsManager\n }\n\n get tools(): ToolsManager {\n this._ensureInitialized()\n return this._toolsManager\n }\n\n /**\n * @inheritDoc\n */\n public abstract getTargetOrigin(): string\n\n /**\n * @inheritDoc\n */\n public abstract getTargetOriginWithPath(): Map<ApiVersion, string>\n\n // endregion ////\n\n // region Tools ////\n /**\n * @inheritDoc\n */\n public getHttpClient(version: ApiVersion): TypeHttp {\n this._ensureInitialized()\n\n switch (version) {\n case ApiVersion.v3:\n if (null === this._httpV3) {\n throw new SdkError({\n code: 'JSSDK_CORE_B24_HTTP_V3_NOT_INIT',\n description: `HttpV3 not init`,\n status: 500\n })\n }\n return this._httpV3\n case ApiVersion.v2:\n if (null === this._httpV2) {\n throw new SdkError({\n code: 'JSSDK_CORE_B24_HTTP_V2_NOT_INIT',\n description: `HttpV2 not init`,\n status: 500\n })\n }\n return this._httpV2\n }\n throw new SdkError({\n code: 'JSSDK_CORE_B24_API_WRONG',\n description: `Wrong Api Version ${version}`,\n status: 500\n })\n }\n\n /**\n * @inheritDoc\n */\n public setHttpClient(version: ApiVersion, client: TypeHttp): void {\n switch (version) {\n case ApiVersion.v3:\n this._httpV3 = client\n return\n case ApiVersion.v2:\n this._httpV2 = client\n return\n }\n throw new SdkError({\n code: 'JSSDK_CORE_B24_API_WRONG',\n description: `Wrong Api Version ${version}`,\n status: 500\n })\n }\n\n public setLogger(logger: LoggerInterface): void {\n // Checked here, at the entry point callers actually use, rather than in each\n // of the internal `setLogger` methods below — those receive `this._logger`,\n // which has already been through this. (#346)\n warnOnNonPromiseLogger(logger, 'B24 client')\n this._logger = logger\n\n this._actionsManager.setLogger(this._logger)\n this._toolsManager.setLogger(this._logger)\n\n versionManager.getAllApiVersions().forEach((version) => {\n this.getHttpClient(version).setLogger(this._logger)\n })\n }\n\n public getLogger(): LoggerInterface {\n return this._logger\n }\n\n /**\n * @inheritDoc\n */\n /**\n * Applies the parameters to every API version's client.\n *\n * `Promise.all`, not `allSettled`: a rejection here means the policy was not\n * applied, and swallowing it made the call resolve while the client kept\n * running the old configuration — or, when a malformed limiter block reached\n * a sub-limiter, while it ran on nothing at all. A caller must be able to see\n * that their policy did not take. (#479)\n *\n * All versions receive the same object, so a value read from one client is\n * written to all of them.\n */\n public async setRestrictionManagerParams(params: RestrictionParams): Promise<void> {\n const promises = versionManager.getAllApiVersions().map(version =>\n this.getHttpClient(version).setRestrictionManagerParams(params)\n )\n\n await Promise.all(promises)\n }\n\n /**\n * Axios config handed to both transports at construction.\n *\n * `null` by default: the transports already choose sensible defaults, and an\n * entry point that takes no such option from its caller has nothing to add.\n * The entry points that do accept one assign this before building the clients.\n *\n * Whatever lands here is filtered against the allowlist in `pickHttpOptions`\n * and then spread **after** the transport's own defaults, so a caller wins on\n * any key the allowlist accepts — including `adapter`, which is the reason\n * this channel is open to callers at all. A key outside it is dropped at\n * construction and its name logged.\n */\n protected _httpOptions: null | TypeHttpOptions = null\n\n /**\n * Settings for the http connection, read once per transport at construction.\n *\n * @protected\n */\n protected _getHttpOptions(): null | TypeHttpOptions {\n return this._httpOptions\n }\n\n /**\n * Generates an object not initialized error\n * @protected\n */\n protected _ensureInitialized(): void {\n if (!this._isInit) {\n throw new SdkError({\n code: 'JSSDK_CORE_B24_NOT_INIT',\n description: `B24 not initialized`,\n status: 500\n })\n }\n }\n // endregion ////\n}\n"],"names":["LoggerFactory","ActionsManager","ToolsManager","ApiVersion","SdkError","warnOnNonPromiseLogger","versionManager"],"mappings":"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"}