{"version":3,"file":"hub.cjs","names":["extname","pRetry"],"sources":["../../src/util/hub.ts"],"sourcesContent":["import pRetry from \"./p-retry/index.js\";\nimport { getEnvironmentVariable } from \"@langchain/core/utils/env\";\nimport { FileLoader, LoadValues } from \"./load.js\";\nimport { extname } from \"./extname.js\";\n\nconst fetchWithTimeout = async (\n  url: string,\n  init: Omit<RequestInit, \"signal\"> & { timeout: number }\n) => {\n  const { timeout, ...rest } = init;\n  const res = await fetch(url, {\n    ...rest,\n    signal: AbortSignal.timeout(timeout),\n  });\n  return res;\n};\n\nconst HUB_PATH_REGEX = /lc(@[^:]+)?:\\/\\/(.*)/;\n\nconst URL_PATH_SEPARATOR = \"/\";\n\nexport const loadFromHub = async <T>(\n  uri: string,\n  loader: FileLoader<T>,\n  validPrefix: string,\n  validSuffixes: Set<string>,\n  values: LoadValues = {}\n): Promise<T | undefined> => {\n  const LANGCHAIN_HUB_DEFAULT_REF =\n    getEnvironmentVariable(\"LANGCHAIN_HUB_DEFAULT_REF\") ?? \"master\";\n  const LANGCHAIN_HUB_URL_BASE =\n    getEnvironmentVariable(\"LANGCHAIN_HUB_URL_BASE\") ??\n    \"https://raw.githubusercontent.com/hwchase17/langchain-hub/\";\n\n  const match = uri.match(HUB_PATH_REGEX);\n  if (!match) {\n    return undefined;\n  }\n  const [rawRef, remotePath] = match.slice(1);\n  const ref = rawRef ? rawRef.slice(1) : LANGCHAIN_HUB_DEFAULT_REF;\n  const parts = remotePath.split(URL_PATH_SEPARATOR);\n  if (parts[0] !== validPrefix) {\n    return undefined;\n  }\n\n  if (!validSuffixes.has(extname(remotePath).slice(1))) {\n    throw new Error(\"Unsupported file type.\");\n  }\n\n  const url = [LANGCHAIN_HUB_URL_BASE, ref, remotePath].join(\"/\");\n  const res = await pRetry(() => fetchWithTimeout(url, { timeout: 5000 }), {\n    retries: 6,\n  });\n  if (res.status !== 200) {\n    throw new Error(`Could not find file at ${url}`);\n  }\n\n  return loader(await res.text(), remotePath, values);\n};\n"],"mappings":";;;;;AAKA,MAAM,mBAAmB,OACvB,KACA,SACG;CACH,MAAM,EAAE,SAAS,GAAG,SAAS;AAK7B,QAJY,MAAM,MAAM,KAAK;EAC3B,GAAG;EACH,QAAQ,YAAY,QAAQ,QAAQ;EACrC,CAAC;;AAIJ,MAAM,iBAAiB;AAEvB,MAAM,qBAAqB;AAE3B,MAAa,cAAc,OACzB,KACA,QACA,aACA,eACA,SAAqB,EAAE,KACI;CAC3B,MAAM,6BAAA,GAAA,0BAAA,wBACmB,4BAA4B,IAAI;CACzD,MAAM,0BAAA,GAAA,0BAAA,wBACmB,yBAAyB,IAChD;CAEF,MAAM,QAAQ,IAAI,MAAM,eAAe;AACvC,KAAI,CAAC,MACH;CAEF,MAAM,CAAC,QAAQ,cAAc,MAAM,MAAM,EAAE;CAC3C,MAAM,MAAM,SAAS,OAAO,MAAM,EAAE,GAAG;AAEvC,KADc,WAAW,MAAM,mBAAmB,CACxC,OAAO,YACf;AAGF,KAAI,CAAC,cAAc,IAAIA,gBAAAA,QAAQ,WAAW,CAAC,MAAM,EAAE,CAAC,CAClD,OAAM,IAAI,MAAM,yBAAyB;CAG3C,MAAM,MAAM;EAAC;EAAwB;EAAK;EAAW,CAAC,KAAK,IAAI;CAC/D,MAAM,MAAM,MAAMC,cAAAA,cAAa,iBAAiB,KAAK,EAAE,SAAS,KAAM,CAAC,EAAE,EACvE,SAAS,GACV,CAAC;AACF,KAAI,IAAI,WAAW,IACjB,OAAM,IAAI,MAAM,0BAA0B,MAAM;AAGlD,QAAO,OAAO,MAAM,IAAI,MAAM,EAAE,YAAY,OAAO"}