{"version":3,"file":"validation.cjs","sourceRoot":"","sources":["../../../src/backup-and-sync/user-storage/validation.ts"],"names":[],"mappings":";;;AAAA,uDAA4D;AAO5D,wCAIkB;AAElB;;;;;GAKG;AACH,MAAM,6BAA6B,GAAG,CAAC,KAAkB,EAAE,EAAE;IAC3D,MAAM,kBAAkB,GAAG,KAAK;SAC7B,QAAQ,EAAE;SACV,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC;SAC5D,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO,8BAA8B,kBAAkB,EAAE,CAAC;AAC5D,CAAC,CAAC;AAEF;;;;;GAKG;AACH,SAAgB,4BAA4B,CAC1C,UAAmB;IAEnB,IAAI,CAAC;QACH,IAAA,oBAAM,EAAC,UAAU,EAAE,qCAA6B,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,yBAAW,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CACb,qCAAqC,6BAA6B,CAAC,KAAK,CAAC,EAAE,CAC5E,CAAC;QACJ,CAAC;QACD,0BAA0B;QAC1B,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAdD,oEAcC;AAED;;;;;GAKG;AACH,SAAgB,2BAA2B,CACzC,SAAkB;IAElB,IAAI,CAAC;QACH,IAAA,oBAAM,EAAC,SAAS,EAAE,0CAAkC,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,yBAAW,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CACb,oCAAoC,6BAA6B,CAAC,KAAK,CAAC,EAAE,CAC3E,CAAC;QACJ,CAAC;QACD,0BAA0B;QAC1B,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAdD,kEAcC;AAED;;;;;GAKG;AACH,SAAgB,mCAAmC,CACjD,WAAoB;IAEpB,IAAI,CAAC;QACH,IAAA,oBAAM,EAAC,WAAW,EAAE,4CAAoC,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,yBAAW,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CACb,6CAA6C,6BAA6B,CAAC,KAAK,CAAC,EAAE,CACpF,CAAC;QACJ,CAAC;QACD,0BAA0B;QAC1B,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAdD,kFAcC","sourcesContent":["import { assert, StructError } from '@metamask/superstruct';\n\nimport type {\n  LegacyUserStorageSyncedAccount,\n  UserStorageSyncedWallet,\n  UserStorageSyncedWalletGroup,\n} from '../types';\nimport {\n  UserStorageSyncedWalletSchema,\n  UserStorageSyncedWalletGroupSchema,\n  LegacyUserStorageSyncedAccountSchema,\n} from '../types';\n\n/**\n * Formats validation error messages for user storage data.\n *\n * @param error - The StructError thrown during validation.\n * @returns A formatted string of validation error messages.\n */\nconst formatValidationErrorMessages = (error: StructError) => {\n  const validationFailures = error\n    .failures()\n    .map(({ path, message }) => `[${path.join('.')}] ${message}`)\n    .join(', ');\n  return `Invalid user storage data: ${validationFailures}`;\n};\n\n/**\n * Validates and asserts user storage wallet data, throwing detailed errors if invalid.\n *\n * @param walletData - The wallet data from user storage to validate.\n * @throws StructError if the wallet data is invalid.\n */\nexport function assertValidUserStorageWallet(\n  walletData: unknown,\n): asserts walletData is UserStorageSyncedWallet {\n  try {\n    assert(walletData, UserStorageSyncedWalletSchema);\n  } catch (error) {\n    if (error instanceof StructError) {\n      throw new Error(\n        `Invalid user storage wallet data: ${formatValidationErrorMessages(error)}`,\n      );\n    }\n    /* istanbul ignore next */\n    throw error;\n  }\n}\n\n/**\n * Validates and asserts user storage group data, throwing detailed errors if invalid.\n *\n * @param groupData - The group data from user storage to validate.\n * @throws StructError if the group data is invalid.\n */\nexport function assertValidUserStorageGroup(\n  groupData: unknown,\n): asserts groupData is UserStorageSyncedWalletGroup {\n  try {\n    assert(groupData, UserStorageSyncedWalletGroupSchema);\n  } catch (error) {\n    if (error instanceof StructError) {\n      throw new Error(\n        `Invalid user storage group data: ${formatValidationErrorMessages(error)}`,\n      );\n    }\n    /* istanbul ignore next */\n    throw error;\n  }\n}\n\n/**\n * Validates and asserts legacy user storage account data, throwing detailed errors if invalid.\n *\n * @param accountData - The account data from user storage to validate.\n * @throws StructError if the account data is invalid.\n */\nexport function assertValidLegacyUserStorageAccount(\n  accountData: unknown,\n): asserts accountData is LegacyUserStorageSyncedAccount {\n  try {\n    assert(accountData, LegacyUserStorageSyncedAccountSchema);\n  } catch (error) {\n    if (error instanceof StructError) {\n      throw new Error(\n        `Invalid legacy user storage account data: ${formatValidationErrorMessages(error)}`,\n      );\n    }\n    /* istanbul ignore next */\n    throw error;\n  }\n}\n"]}