index.js

import Auth from './auth'
import WebAuth from './webauth'
import { validate } from './utils/validate'

/**
   * AzureAuth for React Native client
   *
   * @param {Object} options your AzureAuth client information
   * @param {String} options.clientId your AzureAuth client identifier. __ALL other params are optional!__
   * @param {boolean} options.persistentCache do you want to store token cache between the app starts. Defaults to true.
   * @param {String} options.authorityUrl optional Azure authority if you want to replace default v2 endpoint
   *    (`https://login.microsoftonline.com/${tenant}/oauth2/v2.0/`)
   * @param {String} options.tenant - uses given tenant in the default authority URL. Default is `common`
   * @param {String} options.redirectUri - uses given redirect URI instead of default one:
   *    iOS: {YOUR_BUNDLE_IDENTIFIER}://${YOUR_BUNDLE_IDENTIFIER}/ios/callback
   *    Android: {YOUR_APP_PACKAGE_NAME}://{YOUR_APP_PACKAGE_NAME}/android/callback
   *
   * @class AzureAuth
   */
export default class AzureAuth {
    constructor(options = {}) {
        validate({
            parameters: {
                clientId: { required: true },
            },
            validate: false // not declared params are allowed
        }, options)
        
        const { tenant = 'common', authorityUrl, clientId, redirectUri, persistentCache, ...extras } = options
        
        this.auth = new Auth({authorityUrl: (authorityUrl ? authorityUrl : `https://login.microsoftonline.com/${tenant}/oauth2/v2.0/`),
            clientId,
            redirectUri,
            persistentCache,
            ...extras})
            
        this.webAuth = new WebAuth(this.auth)
        this.options = options
    }
}