UNPKG

@microsoft/teams.api

Version:

<p> <a href="https://www.npmjs.com/package/@microsoft/teams.api" target="_blank"> <img src="https://img.shields.io/npm/v/@microsoft/teams.api/latest" /> </a> <a href="https://www.npmjs.com/package/@microsoft/teams.api?activeTab=code" t

1 lines 3.55 kB
{"version":3,"sources":["../../src/auth/json-web-token.ts"],"names":[],"mappings":";;;AASO,MAAM,YAA+B,CAAA;AAAA,EAC1C,IAAI,QAAW,GAAA;AACb,IAAA,OAAO,KAAK,QAAS,CAAA,GAAA;AAAA;AACvB,EAEA,IAAI,MAAS,GAAA;AACX,IAAA,OAAO,KAAK,QAAS,CAAA,GAAA;AAAA;AACvB,EAEA,IAAI,KAA4B,GAAA;AAC9B,IAAO,OAAA,IAAA,CAAK,SAAS,KAAK,CAAA;AAAA;AAC5B,EAEA,IAAI,KAAgB,GAAA;AAClB,IAAO,OAAA,IAAA,CAAK,SAAS,OAAO,CAAA;AAAA;AAC9B,EAEA,IAAI,cAAqC,GAAA;AACvC,IAAO,OAAA,IAAA,CAAK,SAAS,iBAAiB,CAAA;AAAA;AACxC,EAEA,IAAI,QAA+B,GAAA;AACjC,IAAO,OAAA,IAAA,CAAK,SAAS,KAAK,CAAA;AAAA;AAC5B,EAEA,IAAI,OAA8B,GAAA;AAChC,IAAO,OAAA,IAAA,CAAK,SAAS,SAAS,CAAA;AAAA;AAChC,EAEA,IAAI,UAAqB,GAAA;AACvB,IAAA,IAAI,CAAY,GAAA,IAAA,CAAK,QAAS,CAAA,YAAY,CAAK,IAAA,uCAAA;AAE/C,IAAI,IAAA,CAAA,CAAE,QAAS,CAAA,GAAG,CAAG,EAAA;AACnB,MAAA,CAAA,GAAI,CAAE,CAAA,KAAA,CAAM,CAAG,EAAA,CAAA,CAAE,SAAS,CAAC,CAAA;AAAA;AAG7B,IAAO,OAAA,CAAA;AAAA;AACT,EAEA,IAAI,IAAmB,GAAA;AACrB,IAAA,IAAI,KAAK,KAAO,EAAA;AACd,MAAO,OAAA,KAAA;AAAA;AAGT,IAAO,OAAA,OAAA;AAAA;AACT,EAEA,IAAI,MAAiB,GAAA;AACnB,IAAI,IAAA,IAAA,CAAK,SAAS,KAAO,EAAA;AACvB,MAAA,OAAO,CAAG,EAAA,SAAA,CAAU,GAAG,CAAA,CAAA,EAAI,KAAK,KAAK,CAAA,CAAA;AAAA;AAGvC,IAAA,OAAO,SAAU,CAAA,KAAA;AAAA;AACnB,EAEA,IAAI,UAAiC,GAAA;AACnC,IAAI,IAAA,IAAA,CAAK,SAAS,GAAK,EAAA;AACrB,MAAO,OAAA,IAAA,CAAK,SAAS,GAAM,GAAA,GAAA;AAAA;AAG7B,IAAO,OAAA,MAAA;AAAA;AACT,EAEiB,MAAA;AAAA,EACA,QAAA;AAAA,EAEjB,YAAY,KAAe,EAAA;AACzB,IAAA,IAAA,CAAK,MAAS,GAAA,KAAA;AACd,IAAK,IAAA,CAAA,QAAA,GAAW,UAAU,KAAK,CAAA;AAAA;AACjC,EAEA,SAAU,CAAA,QAAA,GAAW,GAAO,GAAA,EAAA,GAAK,CAAG,EAAA;AAClC,IAAI,IAAA,CAAC,IAAK,CAAA,UAAA,EAAmB,OAAA,KAAA;AAC7B,IAAA,OAAO,IAAK,CAAA,UAAA,GAAa,IAAK,CAAA,GAAA,EAAQ,GAAA,QAAA;AAAA;AACxC,EAEA,QAAW,GAAA;AACT,IAAA,OAAO,IAAK,CAAA,MAAA;AAAA;AAEhB","file":"json-web-token.mjs","sourcesContent":["import { jwtDecode, JwtPayload } from 'jwt-decode';\n\nimport { CallerIds, CallerType } from './caller';\nimport { IToken } from './token';\n\nexport type JsonWebTokenPayload = JwtPayload & {\n readonly [key: string]: any;\n};\n\nexport class JsonWebToken implements IToken {\n get audience() {\n return this._payload.aud;\n }\n\n get issuer() {\n return this._payload.iss;\n }\n\n get keyId(): string | undefined {\n return this._payload['kid'];\n }\n\n get appId(): string {\n return this._payload['appid'];\n }\n\n get appDisplayName(): string | undefined {\n return this._payload['app_displayname'];\n }\n\n get tenantId(): string | undefined {\n return this._payload['tid'];\n }\n\n get version(): string | undefined {\n return this._payload['version'];\n }\n\n get serviceUrl(): string {\n let v: string = this._payload['serviceurl'] || 'https://smba.trafficmanager.net/teams';\n\n if (v.endsWith('/')) {\n v = v.slice(0, v.length - 1);\n }\n\n return v;\n }\n\n get from(): CallerType {\n if (this.appId) {\n return 'bot';\n }\n\n return 'azure';\n }\n\n get fromId(): string {\n if (this.from === 'bot') {\n return `${CallerIds.bot}:${this.appId}`;\n }\n\n return CallerIds.azure;\n }\n\n get expiration(): number | undefined {\n if (this._payload.exp) {\n return this._payload.exp * 1000;\n }\n\n return undefined;\n }\n\n private readonly _value: string;\n private readonly _payload: JsonWebTokenPayload;\n\n constructor(value: string) {\n this._value = value;\n this._payload = jwtDecode(value);\n }\n\n isExpired(bufferMs = 1000 * 60 * 5) {\n if (!this.expiration) return false;\n return this.expiration < Date.now() + bufferMs;\n }\n\n toString() {\n return this._value;\n }\n}\n"]}