@langchain/core
Version:
Core LangChain.js abstractions and schemas
52 lines (51 loc) • 1.96 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.MappingDocumentTransformer = exports.BaseDocumentTransformer = void 0;
const base_js_1 = require("../runnables/base.cjs");
/**
* Abstract base class for document transformation systems.
*
* A document transformation system takes an array of Documents and returns an
* array of transformed Documents. These arrays do not necessarily have to have
* the same length.
*
* One example of this is a text splitter that splits a large document into
* many smaller documents.
*/
class BaseDocumentTransformer extends base_js_1.Runnable {
constructor() {
super(...arguments);
Object.defineProperty(this, "lc_namespace", {
enumerable: true,
configurable: true,
writable: true,
value: ["langchain_core", "documents", "transformers"]
});
}
/**
* Method to invoke the document transformation. This method calls the
* transformDocuments method with the provided input.
* @param input The input documents to be transformed.
* @param _options Optional configuration object to customize the behavior of callbacks.
* @returns A Promise that resolves to the transformed documents.
*/
invoke(input, _options) {
return this.transformDocuments(input);
}
}
exports.BaseDocumentTransformer = BaseDocumentTransformer;
/**
* Class for document transformers that return exactly one transformed document
* for each input document.
*/
class MappingDocumentTransformer extends BaseDocumentTransformer {
async transformDocuments(documents) {
const newDocuments = [];
for (const document of documents) {
const transformedDocument = await this._transformDocument(document);
newDocuments.push(transformedDocument);
}
return newDocuments;
}
}
exports.MappingDocumentTransformer = MappingDocumentTransformer;
;