@langchain/community
Version:
Third-party integrations for LangChain.js
1 lines • 3.03 kB
Source Map (JSON)
{"version":3,"file":"browserbase.cjs","names":["BaseDocumentLoader","urls: string[]","options: BrowserbaseLoaderOptions","Browserbase","documents: DocumentInterface[]","Document"],"sources":["../../../src/document_loaders/web/browserbase.ts"],"sourcesContent":["import { Document, type DocumentInterface } from \"@langchain/core/documents\";\nimport {\n BaseDocumentLoader,\n type DocumentLoader,\n} from \"@langchain/core/document_loaders/base\";\nimport {\n Browserbase,\n type LoadOptions,\n type ClientOptions,\n} from \"@browserbasehq/sdk\";\n\ntype BrowserbaseLoaderOptions = ClientOptions & LoadOptions;\n\n/**\n * Load pre-rendered web pages using a headless browser hosted on Browserbase.\n *\n * Depends on `@browserbasehq/sdk` package.\n * Get your API key from https://browserbase.com\n *\n * @example\n * ```typescript\n * import { BrowserbaseLoader } from \"@langchain/classic/document_loaders/web/browserbase\";\n *\n * const loader = new BrowserbaseLoader([\"https://example.com\"], {\n * apiKey: process.env.BROWSERBASE_API_KEY,\n * textContent: true,\n * });\n *\n * const docs = await loader.load();\n * ```\n *\n * @param {string[]} urls - The URLs of the web pages to load.\n * @param {BrowserbaseLoaderOptions} [options] - Browserbase client options.\n */\nexport class BrowserbaseLoader\n extends BaseDocumentLoader\n implements DocumentLoader\n{\n urls: string[];\n\n options: BrowserbaseLoaderOptions;\n\n browserbase: Browserbase;\n\n constructor(urls: string[], options: BrowserbaseLoaderOptions = {}) {\n super();\n this.urls = urls;\n this.options = options;\n this.browserbase = new Browserbase(options);\n }\n\n /**\n * Load pages from URLs.\n *\n * @returns {Promise<DocumentInterface[]>} - A promise which resolves to a list of documents.\n */\n async load(): Promise<DocumentInterface[]> {\n const documents: DocumentInterface[] = [];\n for await (const doc of this.lazyLoad()) {\n documents.push(doc);\n }\n\n return documents;\n }\n\n /**\n * Load pages from URLs.\n *\n * @returns {Generator<DocumentInterface>} - A generator that yields documents.\n */\n async *lazyLoad() {\n const pages = await this.browserbase.loadURLs(this.urls, this.options);\n\n let index = 0;\n for await (const page of pages) {\n yield new Document({\n pageContent: page,\n metadata: {\n url: this.urls[index],\n },\n });\n\n index += index + 1;\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,IAAa,oBAAb,cACUA,0DAEV;CACE;CAEA;CAEA;CAEA,YAAYC,MAAgBC,UAAoC,CAAE,GAAE;EAClE,OAAO;EACP,KAAK,OAAO;EACZ,KAAK,UAAU;EACf,KAAK,cAAc,IAAIC,gCAAY;CACpC;;;;;;CAOD,MAAM,OAAqC;EACzC,MAAMC,YAAiC,CAAE;AACzC,aAAW,MAAM,OAAO,KAAK,UAAU,EACrC,UAAU,KAAK,IAAI;AAGrB,SAAO;CACR;;;;;;CAOD,OAAO,WAAW;EAChB,MAAM,QAAQ,MAAM,KAAK,YAAY,SAAS,KAAK,MAAM,KAAK,QAAQ;EAEtE,IAAI,QAAQ;AACZ,aAAW,MAAM,QAAQ,OAAO;GAC9B,MAAM,IAAIC,oCAAS;IACjB,aAAa;IACb,UAAU,EACR,KAAK,KAAK,KAAK,OAChB;GACF;GAED,SAAS,QAAQ;EAClB;CACF;AACF"}