You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 7-8.RSVP
Socket
Socket
Sign inDemoInstall

@azure/msal-browser

Package Overview
Dependencies
1
Maintainers
3
Versions
112
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 2.18.0 to 2.19.0

dist/cache/AsyncMemoryStorage.d.ts

65

CHANGELOG.json

@@ -5,2 +5,67 @@ {

{
"date": "Mon, 01 Nov 2021 23:53:21 GMT",
"tag": "@azure/msal-browser_v2.19.0",
"version": "2.19.0",
"comments": {
"minor": [
{
"author": "hemoral@microsoft.com",
"package": "@azure/msal-browser",
"commit": "51669adf5e2fe446bf94925fe77762b64e9513fc",
"comment": "Add support for in-memory storage of token binding keys #4183"
},
{
"author": "hemoral@microsoft.com",
"package": "@azure/msal-browser",
"commit": "a81fcef3d82523e03828d91bb0ee8d2ab2cc20d8",
"comment": "Add support for ephemeral SSH certificate acquisition #4178"
},
{
"author": "hemoral@microsoft.com",
"package": "@azure/msal-browser",
"commit": "51669adf5e2fe446bf94925fe77762b64e9513fc",
"comment": "Add support for in-memory storage of token binding keys #4183"
},
{
"author": "hemoral@microsoft.com",
"package": "@azure/msal-browser",
"commit": "5b350a5f97b43e1a5a87153bb4a13632f7c615b9",
"comment": "Add support for SHR nonce #3999"
},
{
"author": "beachball",
"package": "@azure/msal-browser",
"comment": "Bump @azure/msal-common to v5.1.0",
"commit": "6ac29855822ce1ba9531a68bcaa6f37443ef16c0"
}
],
"patch": [
{
"author": "hemoral@microsoft.com",
"package": "@azure/msal-browser",
"commit": "9099d711c0e52e13937bcfda7ddf34bac48f9ecd",
"comment": "Add support for different key types in IndexedDB storage #4052"
},
{
"author": "janutter@microsoft.com",
"package": "@azure/msal-browser",
"commit": "b1f5bd520f8abb972725c1a863f37b7fb5ebd756",
"comment": "Ensure correlation is passed to all interaction clients in acquireTokenSilent #4186"
},
{
"author": "Michael.Currie@rjwgroup.com",
"package": "@azure/msal-browser",
"commit": "3f3f5a8880a7e46445d71b8920a6ccc70d453f30",
"comment": "Fix typo in noTokenRequestCacheError (#4136)"
},
{
"author": "thomas.norling@microsoft.com",
"package": "@azure/msal-browser",
"commit": "dc80d3177eef0b3c7499cbf3ebb2fea8e2c408c9",
"comment": "Fix redirect processing when allowRedirectInIframe: true #4142"
}
]
}
},
{
"date": "Mon, 04 Oct 2021 23:12:35 GMT",

@@ -7,0 +72,0 @@ "tag": "@azure/msal-browser_v2.18.0",

21

CHANGELOG.md
# Change Log - @azure/msal-browser
This log was last generated on Mon, 04 Oct 2021 23:12:35 GMT and should not be manually modified.
This log was last generated on Mon, 01 Nov 2021 23:53:21 GMT and should not be manually modified.
<!-- Start content -->
## 2.19.0
Mon, 01 Nov 2021 23:53:21 GMT
### Minor changes
- Add support for in-memory storage of token binding keys #4183 (hemoral@microsoft.com)
- Add support for ephemeral SSH certificate acquisition #4178 (hemoral@microsoft.com)
- Add support for in-memory storage of token binding keys #4183 (hemoral@microsoft.com)
- Add support for SHR nonce #3999 (hemoral@microsoft.com)
- Bump @azure/msal-common to v5.1.0
### Patches
- Add support for different key types in IndexedDB storage #4052 (hemoral@microsoft.com)
- Ensure correlation is passed to all interaction clients in acquireTokenSilent #4186 (janutter@microsoft.com)
- Fix typo in noTokenRequestCacheError (#4136) (Michael.Currie@rjwgroup.com)
- Fix redirect processing when allowRedirectInIframe: true #4142 (thomas.norling@microsoft.com)
## 2.18.0

@@ -8,0 +27,0 @@

2

dist/_virtual/_tslib.js

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

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

@@ -206,3 +206,7 @@ import { AccountInfo, INetworkModule, AuthenticationResult, Logger, CommonSilentFlowRequest, ICrypto } from "@azure/msal-common";

setNavigationClient(navigationClient: INavigationClient): void;
/**
* Returns the configuration object
*/
getConfiguration(): BrowserConfiguration;
}
//# sourceMappingURL=ClientApplication.d.ts.map

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -64,3 +64,3 @@ import { __awaiter, __generator } from '../_virtual/_tslib.js';

// Initialize the crypto class.
this.browserCrypto = this.isBrowserEnvironment ? new CryptoOps() : DEFAULT_CRYPTO_IMPLEMENTATION;
this.browserCrypto = this.isBrowserEnvironment ? new CryptoOps(this.logger) : DEFAULT_CRYPTO_IMPLEMENTATION;
this.eventHandler = new EventHandler(this.logger, this.browserCrypto);

@@ -294,3 +294,3 @@ // Initialize the browser storage class.

_this.logger.verbose("Refresh token expired or invalid, attempting acquire token by iframe", request.correlationId);
var silentIframeClient = new SilentIframeClient(_this.config, _this.browserStorage, _this.browserCrypto, _this.logger, _this.eventHandler, _this.navigationClient, ApiId.acquireTokenSilent_authCode);
var silentIframeClient = new SilentIframeClient(_this.config, _this.browserStorage, _this.browserCrypto, _this.logger, _this.eventHandler, _this.navigationClient, ApiId.acquireTokenSilent_authCode, request.correlationId);
return silentIframeClient.acquireToken(request);

@@ -515,2 +515,8 @@ }

};
/**
* Returns the configuration object
*/
ClientApplication.prototype.getConfiguration = function () {
return this.config;
};
return ClientApplication;

@@ -517,0 +523,0 @@ }());

@@ -11,2 +11,3 @@ import { AuthenticationResult, AccountInfo, Logger } from "@azure/msal-common";

import { ITokenCache } from "../cache/ITokenCache";
import { BrowserConfiguration } from "../config/Configuration";
export interface IPublicClientApplication {

@@ -38,4 +39,5 @@ acquireTokenPopup(request: PopupRequest): Promise<AuthenticationResult>;

setNavigationClient(navigationClient: INavigationClient): void;
getConfiguration(): BrowserConfiguration;
}
export declare const stubbedPublicClientApplication: IPublicClientApplication;
//# sourceMappingURL=IPublicClientApplication.d.ts.map

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -84,2 +84,5 @@ import { BrowserConfigurationAuthError } from '../error/BrowserConfigurationAuthError.js';

return;
},
getConfiguration: function () {
throw BrowserConfigurationAuthError.createStubPcaInstanceCalledError();
}

@@ -86,0 +89,0 @@ };

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -99,3 +99,5 @@ import { __extends, __awaiter, __generator } from '../_virtual/_tslib.js';

resourceRequestUri: request.resourceRequestUri,
shrClaims: request.shrClaims
shrClaims: request.shrClaims,
sshJwk: request.sshJwk,
sshKid: request.sshKid
};

@@ -136,3 +138,3 @@ silentRequestKey = JSON.stringify(thumbprint);

return __generator(this, function (_a) {
silentCacheClient = new SilentCacheClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient);
silentCacheClient = new SilentCacheClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, request.correlationId);
silentRequest = silentCacheClient.initializeSilentRequest(request, account);

@@ -139,0 +141,0 @@ this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Silent, request);

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -3,0 +3,0 @@ import { __extends, __spread, __awaiter, __generator } from '../_virtual/_tslib.js';

import { IWindowStorage } from "./IWindowStorage";
export declare class BrowserStorage implements IWindowStorage {
export declare class BrowserStorage implements IWindowStorage<string> {
private windowStorage;

@@ -4,0 +4,0 @@ constructor(cacheLocation: string);

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -3,0 +3,0 @@ import { BrowserConfigurationAuthError } from '../error/BrowserConfigurationAuthError.js';

@@ -0,5 +1,6 @@

import { IAsyncStorage } from "./IAsyncMemoryStorage";
/**
* Storage wrapper for IndexedDB storage in browsers: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API
*/
export declare class DatabaseStorage<T> {
export declare class DatabaseStorage<T> implements IAsyncStorage<T> {
private db;

@@ -10,3 +11,3 @@ private dbName;

private dbOpen;
constructor(dbName: string, tableName: string, version: number);
constructor();
/**

@@ -17,6 +18,10 @@ * Opens IndexedDB instance.

/**
* Opens database if it's not already open
*/
private validateDbIsOpen;
/**
* Retrieves item from IndexedDB instance.
* @param key
*/
get(key: string): Promise<T>;
getItem(key: string): Promise<T | null>;
/**

@@ -27,3 +32,3 @@ * Adds item to IndexedDB under given key

*/
put(key: string, payload: T): Promise<T>;
setItem(key: string, payload: T): Promise<void>;
/**

@@ -33,5 +38,19 @@ * Removes item from IndexedDB under given key

*/
delete(key: string): Promise<boolean>;
clear(): Promise<boolean>;
removeItem(key: string): Promise<void>;
/**
* Get all the keys from the storage object as an iterable array of strings.
*/
getKeys(): Promise<string[]>;
/**
*
* Checks whether there is an object under the search key in the object store
*/
containsKey(key: string): Promise<boolean>;
/**
* Deletes the MSAL database. The database is deleted rather than cleared to make it possible
* for client applications to downgrade to a previous MSAL version without worrying about forward compatibility issues
* with IndexedDB database versions.
*/
deleteDatabase(): Promise<boolean>;
}
//# sourceMappingURL=DatabaseStorage.d.ts.map

@@ -1,5 +0,6 @@

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';
import { __awaiter, __generator } from '../_virtual/_tslib.js';
import { BrowserAuthError } from '../error/BrowserAuthError.js';
import { DB_NAME, DB_VERSION, DB_TABLE_NAME } from '../utils/BrowserConstants.js';

@@ -14,6 +15,6 @@ /*

var DatabaseStorage = /** @class */ (function () {
function DatabaseStorage(dbName, tableName, version) {
this.dbName = dbName;
this.tableName = tableName;
this.version = version;
function DatabaseStorage() {
this.dbName = DB_NAME;
this.version = DB_VERSION;
this.tableName = DB_TABLE_NAME;
this.dbOpen = false;

@@ -29,3 +30,2 @@ }

return [2 /*return*/, new Promise(function (resolve, reject) {
// TODO: Add timeouts?
var openDB = window.indexedDB.open(_this.dbName, _this.version);

@@ -42,3 +42,3 @@ openDB.addEventListener("upgradeneeded", function (e) {

});
openDB.addEventListener("error", function (error) { return reject(error); });
openDB.addEventListener("error", function () { return reject(BrowserAuthError.createDatabaseUnavailableError()); });
})];

@@ -49,6 +49,22 @@ });

/**
* Opens database if it's not already open
*/
DatabaseStorage.prototype.validateDbIsOpen = function () {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!!this.dbOpen) return [3 /*break*/, 2];
return [4 /*yield*/, this.open()];
case 1: return [2 /*return*/, _a.sent()];
case 2: return [2 /*return*/];
}
});
});
};
/**
* Retrieves item from IndexedDB instance.
* @param key
*/
DatabaseStorage.prototype.get = function (key) {
DatabaseStorage.prototype.getItem = function (key) {
return __awaiter(this, void 0, void 0, function () {

@@ -58,22 +74,19 @@ var _this = this;

switch (_a.label) {
case 0:
if (!!this.dbOpen) return [3 /*break*/, 2];
return [4 /*yield*/, this.open()];
case 0: return [4 /*yield*/, this.validateDbIsOpen()];
case 1:
_a.sent();
_a.label = 2;
case 2: return [2 /*return*/, new Promise(function (resolve, reject) {
// TODO: Add timeouts?
if (!_this.db) {
return reject(BrowserAuthError.createDatabaseNotOpenError());
}
var transaction = _this.db.transaction([_this.tableName], "readonly");
var objectStore = transaction.objectStore(_this.tableName);
var dbGet = objectStore.get(key);
dbGet.addEventListener("success", function (e) {
var event = e;
resolve(event.target.result);
});
dbGet.addEventListener("error", function (e) { return reject(e); });
})];
return [2 /*return*/, new Promise(function (resolve, reject) {
// TODO: Add timeouts?
if (!_this.db) {
return reject(BrowserAuthError.createDatabaseNotOpenError());
}
var transaction = _this.db.transaction([_this.tableName], "readonly");
var objectStore = transaction.objectStore(_this.tableName);
var dbGet = objectStore.get(key);
dbGet.addEventListener("success", function (e) {
var event = e;
resolve(event.target.result);
});
dbGet.addEventListener("error", function (e) { return reject(e); });
})];
}

@@ -88,3 +101,3 @@ });

*/
DatabaseStorage.prototype.put = function (key, payload) {
DatabaseStorage.prototype.setItem = function (key, payload) {
return __awaiter(this, void 0, void 0, function () {

@@ -94,22 +107,16 @@ var _this = this;

switch (_a.label) {
case 0:
if (!!this.dbOpen) return [3 /*break*/, 2];
return [4 /*yield*/, this.open()];
case 0: return [4 /*yield*/, this.validateDbIsOpen()];
case 1:
_a.sent();
_a.label = 2;
case 2: return [2 /*return*/, new Promise(function (resolve, reject) {
// TODO: Add timeouts?
if (!_this.db) {
return reject(BrowserAuthError.createDatabaseNotOpenError());
}
var transaction = _this.db.transaction([_this.tableName], "readwrite");
var objectStore = transaction.objectStore(_this.tableName);
var dbPut = objectStore.put(payload, key);
dbPut.addEventListener("success", function (e) {
var event = e;
resolve(event.target.result);
});
dbPut.addEventListener("error", function (e) { return reject(e); });
})];
return [2 /*return*/, new Promise(function (resolve, reject) {
// TODO: Add timeouts?
if (!_this.db) {
return reject(BrowserAuthError.createDatabaseNotOpenError());
}
var transaction = _this.db.transaction([_this.tableName], "readwrite");
var objectStore = transaction.objectStore(_this.tableName);
var dbPut = objectStore.put(payload, key);
dbPut.addEventListener("success", function () { return resolve(); });
dbPut.addEventListener("error", function (e) { return reject(e); });
})];
}

@@ -123,3 +130,3 @@ });

*/
DatabaseStorage.prototype.delete = function (key) {
DatabaseStorage.prototype.removeItem = function (key) {
return __awaiter(this, void 0, void 0, function () {

@@ -129,21 +136,15 @@ var _this = this;

switch (_a.label) {
case 0:
if (!!this.dbOpen) return [3 /*break*/, 2];
return [4 /*yield*/, this.open()];
case 0: return [4 /*yield*/, this.validateDbIsOpen()];
case 1:
_a.sent();
_a.label = 2;
case 2: return [2 /*return*/, new Promise(function (resolve, reject) {
if (!_this.db) {
return reject(BrowserAuthError.createDatabaseNotOpenError());
}
var transaction = _this.db.transaction([_this.tableName], "readwrite");
var objectStore = transaction.objectStore(_this.tableName);
var dbDelete = objectStore.delete(key);
dbDelete.addEventListener("success", function (e) {
var event = e;
resolve(event.target.result === undefined);
});
dbDelete.addEventListener("error", function (e) { return reject(e); });
})];
return [2 /*return*/, new Promise(function (resolve, reject) {
if (!_this.db) {
return reject(BrowserAuthError.createDatabaseNotOpenError());
}
var transaction = _this.db.transaction([_this.tableName], "readwrite");
var objectStore = transaction.objectStore(_this.tableName);
var dbDelete = objectStore.delete(key);
dbDelete.addEventListener("success", function () { return resolve(); });
dbDelete.addEventListener("error", function (e) { return reject(e); });
})];
}

@@ -153,3 +154,6 @@ });

};
DatabaseStorage.prototype.clear = function () {
/**
* Get all the keys from the storage object as an iterable array of strings.
*/
DatabaseStorage.prototype.getKeys = function () {
return __awaiter(this, void 0, void 0, function () {

@@ -159,21 +163,18 @@ var _this = this;

switch (_a.label) {
case 0:
if (!!this.dbOpen) return [3 /*break*/, 2];
return [4 /*yield*/, this.open()];
case 0: return [4 /*yield*/, this.validateDbIsOpen()];
case 1:
_a.sent();
_a.label = 2;
case 2: return [2 /*return*/, new Promise(function (resolve, reject) {
if (!_this.db) {
return reject(BrowserAuthError.createDatabaseNotOpenError());
}
var transaction = _this.db.transaction([_this.tableName], "readwrite");
var objectStore = transaction.objectStore(_this.tableName);
var dbDelete = objectStore.clear();
dbDelete.addEventListener("success", function (e) {
var event = e;
resolve(event.target.result === undefined);
});
dbDelete.addEventListener("error", function (e) { return reject(e); });
})];
return [2 /*return*/, new Promise(function (resolve, reject) {
if (!_this.db) {
return reject(BrowserAuthError.createDatabaseNotOpenError());
}
var transaction = _this.db.transaction([_this.tableName], "readonly");
var objectStore = transaction.objectStore(_this.tableName);
var dbGetKeys = objectStore.getAllKeys();
dbGetKeys.addEventListener("success", function (e) {
var event = e;
resolve(event.target.result);
});
dbGetKeys.addEventListener("error", function (e) { return reject(e); });
})];
}

@@ -183,2 +184,47 @@ });

};
/**
*
* Checks whether there is an object under the search key in the object store
*/
DatabaseStorage.prototype.containsKey = function (key) {
return __awaiter(this, void 0, void 0, function () {
var _this = this;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.validateDbIsOpen()];
case 1:
_a.sent();
return [2 /*return*/, new Promise(function (resolve, reject) {
if (!_this.db) {
return reject(BrowserAuthError.createDatabaseNotOpenError());
}
var transaction = _this.db.transaction([_this.tableName], "readonly");
var objectStore = transaction.objectStore(_this.tableName);
var dbContainsKey = objectStore.count(key);
dbContainsKey.addEventListener("success", function (e) {
var event = e;
resolve(event.target.result === 1);
});
dbContainsKey.addEventListener("error", function (e) { return reject(e); });
})];
}
});
});
};
/**
* Deletes the MSAL database. The database is deleted rather than cleared to make it possible
* for client applications to downgrade to a previous MSAL version without worrying about forward compatibility issues
* with IndexedDB database versions.
*/
DatabaseStorage.prototype.deleteDatabase = function () {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, new Promise(function (resolve, reject) {
var deleteDbRequest = window.indexedDB.deleteDatabase(DB_NAME);
deleteDbRequest.addEventListener("success", function () { return resolve(true); });
deleteDbRequest.addEventListener("error", function () { return reject(false); });
})];
});
});
};
return DatabaseStorage;

@@ -185,0 +231,0 @@ }());

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

export interface IWindowStorage {
export interface IWindowStorage<T> {
/**

@@ -6,3 +6,3 @@ * Get the item from the window storage object matching the given key.

*/
getItem(key: string): string | null;
getItem(key: string): T | null;
/**

@@ -13,3 +13,3 @@ * Sets the item in the window storage object with the given key.

*/
setItem(key: string, value: string): void;
setItem(key: string, value: T): void;
/**

@@ -16,0 +16,0 @@ * Removes the item in the window storage object matching the given key.

import { IWindowStorage } from "./IWindowStorage";
export declare class MemoryStorage implements IWindowStorage {
export declare class MemoryStorage<T> implements IWindowStorage<T> {
private cache;
constructor();
getItem(key: string): string | null;
setItem(key: string, value: string): void;
getItem(key: string): T | null;
setItem(key: string, value: T): void;
removeItem(key: string): void;

@@ -8,0 +8,0 @@ getKeys(): string[];

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

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

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -3,0 +3,0 @@ import { Authority, IdTokenEntity, AuthToken, AccountEntity, ScopeSet, AccessTokenEntity } from '@azure/msal-common';

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -3,0 +3,0 @@ import { __assign } from '../_virtual/_tslib.js';

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

import { Logger } from "..";
/**

@@ -7,3 +8,4 @@ * This class implements functions used by the browser library to perform cryptography operations such as

private _keygenAlgorithmOptions;
constructor();
private logger;
constructor(logger: Logger);
/**

@@ -10,0 +12,0 @@ * Returns a sha-256 hash of the given dataString as an ArrayBuffer.

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -28,3 +28,4 @@ import { __awaiter, __generator } from '../_virtual/_tslib.js';

var BrowserCrypto = /** @class */ (function () {
function BrowserCrypto() {
function BrowserCrypto(logger) {
this.logger = logger;
if (!(this.hasCryptoAPI())) {

@@ -31,0 +32,0 @@ throw BrowserAuthError.createCryptoNotAvailableError("Browser crypto or msCrypto object not available.");

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

import { ICrypto, PkceCodes, SignedHttpRequest, SignedHttpRequestParameters } from "@azure/msal-common";
import { ICrypto, Logger, PkceCodes, SignedHttpRequest, SignedHttpRequestParameters } from "@azure/msal-common";
import { AsyncMemoryStorage } from "../cache/AsyncMemoryStorage";
export declare type CachedKeyPair = {

@@ -9,2 +10,9 @@ publicKey: CryptoKey;

/**
* MSAL CryptoKeyStore DB Version 2
*/
export declare type CryptoKeyStore = {
asymmetricKeys: AsyncMemoryStorage<CachedKeyPair>;
symmetricKeys: AsyncMemoryStorage<CryptoKey>;
};
/**
* This class implements MSAL's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and

@@ -19,9 +27,7 @@ * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636).

private pkceGenerator;
private logger;
private static POP_KEY_USAGES;
private static EXTRACTABLE;
private static DB_VERSION;
private static DB_NAME;
private static TABLE_NAME;
private cache;
constructor();
constructor(logger: Logger);
/**

@@ -28,0 +34,0 @@ * Creates a new random GUID - used to populate state and nonce.

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -9,6 +9,6 @@ import { __awaiter, __generator } from '../_virtual/_tslib.js';

import { BrowserCrypto } from './BrowserCrypto.js';
import { DatabaseStorage } from '../cache/DatabaseStorage.js';
import { BrowserStringUtils } from '../utils/BrowserStringUtils.js';
import { KEY_FORMAT_JWK } from '../utils/BrowserConstants.js';
import { BrowserAuthError } from '../error/BrowserAuthError.js';
import { AsyncMemoryStorage } from '../cache/AsyncMemoryStorage.js';

@@ -24,5 +24,6 @@ /*

var CryptoOps = /** @class */ (function () {
function CryptoOps() {
function CryptoOps(logger) {
this.logger = logger;
// Browser crypto needs to be validated first before any other classes can be set.
this.browserCrypto = new BrowserCrypto();
this.browserCrypto = new BrowserCrypto(this.logger);
this.b64Encode = new Base64Encode();

@@ -32,3 +33,6 @@ this.b64Decode = new Base64Decode();

this.pkceGenerator = new PkceGenerator(this.browserCrypto);
this.cache = new DatabaseStorage(CryptoOps.DB_NAME, CryptoOps.TABLE_NAME, CryptoOps.DB_VERSION);
this.cache = {
asymmetricKeys: new AsyncMemoryStorage(this.logger),
symmetricKeys: new AsyncMemoryStorage(this.logger)
};
}

@@ -98,3 +102,3 @@ /**

// Store Keypair data in keystore
return [4 /*yield*/, this.cache.put(publicJwkHash, {
return [4 /*yield*/, this.cache.asymmetricKeys.setItem(publicJwkHash, {
privateKey: unextractablePrivateKey,

@@ -119,4 +123,13 @@ publicKey: keyPair.publicKey,

return __awaiter(this, void 0, void 0, function () {
var keyFound;
return __generator(this, function (_a) {
return [2 /*return*/, this.cache.delete(kid)];
switch (_a.label) {
case 0: return [4 /*yield*/, this.cache.asymmetricKeys.removeItem(kid)];
case 1:
_a.sent();
return [4 /*yield*/, this.cache.asymmetricKeys.containsKey(kid)];
case 2:
keyFound = _a.sent();
return [2 /*return*/, !keyFound];
}
});

@@ -130,4 +143,18 @@ });

return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, this.cache.clear()];
var dataStoreNames, databaseStorage, _a;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
dataStoreNames = Object.keys(this.cache);
databaseStorage = this.cache[dataStoreNames[0]];
if (!databaseStorage) return [3 /*break*/, 2];
return [4 /*yield*/, databaseStorage.deleteDatabase()];
case 1:
_a = _b.sent();
return [3 /*break*/, 3];
case 2:
_a = false;
_b.label = 3;
case 3: return [2 /*return*/, _a];
}
});

@@ -146,3 +173,3 @@ });

switch (_a.label) {
case 0: return [4 /*yield*/, this.cache.get(kid)];
case 0: return [4 /*yield*/, this.cache.asymmetricKeys.getItem(kid)];
case 1:

@@ -180,5 +207,2 @@ cachedKeyPair = _a.sent();

CryptoOps.EXTRACTABLE = true;
CryptoOps.DB_VERSION = 1;
CryptoOps.DB_NAME = "msal.db";
CryptoOps.TABLE_NAME = CryptoOps.DB_NAME + ".keys";
return CryptoOps;

@@ -185,0 +209,0 @@ }());

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -3,0 +3,0 @@ import { MathUtils } from '../utils/MathUtils.js';

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -3,0 +3,0 @@ import { __awaiter, __generator } from '../_virtual/_tslib.js';

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

import { SignedHttpRequestParameters } from "@azure/msal-common";
import { LoggerOptions, SignedHttpRequestParameters } from "@azure/msal-common";
export declare type SignedHttpRequestOptions = {
loggerOptions: LoggerOptions;
};
export declare class SignedHttpRequest {

@@ -6,3 +9,4 @@ private popTokenGenerator;

private shrParameters;
constructor(shrParameters: SignedHttpRequestParameters);
private logger;
constructor(shrParameters: SignedHttpRequestParameters, shrOptions?: SignedHttpRequestOptions);
/**

@@ -9,0 +13,0 @@ * Generates and caches a keypair for the given request options.

@@ -1,6 +0,7 @@

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';
import { __awaiter, __generator } from '../_virtual/_tslib.js';
import { CryptoOps } from './CryptoOps.js';
import { PopTokenGenerator } from '@azure/msal-common';
import { Logger, PopTokenGenerator } from '@azure/msal-common';
import { name, version } from '../packageMetadata.js';

@@ -12,4 +13,6 @@ /*

var SignedHttpRequest = /** @class */ (function () {
function SignedHttpRequest(shrParameters) {
this.cryptoOps = new CryptoOps();
function SignedHttpRequest(shrParameters, shrOptions) {
var loggerOptions = (shrOptions && shrOptions.loggerOptions) || {};
this.logger = new Logger(loggerOptions, name, version);
this.cryptoOps = new CryptoOps(this.logger);
this.popTokenGenerator = new PopTokenGenerator(this.cryptoOps);

@@ -57,3 +60,6 @@ this.shrParameters = shrParameters;

return __generator(this, function (_a) {
return [2 /*return*/, this.cryptoOps.removeTokenBindingKey(publicKeyThumbprint)];
switch (_a.label) {
case 0: return [4 /*yield*/, this.cryptoOps.removeTokenBindingKey(publicKeyThumbprint)];
case 1: return [2 /*return*/, _a.sent()];
}
});

@@ -60,0 +66,0 @@ });

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -3,0 +3,0 @@ import { BrowserStringUtils } from '../utils/BrowserStringUtils.js';

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -3,0 +3,0 @@ import { BrowserStringUtils } from '../utils/BrowserStringUtils.js';

@@ -146,2 +146,6 @@ import { AuthError } from "@azure/msal-common";

};
databaseUnavailable: {
code: string;
desc: string;
};
};

@@ -301,3 +305,7 @@ /**

static createSigningKeyNotFoundInStorageError(keyId: string): BrowserAuthError;
/**
* Create an error when IndexedDB is unavailable
*/
static createDatabaseUnavailableError(): BrowserAuthError;
}
//# sourceMappingURL=BrowserAuthError.d.ts.map

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -104,3 +104,3 @@ import { __extends } from '../_virtual/_tslib.js';

code: "no_token_request_cache_error",
desc: "No token request in found in cache."
desc: "No token request found in cache."
},

@@ -154,2 +154,6 @@ unableToParseTokenRequestCacheError: {

desc: "Cryptographic Key or Keypair not found in browser storage."
},
databaseUnavailable: {
code: "database_unavailable",
desc: "IndexedDB, which is required for persistent cryptographic key storage, is unavailable. This may be caused by browser privacy features which block persistent storage in third-party contexts."
}

@@ -388,2 +392,8 @@ };

};
/**
* Create an error when IndexedDB is unavailable
*/
BrowserAuthError.createDatabaseUnavailableError = function () {
return new BrowserAuthError(BrowserAuthErrorMessage.databaseUnavailable.code, BrowserAuthErrorMessage.databaseUnavailable.desc);
};
return BrowserAuthError;

@@ -390,0 +400,0 @@ }(AuthError));

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -3,0 +3,0 @@ import { __extends } from '../_virtual/_tslib.js';

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -3,0 +3,0 @@ import { AccountEntity, CacheManager } from '@azure/msal-common';

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -3,0 +3,0 @@ import { EventType } from './EventType.js';

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

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

@@ -6,3 +6,3 @@ /**

export { PublicClientApplication } from "./app/PublicClientApplication";
export { Configuration, BrowserAuthOptions, CacheOptions, BrowserSystemOptions } from "./config/Configuration";
export { Configuration, BrowserAuthOptions, CacheOptions, BrowserSystemOptions, BrowserConfiguration } from "./config/Configuration";
export { InteractionType, InteractionStatus, BrowserCacheLocation, WrapperSKU, ApiId } from "./utils/BrowserConstants";

@@ -26,5 +26,5 @@ export { BrowserUtils } from "./utils/BrowserUtils";

export { EventType } from "./event/EventType";
export { SignedHttpRequest } from "./crypto/SignedHttpRequest";
export { AuthenticationScheme, AccountInfo, AccountEntity, AuthenticationResult, AuthError, AuthErrorMessage, ClientAuthError, ClientAuthErrorMessage, ClientConfigurationError, ClientConfigurationErrorMessage, InteractionRequiredAuthError, InteractionRequiredAuthErrorMessage, ServerError, INetworkModule, NetworkResponse, NetworkRequestOptions, ILoggerCallback, Logger, LogLevel, ProtocolMode, ExternalTokenResponse, StringUtils, UrlString } from "@azure/msal-common";
export { SignedHttpRequest, SignedHttpRequestOptions } from "./crypto/SignedHttpRequest";
export { AuthenticationScheme, AccountInfo, AccountEntity, AuthenticationResult, AuthError, AuthErrorMessage, ClientAuthError, ClientAuthErrorMessage, ClientConfigurationError, ClientConfigurationErrorMessage, InteractionRequiredAuthError, InteractionRequiredAuthErrorMessage, ServerError, INetworkModule, NetworkResponse, NetworkRequestOptions, ILoggerCallback, Logger, LogLevel, ProtocolMode, ExternalTokenResponse, StringUtils, UrlString, AuthenticationHeaderParser } from "@azure/msal-common";
export { version } from "./packageMetadata";
//# sourceMappingURL=index.d.ts.map

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -13,4 +13,4 @@ export { PublicClientApplication } from './app/PublicClientApplication.js';

export { SignedHttpRequest } from './crypto/SignedHttpRequest.js';
export { AccountEntity, AuthError, AuthErrorMessage, AuthenticationScheme, ClientAuthError, ClientAuthErrorMessage, ClientConfigurationError, ClientConfigurationErrorMessage, InteractionRequiredAuthError, InteractionRequiredAuthErrorMessage, LogLevel, Logger, ProtocolMode, ServerError, StringUtils, UrlString } from '@azure/msal-common';
export { AccountEntity, AuthError, AuthErrorMessage, AuthenticationHeaderParser, AuthenticationScheme, ClientAuthError, ClientAuthErrorMessage, ClientConfigurationError, ClientConfigurationErrorMessage, InteractionRequiredAuthError, InteractionRequiredAuthErrorMessage, LogLevel, Logger, ProtocolMode, ServerError, StringUtils, UrlString } from '@azure/msal-common';
export { version } from './packageMetadata.js';
//# sourceMappingURL=index.js.map

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';
import { __awaiter, __generator, __spread, __assign } from '../_virtual/_tslib.js';
import { AccountEntity, AuthenticationScheme, UrlString, ServerTelemetryManager } from '@azure/msal-common';
import { AccountEntity, AuthenticationScheme, ClientConfigurationError, UrlString, ServerTelemetryManager } from '@azure/msal-common';
import { version } from '../packageMetadata.js';

@@ -83,2 +83,10 @@ import { BrowserConstants } from '../utils/BrowserConstants.js';

else {
if (request.authenticationScheme === AuthenticationScheme.SSH) {
if (!request.sshJwk) {
throw ClientConfigurationError.createMissingSshJwkError();
}
if (!request.sshKid) {
throw ClientConfigurationError.createMissingSshKidError();
}
}
this.logger.verbose("Authentication Scheme set to \"" + request.authenticationScheme + "\" as configured in Auth request");

@@ -85,0 +93,0 @@ }

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -3,0 +3,0 @@ import { __extends, __awaiter, __generator } from '../_virtual/_tslib.js';

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -128,3 +128,3 @@ import { __extends, __awaiter, __generator } from '../_virtual/_tslib.js';

case 4:
if (!!BrowserUtils.isInIframe()) return [3 /*break*/, 9];
if (!(!BrowserUtils.isInIframe() || this.config.system.allowRedirectInIframe)) return [3 /*break*/, 9];
/*

@@ -131,0 +131,0 @@ * Returned from authority using redirect - need to perform navigation before processing response

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -3,0 +3,0 @@ import { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -3,0 +3,0 @@ import { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -3,0 +3,0 @@ import { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -3,0 +3,0 @@ import { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -3,0 +3,0 @@ import { __awaiter, __generator } from '../_virtual/_tslib.js';

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -3,0 +3,0 @@ import { __extends } from '../_virtual/_tslib.js';

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -3,0 +3,0 @@ import { __extends, __awaiter, __generator } from '../_virtual/_tslib.js';

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -3,0 +3,0 @@ import { __extends, __awaiter, __generator } from '../_virtual/_tslib.js';

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

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

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -3,0 +3,0 @@ import { __awaiter, __generator } from '../_virtual/_tslib.js';

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -3,0 +3,0 @@ import { __awaiter, __generator } from '../_virtual/_tslib.js';

export declare const name = "@azure/msal-browser";
export declare const version = "2.18.0";
export declare const version = "2.19.0";
//# sourceMappingURL=packageMetadata.d.ts.map

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';
/* eslint-disable header/header */
var name = "@azure/msal-browser";
var version = "2.18.0";
var version = "2.19.0";
export { name, version };
//# sourceMappingURL=packageMetadata.js.map

@@ -137,2 +137,5 @@ import { PopupRequest } from "../request/PopupRequest";

}
export declare const DB_NAME = "msal.db";
export declare const DB_VERSION = 1;
export declare const DB_TABLE_NAME: string;
//# sourceMappingURL=BrowserConstants.d.ts.map

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -157,4 +157,8 @@ import { OIDC_DEFAULT_SCOPES } from '@azure/msal-common';

})(WrapperSKU || (WrapperSKU = {}));
// DatabaseStorage Constants
var DB_NAME = "msal.db";
var DB_VERSION = 1;
var DB_TABLE_NAME = DB_NAME + ".keys";
export { ApiId, BrowserCacheLocation, BrowserConstants, DEFAULT_REQUEST, HTTP_REQUEST_TYPE, InMemoryCacheKeys, InteractionStatus, InteractionType, KEY_FORMAT_JWK, TemporaryCacheKeys, WrapperSKU };
export { ApiId, BrowserCacheLocation, BrowserConstants, DB_NAME, DB_TABLE_NAME, DB_VERSION, DEFAULT_REQUEST, HTTP_REQUEST_TYPE, InMemoryCacheKeys, InteractionStatus, InteractionType, KEY_FORMAT_JWK, TemporaryCacheKeys, WrapperSKU };
//# sourceMappingURL=BrowserConstants.js.map

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -3,0 +3,0 @@ import { StringUtils, ProtocolUtils, ClientAuthError, UrlString } from '@azure/msal-common';

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

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

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -3,0 +3,0 @@ import { Constants, UrlString } from '@azure/msal-common';

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

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

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

/*! @azure/msal-browser v2.18.0 2021-10-05 */
/*! @azure/msal-browser v2.19.0 2021-11-02 */
'use strict';

@@ -3,0 +3,0 @@ import { StringUtils, Constants } from '@azure/msal-common';

@@ -13,3 +13,3 @@ {

},
"version": "2.18.0",
"version": "2.19.0",
"description": "Microsoft Authentication Library for js",

@@ -76,2 +76,3 @@ "keywords": [

"dotenv": "^8.2.0",
"fake-indexeddb": "^3.1.3",
"husky": "^3.0.9",

@@ -94,4 +95,4 @@ "jest": "^27.0.4",

"dependencies": {
"@azure/msal-common": "^5.0.1"
"@azure/msal-common": "^5.1.0"
}
}

@@ -62,3 +62,3 @@ # Microsoft Authentication Library for JavaScript (MSAL.js) 2.0 for Browser-Based Single-Page Applications

```html
<script type="text/javascript" src="https://alcdn.msauth.net/browser/2.18.0/js/msal-browser.min.js"></script>
<script type="text/javascript" src="https://alcdn.msauth.net/browser/2.19.0/js/msal-browser.min.js"></script>
```

@@ -65,0 +65,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

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

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

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

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

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

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

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

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

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

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

Sorry, the diff of this file is too big to display

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

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

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

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

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

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

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

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

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 too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

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

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc