{"version":3,"file":"auth.mjs","sources":["../../../src/frame/auth.ts"],"sourcesContent":["import type { AppFrame } from './frame'\nimport type { MessageManager } from './message'\nimport type { AuthActions, AuthData, RefreshAuthData, MessageInitData } from '../types/auth'\nimport type { ApiVersion } from '../types/b24'\nimport { MessageCommands } from './message'\n\n/**\n * Authorization Manager\n */\nexport class AuthManager implements AuthActions {\n  #accessToken: null | string = null\n  #refreshId: null | string = null\n  #authExpires: number = 0\n  #authExpiresIn: number = 0\n  #memberId: null | string = null\n\n  #isAdmin: boolean = false\n\n  #appFrame: AppFrame\n  #messageManager: MessageManager\n\n  constructor(\n    appFrame: AppFrame,\n    messageManager: MessageManager\n  ) {\n    this.#appFrame = appFrame\n    this.#messageManager = messageManager\n  }\n\n  /**\n   * Initializes the data received from the parent window message.\n   * @param data\n   */\n  public initData(data: MessageInitData): AuthManager {\n    if (data.AUTH_ID) {\n      this.#accessToken = data.AUTH_ID\n      this.#refreshId = data.REFRESH_ID\n      this.#authExpiresIn = Number.parseInt(data.AUTH_EXPIRES)\n      this.#authExpires = Date.now() + this.#authExpiresIn * 1_000\n\n      this.#isAdmin = data.IS_ADMIN\n      this.#memberId = data.MEMBER_ID || ''\n    }\n\n    return this\n  }\n\n  /**\n   * Returns authorization data\n   *\n   * @link https://apidocs.bitrix24.com/sdk/bx24-js-sdk/system-functions/bx24-get-auth.html\n   */\n  public getAuthData(): false | AuthData {\n    return this.#authExpires > Date.now()\n      ? ({\n          access_token: this.#accessToken,\n          refresh_token: this.#refreshId,\n          expires: this.#authExpires / 1_000,\n          expires_in: this.#authExpiresIn,\n          domain: this.#appFrame.getTargetOrigin(),\n          member_id: this.#memberId\n        } as AuthData)\n      : false\n  }\n\n  /**\n   * Updates authorization data through the parent window\n   *\n   * @link https://apidocs.bitrix24.com/sdk/bx24-js-sdk/system-functions/bx24-refresh-auth.html\n   */\n  public async refreshAuth(): Promise<AuthData> {\n    return this.#messageManager\n      .send(MessageCommands.refreshAuth, {})\n      .then((data: RefreshAuthData) => {\n        this.#accessToken = data.AUTH_ID\n        this.#refreshId = data.REFRESH_ID\n        this.#authExpires = Date.now() + Number.parseInt(data.AUTH_EXPIRES) * 1_000\n\n        return Promise.resolve(this.getAuthData() as AuthData)\n      })\n  }\n\n  public getUniq(prefix: string): string {\n    return [prefix, this.#memberId || ''].join('_')\n  }\n\n  /**\n   * Determines whether the current user has administrator rights\n   *\n   * @link https://apidocs.bitrix24.com/sdk/bx24-js-sdk/additional-functions/bx24-is-admin.html\n   */\n  get isAdmin(): boolean {\n    return this.#isAdmin\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getTargetOrigin(): string {\n    return this.#appFrame.getTargetOrigin()\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getTargetOriginWithPath(): Map<ApiVersion, string> {\n    return this.#appFrame.getTargetOriginWithPath()\n  }\n}\n"],"names":[],"mappings":"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"}