UNPKG

@microsoft/mgt

Version:
110 lines 2.9 kB
/** * ------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License. * See License in the project root for license information. * ------------------------------------------------------------------------------------------- */ import { EventDispatcher } from './EventDispatcher'; /** * Provider Type to be extended for implmenting new providers * * @export * @abstract * @class IProvider * @implements {AuthenticationProvider} */ export class IProvider { constructor() { this._loginChangedDispatcher = new EventDispatcher(); this._state = ProviderState.Loading; } /** * returns state of Provider * * @readonly * @type {ProviderState} * @memberof IProvider */ get state() { return this._state; } /** * sets state of Provider and fires loginchangedDispatcher * * @param {ProviderState} state * @memberof IProvider */ setState(state) { if (state !== this._state) { this._state = state; this._loginChangedDispatcher.fire({}); } } /** * event handler when login changes * * @param {EventHandler<LoginChangedEvent>} eventHandler * @memberof IProvider */ onStateChanged(eventHandler) { this._loginChangedDispatcher.add(eventHandler); } /** * removes event handler for when login changes * * @param {EventHandler<LoginChangedEvent>} eventHandler * @memberof IProvider */ removeStateChangedHandler(eventHandler) { this._loginChangedDispatcher.remove(eventHandler); } /** * uses scopes to recieve access token * * @param {...string[]} scopes * @returns {Promise<string>} * @memberof IProvider */ getAccessTokenForScopes(...scopes) { return this.getAccessToken({ scopes }); } } /** * LoginType * * @export * @enum {number} */ export var LoginType; (function (LoginType) { /** * Popup = 0 */ LoginType[LoginType["Popup"] = 0] = "Popup"; /** * Redirect = 1 */ LoginType[LoginType["Redirect"] = 1] = "Redirect"; })(LoginType || (LoginType = {})); /** * ProviderState * * @export * @enum {number} */ export var ProviderState; (function (ProviderState) { /** * Loading = 0 */ ProviderState[ProviderState["Loading"] = 0] = "Loading"; /** * SignedOut = 1 */ ProviderState[ProviderState["SignedOut"] = 1] = "SignedOut"; /** * SignedIn = 1 */ ProviderState[ProviderState["SignedIn"] = 2] = "SignedIn"; })(ProviderState || (ProviderState = {})); //# sourceMappingURL=IProvider.js.map