UNPKG

@langchain/community

Version:
1 lines 4.94 kB
{"version":3,"file":"taskade.cjs","names":["BaseDocumentLoader","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,sCAAAA,mBAEV;CACE;CAEA;CAEA,UAA0C,EAAE;CAE5C,YAAY,EACV,uBAAA,GAAA,0BAAA,wBACE,gCACD,EACD,aACsB;AACtB,SAAO;AACP,OAAK,sBAAsB;AAC3B,OAAK,YAAY;AAEjB,MAAI,KAAK,oBACP,MAAK,UAAU,EACb,eAAe,UAAU,KAAK,uBAC/B;;;;;;;CASL,MAAc,oBAA6C;EACzD,MAAM,QAAQ,EAAE;EAChB,IAAI,QAAuB;EAC3B,IAAI,eAAe;AACnB,SAAO,cAAc;GACnB,MAAM,oBAA4B,IAAI,gBAAgB;IACpD,OAAO;IACP,GAAI,SAAS,OAAO,EAAE,GAAG,EAAE,OAAO;IACnC,CAAC,CAAC,UAAU;GACb,MAAM,MAAM,2CAA2C,KAAK,UAAU,SAAS;GAE/E,MAAM,WAAW,MAAM,MAAM,KAAK,EAAE,SAAS,KAAK,SAAS,CAAC;GAC5D,MAAM,OAAO,MAAM,SAAS,MAAM;AAElC,OAAI,CAAC,SAAS,GACZ,OAAM,IAAI,MACR,kCAAkC,SAAS,OAAO,GAAG,KAAK,UACxD,KACD,GACF;AAGH,OAAI,CAAC,KACH,OAAM,IAAI,MAAM,gCAAgC;AAGlD,OAAI,KAAK,MAAM,WAAW,EACxB,gBAAe;OAEf,SAAQ,KAAK,MAAM,KAAK,MAAM,SAAS,GAAG;AAG5C,SAAM,KAAK,GAAG,KAAK,MAAM;;AAG3B,SAAO,EAAE,OAAO;;;;;;;;CASlB,MAAa,OAA4B;EACvC,MAAM,OAAO,MAAM,KAAK,mBAAmB;EAE3C,MAAM,WAAW,EAAE,WAAW,KAAK,WAAW;AAG9C,SAAO,CAAC,IAAIC,0BAAAA,SAAS;GAAE,aAFV,KAAK,MAAM,KAAK,MAAM,EAAE,KAAK,CAAC,KAAK,KAAK;GAEX;GAAU,CAAC,CAAC"}