UNPKG

@azure/msal-common

Version:
68 lines (57 loc) 1.88 kB
/* * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. */ import { AuthError } from "./AuthError.js"; /** * Converts a numeric tag from MSAL Runtime to a 5-character string representation. * Tags are encoded as 30-bit values (6 bits per character) using a custom symbol space. * @param tag - The numeric tag to convert * @returns The string representation of the tag */ function tagToString(tag: number): string { if (tag === 0) { return "UNTAG"; } const tagSymbolSpace = "abcdefghijklmnopqrstuvwxyz0123456789****************************"; let tagBuffer = "*****"; const chars = [ tagSymbolSpace[(tag >> 24) & 0x3f], tagSymbolSpace[(tag >> 18) & 0x3f], tagSymbolSpace[(tag >> 12) & 0x3f], tagSymbolSpace[(tag >> 6) & 0x3f], tagSymbolSpace[(tag >> 0) & 0x3f], ]; tagBuffer = chars.join(""); return tagBuffer; } /** * Error class for MSAL Runtime errors that preserves detailed broker information */ export class PlatformBrokerError extends AuthError { /** * Numeric error code from MSAL Runtime */ public statusCode: number; /** * Error tag from MSAL Runtime */ public tag: string; constructor( errorStatus: string, errorContext: string, errorCode: number, errorTag: number ) { const tagString = tagToString(errorTag); const enhancedErrorContext = errorContext ? `${errorContext} (Error Code: ${errorCode}, Tag: ${tagString})` : `(Error Code: ${errorCode}, Tag: ${tagString})`; super(errorStatus, enhancedErrorContext); this.name = "PlatformBrokerError"; this.statusCode = errorCode; this.tag = tagString; Object.setPrototypeOf(this, PlatformBrokerError.prototype); } }