text: /*
   * Copyright (c) Microsoft Corporation. All rights reserved.
   * Licensed under the MIT License.
   */
  import * as tslib_1 from "tslib";
  import { ClientAuthError } from "./ClientAuthError";
  export var ClientConfigurationErrorMessage = {
      configurationNotSet: {
          code: "no_config_set",
          desc: "Configuration has not been set. Please call the UserAgentApplication constructor with a valid Configuration object."
      },
      storageNotSupported: {
          code: "storage_not_supported",
          desc: "The value for the cacheLocation is not supported."
      },
      noRedirectCallbacksSet: {
          code: "no_redirect_callbacks",
          desc: "No redirect callbacks have been set. Please call handleRedirectCallback() with the appropriate function arguments before continuing. " +
              "More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics."
      },
      invalidCallbackObject: {
          code: "invalid_callback_object",
          desc: "The object passed for the callback was invalid. " +
              "More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics."
      },
      scopesRequired: {
          code: "scopes_required",
          desc: "Scopes are required to obtain an access token."
      },
      emptyScopes: {
          code: "empty_input_scopes_error",
          desc: "Scopes cannot be passed as empty array."
      },
      nonArrayScopes: {
          code: "nonarray_input_scopes_error",
          desc: "Scopes cannot be passed as non-array."
      },
      invalidPrompt: {
          code: "invalid_prompt_value",
          desc: "Supported prompt values are 'login', 'select_account', 'consent' and 'none'",
      },
      invalidAuthorityType: {
          code: "invalid_authority_type",
          desc: "The given authority is not a valid type of authority supported by MSAL. Please see here for valid authorities: <insert URL here>."
      },
      authorityUriInsecure: {
          code: "authority_uri_insecure",
          desc: "Authority URIs must use https."
      },
      authorityUriInvalidPath: {
          code: "authority_uri_invalid_path",
          desc: "Given authority URI is invalid."
      },
      unsupportedAuthorityValidation: {
          code: "unsupported_authority_validation",
          desc: "The authority validation is not supported for this authority type."
      },
      untrustedAuthority: {
          code: "untrusted_authority",
          desc: "The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter or set validateAuthority=false."
      },
      b2cAuthorityUriInvalidPath: {
          code: "b2c_authority_uri_invalid_path",
          desc: "The given URI for the B2C authority is invalid."
      },
      b2cKnownAuthoritiesNotSet: {
          code: "b2c_known_authorities_not_set",
          desc: "Must set known authorities when validateAuthority is set to True and using B2C"
      },
      claimsRequestParsingError: {
          code: "claims_request_parsing_error",
          desc: "Could not parse the given claims request object."
      },
      emptyRequestError: {
          code: "empty_request_error",
          desc: "Request object is required."
      },
      invalidCorrelationIdError: {
          code: "invalid_guid_sent_as_correlationId",
          desc: "Please set the correlationId as a valid guid"
      },
      telemetryConfigError: {
          code: "telemetry_config_error",
          desc: "Telemetry config is not configured with required values"
      },
      ssoSilentError: {
          code: "sso_silent_error",
          desc: "request must contain either sid or login_hint"
      },
      invalidAuthorityMetadataError: {
          code: "authority_metadata_error",
          desc: "Invalid authorityMetadata. Must be a JSON object containing authorization_endpoint, end_session_endpoint, and issuer fields."
      }
  };
  /**
   * Error thrown when there is an error in configuration of the .js library.
   */
  var ClientConfigurationError = /** @class */ (function (_super) {
      tslib_1.__extends(ClientConfigurationError, _super);
      function ClientConfigurationError(errorCode, errorMessage) {
          var _this = _super.call(this, errorCode, errorMessage) || this;
          _this.name = "ClientConfigurationError";
          Object.setPrototypeOf(_this, ClientConfigurationError.prototype);
          return _this;
      }
      ClientConfigurationError.createNoSetConfigurationError = function () {
          return new ClientConfigurationError(ClientConfigurationErrorMessage.configurationNotSet.code, "" + ClientConfigurationErrorMessage.configurationNotSet.desc);
      };
      ClientConfigurationError.createStorageNotSupportedError = function (givenCacheLocation) {
          return new ClientConfigurationError(ClientConfigurationErrorMessage.storageNotSupported.code, ClientConfigurationErrorMessage.storageNotSupported.desc + " Given location: " + givenCacheLocation);
      };
      ClientConfigurationError.createRedirectCallbacksNotSetError = function () {
          return new ClientConfigurationError(ClientConfigurationErrorMessage.noRedirectCallbacksSet.code, ClientConfigurationErrorMessage.noRedirectCallbacksSet.desc);
      };
      ClientConfigurationError.createInvalidCallbackObjectError = function (callbackObject) {
          return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidCallbackObject.code, ClientConfigurationErrorMessage.invalidCallbackObject.desc + " Given value for callback function: " + callbackObject);
      };
      ClientConfigurationError.createEmptyScopesArrayError = function (scopesValue) {
          return new ClientConfigurationError(ClientConfigurationErrorMessage.emptyScopes.code, ClientConfigurationErrorMessage.emptyScopes.desc + " Given value: " + scopesValue + ".");
      };
      ClientConfigurationError.createScopesNonArrayError = function (scopesValue) {
          return new ClientConfigurationError(ClientConfigurationErrorMessage.nonArrayScopes.code, ClientConfigurationErrorMessage.nonArrayScopes.desc + " Given value: " + scopesValue + ".");
      };
      ClientConfigurationError.createScopesRequiredError = function (scopesValue) {
          return new ClientConfigurationError(ClientConfigurationErrorMessage.scopesRequired.code, ClientConfigurationErrorMessage.scopesRequired.desc + " Given value: " + scopesValue);
      };
      ClientConfigurationError.createInvalidPromptError = function (promptValue) {
          return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidPrompt.code, ClientConfigurationErrorMessage.invalidPrompt.desc + " Given value: " + promptValue);
      };
      ClientConfigurationError.createClaimsRequestParsingError = function (claimsRequestParseError) {
          return new ClientConfigurationError(ClientConfigurationErrorMessage.claimsRequestParsingError.code, ClientConfigurationErrorMessage.claimsRequestParsingError.desc + " Given value: " + claimsRequestParseError);
      };
      ClientConfigurationError.createEmptyRequestError = function () {
          var _a = ClientConfigurationErrorMessage.emptyRequestError, code = _a.code, desc = _a.desc;
          return new ClientConfigurationError(code, desc);
      };
      ClientConfigurationError.createInvalidCorrelationIdError = function () {
          return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidCorrelationIdError.code, ClientConfigurationErrorMessage.invalidCorrelationIdError.desc);
      };
      ClientConfigurationError.createKnownAuthoritiesNotSetError = function () {
          return new ClientConfigurationError(ClientConfigurationErrorMessage.b2cKnownAuthoritiesNotSet.code, ClientConfigurationErrorMessage.b2cKnownAuthoritiesNotSet.desc);
      };
      ClientConfigurationError.createInvalidAuthorityTypeError = function () {
          return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAuthorityType.code, ClientConfigurationErrorMessage.invalidAuthorityType.desc);
      };
      ClientConfigurationError.createUntrustedAuthorityError = function (host) {
          return new ClientConfigurationError(ClientConfigurationErrorMessage.untrustedAuthority.code, ClientConfigurationErrorMessage.untrustedAuthority.desc + " Provided Authority: " + host);
      };
      ClientConfigurationError.createTelemetryConfigError = function (config) {
          var _a = ClientConfigurationErrorMessage.telemetryConfigError, code = _a.code, desc = _a.desc;
          var requiredKeys = {
              applicationName: "string",
              applicationVersion: "string",
              telemetryEmitter: "function"
          };
          var missingKeys = Object.keys(requiredKeys)
              .reduce(function (keys, key) {
              return config[key] ? keys : keys.concat([key + " (" + requiredKeys[key] + ")"]);
          }, []);
          return new ClientConfigurationError(code, desc + " mising values: " + missingKeys.join(","));
      };
      ClientConfigurationError.createSsoSilentError = function () {
          return new ClientConfigurationError(ClientConfigurationErrorMessage.ssoSilentError.code, ClientConfigurationErrorMessage.ssoSilentError.desc);
      };
      ClientConfigurationError.createInvalidAuthorityMetadataError = function () {
          return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAuthorityMetadataError.code, ClientConfigurationErrorMessage.invalidAuthorityMetadataError.desc);
      };
      return ClientConfigurationError;
  }(ClientAuthError));
  export { ClientConfigurationError };
  //# sourceMappingURL=ClientConfigurationError.js.map