{"version":3,"sources":["../src/app.ts"],"names":[],"mappings":"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","file":"app.mjs","sourcesContent":["import * as http from '@teams.sdk/common/http';\nimport { Logger, ConsoleLogger } from '@teams.sdk/common/logging';\nimport { Credentials } from '@teams.sdk/api';\n\nimport * as window from './window';\nimport { Context, mapContext } from './context';\n\nexport type AppOptions = Partial<Credentials> & {\n  /**\n   * the app base url\n   */\n  readonly baseUrl?: string;\n\n  /**\n   * logger instance to use\n   */\n  readonly logger?: Logger;\n};\n\ninterface AppConnect {\n  /**\n   * the app id\n   */\n  readonly id: string;\n\n  /**\n   * the app name\n   */\n  readonly name: {\n    readonly short: string;\n    readonly full: string;\n  };\n}\n\nexport class App {\n  /**\n   * the apps logger\n   */\n  log: Logger;\n\n  /**\n   * the app id\n   */\n  get id() {\n    return this._id;\n  }\n  protected _id?: string;\n\n  /**\n   * the app name\n   */\n  get name() {\n    return this._name;\n  }\n  protected _name?: string;\n\n  /**\n   * the app/window context\n   */\n  get context() {\n    if (!this._context) {\n      throw new Error('app not connected');\n    }\n\n    return this._context;\n  }\n  protected _context?: Context;\n\n  /**\n   * the date/time when the app\n   * successfully connected\n   */\n  get connectedAt() {\n    return this._connectedAt;\n  }\n  protected _connectedAt?: Date;\n\n  /**\n   * the sdk runtime\n   */\n  get runtime() {\n    if (!this._runtime) {\n      throw new Error('app not connected');\n    }\n\n    return this._runtime;\n  }\n  protected _runtime?: window.Runtime;\n\n  readonly options: AppOptions;\n  readonly http: http.Client;\n  readonly parent: window.Client;\n\n  constructor(options?: AppOptions) {\n    this.options = options || {};\n    this.log = options?.logger || new ConsoleLogger('@teams.sdk/client');\n    this.http = new http.Client({ baseUrl: options?.baseUrl });\n    this.parent = new window.Client(this.log);\n  }\n\n  /**\n   * connect to the host app\n   */\n  async connect() {\n    if (this.connectedAt) {\n      return this.context;\n    }\n\n    const res = await this.http.get<AppConnect>('/');\n    this._id = res.data.id;\n    this._name = res.data.name.short;\n\n    if (this._name) {\n      this.log = this.options.logger || new ConsoleLogger(`@teams.sdk/${this._name}`);\n    }\n\n    const { runtime } = await this.parent.initialize();\n    this._runtime = runtime;\n\n    const context = await this.parent.getContext();\n    this._context = mapContext(context);\n\n    this._connectedAt = new Date();\n    return this.context;\n  }\n\n  /**\n   * execute a server-side function\n   * @param name the unique function name\n   * @param data the data to send\n   * @returns the function response\n   */\n  async exec<T = any>(name: string, data?: any) {\n    const res = await this.http.post<T>(`/api/functions/${name}`, data, {\n      headers: {\n        'x-spark-app-id': this.context.app.id,\n        'x-spark-app-session-id': this.context.app.sessionId,\n        'x-spark-app-client-id': this.options.clientId,\n        'x-spark-app-client-secret': this.options.clientSecret,\n        'x-spark-app-tenant-id': this.options.tenantId,\n        'x-spark-tenant-id': this.context.user?.tenant?.id,\n        'x-spark-user-id': this.context.user?.id,\n        'x-spark-team-id': this.context.team?.internalId,\n        'x-spark-message-id': this.context.app.parentMessageId,\n        'x-spark-channel-id': this.context.channel?.id,\n        'x-spark-chat-id': this.context.chat?.id,\n        'x-spark-meeting-id': this.context.meeting?.id,\n        'x-spark-page-id': this.context.page.id,\n        'x-spark-sub-page-id': this.context.page.subPageId,\n      },\n    });\n\n    return res.data;\n  }\n\n  /**\n   * get the auth user\n   */\n  async getUser() {\n    const res = await this.parent.authentication.getUser();\n    return res;\n  }\n\n  /**\n   * get the auth users token\n   */\n  async getUserToken(params?: window.AuthTokenRequestParams) {\n    const token = await this.parent.authentication.getToken(params);\n    return token;\n  }\n\n  /**\n   * get chat members\n   */\n  async getChatMembers() {\n    const members = await this.parent.conversation.getMembers();\n    return members;\n  }\n}\n"]}