{"version":3,"file":"assertTldSupported.mjs","sources":["../../../src/utils/assertTldSupported.ts"],"sourcesContent":["import { GetSlotApi, Rpc } from \"@solana/kit\";\r\n\r\nimport { SOL_TLD_CUTOFF_SLOT } from \"../config\";\r\nimport { UnsupportedTldError } from \"../errors\";\r\nimport { SOL_TLD, SupportedTld, parseSupportedTld } from \"./tld\";\r\n\r\nconst unsupportedRpcClients = new WeakSet<object>();\r\n\r\ninterface AssertTldSupportedParams {\r\n  rpc: Rpc<GetSlotApi>;\r\n  domain: string;\r\n}\r\n\r\n/** Asserts that a domain's TLD is currently supported by the supplied RPC. */\r\nexport const assertTldSupported = async ({\r\n  rpc,\r\n  domain,\r\n}: AssertTldSupportedParams): Promise<[string, SupportedTld]> => {\r\n  const [trimmedDomain, tld] = parseSupportedTld(domain);\r\n\r\n  if (tld !== SOL_TLD) {\r\n    return [trimmedDomain, tld as SupportedTld];\r\n  }\r\n\r\n  if (unsupportedRpcClients.has(rpc)) {\r\n    throw new UnsupportedTldError(\r\n      \"Legacy .sol domains are no longer supported\"\r\n    );\r\n  }\r\n\r\n  const slot = await rpc.getSlot({ commitment: \"finalized\" }).send();\r\n  if (slot >= SOL_TLD_CUTOFF_SLOT) {\r\n    unsupportedRpcClients.add(rpc);\r\n    throw new UnsupportedTldError(\r\n      \"Legacy .sol domains are no longer supported\"\r\n    );\r\n  }\r\n\r\n  return [trimmedDomain, SOL_TLD];\r\n};\r\n"],"names":[],"mappings":";;;;AAMA,MAAM,qBAAqB,GAAG,IAAI,OAAO,EAAU;AAOnD;AACO,MAAM,kBAAkB,GAAG,OAAO,EACvC,GAAG,EACH,MAAM,GACmB,KAAqC;IAC9D,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAC;AAEtD,IAAA,IAAI,GAAG,KAAK,OAAO,EAAE;AACnB,QAAA,OAAO,CAAC,aAAa,EAAE,GAAmB,CAAC;;AAG7C,IAAA,IAAI,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAClC,QAAA,MAAM,IAAI,mBAAmB,CAC3B,6CAA6C,CAC9C;;AAGH,IAAA,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE;AAClE,IAAA,IAAI,IAAI,IAAI,mBAAmB,EAAE;AAC/B,QAAA,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC;AAC9B,QAAA,MAAM,IAAI,mBAAmB,CAC3B,6CAA6C,CAC9C;;AAGH,IAAA,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC;AACjC;;;;"}