UNPKG

@langchain/community

Version:
1 lines • 5.07 kB
{"version":3,"file":"taskade.cjs","names":["BaseDocumentLoader","after: string | null","queryParamsString: string","Document"],"sources":["../../../src/document_loaders/web/taskade.ts"],"sourcesContent":["import { getEnvironmentVariable } from \"@langchain/core/utils/env\";\nimport { Document } from \"@langchain/core/documents\";\nimport { BaseDocumentLoader } from \"@langchain/core/document_loaders/base\";\n\n/**\n * Interface representing the parameters for configuring the TaskadeLoader.\n * It includes optional properties for the personal access token and project id.\n */\nexport interface TaskadeLoaderParams {\n personalAccessToken?: string;\n projectId: string;\n}\n\n/**\n * Interface representing a Taskade project. It includes properties for the\n * id, text, parentId and completed.\n */\nexport interface TaskadeProject {\n tasks: Array<{\n id: string;\n text: string;\n parentId: string;\n completed: boolean;\n }>;\n}\n\n/**\n * Class representing a document loader for loading Taskade project. It\n * extends the BaseDocumentLoader and implements the TaskadeLoaderParams\n * interface. The constructor takes a config object as a parameter, which\n * contains the personal access token and project ID.\n * @example\n * ```typescript\n * const loader = new TaskadeProjectLoader({\n * personalAccessToken: \"TASKADE_PERSONAL_ACCESS_TOKEN\",\n * projectId: \"projectId\",\n * });\n * const docs = await loader.load();\n * ```\n */\nexport class TaskadeProjectLoader\n extends BaseDocumentLoader\n implements TaskadeLoaderParams\n{\n public readonly personalAccessToken?: string;\n\n public readonly projectId: string;\n\n private headers: Record<string, string> = {};\n\n constructor({\n personalAccessToken = getEnvironmentVariable(\n \"TASKADE_PERSONAL_ACCESS_TOKEN\"\n ),\n projectId,\n }: TaskadeLoaderParams) {\n super();\n this.personalAccessToken = personalAccessToken;\n this.projectId = projectId;\n\n if (this.personalAccessToken) {\n this.headers = {\n Authorization: `Bearer ${this.personalAccessToken}`,\n };\n }\n }\n\n /**\n * Fetches the Taskade project using the Taskade API and returns it as a\n * TaskadeProject object.\n * @returns A Promise that resolves to a TaskadeProject object.\n */\n private async getTaskadeProject(): Promise<TaskadeProject> {\n const tasks = [];\n let after: string | null = null;\n let hasMoreTasks = true;\n while (hasMoreTasks) {\n const queryParamsString: string = new URLSearchParams({\n limit: \"100\",\n ...(after == null ? {} : { after }),\n }).toString();\n const url = `https://www.taskade.com/api/v1/projects/${this.projectId}/tasks?${queryParamsString}`;\n\n const response = await fetch(url, { headers: this.headers });\n const data = await response.json();\n\n if (!response.ok) {\n throw new Error(\n `Unable to get Taskade project: ${response.status} ${JSON.stringify(\n data\n )}`\n );\n }\n\n if (!data) {\n throw new Error(\"Unable to get Taskade project\");\n }\n\n if (data.items.length === 0) {\n hasMoreTasks = false;\n } else {\n after = data.items[data.items.length - 1].id;\n }\n\n tasks.push(...data.items);\n }\n\n return { tasks };\n }\n\n /**\n * Fetches the Taskade project using the Taskade API, creates a Document instance\n * with the JSON representation of the file as the page content and the\n * API URL as the metadata, and returns it.\n * @returns A Promise that resolves to an array of Document instances.\n */\n public async load(): Promise<Document[]> {\n const data = await this.getTaskadeProject();\n\n const metadata = { projectId: this.projectId };\n const text = data.tasks.map((t) => t.text).join(\"\\n\");\n\n return [new Document({ pageContent: text, metadata })];\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAwCA,IAAa,uBAAb,cACUA,0DAEV;CACE,AAAgB;CAEhB,AAAgB;CAEhB,AAAQ,UAAkC,CAAE;CAE5C,YAAY,EACV,6EACE,gCACD,EACD,WACoB,EAAE;EACtB,OAAO;EACP,KAAK,sBAAsB;EAC3B,KAAK,YAAY;AAEjB,MAAI,KAAK,qBACP,KAAK,UAAU,EACb,eAAe,CAAC,OAAO,EAAE,KAAK,qBAAqB,CACpD;CAEJ;;;;;;CAOD,MAAc,oBAA6C;EACzD,MAAM,QAAQ,CAAE;EAChB,IAAIC,QAAuB;EAC3B,IAAI,eAAe;AACnB,SAAO,cAAc;GACnB,MAAMC,oBAA4B,IAAI,gBAAgB;IACpD,OAAO;IACP,GAAI,SAAS,OAAO,CAAE,IAAG,EAAE,MAAO;GACnC,GAAE,UAAU;GACb,MAAM,MAAM,CAAC,wCAAwC,EAAE,KAAK,UAAU,OAAO,EAAE,mBAAmB;GAElG,MAAM,WAAW,MAAM,MAAM,KAAK,EAAE,SAAS,KAAK,QAAS,EAAC;GAC5D,MAAM,OAAO,MAAM,SAAS,MAAM;AAElC,OAAI,CAAC,SAAS,GACZ,OAAM,IAAI,MACR,CAAC,+BAA+B,EAAE,SAAS,OAAO,CAAC,EAAE,KAAK,UACxD,KACD,EAAE;AAIP,OAAI,CAAC,KACH,OAAM,IAAI,MAAM;AAGlB,OAAI,KAAK,MAAM,WAAW,GACxB,eAAe;QAEf,QAAQ,KAAK,MAAM,KAAK,MAAM,SAAS,GAAG;GAG5C,MAAM,KAAK,GAAG,KAAK,MAAM;EAC1B;AAED,SAAO,EAAE,MAAO;CACjB;;;;;;;CAQD,MAAa,OAA4B;EACvC,MAAM,OAAO,MAAM,KAAK,mBAAmB;EAE3C,MAAM,WAAW,EAAE,WAAW,KAAK,UAAW;EAC9C,MAAM,OAAO,KAAK,MAAM,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,KAAK;AAErD,SAAO,CAAC,IAAIC,oCAAS;GAAE,aAAa;GAAM;EAAU,EAAE;CACvD;AACF"}