{"version":3,"file":"index.mjs","sources":["../../../node_modules/.pnpm/@propelauth+node-apis@2.1.36/node_modules/@propelauth/node-apis/dist/index.mjs","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/runtime/webcrypto.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/lib/buffer_utils.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/runtime/base64url.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/util/errors.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/lib/crypto_key.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/lib/invalid_key_input.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/runtime/is_key_like.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/lib/is_disjoint.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/lib/is_object.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/runtime/check_key_length.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/lib/is_jwk.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/runtime/jwk_to_key.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/runtime/normalize_key.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/runtime/asn1.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/key/import.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/lib/check_key_type.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/lib/validate_crit.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/lib/validate_algorithms.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/runtime/subtle_dsa.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/runtime/get_sign_verify_key.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/runtime/verify.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/jws/flattened/verify.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/jws/compact/verify.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/lib/epoch.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/lib/secs.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/lib/jwt_claims_set.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/jwt/verify.js","../src/validators.ts","../src/auth.ts"],"sourcesContent":["var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\n\n// src/exceptions.ts\nvar CreateUserException = class extends Error {\n  constructor(message) {\n    super(message);\n    this.fieldToErrors = JSON.parse(message);\n  }\n};\nvar MigrateUserException = class extends Error {\n  constructor(message) {\n    super(message);\n    this.fieldToErrors = JSON.parse(message);\n  }\n};\nvar MigrateUserPasswordException = class extends Error {\n  constructor(message) {\n    super(message);\n    this.fieldToErrors = JSON.parse(message);\n  }\n};\nvar CreateOrgException = class extends Error {\n  constructor(message) {\n    super(message);\n    this.fieldToErrors = JSON.parse(message);\n  }\n};\nvar AddUserToOrgException = class extends Error {\n  constructor(message) {\n    super(message);\n    this.fieldToErrors = JSON.parse(message);\n  }\n};\nvar ChangeUserRoleInOrgException = class extends Error {\n  constructor(message) {\n    super(message);\n    this.fieldToErrors = JSON.parse(message);\n  }\n};\nvar RemoveUserFromOrgException = class extends Error {\n  constructor(message) {\n    super(message);\n    this.fieldToErrors = JSON.parse(message);\n  }\n};\nvar UpdateOrgException = class extends Error {\n  constructor(message) {\n    super(message);\n    this.fieldToErrors = JSON.parse(message);\n  }\n};\nvar RevokePendingOrgInviteException = class extends Error {\n  constructor(message) {\n    super(message);\n    this.fieldToErrors = JSON.parse(message);\n  }\n};\nvar ForbiddenException = class extends Error {\n  constructor(message) {\n    super(message);\n    this.message = message;\n    this.status = 403;\n  }\n};\nvar MagicLinkCreationException = class extends Error {\n  constructor(message) {\n    super(message);\n    this.fieldToErrors = JSON.parse(message);\n  }\n};\nvar AccessTokenCreationException = class extends Error {\n  constructor(message) {\n    super(message);\n    this.fieldToErrors = JSON.parse(message);\n  }\n};\nvar UnauthorizedException = class extends Error {\n  constructor(message) {\n    super(message);\n    this.message = message;\n    this.status = 401;\n  }\n};\nvar UnexpectedException = class extends Error {\n  constructor(message) {\n    super(message);\n    this.message = message;\n    this.status = 503;\n  }\n};\nvar UpdateUserEmailException = class extends Error {\n  constructor(message) {\n    super(message);\n    this.fieldToErrors = JSON.parse(message);\n  }\n};\nvar UpdateUserPasswordException = class extends Error {\n  constructor(message) {\n    super(message);\n    this.fieldToErrors = JSON.parse(message);\n  }\n};\nvar UpdateUserMetadataException = class extends Error {\n  constructor(message) {\n    super(message);\n    this.fieldToErrors = JSON.parse(message);\n  }\n};\nvar UserNotFoundException = class extends Error {\n};\nvar ApiKeyValidateException = class extends Error {\n  constructor(message) {\n    super(message);\n    this.fieldToErrors = JSON.parse(message);\n  }\n};\nvar ApiKeyValidateRateLimitedException = class extends Error {\n  constructor(errorBody) {\n    super(errorBody);\n    const parsedErrorBody = JSON.parse(errorBody);\n    this.waitSeconds = parsedErrorBody.wait_seconds;\n    this.userFacingError = parsedErrorBody.user_facing_error;\n    this.errorCode = parsedErrorBody.error_code;\n  }\n};\nvar RateLimitedException = class extends Error {\n  constructor(message) {\n    super(message);\n  }\n};\nvar ApiKeyDeleteException = class extends Error {\n  constructor(message) {\n    super(message);\n    this.fieldToErrors = JSON.parse(message);\n  }\n};\nvar ApiKeyUpdateException = class extends Error {\n  constructor(message) {\n    super(message);\n    this.fieldToErrors = JSON.parse(message);\n  }\n};\nvar ApiKeyCreateException = class extends Error {\n  constructor(message) {\n    super(message);\n    this.fieldToErrors = JSON.parse(message);\n  }\n};\nvar ApiKeyImportException = class extends Error {\n  constructor(message) {\n    super(message);\n    this.fieldToErrors = JSON.parse(message);\n  }\n};\nvar ApiKeyFetchException = class extends Error {\n  constructor(message) {\n    super(message);\n    this.fieldToErrors = JSON.parse(message);\n  }\n};\nvar BadRequestException = class extends Error {\n  constructor(message) {\n    super(message);\n    this.fieldToErrors = JSON.parse(message);\n  }\n};\nvar FeatureGatedException = class extends Error {\n  constructor() {\n    super(\"This feature isn't available on your current pricing plan\");\n  }\n};\nvar IncorrectMfaCodeException = class extends Error {\n};\nvar MfaNotEnabledException = class extends Error {\n};\nvar InvalidRequestFieldsException = class extends Error {\n  constructor(errorBody) {\n    super(\"Invalid request\");\n    this.errorBody = JSON.parse(errorBody);\n  }\n};\n\n// src/http.ts\nvar BACKEND_API_BASE_URL = \"https://propelauth-api.com\";\nfunction httpRequest(authUrl, apiKey, path, method, body) {\n  let headers = {\n    Authorization: \"Bearer \" + apiKey,\n    \"Content-Type\": \"application/json\",\n    \"X-Propelauth-url\": authUrl.hostname\n  };\n  return fetch(BACKEND_API_BASE_URL + path, {\n    method,\n    headers,\n    body\n  }).then((response) => {\n    return response.text().then((res) => {\n      return {\n        statusCode: response.status,\n        response: res\n      };\n    });\n  });\n}\n\n// src/api/mfa/verifyTotp.ts\nvar STEP_UP_VERIFY_TOTP_ENDPOINT_PATH = \"/api/backend/v1/mfa/step-up/verify-totp\";\nvar StepUpMfaGrantType = /* @__PURE__ */ ((StepUpMfaGrantType2) => {\n  StepUpMfaGrantType2[\"ONE_TIME_USE\"] = \"ONE_TIME_USE\";\n  StepUpMfaGrantType2[\"TIME_BASED\"] = \"TIME_BASED\";\n  return StepUpMfaGrantType2;\n})(StepUpMfaGrantType || {});\nfunction verifyStepUpTotpChallenge(authUrl, integrationApiKey, verifyTotpChallengeRequest) {\n  const request = {\n    action_type: verifyTotpChallengeRequest.actionType,\n    user_id: verifyTotpChallengeRequest.userId,\n    code: verifyTotpChallengeRequest.code,\n    grant_type: verifyTotpChallengeRequest.grantType,\n    valid_for_seconds: verifyTotpChallengeRequest.validForSeconds\n  };\n  return httpRequest(\n    authUrl,\n    integrationApiKey,\n    STEP_UP_VERIFY_TOTP_ENDPOINT_PATH,\n    \"POST\",\n    JSON.stringify(request)\n  ).then((httpResponse) => {\n    if (httpResponse.statusCode && httpResponse.statusCode < 400) {\n      const responseData = JSON.parse(httpResponse.response);\n      return {\n        stepUpGrant: responseData.step_up_grant\n      };\n    }\n    const errorResponse = httpResponse.response ? JSON.parse(httpResponse.response) : {};\n    if (httpResponse.statusCode === 401) {\n      throw new UnauthorizedException(\"integrationApiKey is incorrect\");\n    } else if (errorResponse.error_code === \"user_not_found\") {\n      throw new UserNotFoundException();\n    } else if (errorResponse.error_code === \"mfa_not_enabled\") {\n      throw new MfaNotEnabledException();\n    } else if (errorResponse.error_code === \"incorrect_mfa_code\") {\n      throw new IncorrectMfaCodeException();\n    } else if (errorResponse.error_code === \"invalid_request_fields\") {\n      throw new InvalidRequestFieldsException(httpResponse.response);\n    } else if (errorResponse.error_code === \"feature_gated\") {\n      throw new FeatureGatedException();\n    } else {\n      throw new UnexpectedException(\"Unknown error when verifying the TOTP challenge\");\n    }\n  });\n}\n\n// src/userInsights.ts\nvar ReengagementReportInterval = /* @__PURE__ */ ((ReengagementReportInterval3) => {\n  ReengagementReportInterval3[\"WEEKLY\"] = \"Weekly\";\n  ReengagementReportInterval3[\"MONTHLY\"] = \"Monthly\";\n  return ReengagementReportInterval3;\n})(ReengagementReportInterval || {});\nvar ChurnReportInterval = /* @__PURE__ */ ((ChurnReportInterval3) => {\n  ChurnReportInterval3[\"SEVEN_DAYS\"] = \"7\";\n  ChurnReportInterval3[\"FOURTEEN_DAYS\"] = \"14\";\n  ChurnReportInterval3[\"THIRTY_DAYS\"] = \"30\";\n  return ChurnReportInterval3;\n})(ChurnReportInterval || {});\nvar GrowthReportInterval = /* @__PURE__ */ ((GrowthReportInterval3) => {\n  GrowthReportInterval3[\"THIRTY_DAYS\"] = \"30\";\n  GrowthReportInterval3[\"SIXTY_DAYS\"] = \"60\";\n  GrowthReportInterval3[\"NINETY_DAYS\"] = \"90\";\n  return GrowthReportInterval3;\n})(GrowthReportInterval || {});\nvar TopInviterReportInterval = /* @__PURE__ */ ((TopInviterReportInterval3) => {\n  TopInviterReportInterval3[\"THIRTY_DAYS\"] = \"30\";\n  TopInviterReportInterval3[\"SIXTY_DAYS\"] = \"60\";\n  TopInviterReportInterval3[\"NINETY_DAYS\"] = \"90\";\n  return TopInviterReportInterval3;\n})(TopInviterReportInterval || {});\nvar ChampionReportInterval = /* @__PURE__ */ ((ChampionReportInterval3) => {\n  ChampionReportInterval3[\"THIRTY_DAYS\"] = \"30\";\n  ChampionReportInterval3[\"SIXTY_DAYS\"] = \"60\";\n  ChampionReportInterval3[\"NINETY_DAYS\"] = \"90\";\n  return ChampionReportInterval3;\n})(ChampionReportInterval || {});\nvar AttritionReportInterval = /* @__PURE__ */ ((AttritionReportInterval3) => {\n  AttritionReportInterval3[\"THIRTY_DAYS\"] = \"30\";\n  AttritionReportInterval3[\"SIXTY_DAYS\"] = \"60\";\n  AttritionReportInterval3[\"NINETY_DAYS\"] = \"90\";\n  return AttritionReportInterval3;\n})(AttritionReportInterval || {});\nvar ChartMetric = /* @__PURE__ */ ((ChartMetric3) => {\n  ChartMetric3[\"SIGNUPS\"] = \"signups\";\n  ChartMetric3[\"ORGS_CREATED\"] = \"orgs_created\";\n  ChartMetric3[\"ACTIVE_USERS\"] = \"active_users\";\n  ChartMetric3[\"ACTIVE_ORGS\"] = \"active_orgs\";\n  return ChartMetric3;\n})(ChartMetric || {});\nvar ChartMetricCadence = /* @__PURE__ */ ((ChartMetricCadence3) => {\n  ChartMetricCadence3[\"DAILY\"] = \"Daily\";\n  ChartMetricCadence3[\"WEEKLY\"] = \"Weekly\";\n  ChartMetricCadence3[\"MONTHLY\"] = \"Monthly\";\n  return ChartMetricCadence3;\n})(ChartMetricCadence || {});\n\n// src/loginMethod.ts\nfunction toLoginMethod(snake_case) {\n  if (!snake_case) {\n    return { loginMethod: \"unknown\" };\n  }\n  switch (snake_case.login_method) {\n    case \"password\":\n      return { loginMethod: \"password\" };\n    case \"magic_link\":\n      return { loginMethod: \"magic_link\" };\n    case \"social_sso\":\n      return { loginMethod: \"social_sso\", provider: snake_case.provider };\n    case \"email_confirmation_link\":\n      return { loginMethod: \"email_confirmation_link\" };\n    case \"saml_sso\":\n      return { loginMethod: \"saml_sso\", provider: snake_case.provider, orgId: snake_case.org_id };\n    case \"impersonation\":\n      return { loginMethod: \"impersonation\" };\n    case \"generated_from_backend_api\":\n      return { loginMethod: \"generated_from_backend_api\" };\n    default:\n      return { loginMethod: \"unknown\" };\n  }\n}\n\n// src/user.ts\nvar UserClass = class _UserClass {\n  constructor(user) {\n    this.userId = user.userId;\n    this.orgIdToUserOrgInfo = user.orgIdToOrgMemberInfo;\n    this.email = user.email;\n    this.firstName = user.firstName;\n    this.lastName = user.lastName;\n    this.username = user.username;\n    this.legacyUserId = user.legacyUserId;\n    this.impersonatorUserId = user.impersonatorUserId;\n    this.properties = user.properties;\n    this.loginMethod = user.loginMethod;\n    this.activeOrgId = user.activeOrgId;\n  }\n  getActiveOrg() {\n    if (!this.activeOrgId) {\n      return void 0;\n    }\n    return this.getOrg(this.activeOrgId);\n  }\n  getActiveOrgId() {\n    return this.activeOrgId;\n  }\n  getOrg(orgId) {\n    if (!this.orgIdToUserOrgInfo) {\n      return void 0;\n    }\n    if (!this.orgIdToUserOrgInfo.hasOwnProperty(orgId)) {\n      return void 0;\n    }\n    return this.orgIdToUserOrgInfo[orgId];\n  }\n  getOrgByName(orgName) {\n    if (!this.orgIdToUserOrgInfo) {\n      return void 0;\n    }\n    const urlSafeOrgName = orgName.toLowerCase().replace(/ /g, \"-\");\n    for (const orgId in this.orgIdToUserOrgInfo) {\n      const orgMemberInfo = this.getOrg(orgId);\n      if ((orgMemberInfo == null ? void 0 : orgMemberInfo.urlSafeOrgName) === urlSafeOrgName) {\n        return orgMemberInfo;\n      }\n    }\n    return void 0;\n  }\n  getUserProperty(key) {\n    if (!this.properties || !this.properties.hasOwnProperty(key)) {\n      return void 0;\n    }\n    return this.properties[key];\n  }\n  getOrgs() {\n    if (!this.orgIdToUserOrgInfo) {\n      return [];\n    }\n    return Object.values(this.orgIdToUserOrgInfo);\n  }\n  isImpersonating() {\n    return !!this.impersonatorUserId;\n  }\n  isRole(orgId, role) {\n    const orgMemberInfo = this.getOrg(orgId);\n    if (!orgMemberInfo) {\n      return false;\n    }\n    return orgMemberInfo.isRole(role);\n  }\n  isAtLeastRole(orgId, role) {\n    const orgMemberInfo = this.getOrg(orgId);\n    if (!orgMemberInfo) {\n      return false;\n    }\n    return orgMemberInfo.isAtLeastRole(role);\n  }\n  hasPermission(orgId, permission) {\n    const orgMemberInfo = this.getOrg(orgId);\n    if (!orgMemberInfo) {\n      return false;\n    }\n    return orgMemberInfo.hasPermission(permission);\n  }\n  hasAllPermissions(orgId, permissions) {\n    const orgMemberInfo = this.getOrg(orgId);\n    if (!orgMemberInfo) {\n      return false;\n    }\n    return orgMemberInfo.hasAllPermissions(permissions);\n  }\n  static fromUser(user) {\n    return new _UserClass(user);\n  }\n};\nvar OrgMemberInfo = class _OrgMemberInfo {\n  constructor(orgId, orgName, orgMetadata, urlSafeOrgName, userAssignedRole, userInheritedRolesPlusCurrentRole, userPermissions, orgRoleStructure, userAssignedAdditionalRoles, legacyOrgId) {\n    this.orgId = orgId;\n    this.orgName = orgName;\n    this.orgMetadata = orgMetadata;\n    this.urlSafeOrgName = urlSafeOrgName;\n    this.orgRoleStructure = orgRoleStructure != null ? orgRoleStructure : \"single_role_in_hierarchy\" /* SingleRole */;\n    this.userAssignedRole = userAssignedRole;\n    this.userInheritedRolesPlusCurrentRole = userInheritedRolesPlusCurrentRole;\n    this.userPermissions = userPermissions;\n    this.userAssignedAdditionalRoles = userAssignedAdditionalRoles != null ? userAssignedAdditionalRoles : [];\n    this.legacyOrgId = legacyOrgId;\n  }\n  // getters\n  get assignedRole() {\n    return this.userAssignedRole;\n  }\n  get permissions() {\n    return this.userPermissions;\n  }\n  get inheritedRolesPlusCurrentRole() {\n    return this.userInheritedRolesPlusCurrentRole;\n  }\n  // validation methods\n  isRole(role) {\n    if (this.orgRoleStructure === \"multi_role\" /* MultiRole */) {\n      return this.userAssignedRole === role || this.userAssignedAdditionalRoles.includes(role);\n    } else {\n      return this.userAssignedRole === role;\n    }\n  }\n  isAtLeastRole(role) {\n    if (this.orgRoleStructure === \"multi_role\" /* MultiRole */) {\n      return this.userAssignedRole === role || this.userAssignedAdditionalRoles.includes(role);\n    } else {\n      return this.userInheritedRolesPlusCurrentRole.includes(role);\n    }\n  }\n  hasPermission(permission) {\n    return this.userPermissions.includes(permission);\n  }\n  hasAllPermissions(permissions) {\n    return permissions.every((permission) => this.hasPermission(permission));\n  }\n  static fromJSON(json) {\n    const obj = JSON.parse(json);\n    try {\n      return new _OrgMemberInfo(\n        obj.orgId,\n        obj.orgName,\n        obj.orgMetadata,\n        obj.urlSafeOrgName,\n        obj.userAssignedRole,\n        obj.userInheritedRolesPlusCurrentRole,\n        obj.userPermissions,\n        obj.orgRoleStructure,\n        obj.userAssignedAdditionalRoles,\n        obj.legacyOrgId\n      );\n    } catch (e) {\n      console.error(\n        \"Unable to parse UserOrgInfo. Make sure the JSON string is a stringified `UserOrgInfo` type.\",\n        e\n      );\n      throw e;\n    }\n  }\n};\nvar OrgRoleStructure = /* @__PURE__ */ ((OrgRoleStructure2) => {\n  OrgRoleStructure2[\"SingleRole\"] = \"single_role_in_hierarchy\";\n  OrgRoleStructure2[\"MultiRole\"] = \"multi_role\";\n  return OrgRoleStructure2;\n})(OrgRoleStructure || {});\nfunction toUser(snake_case) {\n  let orgIdToOrgMemberInfo;\n  let activeOrgId;\n  if (snake_case.org_member_info) {\n    orgIdToOrgMemberInfo = toOrgIdToOrgMemberInfo({\n      [snake_case.org_member_info.org_id]: snake_case.org_member_info\n    });\n    activeOrgId = snake_case.org_member_info.org_id;\n  } else {\n    orgIdToOrgMemberInfo = toOrgIdToOrgMemberInfo(snake_case.org_id_to_org_member_info);\n    activeOrgId = void 0;\n  }\n  const camelCase2 = {\n    userId: snake_case.user_id,\n    orgIdToOrgMemberInfo,\n    activeOrgId,\n    email: snake_case.email,\n    firstName: snake_case.first_name,\n    lastName: snake_case.last_name,\n    username: snake_case.username,\n    legacyUserId: snake_case.legacy_user_id,\n    impersonatorUserId: snake_case.impersonator_user_id,\n    metadata: snake_case.metadata,\n    properties: snake_case.properties,\n    loginMethod: toLoginMethod(snake_case.login_method)\n  };\n  return camelCase2;\n}\nfunction toOrgIdToOrgMemberInfo(snake_case) {\n  if (snake_case === void 0) {\n    return void 0;\n  }\n  const camelCase2 = {};\n  for (const key of Object.keys(snake_case)) {\n    const snakeCaseValue = snake_case[key];\n    if (snakeCaseValue) {\n      camelCase2[key] = new OrgMemberInfo(\n        snakeCaseValue.org_id,\n        snakeCaseValue.org_name,\n        snakeCaseValue.org_metadata,\n        snakeCaseValue.url_safe_org_name,\n        snakeCaseValue.user_role,\n        snakeCaseValue.inherited_user_roles_plus_current_role,\n        snakeCaseValue.user_permissions,\n        snakeCaseValue.org_role_structure,\n        snakeCaseValue.additional_roles,\n        snakeCaseValue.legacy_org_id\n      );\n    }\n  }\n  return camelCase2;\n}\n\n// src/utils.ts\nvar idRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nvar hexRegex = /^[0-9a-fA-F]{32}$/i;\nfunction isValidId(id) {\n  return idRegex.test(id);\n}\nfunction isValidHex(id) {\n  return hexRegex.test(id);\n}\nfunction removeBearerIfExists(token) {\n  if (!token) {\n    return token;\n  } else if (token.toLowerCase().startsWith(\"bearer \")) {\n    return token.substring(7);\n  } else {\n    return token;\n  }\n}\nfunction formatQueryParameters(obj) {\n  const params = new URLSearchParams();\n  for (const [key, value] of Object.entries(obj)) {\n    if (value !== void 0) {\n      params.set(key, value);\n    }\n  }\n  return params.toString();\n}\nfunction parseSnakeCaseToCamelCase(response) {\n  let parsedObject = JSON.parse(response);\n  return processKeys(parsedObject);\n}\nvar keysForValueNotToModify = [\"metadata\", \"org_metadata\"];\nfunction isOrgMemberInfo(value) {\n  return value && typeof value === \"object\" && value.hasOwnProperty(\"orgId\") && value.hasOwnProperty(\"orgName\") && value.hasOwnProperty(\"urlSafeOrgName\") && value.hasOwnProperty(\"orgMetadata\") && value.hasOwnProperty(\"userAssignedRole\") && value.hasOwnProperty(\"userInheritedRolesPlusCurrentRole\") && value.hasOwnProperty(\"userPermissions\");\n}\nfunction processKeys(obj) {\n  let newObj = Array.isArray(obj) ? [] : {};\n  for (let key in obj) {\n    if (!obj.hasOwnProperty(key)) {\n      continue;\n    }\n    let value = obj[key];\n    const doNotModifyValue = keysForValueNotToModify.includes(key);\n    if (!doNotModifyValue && value && typeof value === \"object\") {\n      value = processKeys(value);\n    }\n    if (isOrgMemberInfo(value)) {\n      value = new OrgMemberInfo(\n        value[\"orgId\"],\n        value[\"orgName\"],\n        value[\"orgMetadata\"],\n        value[\"urlSafeOrgName\"],\n        value[\"userAssignedRole\"],\n        value[\"userInheritedRolesPlusCurrentRole\"],\n        value[\"userPermissions\"],\n        value[\"orgRoleStructure\"],\n        value[\"userAssignedAdditionalRoles\"],\n        value[\"legacyOrgId\"]\n      );\n    }\n    let newKey;\n    if (key === \"user_role\") {\n      newKey = \"userAssignedRole\";\n    } else if (key === \"inherited_user_roles_plus_current_role\") {\n      newKey = \"userInheritedRolesPlusCurrentRole\";\n    } else if (key === \"additional_roles\") {\n      newKey = \"userAssignedAdditionalRoles\";\n    } else {\n      newKey = camelCase(key);\n    }\n    newObj[newKey] = value;\n  }\n  return newObj;\n}\nfunction camelCase(key) {\n  return key.replace(/_([a-z])/g, function(g) {\n    return g[1].toUpperCase();\n  });\n}\n\n// src/api/accessToken.ts\nvar ENDPOINT_PATH = \"/api/backend/v1/access_token\";\nfunction createAccessToken(authUrl, integrationApiKey, createAccessTokenRequest) {\n  if (!isValidId(createAccessTokenRequest.userId)) {\n    throw new UserNotFoundException();\n  }\n  const request = {\n    user_id: createAccessTokenRequest.userId,\n    duration_in_minutes: createAccessTokenRequest.durationInMinutes,\n    active_org_id: createAccessTokenRequest.activeOrgId\n  };\n  return httpRequest(authUrl, integrationApiKey, ENDPOINT_PATH, \"POST\", JSON.stringify(request)).then(\n    (httpResponse) => {\n      if (httpResponse.statusCode === 401) {\n        throw new Error(\"integrationApiKey is incorrect\");\n      } else if (httpResponse.statusCode === 429) {\n        throw new RateLimitedException(httpResponse.response);\n      } else if (httpResponse.statusCode === 400) {\n        throw new AccessTokenCreationException(httpResponse.response);\n      } else if (httpResponse.statusCode === 403) {\n        throw new UserNotFoundException();\n      } else if (httpResponse.statusCode === 404) {\n        throw new Error(\"Access token creation is not enabled\");\n      } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n        throw new Error(\"Unknown error when creating access token\");\n      }\n      return JSON.parse(httpResponse.response);\n    }\n  );\n}\n\n// src/api/endUserApiKeys.ts\nvar ENDPOINT_PATH2 = \"/api/backend/v1/end_user_api_keys\";\nfunction fetchApiKey(authUrl, integrationApiKey, apiKeyId) {\n  if (!isValidHex(apiKeyId)) {\n    throw new ApiKeyFetchException(\"Invalid api key\");\n  }\n  return httpRequest(authUrl, integrationApiKey, `${ENDPOINT_PATH2}/${apiKeyId}`, \"GET\").then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode === 400) {\n      throw new ApiKeyFetchException(httpResponse.response);\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when creating the end user api key\");\n    }\n    return parseSnakeCaseToCamelCase(httpResponse.response);\n  });\n}\nfunction fetchCurrentApiKeys(authUrl, integrationApiKey, apiKeyQuery) {\n  const request = {\n    org_id: apiKeyQuery.orgId,\n    user_id: apiKeyQuery.userId,\n    user_email: apiKeyQuery.userEmail,\n    page_size: apiKeyQuery.pageSize,\n    page_number: apiKeyQuery.pageNumber\n  };\n  const queryString = formatQueryParameters(request);\n  return httpRequest(authUrl, integrationApiKey, `${ENDPOINT_PATH2}?${queryString}`, \"GET\").then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode === 400) {\n      throw new ApiKeyFetchException(httpResponse.response);\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when creating the end user api key\");\n    }\n    return parseSnakeCaseToCamelCase(httpResponse.response);\n  });\n}\nfunction fetchArchivedApiKeys(authUrl, integrationApiKey, apiKeyQuery) {\n  const request = {\n    org_id: apiKeyQuery.orgId,\n    user_id: apiKeyQuery.userId,\n    user_email: apiKeyQuery.userEmail,\n    page_size: apiKeyQuery.pageSize,\n    page_number: apiKeyQuery.pageNumber\n  };\n  const queryString = formatQueryParameters(request);\n  return httpRequest(authUrl, integrationApiKey, `${ENDPOINT_PATH2}/archived?${queryString}`, \"GET\").then(\n    (httpResponse) => {\n      if (httpResponse.statusCode === 401) {\n        throw new Error(\"integrationApiKey is incorrect\");\n      } else if (httpResponse.statusCode === 429) {\n        throw new RateLimitedException(httpResponse.response);\n      } else if (httpResponse.statusCode === 400) {\n        throw new ApiKeyFetchException(httpResponse.response);\n      } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n        throw new Error(\"Unknown error when creating the end user api key\");\n      }\n      return parseSnakeCaseToCamelCase(httpResponse.response);\n    }\n  );\n}\nfunction createApiKey(authUrl, integrationApiKey, apiKeyCreate) {\n  const request = {\n    org_id: apiKeyCreate.orgId,\n    user_id: apiKeyCreate.userId,\n    expires_at_seconds: apiKeyCreate.expiresAtSeconds,\n    metadata: apiKeyCreate.metadata,\n    display_name: apiKeyCreate.displayName\n  };\n  return httpRequest(authUrl, integrationApiKey, `${ENDPOINT_PATH2}`, \"POST\", JSON.stringify(request)).then(\n    (httpResponse) => {\n      if (httpResponse.statusCode === 401) {\n        throw new Error(\"integrationApiKey is incorrect\");\n      } else if (httpResponse.statusCode === 429) {\n        throw new RateLimitedException(httpResponse.response);\n      } else if (httpResponse.statusCode === 400) {\n        throw new ApiKeyCreateException(httpResponse.response);\n      } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n        throw new Error(\"Unknown error when creating the end user api key\");\n      }\n      return parseSnakeCaseToCamelCase(httpResponse.response);\n    }\n  );\n}\nfunction validateApiKey(authUrl, integrationApiKey, apiKeyToken) {\n  const request = {\n    api_key_token: removeBearerIfExists(apiKeyToken)\n  };\n  return httpRequest(authUrl, integrationApiKey, `${ENDPOINT_PATH2}/validate`, \"POST\", JSON.stringify(request)).then(\n    (httpResponse) => {\n      if (httpResponse.statusCode === 401) {\n        throw new Error(\"integrationApiKey is incorrect\");\n      } else if (httpResponse.statusCode === 400) {\n        throw new ApiKeyValidateException(httpResponse.response);\n      } else if (httpResponse.statusCode === 429) {\n        let rateLimitError;\n        try {\n          rateLimitError = new ApiKeyValidateRateLimitedException(httpResponse.response);\n        } catch (SyntaxError) {\n          throw new RateLimitedException(httpResponse.response);\n        }\n        throw rateLimitError;\n      } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n        throw new Error(\"Unknown error when updating the end user api key\");\n      }\n      return parseSnakeCaseToCamelCase(httpResponse.response);\n    }\n  );\n}\nfunction importApiKey(authUrl, integrationApiKey, apiKeyImport) {\n  const request = {\n    imported_api_key: apiKeyImport.importedApiKey,\n    org_id: apiKeyImport.orgId,\n    user_id: apiKeyImport.userId,\n    expires_at_seconds: apiKeyImport.expiresAtSeconds,\n    metadata: apiKeyImport.metadata,\n    display_name: apiKeyImport.displayName\n  };\n  return httpRequest(authUrl, integrationApiKey, `${ENDPOINT_PATH2}/import`, \"POST\", JSON.stringify(request)).then(\n    (httpResponse) => {\n      if (httpResponse.statusCode === 401) {\n        throw new Error(\"integrationApiKey is incorrect\");\n      } else if (httpResponse.statusCode === 429) {\n        throw new RateLimitedException(httpResponse.response);\n      } else if (httpResponse.statusCode === 400) {\n        throw new ApiKeyImportException(httpResponse.response);\n      } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n        throw new Error(\"Unknown error when importing the end user api key\");\n      }\n      return parseSnakeCaseToCamelCase(httpResponse.response);\n    }\n  );\n}\nfunction validateImportedApiKey(authUrl, integrationApiKey, apiKeyToken) {\n  const request = {\n    api_key_token: removeBearerIfExists(apiKeyToken)\n  };\n  return httpRequest(authUrl, integrationApiKey, `${ENDPOINT_PATH2}/validate_imported`, \"POST\", JSON.stringify(request)).then(\n    (httpResponse) => {\n      if (httpResponse.statusCode === 401) {\n        throw new Error(\"integrationApiKey is incorrect\");\n      } else if (httpResponse.statusCode === 400) {\n        throw new ApiKeyValidateException(httpResponse.response);\n      } else if (httpResponse.statusCode === 429) {\n        let rateLimitError;\n        try {\n          rateLimitError = new ApiKeyValidateRateLimitedException(httpResponse.response);\n        } catch (SyntaxError) {\n          throw new RateLimitedException(httpResponse.response);\n        }\n        throw rateLimitError;\n      } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n        throw new Error(\"Unknown error when validating the imported end user api key\");\n      }\n      return parseSnakeCaseToCamelCase(httpResponse.response);\n    }\n  );\n}\nfunction updateApiKey(authUrl, integrationApiKey, apiKeyId, apiKeyUpdate) {\n  if (!isValidHex(apiKeyId)) {\n    throw new ApiKeyUpdateException(\"Invalid api key\");\n  }\n  const request = {\n    expires_at_seconds: apiKeyUpdate.expiresAtSeconds,\n    metadata: apiKeyUpdate.metadata,\n    set_to_never_expire: apiKeyUpdate.setToNeverExpire\n  };\n  return httpRequest(\n    authUrl,\n    integrationApiKey,\n    `${ENDPOINT_PATH2}/${apiKeyId}`,\n    \"PATCH\",\n    JSON.stringify(request)\n  ).then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode === 400) {\n      throw new ApiKeyUpdateException(httpResponse.response);\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when updating the end user api key\");\n    }\n    return true;\n  });\n}\nfunction deleteApiKey(authUrl, integrationApiKey, apiKeyId) {\n  if (!isValidHex(apiKeyId)) {\n    throw new ApiKeyDeleteException(\"Invalid api key\");\n  }\n  return httpRequest(authUrl, integrationApiKey, `${ENDPOINT_PATH2}/${apiKeyId}`, \"DELETE\").then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode === 400) {\n      throw new ApiKeyDeleteException(httpResponse.response);\n    } else if (httpResponse.statusCode === 404) {\n      return false;\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when deleting the end user api key\");\n    }\n    return true;\n  });\n}\nfunction fetchApiKeyUsage(authUrl, integrationApiKey, apiKeyQuery) {\n  const request = {\n    org_id: apiKeyQuery.orgId,\n    user_id: apiKeyQuery.userId,\n    api_key_id: apiKeyQuery.api_key_id,\n    date: apiKeyQuery.date\n  };\n  const queryString = formatQueryParameters(request);\n  return httpRequest(authUrl, integrationApiKey, `${ENDPOINT_PATH2}/usage?${queryString}`, \"GET\").then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode === 400) {\n      throw new ApiKeyFetchException(httpResponse.response);\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when fetching the end user api key usage\");\n    }\n    return parseSnakeCaseToCamelCase(httpResponse.response);\n  });\n}\n\n// src/api/mfa/sendSmsMfaCode.ts\nvar ENDPOINT_PATH3 = \"/api/backend/v1/mfa/step-up/phone/send\";\nfunction sendSmsMfaCode(authUrl, integrationApiKey, sendSmsMfaCodeRequest) {\n  const request = {\n    action_type: sendSmsMfaCodeRequest.actionType,\n    user_id: sendSmsMfaCodeRequest.userId,\n    mfa_phone_id: sendSmsMfaCodeRequest.mfaPhoneId,\n    grant_type: sendSmsMfaCodeRequest.grantType,\n    valid_for_seconds: sendSmsMfaCodeRequest.validForSeconds\n  };\n  return httpRequest(\n    authUrl,\n    integrationApiKey,\n    ENDPOINT_PATH3,\n    \"POST\",\n    JSON.stringify(request)\n  ).then((httpResponse) => {\n    if (httpResponse.statusCode && httpResponse.statusCode < 400) {\n      return parseSnakeCaseToCamelCase(httpResponse.response);\n    }\n    let errorResponse = {};\n    try {\n      errorResponse = httpResponse.response ? JSON.parse(httpResponse.response) : {};\n    } catch (e) {\n      console.error(\"Failed to parse error response\", e);\n      errorResponse = {};\n    }\n    if (httpResponse.statusCode === 401 || errorResponse.error_code === \"unauthorized\") {\n      throw new UnauthorizedException(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (errorResponse.error_code === \"invalid_request_fields\") {\n      const fieldToErrors = errorResponse.field_errors || {};\n      if (fieldToErrors[\"grant\"] == \"grant_not_found\") {\n        return {\n          success: false\n        };\n      } else {\n        throw new BadRequestException(httpResponse.response);\n      }\n    } else if (errorResponse.error_code === \"feature_gated\") {\n      throw new FeatureGatedException();\n    } else {\n      throw new UnexpectedException(\"Unknown error when sending sms mfa code\");\n    }\n  });\n}\n\n// src/api/mfa/verifySmsChallenge.ts\nvar ENDPOINT_PATH4 = \"/api/backend/v1/mfa/step-up/phone/verify\";\nfunction verifySmsChallenge(authUrl, integrationApiKey, verifySmsChallengeRequest) {\n  const request = {\n    user_id: verifySmsChallengeRequest.userId,\n    challenge_id: verifySmsChallengeRequest.challengeId,\n    code: verifySmsChallengeRequest.code\n  };\n  return httpRequest(\n    authUrl,\n    integrationApiKey,\n    ENDPOINT_PATH4,\n    \"POST\",\n    JSON.stringify(request)\n  ).then((httpResponse) => {\n    if (httpResponse.statusCode && httpResponse.statusCode < 400) {\n      return parseSnakeCaseToCamelCase(httpResponse.response);\n    }\n    let errorResponse = {};\n    try {\n      errorResponse = httpResponse.response ? JSON.parse(httpResponse.response) : {};\n    } catch (e) {\n      console.error(\"Failed to parse error response\", e);\n      errorResponse = {};\n    }\n    if (httpResponse.statusCode === 401 || errorResponse.error_code === \"unauthorized\") {\n      throw new UnauthorizedException(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (errorResponse.error_code === \"invalid_request_fields\") {\n      const fieldToErrors = errorResponse.field_errors || {};\n      if (fieldToErrors[\"grant\"] == \"grant_not_found\") {\n        return {\n          success: false\n        };\n      } else {\n        throw new BadRequestException(httpResponse.response);\n      }\n    } else if (errorResponse.error_code === \"feature_gated\") {\n      throw new FeatureGatedException();\n    } else {\n      throw new UnexpectedException(\"Unknown error when verifying sms challenge\");\n    }\n  });\n}\n\n// src/api/mfa/verifyGrant.ts\nvar STEP_UP_VERIFY_GRANT_ENDPOINT_PATH = \"/api/backend/v1/mfa/step-up/verify-grant\";\nfunction verifyStepUpGrant(authUrl, integrationApiKey, verifyStepUpGrantRequest) {\n  const request = {\n    action_type: verifyStepUpGrantRequest.actionType,\n    user_id: verifyStepUpGrantRequest.userId,\n    grant: verifyStepUpGrantRequest.grant\n  };\n  return httpRequest(\n    authUrl,\n    integrationApiKey,\n    STEP_UP_VERIFY_GRANT_ENDPOINT_PATH,\n    \"POST\",\n    JSON.stringify(request)\n  ).then((httpResponse) => {\n    if (httpResponse.statusCode && httpResponse.statusCode < 400) {\n      return {\n        success: true\n      };\n    }\n    let errorResponse = {};\n    try {\n      errorResponse = httpResponse.response ? JSON.parse(httpResponse.response) : {};\n    } catch (e) {\n      console.error(\"Failed to parse error response\", e);\n      errorResponse = {};\n    }\n    if (httpResponse.statusCode === 401 || errorResponse.error_code === \"unauthorized\") {\n      throw new UnauthorizedException(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (errorResponse.error_code === \"invalid_request_fields\") {\n      const fieldToErrors = errorResponse.field_errors || {};\n      if (fieldToErrors[\"grant\"] == \"grant_not_found\") {\n        return {\n          success: false\n        };\n      } else {\n        throw new BadRequestException(httpResponse.response);\n      }\n    } else if (errorResponse.error_code === \"feature_gated\") {\n      throw new FeatureGatedException();\n    } else {\n      throw new UnexpectedException(\"Unknown error when verifying step up grant\");\n    }\n  });\n}\n\n// src/api/magicLink.ts\nvar ENDPOINT_PATH5 = \"/api/backend/v1/magic_link\";\nfunction createMagicLink(authUrl, integrationApiKey, createMagicLinkRequest) {\n  const request = {\n    email: createMagicLinkRequest.email,\n    redirect_to_url: createMagicLinkRequest.redirectToUrl,\n    expires_in_hours: createMagicLinkRequest.expiresInHours,\n    create_new_user_if_one_doesnt_exist: createMagicLinkRequest.createNewUserIfOneDoesntExist,\n    expire_after_first_use: createMagicLinkRequest.expiresAfterFirstUse,\n    requires_interstitial: createMagicLinkRequest.requiresInterstitial,\n    user_signup_query_parameters: createMagicLinkRequest.userSignupQueryParameters\n  };\n  return httpRequest(authUrl, integrationApiKey, ENDPOINT_PATH5, \"POST\", JSON.stringify(request)).then(\n    (httpResponse) => {\n      if (httpResponse.statusCode === 401) {\n        throw new Error(\"integrationApiKey is incorrect\");\n      } else if (httpResponse.statusCode === 429) {\n        throw new RateLimitedException(httpResponse.response);\n      } else if (httpResponse.statusCode === 400) {\n        throw new MagicLinkCreationException(httpResponse.response);\n      } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n        throw new Error(\"Unknown error when creating magic link\");\n      }\n      return JSON.parse(httpResponse.response);\n    }\n  );\n}\n\n// src/api/employee.ts\nvar ENDPOINT_PATH6 = \"/api/backend/v1/employee\";\nfunction fetchEmployeeById(authUrl, integrationApiKey, employeeId) {\n  if (!isValidId(employeeId)) {\n    throw new UserNotFoundException();\n  }\n  return httpRequest(authUrl, integrationApiKey, `${ENDPOINT_PATH6}/${employeeId}`, \"GET\").then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode === 404) {\n      return null;\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when fetching employee\");\n    }\n    return parseSnakeCaseToCamelCase(httpResponse.response);\n  });\n}\n\n// src/api/migrateUser.ts\nvar ENDPOINT_PATH7 = \"/api/backend/v1/migrate_user\";\nfunction migrateUserFromExternalSource(authUrl, integrationApiKey, migrateUserFromExternalSourceRequest) {\n  const {\n    email,\n    emailConfirmed: email_confirmed,\n    existingUserId: existing_user_id,\n    existingPasswordHash: existing_password_hash,\n    existingMfaBase32EncodedSecret: existing_mfa_base32_encoded_secret,\n    askUserToUpdatePasswordOnLogin: update_password_required,\n    enabled,\n    firstName: first_name,\n    lastName: last_name,\n    username,\n    pictureUrl: picture_url,\n    properties\n  } = migrateUserFromExternalSourceRequest;\n  const request = {\n    email,\n    email_confirmed,\n    existing_user_id,\n    existing_password_hash,\n    existing_mfa_base32_encoded_secret,\n    update_password_required,\n    enabled,\n    first_name,\n    last_name,\n    username,\n    picture_url,\n    properties\n  };\n  return httpRequest(authUrl, integrationApiKey, `${ENDPOINT_PATH7}/`, \"POST\", JSON.stringify(request)).then(\n    (httpResponse) => {\n      if (httpResponse.statusCode === 401) {\n        throw new Error(\"integrationApiKey is incorrect\");\n      } else if (httpResponse.statusCode === 429) {\n        throw new RateLimitedException(httpResponse.response);\n      } else if (httpResponse.statusCode === 400) {\n        throw new MigrateUserException(httpResponse.response);\n      } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n        throw new Error(\"Unknown error when migrating user\");\n      }\n      return parseSnakeCaseToCamelCase(httpResponse.response);\n    }\n  );\n}\nfunction migrateUserPassword(authUrl, integrationApiKey, migrateUserPasswordRequest) {\n  if (!isValidId(migrateUserPasswordRequest.userId)) {\n    return Promise.resolve(false);\n  }\n  const request = {\n    user_id: migrateUserPasswordRequest.userId,\n    password_hash: migrateUserPasswordRequest.passwordHash\n  };\n  return httpRequest(authUrl, integrationApiKey, `${ENDPOINT_PATH7}/password`, \"POST\", JSON.stringify(request)).then(\n    (httpResponse) => {\n      if (httpResponse.statusCode === 401) {\n        throw new Error(\"integrationApiKey is incorrect\");\n      } else if (httpResponse.statusCode === 429) {\n        throw new RateLimitedException(httpResponse.response);\n      } else if (httpResponse.statusCode === 400) {\n        throw new MigrateUserPasswordException(httpResponse.response);\n      } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n        throw new Error(\"Unknown error when migrating user password\");\n      }\n      return parseSnakeCaseToCamelCase(httpResponse.response);\n    }\n  );\n}\n\n// src/api/org.ts\nvar BASE_ENDPOINT_PATH = \"/api/backend/v1\";\nvar ORG_ENDPOINT_PATH = BASE_ENDPOINT_PATH + \"/org\";\nfunction fetchOrg(authUrl, integrationApiKey, orgId) {\n  if (!isValidId(orgId)) {\n    return Promise.resolve(null);\n  }\n  return httpRequest(authUrl, integrationApiKey, `${ORG_ENDPOINT_PATH}/${orgId}`, \"GET\").then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode === 404) {\n      return null;\n    } else if (httpResponse.statusCode === 426) {\n      throw new Error(\n        \"Cannot use organizations unless B2B support is enabled. Enable it in your PropelAuth dashboard.\"\n      );\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when fetching org\");\n    }\n    return parseSnakeCaseToCamelCase(httpResponse.response);\n  });\n}\nfunction fetchCustomRoleMappings(authUrl, integrationApiKey) {\n  return httpRequest(authUrl, integrationApiKey, \"/api/backend/v1/custom_role_mappings\", \"GET\").then(\n    (httpResponse) => {\n      if (httpResponse.statusCode === 401) {\n        throw new Error(\"integrationApiKey is incorrect\");\n      } else if (httpResponse.statusCode === 429) {\n        throw new RateLimitedException(httpResponse.response);\n      } else if (httpResponse.statusCode === 426) {\n        throw new Error(\n          \"Cannot use organizations unless B2B support is enabled. Enable it in your PropelAuth dashboard.\"\n        );\n      } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n        throw new Error(\"Unknown error when fetching custom role mappings\");\n      }\n      return parseSnakeCaseToCamelCase(httpResponse.response);\n    }\n  );\n}\nfunction fetchPendingInvites(authUrl, integrationApiKey, params) {\n  const queryParams = new URLSearchParams();\n  if (params == null ? void 0 : params.orgId) {\n    queryParams.set(\"org_id\", params.orgId);\n  }\n  if (params == null ? void 0 : params.pageSize) {\n    queryParams.set(\"page_size\", params.pageSize.toString());\n  }\n  if (params == null ? void 0 : params.pageNumber) {\n    queryParams.set(\"page_number\", params.pageNumber.toString());\n  }\n  const path = `/api/backend/v1/pending_org_invites?${queryParams.toString()}`;\n  return httpRequest(authUrl, integrationApiKey, path, \"GET\").then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode === 426) {\n      throw new Error(\n        \"Cannot use organizations unless B2B support is enabled. Enable it in your PropelAuth dashboard.\"\n      );\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when fetching pending invites\");\n    }\n    return parseSnakeCaseToCamelCase(httpResponse.response);\n  });\n}\nfunction fetchSamlSpMetadata(authUrl, integrationApiKey, orgId) {\n  const path = BASE_ENDPOINT_PATH + `/saml_sp_metadata/${orgId}`;\n  return httpRequest(authUrl, integrationApiKey, path, \"GET\").then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode === 426) {\n      throw new Error(\n        \"Cannot use organizations unless B2B support is enabled. Enable it in your PropelAuth dashboard.\"\n      );\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when fetching custom role mappings\");\n    }\n    return parseSnakeCaseToCamelCase(httpResponse.response);\n  });\n}\nfunction fetchOrgByQuery(authUrl, integrationApiKey, query) {\n  const request = {\n    page_size: query.pageSize,\n    page_number: query.pageNumber,\n    order_by: query.orderBy,\n    name: query.name,\n    legacy_org_id: query.legacyOrgId,\n    domain: query.domain\n  };\n  return httpRequest(authUrl, integrationApiKey, `${ORG_ENDPOINT_PATH}/query`, \"POST\", JSON.stringify(request)).then(\n    (httpResponse) => {\n      if (httpResponse.statusCode === 401) {\n        throw new Error(\"integrationApiKey is incorrect\");\n      } else if (httpResponse.statusCode === 429) {\n        throw new RateLimitedException(httpResponse.response);\n      } else if (httpResponse.statusCode === 400) {\n        throw new Error(\"Invalid query \" + httpResponse.response);\n      } else if (httpResponse.statusCode === 426) {\n        throw new Error(\n          \"Cannot use organizations unless B2B support is enabled. Enable it in your PropelAuth dashboard.\"\n        );\n      } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n        throw new Error(\"Unknown error when fetching orgs by query\");\n      }\n      return JSON.parse(httpResponse.response, function(key, value) {\n        if (key === \"org_id\") {\n          this.orgId = value;\n        } else if (key === \"org_name\") {\n          this.name = value;\n        } else if (key === \"max_users\") {\n          this.maxUsers = value;\n        } else if (key === \"legacy_org_id\") {\n          this.legacyOrgId = value;\n        } else if (key === \"total_orgs\") {\n          this.totalOrgs = value;\n        } else if (key === \"current_page\") {\n          this.currentPage = value;\n        } else if (key === \"page_size\") {\n          this.pageSize = value;\n        } else if (key === \"has_more_results\") {\n          this.hasMoreResults = value;\n        } else if (key === \"created_at\") {\n          this.createdAt = value;\n        } else {\n          return value;\n        }\n      });\n    }\n  );\n}\nfunction createOrg(authUrl, integrationApiKey, createOrgRequest) {\n  const {\n    name,\n    domain,\n    enableAutoJoiningByDomain = false,\n    membersMustHaveMatchingDomain = false,\n    maxUsers,\n    customRoleMappingName,\n    legacyOrgId\n  } = createOrgRequest;\n  const request = {\n    name,\n    enable_auto_joining_by_domain: enableAutoJoiningByDomain,\n    members_must_have_matching_domain: membersMustHaveMatchingDomain\n  };\n  if (domain) {\n    request[\"domain\"] = domain;\n  }\n  if (maxUsers) {\n    request[\"max_users\"] = maxUsers;\n  }\n  if (legacyOrgId) {\n    request[\"legacy_org_id\"] = legacyOrgId;\n  }\n  if (customRoleMappingName) {\n    request[\"custom_role_mapping_name\"] = customRoleMappingName;\n  }\n  return httpRequest(authUrl, integrationApiKey, `${ORG_ENDPOINT_PATH}/`, \"POST\", JSON.stringify(request)).then(\n    (httpResponse) => {\n      if (httpResponse.statusCode === 401) {\n        throw new Error(\"integrationApiKey is incorrect\");\n      } else if (httpResponse.statusCode === 429) {\n        throw new RateLimitedException(httpResponse.response);\n      } else if (httpResponse.statusCode === 400) {\n        throw new CreateOrgException(httpResponse.response);\n      } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n        throw new Error(\"Unknown error when creating org\");\n      }\n      return parseSnakeCaseToCamelCase(httpResponse.response);\n    }\n  );\n}\nfunction addUserToOrg(authUrl, integrationApiKey, addUserToOrgRequest) {\n  var _a;\n  const request = {\n    user_id: addUserToOrgRequest.userId,\n    org_id: addUserToOrgRequest.orgId,\n    role: addUserToOrgRequest.role,\n    additional_roles: (_a = addUserToOrgRequest.additionalRoles) != null ? _a : []\n  };\n  return httpRequest(\n    authUrl,\n    integrationApiKey,\n    `${ORG_ENDPOINT_PATH}/add_user`,\n    \"POST\",\n    JSON.stringify(request)\n  ).then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode === 400) {\n      throw new AddUserToOrgException(httpResponse.response);\n    } else if (httpResponse.statusCode === 404) {\n      return false;\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when adding user to org\");\n    }\n    return true;\n  });\n}\nfunction changeUserRoleInOrg(authUrl, integrationApiKey, changeUserRoleInOrgRequest) {\n  var _a;\n  const request = {\n    user_id: changeUserRoleInOrgRequest.userId,\n    org_id: changeUserRoleInOrgRequest.orgId,\n    role: changeUserRoleInOrgRequest.role,\n    additional_roles: (_a = changeUserRoleInOrgRequest.additionalRoles) != null ? _a : []\n  };\n  return httpRequest(\n    authUrl,\n    integrationApiKey,\n    `${ORG_ENDPOINT_PATH}/change_role`,\n    \"POST\",\n    JSON.stringify(request)\n  ).then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode === 400) {\n      throw new ChangeUserRoleInOrgException(httpResponse.response);\n    } else if (httpResponse.statusCode === 404) {\n      return false;\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when changing users role in org\");\n    }\n    return true;\n  });\n}\nfunction removeUserFromOrg(authUrl, integrationApiKey, removeUserFromOrgRequest) {\n  const request = {\n    user_id: removeUserFromOrgRequest.userId,\n    org_id: removeUserFromOrgRequest.orgId\n  };\n  return httpRequest(\n    authUrl,\n    integrationApiKey,\n    `${ORG_ENDPOINT_PATH}/remove_user`,\n    \"POST\",\n    JSON.stringify(request)\n  ).then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode === 400) {\n      throw new RemoveUserFromOrgException(httpResponse.response);\n    } else if (httpResponse.statusCode === 404) {\n      return false;\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when removing users from org\");\n    }\n    return true;\n  });\n}\nfunction allowOrgToSetupSamlConnection(authUrl, integrationApiKey, orgId) {\n  if (!isValidId(orgId)) {\n    return Promise.resolve(false);\n  }\n  return httpRequest(authUrl, integrationApiKey, `${ORG_ENDPOINT_PATH}/${orgId}/allow_saml`, \"POST\").then(\n    (httpResponse) => {\n      if (httpResponse.statusCode === 401) {\n        throw new Error(\"integrationApiKey is incorrect\");\n      } else if (httpResponse.statusCode === 429) {\n        throw new RateLimitedException(httpResponse.response);\n      } else if (httpResponse.statusCode === 404) {\n        return false;\n      } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n        throw new Error(\"Unknown error when allowing org to setup SAML connection\");\n      }\n      return true;\n    }\n  );\n}\nfunction disallowOrgToSetupSamlConnection(authUrl, integrationApiKey, orgId) {\n  if (!isValidId(orgId)) {\n    return Promise.resolve(false);\n  }\n  return httpRequest(authUrl, integrationApiKey, `${ORG_ENDPOINT_PATH}/${orgId}/disallow_saml`, \"POST\").then(\n    (httpResponse) => {\n      if (httpResponse.statusCode === 401) {\n        throw new Error(\"integrationApiKey is incorrect\");\n      } else if (httpResponse.statusCode === 429) {\n        throw new RateLimitedException(httpResponse.response);\n      } else if (httpResponse.statusCode === 404) {\n        return false;\n      } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n        throw new Error(\"Unknown error when disallowing org to setup SAML connection\");\n      }\n      return true;\n    }\n  );\n}\nfunction createOrgSamlConnectionLink(authUrl, integrationApiKey, orgId, expiresInSeconds) {\n  return __async(this, null, function* () {\n    if (!isValidId(orgId)) {\n      return Promise.reject(new Error(\"Invalid orgId\"));\n    }\n    const request = {\n      expires_in_seconds: expiresInSeconds\n    };\n    const response = yield httpRequest(\n      authUrl,\n      integrationApiKey,\n      `${ORG_ENDPOINT_PATH}/${orgId}/create_saml_connection_link`,\n      \"POST\",\n      JSON.stringify(request)\n    );\n    if (response.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (response.statusCode === 429) {\n      throw new RateLimitedException(response.response);\n    } else if (response.statusCode === 404) {\n      throw new Error(\"Org not found\");\n    } else if (response.statusCode && response.statusCode >= 400) {\n      throw new Error(`Error when creating SAML connection link: ${response.response}`);\n    }\n    return JSON.parse(response.response);\n  });\n}\nfunction setSamlIdpMetadata(authUrl, integrationApiKey, orgId, setSamlIdpMetadataRequest) {\n  if (!isValidId(orgId)) {\n    return Promise.resolve(false);\n  }\n  let request = {\n    org_id: orgId,\n    idp_entity_id: setSamlIdpMetadataRequest.idpEntityId,\n    idp_sso_url: setSamlIdpMetadataRequest.idpSsoUrl,\n    idp_certificate: setSamlIdpMetadataRequest.idpCertificate,\n    provider: setSamlIdpMetadataRequest.provider\n  };\n  return httpRequest(\n    authUrl,\n    integrationApiKey,\n    `${BASE_ENDPOINT_PATH}/saml_idp_metadata`,\n    \"POST\",\n    JSON.stringify(request)\n  ).then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode === 400) {\n      throw new UpdateOrgException(httpResponse.response);\n    } else if (httpResponse.statusCode === 404) {\n      return false;\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when setting the SAML IdP metadata for an org's SAML connection\");\n    }\n    return true;\n  });\n}\nfunction samlGoLive(authUrl, integrationApiKey, orgId) {\n  if (!isValidId(orgId)) {\n    return Promise.resolve(false);\n  }\n  return httpRequest(\n    authUrl,\n    integrationApiKey,\n    `${BASE_ENDPOINT_PATH}/saml_idp_metadata/go_live/${orgId}`,\n    \"POST\"\n  ).then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode === 404) {\n      return false;\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when setting orgs SAML connection to go live\");\n    }\n    return true;\n  });\n}\nfunction updateOrg(authUrl, integrationApiKey, updateOrgRequest) {\n  if (!isValidId(updateOrgRequest.orgId)) {\n    return Promise.resolve(false);\n  }\n  const request = {\n    name: updateOrgRequest.name,\n    can_setup_saml: updateOrgRequest.canSetupSaml,\n    metadata: updateOrgRequest.metadata,\n    max_users: updateOrgRequest.maxUsers,\n    autojoin_by_domain: updateOrgRequest.canJoinOnEmailDomainMatch,\n    restrict_to_domain: updateOrgRequest.membersMustHaveEmailDomainMatch,\n    domain: updateOrgRequest.domain,\n    legacy_org_id: updateOrgRequest.legacyOrgId,\n    require_2fa_by: updateOrgRequest.require2faBy,\n    extra_domains: updateOrgRequest.extraDomains,\n    password_rotation_enabled: updateOrgRequest.passwordRotationEnabled,\n    password_rotation_history_size: updateOrgRequest.passwordRotationHistorySize,\n    password_rotation_period: updateOrgRequest.passwordRotationPeriod\n  };\n  return httpRequest(\n    authUrl,\n    integrationApiKey,\n    `${ORG_ENDPOINT_PATH}/${updateOrgRequest.orgId}`,\n    \"PUT\",\n    JSON.stringify(request)\n  ).then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode === 400) {\n      throw new UpdateOrgException(httpResponse.response);\n    } else if (httpResponse.statusCode === 404) {\n      return false;\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when updating org\");\n    }\n    return true;\n  });\n}\nfunction subscribeOrgToRoleMapping(authUrl, integrationApiKey, orgId, customRoleMappingName) {\n  if (!isValidId(orgId)) {\n    return Promise.resolve(false);\n  }\n  const request = {\n    custom_role_mapping_name: customRoleMappingName\n  };\n  return httpRequest(\n    authUrl,\n    integrationApiKey,\n    `${ORG_ENDPOINT_PATH}/${orgId}`,\n    \"PUT\",\n    JSON.stringify(request)\n  ).then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode === 400) {\n      throw new UpdateOrgException(httpResponse.response);\n    } else if (httpResponse.statusCode === 404) {\n      return false;\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when subscribing an org to a role mapping\");\n    }\n    return true;\n  });\n}\nfunction deleteOrg(authUrl, integrationApiKey, orgId) {\n  if (!isValidId(orgId)) {\n    return Promise.resolve(false);\n  }\n  return httpRequest(authUrl, integrationApiKey, `${ORG_ENDPOINT_PATH}/${orgId}`, \"DELETE\").then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode === 404) {\n      return false;\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when deleting org\");\n    }\n    return true;\n  });\n}\nfunction revokePendingOrgInvite(authUrl, integrationApiKey, revokePendingOrgInviteRequest) {\n  const request = {\n    invitee_email: revokePendingOrgInviteRequest.inviteeEmail,\n    org_id: revokePendingOrgInviteRequest.orgId\n  };\n  return httpRequest(\n    authUrl,\n    integrationApiKey,\n    `/api/backend/v1/pending_org_invites`,\n    \"DELETE\",\n    JSON.stringify(request)\n  ).then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode === 400) {\n      throw new RevokePendingOrgInviteException(httpResponse.response);\n    } else if (httpResponse.statusCode === 404) {\n      return false;\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when revoking org invite\");\n    }\n    return true;\n  });\n}\nfunction deleteSamlConnection(authUrl, integrationApiKey, orgId) {\n  if (!isValidId(orgId)) {\n    return Promise.resolve(false);\n  }\n  return httpRequest(authUrl, integrationApiKey, `${BASE_ENDPOINT_PATH}/saml_idp_metadata/${orgId}`, \"DELETE\").then(\n    (httpResponse) => {\n      if (httpResponse.statusCode === 401) {\n        throw new Error(\"integrationApiKey is incorrect\");\n      } else if (httpResponse.statusCode === 429) {\n        throw new RateLimitedException(httpResponse.response);\n      } else if (httpResponse.statusCode === 400) {\n        throw new RevokePendingOrgInviteException(httpResponse.response);\n      } else if (httpResponse.statusCode === 404) {\n        return false;\n      } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n        throw new Error(\"Unknown error when deleting SAML connection\");\n      }\n      return true;\n    }\n  );\n}\nfunction setOidcIdpMetadata(authUrl, integrationApiKey, setOidcIdpMetadataRequest) {\n  if (!isValidId(setOidcIdpMetadataRequest.orgId)) {\n    return Promise.resolve(false);\n  }\n  let request = {\n    org_id: setOidcIdpMetadataRequest.orgId,\n    client_id: setOidcIdpMetadataRequest.clientId,\n    client_secret: setOidcIdpMetadataRequest.clientSecret,\n    uses_pkce: setOidcIdpMetadataRequest.usesPkce,\n    idp_type: setOidcIdpMetadataRequest.idpType\n  };\n  switch (setOidcIdpMetadataRequest.idpType) {\n    case \"Generic\":\n      request = __spreadProps(__spreadValues({}, request), {\n        auth_url: setOidcIdpMetadataRequest.authUrl,\n        token_url: setOidcIdpMetadataRequest.tokenUrl,\n        userinfo_url: setOidcIdpMetadataRequest.userinfoUrl\n      });\n      break;\n    case \"Okta\":\n      request = __spreadProps(__spreadValues({}, request), { okta_sso_domain: setOidcIdpMetadataRequest.oktaSsoDomain });\n      break;\n    case \"Azure\":\n      request = __spreadProps(__spreadValues({}, request), { entra_tenant_id: setOidcIdpMetadataRequest.entraTenantId });\n      break;\n  }\n  return httpRequest(\n    authUrl,\n    integrationApiKey,\n    `${BASE_ENDPOINT_PATH}/oidc_idp_metadata`,\n    \"POST\",\n    JSON.stringify(request)\n  ).then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode === 400) {\n      throw new UpdateOrgException(httpResponse.response);\n    } else if (httpResponse.statusCode === 404) {\n      return false;\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when setting the OIDC IdP metadata for an org's OIDC connection\");\n    }\n    return true;\n  });\n}\n\n// src/api/tokenVerificationMetadata.ts\nvar ENDPOINT_PATH8 = \"/api/v1/token_verification_metadata\";\nfunction fetchTokenVerificationMetadata(authUrl, integrationApiKey, manualTokenVerificationMetadata) {\n  if (manualTokenVerificationMetadata) {\n    return Promise.resolve(manualTokenVerificationMetadata);\n  }\n  return httpRequest(authUrl, integrationApiKey, ENDPOINT_PATH8, \"GET\").then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      console.error(\"Your API key is incorrect\");\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      console.error(`Error fetching token verification metadata: ${httpResponse.statusCode}`);\n      throw new Error(\"Unknown error when fetching token verification metadata\");\n    }\n    const jsonParse = JSON.parse(httpResponse.response);\n    return {\n      verifierKey: jsonParse.verifier_key_pem,\n      issuer: formatIssuer(authUrl)\n    };\n  });\n}\nfunction formatIssuer(authUrl) {\n  return authUrl.origin;\n}\n\n// src/api/user.ts\nvar ENDPOINT_PATH9 = \"/api/backend/v1/user\";\nfunction fetchUserMetadataByQuery(authUrl, integrationApiKey, pathParam, query) {\n  const queryString = formatQueryParameters(query);\n  return httpRequest(authUrl, integrationApiKey, `${ENDPOINT_PATH9}/${pathParam}?${queryString}`, \"GET\").then(\n    (httpResponse) => {\n      if (httpResponse.statusCode === 401) {\n        throw new Error(\"integrationApiKey is incorrect\");\n      } else if (httpResponse.statusCode === 429) {\n        throw new RateLimitedException(httpResponse.response);\n      } else if (httpResponse.statusCode === 404) {\n        return null;\n      } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n        throw new Error(\"Unknown error when fetching user metadata\");\n      }\n      return parseSnakeCaseToCamelCase(httpResponse.response);\n    }\n  );\n}\nfunction fetchUserMetadataByUserIdWithIdCheck(authUrl, integrationApiKey, userId, includeOrgs) {\n  if (isValidId(userId)) {\n    return fetchUserMetadataByQuery(authUrl, integrationApiKey, userId, { include_orgs: includeOrgs || false });\n  } else {\n    return Promise.resolve(null);\n  }\n}\nfunction fetchUsersByQuery(authUrl, integrationApiKey, query) {\n  const queryParams = {\n    page_size: query.pageSize,\n    page_number: query.pageNumber,\n    order_by: query.orderBy,\n    email_or_username: query.emailOrUsername,\n    include_orgs: query.includeOrgs,\n    legacy_user_id: query.legacyUserId\n  };\n  const q = formatQueryParameters(queryParams);\n  return httpRequest(authUrl, integrationApiKey, `${ENDPOINT_PATH9}/query?${q}`, \"GET\").then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode === 400) {\n      throw new Error(\"Invalid query \" + httpResponse.response);\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when fetching users by query\");\n    }\n    return parseSnakeCaseToCamelCase(httpResponse.response);\n  });\n}\nfunction fetchUsersInOrg(authUrl, integrationApiKey, query) {\n  if (!isValidId(query.orgId)) {\n    const emptyResponse = {\n      users: [],\n      totalUsers: 0,\n      currentPage: query.pageNumber || 0,\n      pageSize: query.pageSize || 10,\n      hasMoreResults: false\n    };\n    return Promise.resolve(emptyResponse);\n  }\n  const queryParams = {\n    page_size: query.pageSize,\n    page_number: query.pageNumber,\n    include_orgs: query.includeOrgs,\n    role: query.role\n  };\n  const queryString = formatQueryParameters(queryParams);\n  return httpRequest(authUrl, integrationApiKey, `${ENDPOINT_PATH9}/org/${query.orgId}?${queryString}`, \"GET\").then(\n    (httpResponse) => {\n      if (httpResponse.statusCode === 401) {\n        throw new Error(\"integrationApiKey is incorrect\");\n      } else if (httpResponse.statusCode === 429) {\n        throw new RateLimitedException(httpResponse.response);\n      } else if (httpResponse.statusCode === 400) {\n        throw new Error(\"Invalid query \" + httpResponse.response);\n      } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n        throw new Error(\"Unknown error when fetching users in org\");\n      }\n      return parseSnakeCaseToCamelCase(httpResponse.response);\n    }\n  );\n}\nfunction fetchUserMfaMethods(authUrl, integrationApiKey, userId) {\n  return __async(this, null, function* () {\n    if (!isValidId(userId)) {\n      return Promise.resolve(null);\n    }\n    const httpResponse = yield httpRequest(\n      authUrl,\n      integrationApiKey,\n      `${ENDPOINT_PATH9}/${userId}/mfa`,\n      \"GET\"\n    );\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode === 404) {\n      return null;\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when fetching user mfa methods\");\n    }\n    return parseSnakeCaseToCamelCase(httpResponse.response);\n  });\n}\nfunction fetchUserOAuthTokens(authUrl, integrationApiKey, userId) {\n  return __async(this, null, function* () {\n    if (!isValidId(userId)) {\n      return Promise.resolve(null);\n    }\n    const httpResponse = yield httpRequest(\n      authUrl,\n      integrationApiKey,\n      `${ENDPOINT_PATH9}/${userId}/oauth_token`,\n      \"GET\"\n    );\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode === 404) {\n      return null;\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when fetching user mfa methods\");\n    }\n    return parseSnakeCaseToCamelCase(httpResponse.response);\n  });\n}\nfunction fetchFreshTokenFromProvider(authUrl, integrationApiKey, userId, provider) {\n  return __async(this, null, function* () {\n    if (!isValidId(userId)) {\n      return Promise.resolve(null);\n    }\n    const httpResponse = yield httpRequest(\n      authUrl,\n      integrationApiKey,\n      `${ENDPOINT_PATH9}/${userId}/${provider}/fresh_token`,\n      \"GET\"\n    );\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when fetching fresh token from provider.\");\n    }\n    return parseSnakeCaseToCamelCase(httpResponse.response);\n  });\n}\nfunction fetchBatchUserMetadata(authUrl, integrationApiKey, type, values, keyFunction, includeOrgs) {\n  const queryString = includeOrgs ? formatQueryParameters({ include_orgs: includeOrgs }) : \"\";\n  const jsonBody = { [type]: values };\n  return httpRequest(\n    authUrl,\n    integrationApiKey,\n    `${ENDPOINT_PATH9}/${type}?${queryString}`,\n    \"POST\",\n    JSON.stringify(jsonBody)\n  ).then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode === 400) {\n      throw new Error(\"Bad request \" + httpResponse.response);\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when fetching batch user metadata\");\n    }\n    const userMetadatas = parseSnakeCaseToCamelCase(httpResponse.response);\n    const returnValue = {};\n    for (let userMetadata of userMetadatas) {\n      returnValue[keyFunction(userMetadata)] = userMetadata;\n    }\n    return returnValue;\n  });\n}\nfunction createUser(authUrl, integrationApiKey, createUserRequest) {\n  const request = {\n    email: createUserRequest.email,\n    email_confirmed: createUserRequest.emailConfirmed,\n    send_email_to_confirm_email_address: createUserRequest.sendEmailToConfirmEmailAddress,\n    password: createUserRequest.password,\n    ask_user_to_update_password_on_login: createUserRequest.askUserToUpdatePasswordOnLogin,\n    ignore_domain_restrictions: createUserRequest.ignoreDomainRestrictions,\n    username: createUserRequest.username,\n    first_name: createUserRequest.firstName,\n    last_name: createUserRequest.lastName,\n    properties: createUserRequest.properties\n  };\n  return httpRequest(authUrl, integrationApiKey, `${ENDPOINT_PATH9}/`, \"POST\", JSON.stringify(request)).then(\n    (httpResponse) => {\n      if (httpResponse.statusCode === 401) {\n        throw new Error(\"integrationApiKey is incorrect\");\n      } else if (httpResponse.statusCode === 429) {\n        throw new RateLimitedException(httpResponse.response);\n      } else if (httpResponse.statusCode === 400) {\n        throw new CreateUserException(httpResponse.response);\n      } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n        throw new Error(\"Unknown error when creating user\");\n      }\n      return parseSnakeCaseToCamelCase(httpResponse.response);\n    }\n  );\n}\nfunction disableUser(authUrl, integrationApiKey, userId) {\n  if (!isValidId(userId)) {\n    return Promise.resolve(false);\n  }\n  return httpRequest(authUrl, integrationApiKey, `${ENDPOINT_PATH9}/${userId}/disable`, \"POST\").then(\n    (httpResponse) => {\n      if (httpResponse.statusCode === 401) {\n        throw new Error(\"integrationApiKey is incorrect\");\n      } else if (httpResponse.statusCode === 429) {\n        throw new RateLimitedException(httpResponse.response);\n      } else if (httpResponse.statusCode === 404) {\n        return false;\n      } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n        throw new Error(\"Unknown error when disabling user\");\n      }\n      return true;\n    }\n  );\n}\nfunction enableUser(authUrl, integrationApiKey, userId) {\n  if (!isValidId(userId)) {\n    return Promise.resolve(false);\n  }\n  return httpRequest(authUrl, integrationApiKey, `${ENDPOINT_PATH9}/${userId}/enable`, \"POST\").then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode === 404) {\n      return false;\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when enabling user\");\n    }\n    return true;\n  });\n}\nfunction disableUser2fa(authUrl, integrationApiKey, userId) {\n  if (!isValidId(userId)) {\n    return Promise.resolve(false);\n  }\n  return httpRequest(authUrl, integrationApiKey, `${ENDPOINT_PATH9}/${userId}/disable_2fa`, \"POST\").then(\n    (httpResponse) => {\n      if (httpResponse.statusCode === 401) {\n        throw new Error(\"integrationApiKey is incorrect\");\n      } else if (httpResponse.statusCode === 429) {\n        throw new RateLimitedException(httpResponse.response);\n      } else if (httpResponse.statusCode === 404) {\n        return false;\n      } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n        throw new Error(\"Unknown error when disabling 2FA\");\n      }\n      return true;\n    }\n  );\n}\nfunction resendEmailConfirmation(authUrl, integrationApiKey, userId) {\n  if (!isValidId(userId)) {\n    return Promise.resolve(false);\n  }\n  const request = {\n    user_id: userId\n  };\n  return httpRequest(\n    authUrl,\n    integrationApiKey,\n    \"/api/backend/v1/resend_email_confirmation\",\n    \"POST\",\n    JSON.stringify(request)\n  ).then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 404) {\n      return false;\n    } else if (httpResponse.statusCode === 429) {\n      let errorMessage;\n      try {\n        errorMessage = JSON.parse(httpResponse.response).user_facing_error;\n      } catch (SyntaxError) {\n        errorMessage = httpResponse.response;\n      }\n      throw new RateLimitedException(errorMessage);\n    } else if (httpResponse.statusCode === 400) {\n      throw new BadRequestException(httpResponse.response);\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when resending email confirmation\");\n    }\n    return true;\n  });\n}\nfunction inviteUserToOrg(authUrl, integrationApiKey, inviteUserToOrgRequest) {\n  var _a;\n  const body = {\n    org_id: inviteUserToOrgRequest.orgId,\n    email: inviteUserToOrgRequest.email,\n    role: inviteUserToOrgRequest.role,\n    additional_roles: (_a = inviteUserToOrgRequest.additionalRoles) != null ? _a : []\n  };\n  return httpRequest(authUrl, integrationApiKey, `/api/backend/v1/invite_user`, \"POST\", JSON.stringify(body)).then(\n    (httpResponse) => {\n      if (httpResponse.statusCode === 401) {\n        throw new Error(\"integrationApiKey is incorrect\");\n      } else if (httpResponse.statusCode === 429) {\n        throw new RateLimitedException(httpResponse.response);\n      } else if (httpResponse.statusCode === 400) {\n        throw new BadRequestException(httpResponse.response);\n      } else if (httpResponse.statusCode === 404) {\n        return false;\n      } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n        throw new Error(\"Unknown error when inviting a user to the org\");\n      }\n      return true;\n    }\n  );\n}\nfunction inviteUserToOrgByUserId(authUrl, integrationApiKey, inviteUserToOrgRequest) {\n  var _a;\n  const body = {\n    org_id: inviteUserToOrgRequest.orgId,\n    user_id: inviteUserToOrgRequest.userId,\n    role: inviteUserToOrgRequest.role,\n    additional_roles: (_a = inviteUserToOrgRequest.additionalRoles) != null ? _a : []\n  };\n  return httpRequest(authUrl, integrationApiKey, `/api/backend/v1/invite_user_by_id`, \"POST\", JSON.stringify(body)).then(\n    (httpResponse) => {\n      if (httpResponse.statusCode === 401) {\n        throw new Error(\"integrationApiKey is incorrect\");\n      } else if (httpResponse.statusCode === 429) {\n        throw new RateLimitedException(httpResponse.response);\n      } else if (httpResponse.statusCode === 400) {\n        throw new BadRequestException(httpResponse.response);\n      } else if (httpResponse.statusCode === 404) {\n        return false;\n      } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n        throw new Error(\"Unknown error when inviting a user to the org\");\n      }\n      return true;\n    }\n  );\n}\nfunction logoutAllUserSessions(authUrl, integrationApiKey, userId) {\n  if (!isValidId(userId)) {\n    return Promise.resolve(false);\n  }\n  return httpRequest(authUrl, integrationApiKey, `${ENDPOINT_PATH9}/${userId}/logout_all_sessions`, \"POST\").then(\n    (httpResponse) => {\n      if (httpResponse.statusCode === 401) {\n        throw new Error(\"integrationApiKey is incorrect\");\n      } else if (httpResponse.statusCode === 429) {\n        throw new RateLimitedException(httpResponse.response);\n      } else if (httpResponse.statusCode === 404) {\n        return false;\n      } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n        throw new Error(\"Unknown error when logging out all sessions\");\n      }\n      return true;\n    }\n  );\n}\nfunction updateUserMetadata(authUrl, integrationApiKey, userId, updateUserMetadataRequest) {\n  if (!isValidId(userId)) {\n    return Promise.resolve(false);\n  }\n  const request = {\n    username: updateUserMetadataRequest.username,\n    first_name: updateUserMetadataRequest.firstName,\n    last_name: updateUserMetadataRequest.lastName,\n    picture_url: updateUserMetadataRequest.pictureUrl,\n    metadata: updateUserMetadataRequest.metadata,\n    properties: updateUserMetadataRequest.properties,\n    update_password_required: updateUserMetadataRequest.updatePasswordRequired,\n    legacy_user_id: updateUserMetadataRequest.legacyUserId\n  };\n  return httpRequest(authUrl, integrationApiKey, `${ENDPOINT_PATH9}/${userId}`, \"PUT\", JSON.stringify(request)).then(\n    (httpResponse) => {\n      if (httpResponse.statusCode === 401) {\n        throw new Error(\"integrationApiKey is incorrect\");\n      } else if (httpResponse.statusCode === 429) {\n        throw new RateLimitedException(httpResponse.response);\n      } else if (httpResponse.statusCode === 400) {\n        throw new UpdateUserMetadataException(httpResponse.response);\n      } else if (httpResponse.statusCode === 404) {\n        return false;\n      } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n        throw new Error(\"Unknown error when updating user metadata\");\n      }\n      return true;\n    }\n  );\n}\nfunction updateUserEmail(authUrl, integrationApiKey, userId, updateUserEmail2) {\n  if (!isValidId(userId)) {\n    return Promise.resolve(false);\n  }\n  const request = {\n    new_email: updateUserEmail2.newEmail,\n    require_email_confirmation: updateUserEmail2.requireEmailConfirmation\n  };\n  return httpRequest(\n    authUrl,\n    integrationApiKey,\n    `${ENDPOINT_PATH9}/${userId}/email`,\n    \"PUT\",\n    JSON.stringify(request)\n  ).then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode === 400) {\n      throw new UpdateUserEmailException(httpResponse.response);\n    } else if (httpResponse.statusCode === 404) {\n      return false;\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when creating user\");\n    }\n    return true;\n  });\n}\nfunction updateUserPassword(authUrl, integrationApiKey, userId, updateUserPasswordRequest) {\n  if (!isValidId(userId)) {\n    return Promise.resolve(false);\n  }\n  const request = {\n    password: updateUserPasswordRequest.password,\n    ask_user_to_update_password_on_login: updateUserPasswordRequest.askUserToUpdatePasswordOnLogin\n  };\n  return httpRequest(\n    authUrl,\n    integrationApiKey,\n    `${ENDPOINT_PATH9}/${userId}/password`,\n    \"PUT\",\n    JSON.stringify(request)\n  ).then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode === 400) {\n      throw new UpdateUserPasswordException(httpResponse.response);\n    } else if (httpResponse.statusCode === 404) {\n      return false;\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when updating password\");\n    }\n    return true;\n  });\n}\nfunction enableUserCanCreateOrgs(authUrl, integrationApiKey, userId) {\n  if (!isValidId(userId)) {\n    return Promise.resolve(false);\n  }\n  return httpRequest(authUrl, integrationApiKey, `${ENDPOINT_PATH9}/${userId}/can_create_orgs/enable`, \"PUT\").then(\n    (httpResponse) => {\n      if (httpResponse.statusCode === 401) {\n        throw new Error(\"integrationApiKey is incorrect\");\n      } else if (httpResponse.statusCode === 429) {\n        throw new RateLimitedException(httpResponse.response);\n      } else if (httpResponse.statusCode === 404) {\n        return false;\n      } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n        throw new Error(\"Unknown error when enabling canCreateOrgs\");\n      }\n      return true;\n    }\n  );\n}\nfunction disableUserCanCreateOrgs(authUrl, integrationApiKey, userId) {\n  if (!isValidId(userId)) {\n    return Promise.resolve(false);\n  }\n  return httpRequest(authUrl, integrationApiKey, `${ENDPOINT_PATH9}/${userId}/can_create_orgs/disable`, \"PUT\").then(\n    (httpResponse) => {\n      if (httpResponse.statusCode === 401) {\n        throw new Error(\"integrationApiKey is incorrect\");\n      } else if (httpResponse.statusCode === 429) {\n        throw new RateLimitedException(httpResponse.response);\n      } else if (httpResponse.statusCode === 404) {\n        return false;\n      } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n        throw new Error(\"Unknown error when disabling canCreateOrgs\");\n      }\n      return true;\n    }\n  );\n}\nfunction clearUserPassword(authUrl, integrationApiKey, userId) {\n  return __async(this, null, function* () {\n    if (!isValidId(userId)) {\n      return Promise.resolve(false);\n    }\n    const httpResponse = yield httpRequest(\n      authUrl,\n      integrationApiKey,\n      `${ENDPOINT_PATH9}/${userId}/clear_password`,\n      \"PUT\"\n    );\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when clearing password\");\n    }\n    return true;\n  });\n}\nfunction deleteUser(authUrl, integrationApiKey, userId) {\n  if (!isValidId(userId)) {\n    return Promise.resolve(false);\n  }\n  return httpRequest(authUrl, integrationApiKey, `${ENDPOINT_PATH9}/${userId}`, \"DELETE\").then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode === 404) {\n      return false;\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when deleting user\");\n    }\n    return true;\n  });\n}\nfunction fetchUserSignupQueryParams(authUrl, integrationApiKey, userId) {\n  return __async(this, null, function* () {\n    if (!isValidId(userId)) {\n      return Promise.resolve(null);\n    }\n    const httpResponse = yield httpRequest(\n      authUrl,\n      integrationApiKey,\n      `${ENDPOINT_PATH9}/${userId}/signup_query_parameters`,\n      \"GET\"\n    );\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode === 404) {\n      return null;\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when fetching user signup query params\");\n    }\n    const snakeCase = JSON.parse(httpResponse.response);\n    return { userSignupQueryParameters: snakeCase[\"user_signup_query_parameters\"] };\n  });\n}\n\n// src/api/scim.ts\nvar SCIM_GROUPS_PATH = \"/api/backend/v1/scim\";\nfunction fetchOrgScimGroups(authUrl, integrationApiKey, fetchOrgScimGroupsRequest) {\n  const request = {\n    page_size: fetchOrgScimGroupsRequest.pageSize,\n    page_number: fetchOrgScimGroupsRequest.pageNumber,\n    user_id: fetchOrgScimGroupsRequest.userId\n  };\n  const queryString = formatQueryParameters(request);\n  return httpRequest(\n    authUrl,\n    integrationApiKey,\n    `${SCIM_GROUPS_PATH}/${fetchOrgScimGroupsRequest.orgId}/groups?${queryString}`,\n    \"GET\"\n  ).then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode && httpResponse.statusCode === 404) {\n      throw new Error(\"Organization not found\");\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when fetching SCIM groups\");\n    }\n    return parseSnakeCaseToCamelCase(httpResponse.response);\n  });\n}\nfunction fetchScimGroup(authUrl, integrationApiKey, fetchScimGroupRequest) {\n  const request = {\n    members_page_size: fetchScimGroupRequest.membersPageSize,\n    members_page_number: fetchScimGroupRequest.membersPageNumber\n  };\n  const queryString = formatQueryParameters(request);\n  return httpRequest(\n    authUrl,\n    integrationApiKey,\n    `${SCIM_GROUPS_PATH}/${fetchScimGroupRequest.orgId}/groups/${fetchScimGroupRequest.groupId}?${queryString}`,\n    \"GET\"\n  ).then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode && httpResponse.statusCode === 404) {\n      throw new Error(\"Organization not found\");\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when fetching SCIM group\");\n    }\n    return parseSnakeCaseToCamelCase(httpResponse.response);\n  });\n}\n\n// src/validators.ts\nfunction validatePersonalApiKey(authUrl, integrationApiKey, apiKeyToken) {\n  return __async(this, null, function* () {\n    const apiKeyValidation = yield validateApiKey(authUrl, integrationApiKey, apiKeyToken);\n    if (!apiKeyValidation.user || apiKeyValidation.org) {\n      throw new ApiKeyValidateException(JSON.stringify({ api_key_token: [\"Not a personal API Key\"] }));\n    }\n    return {\n      user: apiKeyValidation.user,\n      metadata: apiKeyValidation.metadata\n    };\n  });\n}\nfunction validateOrgApiKey(authUrl, integrationApiKey, apiKeyToken) {\n  return __async(this, null, function* () {\n    const apiKeyValidation = yield validateApiKey(authUrl, integrationApiKey, apiKeyToken);\n    if (!apiKeyValidation.org) {\n      throw new ApiKeyValidateException(JSON.stringify({ api_key_token: [\"Not an org API Key\"] }));\n    }\n    return {\n      org: apiKeyValidation.org,\n      metadata: apiKeyValidation.metadata,\n      user: apiKeyValidation.user,\n      userInOrg: apiKeyValidation.userInOrg\n    };\n  });\n}\n\n// src/api/userInsights.ts\nvar USER_REPORTS_PATH = \"/api/backend/v1/user_report\";\nvar ORG_REPORTS_PATH = \"/api/backend/v1/org_report\";\nvar CHART_METRICS_PATH = \"/api/backend/v1/chart_metrics\";\nfunction fetchUserReport(authUrl, integrationApiKey, reportType, reportInterval, pagination) {\n  const request = {\n    report_interval: reportInterval,\n    page_size: pagination == null ? void 0 : pagination.pageSize,\n    page_number: pagination == null ? void 0 : pagination.pageNumber\n  };\n  const queryString = formatQueryParameters(request);\n  return httpRequest(authUrl, integrationApiKey, `${USER_REPORTS_PATH}/${reportType}?${queryString}`, \"GET\").then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when fetching the user report\");\n    }\n    return parseSnakeCaseToCamelCase(httpResponse.response);\n  });\n}\nfunction fetchOrgReport(authUrl, integrationApiKey, reportType, reportInterval, pagination) {\n  const request = {\n    report_interval: reportInterval,\n    page_size: pagination == null ? void 0 : pagination.pageSize,\n    page_number: pagination == null ? void 0 : pagination.pageNumber\n  };\n  const queryString = formatQueryParameters(request);\n  return httpRequest(authUrl, integrationApiKey, `${ORG_REPORTS_PATH}/${reportType}?${queryString}`, \"GET\").then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when fetching the org report\");\n    }\n    return parseSnakeCaseToCamelCase(httpResponse.response);\n  });\n}\nfunction fetchChartMetricData(authUrl, integrationApiKey, chartMetric, cadence, startDate, endDate) {\n  const request = {\n    cadence,\n    start_date: startDate == null ? void 0 : startDate.toISOString().slice(0, 10),\n    // format to YYYY-MM-DD\n    end_date: endDate == null ? void 0 : endDate.toISOString().slice(0, 10)\n    // format to YYYY-MM-DD\n  };\n  const queryString = formatQueryParameters(request);\n  return httpRequest(authUrl, integrationApiKey, `${CHART_METRICS_PATH}/${chartMetric}?${queryString}`, \"GET\").then((httpResponse) => {\n    if (httpResponse.statusCode === 401) {\n      throw new Error(\"integrationApiKey is incorrect\");\n    } else if (httpResponse.statusCode === 429) {\n      throw new RateLimitedException(httpResponse.response);\n    } else if (httpResponse.statusCode && httpResponse.statusCode >= 400) {\n      throw new Error(\"Unknown error when fetching the chart metric data\");\n    }\n    return parseSnakeCaseToCamelCase(httpResponse.response);\n  });\n}\n\n// src/api.ts\nfunction getApis(authUrl, integrationApiKey) {\n  function fetchTokenVerificationMetadataWrapper() {\n    return fetchTokenVerificationMetadata(authUrl, integrationApiKey);\n  }\n  function fetchUserMetadataByUserId(userId, includeOrgs) {\n    return fetchUserMetadataByUserIdWithIdCheck(authUrl, integrationApiKey, userId, includeOrgs);\n  }\n  function fetchUserMetadataByEmail(email, includeOrgs) {\n    return fetchUserMetadataByQuery(authUrl, integrationApiKey, \"email\", {\n      email,\n      include_orgs: includeOrgs || false\n    });\n  }\n  function fetchUserMetadataByUsername(username, includeOrgs) {\n    return fetchUserMetadataByQuery(authUrl, integrationApiKey, \"username\", {\n      username,\n      include_orgs: includeOrgs || false\n    });\n  }\n  function fetchBatchUserMetadataByUserIds(userIds, includeOrgs) {\n    return fetchBatchUserMetadata(\n      authUrl,\n      integrationApiKey,\n      \"user_ids\",\n      userIds,\n      (x) => x.userId,\n      includeOrgs || false\n    );\n  }\n  function fetchBatchUserMetadataByEmails(emails, includeOrgs) {\n    return fetchBatchUserMetadata(\n      authUrl,\n      integrationApiKey,\n      \"emails\",\n      emails,\n      (x) => x.email,\n      includeOrgs || false\n    );\n  }\n  function fetchBatchUserMetadataByUsernames(usernames, includeOrgs) {\n    return fetchBatchUserMetadata(\n      authUrl,\n      integrationApiKey,\n      \"usernames\",\n      usernames,\n      (x) => x.username || \"\",\n      includeOrgs || false\n    );\n  }\n  function fetchOrgWrapper(orgId) {\n    return fetchOrg(authUrl, integrationApiKey, orgId);\n  }\n  function fetchOrgsByQueryWrapper(orgQuery) {\n    return fetchOrgByQuery(authUrl, integrationApiKey, orgQuery);\n  }\n  function fetchCustomRoleMappingsWrapper() {\n    return fetchCustomRoleMappings(authUrl, integrationApiKey);\n  }\n  function fetchUsersByQueryWrapper(usersQuery) {\n    return fetchUsersByQuery(authUrl, integrationApiKey, usersQuery);\n  }\n  function fetchUsersInOrgWrapper(usersInOrgQuery) {\n    return fetchUsersInOrg(authUrl, integrationApiKey, usersInOrgQuery);\n  }\n  function fetchUserSignupQueryParamsWrapper(userId) {\n    return fetchUserSignupQueryParams(authUrl, integrationApiKey, userId);\n  }\n  function createUserWrapper(createUserRequest) {\n    return createUser(authUrl, integrationApiKey, createUserRequest);\n  }\n  function clearUserPasswordWrapper(userId) {\n    return clearUserPassword(authUrl, integrationApiKey, userId);\n  }\n  function updateUserMetadataWrapper(userId, updateUserMetadataRequest) {\n    return updateUserMetadata(authUrl, integrationApiKey, userId, updateUserMetadataRequest);\n  }\n  function deleteUserWrapper(userId) {\n    return deleteUser(authUrl, integrationApiKey, userId);\n  }\n  function disableUserWrapper(userId) {\n    return disableUser(authUrl, integrationApiKey, userId);\n  }\n  function enableUserWrapper(userId) {\n    return enableUser(authUrl, integrationApiKey, userId);\n  }\n  function disableUser2faWrapper(userId) {\n    return disableUser2fa(authUrl, integrationApiKey, userId);\n  }\n  function resendEmailConfirmationWrapper(userId) {\n    return resendEmailConfirmation(authUrl, integrationApiKey, userId);\n  }\n  function updateUserEmailWrapper(userId, updateUserEmailRequest) {\n    return updateUserEmail(authUrl, integrationApiKey, userId, updateUserEmailRequest);\n  }\n  function updateUserPasswordWrapper(userId, updateUserPasswordRequest) {\n    return updateUserPassword(authUrl, integrationApiKey, userId, updateUserPasswordRequest);\n  }\n  function enableUserCanCreateOrgsWrapper(userId) {\n    return enableUserCanCreateOrgs(authUrl, integrationApiKey, userId);\n  }\n  function fetchUserOAuthTokensWrapper(userId) {\n    return fetchUserOAuthTokens(authUrl, integrationApiKey, userId);\n  }\n  function fetchFreshTokenFromProviderWrapper(userId, provider) {\n    return fetchFreshTokenFromProvider(authUrl, integrationApiKey, userId, provider);\n  }\n  function disableUserCanCreateOrgsWrapper(userId) {\n    return disableUserCanCreateOrgs(authUrl, integrationApiKey, userId);\n  }\n  function createMagicLinkWrapper(createMagicLinkRequest) {\n    return createMagicLink(authUrl, integrationApiKey, createMagicLinkRequest);\n  }\n  function createAccessTokenWrapper(createAccessTokenRequest) {\n    return createAccessToken(authUrl, integrationApiKey, createAccessTokenRequest);\n  }\n  function fetchEmployeeByIdWrapper(employeeId) {\n    return fetchEmployeeById(authUrl, integrationApiKey, employeeId);\n  }\n  function migrateUserFromExternalSourceWrapper(migrateUserFromExternalSourceRequest) {\n    return migrateUserFromExternalSource(authUrl, integrationApiKey, migrateUserFromExternalSourceRequest);\n  }\n  function migrateUserPasswordWrapper(migrateUserPasswordRequest) {\n    return migrateUserPassword(authUrl, integrationApiKey, migrateUserPasswordRequest);\n  }\n  function createOrgWrapper(createOrgRequest) {\n    return createOrg(authUrl, integrationApiKey, createOrgRequest);\n  }\n  function addUserToOrgWrapper(addUserToOrgRequest) {\n    return addUserToOrg(authUrl, integrationApiKey, addUserToOrgRequest);\n  }\n  function changeUserRoleInOrgWrapper(changeUserRoleInOrgRequest) {\n    return changeUserRoleInOrg(authUrl, integrationApiKey, changeUserRoleInOrgRequest);\n  }\n  function removeUserFromOrgWrapper(removeUserFromOrgRequest) {\n    return removeUserFromOrg(authUrl, integrationApiKey, removeUserFromOrgRequest);\n  }\n  function updateOrgWrapper(updateOrgRequest) {\n    return updateOrg(authUrl, integrationApiKey, updateOrgRequest);\n  }\n  function subscribeOrgToRoleMappingWrapper(orgId, customRoleMappingName) {\n    return subscribeOrgToRoleMapping(authUrl, integrationApiKey, orgId, customRoleMappingName);\n  }\n  function deleteOrgWrapper(orgId) {\n    return deleteOrg(authUrl, integrationApiKey, orgId);\n  }\n  function allowOrgToSetupSamlConnectionWrapper(orgId) {\n    return allowOrgToSetupSamlConnection(authUrl, integrationApiKey, orgId);\n  }\n  function disallowOrgToSetupSamlConnectionWrapper(orgId) {\n    return disallowOrgToSetupSamlConnection(authUrl, integrationApiKey, orgId);\n  }\n  function createOrgSamlConnectionLinkWrapper(orgId, expiresInSeconds) {\n    return createOrgSamlConnectionLink(authUrl, integrationApiKey, orgId, expiresInSeconds);\n  }\n  function fetchSamlSpMetadataWrapper(orgId) {\n    return fetchSamlSpMetadata(authUrl, integrationApiKey, orgId);\n  }\n  function setSamlIdpMetadataWrapper(orgId, samlIdpMetadata) {\n    return setSamlIdpMetadata(authUrl, integrationApiKey, orgId, samlIdpMetadata);\n  }\n  function setOidcIdpMetadataWrapper(setOidcIdpMetadataRequest) {\n    return setOidcIdpMetadata(authUrl, integrationApiKey, setOidcIdpMetadataRequest);\n  }\n  function samlGoLiveWrapper(orgId) {\n    return samlGoLive(authUrl, integrationApiKey, orgId);\n  }\n  function deleteSamlConnectionWrapper(orgId) {\n    return deleteSamlConnection(authUrl, integrationApiKey, orgId);\n  }\n  function inviteUserToOrgWrapper(inviteUserToOrgRequest) {\n    return inviteUserToOrg(authUrl, integrationApiKey, inviteUserToOrgRequest);\n  }\n  function inviteUserToOrgByUserIdWrapper(inviteUserToOrgByUserIdRequest) {\n    return inviteUserToOrgByUserId(authUrl, integrationApiKey, inviteUserToOrgByUserIdRequest);\n  }\n  function logoutAllUserSessionsWrapper(userId) {\n    return logoutAllUserSessions(authUrl, integrationApiKey, userId);\n  }\n  function fetchPendingInvitesWrapper(params) {\n    return fetchPendingInvites(authUrl, integrationApiKey, params);\n  }\n  function revokePendingOrgInviteWrapper(revokePendingOrgInviteRequest) {\n    return revokePendingOrgInvite(authUrl, integrationApiKey, revokePendingOrgInviteRequest);\n  }\n  function fetchApiKeyWrapper(apiKeyId) {\n    return fetchApiKey(authUrl, integrationApiKey, apiKeyId);\n  }\n  function fetchCurrentApiKeysWrapper(apiKeyQuery) {\n    return fetchCurrentApiKeys(authUrl, integrationApiKey, apiKeyQuery);\n  }\n  function fetchArchivedApiKeysWrapper(apiKeyQuery) {\n    return fetchArchivedApiKeys(authUrl, integrationApiKey, apiKeyQuery);\n  }\n  function createApiKeyWrapper(apiKeyCreate) {\n    return createApiKey(authUrl, integrationApiKey, apiKeyCreate);\n  }\n  function updateApiKeyWrapper(apiKeyId, ApiKeyUpdate) {\n    return updateApiKey(authUrl, integrationApiKey, apiKeyId, ApiKeyUpdate);\n  }\n  function deleteApiKeyWrapper(apiKeyId) {\n    return deleteApiKey(authUrl, integrationApiKey, apiKeyId);\n  }\n  function validatePersonalApiKeyWrapper(apiKeyToken) {\n    return validatePersonalApiKey(authUrl, integrationApiKey, apiKeyToken);\n  }\n  function validateOrgApiKeyWrapper(apiKeyToken) {\n    return validateOrgApiKey(authUrl, integrationApiKey, apiKeyToken);\n  }\n  function validateApiKeyWrapper(apiKeyToken) {\n    return validateApiKey(authUrl, integrationApiKey, apiKeyToken);\n  }\n  function verifyStepUpTotpChallengeWrapper(verifyTotpChallengeRequest) {\n    return verifyStepUpTotpChallenge(authUrl, integrationApiKey, verifyTotpChallengeRequest);\n  }\n  function verifyStepUpGrantWrapper(verifyStepUpGrantRequest) {\n    return verifyStepUpGrant(authUrl, integrationApiKey, verifyStepUpGrantRequest);\n  }\n  function fetchApiKeyUsageWrapper(apiKeyUsageQuery) {\n    return fetchApiKeyUsage(authUrl, integrationApiKey, apiKeyUsageQuery);\n  }\n  function importApiKeyWrapper(apiKeysImportRequest) {\n    return importApiKey(authUrl, integrationApiKey, apiKeysImportRequest);\n  }\n  function validateImportedApiKeyWrapper(apiKeyToken) {\n    return validateImportedApiKey(authUrl, integrationApiKey, apiKeyToken);\n  }\n  function fetchUserMfaMethodsWrapper(userId) {\n    return fetchUserMfaMethods(authUrl, integrationApiKey, userId);\n  }\n  function sendSmsMfaCodeWrapper(sendSmsMfaCodeRequest) {\n    return sendSmsMfaCode(authUrl, integrationApiKey, sendSmsMfaCodeRequest);\n  }\n  function verifySmsChallengeWrapper(verifySmsChallengeRequest) {\n    return verifySmsChallenge(authUrl, integrationApiKey, verifySmsChallengeRequest);\n  }\n  function fetchUserTopInviterReportWrapper(reportInterval, pagination) {\n    return fetchUserReport(authUrl, integrationApiKey, \"top_inviter\" /* TOP_INVITERS */, reportInterval, pagination);\n  }\n  function fetchUserChampionReportWrapper(reportInterval, pagination) {\n    return fetchUserReport(authUrl, integrationApiKey, \"champion\" /* CHAMPION */, reportInterval, pagination);\n  }\n  function fetchUserReengagementReportWrapper(reportInterval, pagination) {\n    return fetchUserReport(authUrl, integrationApiKey, \"reengagement\" /* REENGAGEMENT */, reportInterval, pagination);\n  }\n  function fetchUserChurnReportWrapper(reportInterval, pagination) {\n    return fetchUserReport(authUrl, integrationApiKey, \"churn\" /* CHURN */, reportInterval, pagination);\n  }\n  function fetchOrgReengagementReportWrapper(reportInterval, pagination) {\n    return fetchOrgReport(authUrl, integrationApiKey, \"reengagement\" /* REENGAGEMENT */, reportInterval, pagination);\n  }\n  function fetchOrgChurnReportWrapper(reportInterval, pagination) {\n    return fetchOrgReport(authUrl, integrationApiKey, \"churn\" /* CHURN */, reportInterval, pagination);\n  }\n  function fetchOrgGrowthReportWrapper(reportInterval, pagination) {\n    return fetchOrgReport(authUrl, integrationApiKey, \"growth\" /* GROWTH */, reportInterval, pagination);\n  }\n  function fetchOrgAttritionReportWrapper(reportInterval, pagination) {\n    return fetchOrgReport(authUrl, integrationApiKey, \"attrition\" /* ATTRITION */, reportInterval, pagination);\n  }\n  function fetchChartMetricDataWrapper(chartMetric, cadence, startDate, endDate) {\n    return fetchChartMetricData(authUrl, integrationApiKey, chartMetric, cadence, startDate, endDate);\n  }\n  function fetchScimGroupWrapper(fetchScimGroupRequest) {\n    return fetchScimGroup(authUrl, integrationApiKey, fetchScimGroupRequest);\n  }\n  function fetchOrgScimGroupsWrapper(fetchOrgScimGroupsRequest) {\n    return fetchOrgScimGroups(authUrl, integrationApiKey, fetchOrgScimGroupsRequest);\n  }\n  return {\n    // fetching functions\n    fetchTokenVerificationMetadata: fetchTokenVerificationMetadataWrapper,\n    fetchUserMetadataByUserId,\n    fetchUserMetadataByEmail,\n    fetchUserMetadataByUsername,\n    fetchBatchUserMetadataByUserIds,\n    fetchBatchUserMetadataByEmails,\n    fetchBatchUserMetadataByUsernames,\n    fetchOrg: fetchOrgWrapper,\n    fetchOrgByQuery: fetchOrgsByQueryWrapper,\n    fetchCustomRoleMappings: fetchCustomRoleMappingsWrapper,\n    fetchUsersByQuery: fetchUsersByQueryWrapper,\n    fetchUsersInOrg: fetchUsersInOrgWrapper,\n    fetchUserSignupQueryParams: fetchUserSignupQueryParamsWrapper,\n    // user management functions\n    createUser: createUserWrapper,\n    updateUserMetadata: updateUserMetadataWrapper,\n    updateUserEmail: updateUserEmailWrapper,\n    updateUserPassword: updateUserPasswordWrapper,\n    clearUserPassword: clearUserPasswordWrapper,\n    createMagicLink: createMagicLinkWrapper,\n    createAccessToken: createAccessTokenWrapper,\n    migrateUserFromExternalSource: migrateUserFromExternalSourceWrapper,\n    migrateUserPassword: migrateUserPasswordWrapper,\n    deleteUser: deleteUserWrapper,\n    disableUser: disableUserWrapper,\n    enableUser: enableUserWrapper,\n    disableUser2fa: disableUser2faWrapper,\n    resendEmailConfirmation: resendEmailConfirmationWrapper,\n    enableUserCanCreateOrgs: enableUserCanCreateOrgsWrapper,\n    disableUserCanCreateOrgs: disableUserCanCreateOrgsWrapper,\n    logoutAllUserSessions: logoutAllUserSessionsWrapper,\n    fetchUserMfaMethods: fetchUserMfaMethodsWrapper,\n    fetchUserOAuthTokens: fetchUserOAuthTokensWrapper,\n    fetchFreshTokenFromProvider: fetchFreshTokenFromProviderWrapper,\n    // org management functions\n    createOrg: createOrgWrapper,\n    addUserToOrg: addUserToOrgWrapper,\n    changeUserRoleInOrg: changeUserRoleInOrgWrapper,\n    removeUserFromOrg: removeUserFromOrgWrapper,\n    updateOrg: updateOrgWrapper,\n    subscribeOrgToRoleMapping: subscribeOrgToRoleMappingWrapper,\n    deleteOrg: deleteOrgWrapper,\n    allowOrgToSetupSamlConnection: allowOrgToSetupSamlConnectionWrapper,\n    disallowOrgToSetupSamlConnection: disallowOrgToSetupSamlConnectionWrapper,\n    createOrgSamlConnectionLink: createOrgSamlConnectionLinkWrapper,\n    inviteUserToOrg: inviteUserToOrgWrapper,\n    inviteUserToOrgByUserId: inviteUserToOrgByUserIdWrapper,\n    fetchPendingInvites: fetchPendingInvitesWrapper,\n    revokePendingOrgInvite: revokePendingOrgInviteWrapper,\n    fetchSamlSpMetadata: fetchSamlSpMetadataWrapper,\n    setSamlIdpMetadata: setSamlIdpMetadataWrapper,\n    setOidcIdpMetadata: setOidcIdpMetadataWrapper,\n    samlGoLive: samlGoLiveWrapper,\n    deleteSamlConnection: deleteSamlConnectionWrapper,\n    // api keys functions\n    fetchApiKey: fetchApiKeyWrapper,\n    fetchCurrentApiKeys: fetchCurrentApiKeysWrapper,\n    fetchArchivedApiKeys: fetchArchivedApiKeysWrapper,\n    createApiKey: createApiKeyWrapper,\n    updateApiKey: updateApiKeyWrapper,\n    deleteApiKey: deleteApiKeyWrapper,\n    validateApiKey: validateApiKeyWrapper,\n    validatePersonalApiKey: validatePersonalApiKeyWrapper,\n    validateOrgApiKey: validateOrgApiKeyWrapper,\n    fetchApiKeyUsage: fetchApiKeyUsageWrapper,\n    importApiKey: importApiKeyWrapper,\n    validateImportedApiKey: validateImportedApiKeyWrapper,\n    // step-up mfa functions\n    verifyStepUpTotpChallenge: verifyStepUpTotpChallengeWrapper,\n    verifyStepUpGrant: verifyStepUpGrantWrapper,\n    sendSmsMfaCode: sendSmsMfaCodeWrapper,\n    verifySmsChallenge: verifySmsChallengeWrapper,\n    // employee functions\n    fetchEmployeeById: fetchEmployeeByIdWrapper,\n    // report data fetching functions\n    fetchUserTopInviterReport: fetchUserTopInviterReportWrapper,\n    fetchUserChampionReport: fetchUserChampionReportWrapper,\n    fetchUserReengagementReport: fetchUserReengagementReportWrapper,\n    fetchUserChurnReport: fetchUserChurnReportWrapper,\n    fetchOrgReengagementReport: fetchOrgReengagementReportWrapper,\n    fetchOrgChurnReport: fetchOrgChurnReportWrapper,\n    fetchOrgGrowthReport: fetchOrgGrowthReportWrapper,\n    fetchOrgAttritionReport: fetchOrgAttritionReportWrapper,\n    fetchChartMetricData: fetchChartMetricDataWrapper,\n    // scim functions\n    fetchScimGroup: fetchScimGroupWrapper,\n    fetchOrgScimGroups: fetchOrgScimGroupsWrapper\n  };\n}\nexport {\n  AccessTokenCreationException,\n  AddUserToOrgException,\n  ApiKeyCreateException,\n  ApiKeyDeleteException,\n  ApiKeyFetchException,\n  ApiKeyImportException,\n  ApiKeyUpdateException,\n  ApiKeyValidateException,\n  ApiKeyValidateRateLimitedException,\n  AttritionReportInterval,\n  BadRequestException,\n  ChampionReportInterval,\n  ChangeUserRoleInOrgException,\n  ChartMetric,\n  ChartMetricCadence,\n  ChurnReportInterval,\n  CreateOrgException,\n  CreateUserException,\n  FeatureGatedException,\n  ForbiddenException,\n  GrowthReportInterval,\n  IncorrectMfaCodeException,\n  InvalidRequestFieldsException,\n  MagicLinkCreationException,\n  MfaNotEnabledException,\n  MigrateUserException,\n  MigrateUserPasswordException,\n  OrgMemberInfo,\n  OrgRoleStructure,\n  RateLimitedException,\n  ReengagementReportInterval,\n  RemoveUserFromOrgException,\n  RevokePendingOrgInviteException,\n  StepUpMfaGrantType,\n  TopInviterReportInterval,\n  UnauthorizedException,\n  UnexpectedException,\n  UpdateOrgException,\n  UpdateUserEmailException,\n  UpdateUserMetadataException,\n  UpdateUserPasswordException,\n  UserClass,\n  UserNotFoundException,\n  getApis,\n  parseSnakeCaseToCamelCase,\n  toOrgIdToOrgMemberInfo,\n  toUser\n};\n//# sourceMappingURL=index.mjs.map","export default crypto;\nexport const isCryptoKey = (key) => key instanceof CryptoKey;\n","import digest from '../runtime/digest.js';\nexport const encoder = new TextEncoder();\nexport const decoder = new TextDecoder();\nconst MAX_INT32 = 2 ** 32;\nexport function concat(...buffers) {\n    const size = buffers.reduce((acc, { length }) => acc + length, 0);\n    const buf = new Uint8Array(size);\n    let i = 0;\n    for (const buffer of buffers) {\n        buf.set(buffer, i);\n        i += buffer.length;\n    }\n    return buf;\n}\nexport function p2s(alg, p2sInput) {\n    return concat(encoder.encode(alg), new Uint8Array([0]), p2sInput);\n}\nfunction writeUInt32BE(buf, value, offset) {\n    if (value < 0 || value >= MAX_INT32) {\n        throw new RangeError(`value must be >= 0 and <= ${MAX_INT32 - 1}. Received ${value}`);\n    }\n    buf.set([value >>> 24, value >>> 16, value >>> 8, value & 0xff], offset);\n}\nexport function uint64be(value) {\n    const high = Math.floor(value / MAX_INT32);\n    const low = value % MAX_INT32;\n    const buf = new Uint8Array(8);\n    writeUInt32BE(buf, high, 0);\n    writeUInt32BE(buf, low, 4);\n    return buf;\n}\nexport function uint32be(value) {\n    const buf = new Uint8Array(4);\n    writeUInt32BE(buf, value);\n    return buf;\n}\nexport function lengthAndInput(input) {\n    return concat(uint32be(input.length), input);\n}\nexport async function concatKdf(secret, bits, value) {\n    const iterations = Math.ceil((bits >> 3) / 32);\n    const res = new Uint8Array(iterations * 32);\n    for (let iter = 0; iter < iterations; iter++) {\n        const buf = new Uint8Array(4 + secret.length + value.length);\n        buf.set(uint32be(iter + 1));\n        buf.set(secret, 4);\n        buf.set(value, 4 + secret.length);\n        res.set(await digest('sha256', buf), iter * 32);\n    }\n    return res.slice(0, bits >> 3);\n}\n","import { encoder, decoder } from '../lib/buffer_utils.js';\nexport const encodeBase64 = (input) => {\n    let unencoded = input;\n    if (typeof unencoded === 'string') {\n        unencoded = encoder.encode(unencoded);\n    }\n    const CHUNK_SIZE = 0x8000;\n    const arr = [];\n    for (let i = 0; i < unencoded.length; i += CHUNK_SIZE) {\n        arr.push(String.fromCharCode.apply(null, unencoded.subarray(i, i + CHUNK_SIZE)));\n    }\n    return btoa(arr.join(''));\n};\nexport const encode = (input) => {\n    return encodeBase64(input).replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n};\nexport const decodeBase64 = (encoded) => {\n    const binary = atob(encoded);\n    const bytes = new Uint8Array(binary.length);\n    for (let i = 0; i < binary.length; i++) {\n        bytes[i] = binary.charCodeAt(i);\n    }\n    return bytes;\n};\nexport const decode = (input) => {\n    let encoded = input;\n    if (encoded instanceof Uint8Array) {\n        encoded = decoder.decode(encoded);\n    }\n    encoded = encoded.replace(/-/g, '+').replace(/_/g, '/').replace(/\\s/g, '');\n    try {\n        return decodeBase64(encoded);\n    }\n    catch {\n        throw new TypeError('The input to be decoded is not correctly encoded.');\n    }\n};\n","export class JOSEError extends Error {\n    constructor(message, options) {\n        super(message, options);\n        this.code = 'ERR_JOSE_GENERIC';\n        this.name = this.constructor.name;\n        Error.captureStackTrace?.(this, this.constructor);\n    }\n}\nJOSEError.code = 'ERR_JOSE_GENERIC';\nexport class JWTClaimValidationFailed extends JOSEError {\n    constructor(message, payload, claim = 'unspecified', reason = 'unspecified') {\n        super(message, { cause: { claim, reason, payload } });\n        this.code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';\n        this.claim = claim;\n        this.reason = reason;\n        this.payload = payload;\n    }\n}\nJWTClaimValidationFailed.code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';\nexport class JWTExpired extends JOSEError {\n    constructor(message, payload, claim = 'unspecified', reason = 'unspecified') {\n        super(message, { cause: { claim, reason, payload } });\n        this.code = 'ERR_JWT_EXPIRED';\n        this.claim = claim;\n        this.reason = reason;\n        this.payload = payload;\n    }\n}\nJWTExpired.code = 'ERR_JWT_EXPIRED';\nexport class JOSEAlgNotAllowed extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JOSE_ALG_NOT_ALLOWED';\n    }\n}\nJOSEAlgNotAllowed.code = 'ERR_JOSE_ALG_NOT_ALLOWED';\nexport class JOSENotSupported extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JOSE_NOT_SUPPORTED';\n    }\n}\nJOSENotSupported.code = 'ERR_JOSE_NOT_SUPPORTED';\nexport class JWEDecryptionFailed extends JOSEError {\n    constructor(message = 'decryption operation failed', options) {\n        super(message, options);\n        this.code = 'ERR_JWE_DECRYPTION_FAILED';\n    }\n}\nJWEDecryptionFailed.code = 'ERR_JWE_DECRYPTION_FAILED';\nexport class JWEInvalid extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JWE_INVALID';\n    }\n}\nJWEInvalid.code = 'ERR_JWE_INVALID';\nexport class JWSInvalid extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JWS_INVALID';\n    }\n}\nJWSInvalid.code = 'ERR_JWS_INVALID';\nexport class JWTInvalid extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JWT_INVALID';\n    }\n}\nJWTInvalid.code = 'ERR_JWT_INVALID';\nexport class JWKInvalid extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JWK_INVALID';\n    }\n}\nJWKInvalid.code = 'ERR_JWK_INVALID';\nexport class JWKSInvalid extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JWKS_INVALID';\n    }\n}\nJWKSInvalid.code = 'ERR_JWKS_INVALID';\nexport class JWKSNoMatchingKey extends JOSEError {\n    constructor(message = 'no applicable key found in the JSON Web Key Set', options) {\n        super(message, options);\n        this.code = 'ERR_JWKS_NO_MATCHING_KEY';\n    }\n}\nJWKSNoMatchingKey.code = 'ERR_JWKS_NO_MATCHING_KEY';\nexport class JWKSMultipleMatchingKeys extends JOSEError {\n    constructor(message = 'multiple matching keys found in the JSON Web Key Set', options) {\n        super(message, options);\n        this.code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\n    }\n}\nSymbol.asyncIterator;\nJWKSMultipleMatchingKeys.code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\nexport class JWKSTimeout extends JOSEError {\n    constructor(message = 'request timed out', options) {\n        super(message, options);\n        this.code = 'ERR_JWKS_TIMEOUT';\n    }\n}\nJWKSTimeout.code = 'ERR_JWKS_TIMEOUT';\nexport class JWSSignatureVerificationFailed extends JOSEError {\n    constructor(message = 'signature verification failed', options) {\n        super(message, options);\n        this.code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n    }\n}\nJWSSignatureVerificationFailed.code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n","function unusable(name, prop = 'algorithm.name') {\n    return new TypeError(`CryptoKey does not support this operation, its ${prop} must be ${name}`);\n}\nfunction isAlgorithm(algorithm, name) {\n    return algorithm.name === name;\n}\nfunction getHashLength(hash) {\n    return parseInt(hash.name.slice(4), 10);\n}\nfunction getNamedCurve(alg) {\n    switch (alg) {\n        case 'ES256':\n            return 'P-256';\n        case 'ES384':\n            return 'P-384';\n        case 'ES512':\n            return 'P-521';\n        default:\n            throw new Error('unreachable');\n    }\n}\nfunction checkUsage(key, usages) {\n    if (usages.length && !usages.some((expected) => key.usages.includes(expected))) {\n        let msg = 'CryptoKey does not support this operation, its usages must include ';\n        if (usages.length > 2) {\n            const last = usages.pop();\n            msg += `one of ${usages.join(', ')}, or ${last}.`;\n        }\n        else if (usages.length === 2) {\n            msg += `one of ${usages[0]} or ${usages[1]}.`;\n        }\n        else {\n            msg += `${usages[0]}.`;\n        }\n        throw new TypeError(msg);\n    }\n}\nexport function checkSigCryptoKey(key, alg, ...usages) {\n    switch (alg) {\n        case 'HS256':\n        case 'HS384':\n        case 'HS512': {\n            if (!isAlgorithm(key.algorithm, 'HMAC'))\n                throw unusable('HMAC');\n            const expected = parseInt(alg.slice(2), 10);\n            const actual = getHashLength(key.algorithm.hash);\n            if (actual !== expected)\n                throw unusable(`SHA-${expected}`, 'algorithm.hash');\n            break;\n        }\n        case 'RS256':\n        case 'RS384':\n        case 'RS512': {\n            if (!isAlgorithm(key.algorithm, 'RSASSA-PKCS1-v1_5'))\n                throw unusable('RSASSA-PKCS1-v1_5');\n            const expected = parseInt(alg.slice(2), 10);\n            const actual = getHashLength(key.algorithm.hash);\n            if (actual !== expected)\n                throw unusable(`SHA-${expected}`, 'algorithm.hash');\n            break;\n        }\n        case 'PS256':\n        case 'PS384':\n        case 'PS512': {\n            if (!isAlgorithm(key.algorithm, 'RSA-PSS'))\n                throw unusable('RSA-PSS');\n            const expected = parseInt(alg.slice(2), 10);\n            const actual = getHashLength(key.algorithm.hash);\n            if (actual !== expected)\n                throw unusable(`SHA-${expected}`, 'algorithm.hash');\n            break;\n        }\n        case 'EdDSA': {\n            if (key.algorithm.name !== 'Ed25519' && key.algorithm.name !== 'Ed448') {\n                throw unusable('Ed25519 or Ed448');\n            }\n            break;\n        }\n        case 'Ed25519': {\n            if (!isAlgorithm(key.algorithm, 'Ed25519'))\n                throw unusable('Ed25519');\n            break;\n        }\n        case 'ES256':\n        case 'ES384':\n        case 'ES512': {\n            if (!isAlgorithm(key.algorithm, 'ECDSA'))\n                throw unusable('ECDSA');\n            const expected = getNamedCurve(alg);\n            const actual = key.algorithm.namedCurve;\n            if (actual !== expected)\n                throw unusable(expected, 'algorithm.namedCurve');\n            break;\n        }\n        default:\n            throw new TypeError('CryptoKey does not support this operation');\n    }\n    checkUsage(key, usages);\n}\nexport function checkEncCryptoKey(key, alg, ...usages) {\n    switch (alg) {\n        case 'A128GCM':\n        case 'A192GCM':\n        case 'A256GCM': {\n            if (!isAlgorithm(key.algorithm, 'AES-GCM'))\n                throw unusable('AES-GCM');\n            const expected = parseInt(alg.slice(1, 4), 10);\n            const actual = key.algorithm.length;\n            if (actual !== expected)\n                throw unusable(expected, 'algorithm.length');\n            break;\n        }\n        case 'A128KW':\n        case 'A192KW':\n        case 'A256KW': {\n            if (!isAlgorithm(key.algorithm, 'AES-KW'))\n                throw unusable('AES-KW');\n            const expected = parseInt(alg.slice(1, 4), 10);\n            const actual = key.algorithm.length;\n            if (actual !== expected)\n                throw unusable(expected, 'algorithm.length');\n            break;\n        }\n        case 'ECDH': {\n            switch (key.algorithm.name) {\n                case 'ECDH':\n                case 'X25519':\n                case 'X448':\n                    break;\n                default:\n                    throw unusable('ECDH, X25519, or X448');\n            }\n            break;\n        }\n        case 'PBES2-HS256+A128KW':\n        case 'PBES2-HS384+A192KW':\n        case 'PBES2-HS512+A256KW':\n            if (!isAlgorithm(key.algorithm, 'PBKDF2'))\n                throw unusable('PBKDF2');\n            break;\n        case 'RSA-OAEP':\n        case 'RSA-OAEP-256':\n        case 'RSA-OAEP-384':\n        case 'RSA-OAEP-512': {\n            if (!isAlgorithm(key.algorithm, 'RSA-OAEP'))\n                throw unusable('RSA-OAEP');\n            const expected = parseInt(alg.slice(9), 10) || 1;\n            const actual = getHashLength(key.algorithm.hash);\n            if (actual !== expected)\n                throw unusable(`SHA-${expected}`, 'algorithm.hash');\n            break;\n        }\n        default:\n            throw new TypeError('CryptoKey does not support this operation');\n    }\n    checkUsage(key, usages);\n}\n","function message(msg, actual, ...types) {\n    types = types.filter(Boolean);\n    if (types.length > 2) {\n        const last = types.pop();\n        msg += `one of type ${types.join(', ')}, or ${last}.`;\n    }\n    else if (types.length === 2) {\n        msg += `one of type ${types[0]} or ${types[1]}.`;\n    }\n    else {\n        msg += `of type ${types[0]}.`;\n    }\n    if (actual == null) {\n        msg += ` Received ${actual}`;\n    }\n    else if (typeof actual === 'function' && actual.name) {\n        msg += ` Received function ${actual.name}`;\n    }\n    else if (typeof actual === 'object' && actual != null) {\n        if (actual.constructor?.name) {\n            msg += ` Received an instance of ${actual.constructor.name}`;\n        }\n    }\n    return msg;\n}\nexport default (actual, ...types) => {\n    return message('Key must be ', actual, ...types);\n};\nexport function withAlg(alg, actual, ...types) {\n    return message(`Key for the ${alg} algorithm must be `, actual, ...types);\n}\n","import { isCryptoKey } from './webcrypto.js';\nexport default (key) => {\n    if (isCryptoKey(key)) {\n        return true;\n    }\n    return key?.[Symbol.toStringTag] === 'KeyObject';\n};\nexport const types = ['CryptoKey'];\n","const isDisjoint = (...headers) => {\n    const sources = headers.filter(Boolean);\n    if (sources.length === 0 || sources.length === 1) {\n        return true;\n    }\n    let acc;\n    for (const header of sources) {\n        const parameters = Object.keys(header);\n        if (!acc || acc.size === 0) {\n            acc = new Set(parameters);\n            continue;\n        }\n        for (const parameter of parameters) {\n            if (acc.has(parameter)) {\n                return false;\n            }\n            acc.add(parameter);\n        }\n    }\n    return true;\n};\nexport default isDisjoint;\n","function isObjectLike(value) {\n    return typeof value === 'object' && value !== null;\n}\nexport default function isObject(input) {\n    if (!isObjectLike(input) || Object.prototype.toString.call(input) !== '[object Object]') {\n        return false;\n    }\n    if (Object.getPrototypeOf(input) === null) {\n        return true;\n    }\n    let proto = input;\n    while (Object.getPrototypeOf(proto) !== null) {\n        proto = Object.getPrototypeOf(proto);\n    }\n    return Object.getPrototypeOf(input) === proto;\n}\n","export default (alg, key) => {\n    if (alg.startsWith('RS') || alg.startsWith('PS')) {\n        const { modulusLength } = key.algorithm;\n        if (typeof modulusLength !== 'number' || modulusLength < 2048) {\n            throw new TypeError(`${alg} requires key modulusLength to be 2048 bits or larger`);\n        }\n    }\n};\n","import isObject from './is_object.js';\nexport function isJWK(key) {\n    return isObject(key) && typeof key.kty === 'string';\n}\nexport function isPrivateJWK(key) {\n    return key.kty !== 'oct' && typeof key.d === 'string';\n}\nexport function isPublicJWK(key) {\n    return key.kty !== 'oct' && typeof key.d === 'undefined';\n}\nexport function isSecretJWK(key) {\n    return isJWK(key) && key.kty === 'oct' && typeof key.k === 'string';\n}\n","import crypto from './webcrypto.js';\nimport { JOSENotSupported } from '../util/errors.js';\nfunction subtleMapping(jwk) {\n    let algorithm;\n    let keyUsages;\n    switch (jwk.kty) {\n        case 'RSA': {\n            switch (jwk.alg) {\n                case 'PS256':\n                case 'PS384':\n                case 'PS512':\n                    algorithm = { name: 'RSA-PSS', hash: `SHA-${jwk.alg.slice(-3)}` };\n                    keyUsages = jwk.d ? ['sign'] : ['verify'];\n                    break;\n                case 'RS256':\n                case 'RS384':\n                case 'RS512':\n                    algorithm = { name: 'RSASSA-PKCS1-v1_5', hash: `SHA-${jwk.alg.slice(-3)}` };\n                    keyUsages = jwk.d ? ['sign'] : ['verify'];\n                    break;\n                case 'RSA-OAEP':\n                case 'RSA-OAEP-256':\n                case 'RSA-OAEP-384':\n                case 'RSA-OAEP-512':\n                    algorithm = {\n                        name: 'RSA-OAEP',\n                        hash: `SHA-${parseInt(jwk.alg.slice(-3), 10) || 1}`,\n                    };\n                    keyUsages = jwk.d ? ['decrypt', 'unwrapKey'] : ['encrypt', 'wrapKey'];\n                    break;\n                default:\n                    throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n            }\n            break;\n        }\n        case 'EC': {\n            switch (jwk.alg) {\n                case 'ES256':\n                    algorithm = { name: 'ECDSA', namedCurve: 'P-256' };\n                    keyUsages = jwk.d ? ['sign'] : ['verify'];\n                    break;\n                case 'ES384':\n                    algorithm = { name: 'ECDSA', namedCurve: 'P-384' };\n                    keyUsages = jwk.d ? ['sign'] : ['verify'];\n                    break;\n                case 'ES512':\n                    algorithm = { name: 'ECDSA', namedCurve: 'P-521' };\n                    keyUsages = jwk.d ? ['sign'] : ['verify'];\n                    break;\n                case 'ECDH-ES':\n                case 'ECDH-ES+A128KW':\n                case 'ECDH-ES+A192KW':\n                case 'ECDH-ES+A256KW':\n                    algorithm = { name: 'ECDH', namedCurve: jwk.crv };\n                    keyUsages = jwk.d ? ['deriveBits'] : [];\n                    break;\n                default:\n                    throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n            }\n            break;\n        }\n        case 'OKP': {\n            switch (jwk.alg) {\n                case 'Ed25519':\n                    algorithm = { name: 'Ed25519' };\n                    keyUsages = jwk.d ? ['sign'] : ['verify'];\n                    break;\n                case 'EdDSA':\n                    algorithm = { name: jwk.crv };\n                    keyUsages = jwk.d ? ['sign'] : ['verify'];\n                    break;\n                case 'ECDH-ES':\n                case 'ECDH-ES+A128KW':\n                case 'ECDH-ES+A192KW':\n                case 'ECDH-ES+A256KW':\n                    algorithm = { name: jwk.crv };\n                    keyUsages = jwk.d ? ['deriveBits'] : [];\n                    break;\n                default:\n                    throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n            }\n            break;\n        }\n        default:\n            throw new JOSENotSupported('Invalid or unsupported JWK \"kty\" (Key Type) Parameter value');\n    }\n    return { algorithm, keyUsages };\n}\nconst parse = async (jwk) => {\n    if (!jwk.alg) {\n        throw new TypeError('\"alg\" argument is required when \"jwk.alg\" is not present');\n    }\n    const { algorithm, keyUsages } = subtleMapping(jwk);\n    const rest = [\n        algorithm,\n        jwk.ext ?? false,\n        jwk.key_ops ?? keyUsages,\n    ];\n    const keyData = { ...jwk };\n    delete keyData.alg;\n    delete keyData.use;\n    return crypto.subtle.importKey('jwk', keyData, ...rest);\n};\nexport default parse;\n","import { isJWK } from '../lib/is_jwk.js';\nimport { decode } from './base64url.js';\nimport importJWK from './jwk_to_key.js';\nconst exportKeyValue = (k) => decode(k);\nlet privCache;\nlet pubCache;\nconst isKeyObject = (key) => {\n    return key?.[Symbol.toStringTag] === 'KeyObject';\n};\nconst importAndCache = async (cache, key, jwk, alg, freeze = false) => {\n    let cached = cache.get(key);\n    if (cached?.[alg]) {\n        return cached[alg];\n    }\n    const cryptoKey = await importJWK({ ...jwk, alg });\n    if (freeze)\n        Object.freeze(key);\n    if (!cached) {\n        cache.set(key, { [alg]: cryptoKey });\n    }\n    else {\n        cached[alg] = cryptoKey;\n    }\n    return cryptoKey;\n};\nconst normalizePublicKey = (key, alg) => {\n    if (isKeyObject(key)) {\n        let jwk = key.export({ format: 'jwk' });\n        delete jwk.d;\n        delete jwk.dp;\n        delete jwk.dq;\n        delete jwk.p;\n        delete jwk.q;\n        delete jwk.qi;\n        if (jwk.k) {\n            return exportKeyValue(jwk.k);\n        }\n        pubCache || (pubCache = new WeakMap());\n        return importAndCache(pubCache, key, jwk, alg);\n    }\n    if (isJWK(key)) {\n        if (key.k)\n            return decode(key.k);\n        pubCache || (pubCache = new WeakMap());\n        const cryptoKey = importAndCache(pubCache, key, key, alg, true);\n        return cryptoKey;\n    }\n    return key;\n};\nconst normalizePrivateKey = (key, alg) => {\n    if (isKeyObject(key)) {\n        let jwk = key.export({ format: 'jwk' });\n        if (jwk.k) {\n            return exportKeyValue(jwk.k);\n        }\n        privCache || (privCache = new WeakMap());\n        return importAndCache(privCache, key, jwk, alg);\n    }\n    if (isJWK(key)) {\n        if (key.k)\n            return decode(key.k);\n        privCache || (privCache = new WeakMap());\n        const cryptoKey = importAndCache(privCache, key, key, alg, true);\n        return cryptoKey;\n    }\n    return key;\n};\nexport default { normalizePublicKey, normalizePrivateKey };\n","import crypto, { isCryptoKey } from './webcrypto.js';\nimport invalidKeyInput from '../lib/invalid_key_input.js';\nimport { encodeBase64, decodeBase64 } from './base64url.js';\nimport formatPEM from '../lib/format_pem.js';\nimport { JOSENotSupported } from '../util/errors.js';\nimport { types } from './is_key_like.js';\nconst genericExport = async (keyType, keyFormat, key) => {\n    if (!isCryptoKey(key)) {\n        throw new TypeError(invalidKeyInput(key, ...types));\n    }\n    if (!key.extractable) {\n        throw new TypeError('CryptoKey is not extractable');\n    }\n    if (key.type !== keyType) {\n        throw new TypeError(`key is not a ${keyType} key`);\n    }\n    return formatPEM(encodeBase64(new Uint8Array(await crypto.subtle.exportKey(keyFormat, key))), `${keyType.toUpperCase()} KEY`);\n};\nexport const toSPKI = (key) => {\n    return genericExport('public', 'spki', key);\n};\nexport const toPKCS8 = (key) => {\n    return genericExport('private', 'pkcs8', key);\n};\nconst findOid = (keyData, oid, from = 0) => {\n    if (from === 0) {\n        oid.unshift(oid.length);\n        oid.unshift(0x06);\n    }\n    const i = keyData.indexOf(oid[0], from);\n    if (i === -1)\n        return false;\n    const sub = keyData.subarray(i, i + oid.length);\n    if (sub.length !== oid.length)\n        return false;\n    return sub.every((value, index) => value === oid[index]) || findOid(keyData, oid, i + 1);\n};\nconst getNamedCurve = (keyData) => {\n    switch (true) {\n        case findOid(keyData, [0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07]):\n            return 'P-256';\n        case findOid(keyData, [0x2b, 0x81, 0x04, 0x00, 0x22]):\n            return 'P-384';\n        case findOid(keyData, [0x2b, 0x81, 0x04, 0x00, 0x23]):\n            return 'P-521';\n        case findOid(keyData, [0x2b, 0x65, 0x6e]):\n            return 'X25519';\n        case findOid(keyData, [0x2b, 0x65, 0x6f]):\n            return 'X448';\n        case findOid(keyData, [0x2b, 0x65, 0x70]):\n            return 'Ed25519';\n        case findOid(keyData, [0x2b, 0x65, 0x71]):\n            return 'Ed448';\n        default:\n            throw new JOSENotSupported('Invalid or unsupported EC Key Curve or OKP Key Sub Type');\n    }\n};\nconst genericImport = async (replace, keyFormat, pem, alg, options) => {\n    let algorithm;\n    let keyUsages;\n    const keyData = new Uint8Array(atob(pem.replace(replace, ''))\n        .split('')\n        .map((c) => c.charCodeAt(0)));\n    const isPublic = keyFormat === 'spki';\n    switch (alg) {\n        case 'PS256':\n        case 'PS384':\n        case 'PS512':\n            algorithm = { name: 'RSA-PSS', hash: `SHA-${alg.slice(-3)}` };\n            keyUsages = isPublic ? ['verify'] : ['sign'];\n            break;\n        case 'RS256':\n        case 'RS384':\n        case 'RS512':\n            algorithm = { name: 'RSASSA-PKCS1-v1_5', hash: `SHA-${alg.slice(-3)}` };\n            keyUsages = isPublic ? ['verify'] : ['sign'];\n            break;\n        case 'RSA-OAEP':\n        case 'RSA-OAEP-256':\n        case 'RSA-OAEP-384':\n        case 'RSA-OAEP-512':\n            algorithm = {\n                name: 'RSA-OAEP',\n                hash: `SHA-${parseInt(alg.slice(-3), 10) || 1}`,\n            };\n            keyUsages = isPublic ? ['encrypt', 'wrapKey'] : ['decrypt', 'unwrapKey'];\n            break;\n        case 'ES256':\n            algorithm = { name: 'ECDSA', namedCurve: 'P-256' };\n            keyUsages = isPublic ? ['verify'] : ['sign'];\n            break;\n        case 'ES384':\n            algorithm = { name: 'ECDSA', namedCurve: 'P-384' };\n            keyUsages = isPublic ? ['verify'] : ['sign'];\n            break;\n        case 'ES512':\n            algorithm = { name: 'ECDSA', namedCurve: 'P-521' };\n            keyUsages = isPublic ? ['verify'] : ['sign'];\n            break;\n        case 'ECDH-ES':\n        case 'ECDH-ES+A128KW':\n        case 'ECDH-ES+A192KW':\n        case 'ECDH-ES+A256KW': {\n            const namedCurve = getNamedCurve(keyData);\n            algorithm = namedCurve.startsWith('P-') ? { name: 'ECDH', namedCurve } : { name: namedCurve };\n            keyUsages = isPublic ? [] : ['deriveBits'];\n            break;\n        }\n        case 'Ed25519':\n            algorithm = { name: 'Ed25519' };\n            keyUsages = isPublic ? ['verify'] : ['sign'];\n            break;\n        case 'EdDSA':\n            algorithm = { name: getNamedCurve(keyData) };\n            keyUsages = isPublic ? ['verify'] : ['sign'];\n            break;\n        default:\n            throw new JOSENotSupported('Invalid or unsupported \"alg\" (Algorithm) value');\n    }\n    return crypto.subtle.importKey(keyFormat, keyData, algorithm, options?.extractable ?? false, keyUsages);\n};\nexport const fromPKCS8 = (pem, alg, options) => {\n    return genericImport(/(?:-----(?:BEGIN|END) PRIVATE KEY-----|\\s)/g, 'pkcs8', pem, alg, options);\n};\nexport const fromSPKI = (pem, alg, options) => {\n    return genericImport(/(?:-----(?:BEGIN|END) PUBLIC KEY-----|\\s)/g, 'spki', pem, alg, options);\n};\nfunction getElement(seq) {\n    const result = [];\n    let next = 0;\n    while (next < seq.length) {\n        const nextPart = parseElement(seq.subarray(next));\n        result.push(nextPart);\n        next += nextPart.byteLength;\n    }\n    return result;\n}\nfunction parseElement(bytes) {\n    let position = 0;\n    let tag = bytes[0] & 0x1f;\n    position++;\n    if (tag === 0x1f) {\n        tag = 0;\n        while (bytes[position] >= 0x80) {\n            tag = tag * 128 + bytes[position] - 0x80;\n            position++;\n        }\n        tag = tag * 128 + bytes[position] - 0x80;\n        position++;\n    }\n    let length = 0;\n    if (bytes[position] < 0x80) {\n        length = bytes[position];\n        position++;\n    }\n    else if (length === 0x80) {\n        length = 0;\n        while (bytes[position + length] !== 0 || bytes[position + length + 1] !== 0) {\n            if (length > bytes.byteLength) {\n                throw new TypeError('invalid indefinite form length');\n            }\n            length++;\n        }\n        const byteLength = position + length + 2;\n        return {\n            byteLength,\n            contents: bytes.subarray(position, position + length),\n            raw: bytes.subarray(0, byteLength),\n        };\n    }\n    else {\n        const numberOfDigits = bytes[position] & 0x7f;\n        position++;\n        length = 0;\n        for (let i = 0; i < numberOfDigits; i++) {\n            length = length * 256 + bytes[position];\n            position++;\n        }\n    }\n    const byteLength = position + length;\n    return {\n        byteLength,\n        contents: bytes.subarray(position, byteLength),\n        raw: bytes.subarray(0, byteLength),\n    };\n}\nfunction spkiFromX509(buf) {\n    const tbsCertificate = getElement(getElement(parseElement(buf).contents)[0].contents);\n    return encodeBase64(tbsCertificate[tbsCertificate[0].raw[0] === 0xa0 ? 6 : 5].raw);\n}\nfunction getSPKI(x509) {\n    const pem = x509.replace(/(?:-----(?:BEGIN|END) CERTIFICATE-----|\\s)/g, '');\n    const raw = decodeBase64(pem);\n    return formatPEM(spkiFromX509(raw), 'PUBLIC KEY');\n}\nexport const fromX509 = (pem, alg, options) => {\n    let spki;\n    try {\n        spki = getSPKI(pem);\n    }\n    catch (cause) {\n        throw new TypeError('Failed to parse the X.509 certificate', { cause });\n    }\n    return fromSPKI(spki, alg, options);\n};\n","import { decode as decodeBase64URL } from '../runtime/base64url.js';\nimport { fromSPKI, fromPKCS8, fromX509 } from '../runtime/asn1.js';\nimport asKeyObject from '../runtime/jwk_to_key.js';\nimport { JOSENotSupported } from '../util/errors.js';\nimport isObject from '../lib/is_object.js';\nexport async function importSPKI(spki, alg, options) {\n    if (typeof spki !== 'string' || spki.indexOf('-----BEGIN PUBLIC KEY-----') !== 0) {\n        throw new TypeError('\"spki\" must be SPKI formatted string');\n    }\n    return fromSPKI(spki, alg, options);\n}\nexport async function importX509(x509, alg, options) {\n    if (typeof x509 !== 'string' || x509.indexOf('-----BEGIN CERTIFICATE-----') !== 0) {\n        throw new TypeError('\"x509\" must be X.509 formatted string');\n    }\n    return fromX509(x509, alg, options);\n}\nexport async function importPKCS8(pkcs8, alg, options) {\n    if (typeof pkcs8 !== 'string' || pkcs8.indexOf('-----BEGIN PRIVATE KEY-----') !== 0) {\n        throw new TypeError('\"pkcs8\" must be PKCS#8 formatted string');\n    }\n    return fromPKCS8(pkcs8, alg, options);\n}\nexport async function importJWK(jwk, alg) {\n    if (!isObject(jwk)) {\n        throw new TypeError('JWK must be an object');\n    }\n    alg || (alg = jwk.alg);\n    switch (jwk.kty) {\n        case 'oct':\n            if (typeof jwk.k !== 'string' || !jwk.k) {\n                throw new TypeError('missing \"k\" (Key Value) Parameter value');\n            }\n            return decodeBase64URL(jwk.k);\n        case 'RSA':\n            if ('oth' in jwk && jwk.oth !== undefined) {\n                throw new JOSENotSupported('RSA JWK \"oth\" (Other Primes Info) Parameter value is not supported');\n            }\n        case 'EC':\n        case 'OKP':\n            return asKeyObject({ ...jwk, alg });\n        default:\n            throw new JOSENotSupported('Unsupported \"kty\" (Key Type) Parameter value');\n    }\n}\n","import { withAlg as invalidKeyInput } from './invalid_key_input.js';\nimport isKeyLike, { types } from '../runtime/is_key_like.js';\nimport * as jwk from './is_jwk.js';\nconst tag = (key) => key?.[Symbol.toStringTag];\nconst jwkMatchesOp = (alg, key, usage) => {\n    if (key.use !== undefined && key.use !== 'sig') {\n        throw new TypeError('Invalid key for this operation, when present its use must be sig');\n    }\n    if (key.key_ops !== undefined && key.key_ops.includes?.(usage) !== true) {\n        throw new TypeError(`Invalid key for this operation, when present its key_ops must include ${usage}`);\n    }\n    if (key.alg !== undefined && key.alg !== alg) {\n        throw new TypeError(`Invalid key for this operation, when present its alg must be ${alg}`);\n    }\n    return true;\n};\nconst symmetricTypeCheck = (alg, key, usage, allowJwk) => {\n    if (key instanceof Uint8Array)\n        return;\n    if (allowJwk && jwk.isJWK(key)) {\n        if (jwk.isSecretJWK(key) && jwkMatchesOp(alg, key, usage))\n            return;\n        throw new TypeError(`JSON Web Key for symmetric algorithms must have JWK \"kty\" (Key Type) equal to \"oct\" and the JWK \"k\" (Key Value) present`);\n    }\n    if (!isKeyLike(key)) {\n        throw new TypeError(invalidKeyInput(alg, key, ...types, 'Uint8Array', allowJwk ? 'JSON Web Key' : null));\n    }\n    if (key.type !== 'secret') {\n        throw new TypeError(`${tag(key)} instances for symmetric algorithms must be of type \"secret\"`);\n    }\n};\nconst asymmetricTypeCheck = (alg, key, usage, allowJwk) => {\n    if (allowJwk && jwk.isJWK(key)) {\n        switch (usage) {\n            case 'sign':\n                if (jwk.isPrivateJWK(key) && jwkMatchesOp(alg, key, usage))\n                    return;\n                throw new TypeError(`JSON Web Key for this operation be a private JWK`);\n            case 'verify':\n                if (jwk.isPublicJWK(key) && jwkMatchesOp(alg, key, usage))\n                    return;\n                throw new TypeError(`JSON Web Key for this operation be a public JWK`);\n        }\n    }\n    if (!isKeyLike(key)) {\n        throw new TypeError(invalidKeyInput(alg, key, ...types, allowJwk ? 'JSON Web Key' : null));\n    }\n    if (key.type === 'secret') {\n        throw new TypeError(`${tag(key)} instances for asymmetric algorithms must not be of type \"secret\"`);\n    }\n    if (usage === 'sign' && key.type === 'public') {\n        throw new TypeError(`${tag(key)} instances for asymmetric algorithm signing must be of type \"private\"`);\n    }\n    if (usage === 'decrypt' && key.type === 'public') {\n        throw new TypeError(`${tag(key)} instances for asymmetric algorithm decryption must be of type \"private\"`);\n    }\n    if (key.algorithm && usage === 'verify' && key.type === 'private') {\n        throw new TypeError(`${tag(key)} instances for asymmetric algorithm verifying must be of type \"public\"`);\n    }\n    if (key.algorithm && usage === 'encrypt' && key.type === 'private') {\n        throw new TypeError(`${tag(key)} instances for asymmetric algorithm encryption must be of type \"public\"`);\n    }\n};\nfunction checkKeyType(allowJwk, alg, key, usage) {\n    const symmetric = alg.startsWith('HS') ||\n        alg === 'dir' ||\n        alg.startsWith('PBES2') ||\n        /^A\\d{3}(?:GCM)?KW$/.test(alg);\n    if (symmetric) {\n        symmetricTypeCheck(alg, key, usage, allowJwk);\n    }\n    else {\n        asymmetricTypeCheck(alg, key, usage, allowJwk);\n    }\n}\nexport default checkKeyType.bind(undefined, false);\nexport const checkKeyTypeWithJwk = checkKeyType.bind(undefined, true);\n","import { JOSENotSupported } from '../util/errors.js';\nfunction validateCrit(Err, recognizedDefault, recognizedOption, protectedHeader, joseHeader) {\n    if (joseHeader.crit !== undefined && protectedHeader?.crit === undefined) {\n        throw new Err('\"crit\" (Critical) Header Parameter MUST be integrity protected');\n    }\n    if (!protectedHeader || protectedHeader.crit === undefined) {\n        return new Set();\n    }\n    if (!Array.isArray(protectedHeader.crit) ||\n        protectedHeader.crit.length === 0 ||\n        protectedHeader.crit.some((input) => typeof input !== 'string' || input.length === 0)) {\n        throw new Err('\"crit\" (Critical) Header Parameter MUST be an array of non-empty strings when present');\n    }\n    let recognized;\n    if (recognizedOption !== undefined) {\n        recognized = new Map([...Object.entries(recognizedOption), ...recognizedDefault.entries()]);\n    }\n    else {\n        recognized = recognizedDefault;\n    }\n    for (const parameter of protectedHeader.crit) {\n        if (!recognized.has(parameter)) {\n            throw new JOSENotSupported(`Extension Header Parameter \"${parameter}\" is not recognized`);\n        }\n        if (joseHeader[parameter] === undefined) {\n            throw new Err(`Extension Header Parameter \"${parameter}\" is missing`);\n        }\n        if (recognized.get(parameter) && protectedHeader[parameter] === undefined) {\n            throw new Err(`Extension Header Parameter \"${parameter}\" MUST be integrity protected`);\n        }\n    }\n    return new Set(protectedHeader.crit);\n}\nexport default validateCrit;\n","const validateAlgorithms = (option, algorithms) => {\n    if (algorithms !== undefined &&\n        (!Array.isArray(algorithms) || algorithms.some((s) => typeof s !== 'string'))) {\n        throw new TypeError(`\"${option}\" option must be an array of strings`);\n    }\n    if (!algorithms) {\n        return undefined;\n    }\n    return new Set(algorithms);\n};\nexport default validateAlgorithms;\n","import { JOSENotSupported } from '../util/errors.js';\nexport default function subtleDsa(alg, algorithm) {\n    const hash = `SHA-${alg.slice(-3)}`;\n    switch (alg) {\n        case 'HS256':\n        case 'HS384':\n        case 'HS512':\n            return { hash, name: 'HMAC' };\n        case 'PS256':\n        case 'PS384':\n        case 'PS512':\n            return { hash, name: 'RSA-PSS', saltLength: alg.slice(-3) >> 3 };\n        case 'RS256':\n        case 'RS384':\n        case 'RS512':\n            return { hash, name: 'RSASSA-PKCS1-v1_5' };\n        case 'ES256':\n        case 'ES384':\n        case 'ES512':\n            return { hash, name: 'ECDSA', namedCurve: algorithm.namedCurve };\n        case 'Ed25519':\n            return { name: 'Ed25519' };\n        case 'EdDSA':\n            return { name: algorithm.name };\n        default:\n            throw new JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);\n    }\n}\n","import crypto, { isCryptoKey } from './webcrypto.js';\nimport { checkSigCryptoKey } from '../lib/crypto_key.js';\nimport invalidKeyInput from '../lib/invalid_key_input.js';\nimport { types } from './is_key_like.js';\nimport normalize from './normalize_key.js';\nexport default async function getCryptoKey(alg, key, usage) {\n    if (usage === 'sign') {\n        key = await normalize.normalizePrivateKey(key, alg);\n    }\n    if (usage === 'verify') {\n        key = await normalize.normalizePublicKey(key, alg);\n    }\n    if (isCryptoKey(key)) {\n        checkSigCryptoKey(key, alg, usage);\n        return key;\n    }\n    if (key instanceof Uint8Array) {\n        if (!alg.startsWith('HS')) {\n            throw new TypeError(invalidKeyInput(key, ...types));\n        }\n        return crypto.subtle.importKey('raw', key, { hash: `SHA-${alg.slice(-3)}`, name: 'HMAC' }, false, [usage]);\n    }\n    throw new TypeError(invalidKeyInput(key, ...types, 'Uint8Array', 'JSON Web Key'));\n}\n","import subtleAlgorithm from './subtle_dsa.js';\nimport crypto from './webcrypto.js';\nimport checkKeyLength from './check_key_length.js';\nimport getVerifyKey from './get_sign_verify_key.js';\nconst verify = async (alg, key, signature, data) => {\n    const cryptoKey = await getVerifyKey(alg, key, 'verify');\n    checkKeyLength(alg, cryptoKey);\n    const algorithm = subtleAlgorithm(alg, cryptoKey.algorithm);\n    try {\n        return await crypto.subtle.verify(algorithm, cryptoKey, signature, data);\n    }\n    catch {\n        return false;\n    }\n};\nexport default verify;\n","import { decode as base64url } from '../../runtime/base64url.js';\nimport verify from '../../runtime/verify.js';\nimport { JOSEAlgNotAllowed, JWSInvalid, JWSSignatureVerificationFailed } from '../../util/errors.js';\nimport { concat, encoder, decoder } from '../../lib/buffer_utils.js';\nimport isDisjoint from '../../lib/is_disjoint.js';\nimport isObject from '../../lib/is_object.js';\nimport { checkKeyTypeWithJwk } from '../../lib/check_key_type.js';\nimport validateCrit from '../../lib/validate_crit.js';\nimport validateAlgorithms from '../../lib/validate_algorithms.js';\nimport { isJWK } from '../../lib/is_jwk.js';\nimport { importJWK } from '../../key/import.js';\nexport async function flattenedVerify(jws, key, options) {\n    if (!isObject(jws)) {\n        throw new JWSInvalid('Flattened JWS must be an object');\n    }\n    if (jws.protected === undefined && jws.header === undefined) {\n        throw new JWSInvalid('Flattened JWS must have either of the \"protected\" or \"header\" members');\n    }\n    if (jws.protected !== undefined && typeof jws.protected !== 'string') {\n        throw new JWSInvalid('JWS Protected Header incorrect type');\n    }\n    if (jws.payload === undefined) {\n        throw new JWSInvalid('JWS Payload missing');\n    }\n    if (typeof jws.signature !== 'string') {\n        throw new JWSInvalid('JWS Signature missing or incorrect type');\n    }\n    if (jws.header !== undefined && !isObject(jws.header)) {\n        throw new JWSInvalid('JWS Unprotected Header incorrect type');\n    }\n    let parsedProt = {};\n    if (jws.protected) {\n        try {\n            const protectedHeader = base64url(jws.protected);\n            parsedProt = JSON.parse(decoder.decode(protectedHeader));\n        }\n        catch {\n            throw new JWSInvalid('JWS Protected Header is invalid');\n        }\n    }\n    if (!isDisjoint(parsedProt, jws.header)) {\n        throw new JWSInvalid('JWS Protected and JWS Unprotected Header Parameter names must be disjoint');\n    }\n    const joseHeader = {\n        ...parsedProt,\n        ...jws.header,\n    };\n    const extensions = validateCrit(JWSInvalid, new Map([['b64', true]]), options?.crit, parsedProt, joseHeader);\n    let b64 = true;\n    if (extensions.has('b64')) {\n        b64 = parsedProt.b64;\n        if (typeof b64 !== 'boolean') {\n            throw new JWSInvalid('The \"b64\" (base64url-encode payload) Header Parameter must be a boolean');\n        }\n    }\n    const { alg } = joseHeader;\n    if (typeof alg !== 'string' || !alg) {\n        throw new JWSInvalid('JWS \"alg\" (Algorithm) Header Parameter missing or invalid');\n    }\n    const algorithms = options && validateAlgorithms('algorithms', options.algorithms);\n    if (algorithms && !algorithms.has(alg)) {\n        throw new JOSEAlgNotAllowed('\"alg\" (Algorithm) Header Parameter value not allowed');\n    }\n    if (b64) {\n        if (typeof jws.payload !== 'string') {\n            throw new JWSInvalid('JWS Payload must be a string');\n        }\n    }\n    else if (typeof jws.payload !== 'string' && !(jws.payload instanceof Uint8Array)) {\n        throw new JWSInvalid('JWS Payload must be a string or an Uint8Array instance');\n    }\n    let resolvedKey = false;\n    if (typeof key === 'function') {\n        key = await key(parsedProt, jws);\n        resolvedKey = true;\n        checkKeyTypeWithJwk(alg, key, 'verify');\n        if (isJWK(key)) {\n            key = await importJWK(key, alg);\n        }\n    }\n    else {\n        checkKeyTypeWithJwk(alg, key, 'verify');\n    }\n    const data = concat(encoder.encode(jws.protected ?? ''), encoder.encode('.'), typeof jws.payload === 'string' ? encoder.encode(jws.payload) : jws.payload);\n    let signature;\n    try {\n        signature = base64url(jws.signature);\n    }\n    catch {\n        throw new JWSInvalid('Failed to base64url decode the signature');\n    }\n    const verified = await verify(alg, key, signature, data);\n    if (!verified) {\n        throw new JWSSignatureVerificationFailed();\n    }\n    let payload;\n    if (b64) {\n        try {\n            payload = base64url(jws.payload);\n        }\n        catch {\n            throw new JWSInvalid('Failed to base64url decode the payload');\n        }\n    }\n    else if (typeof jws.payload === 'string') {\n        payload = encoder.encode(jws.payload);\n    }\n    else {\n        payload = jws.payload;\n    }\n    const result = { payload };\n    if (jws.protected !== undefined) {\n        result.protectedHeader = parsedProt;\n    }\n    if (jws.header !== undefined) {\n        result.unprotectedHeader = jws.header;\n    }\n    if (resolvedKey) {\n        return { ...result, key };\n    }\n    return result;\n}\n","import { flattenedVerify } from '../flattened/verify.js';\nimport { JWSInvalid } from '../../util/errors.js';\nimport { decoder } from '../../lib/buffer_utils.js';\nexport async function compactVerify(jws, key, options) {\n    if (jws instanceof Uint8Array) {\n        jws = decoder.decode(jws);\n    }\n    if (typeof jws !== 'string') {\n        throw new JWSInvalid('Compact JWS must be a string or Uint8Array');\n    }\n    const { 0: protectedHeader, 1: payload, 2: signature, length } = jws.split('.');\n    if (length !== 3) {\n        throw new JWSInvalid('Invalid Compact JWS');\n    }\n    const verified = await flattenedVerify({ payload, protected: protectedHeader, signature }, key, options);\n    const result = { payload: verified.payload, protectedHeader: verified.protectedHeader };\n    if (typeof key === 'function') {\n        return { ...result, key: verified.key };\n    }\n    return result;\n}\n","export default (date) => Math.floor(date.getTime() / 1000);\n","const minute = 60;\nconst hour = minute * 60;\nconst day = hour * 24;\nconst week = day * 7;\nconst year = day * 365.25;\nconst REGEX = /^(\\+|\\-)? ?(\\d+|\\d+\\.\\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i;\nexport default (str) => {\n    const matched = REGEX.exec(str);\n    if (!matched || (matched[4] && matched[1])) {\n        throw new TypeError('Invalid time period format');\n    }\n    const value = parseFloat(matched[2]);\n    const unit = matched[3].toLowerCase();\n    let numericDate;\n    switch (unit) {\n        case 'sec':\n        case 'secs':\n        case 'second':\n        case 'seconds':\n        case 's':\n            numericDate = Math.round(value);\n            break;\n        case 'minute':\n        case 'minutes':\n        case 'min':\n        case 'mins':\n        case 'm':\n            numericDate = Math.round(value * minute);\n            break;\n        case 'hour':\n        case 'hours':\n        case 'hr':\n        case 'hrs':\n        case 'h':\n            numericDate = Math.round(value * hour);\n            break;\n        case 'day':\n        case 'days':\n        case 'd':\n            numericDate = Math.round(value * day);\n            break;\n        case 'week':\n        case 'weeks':\n        case 'w':\n            numericDate = Math.round(value * week);\n            break;\n        default:\n            numericDate = Math.round(value * year);\n            break;\n    }\n    if (matched[1] === '-' || matched[4] === 'ago') {\n        return -numericDate;\n    }\n    return numericDate;\n};\n","import { JWTClaimValidationFailed, JWTExpired, JWTInvalid } from '../util/errors.js';\nimport { decoder } from './buffer_utils.js';\nimport epoch from './epoch.js';\nimport secs from './secs.js';\nimport isObject from './is_object.js';\nconst normalizeTyp = (value) => value.toLowerCase().replace(/^application\\//, '');\nconst checkAudiencePresence = (audPayload, audOption) => {\n    if (typeof audPayload === 'string') {\n        return audOption.includes(audPayload);\n    }\n    if (Array.isArray(audPayload)) {\n        return audOption.some(Set.prototype.has.bind(new Set(audPayload)));\n    }\n    return false;\n};\nexport default (protectedHeader, encodedPayload, options = {}) => {\n    let payload;\n    try {\n        payload = JSON.parse(decoder.decode(encodedPayload));\n    }\n    catch {\n    }\n    if (!isObject(payload)) {\n        throw new JWTInvalid('JWT Claims Set must be a top-level JSON object');\n    }\n    const { typ } = options;\n    if (typ &&\n        (typeof protectedHeader.typ !== 'string' ||\n            normalizeTyp(protectedHeader.typ) !== normalizeTyp(typ))) {\n        throw new JWTClaimValidationFailed('unexpected \"typ\" JWT header value', payload, 'typ', 'check_failed');\n    }\n    const { requiredClaims = [], issuer, subject, audience, maxTokenAge } = options;\n    const presenceCheck = [...requiredClaims];\n    if (maxTokenAge !== undefined)\n        presenceCheck.push('iat');\n    if (audience !== undefined)\n        presenceCheck.push('aud');\n    if (subject !== undefined)\n        presenceCheck.push('sub');\n    if (issuer !== undefined)\n        presenceCheck.push('iss');\n    for (const claim of new Set(presenceCheck.reverse())) {\n        if (!(claim in payload)) {\n            throw new JWTClaimValidationFailed(`missing required \"${claim}\" claim`, payload, claim, 'missing');\n        }\n    }\n    if (issuer &&\n        !(Array.isArray(issuer) ? issuer : [issuer]).includes(payload.iss)) {\n        throw new JWTClaimValidationFailed('unexpected \"iss\" claim value', payload, 'iss', 'check_failed');\n    }\n    if (subject && payload.sub !== subject) {\n        throw new JWTClaimValidationFailed('unexpected \"sub\" claim value', payload, 'sub', 'check_failed');\n    }\n    if (audience &&\n        !checkAudiencePresence(payload.aud, typeof audience === 'string' ? [audience] : audience)) {\n        throw new JWTClaimValidationFailed('unexpected \"aud\" claim value', payload, 'aud', 'check_failed');\n    }\n    let tolerance;\n    switch (typeof options.clockTolerance) {\n        case 'string':\n            tolerance = secs(options.clockTolerance);\n            break;\n        case 'number':\n            tolerance = options.clockTolerance;\n            break;\n        case 'undefined':\n            tolerance = 0;\n            break;\n        default:\n            throw new TypeError('Invalid clockTolerance option type');\n    }\n    const { currentDate } = options;\n    const now = epoch(currentDate || new Date());\n    if ((payload.iat !== undefined || maxTokenAge) && typeof payload.iat !== 'number') {\n        throw new JWTClaimValidationFailed('\"iat\" claim must be a number', payload, 'iat', 'invalid');\n    }\n    if (payload.nbf !== undefined) {\n        if (typeof payload.nbf !== 'number') {\n            throw new JWTClaimValidationFailed('\"nbf\" claim must be a number', payload, 'nbf', 'invalid');\n        }\n        if (payload.nbf > now + tolerance) {\n            throw new JWTClaimValidationFailed('\"nbf\" claim timestamp check failed', payload, 'nbf', 'check_failed');\n        }\n    }\n    if (payload.exp !== undefined) {\n        if (typeof payload.exp !== 'number') {\n            throw new JWTClaimValidationFailed('\"exp\" claim must be a number', payload, 'exp', 'invalid');\n        }\n        if (payload.exp <= now - tolerance) {\n            throw new JWTExpired('\"exp\" claim timestamp check failed', payload, 'exp', 'check_failed');\n        }\n    }\n    if (maxTokenAge) {\n        const age = now - payload.iat;\n        const max = typeof maxTokenAge === 'number' ? maxTokenAge : secs(maxTokenAge);\n        if (age - tolerance > max) {\n            throw new JWTExpired('\"iat\" claim timestamp check failed (too far in the past)', payload, 'iat', 'check_failed');\n        }\n        if (age < 0 - tolerance) {\n            throw new JWTClaimValidationFailed('\"iat\" claim timestamp check failed (it should be in the past)', payload, 'iat', 'check_failed');\n        }\n    }\n    return payload;\n};\n","import { compactVerify } from '../jws/compact/verify.js';\nimport jwtPayload from '../lib/jwt_claims_set.js';\nimport { JWTInvalid } from '../util/errors.js';\nexport async function jwtVerify(jwt, key, options) {\n    const verified = await compactVerify(jwt, key, options);\n    if (verified.protectedHeader.crit?.includes('b64') && verified.protectedHeader.b64 === false) {\n        throw new JWTInvalid('JWTs MUST NOT use unencoded payload');\n    }\n    const payload = jwtPayload(verified.protectedHeader, verified.payload, options);\n    const result = { payload, protectedHeader: verified.protectedHeader };\n    if (typeof key === 'function') {\n        return { ...result, key: verified.key };\n    }\n    return result;\n}\n","export function validateAuthUrl(authUrl: string): URL {\n    try {\n        return new URL(authUrl)\n    } catch (e) {\n        console.error(\"Invalid authUrl\", e)\n        throw new Error(\"Unable to initialize auth client\")\n    }\n}\n","import {\n    ForbiddenException,\n    getApis,\n    InternalUser,\n    OrgIdToOrgMemberInfo,\n    OrgMemberInfo,\n    toUser,\n    UnauthorizedException,\n    User,\n    UserAndOrgMemberInfo,\n    UserClass,\n} from \"@propelauth/node-apis\"\nimport * as jose from \"jose\"\nimport { KeyLike } from \"jose\"\nimport { validateAuthUrl } from \"./validators\"\n\nexport type AuthOptions = {\n    authUrl: string\n    apiKey: string\n    verifierKey: string\n}\n\nexport type AuthHeader = string | null | undefined\n\nexport function initAuth(opts: AuthOptions) {\n    const authUrl: URL = validateAuthUrl(opts.authUrl)\n    const integrationApiKey: string = opts.apiKey\n    const apis = getApis(authUrl, integrationApiKey)\n\n    const publicKeyPromise = jose.importSPKI(opts.verifierKey, \"RS256\")\n\n    const validateAccessTokenAndGetUserClass = wrapValidateAccessTokenAndGetUserClass(publicKeyPromise, authUrl.origin)\n    const validateAccessTokenAndGetUser = wrapValidateAccessTokenAndGetUser(publicKeyPromise, authUrl.origin)\n    const validateAccessTokenAndGetUserWithOrgInfo = wrapValidateAccessTokenAndGetUserWithOrgInfo(\n        publicKeyPromise,\n        authUrl.origin\n    )\n    const validateAccessTokenAndGetUserWithOrgInfoWithMinimumRole =\n        wrapValidateAccessTokenAndGetUserWithOrgInfoWithMinimumRole(publicKeyPromise, authUrl.origin)\n    const validateAccessTokenAndGetUserWithOrgInfoWithExactRole =\n        wrapValidateAccessTokenAndGetUserWithOrgInfoWithExactRole(publicKeyPromise, authUrl.origin)\n    const validateAccessTokenAndGetUserWithOrgInfoWithPermission =\n        wrapValidateAccessTokenAndGetUserWithOrgInfoWithPermission(publicKeyPromise, authUrl.origin)\n    const validateAccessTokenAndGetUserWithOrgInfoWithAllPermissions =\n        wrapValidateAccessTokenAndGetUserWithOrgInfoWithAllPermissions(publicKeyPromise, authUrl.origin)\n\n    // Note: We exclude fetchTokenVerificationMetadata from the returned object\n    // because we have explicit usage of it above. Thus, it is not used in the returned object.\n    const { fetchTokenVerificationMetadata, ...nodeApis } = apis\n\n    return {\n        // validate functions\n        validateAccessTokenAndGetUserClass,\n        validateAccessTokenAndGetUser,\n        validateAccessTokenAndGetUserWithOrgInfo,\n        validateAccessTokenAndGetUserWithOrgInfoWithMinimumRole,\n        validateAccessTokenAndGetUserWithOrgInfoWithExactRole,\n        validateAccessTokenAndGetUserWithOrgInfoWithPermission,\n        validateAccessTokenAndGetUserWithOrgInfoWithAllPermissions,\n        // older versions of the library used validateAuthHeaderAndGetUser\n        validateAuthHeaderAndGetUserClass: validateAccessTokenAndGetUserClass,\n        validateAuthHeaderAndGetUser: validateAccessTokenAndGetUser,\n        validateAuthHeaderAndGetUserWithOrgInfo: validateAccessTokenAndGetUserWithOrgInfo,\n        validateAuthHeaderAndGetUserWithOrgInfoWithMinimumRole: validateAccessTokenAndGetUserWithOrgInfoWithMinimumRole,\n        validateAuthHeaderAndGetUserWithOrgInfoWithExactRole: validateAccessTokenAndGetUserWithOrgInfoWithExactRole,\n        validateAuthHeaderAndGetUserWithOrgInfoWithPermission: validateAccessTokenAndGetUserWithOrgInfoWithPermission,\n        validateAuthHeaderAndGetUserWithOrgInfoWithAllPermissions:\n            validateAccessTokenAndGetUserWithOrgInfoWithAllPermissions,\n        ...nodeApis,\n    }\n}\n\n// wrapper function that returns a UserClass object\nfunction wrapValidateAccessTokenAndGetUserClass(publicKeyPromise: Promise<KeyLike>, authUrl: string) {\n    return async function validateAccessTokenAndGetUser(authorizationHeader: string | null): Promise<UserClass> {\n        const user = await extractAndVerifyBearerToken(publicKeyPromise, authUrl, authorizationHeader, true)\n        return new UserClass(user)\n    }\n}\n\n// wrapper function with no validation\nfunction wrapValidateAccessTokenAndGetUser(publicKeyPromise: Promise<KeyLike>, authUrl: string) {\n    return async function validateAccessTokenAndGetUser(authorizationHeader: string | null): Promise<User> {\n        return extractAndVerifyBearerToken(publicKeyPromise, authUrl, authorizationHeader)\n    }\n}\n\n// The following four functions are wrappers around our four validations: isRole, atLeastRole, hasPermission, hasAllPermissions\n// Each function returns an OrgMemberInfo object\n\nfunction wrapValidateAccessTokenAndGetUserWithOrgInfo(publicKeyPromise: Promise<KeyLike>, authUrl: string) {\n    return async function validateAccessTokenAndGetUserWithOrgInfo(\n        authorizationHeader: string | null,\n        requiredOrgInfo: RequiredOrgInfo\n    ): Promise<UserAndOrgMemberInfo> {\n        const user = await extractAndVerifyBearerToken(publicKeyPromise, authUrl, authorizationHeader)\n        const orgMemberInfo = validateOrgAccessAndGetOrgMemberInfo(user, requiredOrgInfo)\n        return { user, orgMemberInfo }\n    }\n}\n\nfunction wrapValidateAccessTokenAndGetUserWithOrgInfoWithMinimumRole(\n    publicKeyPromise: Promise<KeyLike>,\n    authUrl: string\n) {\n    return async function validateAccessTokenAndGetUserWithOrgInfo(\n        authorizationHeader: string | null,\n        requiredOrgInfo: RequiredOrgInfo,\n        minimumRole: string\n    ): Promise<UserAndOrgMemberInfo> {\n        const user = await extractAndVerifyBearerToken(publicKeyPromise, authUrl, authorizationHeader)\n        const orgMemberInfo = validateOrgAccessAndGetOrgMemberInfoWithMinimumRole(user, requiredOrgInfo, minimumRole)\n        return { user, orgMemberInfo }\n    }\n}\n\nfunction wrapValidateAccessTokenAndGetUserWithOrgInfoWithExactRole(\n    publicKeyPromise: Promise<KeyLike>,\n    authUrl: string\n) {\n    return async function validateAccessTokenAndGetUserWithOrgInfo(\n        authorizationHeader: string | null,\n        requiredOrgInfo: RequiredOrgInfo,\n        exactRole: string\n    ): Promise<UserAndOrgMemberInfo> {\n        const user = await extractAndVerifyBearerToken(publicKeyPromise, authUrl, authorizationHeader)\n        const orgMemberInfo = validateOrgAccessAndGetOrgMemberInfoWithExactRole(user, requiredOrgInfo, exactRole)\n        return { user, orgMemberInfo }\n    }\n}\n\nfunction wrapValidateAccessTokenAndGetUserWithOrgInfoWithPermission(\n    publicKeyPromise: Promise<KeyLike>,\n    authUrl: string\n) {\n    return async function validateAccessTokenAndGetUserWithOrgInfo(\n        authorizationHeader: string | null,\n        requiredOrgInfo: RequiredOrgInfo,\n        permission: string\n    ): Promise<UserAndOrgMemberInfo> {\n        const user = await extractAndVerifyBearerToken(publicKeyPromise, authUrl, authorizationHeader)\n        const orgMemberInfo = validateOrgAccessAndGetOrgMemberInfoWithPermission(user, requiredOrgInfo, permission)\n        return { user, orgMemberInfo }\n    }\n}\n\nfunction wrapValidateAccessTokenAndGetUserWithOrgInfoWithAllPermissions(\n    publicKeyPromise: Promise<KeyLike>,\n    authUrl: string\n) {\n    return async function validateAccessTokenAndGetUserWithOrgInfo(\n        authorizationHeader: string | null,\n        requiredOrgInfo: RequiredOrgInfo,\n        permissions: string[]\n    ): Promise<UserAndOrgMemberInfo> {\n        const user = await extractAndVerifyBearerToken(publicKeyPromise, authUrl, authorizationHeader)\n        const orgMemberInfo = validateOrgAccessAndGetOrgMemberInfoWithAllPermissions(user, requiredOrgInfo, permissions)\n        return { user, orgMemberInfo }\n    }\n}\n\nexport type RequiredOrgInfo = {\n    orgId?: string\n    orgName?: string\n}\n\n// Validator functions\n\nfunction validateOrgAccessAndGetOrgMemberInfo(user: User, requiredOrgInfo: RequiredOrgInfo): OrgMemberInfo {\n    const orgMemberInfo = getUserInfoInOrg(requiredOrgInfo, user.orgIdToOrgMemberInfo)\n    if (!orgMemberInfo) {\n        throw new ForbiddenException(`User is not a member of org ${JSON.stringify(requiredOrgInfo)}`)\n    }\n\n    return orgMemberInfo\n}\n\nfunction validateOrgAccessAndGetOrgMemberInfoWithMinimumRole(\n    user: User,\n    requiredOrgInfo: RequiredOrgInfo,\n    minimumRole: string\n): OrgMemberInfo {\n    const orgMemberInfo = getUserInfoInOrg(requiredOrgInfo, user.orgIdToOrgMemberInfo)\n    if (!orgMemberInfo) {\n        throw new ForbiddenException(`User is not a member of org ${JSON.stringify(requiredOrgInfo)}`)\n    }\n\n    if (!orgMemberInfo.isAtLeastRole(minimumRole)) {\n        throw new ForbiddenException(`User's roles don't contain the minimum role (${minimumRole})`)\n    }\n\n    return orgMemberInfo\n}\n\nfunction validateOrgAccessAndGetOrgMemberInfoWithExactRole(\n    user: User,\n    requiredOrgInfo: RequiredOrgInfo,\n    exactRole: string\n): OrgMemberInfo {\n    const orgMemberInfo = getUserInfoInOrg(requiredOrgInfo, user.orgIdToOrgMemberInfo)\n    if (!orgMemberInfo) {\n        throw new ForbiddenException(`User is not a member of org ${JSON.stringify(requiredOrgInfo)}`)\n    }\n\n    if (!orgMemberInfo.isRole(exactRole)) {\n        throw new ForbiddenException(`User's assigned role isn't the required role (${exactRole})`)\n    }\n\n    return orgMemberInfo\n}\n\nfunction validateOrgAccessAndGetOrgMemberInfoWithPermission(\n    user: User,\n    requiredOrgInfo: RequiredOrgInfo,\n    permission: string\n): OrgMemberInfo {\n    const orgMemberInfo = getUserInfoInOrg(requiredOrgInfo, user.orgIdToOrgMemberInfo)\n    if (!orgMemberInfo) {\n        throw new ForbiddenException(`User is not a member of org ${JSON.stringify(requiredOrgInfo)}`)\n    }\n\n    if (!orgMemberInfo.hasPermission(permission)) {\n        throw new ForbiddenException(`User's permissions don't contain the required permission (${permission})`)\n    }\n\n    return orgMemberInfo\n}\n\nfunction validateOrgAccessAndGetOrgMemberInfoWithAllPermissions(\n    user: User,\n    requiredOrgInfo: RequiredOrgInfo,\n    permissions: string[]\n): OrgMemberInfo {\n    const orgMemberInfo = getUserInfoInOrg(requiredOrgInfo, user.orgIdToOrgMemberInfo)\n    if (!orgMemberInfo) {\n        throw new ForbiddenException(`User is not a member of org ${JSON.stringify(requiredOrgInfo)}`)\n    }\n\n    if (!orgMemberInfo.hasAllPermissions(permissions)) {\n        throw new ForbiddenException(`User's permissions don't contain all the required permissions (${permissions})`)\n    }\n\n    return orgMemberInfo\n}\n\n// Miscellaneous functions\n\nfunction getUserInfoInOrg(\n    requiredOrgInfo: RequiredOrgInfo,\n    orgIdToOrgMemberInfo?: OrgIdToOrgMemberInfo\n): OrgMemberInfo | undefined {\n    if (!orgIdToOrgMemberInfo) {\n        return undefined\n    } else if (requiredOrgInfo.orgId) {\n        // If we are looking for an orgId, we can do a direct lookup\n        if (!orgIdToOrgMemberInfo.hasOwnProperty(requiredOrgInfo.orgId)) {\n            return undefined\n        }\n        const orgMemberInfo = orgIdToOrgMemberInfo[requiredOrgInfo.orgId]\n\n        // We also need to verify the orgName matches, if specified\n        if (requiredOrgInfo.orgName && orgNameMatches(requiredOrgInfo.orgName, orgMemberInfo)) {\n            return orgMemberInfo\n        } else if (requiredOrgInfo.orgName) {\n            return undefined\n        } else {\n            return orgMemberInfo\n        }\n    } else if (requiredOrgInfo.orgName) {\n        // We know there's no required orgId so just iterate over orgMemberInfos looking for a matching urlSafeOrgName\n        for (const orgMemberInfo of Object.values(orgIdToOrgMemberInfo)) {\n            if (orgNameMatches(requiredOrgInfo.orgName, orgMemberInfo)) {\n                return orgMemberInfo\n            }\n        }\n        return undefined\n    } else {\n        return undefined\n    }\n}\n\nfunction orgNameMatches(orgName: string, orgMemberInfo: OrgMemberInfo) {\n    return orgName === orgMemberInfo.orgName || orgName === orgMemberInfo.urlSafeOrgName\n}\n\nasync function extractAndVerifyBearerToken(\n    publicKeyPromise: Promise<KeyLike>,\n    authUrl: string,\n    authorizationHeader: string | null,\n    allowMissingBearerPrefix = false\n) {\n    const publicKey = await publicKeyPromise\n    const bearerToken = extractBearerToken(authorizationHeader, allowMissingBearerPrefix)\n    return verifyToken(bearerToken, authUrl, publicKey)\n}\n\nfunction extractBearerToken(authHeader: string | null, allowMissingBearerPrefix: boolean = false): string {\n    if (!authHeader) {\n        throw new UnauthorizedException(\"No authorization header found.\")\n    }\n\n    const authHeaderParts = authHeader.split(\" \")\n    if (authHeaderParts.length === 1 && allowMissingBearerPrefix) {\n        return authHeaderParts[0]\n    } else if (authHeaderParts.length !== 2 || authHeaderParts[0].toLowerCase() !== \"bearer\") {\n        throw new UnauthorizedException(\"Invalid authorization header. Expected: Bearer {accessToken}\")\n    }\n\n    return authHeaderParts[1]\n}\n\nasync function verifyToken(bearerToken: string, authUrl: string, publicKey: jose.KeyLike): Promise<User> {\n    try {\n        const { payload } = await jose.jwtVerify(bearerToken, publicKey, {\n            algorithms: [\"RS256\"],\n            issuer: authUrl,\n        })\n        return toUser(<InternalUser>payload)\n    } catch (e: unknown) {\n        if (e instanceof Error) {\n            throw new UnauthorizedException(e.message)\n        } else {\n            throw new UnauthorizedException(\"Unable to decode jwt\")\n        }\n    }\n}\n\nexport type HandleErrorOptions = {\n    logError?: boolean\n    returnDetailedErrorToUser?: boolean\n}\n\nexport type HandleErrorResponse = {\n    status: number\n    message: string\n}\n\nexport function handleError(e: unknown, opts?: HandleErrorOptions): HandleErrorResponse {\n    if (opts && opts.logError) {\n        console.error(e)\n    }\n\n    const detailedError = opts && opts.returnDetailedErrorToUser\n    if (e instanceof UnauthorizedException) {\n        return {\n            status: 401,\n            message: detailedError ? e.message : \"Unauthorized\",\n        }\n    } else if (e instanceof ForbiddenException) {\n        return {\n            status: 403,\n            message: detailedError ? e.message : \"Forbidden\",\n        }\n    } else {\n        return {\n            status: 401,\n            message: \"Unauthorized\",\n        }\n    }\n}\n"],"names":["getNamedCurve","crypto","importJWK","decodeBase64URL","jwk.isJWK","jwk.isSecretJWK","invalidKeyInput","jwk.isPrivateJWK","jwk.isPublicJWK","getVerifyKey","subtleAlgorithm","base64url","isDisjoint","validateAlgorithms","verify","jose.importSPKI","jose.jwtVerify"],"mappings":"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"}