{"version":3,"file":"uri.cjs","sourceRoot":"","sources":["../../src/internals/uri.ts"],"names":[],"mappings":";;;AAAA,uDAM+B;AAG/B,yCAA2C;AAWpC,MAAM,GAAG,GAAG,CAAC,OAAwB,EAAE,EAAE,EAAE,CAChD,IAAA,oBAAM,EAAC,IAAA,oBAAM,GAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;IAChC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,SAAS,GAAG,IAAA,kBAAI,EAAC,IAAI,CAAC,CAAC;QAC7B,IAAA,oBAAiB,EAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,yBAAW,EAAE,CAAC;YACjC,OAAO,IAAA,wBAAe,EAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,sBAAsB,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC;IACnD,CAAC;AACH,CAAC,CAAC,CAAC;AAdQ,QAAA,GAAG,OAcX","sourcesContent":["import {\n  refine,\n  string,\n  type,\n  assert as assertSuperstruct,\n  StructError,\n} from '@metamask/superstruct';\nimport type { Struct } from '@metamask/superstruct';\n\nimport { getErrorMessage } from './errors';\n\nexport type UriOptions<Type extends string> = {\n  protocol?: Struct<Type>;\n  hash?: Struct<Type>;\n  port?: Struct<Type>;\n  hostname?: Struct<Type>;\n  pathname?: Struct<Type>;\n  search?: Struct<Type>;\n};\n\nexport const uri = (opts: UriOptions<any> = {}) =>\n  refine(string(), 'uri', (value) => {\n    try {\n      const url = new URL(value);\n\n      const UrlStruct = type(opts);\n      assertSuperstruct(url, UrlStruct);\n      return true;\n    } catch (error) {\n      if (error instanceof StructError) {\n        return getErrorMessage(error);\n      }\n      return `Expected URL, got \"${value.toString()}\"`;\n    }\n  });\n"]}