Socket
Socket
Sign inDemoInstall

@azure/msal-node

Package Overview
Dependencies
Maintainers
3
Versions
109
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@azure/msal-node - npm Package Compare versions

Comparing version 1.0.0-alpha.5 to 1.0.0-alpha.6

41

CHANGELOG.json

@@ -5,2 +5,43 @@ {

{
"date": "Thu, 17 Sep 2020 23:16:22 GMT",
"tag": "@azure/msal-node_v1.0.0",
"version": "1.0.0",
"comments": {
"none": [
{
"comment": "Update msal node to use central eslint configuration",
"author": "janutter@microsoft.com",
"commit": "fc49c6f16b3f7a62a67d249107fc484272133305",
"package": "@azure/msal-node"
}
],
"prerelease": [
{
"comment": "Address tsdx warnings (#2202)",
"author": "thomas.norling@microsoft.com",
"commit": "d147c4053cced20f0b1964f01dba02b3eba644cd",
"package": "@azure/msal-node"
},
{
"comment": "Implement Telemetry in msal-node (#1921)",
"author": "thomas.norling@microsoft.com",
"commit": "1872900d149b60436ef59fd41ab542c58c32e8f1",
"package": "@azure/msal-node"
},
{
"comment": "Changes node storage: getItem(), setItem() and removeItem() simplified and no longer need a 'type'",
"author": "sameera.gajjarapu@microsoft.com",
"commit": "9760b6ff6c0ad403ac1b26968cb10d3d7e72a6fd",
"package": "@azure/msal-node"
},
{
"comment": "Add support for on-behalf-of flow",
"author": "sagonzal@microsoft.com",
"commit": "53c018c8ea0d1877c12641fc1a749e6d66e7ff78",
"package": "@azure/msal-node"
}
]
}
},
{
"date": "Tue, 25 Aug 2020 00:40:45 GMT",

@@ -7,0 +48,0 @@ "tag": "@azure/msal-node_v1.0.0-alpha.5",

13

changelog.md
# Change Log - @azure/msal-node
This log was last generated on Tue, 25 Aug 2020 00:40:45 GMT and should not be manually modified.
This log was last generated on Thu, 17 Sep 2020 23:16:22 GMT and should not be manually modified.
<!-- Start content -->
## 1.0.0-alpha.6
Thu, 17 Sep 2020 23:16:22 GMT
### Changes
- Address tsdx warnings (#2202) (thomas.norling@microsoft.com)
- Implement Telemetry in msal-node (#1921) (thomas.norling@microsoft.com)
- Changes node storage: getItem(), setItem() and removeItem() simplified and no longer need a 'type' (sameera.gajjarapu@microsoft.com)
- Add support for on-behalf-of flow (sagonzal@microsoft.com)
## 1.0.0-alpha.5

@@ -8,0 +19,0 @@

4

dist/cache/serializer/Deserializer.d.ts

@@ -1,3 +0,3 @@

import { AccountCache, IdTokenCache, AccessTokenCache, RefreshTokenCache, AppMetadataCache } from '@azure/msal-common';
import { JsonCache, InMemoryCache, SerializedAccountEntity, SerializedIdTokenEntity, SerializedAccessTokenEntity, SerializedRefreshTokenEntity, SerializedAppMetadataEntity } from './SerializerTypes';
import { AccountCache, IdTokenCache, AccessTokenCache, RefreshTokenCache, AppMetadataCache } from "@azure/msal-common";
import { JsonCache, InMemoryCache, SerializedAccountEntity, SerializedIdTokenEntity, SerializedAccessTokenEntity, SerializedRefreshTokenEntity, SerializedAppMetadataEntity } from "./SerializerTypes";
/**

@@ -4,0 +4,0 @@ * This class deserializes cache entities read from the file into in memory object types defined internally

@@ -1,2 +0,3 @@

import { AccountCache, IdTokenCache, AccessTokenCache, RefreshTokenCache, AppMetadataCache } from "@azure/msal-common";
import { AccountCache, IdTokenCache, AccessTokenCache, RefreshTokenCache, AppMetadataCache, ValidCacheType } from "@azure/msal-common";
export declare type CacheKVStore = Record<string, ValidCacheType>;
export declare type JsonCache = {

@@ -3,0 +4,0 @@ Account: Record<string, SerializedAccountEntity>;

@@ -1,3 +0,3 @@

import { CacheManager, Logger } from '@azure/msal-common';
import { InMemoryCache, JsonCache } from "./serializer/SerializerTypes";
import { CacheManager, Logger, ValidCacheType } from "@azure/msal-common";
import { InMemoryCache, JsonCache, CacheKVStore } from "./serializer/SerializerTypes";
/**

@@ -8,11 +8,21 @@ * This class implements Storage for node, reading cache from user specified storage location or an extension library

private logger;
private cache;
private changeEmitters;
constructor(logger: Logger);
private inMemoryCache;
private changeEmitters;
registerChangeEmitter(func: () => void): void;
emitChange(): void;
/**
* Converts cacheKVStore to InMemoryCache
* @param cache
*/
cacheToInMemoryCache(cache: CacheKVStore): InMemoryCache;
/**
* converts inMemoryCache to CacheKVStore
* @param inMemoryCache
*/
inMemoryCacheToCache(inMemoryCache: InMemoryCache): CacheKVStore;
/**
* gets the current in memory cache for the client
*/
getCache(): object;
getInMemoryCache(): InMemoryCache;
/**

@@ -22,30 +32,32 @@ * sets the current in memory cache for the client

*/
setCache(inMemoryCache: InMemoryCache): void;
setInMemoryCache(inMemoryCache: InMemoryCache): void;
/**
* Set Item in memory
* get the current cache key-value store
*/
getCache(): CacheKVStore;
/**
* sets the current cache (key value store)
* @param cacheMap
*/
setCache(cache: CacheKVStore): void;
/**
* Gets cache item with given <key, value>
* @param key
* @param value
* @param type
* @param inMemory
*/
setItem(key: string, value: string | object, type?: string): void;
setItem(key: string, value: ValidCacheType): void;
/**
* Gets cache item with given key.
* Will retrieve frm cookies if storeAuthStateInCookie is set to true.
* @param key
* @param type
* @param inMemory
*/
getItem(key: string, type?: string): string | object;
getItem(key: string): ValidCacheType;
/**
* Removes the cache item from memory with the given key.
* @param key
* @param type
* @param inMemory
*/
removeItem(key: string, type?: string): boolean;
removeItem(key: string): boolean;
/**
* Checks whether key is in cache.
* @param key
* TODO: implement after the lookup implementation
*/

@@ -52,0 +64,0 @@ containsKey(key: string): boolean;

@@ -1,4 +0,4 @@

import { Storage } from './Storage';
import { AccountInfo, Logger } from '@azure/msal-common';
import { ICachePlugin } from './ICachePlugin';
import { Storage } from "./Storage";
import { AccountInfo, Logger } from "@azure/msal-common";
import { ICachePlugin } from "./ICachePlugin";
/**

@@ -5,0 +5,0 @@ * In-memory token cache manager

@@ -1,4 +0,5 @@

import { AuthorizationUrlRequest, AuthorizationCodeRequest, ClientConfiguration, RefreshTokenRequest, AuthenticationResult, BaseAuthRequest, SilentFlowRequest, Logger } from '@azure/msal-common';
import { Configuration } from '../config/Configuration';
import { TokenCache } from '../cache/TokenCache';
import { AuthorizationUrlRequest, AuthorizationCodeRequest, ClientConfiguration, RefreshTokenRequest, AuthenticationResult, BaseAuthRequest, SilentFlowRequest, Logger, ServerTelemetryManager } from "@azure/msal-common";
import { Configuration } from "../config/Configuration";
import { Storage } from "../cache/Storage";
import { TokenCache } from "../cache/TokenCache";
import { ClientAssertion } from "../client/ClientAssertion";

@@ -8,3 +9,3 @@ export declare abstract class ClientApplication {

private readonly cryptoProvider;
private storage;
protected storage: Storage;
private tokenCache;

@@ -59,9 +60,10 @@ protected logger: Logger;

getTokenCache(): TokenCache;
protected buildOauthClientConfiguration(authority?: string): Promise<ClientConfiguration>;
protected buildOauthClientConfiguration(authority?: string, serverTelemetryManager?: ServerTelemetryManager): Promise<ClientConfiguration>;
private getClientAssertion;
/**
* Generates a request with the default scopes.
* Generates a request with the default scopes & generates a correlationId.
* @param authRequest
*/
protected initializeRequestScopes(authRequest: BaseAuthRequest): BaseAuthRequest;
protected initializeRequest(authRequest: BaseAuthRequest): BaseAuthRequest;
protected initializeServerTelemetryManager(apiId: number, correlationId: string, forceRefresh?: boolean): ServerTelemetryManager;
/**

@@ -68,0 +70,0 @@ * Create authority instance. If authority not passed in request, default to authority set on the application

@@ -1,4 +0,4 @@

import { ClientApplication } from './ClientApplication';
import { ClientApplication } from "./ClientApplication";
import { Configuration } from "../config/Configuration";
import { ClientCredentialRequest, AuthenticationResult } from '@azure/msal-common';
import { ClientCredentialRequest, OnBehalfOfRequest, AuthenticationResult } from "@azure/msal-common";
export declare class ConfidentialClientApplication extends ClientApplication {

@@ -27,6 +27,18 @@ /**

/**
* Acquires tokens from the authority for the application (not for an end user).
*/
acquireTokenByClientCredential(request: ClientCredentialRequest): Promise<AuthenticationResult>;
/**
* Acquires tokens from the authority for the application.
*
* Used in scenarios where the current app is a middle-tier service which was called with a token
* representing an end user. The current app can use the token (oboAssertion) to request another
* token to access downstream web API, on behalf of that user.
*
* The current middle-tier app has no user interaction to obtain consent.
* See how to gain consent upfront for your middle-tier app from this article.
* https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow#gaining-consent-for-the-middle-tier-application
*/
acquireTokenByClientCredential(request: ClientCredentialRequest): Promise<AuthenticationResult>;
acquireTokenOnBehalfOf(request: OnBehalfOfRequest): Promise<AuthenticationResult>;
private setClientCredential;
}

@@ -1,4 +0,4 @@

import { DeviceCodeRequest, AuthenticationResult } from '@azure/msal-common';
import { Configuration } from '../config/Configuration';
import { ClientApplication } from './ClientApplication';
import { DeviceCodeRequest, AuthenticationResult } from "@azure/msal-common";
import { Configuration } from "../config/Configuration";
import { ClientApplication } from "./ClientApplication";
/**

@@ -5,0 +5,0 @@ * This class is to be used to acquire tokens for public client applications (desktop, mobile). Public client applications

@@ -1,2 +0,2 @@

import { LoggerOptions, INetworkModule } from '@azure/msal-common';
import { LoggerOptions, INetworkModule } from "@azure/msal-common";
import { ICachePlugin } from "../cache/ICachePlugin";

@@ -3,0 +3,0 @@ /**

@@ -1,2 +0,2 @@

import { ICrypto, PkceCodes } from '@azure/msal-common';
import { ICrypto, PkceCodes } from "@azure/msal-common";
/**

@@ -3,0 +3,0 @@ * This class implements MSAL node's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and

@@ -1,2 +0,2 @@

import { PkceCodes } from '@azure/msal-common';
import { PkceCodes } from "@azure/msal-common";
/**

@@ -3,0 +3,0 @@ * https://tools.ietf.org/html/rfc7636#page-8

@@ -1,8 +0,8 @@

export { PublicClientApplication } from './client/PublicClientApplication';
export { ConfidentialClientApplication } from './client/ConfidentialClientApplication';
export { Configuration, buildAppConfiguration } from './config/Configuration';
export { Storage } from './cache/Storage';
export { TokenCache } from './cache/TokenCache';
export { ICachePlugin } from './cache/ICachePlugin';
export { CryptoProvider } from './crypto/CryptoProvider';
export { AuthorizationCodeRequest, DeviceCodeRequest, RefreshTokenRequest, PromptValue, ResponseMode, AuthenticationResult, AccountInfo, AuthError, AuthErrorMessage, INetworkModule, LogLevel, } from '@azure/msal-common';
export { PublicClientApplication } from "./client/PublicClientApplication";
export { ConfidentialClientApplication } from "./client/ConfidentialClientApplication";
export { Configuration, buildAppConfiguration } from "./config/Configuration";
export { Storage } from "./cache/Storage";
export { TokenCache } from "./cache/TokenCache";
export { ICachePlugin } from "./cache/ICachePlugin";
export { CryptoProvider } from "./crypto/CryptoProvider";
export { AuthorizationCodeRequest, DeviceCodeRequest, RefreshTokenRequest, PromptValue, ResponseMode, AuthenticationResult, AccountInfo, AuthError, AuthErrorMessage, INetworkModule, LogLevel, } from "@azure/msal-common";

@@ -98,3 +98,3 @@ 'use strict';

var Hash = {
SHA256: 'sha256'
SHA256: "sha256"
};

@@ -106,3 +106,3 @@ /**

var CharSet = {
CV_CHARSET: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~'
CV_CHARSET: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~"
};

@@ -114,15 +114,33 @@ /**

var Constants = {
MSAL_SKU: 'msal.js.node',
JWT_BEARER_ASSERTION_TYPE: 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer'
MSAL_SKU: "msal.js.node",
JWT_BEARER_ASSERTION_TYPE: "urn:ietf:params:oauth:client-assertion-type:jwt-bearer"
};
/**
* API Codes for Telemetry purposes.
* Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs
* 0-99 Silent Flow
* 600-699 Device Code Flow
* 800-899 Auth Code Flow
*/
var ApiId;
(function (ApiId) {
ApiId[ApiId["acquireTokenSilent"] = 62] = "acquireTokenSilent";
ApiId[ApiId["acquireTokenByCode"] = 871] = "acquireTokenByCode";
ApiId[ApiId["acquireTokenByRefreshToken"] = 872] = "acquireTokenByRefreshToken";
ApiId[ApiId["acquireTokenByDeviceCode"] = 671] = "acquireTokenByDeviceCode";
ApiId[ApiId["acquireTokenByClientCredential"] = 771] = "acquireTokenByClientCredential";
})(ApiId || (ApiId = {}));
/**
* JWT constants
*/
var JwtConstants = {
ALGORITHM: 'alg',
RSA_256: 'RS256',
X5T: 'x5t',
AUDIENCE: 'aud',
EXPIRATION_TIME: 'exp',
ALGORITHM: "alg",
RSA_256: "RS256",
X5T: "x5t",
AUDIENCE: "aud",
EXPIRATION_TIME: "exp",
ISSUER: "iss",

@@ -187,3 +205,3 @@ SUBJECT: "sub",

url: url,
data: options && options.body || '',
data: options && options.body || "",
headers: options && options.headers

@@ -224,9 +242,9 @@ };

var DEFAULT_AUTH_OPTIONS = {
clientId: '',
authority: '',
clientSecret: '',
clientAssertion: '',
clientId: "",
authority: "",
clientSecret: "",
clientAssertion: "",
clientCertificate: {
thumbprint: '',
privateKey: ''
thumbprint: "",
privateKey: ""
},

@@ -240,3 +258,3 @@ knownAuthorities: [],

loggerCallback: function loggerCallback(level, message, containsPii) {
debug("msal:" + msalCommon.LogLevel[level] + (containsPii ? '-Pii' : ''))(message);
debug("msal:" + msalCommon.LogLevel[level] + (containsPii ? "-Pii" : ""))(message);
},

@@ -314,3 +332,3 @@ piiLoggingEnabled: false,

EncodingUtils.base64Encode = function base64Encode(str, encoding) {
return Buffer.from(str, encoding).toString('base64');
return Buffer.from(str, encoding).toString("base64");
}

@@ -324,3 +342,3 @@ /**

EncodingUtils.base64EncodeUrl = function base64EncodeUrl(str, encoding) {
return EncodingUtils.base64Encode(str, encoding).replace(/=/g, '').replace(/\+/g, '-').replace(/\//g, '_');
return EncodingUtils.base64Encode(str, encoding).replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_");
}

@@ -336,3 +354,3 @@ /**

EncodingUtils.base64Decode = function base64Decode(base64Str) {
return Buffer.from(base64Str, 'base64').toString('utf8');
return Buffer.from(base64Str, "base64").toString("utf8");
}

@@ -345,6 +363,6 @@ /**

EncodingUtils.base64DecodeUrl = function base64DecodeUrl(base64Str) {
var str = base64Str.replace(/-/g, '+').replace(/_/g, '/');
var str = base64Str.replace(/-/g, "+").replace(/_/g, "/");
while (str.length % 4) {
str += '=';
str += "=";
}

@@ -408,3 +426,3 @@

_proto.generateCodeChallengeFromVerifier = function generateCodeChallengeFromVerifier(codeVerifier) {
return EncodingUtils.base64EncodeUrl(this.sha256(codeVerifier).toString('ascii'));
return EncodingUtils.base64EncodeUrl(this.sha256(codeVerifier).toString("ascii"));
}

@@ -434,3 +452,3 @@ /**

return charArr.join('');
return charArr.join("");
};

@@ -843,9 +861,3 @@

_this = _CacheManager.call(this) || this;
_this.inMemoryCache = {
accounts: {},
accessTokens: {},
refreshTokens: {},
appMetadata: {},
idTokens: {}
};
_this.cache = {};
_this.changeEmitters = [];

@@ -868,12 +880,36 @@ _this.logger = logger;

/**
* gets the current in memory cache for the client
* Converts cacheKVStore to InMemoryCache
* @param cache
*/
;
_proto.getCache = function getCache() {
this.logger.verbose("Getting in-memory cache");
return this.inMemoryCache;
_proto.cacheToInMemoryCache = function cacheToInMemoryCache(cache) {
var inMemoryCache = {
accounts: {},
idTokens: {},
accessTokens: {},
refreshTokens: {},
appMetadata: {}
};
for (var key in cache) {
if (cache[key] instanceof msalCommon.AccountEntity) {
inMemoryCache.accounts[key] = cache[key];
} else if (cache[key] instanceof msalCommon.IdTokenEntity) {
inMemoryCache.idTokens[key] = cache[key];
} else if (cache[key] instanceof msalCommon.AccessTokenEntity) {
inMemoryCache.accessTokens[key] = cache[key];
} else if (cache[key] instanceof msalCommon.RefreshTokenEntity) {
inMemoryCache.refreshTokens[key] = cache[key];
} else if (cache[key] instanceof msalCommon.AppMetadataEntity) {
inMemoryCache.appMetadata[key] = cache[key];
} else {
continue;
}
}
return inMemoryCache;
}
/**
* sets the current in memory cache for the client
* converts inMemoryCache to CacheKVStore
* @param inMemoryCache

@@ -883,137 +919,79 @@ */

_proto.setCache = function setCache(inMemoryCache) {
this.logger.verbose("Setting in-memory cache");
this.inMemoryCache = inMemoryCache;
this.emitChange();
_proto.inMemoryCacheToCache = function inMemoryCacheToCache(inMemoryCache) {
// convert in memory cache to a flat Key-Value map
var cache = this.getCache();
cache = _extends({}, inMemoryCache.accounts, {}, inMemoryCache.idTokens, {}, inMemoryCache.accessTokens, {}, inMemoryCache.refreshTokens, {}, inMemoryCache.appMetadata);
return cache;
}
/**
* Set Item in memory
* @param key
* @param value
* @param type
* @param inMemory
* gets the current in memory cache for the client
*/
;
_proto.setItem = function setItem(key, value, type) {
this.logger.verbose("setItem called for item type: " + type);
this.logger.verbosePii("Item key: " + key); // read inMemoryCache
_proto.getInMemoryCache = function getInMemoryCache() {
this.logger.verbose("Getting in-memory cache"); // convert the cache key value store to inMemoryCache
var cache = this.getCache(); // save the cacheItem
var inMemoryCache = this.cacheToInMemoryCache(this.getCache());
return inMemoryCache;
}
/**
* sets the current in memory cache for the client
* @param inMemoryCache
*/
;
switch (type) {
case msalCommon.CacheSchemaType.ACCOUNT:
{
cache.accounts[key] = value;
break;
}
_proto.setInMemoryCache = function setInMemoryCache(inMemoryCache) {
this.logger.verbose("Setting in-memory cache"); // convert and append the inMemoryCache to cacheKVStore
case msalCommon.CacheSchemaType.CREDENTIAL:
{
var credentialType = msalCommon.CredentialEntity.getCredentialType(key);
var cache = this.inMemoryCacheToCache(inMemoryCache);
this.setCache(cache);
this.emitChange();
}
/**
* get the current cache key-value store
*/
;
switch (credentialType) {
case msalCommon.CredentialType.ID_TOKEN:
{
this.logger.verbose("Credential type: " + msalCommon.CredentialType.ID_TOKEN);
cache.idTokens[key] = value;
break;
}
_proto.getCache = function getCache() {
this.logger.verbose("Getting cache key-value store");
return this.cache;
}
/**
* sets the current cache (key value store)
* @param cacheMap
*/
;
case msalCommon.CredentialType.ACCESS_TOKEN:
{
this.logger.verbose("Credential type: " + msalCommon.CredentialType.ACCESS_TOKEN);
cache.accessTokens[key] = value;
break;
}
_proto.setCache = function setCache(cache) {
this.logger.verbose("Setting cache key value store");
this.cache = cache; // mark change in cache
case msalCommon.CredentialType.REFRESH_TOKEN:
{
this.logger.verbose("Credential type: " + msalCommon.CredentialType.REFRESH_TOKEN);
cache.refreshTokens[key] = value;
break;
}
}
this.emitChange();
}
/**
* Gets cache item with given <key, value>
* @param key
* @param value
*/
;
break;
}
_proto.setItem = function setItem(key, value) {
this.logger.verbosePii("Item key: " + key); // read cache
case msalCommon.CacheSchemaType.APP_METADATA:
{
cache.appMetadata[key] = value;
break;
}
var cache = this.getCache();
cache[key] = value; // write to cache
default:
{
throw msalCommon.ClientAuthError.createInvalidCacheTypeError();
}
} // update inMemoryCache
this.setCache(cache);
this.emitChange();
}
/**
* Gets cache item with given key.
* Will retrieve frm cookies if storeAuthStateInCookie is set to true.
* @param key
* @param type
* @param inMemory
*/
;
_proto.getItem = function getItem(key, type) {
this.logger.verbose("getItem called for item type: " + type);
this.logger.verbosePii("Item key: " + key); // read inMemoryCache
_proto.getItem = function getItem(key) {
this.logger.verbosePii("Item key: " + key); // read cache
var cache = this.getCache(); // save the cacheItem
switch (type) {
case msalCommon.CacheSchemaType.ACCOUNT:
{
return cache.accounts[key] || null;
}
case msalCommon.CacheSchemaType.CREDENTIAL:
{
var credentialType = msalCommon.CredentialEntity.getCredentialType(key);
var credential = null;
switch (credentialType) {
case msalCommon.CredentialType.ID_TOKEN:
{
this.logger.verbose("Credential type: " + msalCommon.CredentialType.ID_TOKEN);
credential = cache.idTokens[key] || null;
break;
}
case msalCommon.CredentialType.ACCESS_TOKEN:
{
this.logger.verbose("Credential type: " + msalCommon.CredentialType.ACCESS_TOKEN);
credential = cache.accessTokens[key] || null;
break;
}
case msalCommon.CredentialType.REFRESH_TOKEN:
{
this.logger.verbose("Credential type: " + msalCommon.CredentialType.REFRESH_TOKEN);
credential = cache.refreshTokens[key] || null;
break;
}
}
return credential;
}
case msalCommon.CacheSchemaType.APP_METADATA:
{
return cache.appMetadata[key] || null;
}
default:
{
throw msalCommon.ClientAuthError.createInvalidCacheTypeError();
}
}
var cache = this.getCache();
return cache[key];
}

@@ -1023,3 +1001,2 @@ /**

* @param key
* @param type
* @param inMemory

@@ -1029,79 +1006,11 @@ */

_proto.removeItem = function removeItem(key, type) {
this.logger.verbose("removeItem called for item type: " + type);
_proto.removeItem = function removeItem(key) {
this.logger.verbosePii("Item key: " + key); // read inMemoryCache
var result = false;
var cache = this.getCache();
var result = false; // save the cacheItem
switch (type) {
case msalCommon.CacheSchemaType.ACCOUNT:
{
if (!!cache.accounts[key]) {
delete cache.accounts[key];
result = true;
}
break;
}
case msalCommon.CacheSchemaType.CREDENTIAL:
{
var credentialType = msalCommon.CredentialEntity.getCredentialType(key);
switch (credentialType) {
case msalCommon.CredentialType.ID_TOKEN:
{
this.logger.verbose("Credential type: " + msalCommon.CredentialType.ID_TOKEN);
if (!!cache.idTokens[key]) {
delete cache.idTokens[key];
result = true;
}
break;
}
case msalCommon.CredentialType.ACCESS_TOKEN:
{
this.logger.verbose("Credential type: " + msalCommon.CredentialType.ACCESS_TOKEN);
if (!!cache.accessTokens[key]) {
delete cache.accessTokens[key];
result = true;
}
break;
}
case msalCommon.CredentialType.REFRESH_TOKEN:
{
this.logger.verbose("Credential type: " + msalCommon.CredentialType.REFRESH_TOKEN);
if (!!cache.refreshTokens[key]) {
delete cache.refreshTokens[key];
result = true;
}
break;
}
}
break;
}
case msalCommon.CacheSchemaType.APP_METADATA:
{
if (!!cache.appMetadata[key]) {
delete cache.appMetadata[key];
result = true;
}
break;
}
default:
{
throw msalCommon.ClientAuthError.createInvalidCacheTypeError();
}
if (!!cache[key]) {
delete cache[key];
result = true;
} // write to the cache after removal

@@ -1112,3 +1021,2 @@

this.setCache(cache);
this.emitChange();
}

@@ -1121,3 +1029,2 @@

* @param key
* TODO: implement after the lookup implementation
*/

@@ -1127,3 +1034,3 @@ ;

_proto.containsKey = function containsKey(key) {
return key ? true : false;
return this.getKeys().includes(key);
}

@@ -1136,6 +1043,6 @@ /**

_proto.getKeys = function getKeys() {
this.logger.verbose("Retrieving all cache keys"); // read inMemoryCache
this.logger.verbose("Retrieving all cache keys"); // read cache
var cache = this.getCache();
return [].concat(Object.keys(cache.accounts), Object.keys(cache.idTokens), Object.keys(cache.accessTokens), Object.keys(cache.refreshTokens), Object.keys(cache.appMetadata));
return [].concat(Object.keys(cache));
}

@@ -1181,4 +1088,2 @@ /**

var version = "1.0.0-alpha.5";
var defaultSerializedCache = {

@@ -1224,3 +1129,3 @@ Account: {},

this.logger.verbose("Serializing in-memory cache");
var finalState = Serializer.serializeAllCache(this.storage.getCache()); // if cacheSnapshot not null or empty, merge
var finalState = Serializer.serializeAllCache(this.storage.getInMemoryCache()); // if cacheSnapshot not null or empty, merge

@@ -1250,3 +1155,3 @@ if (!msalCommon.StringUtils.isEmpty(this.cacheSnapshot)) {

var deserializedCache = Deserializer.deserializeAllCache(this.overlayDefaults(JSON.parse(this.cacheSnapshot)));
this.storage.setCache(deserializedCache);
this.storage.setInMemoryCache(deserializedCache);
} else {

@@ -1269,4 +1174,6 @@ this.logger.verbose("No cache snapshot to deserialize");

if (_this2.persistence) {
var cache = Serializer.serializeAllCache(_this2.storage.getCache());
_this2.logger.verbose("cachePlugin (persistent cache) not set by the user");
var cache = Serializer.serializeAllCache(_this2.storage.getInMemoryCache());
var getMergedState = function getMergedState(stateFromDisk) {

@@ -1322,3 +1229,3 @@ if (!msalCommon.StringUtils.isEmpty(stateFromDisk)) {

_this4.storage.setCache(deserializedCache);
_this4.storage.setInMemoryCache(deserializedCache);
} else {

@@ -1395,5 +1302,5 @@ _this4.logger.verbose("No cache snapshot to overlay and deserialize");

var newValueNotNull = newValue !== null;
var newValueIsObject = typeof newValue === 'object';
var newValueIsObject = typeof newValue === "object";
var newValueIsNotArray = !Array.isArray(newValue);
var oldStateNotUndefinedOrNull = typeof oldState[newKey] !== 'undefined' && oldState[newKey] !== null;
var oldStateNotUndefinedOrNull = typeof oldState[newKey] !== "undefined" && oldState[newKey] !== null;

@@ -1458,2 +1365,4 @@ if (newValueNotNull && newValueIsObject && newValueIsNotArray && oldStateNotUndefinedOrNull) {

var version = "1.0.0-alpha.6";
var ClientApplication = /*#__PURE__*/function () {

@@ -1494,3 +1403,3 @@ /**

var authorizationCodeClient = new msalCommon.AuthorizationCodeClient(authClientConfig);
return authorizationCodeClient.getAuthCodeUrl(_this2.initializeRequestScopes(request));
return authorizationCodeClient.getAuthCodeUrl(_this2.initializeRequest(request));
});

@@ -1517,8 +1426,17 @@ } catch (e) {

return Promise.resolve(_this4.buildOauthClientConfiguration(request.authority)).then(function (authClientConfig) {
_this4.logger.verbose("Auth client config generated");
var validRequest = _this4.initializeRequest(request);
var authorizationCodeClient = new msalCommon.AuthorizationCodeClient(authClientConfig);
return authorizationCodeClient.acquireToken(_this4.initializeRequestScopes(request));
});
var serverTelemetryManager = _this4.initializeServerTelemetryManager(ApiId.acquireTokenByCode, validRequest.correlationId);
return Promise.resolve(_catch(function () {
return Promise.resolve(_this4.buildOauthClientConfiguration(request.authority, serverTelemetryManager)).then(function (authClientConfig) {
_this4.logger.verbose("Auth client config generated");
var authorizationCodeClient = new msalCommon.AuthorizationCodeClient(authClientConfig);
return authorizationCodeClient.acquireToken(validRequest);
});
}, function (e) {
serverTelemetryManager.cacheFailedRequest(e);
throw e;
}));
} catch (e) {

@@ -1543,8 +1461,17 @@ return Promise.reject(e);

return Promise.resolve(_this6.buildOauthClientConfiguration(request.authority)).then(function (refreshTokenClientConfig) {
_this6.logger.verbose("Auth client config generated");
var validRequest = _this6.initializeRequest(request);
var refreshTokenClient = new msalCommon.RefreshTokenClient(refreshTokenClientConfig);
return refreshTokenClient.acquireToken(_this6.initializeRequestScopes(request));
});
var serverTelemetryManager = _this6.initializeServerTelemetryManager(ApiId.acquireTokenByRefreshToken, validRequest.correlationId);
return Promise.resolve(_catch(function () {
return Promise.resolve(_this6.buildOauthClientConfiguration(request.authority, serverTelemetryManager)).then(function (refreshTokenClientConfig) {
_this6.logger.verbose("Auth client config generated");
var refreshTokenClient = new msalCommon.RefreshTokenClient(refreshTokenClientConfig);
return refreshTokenClient.acquireToken(validRequest);
});
}, function (e) {
serverTelemetryManager.cacheFailedRequest(e);
throw e;
}));
} catch (e) {

@@ -1568,6 +1495,15 @@ return Promise.reject(e);

return Promise.resolve(_this8.buildOauthClientConfiguration(request.authority)).then(function (silentFlowClientConfig) {
var silentFlowClient = new msalCommon.SilentFlowClient(silentFlowClientConfig);
return silentFlowClient.acquireToken(_this8.initializeRequestScopes(request));
});
var validRequest = _this8.initializeRequest(request);
var serverTelemetryManager = _this8.initializeServerTelemetryManager(ApiId.acquireTokenSilent, validRequest.correlationId, validRequest.forceRefresh);
return Promise.resolve(_catch(function () {
return Promise.resolve(_this8.buildOauthClientConfiguration(request.authority, serverTelemetryManager)).then(function (silentFlowClientConfig) {
var silentFlowClient = new msalCommon.SilentFlowClient(silentFlowClientConfig);
return silentFlowClient.acquireToken(validRequest);
});
}, function (e) {
serverTelemetryManager.cacheFailedRequest(e);
throw e;
}));
} catch (e) {

@@ -1587,3 +1523,3 @@ return Promise.reject(e);

_proto.buildOauthClientConfiguration = function buildOauthClientConfiguration(authority) {
_proto.buildOauthClientConfiguration = function buildOauthClientConfiguration(authority, serverTelemetryManager) {
try {

@@ -1612,2 +1548,3 @@ var _this10 = this;

storageInterface: _this10.storage,
serverTelemetryManager: serverTelemetryManager,
clientCredentials: {

@@ -1620,4 +1557,4 @@ clientSecret: _this10.clientSecret,

version: version,
cpu: process.arch || '',
os: process.platform || ''
cpu: process.arch || "",
os: process.platform || ""
}

@@ -1638,3 +1575,3 @@ };

/**
* Generates a request with the default scopes.
* Generates a request with the default scopes & generates a correlationId.
* @param authRequest

@@ -1644,7 +1581,18 @@ */

_proto.initializeRequestScopes = function initializeRequestScopes(authRequest) {
_proto.initializeRequest = function initializeRequest(authRequest) {
this.logger.verbose("initializeRequestScopes called");
return _extends({}, authRequest, {
scopes: [].concat(authRequest && authRequest.scopes || [], [msalCommon.Constants.OPENID_SCOPE, msalCommon.Constants.PROFILE_SCOPE, msalCommon.Constants.OFFLINE_ACCESS_SCOPE])
scopes: [].concat(authRequest && authRequest.scopes || [], [msalCommon.Constants.OPENID_SCOPE, msalCommon.Constants.PROFILE_SCOPE, msalCommon.Constants.OFFLINE_ACCESS_SCOPE]),
correlationId: authRequest && authRequest.correlationId || this.cryptoProvider.createNewGuid()
});
};
_proto.initializeServerTelemetryManager = function initializeServerTelemetryManager(apiId, correlationId, forceRefresh) {
var telemetryPayload = {
clientId: this.config.auth.clientId,
correlationId: correlationId,
apiId: apiId,
forceRefresh: forceRefresh || false
};
return new msalCommon.ServerTelemetryManager(telemetryPayload, this.storage);
}

@@ -1754,8 +1702,17 @@ /**

return Promise.resolve(_this2.buildOauthClientConfiguration(request.authority)).then(function (deviceCodeConfig) {
_this2.logger.verbose("Auth client config generated");
var validRequest = _this2.initializeRequest(request);
var deviceCodeClient = new msalCommon.DeviceCodeClient(deviceCodeConfig);
return deviceCodeClient.acquireToken(_this2.initializeRequestScopes(request));
});
var serverTelemetryManager = _this2.initializeServerTelemetryManager(ApiId.acquireTokenByDeviceCode, validRequest.correlationId);
return Promise.resolve(_catch(function () {
return Promise.resolve(_this2.buildOauthClientConfiguration(request.authority, serverTelemetryManager)).then(function (deviceCodeConfig) {
_this2.logger.verbose("Auth client config generated");
var deviceCodeClient = new msalCommon.DeviceCodeClient(deviceCodeConfig);
return deviceCodeClient.acquireToken(validRequest);
});
}, function (e) {
serverTelemetryManager.cacheFailedRequest(e);
throw e;
}));
} catch (e) {

@@ -1803,4 +1760,7 @@ return Promise.reject(e);

return this.createJwt(cryptoProvider, issuer, jwtAudience);
} // if assertion was created by caller, then we just append it. It is up to the caller to
// ensure that it contains necessary claims and that it is not expired.
}
/*
* if assertion was created by caller, then we just append it. It is up to the caller to
* ensure that it contains necessary claims and that it is not expired.
*/

@@ -1871,3 +1831,3 @@

/**
* Acquires tokens from the authority for the application.
* Acquires tokens from the authority for the application (not for an end user).
*/

@@ -1884,7 +1844,45 @@

return Promise.resolve(_this3.buildOauthClientConfiguration(request.authority)).then(function (clientCredentialConfig) {
_this3.logger.verbose("Auth client config generated");
var validRequest = _this3.initializeRequest(request);
var clientCredentialClient = new msalCommon.ClientCredentialClient(clientCredentialConfig);
return clientCredentialClient.acquireToken(request);
var serverTelemetryManager = _this3.initializeServerTelemetryManager(ApiId.acquireTokenByClientCredential, validRequest.correlationId, validRequest.skipCache);
return Promise.resolve(_catch(function () {
return Promise.resolve(_this3.buildOauthClientConfiguration(request.authority, serverTelemetryManager)).then(function (clientCredentialConfig) {
_this3.logger.verbose("Auth client config generated");
var clientCredentialClient = new msalCommon.ClientCredentialClient(clientCredentialConfig);
return clientCredentialClient.acquireToken(request);
});
}, function (e) {
serverTelemetryManager.cacheFailedRequest(e);
throw e;
}));
} catch (e) {
return Promise.reject(e);
}
}
/**
* Acquires tokens from the authority for the application.
*
* Used in scenarios where the current app is a middle-tier service which was called with a token
* representing an end user. The current app can use the token (oboAssertion) to request another
* token to access downstream web API, on behalf of that user.
*
* The current middle-tier app has no user interaction to obtain consent.
* See how to gain consent upfront for your middle-tier app from this article.
* https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow#gaining-consent-for-the-middle-tier-application
*/
;
_proto.acquireTokenOnBehalfOf = function acquireTokenOnBehalfOf(request) {
try {
var _this5 = this;
_this5.logger.info("acquireTokenOnBehalfOf called");
return Promise.resolve(_this5.buildOauthClientConfiguration(request.authority)).then(function (clientCredentialConfig) {
_this5.logger.verbose("Auth client config generated");
var oboClient = new msalCommon.OnBehalfOfClient(clientCredentialConfig);
return oboClient.acquireToken(_this5.initializeRequest(request));
});

@@ -1891,0 +1889,0 @@ } catch (e) {

@@ -1,2 +0,2 @@

"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t,r=require("@azure/msal-common"),n=e(require("axios")),i=e(require("debug")),o=require("uuid"),a=e(require("crypto")),s=require("jsonwebtoken");function c(){return(c=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function l(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}"undefined"!=typeof Symbol&&(Symbol.iterator||(Symbol.iterator=Symbol("Symbol.iterator"))),"undefined"!=typeof Symbol&&(Symbol.asyncIterator||(Symbol.asyncIterator=Symbol("Symbol.asyncIterator"))),function(e){e.GET="get",e.POST="post"}(t||(t={}));var u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~",h=function(){function e(){n.defaults.validateStatus=function(){return!0}}var r=e.prototype;return r.sendGetRequestAsync=function(e,r){try{return Promise.resolve(n({method:t.GET,url:e,headers:r&&r.headers})).then((function(e){return{headers:e.headers,body:e.data,status:e.status}}))}catch(e){return Promise.reject(e)}},r.sendPostRequestAsync=function(e,r){try{return Promise.resolve(n({method:t.POST,url:e,data:r&&r.body||"",headers:r&&r.headers})).then((function(e){return{headers:e.headers,body:e.data,status:e.status}}))}catch(e){return Promise.reject(e)}},e}(),d={clientId:"",authority:"",clientSecret:"",clientAssertion:"",clientCertificate:{thumbprint:"",privateKey:""},knownAuthorities:[],cloudDiscoveryMetadata:"",clientCapabilities:[]},g={},f={loggerOptions:{loggerCallback:function(e,t,n){i("msal:"+r.LogLevel[e]+(n?"-Pii":""))(t)},piiLoggingEnabled:!1,logLevel:r.LogLevel.Info},networkClient:function(){function e(){}return e.getNetworkClient=function(){return new h},e}().getNetworkClient()};function p(e){var t=e.cache,r=e.system;return{auth:c({},d,{},e.auth),cache:c({},g,{},t),system:c({},f,{},r)}}var y=function(){function e(){}return e.generateGuid=function(){return o.v4()},e.isGuid=function(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e)},e}(),m=function(){function e(){}return e.base64Encode=function(e,t){return Buffer.from(e,t).toString("base64")},e.base64EncodeUrl=function(t,r){return e.base64Encode(t,r).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")},e.base64Decode=function(e){return Buffer.from(e,"base64").toString("utf8")},e.base64DecodeUrl=function(t){for(var r=t.replace(/-/g,"+").replace(/_/g,"/");r.length%4;)r+="=";return e.base64Decode(r)},e}(),v=function(){function e(){}var t=e.prototype;return t.generatePkceCodes=function(){try{var e=this.generateCodeVerifier(),t=this.generateCodeChallengeFromVerifier(e);return Promise.resolve({verifier:e,challenge:t})}catch(e){return Promise.reject(e)}},t.generateCodeVerifier=function(){var e=a.randomBytes(32),t=this.bufferToCVString(e);return m.base64EncodeUrl(t)},t.generateCodeChallengeFromVerifier=function(e){return m.base64EncodeUrl(this.sha256(e).toString("ascii"))},t.sha256=function(e){return a.createHash("sha256").update(e).digest()},t.bufferToCVString=function(e){for(var t=[],r=0;r<e.byteLength;r+=1)t.push(u[e[r]%u.length]);return t.join("")},e}(),C=function(){function e(){this.pkceGenerator=new v}var t=e.prototype;return t.createNewGuid=function(){return y.generateGuid()},t.base64Encode=function(e){return m.base64Encode(e)},t.base64Decode=function(e){return m.base64Decode(e)},t.generatePkceCodes=function(){return this.pkceGenerator.generatePkceCodes()},e}(),T=function(){function e(){}return e.deserializeJSONBlob=function(e){return r.StringUtils.isEmpty(e)?{}:JSON.parse(e)},e.deserializeAccounts=function(e){var t={};return e&&Object.keys(e).map((function(n){var i=e[n],o={homeAccountId:i.home_account_id,environment:i.environment,realm:i.realm,localAccountId:i.local_account_id,username:i.username,authorityType:i.authority_type,name:i.name,clientInfo:i.client_info,lastModificationTime:i.last_modification_time,lastModificationApp:i.last_modification_app},a=new r.AccountEntity;r.CacheManager.toObject(a,o),t[n]=a})),t},e.deserializeIdTokens=function(e){var t={};return e&&Object.keys(e).map((function(n){var i=e[n],o={homeAccountId:i.home_account_id,environment:i.environment,credentialType:i.credential_type,clientId:i.client_id,secret:i.secret,realm:i.realm},a=new r.IdTokenEntity;r.CacheManager.toObject(a,o),t[n]=a})),t},e.deserializeAccessTokens=function(e){var t={};return e&&Object.keys(e).map((function(n){var i=e[n],o={homeAccountId:i.home_account_id,environment:i.environment,credentialType:i.credential_type,clientId:i.client_id,secret:i.secret,realm:i.realm,target:i.target,cachedAt:i.cached_at,expiresOn:i.expires_on,extendedExpiresOn:i.extended_expires_on,refreshOn:i.refresh_on,keyId:i.key_id,tokenType:i.token_type},a=new r.AccessTokenEntity;r.CacheManager.toObject(a,o),t[n]=a})),t},e.deserializeRefreshTokens=function(e){var t={};return e&&Object.keys(e).map((function(n){var i=e[n],o={homeAccountId:i.home_account_id,environment:i.environment,credentialType:i.credential_type,clientId:i.client_id,secret:i.secret,familyId:i.family_id,target:i.target,realm:i.realm},a=new r.RefreshTokenEntity;r.CacheManager.toObject(a,o),t[n]=a})),t},e.deserializeAppMetadata=function(e){var t={};return e&&Object.keys(e).map((function(n){var i=e[n],o={clientId:i.client_id,environment:i.environment,familyId:i.family_id},a=new r.AppMetadataEntity;r.CacheManager.toObject(a,o),t[n]=a})),t},e.deserializeAllCache=function(e){return{accounts:e.Account?this.deserializeAccounts(e.Account):{},idTokens:e.IdToken?this.deserializeIdTokens(e.IdToken):{},accessTokens:e.AccessToken?this.deserializeAccessTokens(e.AccessToken):{},refreshTokens:e.RefreshToken?this.deserializeRefreshTokens(e.RefreshToken):{},appMetadata:e.AppMetadata?this.deserializeAppMetadata(e.AppMetadata):{}}},e}(),b=function(){function e(){}return e.serializeJSONBlob=function(e){return JSON.stringify(e)},e.serializeAccounts=function(e){var t={};return Object.keys(e).map((function(r){var n=e[r];t[r]={home_account_id:n.homeAccountId,environment:n.environment,realm:n.realm,local_account_id:n.localAccountId,username:n.username,authority_type:n.authorityType,name:n.name,client_info:n.clientInfo,last_modification_time:n.lastModificationTime,last_modification_app:n.lastModificationApp}})),t},e.serializeIdTokens=function(e){var t={};return Object.keys(e).map((function(r){var n=e[r];t[r]={home_account_id:n.homeAccountId,environment:n.environment,credential_type:n.credentialType,client_id:n.clientId,secret:n.secret,realm:n.realm}})),t},e.serializeAccessTokens=function(e){var t={};return Object.keys(e).map((function(r){var n=e[r];t[r]={home_account_id:n.homeAccountId,environment:n.environment,credential_type:n.credentialType,client_id:n.clientId,secret:n.secret,realm:n.realm,target:n.target,cached_at:n.cachedAt,expires_on:n.expiresOn,extended_expires_on:n.extendedExpiresOn,refresh_on:n.refreshOn,key_id:n.keyId,token_type:n.tokenType}})),t},e.serializeRefreshTokens=function(e){var t={};return Object.keys(e).map((function(r){var n=e[r];t[r]={home_account_id:n.homeAccountId,environment:n.environment,credential_type:n.credentialType,client_id:n.clientId,secret:n.secret,family_id:n.familyId,target:n.target,realm:n.realm}})),t},e.serializeAppMetadata=function(e){var t={};return Object.keys(e).map((function(r){var n=e[r];t[r]={client_id:n.clientId,environment:n.environment,family_id:n.familyId}})),t},e.serializeAllCache=function(e){return{Account:this.serializeAccounts(e.accounts),IdToken:this.serializeIdTokens(e.idTokens),AccessToken:this.serializeAccessTokens(e.accessTokens),RefreshToken:this.serializeRefreshTokens(e.refreshTokens),AppMetadata:this.serializeAppMetadata(e.appMetadata)}},e}(),A=function(e){function t(t){var r;return(r=e.call(this)||this).inMemoryCache={accounts:{},accessTokens:{},refreshTokens:{},appMetadata:{},idTokens:{}},r.changeEmitters=[],r.logger=t,r}l(t,e);var n=t.prototype;return n.registerChangeEmitter=function(e){this.changeEmitters.push(e)},n.emitChange=function(){this.changeEmitters.forEach((function(e){return e.call(null)}))},n.getCache=function(){return this.logger.verbose("Getting in-memory cache"),this.inMemoryCache},n.setCache=function(e){this.logger.verbose("Setting in-memory cache"),this.inMemoryCache=e,this.emitChange()},n.setItem=function(e,t,n){this.logger.verbose("setItem called for item type: "+n),this.logger.verbosePii("Item key: "+e);var i=this.getCache();switch(n){case r.CacheSchemaType.ACCOUNT:i.accounts[e]=t;break;case r.CacheSchemaType.CREDENTIAL:switch(r.CredentialEntity.getCredentialType(e)){case r.CredentialType.ID_TOKEN:this.logger.verbose("Credential type: "+r.CredentialType.ID_TOKEN),i.idTokens[e]=t;break;case r.CredentialType.ACCESS_TOKEN:this.logger.verbose("Credential type: "+r.CredentialType.ACCESS_TOKEN),i.accessTokens[e]=t;break;case r.CredentialType.REFRESH_TOKEN:this.logger.verbose("Credential type: "+r.CredentialType.REFRESH_TOKEN),i.refreshTokens[e]=t}break;case r.CacheSchemaType.APP_METADATA:i.appMetadata[e]=t;break;default:throw r.ClientAuthError.createInvalidCacheTypeError()}this.setCache(i),this.emitChange()},n.getItem=function(e,t){this.logger.verbose("getItem called for item type: "+t),this.logger.verbosePii("Item key: "+e);var n=this.getCache();switch(t){case r.CacheSchemaType.ACCOUNT:return n.accounts[e]||null;case r.CacheSchemaType.CREDENTIAL:var i=null;switch(r.CredentialEntity.getCredentialType(e)){case r.CredentialType.ID_TOKEN:this.logger.verbose("Credential type: "+r.CredentialType.ID_TOKEN),i=n.idTokens[e]||null;break;case r.CredentialType.ACCESS_TOKEN:this.logger.verbose("Credential type: "+r.CredentialType.ACCESS_TOKEN),i=n.accessTokens[e]||null;break;case r.CredentialType.REFRESH_TOKEN:this.logger.verbose("Credential type: "+r.CredentialType.REFRESH_TOKEN),i=n.refreshTokens[e]||null}return i;case r.CacheSchemaType.APP_METADATA:return n.appMetadata[e]||null;default:throw r.ClientAuthError.createInvalidCacheTypeError()}},n.removeItem=function(e,t){this.logger.verbose("removeItem called for item type: "+t),this.logger.verbosePii("Item key: "+e);var n=this.getCache(),i=!1;switch(t){case r.CacheSchemaType.ACCOUNT:n.accounts[e]&&(delete n.accounts[e],i=!0);break;case r.CacheSchemaType.CREDENTIAL:switch(r.CredentialEntity.getCredentialType(e)){case r.CredentialType.ID_TOKEN:this.logger.verbose("Credential type: "+r.CredentialType.ID_TOKEN),n.idTokens[e]&&(delete n.idTokens[e],i=!0);break;case r.CredentialType.ACCESS_TOKEN:this.logger.verbose("Credential type: "+r.CredentialType.ACCESS_TOKEN),n.accessTokens[e]&&(delete n.accessTokens[e],i=!0);break;case r.CredentialType.REFRESH_TOKEN:this.logger.verbose("Credential type: "+r.CredentialType.REFRESH_TOKEN),n.refreshTokens[e]&&(delete n.refreshTokens[e],i=!0)}break;case r.CacheSchemaType.APP_METADATA:n.appMetadata[e]&&(delete n.appMetadata[e],i=!0);break;default:throw r.ClientAuthError.createInvalidCacheTypeError()}return i&&(this.setCache(n),this.emitChange()),i},n.containsKey=function(e){return!!e},n.getKeys=function(){this.logger.verbose("Retrieving all cache keys");var e=this.getCache();return[].concat(Object.keys(e.accounts),Object.keys(e.idTokens),Object.keys(e.accessTokens),Object.keys(e.refreshTokens),Object.keys(e.appMetadata))},n.clear=function(){var e=this;this.logger.verbose("Clearing cache entries created by MSAL"),this.getKeys().forEach((function(t){e.removeItem(t)})),this.emitChange()},t.generateInMemoryCache=function(e){return T.deserializeAllCache(T.deserializeJSONBlob(e))},t.generateJsonCache=function(e){return b.serializeAllCache(e)},t}(r.CacheManager),k={},E={},S={},_={},O={},I=function(){function e(e,t,r){this.hasChanged=!1,this.storage=e,this.storage.registerChangeEmitter(this.handleChangeEvent.bind(this)),r&&(this.persistence=r),this.logger=t}var t=e.prototype;return t.cacheHasChanged=function(){return this.hasChanged},t.serialize=function(){this.logger.verbose("Serializing in-memory cache");var e=b.serializeAllCache(this.storage.getCache());return r.StringUtils.isEmpty(this.cacheSnapshot)?this.logger.verbose("No cache snapshot to merge"):(this.logger.verbose("Reading cache snapshot from disk"),e=this.mergeState(JSON.parse(this.cacheSnapshot),e)),this.hasChanged=!1,JSON.stringify(e)},t.deserialize=function(e){if(this.logger.verbose("Deserializing JSON to in-memory cache"),this.cacheSnapshot=e,r.StringUtils.isEmpty(this.cacheSnapshot))this.logger.verbose("No cache snapshot to deserialize");else{this.logger.verbose("Reading cache snapshot from disk");var t=T.deserializeAllCache(this.overlayDefaults(JSON.parse(this.cacheSnapshot)));this.storage.setCache(t)}},t.writeToPersistence=function(){try{var e=this;return e.logger.verbose("Writing to persistent cache"),Promise.resolve(function(){if(e.persistence){var t=b.serializeAllCache(e.storage.getCache());return Promise.resolve(e.persistence.writeToStorage((function(n){return r.StringUtils.isEmpty(n)?e.logger.verbose("No state from disk"):(e.logger.verbose("Reading state from disk"),e.cacheSnapshot=n,t=e.mergeState(JSON.parse(n),t)),JSON.stringify(t)}))).then((function(){e.hasChanged=!1}))}throw r.ClientAuthError.createCachePluginError()}())}catch(e){return Promise.reject(e)}},t.readFromPersistence=function(){try{var e=this;return e.logger.verbose("Reading from persistent cache"),Promise.resolve(function(){if(e.persistence)return Promise.resolve(e.persistence.readFromStorage()).then((function(t){if(e.cacheSnapshot=t,r.StringUtils.isEmpty(e.cacheSnapshot))e.logger.verbose("No cache snapshot to overlay and deserialize");else{e.logger.verbose("Reading cache snapshot from disk");var n=e.overlayDefaults(JSON.parse(e.cacheSnapshot));e.logger.verbose("Deserializing JSON");var i=T.deserializeAllCache(n);e.storage.setCache(i)}}));throw r.ClientAuthError.createCachePluginError()}())}catch(e){return Promise.reject(e)}},t.getAllAccounts=function(){return this.logger.verbose("getAllAccounts called"),this.storage.getAllAccounts()},t.removeAccount=function(e){this.logger.verbose("removeAccount called"),this.storage.removeAccount(r.AccountEntity.generateAccountCacheKey(e))},t.handleChangeEvent=function(){this.hasChanged=!0},t.mergeState=function(e,t){this.logger.verbose("Merging in-memory cache with cache snapshot");var r=this.mergeRemovals(e,t);return this.mergeUpdates(r,t)},t.mergeUpdates=function(e,t){var r=this;return Object.keys(t).forEach((function(n){var i=t[n];if(e.hasOwnProperty(n)){var o=null!==i,a="object"==typeof i,s=!Array.isArray(i);o&&a&&s&&null!=e[n]?r.mergeUpdates(e[n],i):e[n]=i}else null!==i&&(e[n]=i)})),e},t.mergeRemovals=function(e,t){return this.logger.verbose("Remove updated entries in cache"),c({Account:null!=e.Account?this.mergeRemovalsDict(e.Account,t.Account):e.Account,AccessToken:null!=e.AccessToken?this.mergeRemovalsDict(e.AccessToken,t.AccessToken):e.AccessToken,RefreshToken:null!=e.RefreshToken?this.mergeRemovalsDict(e.RefreshToken,t.RefreshToken):e.RefreshToken,IdToken:null!=e.IdToken?this.mergeRemovalsDict(e.IdToken,t.IdToken):e.IdToken,AppMetadata:null!=e.AppMetadata?this.mergeRemovalsDict(e.AppMetadata,t.AppMetadata):e.AppMetadata},e)},t.mergeRemovalsDict=function(e,t){var r=c({},e);return Object.keys(e).forEach((function(e){t&&t.hasOwnProperty(e)||delete r[e]})),r},t.overlayDefaults=function(e){return this.logger.verbose("Overlaying input cache with the default cache"),{Account:c({},k,{},e.Account),IdToken:c({},E,{},e.IdToken),AccessToken:c({},S,{},e.AccessToken),RefreshToken:c({},_,{},e.RefreshToken),AppMetadata:c({},O,{},e.AppMetadata)}},e}(),w=function(){function e(e){this.config=p(e),this.logger=new r.Logger(this.config.system.loggerOptions),this.storage=new A(this.logger),this.tokenCache=new I(this.storage,this.logger,this.config.cache.cachePlugin),this.cryptoProvider=new C,r.TrustedAuthority.setTrustedAuthoritiesFromConfig(this.config.auth.knownAuthorities,this.config.auth.cloudDiscoveryMetadata)}var t,n=e.prototype;return n.getAuthCodeUrl=function(e){try{var t=this;return t.logger.info("getAuthCodeUrl called"),Promise.resolve(t.buildOauthClientConfiguration(e.authority)).then((function(n){return t.logger.verbose("Auth client config generated"),new r.AuthorizationCodeClient(n).getAuthCodeUrl(t.initializeRequestScopes(e))}))}catch(e){return Promise.reject(e)}},n.acquireTokenByCode=function(e){try{var t=this;return t.logger.info("acquireTokenByCode called"),Promise.resolve(t.buildOauthClientConfiguration(e.authority)).then((function(n){return t.logger.verbose("Auth client config generated"),new r.AuthorizationCodeClient(n).acquireToken(t.initializeRequestScopes(e))}))}catch(e){return Promise.reject(e)}},n.acquireTokenByRefreshToken=function(e){try{var t=this;return t.logger.info("acquireTokenByRefreshToken called"),Promise.resolve(t.buildOauthClientConfiguration(e.authority)).then((function(n){return t.logger.verbose("Auth client config generated"),new r.RefreshTokenClient(n).acquireToken(t.initializeRequestScopes(e))}))}catch(e){return Promise.reject(e)}},n.acquireTokenSilent=function(e){try{var t=this;return Promise.resolve(t.buildOauthClientConfiguration(e.authority)).then((function(n){return new r.SilentFlowClient(n).acquireToken(t.initializeRequestScopes(e))}))}catch(e){return Promise.reject(e)}},n.getTokenCache=function(){return this.logger.info("getTokenCache called"),this.tokenCache},n.buildOauthClientConfiguration=function(e){try{var t=this;t.logger.verbose("buildOauthClientConfiguration called");var r=t.config.auth.clientId;return Promise.resolve(t.createAuthority(e)).then((function(e){return{authOptions:{clientId:r,authority:e,knownAuthorities:t.config.auth.knownAuthorities,cloudDiscoveryMetadata:t.config.auth.cloudDiscoveryMetadata,clientCapabilities:t.config.auth.clientCapabilities},loggerOptions:{loggerCallback:t.config.system.loggerOptions.loggerCallback,piiLoggingEnabled:t.config.system.loggerOptions.piiLoggingEnabled},cryptoInterface:t.cryptoProvider,networkInterface:t.config.system.networkClient,storageInterface:t.storage,clientCredentials:{clientSecret:t.clientSecret,clientAssertion:t.clientAssertion?t.getClientAssertion():void 0},libraryInfo:{sku:"msal.js.node",version:"1.0.0-alpha.5",cpu:process.arch||"",os:process.platform||""}}}))}catch(e){return Promise.reject(e)}},n.getClientAssertion=function(){return{assertion:this.clientAssertion.getJwt(this.cryptoProvider,this.config.auth.clientId,this._authority.tokenEndpoint),assertionType:"urn:ietf:params:oauth:client-assertion-type:jwt-bearer"}},n.initializeRequestScopes=function(e){return this.logger.verbose("initializeRequestScopes called"),c({},e,{scopes:[].concat(e&&e.scopes||[],[r.Constants.OPENID_SCOPE,r.Constants.PROFILE_SCOPE,r.Constants.OFFLINE_ACCESS_SCOPE])})},n.createAuthority=function(e){try{var t;return this.logger.verbose("createAuthority called"),e?(this.logger.verbose("Authority passed in, creating authority instance"),t=r.AuthorityFactory.createInstance(e,this.config.system.networkClient)):(this.logger.verbose("No authority passed in request, defaulting to authority set on application object"),t=this.authority),t.discoveryComplete()?Promise.resolve(t):Promise.resolve(function(e,r){try{var n=Promise.resolve(t.resolveEndpointsAsync()).then((function(){return t}))}catch(e){return r(e)}return n&&n.then?n.then(void 0,r):n}(0,(function(e){throw r.ClientAuthError.createEndpointDiscoveryIncompleteError(e)})))}catch(e){return Promise.reject(e)}},(t=[{key:"authority",get:function(){return this._authority||(this._authority=r.AuthorityFactory.createInstance(this.config.auth.authority||r.Constants.DEFAULT_AUTHORITY,this.config.system.networkClient)),this._authority}}])&&function(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}(e.prototype,t),e}(),P=function(e){function t(t){return e.call(this,t)||this}return l(t,e),t.prototype.acquireTokenByDeviceCode=function(e){try{var t=this;return t.logger.info("acquireTokenByDeviceCode called"),Promise.resolve(t.buildOauthClientConfiguration(e.authority)).then((function(n){return t.logger.verbose("Auth client config generated"),new r.DeviceCodeClient(n).acquireToken(t.initializeRequestScopes(e))}))}catch(e){return Promise.reject(e)}},t}(w),j=function(){function e(){}e.fromAssertion=function(t){var r=new e;return r.jwt=t,r},e.fromCertificate=function(t,r){var n=new e;return n.privateKey=r,n.thumbprint=t,n};var t=e.prototype;return t.getJwt=function(e,t,n){if(null!=this.privateKey&&null!=this.thumbprint)return null==this.jwt||this.isExpired()||t!=this.issuer||n!=this.jwtAudience?this.createJwt(e,t,n):this.jwt;if(null!=this.jwt)return this.jwt;throw r.ClientAuthError.createInvalidAssertionError()},t.createJwt=function(e,t,n){var i,o;this.issuer=t,this.jwtAudience=n;var a=r.TimeUtils.nowSeconds();this.expirationTime=a+600;var c=((i={}).alg="RS256",i.x5t=m.base64EncodeUrl(this.thumbprint,"hex"),i),l=((o={}).aud=this.jwtAudience,o.exp=this.expirationTime,o.iss=this.issuer,o.sub=this.issuer,o.nbf=a,o.jti=e.createNewGuid(),o);return this.jwt=s.sign(l,this.privateKey,{header:c}),this.jwt},t.isExpired=function(){return this.expirationTime<r.TimeUtils.nowSeconds()},e}(),R=function(e){function t(t){var r;return(r=e.call(this,t)||this).setClientCredential(r.config),r}l(t,e);var n=t.prototype;return n.acquireTokenByClientCredential=function(e){try{var t=this;return t.logger.info("acquireTokenByClientCredential called"),Promise.resolve(t.buildOauthClientConfiguration(e.authority)).then((function(n){return t.logger.verbose("Auth client config generated"),new r.ClientCredentialClient(n).acquireToken(e)}))}catch(e){return Promise.reject(e)}},n.setClientCredential=function(e){var t=!r.StringUtils.isEmpty(e.auth.clientSecret),n=!r.StringUtils.isEmpty(e.auth.clientAssertion),i=e.auth.clientCertificate,o=!r.StringUtils.isEmpty(i.thumbprint)||!r.StringUtils.isEmpty(i.privateKey);if(t&&n||n&&o||t&&o)throw r.ClientAuthError.createInvalidCredentialError();if(t)this.clientSecret=e.auth.clientSecret;else if(n)this.clientAssertion=j.fromAssertion(e.auth.clientAssertion);else{if(!o)throw r.ClientAuthError.createInvalidCredentialError();this.clientAssertion=j.fromCertificate(i.thumbprint,i.privateKey)}},t}(w);Object.defineProperty(exports,"AuthError",{enumerable:!0,get:function(){return r.AuthError}}),Object.defineProperty(exports,"AuthErrorMessage",{enumerable:!0,get:function(){return r.AuthErrorMessage}}),Object.defineProperty(exports,"LogLevel",{enumerable:!0,get:function(){return r.LogLevel}}),Object.defineProperty(exports,"PromptValue",{enumerable:!0,get:function(){return r.PromptValue}}),Object.defineProperty(exports,"ResponseMode",{enumerable:!0,get:function(){return r.ResponseMode}}),exports.ConfidentialClientApplication=R,exports.CryptoProvider=C,exports.PublicClientApplication=P,exports.Storage=A,exports.TokenCache=I,exports.buildAppConfiguration=p;
"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t,r=require("@azure/msal-common"),n=e(require("axios")),i=e(require("debug")),o=require("uuid"),a=e(require("crypto")),c=require("jsonwebtoken");function s(){return(s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function u(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function l(e,t){try{var r=e()}catch(e){return t(e)}return r&&r.then?r.then(void 0,t):r}"undefined"!=typeof Symbol&&(Symbol.iterator||(Symbol.iterator=Symbol("Symbol.iterator"))),"undefined"!=typeof Symbol&&(Symbol.asyncIterator||(Symbol.asyncIterator=Symbol("Symbol.asyncIterator"))),function(e){e.GET="get",e.POST="post"}(t||(t={}));var h,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~";!function(e){e[e.acquireTokenSilent=62]="acquireTokenSilent",e[e.acquireTokenByCode=871]="acquireTokenByCode",e[e.acquireTokenByRefreshToken=872]="acquireTokenByRefreshToken",e[e.acquireTokenByDeviceCode=671]="acquireTokenByDeviceCode",e[e.acquireTokenByClientCredential=771]="acquireTokenByClientCredential"}(h||(h={}));var d=function(){function e(){n.defaults.validateStatus=function(){return!0}}var r=e.prototype;return r.sendGetRequestAsync=function(e,r){try{return Promise.resolve(n({method:t.GET,url:e,headers:r&&r.headers})).then((function(e){return{headers:e.headers,body:e.data,status:e.status}}))}catch(e){return Promise.reject(e)}},r.sendPostRequestAsync=function(e,r){try{return Promise.resolve(n({method:t.POST,url:e,data:r&&r.body||"",headers:r&&r.headers})).then((function(e){return{headers:e.headers,body:e.data,status:e.status}}))}catch(e){return Promise.reject(e)}},e}(),g={clientId:"",authority:"",clientSecret:"",clientAssertion:"",clientCertificate:{thumbprint:"",privateKey:""},knownAuthorities:[],cloudDiscoveryMetadata:"",clientCapabilities:[]},m={},p={loggerOptions:{loggerCallback:function(e,t,n){i("msal:"+r.LogLevel[e]+(n?"-Pii":""))(t)},piiLoggingEnabled:!1,logLevel:r.LogLevel.Info},networkClient:function(){function e(){}return e.getNetworkClient=function(){return new d},e}().getNetworkClient()};function y(e){var t=e.cache,r=e.system;return{auth:s({},g,{},e.auth),cache:s({},m,{},t),system:s({},p,{},r)}}var v=function(){function e(){}return e.generateGuid=function(){return o.v4()},e.isGuid=function(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e)},e}(),C=function(){function e(){}return e.base64Encode=function(e,t){return Buffer.from(e,t).toString("base64")},e.base64EncodeUrl=function(t,r){return e.base64Encode(t,r).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")},e.base64Decode=function(e){return Buffer.from(e,"base64").toString("utf8")},e.base64DecodeUrl=function(t){for(var r=t.replace(/-/g,"+").replace(/_/g,"/");r.length%4;)r+="=";return e.base64Decode(r)},e}(),k=function(){function e(){}var t=e.prototype;return t.generatePkceCodes=function(){try{var e=this.generateCodeVerifier(),t=this.generateCodeChallengeFromVerifier(e);return Promise.resolve({verifier:e,challenge:t})}catch(e){return Promise.reject(e)}},t.generateCodeVerifier=function(){var e=a.randomBytes(32),t=this.bufferToCVString(e);return C.base64EncodeUrl(t)},t.generateCodeChallengeFromVerifier=function(e){return C.base64EncodeUrl(this.sha256(e).toString("ascii"))},t.sha256=function(e){return a.createHash("sha256").update(e).digest()},t.bufferToCVString=function(e){for(var t=[],r=0;r<e.byteLength;r+=1)t.push(f[e[r]%f.length]);return t.join("")},e}(),b=function(){function e(){this.pkceGenerator=new k}var t=e.prototype;return t.createNewGuid=function(){return v.generateGuid()},t.base64Encode=function(e){return C.base64Encode(e)},t.base64Decode=function(e){return C.base64Decode(e)},t.generatePkceCodes=function(){return this.pkceGenerator.generatePkceCodes()},e}(),T=function(){function e(){}return e.deserializeJSONBlob=function(e){return r.StringUtils.isEmpty(e)?{}:JSON.parse(e)},e.deserializeAccounts=function(e){var t={};return e&&Object.keys(e).map((function(n){var i=e[n],o={homeAccountId:i.home_account_id,environment:i.environment,realm:i.realm,localAccountId:i.local_account_id,username:i.username,authorityType:i.authority_type,name:i.name,clientInfo:i.client_info,lastModificationTime:i.last_modification_time,lastModificationApp:i.last_modification_app},a=new r.AccountEntity;r.CacheManager.toObject(a,o),t[n]=a})),t},e.deserializeIdTokens=function(e){var t={};return e&&Object.keys(e).map((function(n){var i=e[n],o={homeAccountId:i.home_account_id,environment:i.environment,credentialType:i.credential_type,clientId:i.client_id,secret:i.secret,realm:i.realm},a=new r.IdTokenEntity;r.CacheManager.toObject(a,o),t[n]=a})),t},e.deserializeAccessTokens=function(e){var t={};return e&&Object.keys(e).map((function(n){var i=e[n],o={homeAccountId:i.home_account_id,environment:i.environment,credentialType:i.credential_type,clientId:i.client_id,secret:i.secret,realm:i.realm,target:i.target,cachedAt:i.cached_at,expiresOn:i.expires_on,extendedExpiresOn:i.extended_expires_on,refreshOn:i.refresh_on,keyId:i.key_id,tokenType:i.token_type},a=new r.AccessTokenEntity;r.CacheManager.toObject(a,o),t[n]=a})),t},e.deserializeRefreshTokens=function(e){var t={};return e&&Object.keys(e).map((function(n){var i=e[n],o={homeAccountId:i.home_account_id,environment:i.environment,credentialType:i.credential_type,clientId:i.client_id,secret:i.secret,familyId:i.family_id,target:i.target,realm:i.realm},a=new r.RefreshTokenEntity;r.CacheManager.toObject(a,o),t[n]=a})),t},e.deserializeAppMetadata=function(e){var t={};return e&&Object.keys(e).map((function(n){var i=e[n],o={clientId:i.client_id,environment:i.environment,familyId:i.family_id},a=new r.AppMetadataEntity;r.CacheManager.toObject(a,o),t[n]=a})),t},e.deserializeAllCache=function(e){return{accounts:e.Account?this.deserializeAccounts(e.Account):{},idTokens:e.IdToken?this.deserializeIdTokens(e.IdToken):{},accessTokens:e.AccessToken?this.deserializeAccessTokens(e.AccessToken):{},refreshTokens:e.RefreshToken?this.deserializeRefreshTokens(e.RefreshToken):{},appMetadata:e.AppMetadata?this.deserializeAppMetadata(e.AppMetadata):{}}},e}(),A=function(){function e(){}return e.serializeJSONBlob=function(e){return JSON.stringify(e)},e.serializeAccounts=function(e){var t={};return Object.keys(e).map((function(r){var n=e[r];t[r]={home_account_id:n.homeAccountId,environment:n.environment,realm:n.realm,local_account_id:n.localAccountId,username:n.username,authority_type:n.authorityType,name:n.name,client_info:n.clientInfo,last_modification_time:n.lastModificationTime,last_modification_app:n.lastModificationApp}})),t},e.serializeIdTokens=function(e){var t={};return Object.keys(e).map((function(r){var n=e[r];t[r]={home_account_id:n.homeAccountId,environment:n.environment,credential_type:n.credentialType,client_id:n.clientId,secret:n.secret,realm:n.realm}})),t},e.serializeAccessTokens=function(e){var t={};return Object.keys(e).map((function(r){var n=e[r];t[r]={home_account_id:n.homeAccountId,environment:n.environment,credential_type:n.credentialType,client_id:n.clientId,secret:n.secret,realm:n.realm,target:n.target,cached_at:n.cachedAt,expires_on:n.expiresOn,extended_expires_on:n.extendedExpiresOn,refresh_on:n.refreshOn,key_id:n.keyId,token_type:n.tokenType}})),t},e.serializeRefreshTokens=function(e){var t={};return Object.keys(e).map((function(r){var n=e[r];t[r]={home_account_id:n.homeAccountId,environment:n.environment,credential_type:n.credentialType,client_id:n.clientId,secret:n.secret,family_id:n.familyId,target:n.target,realm:n.realm}})),t},e.serializeAppMetadata=function(e){var t={};return Object.keys(e).map((function(r){var n=e[r];t[r]={client_id:n.clientId,environment:n.environment,family_id:n.familyId}})),t},e.serializeAllCache=function(e){return{Account:this.serializeAccounts(e.accounts),IdToken:this.serializeIdTokens(e.idTokens),AccessToken:this.serializeAccessTokens(e.accessTokens),RefreshToken:this.serializeRefreshTokens(e.refreshTokens),AppMetadata:this.serializeAppMetadata(e.appMetadata)}},e}(),I=function(e){function t(t){var r;return(r=e.call(this)||this).cache={},r.changeEmitters=[],r.logger=t,r}u(t,e);var n=t.prototype;return n.registerChangeEmitter=function(e){this.changeEmitters.push(e)},n.emitChange=function(){this.changeEmitters.forEach((function(e){return e.call(null)}))},n.cacheToInMemoryCache=function(e){var t={accounts:{},idTokens:{},accessTokens:{},refreshTokens:{},appMetadata:{}};for(var n in e)if(e[n]instanceof r.AccountEntity)t.accounts[n]=e[n];else if(e[n]instanceof r.IdTokenEntity)t.idTokens[n]=e[n];else if(e[n]instanceof r.AccessTokenEntity)t.accessTokens[n]=e[n];else if(e[n]instanceof r.RefreshTokenEntity)t.refreshTokens[n]=e[n];else{if(!(e[n]instanceof r.AppMetadataEntity))continue;t.appMetadata[n]=e[n]}return t},n.inMemoryCacheToCache=function(e){return this.getCache(),s({},e.accounts,{},e.idTokens,{},e.accessTokens,{},e.refreshTokens,{},e.appMetadata)},n.getInMemoryCache=function(){return this.logger.verbose("Getting in-memory cache"),this.cacheToInMemoryCache(this.getCache())},n.setInMemoryCache=function(e){this.logger.verbose("Setting in-memory cache");var t=this.inMemoryCacheToCache(e);this.setCache(t),this.emitChange()},n.getCache=function(){return this.logger.verbose("Getting cache key-value store"),this.cache},n.setCache=function(e){this.logger.verbose("Setting cache key value store"),this.cache=e,this.emitChange()},n.setItem=function(e,t){this.logger.verbosePii("Item key: "+e);var r=this.getCache();r[e]=t,this.setCache(r)},n.getItem=function(e){return this.logger.verbosePii("Item key: "+e),this.getCache()[e]},n.removeItem=function(e){this.logger.verbosePii("Item key: "+e);var t=!1,r=this.getCache();return r[e]&&(delete r[e],t=!0),t&&this.setCache(r),t},n.containsKey=function(e){return this.getKeys().includes(e)},n.getKeys=function(){this.logger.verbose("Retrieving all cache keys");var e=this.getCache();return[].concat(Object.keys(e))},n.clear=function(){var e=this;this.logger.verbose("Clearing cache entries created by MSAL"),this.getKeys().forEach((function(t){e.removeItem(t)})),this.emitChange()},t.generateInMemoryCache=function(e){return T.deserializeAllCache(T.deserializeJSONBlob(e))},t.generateJsonCache=function(e){return A.serializeAllCache(e)},t}(r.CacheManager),S={},O={},_={},P={},E={},w=function(){function e(e,t,r){this.hasChanged=!1,this.storage=e,this.storage.registerChangeEmitter(this.handleChangeEvent.bind(this)),r&&(this.persistence=r),this.logger=t}var t=e.prototype;return t.cacheHasChanged=function(){return this.hasChanged},t.serialize=function(){this.logger.verbose("Serializing in-memory cache");var e=A.serializeAllCache(this.storage.getInMemoryCache());return r.StringUtils.isEmpty(this.cacheSnapshot)?this.logger.verbose("No cache snapshot to merge"):(this.logger.verbose("Reading cache snapshot from disk"),e=this.mergeState(JSON.parse(this.cacheSnapshot),e)),this.hasChanged=!1,JSON.stringify(e)},t.deserialize=function(e){if(this.logger.verbose("Deserializing JSON to in-memory cache"),this.cacheSnapshot=e,r.StringUtils.isEmpty(this.cacheSnapshot))this.logger.verbose("No cache snapshot to deserialize");else{this.logger.verbose("Reading cache snapshot from disk");var t=T.deserializeAllCache(this.overlayDefaults(JSON.parse(this.cacheSnapshot)));this.storage.setInMemoryCache(t)}},t.writeToPersistence=function(){try{var e=this;return e.logger.verbose("Writing to persistent cache"),Promise.resolve(function(){if(e.persistence){e.logger.verbose("cachePlugin (persistent cache) not set by the user");var t=A.serializeAllCache(e.storage.getInMemoryCache());return Promise.resolve(e.persistence.writeToStorage((function(n){return r.StringUtils.isEmpty(n)?e.logger.verbose("No state from disk"):(e.logger.verbose("Reading state from disk"),e.cacheSnapshot=n,t=e.mergeState(JSON.parse(n),t)),JSON.stringify(t)}))).then((function(){e.hasChanged=!1}))}throw r.ClientAuthError.createCachePluginError()}())}catch(e){return Promise.reject(e)}},t.readFromPersistence=function(){try{var e=this;return e.logger.verbose("Reading from persistent cache"),Promise.resolve(function(){if(e.persistence)return Promise.resolve(e.persistence.readFromStorage()).then((function(t){if(e.cacheSnapshot=t,r.StringUtils.isEmpty(e.cacheSnapshot))e.logger.verbose("No cache snapshot to overlay and deserialize");else{e.logger.verbose("Reading cache snapshot from disk");var n=e.overlayDefaults(JSON.parse(e.cacheSnapshot));e.logger.verbose("Deserializing JSON");var i=T.deserializeAllCache(n);e.storage.setInMemoryCache(i)}}));throw r.ClientAuthError.createCachePluginError()}())}catch(e){return Promise.reject(e)}},t.getAllAccounts=function(){return this.logger.verbose("getAllAccounts called"),this.storage.getAllAccounts()},t.removeAccount=function(e){this.logger.verbose("removeAccount called"),this.storage.removeAccount(r.AccountEntity.generateAccountCacheKey(e))},t.handleChangeEvent=function(){this.hasChanged=!0},t.mergeState=function(e,t){this.logger.verbose("Merging in-memory cache with cache snapshot");var r=this.mergeRemovals(e,t);return this.mergeUpdates(r,t)},t.mergeUpdates=function(e,t){var r=this;return Object.keys(t).forEach((function(n){var i=t[n];if(e.hasOwnProperty(n)){var o=null!==i,a="object"==typeof i,c=!Array.isArray(i);o&&a&&c&&null!=e[n]?r.mergeUpdates(e[n],i):e[n]=i}else null!==i&&(e[n]=i)})),e},t.mergeRemovals=function(e,t){return this.logger.verbose("Remove updated entries in cache"),s({Account:null!=e.Account?this.mergeRemovalsDict(e.Account,t.Account):e.Account,AccessToken:null!=e.AccessToken?this.mergeRemovalsDict(e.AccessToken,t.AccessToken):e.AccessToken,RefreshToken:null!=e.RefreshToken?this.mergeRemovalsDict(e.RefreshToken,t.RefreshToken):e.RefreshToken,IdToken:null!=e.IdToken?this.mergeRemovalsDict(e.IdToken,t.IdToken):e.IdToken,AppMetadata:null!=e.AppMetadata?this.mergeRemovalsDict(e.AppMetadata,t.AppMetadata):e.AppMetadata},e)},t.mergeRemovalsDict=function(e,t){var r=s({},e);return Object.keys(e).forEach((function(e){t&&t.hasOwnProperty(e)||delete r[e]})),r},t.overlayDefaults=function(e){return this.logger.verbose("Overlaying input cache with the default cache"),{Account:s({},S,{},e.Account),IdToken:s({},O,{},e.IdToken),AccessToken:s({},_,{},e.AccessToken),RefreshToken:s({},P,{},e.RefreshToken),AppMetadata:s({},E,{},e.AppMetadata)}},e}(),M=function(){function e(e){this.config=y(e),this.logger=new r.Logger(this.config.system.loggerOptions),this.storage=new I(this.logger),this.tokenCache=new w(this.storage,this.logger,this.config.cache.cachePlugin),this.cryptoProvider=new b,r.TrustedAuthority.setTrustedAuthoritiesFromConfig(this.config.auth.knownAuthorities,this.config.auth.cloudDiscoveryMetadata)}var t,n=e.prototype;return n.getAuthCodeUrl=function(e){try{var t=this;return t.logger.info("getAuthCodeUrl called"),Promise.resolve(t.buildOauthClientConfiguration(e.authority)).then((function(n){return t.logger.verbose("Auth client config generated"),new r.AuthorizationCodeClient(n).getAuthCodeUrl(t.initializeRequest(e))}))}catch(e){return Promise.reject(e)}},n.acquireTokenByCode=function(e){try{var t=this;t.logger.info("acquireTokenByCode called");var n=t.initializeRequest(e),i=t.initializeServerTelemetryManager(h.acquireTokenByCode,n.correlationId);return Promise.resolve(l((function(){return Promise.resolve(t.buildOauthClientConfiguration(e.authority,i)).then((function(e){return t.logger.verbose("Auth client config generated"),new r.AuthorizationCodeClient(e).acquireToken(n)}))}),(function(e){throw i.cacheFailedRequest(e),e})))}catch(e){return Promise.reject(e)}},n.acquireTokenByRefreshToken=function(e){try{var t=this;t.logger.info("acquireTokenByRefreshToken called");var n=t.initializeRequest(e),i=t.initializeServerTelemetryManager(h.acquireTokenByRefreshToken,n.correlationId);return Promise.resolve(l((function(){return Promise.resolve(t.buildOauthClientConfiguration(e.authority,i)).then((function(e){return t.logger.verbose("Auth client config generated"),new r.RefreshTokenClient(e).acquireToken(n)}))}),(function(e){throw i.cacheFailedRequest(e),e})))}catch(e){return Promise.reject(e)}},n.acquireTokenSilent=function(e){try{var t=this,n=t.initializeRequest(e),i=t.initializeServerTelemetryManager(h.acquireTokenSilent,n.correlationId,n.forceRefresh);return Promise.resolve(l((function(){return Promise.resolve(t.buildOauthClientConfiguration(e.authority,i)).then((function(e){return new r.SilentFlowClient(e).acquireToken(n)}))}),(function(e){throw i.cacheFailedRequest(e),e})))}catch(e){return Promise.reject(e)}},n.getTokenCache=function(){return this.logger.info("getTokenCache called"),this.tokenCache},n.buildOauthClientConfiguration=function(e,t){try{var r=this;r.logger.verbose("buildOauthClientConfiguration called");var n=r.config.auth.clientId;return Promise.resolve(r.createAuthority(e)).then((function(e){return{authOptions:{clientId:n,authority:e,knownAuthorities:r.config.auth.knownAuthorities,cloudDiscoveryMetadata:r.config.auth.cloudDiscoveryMetadata,clientCapabilities:r.config.auth.clientCapabilities},loggerOptions:{loggerCallback:r.config.system.loggerOptions.loggerCallback,piiLoggingEnabled:r.config.system.loggerOptions.piiLoggingEnabled},cryptoInterface:r.cryptoProvider,networkInterface:r.config.system.networkClient,storageInterface:r.storage,serverTelemetryManager:t,clientCredentials:{clientSecret:r.clientSecret,clientAssertion:r.clientAssertion?r.getClientAssertion():void 0},libraryInfo:{sku:"msal.js.node",version:"1.0.0-alpha.6",cpu:process.arch||"",os:process.platform||""}}}))}catch(e){return Promise.reject(e)}},n.getClientAssertion=function(){return{assertion:this.clientAssertion.getJwt(this.cryptoProvider,this.config.auth.clientId,this._authority.tokenEndpoint),assertionType:"urn:ietf:params:oauth:client-assertion-type:jwt-bearer"}},n.initializeRequest=function(e){return this.logger.verbose("initializeRequestScopes called"),s({},e,{scopes:[].concat(e&&e.scopes||[],[r.Constants.OPENID_SCOPE,r.Constants.PROFILE_SCOPE,r.Constants.OFFLINE_ACCESS_SCOPE]),correlationId:e&&e.correlationId||this.cryptoProvider.createNewGuid()})},n.initializeServerTelemetryManager=function(e,t,n){return new r.ServerTelemetryManager({clientId:this.config.auth.clientId,correlationId:t,apiId:e,forceRefresh:n||!1},this.storage)},n.createAuthority=function(e){try{var t;return this.logger.verbose("createAuthority called"),e?(this.logger.verbose("Authority passed in, creating authority instance"),t=r.AuthorityFactory.createInstance(e,this.config.system.networkClient)):(this.logger.verbose("No authority passed in request, defaulting to authority set on application object"),t=this.authority),t.discoveryComplete()?Promise.resolve(t):Promise.resolve(l((function(){return Promise.resolve(t.resolveEndpointsAsync()).then((function(){return t}))}),(function(e){throw r.ClientAuthError.createEndpointDiscoveryIncompleteError(e)})))}catch(e){return Promise.reject(e)}},(t=[{key:"authority",get:function(){return this._authority||(this._authority=r.AuthorityFactory.createInstance(this.config.auth.authority||r.Constants.DEFAULT_AUTHORITY,this.config.system.networkClient)),this._authority}}])&&function(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}(e.prototype,t),e}(),j=function(e){function t(t){return e.call(this,t)||this}return u(t,e),t.prototype.acquireTokenByDeviceCode=function(e){try{var t=this;t.logger.info("acquireTokenByDeviceCode called");var n=t.initializeRequest(e),i=t.initializeServerTelemetryManager(h.acquireTokenByDeviceCode,n.correlationId);return Promise.resolve(l((function(){return Promise.resolve(t.buildOauthClientConfiguration(e.authority,i)).then((function(e){return t.logger.verbose("Auth client config generated"),new r.DeviceCodeClient(e).acquireToken(n)}))}),(function(e){throw i.cacheFailedRequest(e),e})))}catch(e){return Promise.reject(e)}},t}(M),R=function(){function e(){}e.fromAssertion=function(t){var r=new e;return r.jwt=t,r},e.fromCertificate=function(t,r){var n=new e;return n.privateKey=r,n.thumbprint=t,n};var t=e.prototype;return t.getJwt=function(e,t,n){if(null!=this.privateKey&&null!=this.thumbprint)return null==this.jwt||this.isExpired()||t!=this.issuer||n!=this.jwtAudience?this.createJwt(e,t,n):this.jwt;if(null!=this.jwt)return this.jwt;throw r.ClientAuthError.createInvalidAssertionError()},t.createJwt=function(e,t,n){var i,o;this.issuer=t,this.jwtAudience=n;var a=r.TimeUtils.nowSeconds();this.expirationTime=a+600;var s=((i={}).alg="RS256",i.x5t=C.base64EncodeUrl(this.thumbprint,"hex"),i),u=((o={}).aud=this.jwtAudience,o.exp=this.expirationTime,o.iss=this.issuer,o.sub=this.issuer,o.nbf=a,o.jti=e.createNewGuid(),o);return this.jwt=c.sign(u,this.privateKey,{header:s}),this.jwt},t.isExpired=function(){return this.expirationTime<r.TimeUtils.nowSeconds()},e}(),z=function(e){function t(t){var r;return(r=e.call(this,t)||this).setClientCredential(r.config),r}u(t,e);var n=t.prototype;return n.acquireTokenByClientCredential=function(e){try{var t=this;t.logger.info("acquireTokenByClientCredential called");var n=t.initializeRequest(e),i=t.initializeServerTelemetryManager(h.acquireTokenByClientCredential,n.correlationId,n.skipCache);return Promise.resolve(l((function(){return Promise.resolve(t.buildOauthClientConfiguration(e.authority,i)).then((function(n){return t.logger.verbose("Auth client config generated"),new r.ClientCredentialClient(n).acquireToken(e)}))}),(function(e){throw i.cacheFailedRequest(e),e})))}catch(e){return Promise.reject(e)}},n.acquireTokenOnBehalfOf=function(e){try{var t=this;return t.logger.info("acquireTokenOnBehalfOf called"),Promise.resolve(t.buildOauthClientConfiguration(e.authority)).then((function(n){return t.logger.verbose("Auth client config generated"),new r.OnBehalfOfClient(n).acquireToken(t.initializeRequest(e))}))}catch(e){return Promise.reject(e)}},n.setClientCredential=function(e){var t=!r.StringUtils.isEmpty(e.auth.clientSecret),n=!r.StringUtils.isEmpty(e.auth.clientAssertion),i=e.auth.clientCertificate,o=!r.StringUtils.isEmpty(i.thumbprint)||!r.StringUtils.isEmpty(i.privateKey);if(t&&n||n&&o||t&&o)throw r.ClientAuthError.createInvalidCredentialError();if(t)this.clientSecret=e.auth.clientSecret;else if(n)this.clientAssertion=R.fromAssertion(e.auth.clientAssertion);else{if(!o)throw r.ClientAuthError.createInvalidCredentialError();this.clientAssertion=R.fromCertificate(i.thumbprint,i.privateKey)}},t}(M);Object.defineProperty(exports,"AuthError",{enumerable:!0,get:function(){return r.AuthError}}),Object.defineProperty(exports,"AuthErrorMessage",{enumerable:!0,get:function(){return r.AuthErrorMessage}}),Object.defineProperty(exports,"LogLevel",{enumerable:!0,get:function(){return r.LogLevel}}),Object.defineProperty(exports,"PromptValue",{enumerable:!0,get:function(){return r.PromptValue}}),Object.defineProperty(exports,"ResponseMode",{enumerable:!0,get:function(){return r.ResponseMode}}),exports.ConfidentialClientApplication=z,exports.CryptoProvider=b,exports.PublicClientApplication=j,exports.Storage=I,exports.TokenCache=w,exports.buildAppConfiguration=y;
//# sourceMappingURL=msal-node.cjs.production.min.js.map

@@ -1,2 +0,2 @@

import { LogLevel, StringUtils, AccountEntity, CacheManager, IdTokenEntity, AccessTokenEntity, RefreshTokenEntity, AppMetadataEntity, ClientAuthError, CacheSchemaType, CredentialEntity, CredentialType, AuthorizationCodeClient, RefreshTokenClient, SilentFlowClient, Constants as Constants$1, AuthorityFactory, Logger, TrustedAuthority, DeviceCodeClient, TimeUtils, ClientCredentialClient } from '@azure/msal-common';
import { LogLevel, StringUtils, AccountEntity, CacheManager, IdTokenEntity, AccessTokenEntity, RefreshTokenEntity, AppMetadataEntity, ClientAuthError, AuthorizationCodeClient, RefreshTokenClient, SilentFlowClient, Constants as Constants$1, ServerTelemetryManager, AuthorityFactory, Logger, TrustedAuthority, DeviceCodeClient, TimeUtils, ClientCredentialClient, OnBehalfOfClient } from '@azure/msal-common';
export { AuthError, AuthErrorMessage, LogLevel, PromptValue, ResponseMode } from '@azure/msal-common';

@@ -93,3 +93,3 @@ import axios from 'axios';

var Hash = {
SHA256: 'sha256'
SHA256: "sha256"
};

@@ -101,3 +101,3 @@ /**

var CharSet = {
CV_CHARSET: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~'
CV_CHARSET: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~"
};

@@ -109,15 +109,33 @@ /**

var Constants = {
MSAL_SKU: 'msal.js.node',
JWT_BEARER_ASSERTION_TYPE: 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer'
MSAL_SKU: "msal.js.node",
JWT_BEARER_ASSERTION_TYPE: "urn:ietf:params:oauth:client-assertion-type:jwt-bearer"
};
/**
* API Codes for Telemetry purposes.
* Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs
* 0-99 Silent Flow
* 600-699 Device Code Flow
* 800-899 Auth Code Flow
*/
var ApiId;
(function (ApiId) {
ApiId[ApiId["acquireTokenSilent"] = 62] = "acquireTokenSilent";
ApiId[ApiId["acquireTokenByCode"] = 871] = "acquireTokenByCode";
ApiId[ApiId["acquireTokenByRefreshToken"] = 872] = "acquireTokenByRefreshToken";
ApiId[ApiId["acquireTokenByDeviceCode"] = 671] = "acquireTokenByDeviceCode";
ApiId[ApiId["acquireTokenByClientCredential"] = 771] = "acquireTokenByClientCredential";
})(ApiId || (ApiId = {}));
/**
* JWT constants
*/
var JwtConstants = {
ALGORITHM: 'alg',
RSA_256: 'RS256',
X5T: 'x5t',
AUDIENCE: 'aud',
EXPIRATION_TIME: 'exp',
ALGORITHM: "alg",
RSA_256: "RS256",
X5T: "x5t",
AUDIENCE: "aud",
EXPIRATION_TIME: "exp",
ISSUER: "iss",

@@ -182,3 +200,3 @@ SUBJECT: "sub",

url: url,
data: options && options.body || '',
data: options && options.body || "",
headers: options && options.headers

@@ -219,9 +237,9 @@ };

var DEFAULT_AUTH_OPTIONS = {
clientId: '',
authority: '',
clientSecret: '',
clientAssertion: '',
clientId: "",
authority: "",
clientSecret: "",
clientAssertion: "",
clientCertificate: {
thumbprint: '',
privateKey: ''
thumbprint: "",
privateKey: ""
},

@@ -235,3 +253,3 @@ knownAuthorities: [],

loggerCallback: function loggerCallback(level, message, containsPii) {
debug("msal:" + LogLevel[level] + (containsPii ? '-Pii' : ''))(message);
debug("msal:" + LogLevel[level] + (containsPii ? "-Pii" : ""))(message);
},

@@ -309,3 +327,3 @@ piiLoggingEnabled: false,

EncodingUtils.base64Encode = function base64Encode(str, encoding) {
return Buffer.from(str, encoding).toString('base64');
return Buffer.from(str, encoding).toString("base64");
}

@@ -319,3 +337,3 @@ /**

EncodingUtils.base64EncodeUrl = function base64EncodeUrl(str, encoding) {
return EncodingUtils.base64Encode(str, encoding).replace(/=/g, '').replace(/\+/g, '-').replace(/\//g, '_');
return EncodingUtils.base64Encode(str, encoding).replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_");
}

@@ -331,3 +349,3 @@ /**

EncodingUtils.base64Decode = function base64Decode(base64Str) {
return Buffer.from(base64Str, 'base64').toString('utf8');
return Buffer.from(base64Str, "base64").toString("utf8");
}

@@ -340,6 +358,6 @@ /**

EncodingUtils.base64DecodeUrl = function base64DecodeUrl(base64Str) {
var str = base64Str.replace(/-/g, '+').replace(/_/g, '/');
var str = base64Str.replace(/-/g, "+").replace(/_/g, "/");
while (str.length % 4) {
str += '=';
str += "=";
}

@@ -403,3 +421,3 @@

_proto.generateCodeChallengeFromVerifier = function generateCodeChallengeFromVerifier(codeVerifier) {
return EncodingUtils.base64EncodeUrl(this.sha256(codeVerifier).toString('ascii'));
return EncodingUtils.base64EncodeUrl(this.sha256(codeVerifier).toString("ascii"));
}

@@ -429,3 +447,3 @@ /**

return charArr.join('');
return charArr.join("");
};

@@ -838,9 +856,3 @@

_this = _CacheManager.call(this) || this;
_this.inMemoryCache = {
accounts: {},
accessTokens: {},
refreshTokens: {},
appMetadata: {},
idTokens: {}
};
_this.cache = {};
_this.changeEmitters = [];

@@ -863,12 +875,36 @@ _this.logger = logger;

/**
* gets the current in memory cache for the client
* Converts cacheKVStore to InMemoryCache
* @param cache
*/
;
_proto.getCache = function getCache() {
this.logger.verbose("Getting in-memory cache");
return this.inMemoryCache;
_proto.cacheToInMemoryCache = function cacheToInMemoryCache(cache) {
var inMemoryCache = {
accounts: {},
idTokens: {},
accessTokens: {},
refreshTokens: {},
appMetadata: {}
};
for (var key in cache) {
if (cache[key] instanceof AccountEntity) {
inMemoryCache.accounts[key] = cache[key];
} else if (cache[key] instanceof IdTokenEntity) {
inMemoryCache.idTokens[key] = cache[key];
} else if (cache[key] instanceof AccessTokenEntity) {
inMemoryCache.accessTokens[key] = cache[key];
} else if (cache[key] instanceof RefreshTokenEntity) {
inMemoryCache.refreshTokens[key] = cache[key];
} else if (cache[key] instanceof AppMetadataEntity) {
inMemoryCache.appMetadata[key] = cache[key];
} else {
continue;
}
}
return inMemoryCache;
}
/**
* sets the current in memory cache for the client
* converts inMemoryCache to CacheKVStore
* @param inMemoryCache

@@ -878,137 +914,79 @@ */

_proto.setCache = function setCache(inMemoryCache) {
this.logger.verbose("Setting in-memory cache");
this.inMemoryCache = inMemoryCache;
this.emitChange();
_proto.inMemoryCacheToCache = function inMemoryCacheToCache(inMemoryCache) {
// convert in memory cache to a flat Key-Value map
var cache = this.getCache();
cache = _extends({}, inMemoryCache.accounts, {}, inMemoryCache.idTokens, {}, inMemoryCache.accessTokens, {}, inMemoryCache.refreshTokens, {}, inMemoryCache.appMetadata);
return cache;
}
/**
* Set Item in memory
* @param key
* @param value
* @param type
* @param inMemory
* gets the current in memory cache for the client
*/
;
_proto.setItem = function setItem(key, value, type) {
this.logger.verbose("setItem called for item type: " + type);
this.logger.verbosePii("Item key: " + key); // read inMemoryCache
_proto.getInMemoryCache = function getInMemoryCache() {
this.logger.verbose("Getting in-memory cache"); // convert the cache key value store to inMemoryCache
var cache = this.getCache(); // save the cacheItem
var inMemoryCache = this.cacheToInMemoryCache(this.getCache());
return inMemoryCache;
}
/**
* sets the current in memory cache for the client
* @param inMemoryCache
*/
;
switch (type) {
case CacheSchemaType.ACCOUNT:
{
cache.accounts[key] = value;
break;
}
_proto.setInMemoryCache = function setInMemoryCache(inMemoryCache) {
this.logger.verbose("Setting in-memory cache"); // convert and append the inMemoryCache to cacheKVStore
case CacheSchemaType.CREDENTIAL:
{
var credentialType = CredentialEntity.getCredentialType(key);
var cache = this.inMemoryCacheToCache(inMemoryCache);
this.setCache(cache);
this.emitChange();
}
/**
* get the current cache key-value store
*/
;
switch (credentialType) {
case CredentialType.ID_TOKEN:
{
this.logger.verbose("Credential type: " + CredentialType.ID_TOKEN);
cache.idTokens[key] = value;
break;
}
_proto.getCache = function getCache() {
this.logger.verbose("Getting cache key-value store");
return this.cache;
}
/**
* sets the current cache (key value store)
* @param cacheMap
*/
;
case CredentialType.ACCESS_TOKEN:
{
this.logger.verbose("Credential type: " + CredentialType.ACCESS_TOKEN);
cache.accessTokens[key] = value;
break;
}
_proto.setCache = function setCache(cache) {
this.logger.verbose("Setting cache key value store");
this.cache = cache; // mark change in cache
case CredentialType.REFRESH_TOKEN:
{
this.logger.verbose("Credential type: " + CredentialType.REFRESH_TOKEN);
cache.refreshTokens[key] = value;
break;
}
}
this.emitChange();
}
/**
* Gets cache item with given <key, value>
* @param key
* @param value
*/
;
break;
}
_proto.setItem = function setItem(key, value) {
this.logger.verbosePii("Item key: " + key); // read cache
case CacheSchemaType.APP_METADATA:
{
cache.appMetadata[key] = value;
break;
}
var cache = this.getCache();
cache[key] = value; // write to cache
default:
{
throw ClientAuthError.createInvalidCacheTypeError();
}
} // update inMemoryCache
this.setCache(cache);
this.emitChange();
}
/**
* Gets cache item with given key.
* Will retrieve frm cookies if storeAuthStateInCookie is set to true.
* @param key
* @param type
* @param inMemory
*/
;
_proto.getItem = function getItem(key, type) {
this.logger.verbose("getItem called for item type: " + type);
this.logger.verbosePii("Item key: " + key); // read inMemoryCache
_proto.getItem = function getItem(key) {
this.logger.verbosePii("Item key: " + key); // read cache
var cache = this.getCache(); // save the cacheItem
switch (type) {
case CacheSchemaType.ACCOUNT:
{
return cache.accounts[key] || null;
}
case CacheSchemaType.CREDENTIAL:
{
var credentialType = CredentialEntity.getCredentialType(key);
var credential = null;
switch (credentialType) {
case CredentialType.ID_TOKEN:
{
this.logger.verbose("Credential type: " + CredentialType.ID_TOKEN);
credential = cache.idTokens[key] || null;
break;
}
case CredentialType.ACCESS_TOKEN:
{
this.logger.verbose("Credential type: " + CredentialType.ACCESS_TOKEN);
credential = cache.accessTokens[key] || null;
break;
}
case CredentialType.REFRESH_TOKEN:
{
this.logger.verbose("Credential type: " + CredentialType.REFRESH_TOKEN);
credential = cache.refreshTokens[key] || null;
break;
}
}
return credential;
}
case CacheSchemaType.APP_METADATA:
{
return cache.appMetadata[key] || null;
}
default:
{
throw ClientAuthError.createInvalidCacheTypeError();
}
}
var cache = this.getCache();
return cache[key];
}

@@ -1018,3 +996,2 @@ /**

* @param key
* @param type
* @param inMemory

@@ -1024,79 +1001,11 @@ */

_proto.removeItem = function removeItem(key, type) {
this.logger.verbose("removeItem called for item type: " + type);
_proto.removeItem = function removeItem(key) {
this.logger.verbosePii("Item key: " + key); // read inMemoryCache
var result = false;
var cache = this.getCache();
var result = false; // save the cacheItem
switch (type) {
case CacheSchemaType.ACCOUNT:
{
if (!!cache.accounts[key]) {
delete cache.accounts[key];
result = true;
}
break;
}
case CacheSchemaType.CREDENTIAL:
{
var credentialType = CredentialEntity.getCredentialType(key);
switch (credentialType) {
case CredentialType.ID_TOKEN:
{
this.logger.verbose("Credential type: " + CredentialType.ID_TOKEN);
if (!!cache.idTokens[key]) {
delete cache.idTokens[key];
result = true;
}
break;
}
case CredentialType.ACCESS_TOKEN:
{
this.logger.verbose("Credential type: " + CredentialType.ACCESS_TOKEN);
if (!!cache.accessTokens[key]) {
delete cache.accessTokens[key];
result = true;
}
break;
}
case CredentialType.REFRESH_TOKEN:
{
this.logger.verbose("Credential type: " + CredentialType.REFRESH_TOKEN);
if (!!cache.refreshTokens[key]) {
delete cache.refreshTokens[key];
result = true;
}
break;
}
}
break;
}
case CacheSchemaType.APP_METADATA:
{
if (!!cache.appMetadata[key]) {
delete cache.appMetadata[key];
result = true;
}
break;
}
default:
{
throw ClientAuthError.createInvalidCacheTypeError();
}
if (!!cache[key]) {
delete cache[key];
result = true;
} // write to the cache after removal

@@ -1107,3 +1016,2 @@

this.setCache(cache);
this.emitChange();
}

@@ -1116,3 +1024,2 @@

* @param key
* TODO: implement after the lookup implementation
*/

@@ -1122,3 +1029,3 @@ ;

_proto.containsKey = function containsKey(key) {
return key ? true : false;
return this.getKeys().includes(key);
}

@@ -1131,6 +1038,6 @@ /**

_proto.getKeys = function getKeys() {
this.logger.verbose("Retrieving all cache keys"); // read inMemoryCache
this.logger.verbose("Retrieving all cache keys"); // read cache
var cache = this.getCache();
return [].concat(Object.keys(cache.accounts), Object.keys(cache.idTokens), Object.keys(cache.accessTokens), Object.keys(cache.refreshTokens), Object.keys(cache.appMetadata));
return [].concat(Object.keys(cache));
}

@@ -1176,4 +1083,2 @@ /**

var version = "1.0.0-alpha.5";
var defaultSerializedCache = {

@@ -1219,3 +1124,3 @@ Account: {},

this.logger.verbose("Serializing in-memory cache");
var finalState = Serializer.serializeAllCache(this.storage.getCache()); // if cacheSnapshot not null or empty, merge
var finalState = Serializer.serializeAllCache(this.storage.getInMemoryCache()); // if cacheSnapshot not null or empty, merge

@@ -1245,3 +1150,3 @@ if (!StringUtils.isEmpty(this.cacheSnapshot)) {

var deserializedCache = Deserializer.deserializeAllCache(this.overlayDefaults(JSON.parse(this.cacheSnapshot)));
this.storage.setCache(deserializedCache);
this.storage.setInMemoryCache(deserializedCache);
} else {

@@ -1264,4 +1169,6 @@ this.logger.verbose("No cache snapshot to deserialize");

if (_this2.persistence) {
var cache = Serializer.serializeAllCache(_this2.storage.getCache());
_this2.logger.verbose("cachePlugin (persistent cache) not set by the user");
var cache = Serializer.serializeAllCache(_this2.storage.getInMemoryCache());
var getMergedState = function getMergedState(stateFromDisk) {

@@ -1317,3 +1224,3 @@ if (!StringUtils.isEmpty(stateFromDisk)) {

_this4.storage.setCache(deserializedCache);
_this4.storage.setInMemoryCache(deserializedCache);
} else {

@@ -1390,5 +1297,5 @@ _this4.logger.verbose("No cache snapshot to overlay and deserialize");

var newValueNotNull = newValue !== null;
var newValueIsObject = typeof newValue === 'object';
var newValueIsObject = typeof newValue === "object";
var newValueIsNotArray = !Array.isArray(newValue);
var oldStateNotUndefinedOrNull = typeof oldState[newKey] !== 'undefined' && oldState[newKey] !== null;
var oldStateNotUndefinedOrNull = typeof oldState[newKey] !== "undefined" && oldState[newKey] !== null;

@@ -1453,2 +1360,4 @@ if (newValueNotNull && newValueIsObject && newValueIsNotArray && oldStateNotUndefinedOrNull) {

var version = "1.0.0-alpha.6";
var ClientApplication = /*#__PURE__*/function () {

@@ -1489,3 +1398,3 @@ /**

var authorizationCodeClient = new AuthorizationCodeClient(authClientConfig);
return authorizationCodeClient.getAuthCodeUrl(_this2.initializeRequestScopes(request));
return authorizationCodeClient.getAuthCodeUrl(_this2.initializeRequest(request));
});

@@ -1512,8 +1421,17 @@ } catch (e) {

return Promise.resolve(_this4.buildOauthClientConfiguration(request.authority)).then(function (authClientConfig) {
_this4.logger.verbose("Auth client config generated");
var validRequest = _this4.initializeRequest(request);
var authorizationCodeClient = new AuthorizationCodeClient(authClientConfig);
return authorizationCodeClient.acquireToken(_this4.initializeRequestScopes(request));
});
var serverTelemetryManager = _this4.initializeServerTelemetryManager(ApiId.acquireTokenByCode, validRequest.correlationId);
return Promise.resolve(_catch(function () {
return Promise.resolve(_this4.buildOauthClientConfiguration(request.authority, serverTelemetryManager)).then(function (authClientConfig) {
_this4.logger.verbose("Auth client config generated");
var authorizationCodeClient = new AuthorizationCodeClient(authClientConfig);
return authorizationCodeClient.acquireToken(validRequest);
});
}, function (e) {
serverTelemetryManager.cacheFailedRequest(e);
throw e;
}));
} catch (e) {

@@ -1538,8 +1456,17 @@ return Promise.reject(e);

return Promise.resolve(_this6.buildOauthClientConfiguration(request.authority)).then(function (refreshTokenClientConfig) {
_this6.logger.verbose("Auth client config generated");
var validRequest = _this6.initializeRequest(request);
var refreshTokenClient = new RefreshTokenClient(refreshTokenClientConfig);
return refreshTokenClient.acquireToken(_this6.initializeRequestScopes(request));
});
var serverTelemetryManager = _this6.initializeServerTelemetryManager(ApiId.acquireTokenByRefreshToken, validRequest.correlationId);
return Promise.resolve(_catch(function () {
return Promise.resolve(_this6.buildOauthClientConfiguration(request.authority, serverTelemetryManager)).then(function (refreshTokenClientConfig) {
_this6.logger.verbose("Auth client config generated");
var refreshTokenClient = new RefreshTokenClient(refreshTokenClientConfig);
return refreshTokenClient.acquireToken(validRequest);
});
}, function (e) {
serverTelemetryManager.cacheFailedRequest(e);
throw e;
}));
} catch (e) {

@@ -1563,6 +1490,15 @@ return Promise.reject(e);

return Promise.resolve(_this8.buildOauthClientConfiguration(request.authority)).then(function (silentFlowClientConfig) {
var silentFlowClient = new SilentFlowClient(silentFlowClientConfig);
return silentFlowClient.acquireToken(_this8.initializeRequestScopes(request));
});
var validRequest = _this8.initializeRequest(request);
var serverTelemetryManager = _this8.initializeServerTelemetryManager(ApiId.acquireTokenSilent, validRequest.correlationId, validRequest.forceRefresh);
return Promise.resolve(_catch(function () {
return Promise.resolve(_this8.buildOauthClientConfiguration(request.authority, serverTelemetryManager)).then(function (silentFlowClientConfig) {
var silentFlowClient = new SilentFlowClient(silentFlowClientConfig);
return silentFlowClient.acquireToken(validRequest);
});
}, function (e) {
serverTelemetryManager.cacheFailedRequest(e);
throw e;
}));
} catch (e) {

@@ -1582,3 +1518,3 @@ return Promise.reject(e);

_proto.buildOauthClientConfiguration = function buildOauthClientConfiguration(authority) {
_proto.buildOauthClientConfiguration = function buildOauthClientConfiguration(authority, serverTelemetryManager) {
try {

@@ -1607,2 +1543,3 @@ var _this10 = this;

storageInterface: _this10.storage,
serverTelemetryManager: serverTelemetryManager,
clientCredentials: {

@@ -1615,4 +1552,4 @@ clientSecret: _this10.clientSecret,

version: version,
cpu: process.arch || '',
os: process.platform || ''
cpu: process.arch || "",
os: process.platform || ""
}

@@ -1633,3 +1570,3 @@ };

/**
* Generates a request with the default scopes.
* Generates a request with the default scopes & generates a correlationId.
* @param authRequest

@@ -1639,7 +1576,18 @@ */

_proto.initializeRequestScopes = function initializeRequestScopes(authRequest) {
_proto.initializeRequest = function initializeRequest(authRequest) {
this.logger.verbose("initializeRequestScopes called");
return _extends({}, authRequest, {
scopes: [].concat(authRequest && authRequest.scopes || [], [Constants$1.OPENID_SCOPE, Constants$1.PROFILE_SCOPE, Constants$1.OFFLINE_ACCESS_SCOPE])
scopes: [].concat(authRequest && authRequest.scopes || [], [Constants$1.OPENID_SCOPE, Constants$1.PROFILE_SCOPE, Constants$1.OFFLINE_ACCESS_SCOPE]),
correlationId: authRequest && authRequest.correlationId || this.cryptoProvider.createNewGuid()
});
};
_proto.initializeServerTelemetryManager = function initializeServerTelemetryManager(apiId, correlationId, forceRefresh) {
var telemetryPayload = {
clientId: this.config.auth.clientId,
correlationId: correlationId,
apiId: apiId,
forceRefresh: forceRefresh || false
};
return new ServerTelemetryManager(telemetryPayload, this.storage);
}

@@ -1749,8 +1697,17 @@ /**

return Promise.resolve(_this2.buildOauthClientConfiguration(request.authority)).then(function (deviceCodeConfig) {
_this2.logger.verbose("Auth client config generated");
var validRequest = _this2.initializeRequest(request);
var deviceCodeClient = new DeviceCodeClient(deviceCodeConfig);
return deviceCodeClient.acquireToken(_this2.initializeRequestScopes(request));
});
var serverTelemetryManager = _this2.initializeServerTelemetryManager(ApiId.acquireTokenByDeviceCode, validRequest.correlationId);
return Promise.resolve(_catch(function () {
return Promise.resolve(_this2.buildOauthClientConfiguration(request.authority, serverTelemetryManager)).then(function (deviceCodeConfig) {
_this2.logger.verbose("Auth client config generated");
var deviceCodeClient = new DeviceCodeClient(deviceCodeConfig);
return deviceCodeClient.acquireToken(validRequest);
});
}, function (e) {
serverTelemetryManager.cacheFailedRequest(e);
throw e;
}));
} catch (e) {

@@ -1798,4 +1755,7 @@ return Promise.reject(e);

return this.createJwt(cryptoProvider, issuer, jwtAudience);
} // if assertion was created by caller, then we just append it. It is up to the caller to
// ensure that it contains necessary claims and that it is not expired.
}
/*
* if assertion was created by caller, then we just append it. It is up to the caller to
* ensure that it contains necessary claims and that it is not expired.
*/

@@ -1866,3 +1826,3 @@

/**
* Acquires tokens from the authority for the application.
* Acquires tokens from the authority for the application (not for an end user).
*/

@@ -1879,7 +1839,45 @@

return Promise.resolve(_this3.buildOauthClientConfiguration(request.authority)).then(function (clientCredentialConfig) {
_this3.logger.verbose("Auth client config generated");
var validRequest = _this3.initializeRequest(request);
var clientCredentialClient = new ClientCredentialClient(clientCredentialConfig);
return clientCredentialClient.acquireToken(request);
var serverTelemetryManager = _this3.initializeServerTelemetryManager(ApiId.acquireTokenByClientCredential, validRequest.correlationId, validRequest.skipCache);
return Promise.resolve(_catch(function () {
return Promise.resolve(_this3.buildOauthClientConfiguration(request.authority, serverTelemetryManager)).then(function (clientCredentialConfig) {
_this3.logger.verbose("Auth client config generated");
var clientCredentialClient = new ClientCredentialClient(clientCredentialConfig);
return clientCredentialClient.acquireToken(request);
});
}, function (e) {
serverTelemetryManager.cacheFailedRequest(e);
throw e;
}));
} catch (e) {
return Promise.reject(e);
}
}
/**
* Acquires tokens from the authority for the application.
*
* Used in scenarios where the current app is a middle-tier service which was called with a token
* representing an end user. The current app can use the token (oboAssertion) to request another
* token to access downstream web API, on behalf of that user.
*
* The current middle-tier app has no user interaction to obtain consent.
* See how to gain consent upfront for your middle-tier app from this article.
* https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow#gaining-consent-for-the-middle-tier-application
*/
;
_proto.acquireTokenOnBehalfOf = function acquireTokenOnBehalfOf(request) {
try {
var _this5 = this;
_this5.logger.info("acquireTokenOnBehalfOf called");
return Promise.resolve(_this5.buildOauthClientConfiguration(request.authority)).then(function (clientCredentialConfig) {
_this5.logger.verbose("Auth client config generated");
var oboClient = new OnBehalfOfClient(clientCredentialConfig);
return oboClient.acquireToken(_this5.initializeRequest(request));
});

@@ -1886,0 +1884,0 @@ } catch (e) {

@@ -1,2 +0,2 @@

import { INetworkModule, NetworkRequestOptions, NetworkResponse } from '@azure/msal-common';
import { INetworkModule, NetworkRequestOptions, NetworkResponse } from "@azure/msal-common";
/**

@@ -3,0 +3,0 @@ * This class implements the API for network requests.

@@ -39,2 +39,16 @@ /**

/**
* API Codes for Telemetry purposes.
* Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs
* 0-99 Silent Flow
* 600-699 Device Code Flow
* 800-899 Auth Code Flow
*/
export declare enum ApiId {
acquireTokenSilent = 62,
acquireTokenByCode = 871,
acquireTokenByRefreshToken = 872,
acquireTokenByDeviceCode = 671,
acquireTokenByClientCredential = 771
}
/**
* JWT constants

@@ -41,0 +55,0 @@ */

@@ -1,2 +0,2 @@

import { INetworkModule } from '@azure/msal-common';
import { INetworkModule } from "@azure/msal-common";
export declare class NetworkUtils {

@@ -3,0 +3,0 @@ /**

{
"name": "@azure/msal-node",
"version": "1.0.0-alpha.5",
"version": "1.0.0-alpha.6",
"author": {

@@ -38,4 +38,4 @@ "name": "Microsoft",

"test:coverage": "tsdx test .*.spec.* --coverage",
"lint": "tsdx lint",
"lint:fix": "tsdx lint --fix",
"lint": "cd ../../ && npm run lint:node",
"lint:fix": "npm run lint -- -- --fix",
"build:all": "npm run build:common && npm run build",

@@ -46,9 +46,2 @@ "build:common": "cd ../msal-common && npm run build",

"peerDependencies": {},
"prettier": {
"printWidth": 80,
"semi": true,
"singleQuote": true,
"trailingComma": "es5",
"endOfLine": "lf"
},
"jest": {

@@ -83,3 +76,3 @@ "verbose": true,

"dependencies": {
"@azure/msal-common": "^1.2.0",
"@azure/msal-common": "^1.3.0",
"axios": "^0.19.2",

@@ -86,0 +79,0 @@ "debug": "^4.1.1",

@@ -41,7 +41,6 @@ # Microsoft Authentication Library for Node (msal-node)

- [Silent Flow](https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-acquire-cache-tokens#acquiring-tokens-silently-from-the-cache)
- [Client Credential Grant](https://oauth.net/2/grant-types/client-credentials/)
- [On-behalf-of flow](https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow)
**[Coming Soon]** In the future we plan to add support for:
- [Client Credential Grant](https://oauth.net/2/grant-types/client-credentials/)
- [On-behalf-of flow](https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow)
- [Integrated Windows Authentication flow](https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-authentication-flows#integrated-windows-authentication)

@@ -55,6 +54,6 @@ - [Username and Password flow](https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-authentication-flows#usernamepassword)

The scenarios supported with this library are:
- Destop app that calls web APIs
- Desktop app that calls web APIs
- Web app that calls web APIs
- Web APIs that call web APIs (upcoming)
- Daemon apps (upcoming)
- Web APIs that call web APIs
- Daemon apps

@@ -96,2 +95,4 @@ More details on scenarios and the authentication flows that map to each of them can be found [here](https://docs.microsoft.com/en-us/azure/active-directory/develop/authentication-flows-app-scenarios).

- [silent-flow](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/samples/msal-node-samples/silent-flow): Express app using OAuth2.0 authorization code flow to acquire a token and store in the token cache, and silent flow to use tokens in the token cache.
- [client-credentials](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/samples/msal-node-samples/client-credentials): Daemon app using Oauth 2.0 client credential grant to acquire a token.
- [on-behalf-of](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/samples/msal-node-samples/on-behalf-of): Web application uses Oauth 2.0 auth code flow to acquire a token for a Web API. The web API validates the token, and calls Microsoft Graph on behalf of the user who authenticated in the web application.
- [msal-node-extensions](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/samples/msal-node-extensions): Uses authorization code flow to acquire tokens then the [msal-extensions](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/extensions/msal-node-extensions) library to write the MSAL in-memory token cache to disk.

@@ -98,0 +99,0 @@

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc