@microsoft/mgt
Version: 
The Microsoft Graph Toolkit
110 lines • 2.9 kB
JavaScript
/**
 * -------------------------------------------------------------------------------------------
 * 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