@microsoft/teamsfx 3.0.3-alpha.ef180c1c1.0 → 4.0.0-alpha.38bb5b8fc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- import{jwtDecode as e}from"jwt-decode";import{app as t,authentication as o}from"@microsoft/teams-js";import{PublicClientApplication as r}from"@azure/msal-browser";import n from"axios";var i,s;!function(e){e.InvalidParameter="InvalidParameter",e.InvalidConfiguration="InvalidConfiguration",e.InvalidCertificate="InvalidCertificate",e.InternalError="InternalError",e.ChannelNotSupported="ChannelNotSupported",e.FailedToRetrieveSsoToken="FailedToRetrieveSsoToken",e.FailedToProcessSsoHandler="FailedToProcessSsoHandler",e.CannotFindCommand="CannotFindCommand",e.FailedToRunSsoStep="FailedToRunSsoStep",e.FailedToRunDedupStep="FailedToRunDedupStep",e.SsoActivityHandlerIsUndefined="SsoActivityHandlerIsUndefined",e.RuntimeNotSupported="RuntimeNotSupported",e.ConsentFailed="ConsentFailed",e.UiRequiredError="UiRequiredError",e.TokenExpiredError="TokenExpiredError",e.ServiceError="ServiceError",e.FailedOperation="FailedOperation",e.InvalidResponse="InvalidResponse",e.AuthorizationInfoAlreadyExists="AuthorizationInfoAlreadyExists"}(i||(i={}));class a{}a.InvalidConfiguration="{0} in configuration is invalid: {1}.",a.ConfigurationNotExists="Configuration does not exist. {0}",a.ResourceConfigurationNotExists="{0} resource configuration does not exist.",a.MissingResourceConfiguration="Missing resource configuration with type: {0}, name: {1}.",a.AuthenticationConfigurationNotExists="Authentication configuration does not exist.",a.BrowserRuntimeNotSupported="{0} is not supported in browser.",a.NodejsRuntimeNotSupported="{0} is not supported in Node.",a.FailToAcquireTokenOnBehalfOfUser="Failed to acquire access token on behalf of user: {0}",a.OnlyMSTeamsChannelSupported="{0} is only supported in MS Teams Channel",a.FailedToProcessSsoHandler="Failed to process sso handler: {0}",a.FailedToRetrieveSsoToken="Failed to retrieve sso token, user failed to finish the AAD consent flow.",a.CannotFindCommand="Cannot find command: {0}",a.FailedToRunSsoStep="Failed to run dialog to retrieve sso token: {0}",a.FailedToRunDedupStep="Failed to run dialog to remove duplicated messages: {0}",a.SsoActivityHandlerIsNull="Sso command can only be used or added when sso activity handler is not undefined",a.AuthorizationHeaderAlreadyExists="Authorization header already exists!",a.BasicCredentialAlreadyExists="Basic credential already exists!",a.EmptyParameter="Parameter {0} is empty",a.DuplicateHttpsOptionProperty="Axios HTTPS agent already defined value for property {0}",a.DuplicateApiKeyInHeader="The request already defined api key in request header with name {0}.",a.DuplicateApiKeyInQueryParam="The request already defined api key in query parameter with name {0}.",a.OnlySupportInQueryActivity="The handleMessageExtensionQueryWithToken only support in handleTeamsMessagingExtensionQuery with composeExtension/query type.",a.OnlySupportInLinkQueryActivity="The handleMessageExtensionLinkQueryWithSSO only support in handleTeamsAppBasedLinkQuery with composeExtension/queryLink type.";class u extends Error{constructor(e,t){if(!t)return super(e),this;super(e),Object.setPrototypeOf(this,u.prototype),this.name=`${new.target.name}.${t}`,this.code=t}}function d(e){c.level=e}function p(){return c.level}!function(e){e[e.Verbose=0]="Verbose",e[e.Info=1]="Info",e[e.Warn=2]="Warn",e[e.Error=3]="Error"}(s||(s={}));const c=new class{constructor(e,t){this.level=void 0,this.defaultLogger={verbose:console.debug,info:console.info,warn:console.warn,error:console.error},this.name=e,this.level=t}error(e){this.log(s.Error,(e=>e.error),e)}warn(e){this.log(s.Warn,(e=>e.warn),e)}info(e){this.log(s.Info,(e=>e.info),e)}verbose(e){this.log(s.Verbose,(e=>e.verbose),e)}log(e,t,o){if(""===o.trim())return;const r=(new Date).toUTCString();let n;n=this.name?`[${r}] : @microsoft/teamsfx - ${this.name} : ${s[e]} - `:`[${r}] : @microsoft/teamsfx : ${s[e]} - `;const i=`${n}${o}`;void 0!==this.level&&this.level<=e&&(this.customLogger?t(this.customLogger)(i):this.customLogFunction?this.customLogFunction(e,i):t(this.defaultLogger)(i))}};function l(e){c.customLogger=e}function m(e){c.customLogFunction=e}function h(t){try{const o=e(t);if(!o||!o.exp)throw new u("Decoded token is null or exp claim does not exists.",i.InternalError);return o}catch(e){const t="Parse jwt token failed in node env with error: "+e.message;throw c.error(t),new u(t,i.InternalError)}}function w(e,...t){const o=t;return e.replace(/{(\d+)}/g,(function(e,t){return void 0!==o[t]?o[t]:e}))}function S(e){if("string"==typeof e||e instanceof String)return;if(Array.isArray(e)&&0===e.length)return;if(Array.isArray(e)&&e.length>0&&e.every((e=>"string"==typeof e)))return;const t="The type of scopes is not valid, it must be string or string array";throw c.error(t),new u(t,i.InvalidParameter)}class f{constructor(e){throw new u(w(a.BrowserRuntimeNotSupported,"AppCredential"),i.RuntimeNotSupported)}getToken(e,t){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"AppCredential"),i.RuntimeNotSupported))}}class g{constructor(e,t){throw new u(w(a.BrowserRuntimeNotSupported,"OnBehalfOfUserCredential"),i.RuntimeNotSupported)}getToken(e,t){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"OnBehalfOfUserCredential"),i.RuntimeNotSupported))}getUserInfo(){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"OnBehalfOfUserCredential"),i.RuntimeNotSupported))}}class R{constructor(e){c.info("Create teams user credential"),this.config=this.loadAndValidateConfig(e),this.ssoToken=null,this.initialized=!1}async login(e,r){S(e);const n="string"==typeof e?e:e.join(" ");let s;c.info(`Popup login page to get user's access token with scopes: ${n}`),this.initialized||await this.init(r),await t.initialize();try{const e={url:`${this.config.initiateLoginEndpoint?this.config.initiateLoginEndpoint:""}?clientId=${this.config.clientId?this.config.clientId:""}&scope=${encodeURI(n)}&loginHint=${this.loginHint?this.loginHint:""}`,width:600,height:535};if(s=await o.authenticate(e),!s){const e="Get empty authentication result from MSAL";throw c.error(e),new u(e,i.InternalError)}}catch(e){const t=`Consent failed for the scope ${n} with error: ${e.message}`;throw c.error(t),new u(t,i.ConsentFailed)}let a={};try{a="string"==typeof s?JSON.parse(s):s}catch(e){const t="Failed to parse response to Json.";throw c.error(t),new u(t,i.InvalidResponse)}if(a.code){const e=`Found auth code in response. Auth code is not support for current version of SDK. Please refer to the help link for how to fix the issue: ${"https://aka.ms/teamsfx-auth-code-flow"}.`;throw c.error(e),new u(e,i.InvalidResponse)}a.sessionStorage&&this.setSessionStorage(a.sessionStorage)}async getToken(e,t){S(e);const o=null==t?void 0:t.resources,r=await this.getSSOToken(o),n="string"==typeof e?e:e.join(" ");if(""===n)return c.info("Get SSO token"),r;{let t;c.info("Get access token with scopes: "+n),this.initialized||await this.init(o);const r="string"==typeof e?e.split(" "):e,s=window.location.origin;try{const e=this.msalInstance.getAccountByUsername(this.loginHint),o={scopes:r,account:null!=e?e:void 0,redirectUri:`${s}/blank-auth-end.html`};t=await this.msalInstance.acquireTokenSilent(o)}catch(e){const t=`Failed to call acquireTokenSilent. Reason: ${null==e?void 0:e.message}. `;c.verbose(t)}if(!t)try{const e={scopes:r,loginHint:this.loginHint,redirectUri:`${s}/blank-auth-end.html`};t=await this.msalInstance.ssoSilent(e)}catch(e){const t=`Failed to call ssoSilent. Reason: ${null==e?void 0:e.message}. `;c.verbose(t)}if(!t){const e="Failed to get access token cache silently, please login first: you need login first before get access token.";throw c.error(e),new u(e,i.UiRequiredError)}const a=function(e){try{const t="string"==typeof e?JSON.parse(e):e;if(!t||!t.accessToken){const e="Get empty access token from Auth Code token response.";throw c.error(e),new Error(e)}const o=t.accessToken,r=h(o);if("1.0"!==r.ver&&"2.0"!==r.ver){const e="SSO token is not valid with an unknown version: "+r.ver;throw c.error(e),new Error(e)}return{token:o,expiresOnTimestamp:1e3*r.exp}}catch(e){const t="Parse access token failed from Auth Code token response in node env with error: "+e.message;throw c.error(t),new u(t,i.InternalError)}}(t);return a}}async getUserInfo(e){c.info("Get basic user info from SSO token");return function(e){if(!e){const e="SSO token is undefined.";throw c.error(e),new u(e,i.InvalidParameter)}const t=h(e),o={displayName:t.name,objectId:t.oid,tenantId:t.tid,preferredUserName:""};return"2.0"===t.ver?o.preferredUserName=t.preferred_username:"1.0"===t.ver&&(o.preferredUserName=t.upn),o}((await this.getSSOToken(e)).token)}async init(e){const t=function(e){if(!e){const e="SSO token is undefined.";throw c.error(e),new u(e,i.InvalidParameter)}const t=h(e);return{tid:t.tid,loginHint:"2.0"===t.ver?t.preferred_username:t.upn}}((await this.getSSOToken(e)).token);this.loginHint=t.loginHint,this.tid=t.tid;const o={auth:{clientId:this.config.clientId,authority:`https://login.microsoftonline.com/${this.tid}`},cache:{cacheLocation:"sessionStorage"}};this.msalInstance=new r(o),await this.msalInstance.initialize(),this.initialized=!0}async getSSOToken(e){if(this.ssoToken&&this.ssoToken.expiresOnTimestamp-Date.now()>3e5)return c.verbose("Get SSO token from memory cache"),this.ssoToken;const r={resources:null!=e?e:[]};let n;try{await t.initialize()}catch(e){const t="Initialize teams sdk failed due to not running inside Teams environment";throw c.error(t),new u(t,i.InternalError)}try{n=await o.getAuthToken(r)}catch(e){const t="Get SSO token failed with error: "+e.message;throw c.error(t),new u(t,i.InternalError)}if(!n){const e="Get empty SSO token from Teams";throw c.error(e),new u(e,i.InternalError)}const s=h(n);if("1.0"!==s.ver&&"2.0"!==s.ver){const e="SSO token is not valid with an unknown version: "+s.ver;throw c.error(e),new u(e,i.InternalError)}const a={token:n,expiresOnTimestamp:1e3*s.exp};return this.ssoToken=a,a}loadAndValidateConfig(e){if(c.verbose("Validate authentication configuration"),e.initiateLoginEndpoint&&e.clientId)return e;const t=[];e.initiateLoginEndpoint||t.push("initiateLoginEndpoint"),e.clientId||t.push("clientId");const o=w(a.InvalidConfiguration,t.join(", "),"undefined");throw c.error(o),new u(o,i.InvalidConfiguration)}setSessionStorage(e){try{Object.keys(e).forEach((t=>{sessionStorage.setItem(t,e[t])}))}catch(e){const t=`Failed to set values in session storage. Error: ${e.message}`;throw c.error(t),new u(t,i.InternalError)}}}class N{constructor(e,t,o,r){throw new u(w(a.BrowserRuntimeNotSupported,"TeamsBotSsoPrompt"),i.RuntimeNotSupported)}beginDialog(e){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"TeamsBotSsoPrompt"),i.RuntimeNotSupported))}continueDialog(e){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"TeamsBotSsoPrompt"),i.RuntimeNotSupported))}}function B(e,t){const o=n.create({baseURL:e});return o.interceptors.request.use((async function(e){return await t.AddAuthenticationInfo(e)})),o}class y{constructor(e){this.getToken=e}async AddAuthenticationInfo(e){const t=await this.getToken();if(e.headers||(e.headers={}),e.headers.Authorization)throw new u(a.AuthorizationHeaderAlreadyExists,i.AuthorizationInfoAlreadyExists);return e.headers.Authorization=`Bearer ${t}`,e}}class v{constructor(e,t){throw new u(w(a.BrowserRuntimeNotSupported,"BasicAuthProvider"),i.RuntimeNotSupported)}AddAuthenticationInfo(e){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"BasicAuthProvider"),i.RuntimeNotSupported))}}class C{constructor(e,t,o){throw new u(w(a.BrowserRuntimeNotSupported,"ApiKeyProvider"),i.RuntimeNotSupported)}AddAuthenticationInfo(e){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"ApiKeyProvider"),i.RuntimeNotSupported))}}var A,I,T,k,P;!function(e){e[e.Header=0]="Header",e[e.QueryParams=1]="QueryParams"}(A||(A={}));class E{constructor(e){throw new u(w(a.BrowserRuntimeNotSupported,"CertificateAuthProvider"),i.RuntimeNotSupported)}AddAuthenticationInfo(e){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"CertificateAuthProvider"),i.RuntimeNotSupported))}}function x(e,t,o){throw new u(w(a.BrowserRuntimeNotSupported,"createPemCertOption"),i.RuntimeNotSupported)}function F(e,t){throw new u(w(a.BrowserRuntimeNotSupported,"createPfxCertOption"),i.RuntimeNotSupported)}!function(e){e.Channel="Channel",e.Group="Group",e.Person="Person"}(I||(I={})),function(e){e[e.ReplaceForInteractor=0]="ReplaceForInteractor",e[e.ReplaceForAll=1]="ReplaceForAll",e[e.NewForAll=2]="NewForAll"}(T||(T={})),function(e){e[e.BadRequest=400]="BadRequest",e[e.InternalServerError=500]="InternalServerError"}(k||(k={}));class j{constructor(e,t,o,...r){throw new u(w(a.BrowserRuntimeNotSupported,"BotSsoExecutionDialog"),i.RuntimeNotSupported)}addCommand(e,t){throw new u(w(a.BrowserRuntimeNotSupported,"BotSsoExecutionDialog"),i.RuntimeNotSupported)}run(e,t){throw new u(w(a.BrowserRuntimeNotSupported,"BotSsoExecutionDialog"),i.RuntimeNotSupported)}onEndDialog(e){throw new u(w(a.BrowserRuntimeNotSupported,"BotSsoExecutionDialog"),i.RuntimeNotSupported)}}function O(e,t,o,r,n){throw new u(w(a.BrowserRuntimeNotSupported,"queryWithToken in message extension"),i.RuntimeNotSupported)}!function(e){e[e.Person=1]="Person",e[e.Group=2]="Group",e[e.Channel=4]="Channel",e[e.All=7]="All"}(P||(P={}));var b=Object.freeze({__proto__:null,BotSsoExecutionDialog:j,CardActionBot:class{constructor(e,t){throw new u(w(a.BrowserRuntimeNotSupported,"CardActionBot"),i.RuntimeNotSupported)}registerHandler(e){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"CardActionBot"),i.RuntimeNotSupported))}registerHandlers(e){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"CardActionBot"),i.RuntimeNotSupported))}},Channel:class{constructor(e,t){throw this.type=I.Channel,new u(w(a.BrowserRuntimeNotSupported,"Channel"),i.RuntimeNotSupported)}sendMessage(e,t){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"Channel"),i.RuntimeNotSupported))}sendAdaptiveCard(e,t){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"Channel"),i.RuntimeNotSupported))}},CommandBot:class{constructor(e,t){throw new u(w(a.BrowserRuntimeNotSupported,"CommandBot"),i.RuntimeNotSupported)}registerCommand(e){throw new u(w(a.BrowserRuntimeNotSupported,"CommandBot"),i.RuntimeNotSupported)}registerCommands(e){throw new u(w(a.BrowserRuntimeNotSupported,"CommandBot"),i.RuntimeNotSupported)}registerSsoCommand(e){throw new u(w(a.BrowserRuntimeNotSupported,"CommandBot"),i.RuntimeNotSupported)}registerSsoCommands(e){throw new u(w(a.BrowserRuntimeNotSupported,"CommandBot"),i.RuntimeNotSupported)}},ConversationBot:class{constructor(e){throw new u(w(a.BrowserRuntimeNotSupported,"ConversationBot"),i.RuntimeNotSupported)}requestHandler(e,t,o){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"ConversationBot"),i.RuntimeNotSupported))}},Member:class{constructor(e,t){throw this.type=I.Person,new u(w(a.BrowserRuntimeNotSupported,"Member"),i.RuntimeNotSupported)}sendMessage(e,t){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"Member"),i.RuntimeNotSupported))}sendAdaptiveCard(e,t){return Promise.reject(Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"Member"),i.RuntimeNotSupported)))}},NotificationBot:class{constructor(e,t){throw new u(w(a.BrowserRuntimeNotSupported,"NotificationBot"),i.RuntimeNotSupported)}static installations(){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"NotificationBot"),i.RuntimeNotSupported))}findMember(e,t){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"NotificationBot"),i.RuntimeNotSupported))}findChannel(e){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"NotificationBot"),i.RuntimeNotSupported))}findAllMembers(e,t){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"NotificationBot"),i.RuntimeNotSupported))}findAllChannels(e){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"NotificationBot"),i.RuntimeNotSupported))}},TeamsBotInstallation:class{constructor(e,t){throw new u(w(a.BrowserRuntimeNotSupported,"TeamsBotInstallation"),i.RuntimeNotSupported)}sendMessage(e,t){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"TeamsBotInstallation"),i.RuntimeNotSupported))}sendAdaptiveCard(e,t){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"TeamsBotInstallation"),i.RuntimeNotSupported))}channels(){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"TeamsBotInstallation"),i.RuntimeNotSupported))}members(){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"TeamsBotInstallation"),i.RuntimeNotSupported))}getTeamDetails(){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"TeamsBotInstallation"),i.RuntimeNotSupported))}},sendAdaptiveCard:function(e,t,o){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"sendAdaptiveCard"),i.RuntimeNotSupported))},sendMessage:function(e,t,o){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"sendMessage"),i.RuntimeNotSupported))}});export{T as AdaptiveCardResponse,A as ApiKeyLocation,C as ApiKeyProvider,f as AppCredential,v as BasicAuthProvider,y as BearerTokenAuthProvider,b as BotBuilderCloudAdapter,j as BotSsoExecutionDialog,E as CertificateAuthProvider,i as ErrorCode,u as ErrorWithCode,k as InvokeResponseErrorCode,s as LogLevel,I as NotificationTargetType,g as OnBehalfOfUserCredential,N as TeamsBotSsoPrompt,R as TeamsUserCredential,B as createApiClient,x as createPemCertOption,F as createPfxCertOption,p as getLogLevel,O as handleMessageExtensionQueryWithSSO,m as setLogFunction,d as setLogLevel,l as setLogger};
1
+ import{jwtDecode as e}from"jwt-decode";import{app as t,authentication as o}from"@microsoft/teams-js";import{PublicClientApplication as r}from"@azure/msal-browser";import n from"axios";var i,s;!function(e){e.InvalidParameter="InvalidParameter",e.InvalidConfiguration="InvalidConfiguration",e.InvalidCertificate="InvalidCertificate",e.InternalError="InternalError",e.ChannelNotSupported="ChannelNotSupported",e.FailedToRetrieveSsoToken="FailedToRetrieveSsoToken",e.FailedToProcessSsoHandler="FailedToProcessSsoHandler",e.CannotFindCommand="CannotFindCommand",e.FailedToRunSsoStep="FailedToRunSsoStep",e.FailedToRunDedupStep="FailedToRunDedupStep",e.SsoActivityHandlerIsUndefined="SsoActivityHandlerIsUndefined",e.RuntimeNotSupported="RuntimeNotSupported",e.ConsentFailed="ConsentFailed",e.UiRequiredError="UiRequiredError",e.TokenExpiredError="TokenExpiredError",e.ServiceError="ServiceError",e.FailedOperation="FailedOperation",e.InvalidResponse="InvalidResponse",e.AuthorizationInfoAlreadyExists="AuthorizationInfoAlreadyExists"}(i||(i={}));class a{}a.InvalidConfiguration="{0} in configuration is invalid: {1}.",a.ConfigurationNotExists="Configuration does not exist. {0}",a.ResourceConfigurationNotExists="{0} resource configuration does not exist.",a.MissingResourceConfiguration="Missing resource configuration with type: {0}, name: {1}.",a.AuthenticationConfigurationNotExists="Authentication configuration does not exist.",a.BrowserRuntimeNotSupported="{0} is not supported in browser.",a.NodejsRuntimeNotSupported="{0} is not supported in Node.",a.FailToAcquireTokenOnBehalfOfUser="Failed to acquire access token on behalf of user: {0}",a.OnlyMSTeamsChannelSupported="{0} is only supported in MS Teams Channel",a.FailedToProcessSsoHandler="Failed to process sso handler: {0}",a.FailedToRetrieveSsoToken="Failed to retrieve sso token, user failed to finish the AAD consent flow.",a.CannotFindCommand="Cannot find command: {0}",a.FailedToRunSsoStep="Failed to run dialog to retrieve sso token: {0}",a.FailedToRunDedupStep="Failed to run dialog to remove duplicated messages: {0}",a.SsoActivityHandlerIsNull="Sso command can only be used or added when sso activity handler is not undefined",a.AuthorizationHeaderAlreadyExists="Authorization header already exists!",a.BasicCredentialAlreadyExists="Basic credential already exists!",a.EmptyParameter="Parameter {0} is empty",a.DuplicateHttpsOptionProperty="Axios HTTPS agent already defined value for property {0}",a.DuplicateApiKeyInHeader="The request already defined api key in request header with name {0}.",a.DuplicateApiKeyInQueryParam="The request already defined api key in query parameter with name {0}.",a.OnlySupportInQueryActivity="The handleMessageExtensionQueryWithToken only support in handleTeamsMessagingExtensionQuery with composeExtension/query type.",a.OnlySupportInLinkQueryActivity="The handleMessageExtensionLinkQueryWithSSO only support in handleTeamsAppBasedLinkQuery with composeExtension/queryLink type.";class u extends Error{constructor(e,t){if(!t)return super(e),this;super(e),Object.setPrototypeOf(this,u.prototype),this.name=`${new.target.name}.${t}`,this.code=t}}function d(e){c.level=e}function p(){return c.level}!function(e){e[e.Verbose=0]="Verbose",e[e.Info=1]="Info",e[e.Warn=2]="Warn",e[e.Error=3]="Error"}(s||(s={}));const c=new class{constructor(e,t){this.level=void 0,this.defaultLogger={verbose:console.debug,info:console.info,warn:console.warn,error:console.error},this.name=e,this.level=t}error(e){this.log(s.Error,(e=>e.error),e)}warn(e){this.log(s.Warn,(e=>e.warn),e)}info(e){this.log(s.Info,(e=>e.info),e)}verbose(e){this.log(s.Verbose,(e=>e.verbose),e)}log(e,t,o){if(""===o.trim())return;const r=(new Date).toUTCString();let n;n=this.name?`[${r}] : @microsoft/teamsfx - ${this.name} : ${s[e]} - `:`[${r}] : @microsoft/teamsfx : ${s[e]} - `;const i=`${n}${o}`;void 0!==this.level&&this.level<=e&&(this.customLogger?t(this.customLogger)(i):this.customLogFunction?this.customLogFunction(e,i):t(this.defaultLogger)(i))}};function l(e){c.customLogger=e}function m(e){c.customLogFunction=e}function h(t){try{const o=e(t);if(!o||!o.exp)throw new u("Decoded token is null or exp claim does not exists.",i.InternalError);return o}catch(e){const t="Parse jwt token failed in node env with error: "+e.message;throw c.error(t),new u(t,i.InternalError)}}function w(e,...t){const o=t;return e.replace(/{(\d+)}/g,(function(e,t){return void 0!==o[t]?o[t]:e}))}function S(e){if("string"==typeof e||e instanceof String)return;if(Array.isArray(e)&&0===e.length)return;if(Array.isArray(e)&&e.length>0&&e.every((e=>"string"==typeof e)))return;const t="The type of scopes is not valid, it must be string or string array";throw c.error(t),new u(t,i.InvalidParameter)}class f{constructor(e){throw new u(w(a.BrowserRuntimeNotSupported,"AppCredential"),i.RuntimeNotSupported)}getToken(e,t){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"AppCredential"),i.RuntimeNotSupported))}}class g{constructor(e,t){throw new u(w(a.BrowserRuntimeNotSupported,"OnBehalfOfUserCredential"),i.RuntimeNotSupported)}getToken(e,t){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"OnBehalfOfUserCredential"),i.RuntimeNotSupported))}getUserInfo(){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"OnBehalfOfUserCredential"),i.RuntimeNotSupported))}}class R{constructor(e){c.info("Create teams user credential"),this.config=this.loadAndValidateConfig(e),this.ssoToken=null,this.initialized=!1}async login(e,r){S(e);const n="string"==typeof e?e:e.join(" ");let s;c.info(`Popup login page to get user's access token with scopes: ${n}`),this.initialized||await this.init(r),await t.initialize();try{const e={url:`${this.config.initiateLoginEndpoint?this.config.initiateLoginEndpoint:""}?clientId=${this.config.clientId?this.config.clientId:""}&scope=${encodeURI(n)}&loginHint=${this.loginHint?this.loginHint:""}`,width:600,height:535};if(s=await o.authenticate(e),!s){const e="Get empty authentication result from MSAL";throw c.error(e),new u(e,i.InternalError)}}catch(e){const t=`Consent failed for the scope ${n} with error: ${e.message}`;throw c.error(t),new u(t,i.ConsentFailed)}let a={};try{a="string"==typeof s?JSON.parse(s):s}catch(e){const t="Failed to parse response to Json.";throw c.error(t),new u(t,i.InvalidResponse)}if(a.code){const e=`Found auth code in response. Auth code is not support for current version of SDK. Please refer to the help link for how to fix the issue: ${"https://aka.ms/teamsfx-auth-code-flow"}.`;throw c.error(e),new u(e,i.InvalidResponse)}a.sessionStorage&&this.setSessionStorage(a.sessionStorage)}async getToken(e,t){S(e);const o=null==t?void 0:t.resources,r=await this.getSSOToken(o),n="string"==typeof e?e:e.join(" ");if(""===n)return c.info("Get SSO token"),r;{let t;c.info("Get access token with scopes: "+n),this.initialized||await this.init(o);const r="string"==typeof e?e.split(" "):e,s=window.location.origin;try{const e=this.msalInstance.getAccountByUsername(this.loginHint),o={scopes:r,account:null!=e?e:void 0,redirectUri:`${s}/blank-auth-end.html`};t=await this.msalInstance.acquireTokenSilent(o)}catch(e){const t=`Failed to call acquireTokenSilent. Reason: ${null==e?void 0:e.message}. `;c.verbose(t)}if(!t)try{const e={scopes:r,loginHint:this.loginHint,redirectUri:`${s}/blank-auth-end.html`};t=await this.msalInstance.ssoSilent(e)}catch(e){const t=`Failed to call ssoSilent. Reason: ${null==e?void 0:e.message}. `;c.verbose(t)}if(!t){const e="Failed to get access token cache silently, please login first: you need login first before get access token.";throw c.error(e),new u(e,i.UiRequiredError)}const a=function(e){try{const t="string"==typeof e?JSON.parse(e):e;if(!t||!t.accessToken){const e="Get empty access token from Auth Code token response.";throw c.error(e),new Error(e)}const o=t.accessToken,r=h(o);if("1.0"!==r.ver&&"2.0"!==r.ver){const e="SSO token is not valid with an unknown version: "+r.ver;throw c.error(e),new Error(e)}return{token:o,expiresOnTimestamp:1e3*r.exp}}catch(e){const t="Parse access token failed from Auth Code token response in node env with error: "+e.message;throw c.error(t),new u(t,i.InternalError)}}(t);return a}}async getUserInfo(e){c.info("Get basic user info from SSO token");return function(e){if(!e){const e="SSO token is undefined.";throw c.error(e),new u(e,i.InvalidParameter)}const t=h(e),o={displayName:t.name,objectId:t.oid,tenantId:t.tid,preferredUserName:""};return"2.0"===t.ver?o.preferredUserName=t.preferred_username:"1.0"===t.ver&&(o.preferredUserName=t.upn),o}((await this.getSSOToken(e)).token)}async init(e){const t=function(e){if(!e){const e="SSO token is undefined.";throw c.error(e),new u(e,i.InvalidParameter)}const t=h(e);return{tid:t.tid,loginHint:"2.0"===t.ver?t.preferred_username:t.upn}}((await this.getSSOToken(e)).token);this.loginHint=t.loginHint,this.tid=t.tid;const o={auth:{clientId:this.config.clientId,authority:`https://login.microsoftonline.com/${this.tid}`},cache:{cacheLocation:"sessionStorage"}};this.msalInstance=new r(o),await this.msalInstance.initialize(),this.initialized=!0}async getSSOToken(e){if(this.ssoToken&&this.ssoToken.expiresOnTimestamp-Date.now()>3e5)return c.verbose("Get SSO token from memory cache"),this.ssoToken;const r={resources:null!=e?e:[]};let n;try{await t.initialize()}catch(e){const t="Initialize teams sdk failed due to not running inside Teams environment";throw c.error(t),new u(t,i.InternalError)}try{n=await o.getAuthToken(r)}catch(e){const t="Get SSO token failed with error: "+e.message;throw c.error(t),new u(t,i.InternalError)}if(!n){const e="Get empty SSO token from Teams";throw c.error(e),new u(e,i.InternalError)}const s=h(n);if("1.0"!==s.ver&&"2.0"!==s.ver){const e="SSO token is not valid with an unknown version: "+s.ver;throw c.error(e),new u(e,i.InternalError)}const a={token:n,expiresOnTimestamp:1e3*s.exp};return this.ssoToken=a,a}loadAndValidateConfig(e){if(c.verbose("Validate authentication configuration"),e.initiateLoginEndpoint&&e.clientId)return e;const t=[];e.initiateLoginEndpoint||t.push("initiateLoginEndpoint"),e.clientId||t.push("clientId");const o=w(a.InvalidConfiguration,t.join(", "),"undefined");throw c.error(o),new u(o,i.InvalidConfiguration)}setSessionStorage(e){try{Object.keys(e).forEach((t=>{sessionStorage.setItem(t,e[t])}))}catch(e){const t=`Failed to set values in session storage. Error: ${e.message}`;throw c.error(t),new u(t,i.InternalError)}}}class N{constructor(e,t,o,r){throw new u(w(a.BrowserRuntimeNotSupported,"TeamsBotSsoPrompt"),i.RuntimeNotSupported)}beginDialog(e){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"TeamsBotSsoPrompt"),i.RuntimeNotSupported))}continueDialog(e){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"TeamsBotSsoPrompt"),i.RuntimeNotSupported))}}function B(e,t){const o=n.create({baseURL:e});return o.interceptors.request.use((async function(e){return await t.AddAuthenticationInfo(e)})),o}class y{constructor(e){this.getToken=e}async AddAuthenticationInfo(e){const t=await this.getToken();if(e.headers||(e.headers={}),e.headers.Authorization)throw new u(a.AuthorizationHeaderAlreadyExists,i.AuthorizationInfoAlreadyExists);return e.headers.Authorization=`Bearer ${t}`,e}}class v{constructor(e,t){throw new u(w(a.BrowserRuntimeNotSupported,"BasicAuthProvider"),i.RuntimeNotSupported)}AddAuthenticationInfo(e){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"BasicAuthProvider"),i.RuntimeNotSupported))}}class C{constructor(e,t,o){throw new u(w(a.BrowserRuntimeNotSupported,"ApiKeyProvider"),i.RuntimeNotSupported)}AddAuthenticationInfo(e){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"ApiKeyProvider"),i.RuntimeNotSupported))}}var A,I,T,k,P;!function(e){e[e.Header=0]="Header",e[e.QueryParams=1]="QueryParams"}(A||(A={}));class E{constructor(e){throw new u(w(a.BrowserRuntimeNotSupported,"CertificateAuthProvider"),i.RuntimeNotSupported)}AddAuthenticationInfo(e){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"CertificateAuthProvider"),i.RuntimeNotSupported))}}function x(e,t,o){throw new u(w(a.BrowserRuntimeNotSupported,"createPemCertOption"),i.RuntimeNotSupported)}function F(e,t){throw new u(w(a.BrowserRuntimeNotSupported,"createPfxCertOption"),i.RuntimeNotSupported)}!function(e){e.Channel="Channel",e.Group="Group",e.Person="Person"}(I||(I={})),function(e){e[e.ReplaceForInteractor=0]="ReplaceForInteractor",e[e.ReplaceForAll=1]="ReplaceForAll",e[e.NewForAll=2]="NewForAll"}(T||(T={})),function(e){e[e.BadRequest=400]="BadRequest",e[e.InternalServerError=500]="InternalServerError"}(k||(k={}));class j{constructor(e,t,o,...r){throw new u(w(a.BrowserRuntimeNotSupported,"BotSsoExecutionDialog"),i.RuntimeNotSupported)}addCommand(e,t){throw new u(w(a.BrowserRuntimeNotSupported,"BotSsoExecutionDialog"),i.RuntimeNotSupported)}run(e,t){throw new u(w(a.BrowserRuntimeNotSupported,"BotSsoExecutionDialog"),i.RuntimeNotSupported)}onEndDialog(e){throw new u(w(a.BrowserRuntimeNotSupported,"BotSsoExecutionDialog"),i.RuntimeNotSupported)}}function O(e,t,o,r,n){throw new u(w(a.BrowserRuntimeNotSupported,"queryWithToken in message extension"),i.RuntimeNotSupported)}!function(e){e[e.Person=1]="Person",e[e.Group=2]="Group",e[e.Channel=4]="Channel",e[e.All=7]="All"}(P||(P={}));var b=Object.freeze({__proto__:null,BotSsoExecutionDialog:j,CardActionBot:class{constructor(e,t){throw new u(w(a.BrowserRuntimeNotSupported,"CardActionBot"),i.RuntimeNotSupported)}registerHandler(e){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"CardActionBot"),i.RuntimeNotSupported))}registerHandlers(e){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"CardActionBot"),i.RuntimeNotSupported))}},Channel:class{constructor(e,t){throw this.type=I.Channel,new u(w(a.BrowserRuntimeNotSupported,"Channel"),i.RuntimeNotSupported)}sendMessage(e,t){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"Channel"),i.RuntimeNotSupported))}sendAdaptiveCard(e,t){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"Channel"),i.RuntimeNotSupported))}},CommandBot:class{constructor(e,t){throw new u(w(a.BrowserRuntimeNotSupported,"CommandBot"),i.RuntimeNotSupported)}registerCommand(e){throw new u(w(a.BrowserRuntimeNotSupported,"CommandBot"),i.RuntimeNotSupported)}registerCommands(e){throw new u(w(a.BrowserRuntimeNotSupported,"CommandBot"),i.RuntimeNotSupported)}registerSsoCommand(e){throw new u(w(a.BrowserRuntimeNotSupported,"CommandBot"),i.RuntimeNotSupported)}registerSsoCommands(e){throw new u(w(a.BrowserRuntimeNotSupported,"CommandBot"),i.RuntimeNotSupported)}},ConversationBot:class{constructor(e){throw new u(w(a.BrowserRuntimeNotSupported,"ConversationBot"),i.RuntimeNotSupported)}requestHandler(e,t,o){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"ConversationBot"),i.RuntimeNotSupported))}},Member:class{constructor(e,t){throw this.type=I.Person,new u(w(a.BrowserRuntimeNotSupported,"Member"),i.RuntimeNotSupported)}sendMessage(e,t){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"Member"),i.RuntimeNotSupported))}sendAdaptiveCard(e,t){return Promise.reject(Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"Member"),i.RuntimeNotSupported)))}},NotificationBot:class{constructor(e,t){throw new u(w(a.BrowserRuntimeNotSupported,"NotificationBot"),i.RuntimeNotSupported)}static installations(){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"NotificationBot"),i.RuntimeNotSupported))}findMember(e,t){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"NotificationBot"),i.RuntimeNotSupported))}findChannel(e){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"NotificationBot"),i.RuntimeNotSupported))}findAllMembers(e,t){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"NotificationBot"),i.RuntimeNotSupported))}findAllChannels(e){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"NotificationBot"),i.RuntimeNotSupported))}},TeamsBotInstallation:class{constructor(e,t){throw new u(w(a.BrowserRuntimeNotSupported,"TeamsBotInstallation"),i.RuntimeNotSupported)}sendMessage(e,t){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"TeamsBotInstallation"),i.RuntimeNotSupported))}sendAdaptiveCard(e,t){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"TeamsBotInstallation"),i.RuntimeNotSupported))}channels(){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"TeamsBotInstallation"),i.RuntimeNotSupported))}members(){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"TeamsBotInstallation"),i.RuntimeNotSupported))}getTeamDetails(){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"TeamsBotInstallation"),i.RuntimeNotSupported))}},sendAdaptiveCard:function(e,t,o){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"sendAdaptiveCard"),i.RuntimeNotSupported))},sendMessage:function(e,t,o){return Promise.reject(new u(w(a.BrowserRuntimeNotSupported,"sendMessage"),i.RuntimeNotSupported))}});export{T as AdaptiveCardResponse,b as AgentBuilderCloudAdapter,A as ApiKeyLocation,C as ApiKeyProvider,f as AppCredential,v as BasicAuthProvider,y as BearerTokenAuthProvider,j as BotSsoExecutionDialog,E as CertificateAuthProvider,i as ErrorCode,u as ErrorWithCode,k as InvokeResponseErrorCode,s as LogLevel,I as NotificationTargetType,g as OnBehalfOfUserCredential,N as TeamsBotSsoPrompt,R as TeamsUserCredential,B as createApiClient,x as createPemCertOption,F as createPfxCertOption,p as getLogLevel,O as handleMessageExtensionQueryWithSSO,m as setLogFunction,d as setLogLevel,l as setLogger};
2
2
  //# sourceMappingURL=index.esm2017.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm2017.js","sources":["../../src/core/errors.ts","../../src/util/logger.ts","../../src/util/utils.ts","../../src/credential/appCredential.browser.ts","../../src/credential/onBehalfOfUserCredential.browser.ts","../../src/credential/teamsUserCredential.browser.ts","../../src/bot/teamsBotSsoPrompt.browser.ts","../../src/apiClient/apiClient.ts","../../src/apiClient/bearerTokenAuthProvider.ts","../../src/apiClient/basicAuthProvider.browser.ts","../../src/apiClient/apiKeyProvider.browser.ts","../../src/conversation/interface.ts","../../src/conversationWithCloudAdapter/notification.browser.ts","../../src/apiClient/certificateAuthProvider.browser.ts","../../src/conversation/sso/botSsoExecutionDialog.browser.ts","../../src/messageExtension/executeWithSSO.browser.ts","../../src/conversationWithCloudAdapter/cardAction.browser.ts","../../src/conversationWithCloudAdapter/command.browser.ts","../../src/conversationWithCloudAdapter/conversation.browser.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["ErrorCode","LogLevel","ErrorMessage","InvalidConfiguration","ConfigurationNotExists","ResourceConfigurationNotExists","MissingResourceConfiguration","AuthenticationConfigurationNotExists","BrowserRuntimeNotSupported","NodejsRuntimeNotSupported","FailToAcquireTokenOnBehalfOfUser","OnlyMSTeamsChannelSupported","FailedToProcessSsoHandler","FailedToRetrieveSsoToken","CannotFindCommand","FailedToRunSsoStep","FailedToRunDedupStep","SsoActivityHandlerIsNull","AuthorizationHeaderAlreadyExists","BasicCredentialAlreadyExists","EmptyParameter","DuplicateHttpsOptionProperty","DuplicateApiKeyInHeader","DuplicateApiKeyInQueryParam","OnlySupportInQueryActivity","OnlySupportInLinkQueryActivity","ErrorWithCode","Error","constructor","message","code","super","this","Object","setPrototypeOf","prototype","name","setLogLevel","level","internalLogger","getLogLevel","logLevel","undefined","defaultLogger","verbose","console","debug","info","warn","error","log","x","Warn","Info","Verbose","logFunction","trim","timestamp","Date","toUTCString","logHeader","logMessage","customLogger","customLogFunction","setLogger","logger","setLogFunction","parseJwt","token","tokenObj","jwtDecode","exp","InternalError","err","errorMsg","formatString","str","replacements","args","replace","match","number","validateScopesType","value","String","Array","isArray","length","every","item","InvalidParameter","AppCredential","authConfig","RuntimeNotSupported","getToken","scopes","options","Promise","reject","OnBehalfOfUserCredential","ssoToken","config","getUserInfo","TeamsUserCredential","loadAndValidateConfig","initialized","login","resources","scopesStr","join","result","init","app","initialize","params","url","initiateLoginEndpoint","clientId","encodeURI","loginHint","width","height","authentication","authenticate","ConsentFailed","resultJson","JSON","parse","failedToParseResult","InvalidResponse","usingPreviousAuthPage","sessionStorage","setSessionStorage","getSSOToken","scopeStr","tokenResponse","scopesArray","split","domain","window","location","origin","account","msalInstance","getAccountByUsername","scopesRequestForAcquireTokenSilent","redirectUri","acquireTokenSilent","acquireTokenSilentFailedMessage","scopesRequestForSsoSilent","ssoSilent","ssoSilentFailedMessage","UiRequiredError","accessToken","tokenResponseObject","tokenObject","ver","expiresOnTimestamp","parseAccessTokenFromAuthCodeTokenResponse","userInfo","displayName","objectId","oid","tenantId","tid","preferredUserName","preferred_username","upn","getUserInfoFromSsoToken","getTenantIdAndLoginHintFromSsoToken","msalConfig","auth","authority","cache","cacheLocation","PublicClientApplication","now","getAuthToken","missingValues","push","sessionStorageValues","keys","forEach","key","setItem","errorMessage","TeamsBotSsoPrompt","dialogId","settings","beginDialog","dc","continueDialog","createApiClient","apiEndpoint","authProvider","instance","axios","create","baseURL","interceptors","request","use","async","AddAuthenticationInfo","BearerTokenAuthProvider","headers","AuthorizationInfoAlreadyExists","BasicAuthProvider","userName","password","ApiKeyProvider","keyName","keyValue","keyLocation","ApiKeyLocation","NotificationTargetType","AdaptiveCardResponse","InvokeResponseErrorCode","SearchScope","CertificateAuthProvider","certOption","createPemCertOption","cert","createPfxCertOption","pfx","BotSsoExecutionDialog","dedupStorage","ssoPromptSettings","addCommand","handler","triggerPatterns","run","context","accessor","onEndDialog","handleMessageExtensionQueryWithSSO","logic","adapter","registerHandler","actionHandler","registerHandlers","actionHandlers","parent","type","Channel","sendMessage","text","onError","sendAdaptiveCard","card","commands","registerCommand","command","registerCommands","registerSsoCommand","ssoCommand","registerSsoCommands","ssoCommands","requestHandler","req","res","Person","installations","findMember","predicate","scope","findChannel","findAllMembers","findAllChannels","conversationReference","channels","members","getTeamDetails","target"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm2017.js","sources":["../../src/core/errors.ts","../../src/util/logger.ts","../../src/util/utils.ts","../../src/credential/appCredential.browser.ts","../../src/credential/onBehalfOfUserCredential.browser.ts","../../src/credential/teamsUserCredential.browser.ts","../../src/bot/teamsBotSsoPrompt.browser.ts","../../src/apiClient/apiClient.ts","../../src/apiClient/bearerTokenAuthProvider.ts","../../src/apiClient/basicAuthProvider.browser.ts","../../src/apiClient/apiKeyProvider.browser.ts","../../src/conversation/interface.ts","../../src/conversationWithCloudAdapter/notification.browser.ts","../../src/apiClient/certificateAuthProvider.browser.ts","../../src/conversation/sso/botSsoExecutionDialog.browser.ts","../../src/messageExtension/executeWithSSO.browser.ts","../../src/conversationWithCloudAdapter/cardAction.browser.ts","../../src/conversationWithCloudAdapter/command.browser.ts","../../src/conversationWithCloudAdapter/conversation.browser.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["ErrorCode","LogLevel","ErrorMessage","InvalidConfiguration","ConfigurationNotExists","ResourceConfigurationNotExists","MissingResourceConfiguration","AuthenticationConfigurationNotExists","BrowserRuntimeNotSupported","NodejsRuntimeNotSupported","FailToAcquireTokenOnBehalfOfUser","OnlyMSTeamsChannelSupported","FailedToProcessSsoHandler","FailedToRetrieveSsoToken","CannotFindCommand","FailedToRunSsoStep","FailedToRunDedupStep","SsoActivityHandlerIsNull","AuthorizationHeaderAlreadyExists","BasicCredentialAlreadyExists","EmptyParameter","DuplicateHttpsOptionProperty","DuplicateApiKeyInHeader","DuplicateApiKeyInQueryParam","OnlySupportInQueryActivity","OnlySupportInLinkQueryActivity","ErrorWithCode","Error","constructor","message","code","super","this","Object","setPrototypeOf","prototype","name","setLogLevel","level","internalLogger","getLogLevel","logLevel","undefined","defaultLogger","verbose","console","debug","info","warn","error","log","x","Warn","Info","Verbose","logFunction","trim","timestamp","Date","toUTCString","logHeader","logMessage","customLogger","customLogFunction","setLogger","logger","setLogFunction","parseJwt","token","tokenObj","jwtDecode","exp","InternalError","err","errorMsg","formatString","str","replacements","args","replace","match","number","validateScopesType","value","String","Array","isArray","length","every","item","InvalidParameter","AppCredential","authConfig","RuntimeNotSupported","getToken","scopes","options","Promise","reject","OnBehalfOfUserCredential","ssoToken","config","getUserInfo","TeamsUserCredential","loadAndValidateConfig","initialized","login","resources","scopesStr","join","result","init","app","initialize","params","url","initiateLoginEndpoint","clientId","encodeURI","loginHint","width","height","authentication","authenticate","ConsentFailed","resultJson","JSON","parse","failedToParseResult","InvalidResponse","usingPreviousAuthPage","sessionStorage","setSessionStorage","getSSOToken","scopeStr","tokenResponse","scopesArray","split","domain","window","location","origin","account","msalInstance","getAccountByUsername","scopesRequestForAcquireTokenSilent","redirectUri","acquireTokenSilent","acquireTokenSilentFailedMessage","scopesRequestForSsoSilent","ssoSilent","ssoSilentFailedMessage","UiRequiredError","accessToken","tokenResponseObject","tokenObject","ver","expiresOnTimestamp","parseAccessTokenFromAuthCodeTokenResponse","userInfo","displayName","objectId","oid","tenantId","tid","preferredUserName","preferred_username","upn","getUserInfoFromSsoToken","getTenantIdAndLoginHintFromSsoToken","msalConfig","auth","authority","cache","cacheLocation","PublicClientApplication","now","getAuthToken","missingValues","push","sessionStorageValues","keys","forEach","key","setItem","errorMessage","TeamsBotSsoPrompt","dialogId","settings","beginDialog","dc","continueDialog","createApiClient","apiEndpoint","authProvider","instance","axios","create","baseURL","interceptors","request","use","async","AddAuthenticationInfo","BearerTokenAuthProvider","headers","AuthorizationInfoAlreadyExists","BasicAuthProvider","userName","password","ApiKeyProvider","keyName","keyValue","keyLocation","ApiKeyLocation","NotificationTargetType","AdaptiveCardResponse","InvokeResponseErrorCode","SearchScope","CertificateAuthProvider","certOption","createPemCertOption","cert","createPfxCertOption","pfx","BotSsoExecutionDialog","dedupStorage","ssoPromptSettings","addCommand","handler","triggerPatterns","run","context","accessor","onEndDialog","handleMessageExtensionQueryWithSSO","logic","adapter","registerHandler","actionHandler","registerHandlers","actionHandlers","parent","type","Channel","sendMessage","text","onError","sendAdaptiveCard","card","commands","registerCommand","command","registerCommands","registerSsoCommand","ssoCommand","registerSsoCommands","ssoCommands","requestHandler","req","res","Person","installations","findMember","predicate","scope","findChannel","findAllMembers","findAllChannels","conversationReference","channels","members","getTeamDetails","target"],"mappings":"4LAMYA,EC2BAC,GD3BZ,SAAYD,GAIVA,EAAA,iBAAA,mBAKAA,EAAA,qBAAA,uBAKAA,EAAA,mBAAA,qBAKAA,EAAA,cAAA,gBAKAA,EAAA,oBAAA,sBAKAA,EAAA,yBAAA,2BAKAA,EAAA,0BAAA,4BAKAA,EAAA,kBAAA,oBAKAA,EAAA,mBAAA,qBAKAA,EAAA,qBAAA,uBAKAA,EAAA,8BAAA,gCAKAA,EAAA,oBAAA,sBAKAA,EAAA,cAAA,gBAKAA,EAAA,gBAAA,kBAKAA,EAAA,kBAAA,oBAKAA,EAAA,aAAA,eAKAA,EAAA,gBAAA,kBAKAA,EAAA,gBAAA,kBAKAA,EAAA,+BAAA,gCACD,CA/FD,CAAYA,IAAAA,EA+FX,CAAA,UAKYE,GAEKA,EAAoBC,qBAAG,wCACvBD,EAAsBE,uBAAG,oCACzBF,EAA8BG,+BAAG,6CACjCH,EAA4BI,6BAC1C,4DACcJ,EAAoCK,qCAClD,+CAGcL,EAA0BM,2BAAG,mCAC7BN,EAAyBO,0BAAG,gCAG5BP,EAAgCQ,iCAC9C,wDAGcR,EAA2BS,4BAAG,4CAE9BT,EAAyBU,0BAAG,qCAG5BV,EAAwBW,yBACtC,4EAGcX,EAAiBY,kBAAG,2BAEpBZ,EAAkBa,mBAAG,kDAErBb,EAAoBc,qBAAG,0DAGvBd,EAAwBe,yBACtC,mFAGcf,EAAgCgB,iCAAG,uCACnChB,EAA4BiB,6BAAG,mCAE/BjB,EAAckB,eAAG,yBACjBlB,EAA4BmB,6BAC1C,2DACcnB,EAAuBoB,wBACrC,uEACcpB,EAA2BqB,4BACzC,wEACcrB,EAA0BsB,2BACxC,gIACctB,EAA8BuB,+BAC5C,gIAME,MAAOC,UAAsBC,MAcjC,WAAAC,CAAYC,EAAkBC,GAC5B,IAAKA,EAEH,OADAC,MAAMF,GACCG,KAGTD,MAAMF,GACNI,OAAOC,eAAeF,KAAMN,EAAcS,WAC1CH,KAAKI,KAAO,cAAcA,QAAQN,IAClCE,KAAKF,KAAOA,GClIV,SAAUO,EAAYC,GAC1BC,EAAeD,MAAQA,CACzB,UAOgBE,IACd,OAAOD,EAAeD,KACxB,EAnCA,SAAYrC,GAIVA,EAAAA,EAAA,QAAA,GAAA,UAIAA,EAAAA,EAAA,KAAA,GAAA,OAIAA,EAAAA,EAAA,KAAA,GAAA,OAIAA,EAAAA,EAAA,MAAA,GAAA,OACD,CAjBD,CAAYA,IAAAA,EAiBX,CAAA,IAuFM,MAAMsC,EAAiC,UAtD5C,WAAAX,CAAYQ,EAAeK,GAXpBT,KAAKM,WAAcI,EAIlBV,KAAAW,cAAwB,CAC9BC,QAASC,QAAQC,MACjBC,KAAMF,QAAQE,KACdC,KAAMH,QAAQG,KACdC,MAAOJ,QAAQI,OAIfjB,KAAKI,KAAOA,EACZJ,KAAKM,MAAQG,EAGR,KAAAQ,CAAMpB,GACXG,KAAKkB,IAAIjD,EAAS0B,OAAQwB,GAAcA,EAAEF,OAAOpB,GAG5C,IAAAmB,CAAKnB,GACVG,KAAKkB,IAAIjD,EAASmD,MAAOD,GAAcA,EAAEH,MAAMnB,GAG1C,IAAAkB,CAAKlB,GACVG,KAAKkB,IAAIjD,EAASoD,MAAOF,GAAcA,EAAEJ,MAAMlB,GAG1C,OAAAe,CAAQf,GACbG,KAAKkB,IAAIjD,EAASqD,SAAUH,GAAcA,EAAEP,SAASf,GAG/C,GAAAqB,CACNT,EACAc,EACA1B,GAEA,GAAuB,KAAnBA,EAAQ2B,OACV,OAEF,MAAMC,GAAY,IAAIC,MAAOC,cAC7B,IAAIC,EAEFA,EADE5B,KAAKI,KACK,IAAIqB,6BAAqCzB,KAAKI,UAAUnC,EAASwC,QAEjE,IAAIgB,6BAAqCxD,EAASwC,QAEhE,MAAMoB,EAAa,GAAGD,IAAY/B,SACfa,IAAfV,KAAKM,OAAuBN,KAAKM,OAASG,IACxCT,KAAK8B,aACPP,EAAYvB,KAAK8B,aAAjBP,CAA+BM,GACtB7B,KAAK+B,kBACd/B,KAAK+B,kBAAkBtB,EAAUoB,GAEjCN,EAAYvB,KAAKW,cAAjBY,CAAgCM,MA4BlC,SAAUG,EAAUC,GACxB1B,EAAeuB,aAAeG,CAChC,CAgBM,SAAUC,EAAeX,GAC7BhB,EAAewB,kBAAoBR,CACrC,CC3JM,SAAUY,EAASC,GACvB,IACE,MAAMC,EAA6BC,EAAUF,GAC7C,IAAKC,IAAaA,EAASE,IACzB,MAAM,IAAI7C,EACR,sDACA1B,EAAUwE,eAId,OAAOH,EACP,MAAOI,GACP,MAAMC,EAAW,kDAAqDD,EAAI5C,QAE1E,MADAU,EAAeU,MAAMyB,GACf,IAAIhD,EAAcgD,EAAU1E,EAAUwE,eAEhD,UAyGgBG,EAAaC,KAAgBC,GAC3C,MAAMC,EAAOD,EACb,OAAOD,EAAIG,QAAQ,YAAY,SAAUC,EAAOC,GAC9C,YAA8B,IAAhBH,EAAKG,GAAyBH,EAAKG,GAAUD,CAC7D,GACF,CAKM,SAAUE,EAAmBC,GAEjC,GAAqB,iBAAVA,GAAsBA,aAAiBC,OAChD,OAIF,GAAIC,MAAMC,QAAQH,IAA2B,IAAjBA,EAAMI,OAChC,OAIF,GAAIF,MAAMC,QAAQH,IAAUA,EAAMI,OAAS,GAAKJ,EAAMK,OAAOC,GAAyB,iBAATA,IAC3E,OAGF,MAAMf,EAAW,qEAEjB,MADAnC,EAAeU,MAAMyB,GACf,IAAIhD,EAAcgD,EAAU1E,EAAU0F,iBAC9C,OC3JaC,EAOX,WAAA/D,CAAYgE,GACV,MAAM,IAAIlE,EACRiD,EAAazE,EAAaM,2BAA4B,iBACtDR,EAAU6F,qBAUd,QAAAC,CAASC,EAA2BC,GAClC,OAAOC,QAAQC,OACb,IAAIxE,EACFiD,EAAazE,EAAaM,2BAA4B,iBACtDR,EAAU6F,6BCvBLM,EAOX,WAAAvE,CAAYwE,EAAkBC,GAC5B,MAAM,IAAI3E,EACRiD,EAAazE,EAAaM,2BAA4B,4BACtDR,EAAU6F,qBASd,QAAAC,CAASC,EAA2BC,GAClC,OAAOC,QAAQC,OACb,IAAIxE,EACFiD,EAAazE,EAAaM,2BAA4B,4BACtDR,EAAU6F,sBAUT,WAAAS,GACL,OAAOL,QAAQC,OACb,IAAIxE,EACFiD,EAAazE,EAAaM,2BAA4B,4BACtDR,EAAU6F,6BCtBLU,EA0BX,WAAA3E,CAAYgE,GACVrD,EAAeQ,KAAK,gCACpBf,KAAKqE,OAASrE,KAAKwE,sBAAsBZ,GACzC5D,KAAKoE,SAAW,KAChBpE,KAAKyE,aAAc,EAwBrB,WAAMC,CAAMX,EAA2BY,GACrCzB,EAAmBa,GACnB,MAAMa,EAA8B,iBAAXb,EAAsBA,EAASA,EAAOc,KAAK,KASpE,IAAIC,EAPJvE,EAAeQ,KAAK,4DAA4D6D,KAE3E5E,KAAKyE,mBACFzE,KAAK+E,KAAKJ,SAGZK,EAAIC,aAEV,IACE,MAAMC,EAAS,CACbC,IAAK,GACHnF,KAAKqE,OAAOe,sBAAwBpF,KAAKqE,OAAOe,sBAAwB,eAC7DpF,KAAKqE,OAAOgB,SAAWrF,KAAKqE,OAAOgB,SAAW,YAAYC,UACrEV,gBACa5E,KAAKuF,UAAYvF,KAAKuF,UAAY,KACjDC,MAlFe,IAmFfC,OAlFgB,KAqFlB,GADAX,QAAeY,EAAeC,aAAaT,IACtCJ,EAAQ,CACX,MAAMpC,EAAW,4CAEjB,MADAnC,EAAeU,MAAMyB,GACf,IAAIhD,EAAcgD,EAAU1E,EAAUwE,gBAE9C,MAAOC,GACP,MAAMC,EAAW,gCAAgCkC,iBAC9CnC,EAAc5C,UAGjB,MADAU,EAAeU,MAAMyB,GACf,IAAIhD,EAAcgD,EAAU1E,EAAU4H,eAE9C,IAAIC,EAAkB,CAAE,EACxB,IACEA,EAA8B,iBAAVf,EAAqBgB,KAAKC,MAAMjB,GAAUA,EAC9D,MAAO7D,GAEP,MAAM+E,EAAsB,oCAE5B,MADAzF,EAAeU,MAAM+E,GACf,IAAItG,EAAcsG,EAAqBhI,EAAUiI,iBAIzD,GAAIJ,EAAW/F,KAAM,CACnB,MACMoG,EAEJ,6IAHe,2CAKjB,MADA3F,EAAeU,MAAMiF,GACf,IAAIxG,EAAcwG,EAAuBlI,EAAUiI,iBAIvDJ,EAAWM,gBACbnG,KAAKoG,kBAAkBP,EAAWM,gBA0CtC,cAAMrC,CACJC,EACAC,GAEAd,EAAmBa,GACnB,MAAMY,EAAaX,aAAA,EAAAA,EAAsCW,UACnDP,QAAiBpE,KAAKqG,YAAY1B,GAElC2B,EAA6B,iBAAXvC,EAAsBA,EAASA,EAAOc,KAAK,KACnE,GAAiB,KAAbyB,EAGF,OAFA/F,EAAeQ,KAAK,iBAEbqD,EACF,CAOL,IAAImC,EANJhG,EAAeQ,KAAK,iCAAmCuF,GAElDtG,KAAKyE,mBACFzE,KAAK+E,KAAKJ,GAIlB,MAAM6B,EAAgC,iBAAXzC,EAAsBA,EAAO0C,MAAM,KAAO1C,EAC/D2C,EAASC,OAAOC,SAASC,OAG/B,IACE,MAAMC,EAAU9G,KAAK+G,aAAcC,qBAAqBhH,KAAKuF,WACvD0B,EAAqC,CACzClD,OAAQyC,EACRM,QAASA,QAAAA,OAAWpG,EACpBwG,YAAa,GAAGR,yBAElBH,QAAsBvG,KAAK+G,aAAcI,mBACvCF,GAEF,MAAOhG,GACP,MAAMmG,EAAkC,8CACtCnG,aAAK,EAALA,EAAOpB,YAETU,EAAeK,QAAQwG,GAGzB,IAAKb,EAEH,IACE,MAAMc,EAA4B,CAChCtD,OAAQyC,EACRjB,UAAWvF,KAAKuF,UAChB2B,YAAa,GAAGR,yBAElBH,QAAsBvG,KAAK+G,aAAcO,UAAUD,GACnD,MAAOpG,GACP,MAAMsG,EAAyB,qCAC7BtG,aAAK,EAALA,EAAOpB,YAETU,EAAeK,QAAQ2G,GAI3B,IAAKhB,EAAe,CAClB,MAAM7D,EAAW,+GAEjB,MADAnC,EAAeU,MAAMyB,GACf,IAAIhD,EAAcgD,EAAU1E,EAAUwJ,iBAG9C,MAAMC,EHhKN,SACJlB,GAEA,IACE,MAAMmB,EACoB,iBAAjBnB,EACFT,KAAKC,MAAMQ,GACZA,EACN,IAAKmB,IAAwBA,EAAoBD,YAAa,CAC5D,MAAM/E,EAAW,wDAGjB,MADAnC,EAAeU,MAAMyB,GACf,IAAI/C,MAAM+C,GAGlB,MAAMN,EAAQsF,EAAoBD,YAC5BE,EAAcxF,EAASC,GAE7B,GAAwB,QAApBuF,EAAYC,KAAqC,QAApBD,EAAYC,IAAe,CAC1D,MAAMlF,EAAW,mDAAqDiF,EAAYC,IAElF,MADArH,EAAeU,MAAMyB,GACf,IAAI/C,MAAM+C,GAOlB,MAJiC,CAC/BN,MAAOA,EACPyF,mBAAsC,IAAlBF,EAAYpF,KAGlC,MAAOtB,GACP,MAAMyB,EACJ,mFACCzB,EAAMpB,QAET,MADAU,EAAeU,MAAMyB,GACf,IAAIhD,EAAcgD,EAAU1E,EAAUwE,eAEhD,CG4H0BsF,CAA0CvB,GAC9D,OAAOkB,GAoBJ,iBAAMnD,CAAYK,GACvBpE,EAAeQ,KAAK,sCAEpB,OHxOE,SAAkCqD,GACtC,IAAKA,EAAU,CACb,MAAM1B,EAAW,0BAEjB,MADAnC,EAAeU,MAAMyB,GACf,IAAIhD,EAAcgD,EAAU1E,EAAU0F,kBAE9C,MAAMiE,EAAcxF,EAASiC,GAEvB2D,EAAqB,CACzBC,YAAaL,EAAYvH,KACzB6H,SAAUN,EAAYO,IACtBC,SAAUR,EAAYS,IACtBC,kBAAmB,IAQrB,MALwB,QAApBV,EAAYC,IACdG,EAASM,kBAAqBV,EAA+BW,mBAChC,QAApBX,EAAYC,MACrBG,EAASM,kBAAqBV,EAA+BY,KAExDR,CACT,CGmNWS,QADgBxI,KAAKqG,YAAY1B,IACAvC,OAGlC,UAAM2C,CAAKJ,GACjB,MACM5D,EHnNJ,SAA8CqD,GAClD,IAAKA,EAAU,CACb,MAAM1B,EAAW,0BAEjB,MADAnC,EAAeU,MAAMyB,GACf,IAAIhD,EAAcgD,EAAU1E,EAAU0F,kBAE9C,MAAMiE,EAAcxF,EAASiC,GAU7B,MAR2C,CACzCgE,IAAKT,EAAYS,IACjB7C,UACsB,QAApBoC,EAAYC,IACPD,EAA+BW,mBAC/BX,EAA+BY,IAI1C,CGkMiBE,QADUzI,KAAKqG,YAAY1B,IACkBvC,OAC1DpC,KAAKuF,UAAYxE,EAAKwE,UACtBvF,KAAKoI,IAAMrH,EAAKqH,IAEhB,MAAMM,EAAa,CACjBC,KAAM,CACJtD,SAAUrF,KAAKqE,OAAOgB,SACtBuD,UAAW,qCAAqC5I,KAAKoI,OAEvDS,MAAO,CACLC,cAAe,mBAInB9I,KAAK+G,aAAe,IAAIgC,EAAwBL,SAC1C1I,KAAK+G,aAAa9B,aACxBjF,KAAKyE,aAAc,EAWb,iBAAM4B,CAAY1B,GACxB,GAAI3E,KAAKoE,UACHpE,KAAKoE,SAASyD,mBAAqBnG,KAAKsH,MA9RR,IAgSlC,OADAzI,EAAeK,QAAQ,mCAChBZ,KAAKoE,SAIhB,MAAMc,EAAS,CAAEP,UAAWA,QAAAA,EAAa,IACzC,IAAIvC,EACJ,UACQ4C,EAAIC,aACV,MAAOxC,GACP,MAAMC,EAAW,0EAEjB,MADAnC,EAAeU,MAAMyB,GACf,IAAIhD,EAAcgD,EAAU1E,EAAUwE,eAG9C,IACEJ,QAAcsD,EAAeuD,aAAa/D,GAC1C,MAAOzC,GACP,MAAMC,EAAW,oCAAuCD,EAAc5C,QAEtE,MADAU,EAAeU,MAAMyB,GACf,IAAIhD,EAAcgD,EAAU1E,EAAUwE,eAG9C,IAAKJ,EAAO,CACV,MAAMM,EAAW,iCAEjB,MADAnC,EAAeU,MAAMyB,GACf,IAAIhD,EAAcgD,EAAU1E,EAAUwE,eAG9C,MAAMmF,EAAcxF,EAASC,GAC7B,GAAwB,QAApBuF,EAAYC,KAAqC,QAApBD,EAAYC,IAAe,CAC1D,MAAMlF,EAAW,mDAAqDiF,EAAYC,IAElF,MADArH,EAAeU,MAAMyB,GACf,IAAIhD,EAAcgD,EAAU1E,EAAUwE,eAG9C,MAAM4B,EAAwB,CAC5BhC,QACAyF,mBAAsC,IAAlBF,EAAYpF,KAIlC,OADAvC,KAAKoE,SAAWA,EACTA,EAUD,qBAAAI,CACNH,GAGA,GADA9D,EAAeK,QAAQ,yCACnByD,EAAOe,uBAAyBf,EAAOgB,SACzC,OAAOhB,EAGT,MAAM6E,EAAgB,GACjB7E,EAAOe,uBACV8D,EAAcC,KAAK,yBAGhB9E,EAAOgB,UACV6D,EAAcC,KAAK,YAGrB,MAAMzG,EAAWC,EACfzE,EAAaC,qBACb+K,EAAcrE,KAAK,MACnB,aAIF,MADAtE,EAAeU,MAAMyB,GACf,IAAIhD,EAAcgD,EAAU1E,EAAUG,sBAGtC,iBAAAiI,CAAkBgD,GACxB,IAC6BnJ,OAAOoJ,KAAKD,GACpBE,SAASC,IAC1BpD,eAAeqD,QAAQD,EAAKH,EAAqBG,GAAK,IAExD,MAAOtI,GAGP,MAAMwI,EAAe,mDACnBxI,EAAMpB,UAGR,MADAU,EAAeU,MAAMwI,GACf,IAAI/J,EAAc+J,EAAczL,EAAUwE,uBC5TzCkH,EAUX,WAAA9J,CACEgE,EACAwB,EACAuE,EACAC,GAEA,MAAM,IAAIlK,EACRiD,EAAazE,EAAaM,2BAA4B,qBACtDR,EAAU6F,qBAkBP,WAAAgG,CAAYC,GACjB,OAAO7F,QAAQC,OACb,IAAIxE,EACFiD,EAAazE,EAAaM,2BAA4B,qBACtDR,EAAU6F,sBAqBT,cAAAkG,CAAeD,GACpB,OAAO7F,QAAQC,OACb,IAAIxE,EACFiD,EAAazE,EAAaM,2BAA4B,qBACtDR,EAAU6F,uBClIF,SAAAmG,EAAgBC,EAAqBC,GAEnD,MAAMC,EAAWC,EAAMC,OAAO,CAC5BC,QAASL,IAOX,OALAE,EAASI,aAAaC,QAAQC,KAAIC,eAAgBrG,GAChD,aAAc6F,EAAaS,sBACzBtG,EAEJ,IACO8F,CACT,OCnBaS,EAMX,WAAAhL,CAAYkE,GACV9D,KAAK8D,SAAWA,EAaX,2BAAM6G,CAAsBtG,GACjC,MAAMjC,QAAcpC,KAAK8D,WAIzB,GAHKO,EAAOwG,UACVxG,EAAOwG,QAAU,CAAE,GAEjBxG,EAAOwG,QAAuB,cAChC,MAAM,IAAInL,EACRxB,EAAagB,iCACblB,EAAU8M,gCAKd,OADAzG,EAAOwG,QAAuB,cAAI,UAAUzI,IACrCiC,SChCE0G,EAYX,WAAAnL,CAAYoL,EAAkBC,GAC5B,MAAM,IAAIvL,EACRiD,EAAazE,EAAaM,2BAA4B,qBACtDR,EAAU6F,qBAeP,qBAAA8G,CAAsBtG,GAC3B,OAAOJ,QAAQC,OACb,IAAIxE,EACFiD,EAAazE,EAAaM,2BAA4B,qBACtDR,EAAU6F,6BClCLqH,EAcX,WAAAtL,CAAYuL,EAAiBC,EAAkBC,GAC7C,MAAM,IAAI3L,EACRiD,EAAazE,EAAaM,2BAA4B,kBACtDR,EAAU6F,qBAeP,qBAAA8G,CAAsBtG,GAC3B,OAAOJ,QAAQC,OACb,IAAIxE,EACFiD,EAAazE,EAAaM,2BAA4B,kBACtDR,EAAU6F,2BASNyH,ECvBAC,EA6NAC,EAoBAC,ECoTAC,GF9gBZ,SAAYJ,GAIVA,EAAAA,EAAA,OAAA,GAAA,SAIAA,EAAAA,EAAA,YAAA,GAAA,aACD,CATD,CAAYA,IAAAA,EASX,CAAA,UGpDYK,EAOX,WAAA/L,CAAYgM,GACV,MAAM,IAAIlM,EACRiD,EAAazE,EAAaM,2BAA4B,2BACtDR,EAAU6F,qBAeP,qBAAA8G,CAAsBtG,GAC3B,OAAOJ,QAAQC,OACb,IAAIxE,EACFiD,EAAazE,EAAaM,2BAA4B,2BACtDR,EAAU6F,gCAmBFgI,EACdC,EACAvC,EACAvF,GAKA,MAAM,IAAItE,EACRiD,EAAazE,EAAaM,2BAA4B,uBACtDR,EAAU6F,oBAEd,CAcgB,SAAAkI,EACdC,EACAhI,GAIA,MAAM,IAAItE,EACRiD,EAAazE,EAAaM,2BAA4B,uBACtDR,EAAU6F,oBAEd,EFhEA,SAAY0H,GAKVA,EAAA,QAAA,UAIAA,EAAA,MAAA,QAIAA,EAAA,OAAA,QACD,CAdD,CAAYA,IAAAA,EAcX,CAAA,IA+MD,SAAYC,GAIVA,EAAAA,EAAA,qBAAA,GAAA,uBAKAA,EAAAA,EAAA,cAAA,GAAA,gBAKAA,EAAAA,EAAA,UAAA,GAAA,WACD,CAfD,CAAYA,IAAAA,EAeX,CAAA,IAKD,SAAYC,GAIVA,EAAAA,EAAA,WAAA,KAAA,aAKAA,EAAAA,EAAA,oBAAA,KAAA,qBACD,CAVD,CAAYA,IAAAA,EAUX,CAAA,UG/QYQ,EAcX,WAAArM,CACEsM,EACAC,EACAvI,KACGd,GAEH,MAAM,IAAIpD,EACRiD,EAAazE,EAAaM,2BAA4B,yBACtDR,EAAU6F,qBAUP,UAAAuI,CAAWC,EAAuCC,GACvD,MAAM,IAAI5M,EACRiD,EAAazE,EAAaM,2BAA4B,yBACtDR,EAAU6F,qBAUP,GAAA0I,CAAIC,EAAsBC,GAC/B,MAAM,IAAI/M,EACRiD,EAAazE,EAAaM,2BAA4B,yBACtDR,EAAU6F,qBASJ,WAAA6I,CAAYF,GACpB,MAAM,IAAI9M,EACRiD,EAAazE,EAAaM,2BAA4B,yBACtDR,EAAU6F,sBC5DV,SAAU8I,EACdH,EACAnI,EACAe,EACArB,EACA6I,GAEA,MAAM,IAAIlN,EACRiD,EAAazE,EAAaM,2BAA4B,uCACtDR,EAAU6F,oBAEd,EH8iBA,SAAY6H,GAIVA,EAAAA,EAAA,OAAA,GAAA,SAKAA,EAAAA,EAAA,MAAA,GAAA,QAKAA,EAAAA,EAAA,QAAA,GAAA,UAKAA,EAAAA,EAAA,IAAA,GAAA,KACD,CApBD,CAAYA,IAAAA,EAoBX,CAAA,oFIlkBC,WAAA9L,CAAYiN,EAAuB7I,GACjC,MAAM,IAAItE,EACRiD,EAAazE,EAAaM,2BAA4B,iBACtDR,EAAU6F,qBAYd,eAAAiJ,CAAgBC,GACd,OAAO9I,QAAQC,OACb,IAAIxE,EACFiD,EAAazE,EAAaM,2BAA4B,iBACtDR,EAAU6F,sBAahB,gBAAAmJ,CAAiBC,GACf,OAAOhJ,QAAQC,OACb,IAAIxE,EACFiD,EAAazE,EAAaM,2BAA4B,iBACtDR,EAAU6F,sCJiDhB,WAAAjE,CAAYsN,EAA8BnM,GACxC,MAdcf,KAAAmN,KAA+B5B,EAAuB6B,QAc9D,IAAI1N,EACRiD,EAAazE,EAAaM,2BAA4B,WACtDR,EAAU6F,qBAeP,WAAAwJ,CACLC,EACAC,GAEA,OAAOtJ,QAAQC,OACb,IAAIxE,EACFiD,EAAazE,EAAaM,2BAA4B,WACtDR,EAAU6F,sBAgBT,gBAAA2J,CACLC,EACAF,GAEA,OAAOtJ,QAAQC,OACb,IAAIxE,EACFiD,EAAazE,EAAaM,2BAA4B,WACtDR,EAAU6F,yCKpIhB,WAAAjE,CAAYiN,EAAuBa,GACjC,MAAM,IAAIhO,EACRiD,EAAazE,EAAaM,2BAA4B,cACtDR,EAAU6F,qBAYP,eAAA8J,CAAgBC,GACrB,MAAM,IAAIlO,EACRiD,EAAazE,EAAaM,2BAA4B,cACtDR,EAAU6F,qBAYP,gBAAAgK,CAAiBH,GACtB,MAAM,IAAIhO,EACRiD,EAAazE,EAAaM,2BAA4B,cACtDR,EAAU6F,qBASP,kBAAAiK,CAAmBC,GACxB,MAAM,IAAIrO,EACRiD,EAAazE,EAAaM,2BAA4B,cACtDR,EAAU6F,qBASP,mBAAAmK,CAAoBC,GACzB,MAAM,IAAIvO,EACRiD,EAAazE,EAAaM,2BAA4B,cACtDR,EAAU6F,6CC9Bd,WAAAjE,CAAmBoE,GACjB,MAAM,IAAItE,EACRiD,EAAazE,EAAaM,2BAA4B,mBACtDR,EAAU6F,qBAcP,cAAAqK,CACLC,EACAC,EACAxB,GAEA,OAAO3I,QAAQC,OACb,IAAIxE,EACFiD,EAAazE,EAAaM,2BAA4B,mBACtDR,EAAU6F,qCNkIhB,WAAAjE,CAAYsN,EAA8BpG,GACxC,MAdc9G,KAAAmN,KAA+B5B,EAAuB8C,OAc9D,IAAI3O,EACRiD,EAAazE,EAAaM,2BAA4B,UACtDR,EAAU6F,qBAeP,WAAAwJ,CACLC,EACAC,GAEA,OAAOtJ,QAAQC,OACb,IAAIxE,EACFiD,EAAazE,EAAaM,2BAA4B,UACtDR,EAAU6F,sBAgBT,gBAAA2J,CACLC,EACAF,GAEA,OAAOtJ,QAAQC,OACbD,QAAQC,OACN,IAAIxE,EACFiD,EAAazE,EAAaM,2BAA4B,UACtDR,EAAU6F,+CAuMlB,WAAAjE,CAAmBiN,EAAuB7I,GACxC,MAAM,IAAItE,EACRiD,EAAazE,EAAaM,2BAA4B,mBACtDR,EAAU6F,qBAcP,oBAAOyK,GACZ,OAAOrK,QAAQC,OACb,IAAIxE,EACFiD,EAAazE,EAAaM,2BAA4B,mBACtDR,EAAU6F,sBAkBT,UAAA0K,CACLC,EACAC,GAEA,OAAOxK,QAAQC,OACb,IAAIxE,EACFiD,EAAazE,EAAaM,2BAA4B,mBACtDR,EAAU6F,sBAkBT,WAAA6K,CACLF,GAEA,OAAOvK,QAAQC,OACb,IAAIxE,EACFiD,EAAazE,EAAaM,2BAA4B,mBACtDR,EAAU6F,sBAiBT,cAAA8K,CACLH,EACAC,GAEA,OAAOxK,QAAQC,OACb,IAAIxE,EACFiD,EAAazE,EAAaM,2BAA4B,mBACtDR,EAAU6F,sBAgBT,eAAA+K,CACLJ,GAEA,OAAOvK,QAAQC,OACb,IAAIxE,EACFiD,EAAazE,EAAaM,2BAA4B,mBACtDR,EAAU6F,mDAlQhB,WAAAjE,CAAYiN,EAAuBgC,GACjC,MAAM,IAAInP,EACRiD,EAAazE,EAAaM,2BAA4B,wBACtDR,EAAU6F,qBAeP,WAAAwJ,CACLC,EACAC,GAEA,OAAOtJ,QAAQC,OACb,IAAIxE,EACFiD,EAAazE,EAAaM,2BAA4B,wBACtDR,EAAU6F,sBAgBT,gBAAA2J,CACLC,EACAF,GAEA,OAAOtJ,QAAQC,OACb,IAAIxE,EACFiD,EAAazE,EAAaM,2BAA4B,wBACtDR,EAAU6F,sBAaT,QAAAiL,GACL,OAAO7K,QAAQC,OACb,IAAIxE,EACFiD,EAAazE,EAAaM,2BAA4B,wBACtDR,EAAU6F,sBAaT,OAAAkL,GACL,OAAO9K,QAAQC,OACb,IAAIxE,EACFiD,EAAazE,EAAaM,2BAA4B,wBACtDR,EAAU6F,sBAUT,cAAAmL,GACL,OAAO/K,QAAQC,OACb,IAAIxE,EACFiD,EAAazE,EAAaM,2BAA4B,wBACtDR,EAAU6F,kDApWhBoL,EACAxB,EACAF,GAEA,OAAOtJ,QAAQC,OACb,IAAIxE,EACFiD,EAAazE,EAAaM,2BAA4B,oBACtDR,EAAU6F,qBAGhB,uBAnCEoL,EACA3B,EACAC,GAEA,OAAOtJ,QAAQC,OACb,IAAIxE,EACFiD,EAAazE,EAAaM,2BAA4B,eACtDR,EAAU6F,qBAGhB"}
@@ -1,4 +1,4 @@
1
- import{jwtDecode as e}from"jwt-decode";import{ConfidentialClientApplication as t}from"@azure/msal-node";import{createHash as n}from"crypto";import{ActivityTypes as i,Channels as o,TeamsInfo as a,CardFactory as r,ActionTypes as s,MessageFactory as c,StatusCodes as d,verifyStateOperationName as l,tokenExchangeOperationName as u,TurnContext as h,TeamsActivityHandler as p,MemoryStorage as v,UserState as m,ConversationState as f,ConfigurationServiceClientCredentialFactory as y,ConfigurationBotFrameworkAuthentication as g,CloudAdapter as w}from"botbuilder";import{Dialog as C,ComponentDialog as A,WaterfallDialog as S,DialogSet as I,DialogTurnStatus as T}from"botbuilder-dialogs";import{v4 as k}from"uuid";import E from"axios";import{Agent as x}from"https";import*as R from"adaptivecards-templating";import*as b from"path";import*as O from"fs";var P,F;!function(e){e.InvalidParameter="InvalidParameter",e.InvalidConfiguration="InvalidConfiguration",e.InvalidCertificate="InvalidCertificate",e.InternalError="InternalError",e.ChannelNotSupported="ChannelNotSupported",e.FailedToRetrieveSsoToken="FailedToRetrieveSsoToken",e.FailedToProcessSsoHandler="FailedToProcessSsoHandler",e.CannotFindCommand="CannotFindCommand",e.FailedToRunSsoStep="FailedToRunSsoStep",e.FailedToRunDedupStep="FailedToRunDedupStep",e.SsoActivityHandlerIsUndefined="SsoActivityHandlerIsUndefined",e.RuntimeNotSupported="RuntimeNotSupported",e.ConsentFailed="ConsentFailed",e.UiRequiredError="UiRequiredError",e.TokenExpiredError="TokenExpiredError",e.ServiceError="ServiceError",e.FailedOperation="FailedOperation",e.InvalidResponse="InvalidResponse",e.AuthorizationInfoAlreadyExists="AuthorizationInfoAlreadyExists"}(P||(P={}));class D{}D.InvalidConfiguration="{0} in configuration is invalid: {1}.",D.ConfigurationNotExists="Configuration does not exist. {0}",D.ResourceConfigurationNotExists="{0} resource configuration does not exist.",D.MissingResourceConfiguration="Missing resource configuration with type: {0}, name: {1}.",D.AuthenticationConfigurationNotExists="Authentication configuration does not exist.",D.BrowserRuntimeNotSupported="{0} is not supported in browser.",D.NodejsRuntimeNotSupported="{0} is not supported in Node.",D.FailToAcquireTokenOnBehalfOfUser="Failed to acquire access token on behalf of user: {0}",D.OnlyMSTeamsChannelSupported="{0} is only supported in MS Teams Channel",D.FailedToProcessSsoHandler="Failed to process sso handler: {0}",D.FailedToRetrieveSsoToken="Failed to retrieve sso token, user failed to finish the AAD consent flow.",D.CannotFindCommand="Cannot find command: {0}",D.FailedToRunSsoStep="Failed to run dialog to retrieve sso token: {0}",D.FailedToRunDedupStep="Failed to run dialog to remove duplicated messages: {0}",D.SsoActivityHandlerIsNull="Sso command can only be used or added when sso activity handler is not undefined",D.AuthorizationHeaderAlreadyExists="Authorization header already exists!",D.BasicCredentialAlreadyExists="Basic credential already exists!",D.EmptyParameter="Parameter {0} is empty",D.DuplicateHttpsOptionProperty="Axios HTTPS agent already defined value for property {0}",D.DuplicateApiKeyInHeader="The request already defined api key in request header with name {0}.",D.DuplicateApiKeyInQueryParam="The request already defined api key in query parameter with name {0}.",D.OnlySupportInQueryActivity="The handleMessageExtensionQueryWithToken only support in handleTeamsMessagingExtensionQuery with composeExtension/query type.",D.OnlySupportInLinkQueryActivity="The handleMessageExtensionLinkQueryWithSSO only support in handleTeamsAppBasedLinkQuery with composeExtension/queryLink type.";class M extends Error{constructor(e,t){if(!t)return super(e),this;super(e),Object.setPrototypeOf(this,M.prototype),this.name=`${new.target.name}.${t}`,this.code=t}}function N(e){B.level=e}function H(){return B.level}!function(e){e[e.Verbose=0]="Verbose",e[e.Info=1]="Info",e[e.Warn=2]="Warn",e[e.Error=3]="Error"}(F||(F={}));const B=new class{constructor(e,t){this.level=void 0,this.defaultLogger={verbose:console.debug,info:console.info,warn:console.warn,error:console.error},this.name=e,this.level=t}error(e){this.log(F.Error,(e=>e.error),e)}warn(e){this.log(F.Warn,(e=>e.warn),e)}info(e){this.log(F.Info,(e=>e.info),e)}verbose(e){this.log(F.Verbose,(e=>e.verbose),e)}log(e,t,n){if(""===n.trim())return;const i=(new Date).toUTCString();let o;o=this.name?`[${i}] : @microsoft/teamsfx - ${this.name} : ${F[e]} - `:`[${i}] : @microsoft/teamsfx : ${F[e]} - `;const a=`${o}${n}`;void 0!==this.level&&this.level<=e&&(this.customLogger?t(this.customLogger)(a):this.customLogFunction?this.customLogFunction(e,a):t(this.defaultLogger)(a))}};function U(e){B.customLogger=e}function q(e){B.customLogFunction=e}function j(t){try{const n=e(t);if(!n||!n.exp)throw new M("Decoded token is null or exp claim does not exists.",P.InternalError);return n}catch(e){const t="Parse jwt token failed in node env with error: "+e.message;throw B.error(t),new M(t,P.InternalError)}}function L(e,...t){const n=t;return e.replace(/{(\d+)}/g,(function(e,t){return void 0!==n[t]?n[t]:e}))}function $(e){if("string"==typeof e||e instanceof String)return;if(Array.isArray(e)&&0===e.length)return;if(Array.isArray(e)&&e.length>0&&e.every((e=>"string"==typeof e)))return;const t="The type of scopes is not valid, it must be string or string array";throw B.error(t),new M(t,P.InvalidParameter)}function z(e){return("string"==typeof e?e.split(" "):e).filter((e=>null!==e&&""!==e))}function K(e){const i=(o=e.authorityHost,a=e.tenantId,o.replace(/\/+$/g,"")+"/"+a);var o,a;const r=function(e){if(!e)return;const t=/(-+BEGIN CERTIFICATE-+)(\n\r?|\r\n?)([A-Za-z0-9+/\n\r]+=*)(\n\r?|\r\n?)(-+END CERTIFICATE-+)/.exec(e);if(!t){const e="The certificate content does not contain a PEM-encoded certificate.";throw B.error(e),new M(e,P.InvalidCertificate)}return{thumbprintSha256:n("sha256").update(Buffer.from(t[3],"base64")).digest("hex").toUpperCase(),privateKey:e}}(e.certificateContent),s={clientId:e.clientId,authority:i};return r?s.clientCertificate=r:s.clientSecret=e.clientSecret,new t({auth:s})}class G{constructor(e){B.info("Create M365 tenant credential");const t=this.loadAndValidateConfig(e);this.msalClient=K(t)}async getToken(e,t){let n;$(e);const i="string"==typeof e?e:e.join(" ");B.info("Get access token with scopes: "+i);try{const t=z(e),i=await this.msalClient.acquireTokenByClientCredential({scopes:t});i&&(n={token:i.accessToken,expiresOnTimestamp:i.expiresOn.getTime()})}catch(e){const t="Get M365 tenant credential failed with error: "+e.message;throw B.error(t),new M(t,P.ServiceError)}if(!n){const e="Get M365 tenant credential access token failed with empty access token";throw B.error(e),new M(e,P.InternalError)}return n}loadAndValidateConfig(e){if(B.verbose("Validate authentication configuration"),e.clientId&&(e.clientSecret||e.certificateContent)&&e.tenantId&&e.authorityHost)return e;const t=[];e.clientId||t.push("clientId"),e.clientSecret||e.certificateContent||t.push("clientSecret or certificateContent"),e.tenantId||t.push("tenantId"),e.authorityHost||t.push("authorityHost");const n=L(D.InvalidConfiguration,t.join(", "),"undefined");throw B.error(n),new M(n,P.InvalidConfiguration)}}class _{constructor(e,t){B.info("Get on behalf of user credential");const n=[];if(t.clientId||n.push("clientId"),t.authorityHost||n.push("authorityHost"),t.clientSecret||t.certificateContent||n.push("clientSecret or certificateContent"),t.tenantId||n.push("tenantId"),0!=n.length){const e=L(D.InvalidConfiguration,n.join(", "),"undefined");throw B.error(e),new M(e,P.InvalidConfiguration)}this.msalClient=K(t);const i=j(e);this.ssoToken={token:e,expiresOnTimestamp:i.exp}}async getToken(e,t){$(e);const n=z(e);let i;if(n.length){let e;B.info("Get access token with scopes: "+n.join(" "));try{e=await this.msalClient.acquireTokenOnBehalfOf({oboAssertion:this.ssoToken.token,scopes:n})}catch(e){throw this.generateAuthServerError(e)}if(!e){const e="Access token is null";throw B.error(e),new M(L(D.FailToAcquireTokenOnBehalfOfUser,e),P.InternalError)}i={token:e.accessToken,expiresOnTimestamp:e.expiresOn.getTime()}}else{if(B.info("Get SSO token."),Math.floor(Date.now()/1e3)>this.ssoToken.expiresOnTimestamp){const e="Sso token has already expired.";throw B.error(e),new M(e,P.TokenExpiredError)}i=this.ssoToken}return i}getUserInfo(){return B.info("Get basic user info from SSO token"),function(e){if(!e){const e="SSO token is undefined.";throw B.error(e),new M(e,P.InvalidParameter)}const t=j(e),n={displayName:t.name,objectId:t.oid,tenantId:t.tid,preferredUserName:""};return"2.0"===t.ver?n.preferredUserName=t.preferred_username:"1.0"===t.ver&&(n.preferredUserName=t.upn),n}(this.ssoToken.token)}generateAuthServerError(e){const t=e.errorMessage;if("InteractionRequiredAuthError"===e.name){const e="Failed to get access token from AAD server, interaction required: "+t;return B.warn(e),new M(e,P.UiRequiredError)}if(t&&t.indexOf("AADSTS50013")>=0){const e="Failed to get access token from AAD server, assertion is invalid because of various reasons: "+t;return B.error(e),new M(e,P.TokenExpiredError)}{const e=L(D.FailToAcquireTokenOnBehalfOfUser,t);return B.error(e),new M(e,P.ServiceError)}}}class Q{constructor(e){throw new M(L(D.NodejsRuntimeNotSupported,"TeamsUserCredential"),P.RuntimeNotSupported)}login(e,t){return Promise.reject(new M(L(D.NodejsRuntimeNotSupported,"TeamsUserCredential"),P.RuntimeNotSupported))}getToken(e,t){return Promise.reject(new M(L(D.NodejsRuntimeNotSupported,"TeamsUserCredential"),P.RuntimeNotSupported))}getUserInfo(e){return Promise.reject(new M(L(D.NodejsRuntimeNotSupported,"TeamsUserCredential"),P.RuntimeNotSupported))}}const V="invokeResponse";class W{constructor(e,t){this.id=e,this.failureDetail=t}}class J extends C{constructor(e,t,n,i){super(n),this.initiateLoginEndpoint=t,this.authConfig=e,this.settings=i,$(this.settings.scopes),function(e){if(e.clientId&&(e.clientSecret||e.certificateContent)&&e.tenantId&&e.authorityHost)return;const t=[];e.clientId||t.push("clientId"),e.clientSecret||e.certificateContent||t.push("clientSecret or certificateContent"),e.tenantId||t.push("tenantId"),e.authorityHost||t.push("authorityHost");const n=L(D.InvalidConfiguration,t.join(", "),"undefined");throw B.error(n),new M(n,P.InvalidConfiguration)}(this.authConfig),B.info("Create a new Teams Bot SSO Prompt")}async beginDialog(e){var t;B.info("Begin Teams Bot SSO Prompt"),this.ensureMsTeamsChannel(e);let n=9e5;if(this.settings.timeout){if("number"!=typeof this.settings.timeout){const e="type of timeout property in teamsBotSsoPromptSettings should be number.";throw B.error(e),new M(e,P.InvalidParameter)}if(this.settings.timeout<=0){const e="value of timeout property in teamsBotSsoPromptSettings should be positive.";throw B.error(e),new M(e,P.InvalidParameter)}n=this.settings.timeout}void 0===this.settings.endOnInvalidMessage&&(this.settings.endOnInvalidMessage=!0);const i=null===(t=e.activeDialog)||void 0===t?void 0:t.state;return i.state={},i.options={},i.expires=(new Date).getTime()+n,await this.sendOAuthCardAsync(e.context),C.EndOfTurn}async continueDialog(e){var t;B.info("Continue Teams Bot SSO Prompt"),this.ensureMsTeamsChannel(e);const n=null===(t=e.activeDialog)||void 0===t?void 0:t.state,o=e.context.activity.type===i.Message;if((o||this.isTeamsVerificationInvoke(e.context)||this.isTokenExchangeRequestInvoke(e.context))&&(new Date).getTime()>n.expires)return B.warn("End Teams Bot SSO Prompt due to timeout"),await e.endDialog(void 0);if(this.isTeamsVerificationInvoke(e.context)||this.isTokenExchangeRequestInvoke(e.context)){const t=await this.recognizeToken(e);if(t.succeeded)return await e.endDialog(t.value)}else if(o&&this.settings.endOnInvalidMessage)return B.warn("End Teams Bot SSO Prompt due to invalid message"),await e.endDialog(void 0);return C.EndOfTurn}ensureMsTeamsChannel(e){if(e.context.activity.channelId!=o.Msteams){const e=L(D.OnlyMSTeamsChannelSupported,"Teams Bot SSO Prompt");throw B.error(e),new M(e,P.ChannelNotSupported)}}async sendOAuthCardAsync(e){B.verbose("Send OAuth card to get SSO token");const t=await a.getMember(e,e.activity.from.id);B.verbose("Get Teams member account user principal name: "+(t.userPrincipalName?t.userPrincipalName:""));const n=t.userPrincipalName?t.userPrincipalName:"",i=this.getSignInResource(n),o=r.oauthCard("","Teams SSO Sign In","Sign In",i.signInLink,i.tokenExchangeResource);o.content.buttons[0].type=s.Signin;const d=c.attachment(o);await e.sendActivity(d)}getSignInResource(e){B.verbose("Get sign in authentication configuration");const t=`${this.initiateLoginEndpoint}?scope=${encodeURI(this.settings.scopes.join(" "))}&clientId=${this.authConfig.clientId}&tenantId=${this.authConfig.tenantId}&loginHint=${e}`;B.verbose("Sign in link: "+t);return{signInLink:t,tokenExchangeResource:{id:k()}}}async recognizeToken(e){const t=e.context;let n;if(this.isTokenExchangeRequestInvoke(t))if(B.verbose("Receive token exchange request"),t.activity.value&&this.isTokenExchangeRequest(t.activity.value)){const e=t.activity.value.token,i=new _(e,this.authConfig);let o;try{if(o=await i.getToken(this.settings.scopes),o){await t.sendActivity(this.getTokenExchangeInvokeResponse(d.OK,"",t.activity.value.id));const i=j(e).exp;n={ssoToken:e,ssoTokenExpiration:new Date(1e3*i).toISOString(),connectionName:"",token:o.token,expiration:o.expiresOnTimestamp.toString()}}}catch(e){const n="The bot is unable to exchange token. Ask for user consent.";B.info(n),await t.sendActivity(this.getTokenExchangeInvokeResponse(d.PRECONDITION_FAILED,n,t.activity.value.id))}}else{const e="The bot received an InvokeActivity that is missing a TokenExchangeInvokeRequest value. This is required to be sent with the InvokeActivity.";B.warn(e),await t.sendActivity(this.getTokenExchangeInvokeResponse(d.BAD_REQUEST,e))}else this.isTeamsVerificationInvoke(t)&&(B.verbose("Receive Teams state verification request"),await this.sendOAuthCardAsync(e.context),await t.sendActivity({type:V,value:{status:d.OK}}));return void 0!==n?{succeeded:!0,value:n}:{succeeded:!1}}getTokenExchangeInvokeResponse(e,t,n){return{type:V,value:{status:e,body:new W(n,t)}}}isTeamsVerificationInvoke(e){const t=e.activity;return t.type===i.Invoke&&t.name===l}isTokenExchangeRequestInvoke(e){const t=e.activity;return t.type===i.Invoke&&t.name===u}isTokenExchangeRequest(e){return e.hasOwnProperty("token")}}function Z(e,t){const n=E.create({baseURL:e});return n.interceptors.request.use((async function(e){return await t.AddAuthenticationInfo(e)})),n}class X{constructor(e){this.getToken=e}async AddAuthenticationInfo(e){const t=await this.getToken();if(e.headers||(e.headers={}),e.headers.Authorization)throw new M(D.AuthorizationHeaderAlreadyExists,P.AuthorizationInfoAlreadyExists);return e.headers.Authorization=`Bearer ${t}`,e}}class Y{constructor(e,t){if(!e)throw new M(L(D.EmptyParameter,"username"),P.InvalidParameter);if(!t)throw new M(L(D.EmptyParameter,"password"),P.InvalidParameter);this.userName=e,this.password=t}AddAuthenticationInfo(e){return e.headers&&e.headers.Authorization?Promise.reject(new M(D.AuthorizationHeaderAlreadyExists,P.AuthorizationInfoAlreadyExists)):e.auth?Promise.reject(new M(D.BasicCredentialAlreadyExists,P.AuthorizationInfoAlreadyExists)):(e.auth={username:this.userName,password:this.password},Promise.resolve(e))}}class ee{constructor(e,t,n){if(!e)throw new M(L(D.EmptyParameter,"keyName"),P.InvalidParameter);if(!t)throw new M(L(D.EmptyParameter,"keyVaule"),P.InvalidParameter);this.keyName=e,this.keyValue=t,this.keyLocation=n}AddAuthenticationInfo(e){switch(this.keyLocation){case te.Header:if(e.headers||(e.headers={}),e.headers[this.keyName])return Promise.reject(new M(L(D.DuplicateApiKeyInHeader,this.keyName),P.AuthorizationInfoAlreadyExists));e.headers[this.keyName]=this.keyValue;break;case te.QueryParams:e.params||(e.params={});let t=!1;if(e.url){t=new URL(e.url,e.baseURL).searchParams.has(this.keyName)}if(e.params[this.keyName]||t)return Promise.reject(new M(L(D.DuplicateApiKeyInQueryParam,this.keyName),P.AuthorizationInfoAlreadyExists));e.params[this.keyName]=this.keyValue}return Promise.resolve(e)}}var te,ne,ie,oe;!function(e){e[e.Header=0]="Header",e[e.QueryParams=1]="QueryParams"}(te||(te={}));class ae{constructor(e){if(!e||0===Object.keys(e).length)throw new M(L(D.EmptyParameter,"certOption"),P.InvalidParameter);this.certOption=e}AddAuthenticationInfo(e){if(e.httpsAgent){const t=new Set(Object.keys(e.httpsAgent.options));for(const e of Object.keys(this.certOption))if(t.has(e))return Promise.reject(new M(L(D.DuplicateHttpsOptionProperty,e),P.InvalidParameter));Object.assign(e.httpsAgent.options,this.certOption)}else e.httpsAgent=new x(this.certOption);return Promise.resolve(e)}}function re(e,t,n){if(0===e.length)throw new M(L(D.EmptyParameter,"cert"),P.InvalidParameter);if(0===t.length)throw new M(L(D.EmptyParameter,"key"),P.InvalidParameter);return{cert:e,key:t,passphrase:null==n?void 0:n.passphrase,ca:null==n?void 0:n.ca}}function se(e,t){if(0===e.length)throw new M(L(D.EmptyParameter,"pfx"),P.InvalidParameter);return{pfx:e,passphrase:null==t?void 0:t.passphrase}}!function(e){e.Channel="Channel",e.Group="Group",e.Person="Person"}(ne||(ne={})),function(e){e[e.ReplaceForInteractor=0]="ReplaceForInteractor",e[e.ReplaceForAll=1]="ReplaceForAll",e[e.NewForAll=2]="NewForAll"}(ie||(ie={})),function(e){e[e.BadRequest=400]="BadRequest",e[e.InternalServerError=500]="InternalServerError"}(oe||(oe={}));let ce="BotSsoExecutionDialog",de="TeamsFxSsoPrompt",le="CommandRouteDialog";class ue extends A{constructor(e,t,n,i,o){super(null!=o?o:ce),this.dedupStorageKeys=[],this.commandMapping=new Map,o&&(ce=o,de=o+de,le=o+le);const a=new J(n,i,de,t);this.addDialog(a),this.initialDialogId=le,this.dedupStorage=e,this.dedupStorageKeys=[];const r=new S(le,[this.commandRouteStep.bind(this)]);this.addDialog(r)}addCommand(e,t){const n=this.getCommandHash(t),i=new S(n,[this.ssoStep.bind(this),this.dedupStep.bind(this),async t=>{const n=t.result.tokenResponse,i=t.context,o=t.result.message;try{if(!n)throw new Error(D.FailedToRetrieveSsoToken);return await e(i,n,o),await t.endDialog()}catch(e){const n=L(D.FailedToProcessSsoHandler,e.message);return B.error(n),await t.endDialog(new M(n,P.FailedToProcessSsoHandler))}}]);this.commandMapping.set(n,t),this.addDialog(i)}getCommandHash(e){const t=(Array.isArray(e)?e:[e]).join();return t.replace(/[^a-zA-Z0-9]/g,"")+n("sha256").update(t).digest("hex").toLowerCase()}async run(e,t){const n=new I(t);n.add(this);const i=await n.createContext(e);this.ensureMsTeamsChannel(i);const o=await i.continueDialog();if(o&&o.status===T.empty)await i.beginDialog(this.id);else if(o&&o.status===T.complete&&o.result instanceof Error)throw o.result}getActivityText(e){let t=e.text;const n=h.removeRecipientMention(e);return n&&(t=n.toLowerCase().replace(/\n|\r\n/g,"").trim()),t}async commandRouteStep(e){const t=e.context,n=this.getActivityText(t.activity),i=this.getMatchesCommandId(n);if(i)return await e.beginDialog(i);const o=L(D.CannotFindCommand,t.activity.text);throw B.error(o),new M(o,P.CannotFindCommand)}async ssoStep(e){try{const t=e.context,n={text:this.getActivityText(t.activity)};return e.options.commandMessage=n,await e.beginDialog(de)}catch(t){const n=L(D.FailedToRunSsoStep,t.message);return B.error(n),await e.endDialog(new M(n,P.FailedToRunSsoStep))}}async dedupStep(e){const t=e.result;if(!t)return B.error(D.FailedToRetrieveSsoToken),await e.endDialog(new M(D.FailedToRetrieveSsoToken,P.FailedToRunSsoStep));try{return t&&await this.shouldDedup(e.context)?C.EndOfTurn:await e.next({tokenResponse:t,message:e.options.commandMessage})}catch(t){const n=L(D.FailedToRunDedupStep,t.message);return B.error(n),await e.endDialog(new M(n,P.FailedToRunDedupStep))}}async onEndDialog(e){const t=e.activity.conversation.id,n=this.dedupStorageKeys.filter((e=>e.indexOf(t)>0));await this.dedupStorage.delete(n),this.dedupStorageKeys=this.dedupStorageKeys.filter((e=>e.indexOf(t)<0))}async shouldDedup(e){const t={eTag:e.activity.value.id},n=this.getStorageKey(e),i={[n]:t};try{await this.dedupStorage.write(i),this.dedupStorageKeys.push(n)}catch(e){if(e instanceof Error&&e.message.indexOf("eTag conflict"))return!0;throw e}return!1}getStorageKey(e){if(!e||!e.activity||!e.activity.conversation)throw new Error("Invalid context, can not get storage key!");const t=e.activity,n=t.channelId,o=t.conversation.id;if(t.type!==i.Invoke||t.name!==u)throw new Error("TokenExchangeState can only be used with Invokes of signin/tokenExchange.");const a=t.value;if(!a||!a.id)throw new Error("Invalid signin/tokenExchange. Missing activity.value.id.");return`${n}/${o}/${a.id}`}matchPattern(e,t){if(t){if("string"==typeof e){return new RegExp(e,"i").test(t)}if(e instanceof RegExp){const n=t.match(e);return null!=n&&n}}return!1}isPatternMatched(e,t){const n=Array.isArray(e)?e:[e];for(const e of n){return!!this.matchPattern(e,t)}return!1}getMatchesCommandId(e){for(const t of this.commandMapping){const n=t[1];if(this.isPatternMatched(n,e))return t[0]}}ensureMsTeamsChannel(e){if(e.context.activity.channelId!=o.Msteams){const e=L(D.OnlyMSTeamsChannelSupported,"SSO execution dialog");throw B.error(e),new M(e,P.ChannelNotSupported)}}}class he{static attachAdaptiveCard(e,t){const n={$root:t};return{attachments:[r.adaptiveCard(new R.Template(e).expand(n))]}}static attachAdaptiveCardWithoutData(e){return{attachments:[r.adaptiveCard(e)]}}static attachHeroCard(e,t,n,i){return he.attachContent(r.heroCard(e,t,n,i))}static attachSigninCard(e,t,n){return he.attachContent(r.signinCard(e,t,n))}static attachO365ConnectorCard(e){return he.attachContent(r.o365ConnectorCard(e))}static AttachReceiptCard(e){return he.attachContent(r.receiptCard(e))}static attachThumbnailCard(e,t,n,i){return he.attachContent(r.thumbnailCard(e,t,n,i))}static attachContent(e){return{attachments:[e]}}}var pe,ve,me;!function(e){e.AdaptiveCard="application/vnd.microsoft.card.adaptive",e.Message="application/vnd.microsoft.activity.message",e.Error="application/vnd.microsoft.error"}(pe||(pe={}));class fe{static textMessage(e){if(!e)throw new Error("The text message cannot be null or empty");return{status:d.OK,body:{statusCode:d.OK,type:pe.Message,value:e}}}static adaptiveCard(e){if(!e)throw new Error("The adaptive card content cannot be null or undefined");return{status:d.OK,body:{statusCode:d.OK,type:pe.AdaptiveCard,value:e}}}static errorResponse(e,t){return{status:d.OK,body:{statusCode:e,type:pe.Error,value:{code:e.toString(),message:t}}}}static createInvokeResponse(e,t){return{status:e,body:t}}}async function ye(e,t,n,o,a){const r=e.activity.value;if(!r.authentication||!r.authentication.token)return B.verbose("No AccessToken in request, return silentAuth for AccessToken"),function(e,t,n){const i=z(n);return{composeExtension:{type:"silentAuth",suggestedActions:{actions:[{type:"openUrl",value:`${t}?scope=${encodeURI(i.join(" "))}&clientId=${e.clientId}&tenantId=${e.tenantId}`,title:"Message Extension OAuth"}]}}}}(t,n,o);try{const e=new _(r.authentication.token,t),n=await e.getToken(o),i=j(r.authentication.token).exp,s={ssoToken:r.authentication.token,ssoTokenExpiration:new Date(1e3*i).toISOString(),token:n.token,expiration:n.expiresOnTimestamp.toString(),connectionName:""};if(a)return await a(s)}catch(a){if(a instanceof M&&a.code===P.UiRequiredError&&"composeExtension/query"===e.activity.name){B.verbose("User not consent yet, return 412 to user consent first.");const t={status:412};return void await e.sendActivity({value:t,type:i.InvokeResponse})}if(a instanceof M&&a.code===P.UiRequiredError&&"composeExtension/queryLink"===e.activity.name){B.verbose("User not consent yet, return auth card for user login");const a=function(e,t,n){const i=z(n);return{composeExtension:{type:"auth",suggestedActions:{actions:[{type:"openUrl",value:`${t}?scope=${encodeURI(i.join(" "))}&clientId=${e.clientId}&tenantId=${e.tenantId}`,title:"Message Extension OAuth"}]}}}}(t,n,o);return void await e.sendActivity({value:{status:200,body:a},type:i.InvokeResponse})}throw a}}async function ge(e,t,n,i,o){if("composeExtension/query"!=e.activity.name)throw B.error(D.OnlySupportInQueryActivity),new M(L(D.OnlySupportInQueryActivity),P.FailedOperation);return await ye(e,null!=t?t:{},n,i,o)}async function we(e,t,n,i,o){if("composeExtension/queryLink"!=e.activity.name)throw B.error(D.OnlySupportInLinkQueryActivity),new M(L(D.OnlySupportInLinkQueryActivity),P.FailedOperation);return await ye(e,null!=t?t:{},n,i,o)}class Ce{constructor(e){this.actionHandlers=[],this.defaultMessage="Your response was sent to the app",e&&e.length>0&&this.actionHandlers.push(...e)}async onTurn(e,t){var n,i,o;if("adaptiveCard/action"===e.activity.name){const t=e.activity.value.action,a=t.verb;for(const s of this.actionHandlers)if((null===(n=s.triggerVerb)||void 0===n?void 0:n.toLowerCase())===(null==a?void 0:a.toLowerCase())){let n;try{n=await s.handleActionInvoked(e,t.data)}catch(t){const n=fe.errorResponse(oe.InternalServerError,t.message);throw await this.sendInvokeResponse(e,n),t}switch(null===(i=n.body)||void 0===i?void 0:i.type){case pe.AdaptiveCard:const t=null===(o=n.body)||void 0===o?void 0:o.value;if(!t){const t="Adaptive card content cannot be found in the response body";throw await this.sendInvokeResponse(e,fe.errorResponse(oe.InternalServerError,t)),new Error(t)}t.refresh&&s.adaptiveCardResponse!==ie.NewForAll&&(s.adaptiveCardResponse=ie.ReplaceForAll);const i=c.attachment(r.adaptiveCard(t));s.adaptiveCardResponse===ie.NewForAll?(await this.sendInvokeResponse(e,fe.textMessage(this.defaultMessage)),await e.sendActivity(i)):s.adaptiveCardResponse===ie.ReplaceForAll?(i.id=e.activity.replyToId,await e.updateActivity(i),await this.sendInvokeResponse(e,n)):await this.sendInvokeResponse(e,n);break;case pe.Message:case pe.Error:default:await this.sendInvokeResponse(e,n)}break}}await t()}async sendInvokeResponse(e,t){await e.sendActivity({type:i.InvokeResponse,value:t})}}class Ae{constructor(e,t){this.middleware=new Ce(null==t?void 0:t.actions),this.adapter=e.use(this.middleware)}registerHandler(e){e&&this.middleware.actionHandlers.push(e)}registerHandlers(e){e&&this.middleware.actionHandlers.push(...e)}}class Se{constructor(e,t,n){if(this.commandHandlers=[],this.ssoCommandHandlers=[],e=null!=e?e:[],t=null!=t?t:[],this.hasSsoCommand=t.length>0,this.ssoActivityHandler=n,this.hasSsoCommand&&!this.ssoActivityHandler)throw B.error(D.SsoActivityHandlerIsNull),new M(D.SsoActivityHandlerIsNull,P.SsoActivityHandlerIsUndefined);this.commandHandlers.push(...e);for(const e of t)this.addSsoCommand(e)}addSsoCommand(e){var t;null===(t=this.ssoActivityHandler)||void 0===t||t.addCommand((async(t,n,i)=>{const o=this.shouldTrigger(e.triggerPatterns,i.text);i.matches=Array.isArray(o)?o:void 0;const a=await e.handleCommandReceived(t,i,n);await this.processResponse(t,a)}),e.triggerPatterns),this.ssoCommandHandlers.push(e),this.hasSsoCommand=!0}async onTurn(e,t){var n,o;if(e.activity.type===i.Message){const t=this.getActivityText(e.activity);let i=!1;for(const n of this.commandHandlers){const o=this.shouldTrigger(n.triggerPatterns,t);if(o){const a={text:t};a.matches=Array.isArray(o)?o:void 0;const r=await n.handleCommandReceived(e,a);await this.processResponse(e,r),i=!0;break}}if(!i)for(const i of this.ssoCommandHandlers){if(this.shouldTrigger(i.triggerPatterns,t)){await(null===(n=this.ssoActivityHandler)||void 0===n?void 0:n.run(e));break}}}else this.hasSsoCommand&&await(null===(o=this.ssoActivityHandler)||void 0===o?void 0:o.run(e));await t()}async processResponse(e,t){if("string"==typeof t)await e.sendActivity(t);else{const n=t;n&&await e.sendActivity(n)}}matchPattern(e,t){if(t){if("string"==typeof e){return new RegExp(e,"i").test(t)}if(e instanceof RegExp){const n=t.match(e);return null!=n&&n}}return!1}shouldTrigger(e,t){const n=Array.isArray(e)?e:[e];for(const e of n){const n=this.matchPattern(e,t);if(n)return n}return!1}getActivityText(e){let t=e.text;const n=h.removeRecipientMention(e);return n&&(t=n.toLowerCase().replace(/\n|\r\n/g,"").trim()),t}}class Ie{constructor(e,t,n,i){this.ssoConfig=i,this.middleware=new Se(null==t?void 0:t.commands,null==t?void 0:t.ssoCommands,n),this.adapter=e.use(this.middleware)}registerCommand(e){e&&this.middleware.commandHandlers.push(e)}registerCommands(e){e&&this.middleware.commandHandlers.push(...e)}registerSsoCommand(e){this.validateSsoActivityHandler(),this.middleware.addSsoCommand(e)}registerSsoCommands(e){if(e.length>0){this.validateSsoActivityHandler();for(const t of e)this.middleware.addSsoCommand(t)}}validateSsoActivityHandler(){if(!this.middleware.ssoActivityHandler)throw B.error(D.SsoActivityHandlerIsNull),new M(D.SsoActivityHandlerIsNull,P.SsoActivityHandlerIsUndefined)}}function Te(e){return JSON.parse(JSON.stringify(e))}function ke(e){var t,n;return`_${null===(t=e.conversation)||void 0===t?void 0:t.tenantId}_${null===(n=e.conversation)||void 0===n?void 0:n.id}`}function Ee(e){var t,n,i;const o=null===(i=null===(n=null===(t=e.activity)||void 0===t?void 0:t.channelData)||void 0===n?void 0:n.team)||void 0===i?void 0:i.id;return o||(void 0===e.activity.conversation.name?e.activity.conversation.id:void 0)}!function(e){e[e.CurrentBotInstalled=0]="CurrentBotInstalled",e[e.CurrentBotMessaged=1]="CurrentBotMessaged",e[e.CurrentBotUninstalled=2]="CurrentBotUninstalled",e[e.TeamDeleted=3]="TeamDeleted",e[e.TeamRestored=4]="TeamRestored",e[e.Unknown=5]="Unknown"}(ve||(ve={}));class xe{constructor(e){this.conversationReferenceStore=e.conversationReferenceStore}async onTurn(e,t){switch(this.classifyActivity(e.activity)){case ve.CurrentBotInstalled:case ve.TeamRestored:{const t=h.getConversationReference(e.activity);await this.conversationReferenceStore.add(ke(t),t,{overwrite:!0});break}case ve.CurrentBotMessaged:await this.tryAddMessagedReference(e);break;case ve.CurrentBotUninstalled:case ve.TeamDeleted:{const t=h.getConversationReference(e.activity);await this.conversationReferenceStore.remove(ke(t),t);break}}await t()}classifyActivity(e){var t,n;const i=e.type;if("installationUpdate"===i){const n=null===(t=e.action)||void 0===t?void 0:t.toLowerCase();return"add"===n||"add-upgrade"===n?ve.CurrentBotInstalled:ve.CurrentBotUninstalled}if("conversationUpdate"===i){const t=null===(n=e.channelData)||void 0===n?void 0:n.eventType;if("teamDeleted"===t)return ve.TeamDeleted;if("teamRestored"===t)return ve.TeamRestored}else if("message"===i)return ve.CurrentBotMessaged;return ve.Unknown}async tryAddMessagedReference(e){var t,n,i,o,a,r;const s=h.getConversationReference(e.activity),c=null===(t=null==s?void 0:s.conversation)||void 0===t?void 0:t.conversationType;if("personal"===c||"groupChat"===c)await this.conversationReferenceStore.add(ke(s),s,{overwrite:!1});else if("channel"===c){const t=null===(o=null===(i=null===(n=e.activity)||void 0===n?void 0:n.channelData)||void 0===i?void 0:i.team)||void 0===o?void 0:o.id,c=null===(r=null===(a=e.activity.channelData)||void 0===a?void 0:a.channel)||void 0===r?void 0:r.id;if(void 0!==t&&(void 0===c||t===c)){const e=Te(s);e.conversation.id=t,await this.conversationReferenceStore.add(ke(e),e,{overwrite:!1})}}}}class Re{constructor(e){var t;this.localFileName=null!==(t=process.env.TEAMSFX_NOTIFICATION_STORE_FILENAME)&&void 0!==t?t:".notification.localstore.json",this.filePath=b.resolve(e,this.localFileName)}async add(e,t,n){if(n.overwrite||!await this.storeFileExists()){if(await this.storeFileExists()){const n=await this.readFromFile();await this.writeToFile(Object.assign(n,{[e]:t}))}else await this.writeToFile({[e]:t});return!0}return!1}async remove(e,t){if(!await this.storeFileExists())return!1;if(await this.storeFileExists()){const t=await this.readFromFile();void 0!==t[e]&&(delete t[e],await this.writeToFile(t))}return!0}async list(e,t){if(!await this.storeFileExists())return{data:[],continuationToken:""};const n=await this.readFromFile();return{data:Object.entries(n).map((e=>e[1])),continuationToken:""}}storeFileExists(){return new Promise((e=>{try{O.access(this.filePath,(t=>{e(!t)}))}catch(t){e(!1)}}))}readFromFile(){return new Promise(((e,t)=>{try{O.readFile(this.filePath,{encoding:"utf-8"},((n,i)=>{n?t(n):e(JSON.parse(i))}))}catch(e){t(e)}}))}async writeToFile(e){return new Promise(((t,n)=>{try{const i=JSON.stringify(e,void 0,2);O.writeFile(this.filePath,i,{encoding:"utf-8"},(e=>{e?n(e):t()}))}catch(e){n(e)}}))}}class be{constructor(e,t){this.type=ne.Channel,this.parent=e,this.info=t}async sendMessage(e,t){const n={};return await this.parent.adapter.continueConversationAsync(this.parent.botAppId,this.parent.conversationReference,(async i=>{const o=await this.newConversation(i);await this.parent.adapter.continueConversationAsync(this.parent.botAppId,o,(async i=>{try{const t=await i.sendActivity(e);n.id=null==t?void 0:t.id}catch(e){if(!t)throw e;await t(i,e)}}))})),n}async sendAdaptiveCard(e,t){const n={};return await this.parent.adapter.continueConversationAsync(this.parent.botAppId,this.parent.conversationReference,(async i=>{const o=await this.newConversation(i);await this.parent.adapter.continueConversationAsync(this.parent.botAppId,o,(async i=>{try{const t=await i.sendActivity({attachments:[r.adaptiveCard(e)]});n.id=null==t?void 0:t.id}catch(e){if(!t)throw e;await t(i,e)}}))})),n}newConversation(e){const t=Te(h.getConversationReference(e.activity));return t.conversation.id=this.info.id||"",Promise.resolve(t)}}class Oe{constructor(e,t){this.type=ne.Person,this.parent=e,this.account=t}async sendMessage(e,t){const n={};return await this.parent.adapter.continueConversationAsync(this.parent.botAppId,this.parent.conversationReference,(async i=>{const o=await this.newConversation(i);await this.parent.adapter.continueConversationAsync(this.parent.botAppId,o,(async i=>{try{const t=await i.sendActivity(e);n.id=null==t?void 0:t.id}catch(e){if(!t)throw e;await t(i,e)}}))})),n}async sendAdaptiveCard(e,t){const n={};return await this.parent.adapter.continueConversationAsync(this.parent.botAppId,this.parent.conversationReference,(async i=>{const o=await this.newConversation(i);await this.parent.adapter.continueConversationAsync(this.parent.botAppId,o,(async i=>{try{const t=await i.sendActivity({attachments:[r.adaptiveCard(e)]});n.id=null==t?void 0:t.id}catch(e){if(!t)throw e;await t(i,e)}}))})),n}async newConversation(e){const t=Te(h.getConversationReference(e.activity)),n=e.turnState.get(this.parent.adapter.ConnectorClientKey),i=await n.conversations.createConversation({isGroup:!1,tenantId:e.activity.conversation.tenantId,bot:e.activity.recipient,members:[this.account],channelData:{}});return t.conversation.id=i.id,t}}class Pe{constructor(e,t,n){this.adapter=e,this.conversationReference=t,this.type=function(e){var t;const n=null===(t=e.conversation)||void 0===t?void 0:t.conversationType;return"personal"===n?ne.Person:"groupChat"===n?ne.Group:"channel"===n?ne.Channel:void 0}(t),this.botAppId=n}async sendMessage(e,t){const n={};return await this.adapter.continueConversationAsync(this.botAppId,this.conversationReference,(async i=>{try{const t=await i.sendActivity(e);n.id=null==t?void 0:t.id}catch(e){if(!t)throw e;await t(i,e)}})),n}async sendAdaptiveCard(e,t){const n={};return await this.adapter.continueConversationAsync(this.botAppId,this.conversationReference,(async i=>{try{const t=await i.sendActivity({attachments:[r.adaptiveCard(e)]});n.id=null==t?void 0:t.id}catch(e){if(!t)throw e;await t(i,e)}})),n}async channels(){const e=[];if(this.type!==ne.Channel)return e;let t=[];await this.adapter.continueConversationAsync(this.botAppId,this.conversationReference,(async e=>{const n=Ee(e);void 0!==n&&(t=await a.getTeamChannels(e,n))}));for(const n of t)e.push(new be(this,n));return e}async getPagedMembers(e,t){let n={data:[],continuationToken:""};return await this.adapter.continueConversationAsync(this.botAppId,this.conversationReference,(async i=>{const o=await a.getPagedMembers(i,e,t);n={data:o.members.map((e=>new Oe(this,e))),continuationToken:o.continuationToken}})),n}async getTeamDetails(){if(this.type!==ne.Channel)return;let e;return await this.adapter.continueConversationAsync(this.botAppId,this.conversationReference,(async t=>{const n=Ee(t);void 0!==n&&(e=await a.getTeamDetails(t,n))})),e}}class Fe{constructor(e,t){var n,i;(null==t?void 0:t.store)?this.conversationReferenceStore=t.store:this.conversationReferenceStore=new Re(b.resolve("1"===process.env.RUNNING_ON_AZURE&&null!==(n=process.env.TEMP)&&void 0!==n?n:"./")),this.adapter=e.use(new xe({conversationReferenceStore:this.conversationReferenceStore})),this.botAppId=null!==(i=null==t?void 0:t.botAppId)&&void 0!==i?i:process.env.BOT_ID}buildTeamsBotInstallation(e){if(!e)throw new Error("conversationReference is required.");return new Pe(this.adapter,e,this.botAppId)}async validateInstallation(e){let t=!0;return await this.adapter.continueConversationAsync(this.botAppId,e,(async e=>{try{await a.getPagedMembers(e,1)}catch(e){"BotNotInConversationRoster"===e.code&&(t=!1)}})),t}async getPagedInstallations(e,t,n=!0){if(void 0===this.conversationReferenceStore||void 0===this.adapter)throw new Error("NotificationBot has not been initialized.");const i=await this.conversationReferenceStore.list(e,t),o=[];for(const e of i.data){let t;n&&(t=await this.validateInstallation(e)),!n||n&&t?o.push(new Pe(this.adapter,e,this.botAppId)):await this.conversationReferenceStore.remove(ke(e),e)}return{data:o,continuationToken:i.continuationToken}}async findMember(e,t){for(const n of await this.installations())if(this.matchSearchScope(n,t)){const t=[];let i;do{const e=await n.getPagedMembers(void 0,i);i=e.continuationToken,t.push(...e.data)}while(i);for(const n of t)if(await e(n))return n}}async findChannel(e){for(const t of await this.installations())if(t.type===ne.Channel){const n=await t.getTeamDetails();for(const i of await t.channels())if(await e(i,n))return i}}async findAllMembers(e,t){const n=[];for(const i of await this.installations())if(this.matchSearchScope(i,t)){const t=[];let o;do{const e=await i.getPagedMembers(void 0,o);o=e.continuationToken,t.push(...e.data)}while(o);for(const i of t)await e(i)&&n.push(i)}return n}async findAllChannels(e){const t=[];for(const n of await this.installations())if(n.type===ne.Channel){const i=await n.getTeamDetails();for(const o of await n.channels())await e(o,i)&&t.push(o)}return t}matchSearchScope(e,t){return t=null!=t?t:me.All,e.type===ne.Channel&&0!=(t&me.Channel)||e.type===ne.Group&&0!=(t&me.Group)||e.type===ne.Person&&0!=(t&me.Person)}async installations(){let e;const t=[];do{const n=await this.getPagedInstallations(void 0,e);e=n.continuationToken,t.push(...n.data)}while(e);return t}}!function(e){e[e.Person=1]="Person",e[e.Group=2]="Group",e[e.Channel=4]="Channel",e[e.All=7]="All"}(me||(me={}));class De extends p{constructor(e){var t,n,i,o,a,r,s,c,d,l;super();const u=new v,h=null!==(n=null===(t=e.dialog)||void 0===t?void 0:t.userState)&&void 0!==n?n:new m(u),p=null!==(o=null===(i=e.dialog)||void 0===i?void 0:i.conversationState)&&void 0!==o?o:new f(u),y=null!==(r=null===(a=e.dialog)||void 0===a?void 0:a.dedupStorage)&&void 0!==r?r:u,g=e.aad,{scopes:w}=g,C=
1
+ import{jwtDecode as e}from"jwt-decode";import{ConfidentialClientApplication as t}from"@azure/msal-node";import{createHash as n}from"crypto";import{CardFactory as i,MessageFactory as o,StatusCodes as a,MemoryStorage as r,UserState as s,ConversationState as c,loadAuthConfigFromEnv as d,CloudAdapter as l}from"@microsoft/agents-hosting";import{TeamsInfo as u,verifyStateOperationName as h,tokenExchangeOperationName as p,TeamsActivityHandler as v}from"@microsoft/agents-hosting-teams";import{Dialog as m,ComponentDialog as f,WaterfallDialog as y,DialogSet as g,DialogTurnStatus as w}from"@microsoft/agents-hosting-dialogs";import{ActivityTypes as C,Channels as S,ActionTypes as A,Activity as T}from"@microsoft/agents-activity";import{v4 as I}from"uuid";import k from"axios";import{Agent as E}from"https";import*as x from"adaptivecards-templating";import*as R from"path";import*as b from"fs";var O,P;!function(e){e.InvalidParameter="InvalidParameter",e.InvalidConfiguration="InvalidConfiguration",e.InvalidCertificate="InvalidCertificate",e.InternalError="InternalError",e.ChannelNotSupported="ChannelNotSupported",e.FailedToRetrieveSsoToken="FailedToRetrieveSsoToken",e.FailedToProcessSsoHandler="FailedToProcessSsoHandler",e.CannotFindCommand="CannotFindCommand",e.FailedToRunSsoStep="FailedToRunSsoStep",e.FailedToRunDedupStep="FailedToRunDedupStep",e.SsoActivityHandlerIsUndefined="SsoActivityHandlerIsUndefined",e.RuntimeNotSupported="RuntimeNotSupported",e.ConsentFailed="ConsentFailed",e.UiRequiredError="UiRequiredError",e.TokenExpiredError="TokenExpiredError",e.ServiceError="ServiceError",e.FailedOperation="FailedOperation",e.InvalidResponse="InvalidResponse",e.AuthorizationInfoAlreadyExists="AuthorizationInfoAlreadyExists"}(O||(O={}));class F{}F.InvalidConfiguration="{0} in configuration is invalid: {1}.",F.ConfigurationNotExists="Configuration does not exist. {0}",F.ResourceConfigurationNotExists="{0} resource configuration does not exist.",F.MissingResourceConfiguration="Missing resource configuration with type: {0}, name: {1}.",F.AuthenticationConfigurationNotExists="Authentication configuration does not exist.",F.BrowserRuntimeNotSupported="{0} is not supported in browser.",F.NodejsRuntimeNotSupported="{0} is not supported in Node.",F.FailToAcquireTokenOnBehalfOfUser="Failed to acquire access token on behalf of user: {0}",F.OnlyMSTeamsChannelSupported="{0} is only supported in MS Teams Channel",F.FailedToProcessSsoHandler="Failed to process sso handler: {0}",F.FailedToRetrieveSsoToken="Failed to retrieve sso token, user failed to finish the AAD consent flow.",F.CannotFindCommand="Cannot find command: {0}",F.FailedToRunSsoStep="Failed to run dialog to retrieve sso token: {0}",F.FailedToRunDedupStep="Failed to run dialog to remove duplicated messages: {0}",F.SsoActivityHandlerIsNull="Sso command can only be used or added when sso activity handler is not undefined",F.AuthorizationHeaderAlreadyExists="Authorization header already exists!",F.BasicCredentialAlreadyExists="Basic credential already exists!",F.EmptyParameter="Parameter {0} is empty",F.DuplicateHttpsOptionProperty="Axios HTTPS agent already defined value for property {0}",F.DuplicateApiKeyInHeader="The request already defined api key in request header with name {0}.",F.DuplicateApiKeyInQueryParam="The request already defined api key in query parameter with name {0}.",F.OnlySupportInQueryActivity="The handleMessageExtensionQueryWithToken only support in handleTeamsMessagingExtensionQuery with composeExtension/query type.",F.OnlySupportInLinkQueryActivity="The handleMessageExtensionLinkQueryWithSSO only support in handleTeamsAppBasedLinkQuery with composeExtension/queryLink type.";class D extends Error{constructor(e,t){if(!t)return super(e),this;super(e),Object.setPrototypeOf(this,D.prototype),this.name=`${new.target.name}.${t}`,this.code=t}}function M(e){H.level=e}function N(){return H.level}!function(e){e[e.Verbose=0]="Verbose",e[e.Info=1]="Info",e[e.Warn=2]="Warn",e[e.Error=3]="Error"}(P||(P={}));const H=new class{constructor(e,t){this.level=void 0,this.defaultLogger={verbose:console.debug,info:console.info,warn:console.warn,error:console.error},this.name=e,this.level=t}error(e){this.log(P.Error,(e=>e.error),e)}warn(e){this.log(P.Warn,(e=>e.warn),e)}info(e){this.log(P.Info,(e=>e.info),e)}verbose(e){this.log(P.Verbose,(e=>e.verbose),e)}log(e,t,n){if(""===n.trim())return;const i=(new Date).toUTCString();let o;o=this.name?`[${i}] : @microsoft/teamsfx - ${this.name} : ${P[e]} - `:`[${i}] : @microsoft/teamsfx : ${P[e]} - `;const a=`${o}${n}`;void 0!==this.level&&this.level<=e&&(this.customLogger?t(this.customLogger)(a):this.customLogFunction?this.customLogFunction(e,a):t(this.defaultLogger)(a))}};function B(e){H.customLogger=e}function U(e){H.customLogFunction=e}function j(t){try{const n=e(t);if(!n||!n.exp)throw new D("Decoded token is null or exp claim does not exists.",O.InternalError);return n}catch(e){const t="Parse jwt token failed in node env with error: "+e.message;throw H.error(t),new D(t,O.InternalError)}}function q(e,...t){const n=t;return e.replace(/{(\d+)}/g,(function(e,t){return void 0!==n[t]?n[t]:e}))}function L(e){if("string"==typeof e||e instanceof String)return;if(Array.isArray(e)&&0===e.length)return;if(Array.isArray(e)&&e.length>0&&e.every((e=>"string"==typeof e)))return;const t="The type of scopes is not valid, it must be string or string array";throw H.error(t),new D(t,O.InvalidParameter)}function $(e){return("string"==typeof e?e.split(" "):e).filter((e=>null!==e&&""!==e))}function z(e){const i=(o=e.authorityHost,a=e.tenantId,o.replace(/\/+$/g,"")+"/"+a);var o,a;const r=function(e){if(!e)return;const t=/(-+BEGIN CERTIFICATE-+)(\n\r?|\r\n?)([A-Za-z0-9+/\n\r]+=*)(\n\r?|\r\n?)(-+END CERTIFICATE-+)/.exec(e);if(!t){const e="The certificate content does not contain a PEM-encoded certificate.";throw H.error(e),new D(e,O.InvalidCertificate)}return{thumbprintSha256:n("sha256").update(Buffer.from(t[3],"base64")).digest("hex").toUpperCase(),privateKey:e}}(e.certificateContent),s={clientId:e.clientId,authority:i};return r?s.clientCertificate=r:s.clientSecret=e.clientSecret,new t({auth:s})}class K{constructor(e){H.info("Create M365 tenant credential");const t=this.loadAndValidateConfig(e);this.msalClient=z(t)}async getToken(e,t){let n;L(e);const i="string"==typeof e?e:e.join(" ");H.info("Get access token with scopes: "+i);try{const t=$(e),i=await this.msalClient.acquireTokenByClientCredential({scopes:t});i&&(n={token:i.accessToken,expiresOnTimestamp:i.expiresOn.getTime()})}catch(e){const t="Get M365 tenant credential failed with error: "+e.message;throw H.error(t),new D(t,O.ServiceError)}if(!n){const e="Get M365 tenant credential access token failed with empty access token";throw H.error(e),new D(e,O.InternalError)}return n}loadAndValidateConfig(e){if(H.verbose("Validate authentication configuration"),e.clientId&&(e.clientSecret||e.certificateContent)&&e.tenantId&&e.authorityHost)return e;const t=[];e.clientId||t.push("clientId"),e.clientSecret||e.certificateContent||t.push("clientSecret or certificateContent"),e.tenantId||t.push("tenantId"),e.authorityHost||t.push("authorityHost");const n=q(F.InvalidConfiguration,t.join(", "),"undefined");throw H.error(n),new D(n,O.InvalidConfiguration)}}class G{constructor(e,t){H.info("Get on behalf of user credential");const n=[];if(t.clientId||n.push("clientId"),t.authorityHost||n.push("authorityHost"),t.clientSecret||t.certificateContent||n.push("clientSecret or certificateContent"),t.tenantId||n.push("tenantId"),0!=n.length){const e=q(F.InvalidConfiguration,n.join(", "),"undefined");throw H.error(e),new D(e,O.InvalidConfiguration)}this.msalClient=z(t);const i=j(e);this.ssoToken={token:e,expiresOnTimestamp:i.exp}}async getToken(e,t){L(e);const n=$(e);let i;if(n.length){let e;H.info("Get access token with scopes: "+n.join(" "));try{e=await this.msalClient.acquireTokenOnBehalfOf({oboAssertion:this.ssoToken.token,scopes:n})}catch(e){throw this.generateAuthServerError(e)}if(!e){const e="Access token is null";throw H.error(e),new D(q(F.FailToAcquireTokenOnBehalfOfUser,e),O.InternalError)}i={token:e.accessToken,expiresOnTimestamp:e.expiresOn.getTime()}}else{if(H.info("Get SSO token."),Math.floor(Date.now()/1e3)>this.ssoToken.expiresOnTimestamp){const e="Sso token has already expired.";throw H.error(e),new D(e,O.TokenExpiredError)}i=this.ssoToken}return i}getUserInfo(){return H.info("Get basic user info from SSO token"),function(e){if(!e){const e="SSO token is undefined.";throw H.error(e),new D(e,O.InvalidParameter)}const t=j(e),n={displayName:t.name,objectId:t.oid,tenantId:t.tid,preferredUserName:""};return"2.0"===t.ver?n.preferredUserName=t.preferred_username:"1.0"===t.ver&&(n.preferredUserName=t.upn),n}(this.ssoToken.token)}generateAuthServerError(e){const t=e.errorMessage;if("InteractionRequiredAuthError"===e.name){const e="Failed to get access token from AAD server, interaction required: "+t;return H.warn(e),new D(e,O.UiRequiredError)}if(t&&t.indexOf("AADSTS50013")>=0){const e="Failed to get access token from AAD server, assertion is invalid because of various reasons: "+t;return H.error(e),new D(e,O.TokenExpiredError)}{const e=q(F.FailToAcquireTokenOnBehalfOfUser,t);return H.error(e),new D(e,O.ServiceError)}}}class Q{constructor(e){throw new D(q(F.NodejsRuntimeNotSupported,"TeamsUserCredential"),O.RuntimeNotSupported)}login(e,t){return Promise.reject(new D(q(F.NodejsRuntimeNotSupported,"TeamsUserCredential"),O.RuntimeNotSupported))}getToken(e,t){return Promise.reject(new D(q(F.NodejsRuntimeNotSupported,"TeamsUserCredential"),O.RuntimeNotSupported))}getUserInfo(e){return Promise.reject(new D(q(F.NodejsRuntimeNotSupported,"TeamsUserCredential"),O.RuntimeNotSupported))}}const V="invokeResponse";class _{constructor(e,t){this.id=e,this.failureDetail=t}}class W extends m{constructor(e,t,n,i){super(n),this.initiateLoginEndpoint=t,this.authConfig=e,this.settings=i,L(this.settings.scopes),function(e){if(e.clientId&&(e.clientSecret||e.certificateContent)&&e.tenantId&&e.authorityHost)return;const t=[];e.clientId||t.push("clientId"),e.clientSecret||e.certificateContent||t.push("clientSecret or certificateContent"),e.tenantId||t.push("tenantId"),e.authorityHost||t.push("authorityHost");const n=q(F.InvalidConfiguration,t.join(", "),"undefined");throw H.error(n),new D(n,O.InvalidConfiguration)}(this.authConfig),H.info("Create a new Teams Bot SSO Prompt")}async beginDialog(e){var t;H.info("Begin Teams Bot SSO Prompt"),this.ensureMsTeamsChannel(e);let n=9e5;if(this.settings.timeout){if("number"!=typeof this.settings.timeout){const e="type of timeout property in teamsBotSsoPromptSettings should be number.";throw H.error(e),new D(e,O.InvalidParameter)}if(this.settings.timeout<=0){const e="value of timeout property in teamsBotSsoPromptSettings should be positive.";throw H.error(e),new D(e,O.InvalidParameter)}n=this.settings.timeout}void 0===this.settings.endOnInvalidMessage&&(this.settings.endOnInvalidMessage=!0);const i=null===(t=e.activeDialog)||void 0===t?void 0:t.state;return i.state={},i.options={},i.expires=(new Date).getTime()+n,await this.sendOAuthCardAsync(e.context),m.EndOfTurn}async continueDialog(e){var t;H.info("Continue Teams Bot SSO Prompt"),this.ensureMsTeamsChannel(e);const n=null===(t=e.activeDialog)||void 0===t?void 0:t.state,i=e.context.activity.type===C.Message;if((i||this.isTeamsVerificationInvoke(e.context)||this.isTokenExchangeRequestInvoke(e.context))&&(new Date).getTime()>n.expires)return H.warn("End Teams Bot SSO Prompt due to timeout"),await e.endDialog(void 0);if(this.isTeamsVerificationInvoke(e.context)||this.isTokenExchangeRequestInvoke(e.context)){const t=await this.recognizeToken(e);if(t.succeeded)return await e.endDialog(t.value)}else if(i&&this.settings.endOnInvalidMessage)return H.warn("End Teams Bot SSO Prompt due to invalid message"),await e.endDialog(void 0);return m.EndOfTurn}ensureMsTeamsChannel(e){if(e.context.activity.channelId!=S.Msteams){const e=q(F.OnlyMSTeamsChannelSupported,"Teams Bot SSO Prompt");throw H.error(e),new D(e,O.ChannelNotSupported)}}async sendOAuthCardAsync(e){H.verbose("Send OAuth card to get SSO token");const t=await u.getMember(e,e.activity.from.id);H.verbose("Get Teams member account user principal name: "+(t.userPrincipalName?t.userPrincipalName:""));const n=t.userPrincipalName?t.userPrincipalName:"",a=this.getSignInResource(n),r=i.oauthCard("","Teams SSO Sign In","Sign In",a);r.content.buttons[0].type=A.Signin;const s=o.attachment(r);await e.sendActivity(s)}getSignInResource(e){H.verbose("Get sign in authentication configuration");const t=`${this.initiateLoginEndpoint}?scope=${encodeURI(this.settings.scopes.join(" "))}&clientId=${this.authConfig.clientId}&tenantId=${this.authConfig.tenantId}&loginHint=${e}`;H.verbose("Sign in link: "+t);return{signInLink:t,tokenExchangeResource:{id:I()},tokenPostResource:{}}}async recognizeToken(e){const t=e.context;let n;if(this.isTokenExchangeRequestInvoke(t))if(H.verbose("Receive token exchange request"),t.activity.value&&this.isTokenExchangeRequest(t.activity.value)){const e=t.activity.value.token,i=new G(e,this.authConfig);let o;try{if(o=await i.getToken(this.settings.scopes),o){await t.sendActivity(this.getTokenExchangeInvokeResponse(a.OK,"",t.activity.value.id));const i=j(e).exp;n={ssoToken:e,ssoTokenExpiration:new Date(1e3*i).toISOString(),connectionName:"",token:o.token,expiration:o.expiresOnTimestamp.toString()}}}catch(e){const n="The bot is unable to exchange token. Ask for user consent.";H.info(n),await t.sendActivity(this.getTokenExchangeInvokeResponse(a.PRECONDITION_FAILED,n,t.activity.value.id))}}else{const e="The bot received an InvokeActivity that is missing a TokenExchangeInvokeRequest value. This is required to be sent with the InvokeActivity.";H.warn(e),await t.sendActivity(this.getTokenExchangeInvokeResponse(a.BAD_REQUEST,e))}else this.isTeamsVerificationInvoke(t)&&(H.verbose("Receive Teams state verification request"),await this.sendOAuthCardAsync(e.context),await t.sendActivity({type:V,value:{status:a.OK}}));return void 0!==n?{succeeded:!0,value:n}:{succeeded:!1}}getTokenExchangeInvokeResponse(e,t,n){return{type:V,value:{status:e,body:new _(n,t)}}}isTeamsVerificationInvoke(e){const t=e.activity;return t.type===C.Invoke&&t.name===h}isTokenExchangeRequestInvoke(e){const t=e.activity;return t.type===C.Invoke&&t.name===p}isTokenExchangeRequest(e){return e.hasOwnProperty("token")}}function J(e,t){const n=k.create({baseURL:e});return n.interceptors.request.use((async function(e){return await t.AddAuthenticationInfo(e)})),n}class Z{constructor(e){this.getToken=e}async AddAuthenticationInfo(e){const t=await this.getToken();if(e.headers||(e.headers={}),e.headers.Authorization)throw new D(F.AuthorizationHeaderAlreadyExists,O.AuthorizationInfoAlreadyExists);return e.headers.Authorization=`Bearer ${t}`,e}}class X{constructor(e,t){if(!e)throw new D(q(F.EmptyParameter,"username"),O.InvalidParameter);if(!t)throw new D(q(F.EmptyParameter,"password"),O.InvalidParameter);this.userName=e,this.password=t}AddAuthenticationInfo(e){return e.headers&&e.headers.Authorization?Promise.reject(new D(F.AuthorizationHeaderAlreadyExists,O.AuthorizationInfoAlreadyExists)):e.auth?Promise.reject(new D(F.BasicCredentialAlreadyExists,O.AuthorizationInfoAlreadyExists)):(e.auth={username:this.userName,password:this.password},Promise.resolve(e))}}class Y{constructor(e,t,n){if(!e)throw new D(q(F.EmptyParameter,"keyName"),O.InvalidParameter);if(!t)throw new D(q(F.EmptyParameter,"keyVaule"),O.InvalidParameter);this.keyName=e,this.keyValue=t,this.keyLocation=n}AddAuthenticationInfo(e){switch(this.keyLocation){case ee.Header:if(e.headers||(e.headers={}),e.headers[this.keyName])return Promise.reject(new D(q(F.DuplicateApiKeyInHeader,this.keyName),O.AuthorizationInfoAlreadyExists));e.headers[this.keyName]=this.keyValue;break;case ee.QueryParams:e.params||(e.params={});let t=!1;if(e.url){t=new URL(e.url,e.baseURL).searchParams.has(this.keyName)}if(e.params[this.keyName]||t)return Promise.reject(new D(q(F.DuplicateApiKeyInQueryParam,this.keyName),O.AuthorizationInfoAlreadyExists));e.params[this.keyName]=this.keyValue}return Promise.resolve(e)}}var ee,te,ne,ie;!function(e){e[e.Header=0]="Header",e[e.QueryParams=1]="QueryParams"}(ee||(ee={}));class oe{constructor(e){if(!e||0===Object.keys(e).length)throw new D(q(F.EmptyParameter,"certOption"),O.InvalidParameter);this.certOption=e}AddAuthenticationInfo(e){if(e.httpsAgent){const t=new Set(Object.keys(e.httpsAgent.options));for(const e of Object.keys(this.certOption))if(t.has(e))return Promise.reject(new D(q(F.DuplicateHttpsOptionProperty,e),O.InvalidParameter));Object.assign(e.httpsAgent.options,this.certOption)}else e.httpsAgent=new E(this.certOption);return Promise.resolve(e)}}function ae(e,t,n){if(0===e.length)throw new D(q(F.EmptyParameter,"cert"),O.InvalidParameter);if(0===t.length)throw new D(q(F.EmptyParameter,"key"),O.InvalidParameter);return{cert:e,key:t,passphrase:null==n?void 0:n.passphrase,ca:null==n?void 0:n.ca}}function re(e,t){if(0===e.length)throw new D(q(F.EmptyParameter,"pfx"),O.InvalidParameter);return{pfx:e,passphrase:null==t?void 0:t.passphrase}}!function(e){e.Channel="Channel",e.Group="Group",e.Person="Person"}(te||(te={})),function(e){e[e.ReplaceForInteractor=0]="ReplaceForInteractor",e[e.ReplaceForAll=1]="ReplaceForAll",e[e.NewForAll=2]="NewForAll"}(ne||(ne={})),function(e){e[e.BadRequest=400]="BadRequest",e[e.InternalServerError=500]="InternalServerError"}(ie||(ie={}));let se="BotSsoExecutionDialog",ce="TeamsFxSsoPrompt",de="CommandRouteDialog";class le extends f{constructor(e,t,n,i,o){super(null!=o?o:se),this.dedupStorageKeys=[],this.commandMapping=new Map,o&&(se=o,ce=o+ce,de=o+de);const a=new W(n,i,ce,t);this.addDialog(a),this.initialDialogId=de,this.dedupStorage=e,this.dedupStorageKeys=[];const r=new y(de,[this.commandRouteStep.bind(this)]);this.addDialog(r)}addCommand(e,t){const n=this.getCommandHash(t),i=new y(n,[this.ssoStep.bind(this),this.dedupStep.bind(this),async t=>{const n=t.result.tokenResponse,i=t.context,o=t.result.message;try{if(!n)throw new Error(F.FailedToRetrieveSsoToken);return await e(i,n,o),await t.endDialog()}catch(e){const n=q(F.FailedToProcessSsoHandler,e.message);return H.error(n),await t.endDialog(new D(n,O.FailedToProcessSsoHandler))}}]);this.commandMapping.set(n,t),this.addDialog(i)}getCommandHash(e){const t=(Array.isArray(e)?e:[e]).join();return t.replace(/[^a-zA-Z0-9]/g,"")+n("sha256").update(t).digest("hex").toLowerCase()}async run(e,t){const n=new g(t);n.add(this);const i=await n.createContext(e);this.ensureMsTeamsChannel(i);const o=await i.continueDialog();if(o&&o.status===w.empty)await i.beginDialog(this.id);else if(o&&o.status===w.complete&&o.result instanceof Error)throw o.result}getActivityText(e){let t=e.text;const n=e.removeRecipientMention();return n&&(t=n.toLowerCase().replace(/\n|\r\n/g,"").trim()),t}async commandRouteStep(e){const t=e.context,n=this.getActivityText(t.activity),i=this.getMatchesCommandId(n);if(i)return await e.beginDialog(i);const o=q(F.CannotFindCommand,t.activity.text);throw H.error(o),new D(o,O.CannotFindCommand)}async ssoStep(e){try{const t=e.context,n={text:this.getActivityText(t.activity)};return e.options.commandMessage=n,await e.beginDialog(ce)}catch(t){const n=q(F.FailedToRunSsoStep,t.message);return H.error(n),await e.endDialog(new D(n,O.FailedToRunSsoStep))}}async dedupStep(e){const t=e.result;if(!t)return H.error(F.FailedToRetrieveSsoToken),await e.endDialog(new D(F.FailedToRetrieveSsoToken,O.FailedToRunSsoStep));try{return t&&await this.shouldDedup(e.context)?m.EndOfTurn:await e.next({tokenResponse:t,message:e.options.commandMessage})}catch(t){const n=q(F.FailedToRunDedupStep,t.message);return H.error(n),await e.endDialog(new D(n,O.FailedToRunDedupStep))}}async onEndDialog(e){const t=e.activity.conversation.id,n=this.dedupStorageKeys.filter((e=>e.indexOf(t)>0));await this.dedupStorage.delete(n),this.dedupStorageKeys=this.dedupStorageKeys.filter((e=>e.indexOf(t)<0))}async shouldDedup(e){const t={eTag:e.activity.value.id},n=this.getStorageKey(e),i={[n]:t};try{await this.dedupStorage.write(i),this.dedupStorageKeys.push(n)}catch(e){if(e instanceof Error&&e.message.indexOf("eTag conflict"))return!0;throw e}return!1}getStorageKey(e){if(!e||!e.activity||!e.activity.conversation)throw new Error("Invalid context, can not get storage key!");const t=e.activity,n=t.channelId,i=t.conversation.id;if(t.type!==C.Invoke||t.name!==p)throw new Error("TokenExchangeState can only be used with Invokes of signin/tokenExchange.");const o=t.value;if(!o||!o.id)throw new Error("Invalid signin/tokenExchange. Missing activity.value.id.");return`${n}/${i}/${o.id}`}matchPattern(e,t){if(t){if("string"==typeof e){return new RegExp(e,"i").test(t)}if(e instanceof RegExp){const n=t.match(e);return null!=n&&n}}return!1}isPatternMatched(e,t){const n=Array.isArray(e)?e:[e];for(const e of n){return!!this.matchPattern(e,t)}return!1}getMatchesCommandId(e){for(const t of this.commandMapping){const n=t[1];if(this.isPatternMatched(n,e))return t[0]}}ensureMsTeamsChannel(e){if(e.context.activity.channelId!=S.Msteams){const e=q(F.OnlyMSTeamsChannelSupported,"SSO execution dialog");throw H.error(e),new D(e,O.ChannelNotSupported)}}}class ue{static attachAdaptiveCard(e,t){const n={$root:t};return{attachments:[i.adaptiveCard(new x.Template(e).expand(n))]}}static attachAdaptiveCardWithoutData(e){return{attachments:[i.adaptiveCard(e)]}}static attachHeroCard(e,t,n,o){return ue.attachContent(i.heroCard(e,t,n,o))}static attachSigninCard(e,t,n){return ue.attachContent(i.signinCard(e,t,n))}static attachO365ConnectorCard(e){return ue.attachContent(i.o365ConnectorCard(e))}static AttachReceiptCard(e){return ue.attachContent(i.receiptCard(e))}static attachThumbnailCard(e,t,n,o){return ue.attachContent(i.thumbnailCard(e,t,n,o))}static attachContent(e){return{attachments:[e]}}}var he,pe,ve;!function(e){e.AdaptiveCard="application/vnd.microsoft.card.adaptive",e.Message="application/vnd.microsoft.activity.message",e.Error="application/vnd.microsoft.error"}(he||(he={}));class me{static textMessage(e){if(!e)throw new Error("The text message cannot be null or empty");return{status:a.OK,body:{statusCode:a.OK,type:he.Message,value:e}}}static adaptiveCard(e){if(!e)throw new Error("The adaptive card content cannot be null or undefined");return{status:a.OK,body:{statusCode:a.OK,type:he.AdaptiveCard,value:e}}}static errorResponse(e,t){return{status:a.OK,body:{statusCode:e,type:he.Error,value:{code:e.toString(),message:t}}}}static createInvokeResponse(e,t){return{status:e,body:t}}}async function fe(e,t,n,i,o){const a=e.activity.value;if(!a.authentication||!a.authentication.token)return H.verbose("No AccessToken in request, return silentAuth for AccessToken"),function(e,t,n){const i=$(n);return{composeExtension:{type:"silentAuth",suggestedActions:{actions:[{type:"openUrl",value:`${t}?scope=${encodeURI(i.join(" "))}&clientId=${e.clientId}&tenantId=${e.tenantId}`,title:"Message Extension OAuth"}]}}}}(t,n,i);try{const e=new G(a.authentication.token,t),n=await e.getToken(i),r=j(a.authentication.token).exp,s={ssoToken:a.authentication.token,ssoTokenExpiration:new Date(1e3*r).toISOString(),token:n.token,expiration:n.expiresOnTimestamp.toString(),connectionName:""};if(o)return await o(s)}catch(o){if(o instanceof D&&o.code===O.UiRequiredError&&"composeExtension/query"===e.activity.name){H.verbose("User not consent yet, return 412 to user consent first.");const t={status:412},n=T.fromObject({value:t,type:C.InvokeResponse});await e.sendActivity(n)}else if(o instanceof D&&o.code===O.UiRequiredError&&"composeExtension/queryLink"===e.activity.name){H.verbose("User not consent yet, return auth card for user login");const o=function(e,t,n){const i=$(n);return{composeExtension:{type:"auth",suggestedActions:{actions:[{type:"openUrl",value:`${t}?scope=${encodeURI(i.join(" "))}&clientId=${e.clientId}&tenantId=${e.tenantId}`,title:"Message Extension OAuth"}]}}}}(t,n,i);return void await e.sendActivity(T.fromObject({value:{status:200,body:o},type:C.InvokeResponse}))}throw o}}async function ye(e,t,n,i,o){if("composeExtension/query"!=e.activity.name)throw H.error(F.OnlySupportInQueryActivity),new D(q(F.OnlySupportInQueryActivity),O.FailedOperation);return await fe(e,null!=t?t:{},n,i,o)}async function ge(e,t,n,i,o){if("composeExtension/queryLink"!=e.activity.name)throw H.error(F.OnlySupportInLinkQueryActivity),new D(q(F.OnlySupportInLinkQueryActivity),O.FailedOperation);return await fe(e,null!=t?t:{},n,i,o)}class we{constructor(e){this.actionHandlers=[],this.defaultMessage="Your response was sent to the app",e&&e.length>0&&this.actionHandlers.push(...e)}async onTurn(e,t){var n,a,r;if("adaptiveCard/action"===e.activity.name){const t=e.activity.value.action,s=t.verb;for(const c of this.actionHandlers)if((null===(n=c.triggerVerb)||void 0===n?void 0:n.toLowerCase())===(null==s?void 0:s.toLowerCase())){let n;try{n=await c.handleActionInvoked(e,t.data)}catch(t){const n=me.errorResponse(ie.InternalServerError,t.message);throw await this.sendInvokeResponse(e,n),t}switch(null===(a=n.body)||void 0===a?void 0:a.type){case he.AdaptiveCard:const t=null===(r=n.body)||void 0===r?void 0:r.value;if(!t){const t="Adaptive card content cannot be found in the response body";throw await this.sendInvokeResponse(e,me.errorResponse(ie.InternalServerError,t)),new Error(t)}t.refresh&&c.adaptiveCardResponse!==ne.NewForAll&&(c.adaptiveCardResponse=ne.ReplaceForAll);const a=o.attachment(i.adaptiveCard(t));c.adaptiveCardResponse===ne.NewForAll?(await this.sendInvokeResponse(e,me.textMessage(this.defaultMessage)),await e.sendActivity(a)):c.adaptiveCardResponse===ne.ReplaceForAll?(a.id=e.activity.replyToId,await e.updateActivity(a),await this.sendInvokeResponse(e,n)):await this.sendInvokeResponse(e,n);break;case he.Message:case he.Error:default:await this.sendInvokeResponse(e,n)}break}}await t()}async sendInvokeResponse(e,t){await e.sendActivity({type:C.InvokeResponse,value:t})}}class Ce{constructor(e,t){this.middleware=new we(null==t?void 0:t.actions),this.adapter=e.use(this.middleware)}registerHandler(e){e&&this.middleware.actionHandlers.push(e)}registerHandlers(e){e&&this.middleware.actionHandlers.push(...e)}}class Se{constructor(e,t,n){if(this.commandHandlers=[],this.ssoCommandHandlers=[],e=null!=e?e:[],t=null!=t?t:[],this.hasSsoCommand=t.length>0,this.ssoActivityHandler=n,this.hasSsoCommand&&!this.ssoActivityHandler)throw H.error(F.SsoActivityHandlerIsNull),new D(F.SsoActivityHandlerIsNull,O.SsoActivityHandlerIsUndefined);this.commandHandlers.push(...e);for(const e of t)this.addSsoCommand(e)}addSsoCommand(e){var t;null===(t=this.ssoActivityHandler)||void 0===t||t.addCommand((async(t,n,i)=>{const o=this.shouldTrigger(e.triggerPatterns,i.text);i.matches=Array.isArray(o)?o:void 0;const a=await e.handleCommandReceived(t,i,n);await this.processResponse(t,a)}),e.triggerPatterns),this.ssoCommandHandlers.push(e),this.hasSsoCommand=!0}async onTurn(e,t){var n,i;if(e.activity.type===C.Message){const t=this.getActivityText(e.activity);let i=!1;for(const n of this.commandHandlers){const o=this.shouldTrigger(n.triggerPatterns,t);if(o){const a={text:t};a.matches=Array.isArray(o)?o:void 0;const r=await n.handleCommandReceived(e,a);await this.processResponse(e,r),i=!0;break}}if(!i)for(const i of this.ssoCommandHandlers){if(this.shouldTrigger(i.triggerPatterns,t)){await(null===(n=this.ssoActivityHandler)||void 0===n?void 0:n.run(e));break}}}else this.hasSsoCommand&&await(null===(i=this.ssoActivityHandler)||void 0===i?void 0:i.run(e));await t()}async processResponse(e,t){if("string"==typeof t)await e.sendActivity(t);else{const n=t;n&&await e.sendActivity(n)}}matchPattern(e,t){if(t){if("string"==typeof e){return new RegExp(e,"i").test(t)}if(e instanceof RegExp){const n=t.match(e);return null!=n&&n}}return!1}shouldTrigger(e,t){const n=Array.isArray(e)?e:[e];for(const e of n){const n=this.matchPattern(e,t);if(n)return n}return!1}getActivityText(e){let t=e.text;const n=e.removeRecipientMention();return n&&(t=n.toLowerCase().replace(/\n|\r\n/g,"").trim()),t}}class Ae{constructor(e,t,n,i){this.ssoConfig=i,this.middleware=new Se(null==t?void 0:t.commands,null==t?void 0:t.ssoCommands,n),this.adapter=e.use(this.middleware)}registerCommand(e){e&&this.middleware.commandHandlers.push(e)}registerCommands(e){e&&this.middleware.commandHandlers.push(...e)}registerSsoCommand(e){this.validateSsoActivityHandler(),this.middleware.addSsoCommand(e)}registerSsoCommands(e){if(e.length>0){this.validateSsoActivityHandler();for(const t of e)this.middleware.addSsoCommand(t)}}validateSsoActivityHandler(){if(!this.middleware.ssoActivityHandler)throw H.error(F.SsoActivityHandlerIsNull),new D(F.SsoActivityHandlerIsNull,O.SsoActivityHandlerIsUndefined)}}function Te(e){return JSON.parse(JSON.stringify(e))}function Ie(e){var t,n;return`_${null===(t=e.conversation)||void 0===t?void 0:t.tenantId}_${null===(n=e.conversation)||void 0===n?void 0:n.id}`}function ke(e){var t,n,i,o,a;const r=null===(i=null===(n=null===(t=e.activity)||void 0===t?void 0:t.channelData)||void 0===n?void 0:n.team)||void 0===i?void 0:i.id;return r||(void 0===(null===(o=e.activity.conversation)||void 0===o?void 0:o.name)&&(null===(a=e.activity.conversation)||void 0===a?void 0:a.id)?e.activity.conversation.id:void 0)}!function(e){e[e.CurrentBotInstalled=0]="CurrentBotInstalled",e[e.CurrentBotMessaged=1]="CurrentBotMessaged",e[e.CurrentBotUninstalled=2]="CurrentBotUninstalled",e[e.TeamDeleted=3]="TeamDeleted",e[e.TeamRestored=4]="TeamRestored",e[e.Unknown=5]="Unknown"}(pe||(pe={}));class Ee{constructor(e){this.conversationReferenceStore=e.conversationReferenceStore}async onTurn(e,t){switch(this.classifyActivity(e.activity)){case pe.CurrentBotInstalled:case pe.TeamRestored:{const t=e.activity.getConversationReference();await this.conversationReferenceStore.add(Ie(t),t,{overwrite:!0});break}case pe.CurrentBotMessaged:await this.tryAddMessagedReference(e);break;case pe.CurrentBotUninstalled:case pe.TeamDeleted:{const t=e.activity.getConversationReference();await this.conversationReferenceStore.remove(Ie(t),t);break}}await t()}classifyActivity(e){var t,n;const i=e.type;if("installationUpdate"===i){const n=null===(t=e.action)||void 0===t?void 0:t.toLowerCase();return"add"===n||"add-upgrade"===n?pe.CurrentBotInstalled:pe.CurrentBotUninstalled}if("conversationUpdate"===i){const t=null===(n=e.channelData)||void 0===n?void 0:n.eventType;if("teamDeleted"===t)return pe.TeamDeleted;if("teamRestored"===t)return pe.TeamRestored}else if("message"===i)return pe.CurrentBotMessaged;return pe.Unknown}async tryAddMessagedReference(e){var t,n,i,o,a,r;const s=e.activity.getConversationReference(),c=null===(t=null==s?void 0:s.conversation)||void 0===t?void 0:t.conversationType;if("personal"===c||"groupChat"===c)await this.conversationReferenceStore.add(Ie(s),s,{overwrite:!1});else if("channel"===c){const t=null===(o=null===(i=null===(n=e.activity)||void 0===n?void 0:n.channelData)||void 0===i?void 0:i.team)||void 0===o?void 0:o.id,c=null===(r=null===(a=e.activity.channelData)||void 0===a?void 0:a.channel)||void 0===r?void 0:r.id;if(void 0!==t&&(void 0===c||t===c)){const e=Te(s);e.conversation.id=t,await this.conversationReferenceStore.add(Ie(e),e,{overwrite:!1})}}}}class xe{constructor(e){var t;this.localFileName=null!==(t=process.env.TEAMSFX_NOTIFICATION_STORE_FILENAME)&&void 0!==t?t:".notification.localstore.json",this.filePath=R.resolve(e,this.localFileName)}async add(e,t,n){if(n.overwrite||!await this.storeFileExists()){if(await this.storeFileExists()){const n=await this.readFromFile();await this.writeToFile(Object.assign(n,{[e]:t}))}else await this.writeToFile({[e]:t});return!0}return!1}async remove(e,t){if(!await this.storeFileExists())return!1;if(await this.storeFileExists()){const t=await this.readFromFile();void 0!==t[e]&&(delete t[e],await this.writeToFile(t))}return!0}async list(e,t){if(!await this.storeFileExists())return{data:[],continuationToken:""};const n=await this.readFromFile();return{data:Object.entries(n).map((e=>e[1])),continuationToken:""}}storeFileExists(){return new Promise((e=>{try{b.access(this.filePath,(t=>{e(!t)}))}catch(t){e(!1)}}))}readFromFile(){return new Promise(((e,t)=>{try{b.readFile(this.filePath,{encoding:"utf-8"},((n,i)=>{n?t(n):e(JSON.parse(i))}))}catch(e){t(e)}}))}async writeToFile(e){return new Promise(((t,n)=>{try{const i=JSON.stringify(e,void 0,2);b.writeFile(this.filePath,i,{encoding:"utf-8"},(e=>{e?n(e):t()}))}catch(e){n(e)}}))}}class Re{constructor(e,t){this.type=te.Channel,this.parent=e,this.info=t}async sendMessage(e,t){const n={};return await this.parent.adapter.continueConversation(this.parent.conversationReference,(async i=>{const o=await this.newConversation(i);await this.parent.adapter.continueConversation(o,(async i=>{try{const t=await i.sendActivity(e);n.id=null==t?void 0:t.id}catch(e){if(!t)throw e;await t(i,e)}}))})),n}async sendAdaptiveCard(e,t){const n={};return await this.parent.adapter.continueConversation(this.parent.conversationReference,(async o=>{const a=await this.newConversation(o);await this.parent.adapter.continueConversation(a,(async o=>{try{const t=await o.sendActivity({attachments:[i.adaptiveCard(e)],type:C.Message});n.id=null==t?void 0:t.id}catch(e){if(!t)throw e;await t(o,e)}}))}),!0),n}newConversation(e){const t=Te(e.activity.getConversationReference());return t.conversation.id=this.info.id||"",Promise.resolve(t)}}class be{constructor(e,t){this.type=te.Person,this.parent=e,this.account=t}async sendMessage(e,t){const n={};return await this.parent.adapter.continueConversation(this.parent.conversationReference,(async i=>{const o=await this.newConversation(i);await this.parent.adapter.continueConversation(o,(async i=>{try{const t=await i.sendActivity(e);n.id=null==t?void 0:t.id}catch(e){if(!t)throw e;await t(i,e)}}))})),n}async sendAdaptiveCard(e,t){const n={};return await this.parent.adapter.continueConversation(this.parent.conversationReference,(async o=>{const a=await this.newConversation(o);await this.parent.adapter.continueConversation(a,(async o=>{try{const t=await o.sendActivity({attachments:[i.adaptiveCard(e)],type:C.Message});n.id=null==t?void 0:t.id}catch(e){if(!t)throw e;await t(o,e)}}))}),!0),n}async newConversation(e){const t=Te(e.activity.getConversationReference()),n=e.turnState.get(this.parent.adapter.ConnectorClientKey),i={members:[this.account],isGroup:!1,agent:e.activity.recipient,tenantId:e.activity.conversation.tenantId,activity:e.activity,channelData:e.activity.channelData},o=await n.createConversationAsync(i);return t.conversation.id=o.id,t}}class Oe{constructor(e,t,n){this.adapter=e,this.conversationReference=t,this.type=function(e){var t;const n=null===(t=e.conversation)||void 0===t?void 0:t.conversationType;return"personal"===n?te.Person:"groupChat"===n?te.Group:"channel"===n?te.Channel:void 0}(t),this.botAppId=n}async sendMessage(e,t){const n={};return await this.adapter.continueConversation(this.conversationReference,(async i=>{try{const t=await i.sendActivity(e);n.id=null==t?void 0:t.id}catch(e){if(!t)throw e;await t(i,e)}})),n}async sendAdaptiveCard(e,t){const n={};return await this.adapter.continueConversation(this.conversationReference,(async o=>{try{const t={attachments:[i.adaptiveCard(e)],type:C.Message},a=await o.sendActivity(t);n.id=null==a?void 0:a.id}catch(e){if(!t)throw e;await t(o,e)}}),!0),n}async channels(){const e=[];if(this.type!==te.Channel)return e;let t=[];await this.adapter.continueConversation(this.conversationReference,(async e=>{const n=ke(e);void 0!==n&&(t=await u.getTeamChannels(e,n))}));for(const n of t)e.push(new Re(this,n));return e}async getPagedMembers(e,t){let n={data:[],continuationToken:""};return await this.adapter.continueConversation(this.conversationReference,(async i=>{const o=await u.getPagedMembers(i,e,t);n={data:o.members.map((e=>new be(this,e))),continuationToken:o.continuationToken}})),n}async getTeamDetails(){if(this.type!==te.Channel)return;let e;return await this.adapter.continueConversation(this.conversationReference,(async t=>{const n=ke(t);void 0!==n&&(e=await u.getTeamDetails(t,n))})),e}}class Pe{constructor(e,t){var n,i;(null==t?void 0:t.store)?this.conversationReferenceStore=t.store:this.conversationReferenceStore=new xe(R.resolve("1"===process.env.RUNNING_ON_AZURE&&null!==(n=process.env.TEMP)&&void 0!==n?n:"./")),this.adapter=e.use(new Ee({conversationReferenceStore:this.conversationReferenceStore})),this.botAppId=null!==(i=null==t?void 0:t.botAppId)&&void 0!==i?i:process.env.BOT_ID}buildTeamsBotInstallation(e){if(!e)throw new Error("conversationReference is required.");return new Oe(this.adapter,e,this.botAppId)}async validateInstallation(e){let t=!0;return await this.adapter.continueConversation(e,(async e=>{try{await u.getPagedMembers(e,1)}catch(e){"BotNotInConversationRoster"===e.code&&(t=!1)}})),t}async getPagedInstallations(e,t,n=!0){if(void 0===this.conversationReferenceStore||void 0===this.adapter)throw new Error("NotificationBot has not been initialized.");const i=await this.conversationReferenceStore.list(e,t),o=[];for(const e of i.data){let t;n&&(t=await this.validateInstallation(e)),!n||n&&t?o.push(new Oe(this.adapter,e,this.botAppId)):await this.conversationReferenceStore.remove(Ie(e),e)}return{data:o,continuationToken:i.continuationToken}}async findMember(e,t){for(const n of await this.installations())if(this.matchSearchScope(n,t)){const t=[];let i;do{const e=await n.getPagedMembers(void 0,i);i=e.continuationToken,t.push(...e.data)}while(i);for(const n of t)if(await e(n))return n}}async findChannel(e){for(const t of await this.installations())if(t.type===te.Channel){const n=await t.getTeamDetails();for(const i of await t.channels())if(await e(i,n))return i}}async findAllMembers(e,t){const n=[];for(const i of await this.installations())if(this.matchSearchScope(i,t)){const t=[];let o;do{const e=await i.getPagedMembers(void 0,o);o=e.continuationToken,t.push(...e.data)}while(o);for(const i of t)await e(i)&&n.push(i)}return n}async findAllChannels(e){const t=[];for(const n of await this.installations())if(n.type===te.Channel){const i=await n.getTeamDetails();for(const o of await n.channels())await e(o,i)&&t.push(o)}return t}matchSearchScope(e,t){return t=null!=t?t:ve.All,e.type===te.Channel&&!!(t&ve.Channel)||e.type===te.Group&&!!(t&ve.Group)||e.type===te.Person&&!!(t&ve.Person)}async installations(){let e;const t=[];do{const n=await this.getPagedInstallations(void 0,e);e=n.continuationToken,t.push(...n.data)}while(e);return t}}!function(e){e[e.Person=1]="Person",e[e.Group=2]="Group",e[e.Channel=4]="Channel",e[e.All=7]="All"}(ve||(ve={}));class Fe extends v{constructor(e){var t,n,i,o,a,d,l,u,h,p;super();const v=new r,m=null!==(n=null===(t=e.dialog)||void 0===t?void 0:t.userState)&&void 0!==n?n:new s(v),f=null!==(o=null===(i=e.dialog)||void 0===i?void 0:i.conversationState)&&void 0!==o?o:new c(v),y=null!==(d=null===(a=e.dialog)||void 0===a?void 0:a.dedupStorage)&&void 0!==d?d:v,g=e.aad,{scopes:w}=g,C=
2
2
  /*! *****************************************************************************
3
3
  Copyright (c) Microsoft Corporation.
4
4
 
@@ -13,5 +13,5 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
13
13
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
14
14
  PERFORMANCE OF THIS SOFTWARE.
15
15
  ***************************************************************************** */
16
- function(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(i=Object.getOwnPropertySymbols(e);o<i.length;o++)t.indexOf(i[o])<0&&Object.prototype.propertyIsEnumerable.call(e,i[o])&&(n[i[o]]=e[i[o]])}return n}(g,["scopes"]),A={scopes:w,timeout:null===(c=null===(s=e.dialog)||void 0===s?void 0:s.ssoPromptConfig)||void 0===c?void 0:c.timeout,endOnInvalidMessage:null===(l=null===(d=e.dialog)||void 0===d?void 0:d.ssoPromptConfig)||void 0===l?void 0:l.endOnInvalidMessage};this.ssoExecutionDialog=new ue(y,A,C,C.initiateLoginEndpoint),this.conversationState=p,this.dialogState=p.createProperty("DialogState"),this.userState=h,this.onMessage((async(e,t)=>{await this.ssoExecutionDialog.run(e,this.dialogState),await t()}))}addCommand(e,t){this.ssoExecutionDialog.addCommand(e,t)}async run(e){try{await super.run(e)}finally{await this.conversationState.saveChanges(e,!1),await this.userState.saveChanges(e,!1)}}async handleTeamsSigninVerifyState(e,t){await this.ssoExecutionDialog.run(e,this.dialogState)}async handleTeamsSigninTokenExchange(e,t){await this.ssoExecutionDialog.run(e,this.dialogState)}}var Me=Object.freeze({__proto__:null,BotSsoExecutionDialog:ue,CardActionBot:Ae,Channel:be,CommandBot:Ie,ConversationBot:class{constructor(e){var t,n,i,o;let a;e.adapter?this.adapter=e.adapter:this.adapter=this.createDefaultAdapter(e.adapterConfig),(null==e?void 0:e.ssoConfig)&&(a=(null===(t=e.ssoConfig.dialog)||void 0===t?void 0:t.CustomBotSsoExecutionActivityHandler)?new e.ssoConfig.dialog.CustomBotSsoExecutionActivityHandler(e.ssoConfig):new De(e.ssoConfig)),(null===(n=e.command)||void 0===n?void 0:n.enabled)&&(this.command=new Ie(this.adapter,e.command,a,e.ssoConfig)),(null===(i=e.notification)||void 0===i?void 0:i.enabled)&&(this.notification=new Fe(this.adapter,e.notification)),(null===(o=e.cardAction)||void 0===o?void 0:o.enabled)&&(this.cardAction=new Ae(this.adapter,e.cardAction))}createDefaultAdapter(e){const t=new y(void 0===e?{MicrosoftAppId:process.env.BOT_ID,MicrosoftAppPassword:process.env.BOT_PASSWORD,MicrosoftAppType:"MultiTenant"}:e),n=new g({},t),i=new w(n);return i.onTurnError=async(e,t)=>{console.error("[onTurnError] unhandled error",t),"message"===e.activity.type&&(await e.sendTraceActivity("OnTurnError Trace",t instanceof Error?t.message:t,"https://www.botframework.com/schemas/error","TurnError"),await e.sendActivity(`The bot encountered unhandled error: ${t.message}`),await e.sendActivity("To continue to run this bot, please fix the bot source code."))},i}async requestHandler(e,t,n){void 0===n&&(n=async()=>{}),await this.adapter.process(e,t,n)}},Member:Oe,NotificationBot:Fe,get SearchScope(){return me},TeamsBotInstallation:Pe,sendAdaptiveCard:function(e,t,n){return e.sendAdaptiveCard(t,n)},sendMessage:function(e,t,n){return e.sendMessage(t,n)}});export{ie as AdaptiveCardResponse,te as ApiKeyLocation,ee as ApiKeyProvider,G as AppCredential,Y as BasicAuthProvider,X as BearerTokenAuthProvider,Me as BotBuilderCloudAdapter,ue as BotSsoExecutionDialog,ae as CertificateAuthProvider,P as ErrorCode,M as ErrorWithCode,oe as InvokeResponseErrorCode,fe as InvokeResponseFactory,F as LogLevel,he as MessageBuilder,ne as NotificationTargetType,_ as OnBehalfOfUserCredential,J as TeamsBotSsoPrompt,Q as TeamsUserCredential,Z as createApiClient,re as createPemCertOption,se as createPfxCertOption,H as getLogLevel,we as handleMessageExtensionLinkQueryWithSSO,ge as handleMessageExtensionQueryWithSSO,q as setLogFunction,N as setLogLevel,U as setLogger};
16
+ function(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(i=Object.getOwnPropertySymbols(e);o<i.length;o++)t.indexOf(i[o])<0&&Object.prototype.propertyIsEnumerable.call(e,i[o])&&(n[i[o]]=e[i[o]])}return n}(g,["scopes"]),S={scopes:w,timeout:null===(u=null===(l=e.dialog)||void 0===l?void 0:l.ssoPromptConfig)||void 0===u?void 0:u.timeout,endOnInvalidMessage:null===(p=null===(h=e.dialog)||void 0===h?void 0:h.ssoPromptConfig)||void 0===p?void 0:p.endOnInvalidMessage};this.ssoExecutionDialog=new le(y,S,C,C.initiateLoginEndpoint),this.conversationState=f,this.dialogState=f.createProperty("DialogState"),this.userState=m,this.onMessage((async(e,t)=>{await this.ssoExecutionDialog.run(e,this.dialogState),await t()}))}addCommand(e,t){this.ssoExecutionDialog.addCommand(e,t)}async run(e){try{await super.run(e)}finally{await this.conversationState.saveChanges(e,!1),await this.userState.saveChanges(e,!1)}}async handleTeamsSigninVerifyState(e,t){await this.ssoExecutionDialog.run(e,this.dialogState)}async handleTeamsSigninTokenExchange(e,t){await this.ssoExecutionDialog.run(e,this.dialogState)}}var De=Object.freeze({__proto__:null,BotSsoExecutionDialog:le,CardActionBot:Ce,Channel:Re,CommandBot:Ae,ConversationBot:class{constructor(e){var t,n,i,o;let a;e.adapter?this.adapter=e.adapter:this.adapter=this.createDefaultAdapter(e.adapterConfig),(null==e?void 0:e.ssoConfig)&&(a=(null===(t=e.ssoConfig.dialog)||void 0===t?void 0:t.CustomBotSsoExecutionActivityHandler)?new e.ssoConfig.dialog.CustomBotSsoExecutionActivityHandler(e.ssoConfig):new Fe(e.ssoConfig)),(null===(n=e.command)||void 0===n?void 0:n.enabled)&&(this.command=new Ae(this.adapter,e.command,a,e.ssoConfig)),(null===(i=e.notification)||void 0===i?void 0:i.enabled)&&(this.notification=new Pe(this.adapter,e.notification)),(null===(o=e.cardAction)||void 0===o?void 0:o.enabled)&&(this.cardAction=new Ce(this.adapter,e.cardAction))}createDefaultAdapter(e){const t=null!=e?e:d(),n=new l(t);return n.onTurnError=async(e,t)=>{console.error("[onTurnError] unhandled error",t),"message"===e.activity.type&&(await e.sendTraceActivity("OnTurnError Trace",t instanceof Error?t.message:t,"https://www.botframework.com/schemas/error","TurnError"),await e.sendActivity(`The bot encountered unhandled error: ${t.message}`),await e.sendActivity("To continue to run this bot, please fix the bot source code."))},n}async requestHandler(e,t,n){void 0===n&&(n=async()=>{}),await this.adapter.process(e,t,n)}},Member:be,NotificationBot:Pe,get SearchScope(){return ve},TeamsBotInstallation:Oe,sendAdaptiveCard:function(e,t,n){return e.sendAdaptiveCard(t,n)},sendMessage:function(e,t,n){return e.sendMessage(t,n)}});export{ne as AdaptiveCardResponse,De as AgentBuilderCloudAdapter,ee as ApiKeyLocation,Y as ApiKeyProvider,K as AppCredential,X as BasicAuthProvider,Z as BearerTokenAuthProvider,le as BotSsoExecutionDialog,oe as CertificateAuthProvider,O as ErrorCode,D as ErrorWithCode,ie as InvokeResponseErrorCode,me as InvokeResponseFactory,P as LogLevel,ue as MessageBuilder,te as NotificationTargetType,G as OnBehalfOfUserCredential,W as TeamsBotSsoPrompt,Q as TeamsUserCredential,J as createApiClient,ae as createPemCertOption,re as createPfxCertOption,N as getLogLevel,ge as handleMessageExtensionLinkQueryWithSSO,ye as handleMessageExtensionQueryWithSSO,U as setLogFunction,M as setLogLevel,B as setLogger};
17
17
  //# sourceMappingURL=index.esm2017.mjs.map