UNPKG

@langchain/community

Version:
1 lines 2.94 kB
{"version":3,"file":"browserbase.cjs","names":["BaseDocumentLoader","Browserbase","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,sCAAAA,mBAEV;CACE;CAEA;CAEA;CAEA,YAAY,MAAgB,UAAoC,EAAE,EAAE;AAClE,SAAO;AACP,OAAK,OAAO;AACZ,OAAK,UAAU;AACf,OAAK,cAAc,IAAIC,mBAAAA,YAAY,QAAQ;;;;;;;CAQ7C,MAAM,OAAqC;EACzC,MAAM,YAAiC,EAAE;AACzC,aAAW,MAAM,OAAO,KAAK,UAAU,CACrC,WAAU,KAAK,IAAI;AAGrB,SAAO;;;;;;;CAQT,OAAO,WAAW;EAChB,MAAM,QAAQ,MAAM,KAAK,YAAY,SAAS,KAAK,MAAM,KAAK,QAAQ;EAEtE,IAAI,QAAQ;AACZ,aAAW,MAAM,QAAQ,OAAO;AAC9B,SAAM,IAAIC,0BAAAA,SAAS;IACjB,aAAa;IACb,UAAU,EACR,KAAK,KAAK,KAAK,QAChB;IACF,CAAC;AAEF,YAAS,QAAQ"}