@nestjs-ai/document-reader-cheerio
Advanced tools
+11
-0
| # @nestjs-ai/document-reader-cheerio | ||
| ## 0.1.0 | ||
| ### Minor Changes | ||
| - ed9c6e0: Migrate CJS to ESM | ||
| ### Patch Changes | ||
| - Updated dependencies [ed9c6e0] | ||
| - @nestjs-ai/commons@0.1.0 | ||
| ## 0.0.2 | ||
@@ -4,0 +15,0 @@ |
| import { Document, type DocumentReader } from "@nestjs-ai/commons"; | ||
| import { CheerioDocumentReaderConfig } from "./config"; | ||
| import { CheerioDocumentReaderConfig } from "./config/index.js"; | ||
| export interface CheerioDocumentReaderProps { | ||
@@ -4,0 +4,0 @@ htmlResource: string | URL | Buffer; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"cheerio-document-reader.d.ts","sourceRoot":"","sources":["../src/cheerio-document-reader.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAEvD,MAAM,WAAW,0BAA0B;IACzC,YAAY,EAAE,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;IACpC,MAAM,CAAC,EAAE,2BAA2B,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CACxB;AAED,qBAAa,qBAAsB,YAAW,cAAc;IAC1D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwB;IACtD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;gBAE7B,EACV,YAAY,EACZ,MAAoD,EACpD,OAAO,GACR,EAAE,0BAA0B;IAS7B,MAAM,CAAC,YAAY,CACjB,YAAY,EAAE,MAAM,GAAG,GAAG,GAAG,MAAM,EACnC,OAAO,CAAC,EAAE,MAAM,GAAG,GAAG,GACrB,qBAAqB;IAIlB,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAgD1B,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAIjC,OAAO,CAAC,YAAY;IA8BpB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,eAAe;YAYT,aAAa;IAwC3B,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,eAAe;CAGxB"} | ||
| {"version":3,"file":"cheerio-document-reader.d.ts","sourceRoot":"","sources":["../src/cheerio-document-reader.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAEhE,MAAM,WAAW,0BAA0B;IACzC,YAAY,EAAE,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;IACpC,MAAM,CAAC,EAAE,2BAA2B,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CACxB;AAED,qBAAa,qBAAsB,YAAW,cAAc;IAC1D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwB;IACtD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;gBAE7B,EACV,YAAY,EACZ,MAAoD,EACpD,OAAO,GACR,EAAE,0BAA0B;IAS7B,MAAM,CAAC,YAAY,CACjB,YAAY,EAAE,MAAM,GAAG,GAAG,GAAG,MAAM,EACnC,OAAO,CAAC,EAAE,MAAM,GAAG,GAAG,GACrB,qBAAqB;IAIlB,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAgD1B,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAIjC,OAAO,CAAC,YAAY;IA8BpB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,eAAe;YAYT,aAAa;IAwC3B,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,eAAe;CAGxB"} |
@@ -1,2 +0,1 @@ | ||
| "use strict"; | ||
| /* | ||
@@ -17,20 +16,15 @@ * Copyright 2023-present the original author or authors. | ||
| */ | ||
| var __importDefault = (this && this.__importDefault) || function (mod) { | ||
| return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
| }; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.CheerioDocumentReader = void 0; | ||
| const strict_1 = __importDefault(require("node:assert/strict")); | ||
| const promises_1 = require("node:fs/promises"); | ||
| const node_path_1 = require("node:path"); | ||
| const commons_1 = require("@nestjs-ai/commons"); | ||
| const cheerio_1 = require("cheerio"); | ||
| const config_1 = require("./config"); | ||
| class CheerioDocumentReader { | ||
| import assert from "node:assert/strict"; | ||
| import { readFile } from "node:fs/promises"; | ||
| import { resolve } from "node:path"; | ||
| import { Document } from "@nestjs-ai/commons"; | ||
| import { load } from "cheerio"; | ||
| import { CheerioDocumentReaderConfig } from "./config/index.js"; | ||
| export class CheerioDocumentReader { | ||
| _htmlResource; | ||
| _config; | ||
| _baseUrl; | ||
| constructor({ htmlResource, config = config_1.CheerioDocumentReaderConfig.defaultConfig(), baseUrl, }) { | ||
| (0, strict_1.default)(htmlResource != null, "htmlResource must not be null"); | ||
| (0, strict_1.default)(config != null, "config must not be null"); | ||
| constructor({ htmlResource, config = CheerioDocumentReaderConfig.defaultConfig(), baseUrl, }) { | ||
| assert(htmlResource != null, "htmlResource must not be null"); | ||
| assert(config != null, "config must not be null"); | ||
| this._htmlResource = htmlResource; | ||
@@ -46,3 +40,3 @@ this._config = config; | ||
| const html = await this._readResource(); | ||
| const $ = (0, cheerio_1.load)(html); | ||
| const $ = load(html); | ||
| const effectiveBaseUrl = this._resolveBaseUrl($); | ||
@@ -54,3 +48,3 @@ const documents = []; | ||
| const allText = this._normalizedText($("body").text()); | ||
| const document = new commons_1.Document(allText); | ||
| const document = new Document(allText); | ||
| this._addMetadata($, document, effectiveBaseUrl); | ||
@@ -64,3 +58,3 @@ documents.push(document); | ||
| const elementText = this._normalizedText($(element).text()); | ||
| const document = new commons_1.Document(elementText); | ||
| const document = new Document(elementText); | ||
| // Do not add metadata from element to avoid duplication. | ||
@@ -77,3 +71,3 @@ this._addMetadata($, document, effectiveBaseUrl); | ||
| .join(this._config.separator); | ||
| const document = new commons_1.Document(text); | ||
| const document = new Document(text); | ||
| this._addMetadata($, document, effectiveBaseUrl); | ||
@@ -141,3 +135,3 @@ documents.push(document); | ||
| if (this._htmlResource.protocol === "file:") { | ||
| const buffer = await (0, promises_1.readFile)(this._htmlResource); | ||
| const buffer = await readFile(this._htmlResource); | ||
| return this._decode(buffer); | ||
@@ -160,4 +154,4 @@ } | ||
| try { | ||
| const filePath = (0, node_path_1.resolve)(resource); | ||
| const buffer = await (0, promises_1.readFile)(filePath); | ||
| const filePath = resolve(resource); | ||
| const buffer = await readFile(filePath); | ||
| return this._decode(buffer); | ||
@@ -181,3 +175,2 @@ } | ||
| } | ||
| exports.CheerioDocumentReader = CheerioDocumentReader; | ||
| //# sourceMappingURL=cheerio-document-reader.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"cheerio-document-reader.js","sourceRoot":"","sources":["../src/cheerio-document-reader.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"cheerio-document-reader.js","sourceRoot":"","sources":["../src/cheerio-document-reader.ts"],"names":[],"mappings":"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"} |
@@ -1,2 +0,1 @@ | ||
| "use strict"; | ||
| /* | ||
@@ -17,9 +16,4 @@ * Copyright 2023-present the original author or authors. | ||
| */ | ||
| var __importDefault = (this && this.__importDefault) || function (mod) { | ||
| return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
| }; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.CheerioDocumentReaderConfigBuilder = exports.CheerioDocumentReaderConfig = void 0; | ||
| const strict_1 = __importDefault(require("node:assert/strict")); | ||
| class CheerioDocumentReaderConfig { | ||
| import assert from "node:assert/strict"; | ||
| export class CheerioDocumentReaderConfig { | ||
| charset; | ||
@@ -50,4 +44,3 @@ selector; | ||
| } | ||
| exports.CheerioDocumentReaderConfig = CheerioDocumentReaderConfig; | ||
| class CheerioDocumentReaderConfigBuilder { | ||
| export class CheerioDocumentReaderConfigBuilder { | ||
| _charset = "UTF-8"; | ||
@@ -86,4 +79,4 @@ _selector = "body"; | ||
| _validateNonNull(value, message) { | ||
| strict_1.default.notEqual(value, null, message); | ||
| strict_1.default.notEqual(value, undefined, message); | ||
| assert.notEqual(value, null, message); | ||
| assert.notEqual(value, undefined, message); | ||
| } | ||
@@ -137,3 +130,2 @@ charset(charset) { | ||
| } | ||
| exports.CheerioDocumentReaderConfigBuilder = CheerioDocumentReaderConfigBuilder; | ||
| //# sourceMappingURL=cheerio-document-reader-config.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"cheerio-document-reader-config.js","sourceRoot":"","sources":["../../src/config/cheerio-document-reader-config.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;AAEH,gEAAwC;AAExC,MAAa,2BAA2B;IAC7B,OAAO,CAAS;IAChB,QAAQ,CAAS;IACjB,SAAS,CAAS;IAClB,WAAW,CAAU;IACrB,cAAc,CAAU;IACxB,eAAe,CAAU;IACzB,YAAY,CAAW;IACvB,kBAAkB,CAA0B;IAErD,YAAY,OAA2C;QACrD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;QAC5C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC;QAClD,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,oBAAoB,CAAC;QACpD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC;QAC9C,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,OAAO;QACZ,OAAO,IAAI,kCAAkC,EAAE,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,aAAa;QAClB,OAAO,2BAA2B,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC;IACvD,CAAC;CACF;AA5BD,kEA4BC;AAED,MAAa,kCAAkC;IACrC,QAAQ,GAAG,OAAO,CAAC;IACnB,SAAS,GAAG,MAAM,CAAC;IACnB,UAAU,GAAG,IAAI,CAAC;IAClB,YAAY,GAAG,KAAK,CAAC;IACrB,eAAe,GAAG,KAAK,CAAC;IACxB,gBAAgB,GAAG,KAAK,CAAC;IACzB,aAAa,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IAC5C,mBAAmB,GAA4B,EAAE,CAAC;IAE1D,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,IAAI,mBAAmB;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,IAAI,oBAAoB;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,IAAI,uBAAuB;QACzB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAEO,gBAAgB,CACtB,KAAQ,EACR,OAAe;QAEf,gBAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACtC,gBAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,QAAgB;QACvB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,CAAC,SAAiB;QACzB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,WAAoB;QAC9B,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,cAAc,CAAC,cAAuB;QACpC,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe,CAAC,eAAwB;QACtC,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,WAAmB;QAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,YAAsB;QACjC,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAID,kBAAkB,CAChB,aAA+C,EAC/C,KAAe;QAEf,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;YAC7D,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;YACvD,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;YAChD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,qCAAqC,CAAC,CAAC;QAC5E,IAAI,CAAC,mBAAmB,GAAG,aAAa,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,OAAO,IAAI,2BAA2B,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;CACF;AA/GD,gFA+GC"} | ||
| {"version":3,"file":"cheerio-document-reader-config.js","sourceRoot":"","sources":["../../src/config/cheerio-document-reader-config.ts"],"names":[],"mappings":"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"} |
@@ -1,2 +0,2 @@ | ||
| export { CheerioDocumentReaderConfig, CheerioDocumentReaderConfigBuilder, } from "./cheerio-document-reader-config"; | ||
| export { CheerioDocumentReaderConfig, CheerioDocumentReaderConfigBuilder, } from "./cheerio-document-reader-config.js"; | ||
| //# sourceMappingURL=index.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,2BAA2B,EAC3B,kCAAkC,GACnC,MAAM,kCAAkC,CAAC"} | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,2BAA2B,EAC3B,kCAAkC,GACnC,MAAM,qCAAqC,CAAC"} |
@@ -1,2 +0,1 @@ | ||
| "use strict"; | ||
| /* | ||
@@ -17,7 +16,3 @@ * Copyright 2023-present the original author or authors. | ||
| */ | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.CheerioDocumentReaderConfigBuilder = exports.CheerioDocumentReaderConfig = void 0; | ||
| var cheerio_document_reader_config_1 = require("./cheerio-document-reader-config"); | ||
| Object.defineProperty(exports, "CheerioDocumentReaderConfig", { enumerable: true, get: function () { return cheerio_document_reader_config_1.CheerioDocumentReaderConfig; } }); | ||
| Object.defineProperty(exports, "CheerioDocumentReaderConfigBuilder", { enumerable: true, get: function () { return cheerio_document_reader_config_1.CheerioDocumentReaderConfigBuilder; } }); | ||
| export { CheerioDocumentReaderConfig, CheerioDocumentReaderConfigBuilder, } from "./cheerio-document-reader-config.js"; | ||
| //# sourceMappingURL=index.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,mFAG0C;AAFxC,6IAAA,2BAA2B,OAAA;AAC3B,oJAAA,kCAAkC,OAAA"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,2BAA2B,EAC3B,kCAAkC,GACnC,MAAM,qCAAqC,CAAC"} |
+2
-2
@@ -1,3 +0,3 @@ | ||
| export { CheerioDocumentReader, type CheerioDocumentReaderProps, } from "./cheerio-document-reader"; | ||
| export * from "./config"; | ||
| export { CheerioDocumentReader, type CheerioDocumentReaderProps, } from "./cheerio-document-reader.js"; | ||
| export * from "./config/index.js"; | ||
| //# sourceMappingURL=index.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,qBAAqB,EACrB,KAAK,0BAA0B,GAChC,MAAM,2BAA2B,CAAC;AACnC,cAAc,UAAU,CAAC"} | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,qBAAqB,EACrB,KAAK,0BAA0B,GAChC,MAAM,8BAA8B,CAAC;AACtC,cAAc,mBAAmB,CAAC"} |
+2
-20
@@ -1,2 +0,1 @@ | ||
| "use strict"; | ||
| /* | ||
@@ -17,21 +16,4 @@ * Copyright 2023-present the original author or authors. | ||
| */ | ||
| var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
| if (k2 === undefined) k2 = k; | ||
| var desc = Object.getOwnPropertyDescriptor(m, k); | ||
| if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { | ||
| desc = { enumerable: true, get: function() { return m[k]; } }; | ||
| } | ||
| Object.defineProperty(o, k2, desc); | ||
| }) : (function(o, m, k, k2) { | ||
| if (k2 === undefined) k2 = k; | ||
| o[k2] = m[k]; | ||
| })); | ||
| var __exportStar = (this && this.__exportStar) || function(m, exports) { | ||
| for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); | ||
| }; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.CheerioDocumentReader = void 0; | ||
| var cheerio_document_reader_1 = require("./cheerio-document-reader"); | ||
| Object.defineProperty(exports, "CheerioDocumentReader", { enumerable: true, get: function () { return cheerio_document_reader_1.CheerioDocumentReader; } }); | ||
| __exportStar(require("./config"), exports); | ||
| export { CheerioDocumentReader, } from "./cheerio-document-reader.js"; | ||
| export * from "./config/index.js"; | ||
| //# sourceMappingURL=index.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;;AAEH,qEAGmC;AAFjC,gIAAA,qBAAqB,OAAA;AAGvB,2CAAyB"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,qBAAqB,GAEtB,MAAM,8BAA8B,CAAC;AACtC,cAAc,mBAAmB,CAAC"} |
+22
-18
| { | ||
| "name": "@nestjs-ai/document-reader-cheerio", | ||
| "version": "0.0.2", | ||
| "version": "0.1.0", | ||
| "private": false, | ||
| "description": "Cheerio-based document reader for NestJS AI", | ||
| "keywords": [ | ||
| "ai", | ||
| "cheerio", | ||
| "document", | ||
| "nestjs", | ||
| "reader" | ||
| ], | ||
| "homepage": "https://nestjs-port.github.io/nestjs-ai", | ||
| "license": "Apache-2.0", | ||
| "repository": { | ||
@@ -12,10 +20,7 @@ "type": "git", | ||
| }, | ||
| "keywords": [ | ||
| "nestjs", | ||
| "ai", | ||
| "document", | ||
| "reader", | ||
| "cheerio" | ||
| "files": [ | ||
| "dist", | ||
| "CHANGELOG.md" | ||
| ], | ||
| "license": "Apache-2.0", | ||
| "type": "module", | ||
| "main": "./dist/index.js", | ||
@@ -26,18 +31,17 @@ "types": "./dist/index.d.ts", | ||
| "types": "./dist/index.d.ts", | ||
| "require": "./dist/index.js" | ||
| "default": "./dist/index.js" | ||
| } | ||
| }, | ||
| "peerDependencies": { | ||
| "@nestjs-ai/commons": "*" | ||
| "dependencies": { | ||
| "cheerio": "^1.2.0" | ||
| }, | ||
| "devDependencies": { | ||
| "@nestjs-ai/commons": "0.0.2" | ||
| "@nestjs-ai/commons": "0.1.0" | ||
| }, | ||
| "dependencies": { | ||
| "cheerio": "^1.2.0" | ||
| "peerDependencies": { | ||
| "@nestjs-ai/commons": "^0.1.0" | ||
| }, | ||
| "files": [ | ||
| "dist", | ||
| "CHANGELOG.md" | ||
| ], | ||
| "engines": { | ||
| "node": ">=22.12.0" | ||
| }, | ||
| "scripts": { | ||
@@ -44,0 +48,0 @@ "build": "pnpm clean && tsc -p tsconfig.build.json", |
+198
-61
@@ -5,3 +5,3 @@ # NestJS AI | ||
| **Last synced Spring AI commit:** `da8db657` (Remove Anthropic IT that no longer makes sense) | ||
| **Last synced Spring AI commit:** `d3e495d2` (Expose conversationHistoryEnabled getter in ToolCallAdvisor.Builder) | ||
@@ -14,2 +14,8 @@ ## Overview | ||
| ## Documentation & Resources | ||
| - 📖 **Reference Documentation**: [https://nestjs-port.github.io/nestjs-ai](https://nestjs-port.github.io/nestjs-ai) | ||
| - 💡 **Example Applications**: [nestjs-port/nestjs-ai-examples](https://github.com/nestjs-port/nestjs-ai-examples) | ||
| - 🔗 **Upstream Project**: [Spring AI](https://github.com/spring-projects/spring-ai) — the Java/Spring project this port tracks | ||
| ## Key Features | ||
@@ -30,55 +36,175 @@ | ||
| | Category | Technology | | ||
| |---|---| | ||
| | Language | TypeScript 6.x (strict mode) | | ||
| | Runtime | Node.js >= 20 | | ||
| | Framework | NestJS 11.x | | ||
| | Package Manager | pnpm 10.x | | ||
| | Build | Turborepo + tsc | | ||
| | Test | Vitest 4.x + TestContainers | | ||
| | Lint/Format | Biomejs 2.x | | ||
| | Reactive | RxJS 7.x | | ||
| | Validation | Zod 4.x | | ||
| | Category | Technology | | ||
| | --------------- | ------------------------------------------------------------------------------ | | ||
| | Language | TypeScript 6.x (strict mode) | | ||
| | Runtime | Node.js >= 22.12 | | ||
| | Module format | ESM only | | ||
| | Framework | NestJS 11.x | | ||
| | Package Manager | pnpm 10.x | | ||
| | Build | Turborepo + tsc | | ||
| | Test | Vitest 4.x + TestContainers | | ||
| | Lint/Format | Oxlint + Oxfmt | | ||
| | Reactive | RxJS 7.x | | ||
| | Validation | [Standard Schema](https://standardschema.dev/) (zod / valibot / arktype / ...) | | ||
| ## Porting Progress | ||
| Spring AI module porting status to NestJS AI. (~520 source files, ~180 test files ported across 22 packages) | ||
| | Category | Spring AI Module | nestjs-ai Package | Progress | | ||
| | ----------------------- | ------------------------------------- | ----------------------------------------------- | -------- | | ||
| | **Core** | spring-ai-model | `@nestjs-ai/model` | 100% | | ||
| | | spring-ai-client-chat | `@nestjs-ai/client-chat` | 100% | | ||
| | | spring-ai-commons | `@nestjs-ai/commons` | 100% | | ||
| | | spring-ai-retry | `@nestjs-ai/retry` | 100% | | ||
| | | spring-ai-template-st | `@nestjs-ai/template-st` | 100% | | ||
| | **Model Providers** | spring-ai-openai | `@nestjs-ai/model-openai` | 100% | | ||
| | | spring-ai-google-genai | `@nestjs-ai/model-google-genai` | 100% | | ||
| | | spring-ai-transformers | `@nestjs-ai/model-transformers` | 100% | | ||
| | | spring-ai-anthropic | `@nestjs-ai/model-anthropic` | 100% | | ||
| | | spring-ai-azure-openai | — | 0% | | ||
| | | spring-ai-bedrock | — | 0% | | ||
| | | spring-ai-mistral-ai | — | 0% | | ||
| | | spring-ai-ollama | — | 0% | | ||
| | **RAG & Vector Stores** | spring-ai-rag | `@nestjs-ai/rag` | 100% | | ||
| | | spring-ai-vector-store | `@nestjs-ai/vector-store` | 100% | | ||
| | | spring-ai-redis-store | `@nestjs-ai/vector-store-redis` | 100% | | ||
| | | spring-ai-advisors-vector-store | `@nestjs-ai/advisors-vector-store` | 100% | | ||
| | | spring-ai-pgvector-store | — | 0% | | ||
| | | spring-ai-chroma-store | — | 0% | | ||
| | | spring-ai-pinecone-store | — | 0% | | ||
| | | spring-ai-milvus-store | — | 0% | | ||
| | **Document Readers** | spring-ai-pdf-document-reader | `@nestjs-ai/document-reader-pdf` | 100% | | ||
| | | spring-ai-markdown-document-reader | `@nestjs-ai/document-reader-markdown` | 100% | | ||
| | | spring-ai-tika-document-reader | `@nestjs-ai/document-reader-tika` | 100% | | ||
| | | (cheerio - NestJS specific) | `@nestjs-ai/document-reader-cheerio` | 100% | | ||
| | **Memory** | spring-ai-model-chat-memory-redis | `@nestjs-ai/model-chat-memory-repository-redis` | 100% | | ||
| | | spring-ai-model-chat-memory-jdbc | `@nestjs-ai/model-chat-memory-repository-jsdbc` | 100% | | ||
| | | spring-ai-model-chat-memory-cassandra | — | 0% | | ||
| | **Platform** | spring-ai-autoconfigure | `@nestjs-ai/platform` | 100% | | ||
| | | spring-ai-mcp | `@nestjs-ai/mcp-common` | 10% | | ||
| | | spring-ai-mcp-annotations | `@nestjs-ai/mcp-annotations` | 5% | | ||
| | Category | Spring AI Module | nestjs-ai Package | Progress | | ||
| |---|---|---|---| | ||
| | **Core** | spring-ai-model | `@nestjs-ai/model` | 100% | | ||
| | | spring-ai-client-chat | `@nestjs-ai/client-chat` | 100% | | ||
| | | spring-ai-commons | `@nestjs-ai/commons` | 100% | | ||
| | | spring-ai-retry | `@nestjs-ai/retry` | 100% | | ||
| | | spring-ai-template-st | `@nestjs-ai/template-st` | 100% | | ||
| | | spring-ai-observation | `@nestjs-ai/observation` | 100% | | ||
| | | spring-ai-test | `@nestjs-ai/testing` | 100% | | ||
| | **Model Providers** | spring-ai-openai | `@nestjs-ai/model-openai` | 100% | | ||
| | | spring-ai-openai-sdk | `@nestjs-ai/model-openai-sdk` | 100% | | ||
| | | spring-ai-google-genai | `@nestjs-ai/model-google-genai` | 100% | | ||
| | | spring-ai-transformers | `@nestjs-ai/model-transformers` | 100% | | ||
| | | spring-ai-anthropic | — | 0% | | ||
| | | spring-ai-azure-openai | — | 0% | | ||
| | | spring-ai-bedrock | — | 0% | | ||
| | | spring-ai-mistral-ai | — | 0% | | ||
| | | spring-ai-ollama | — | 0% | | ||
| | **RAG & Vector Stores** | spring-ai-rag | `@nestjs-ai/rag` | 100% | | ||
| | | spring-ai-vector-store | `@nestjs-ai/vector-store` | 100% | | ||
| | | spring-ai-redis-store | `@nestjs-ai/vector-store-redis` | 100% | | ||
| | | spring-ai-advisors-vector-store | `@nestjs-ai/advisors-vector-store` | 100% | | ||
| | | spring-ai-pgvector-store | — | 0% | | ||
| | | spring-ai-chroma-store | — | 0% | | ||
| | | spring-ai-pinecone-store | — | 0% | | ||
| | | spring-ai-milvus-store | — | 0% | | ||
| | **Document Readers** | spring-ai-pdf-document-reader | `@nestjs-ai/document-reader-pdf` | 100% | | ||
| | | spring-ai-markdown-document-reader | `@nestjs-ai/document-reader-markdown` | 100% | | ||
| | | spring-ai-tika-document-reader | `@nestjs-ai/document-reader-tika` | 100% | | ||
| | | (cheerio - NestJS specific) | `@nestjs-ai/document-reader-cheerio` | 100% | | ||
| | **Memory** | spring-ai-model-chat-memory-redis | `@nestjs-ai/model-chat-memory-repository-redis` | 100% | | ||
| | | spring-ai-model-chat-memory-jdbc | — | 0% | | ||
| | | spring-ai-model-chat-memory-cassandra | — | 0% | | ||
| | **Platform** | spring-ai-autoconfigure | `@nestjs-ai/platform` | 100% | | ||
| | | spring-ai-mcp | `@nestjs-ai/mcp-common` | 10% | | ||
| | | spring-ai-jsdbc | `@nestjs-ai/jsdbc` | 30% | | ||
| ## Differences from Spring AI | ||
| NestJS AI mirrors Spring AI's module structure and API design, but adapts the following areas to fit the Node.js / TypeScript ecosystem. | ||
| ### 1. Standard Schema instead of reflection-based JSON Schema | ||
| Spring AI derives JSON Schema for tool/function calling from Java classes via reflection. Node.js reflection is limited, so NestJS AI accepts any schema that implements [**Standard Schema**](https://standardschema.dev/) as the source of truth for tool parameters and structured output. Standard Schema is a vendor-neutral interface (`~standard.validate()` + `~standard.jsonSchema`) that [zod](https://github.com/colinhacks/zod), [valibot](https://github.com/fabian-hiller/valibot), [arktype](https://github.com/arktypeio/arktype), [effect](https://github.com/Effect-TS/effect), and others implement out of the box, so you can pick whichever library you prefer. The schema is both the runtime validator and the JSON Schema fed to the model. | ||
| ```typescript | ||
| import { Tool } from "@nestjs-ai/model"; | ||
| import { z } from "zod"; // or valibot, arktype, ... — any Standard-Schema-compatible library works | ||
| class WeatherTools { | ||
| @Tool({ | ||
| description: "Get current weather for a city", | ||
| parameters: z.object({ | ||
| city: z.string(), | ||
| unit: z.enum(["celsius", "fahrenheit"]).optional(), | ||
| }), | ||
| }) | ||
| getWeather(input: { city: string; unit?: "celsius" | "fahrenheit" }) { | ||
| return fetchWeather(input.city, input.unit); | ||
| } | ||
| } | ||
| ``` | ||
| Structured output works the same way — pass a Standard Schema to `.entity()`: | ||
| ```typescript | ||
| const sentiment = await chatClient | ||
| .prompt("Classify: I love this product!") | ||
| .call() | ||
| .entity(z.object({ sentiment: z.enum(["positive", "negative", "neutral"]) })); | ||
| ``` | ||
| ### 2. NestJS dynamic modules instead of Spring Boot auto-configuration | ||
| Spring AI wires beans through `@EnableAutoConfiguration` and `application.properties`. NestJS AI uses NestJS dynamic modules — `forRoot()`, `forFeature()`, `forFeatureAsync()` — so configuration is explicit in your module graph. | ||
| ```typescript | ||
| import { Module } from "@nestjs/common"; | ||
| import { NestAiModule } from "@nestjs-ai/platform"; | ||
| import { OpenAiChatModelModule } from "@nestjs-ai/model-openai"; | ||
| import { ChatClientModule } from "@nestjs-ai/client-chat"; | ||
| @Module({ | ||
| imports: [ | ||
| NestAiModule.forRoot(), | ||
| OpenAiChatModelModule.forFeature({ | ||
| apiKey: process.env.OPENAI_API_KEY, | ||
| options: { model: "gpt-4o-mini", temperature: 0.7 }, | ||
| }), | ||
| ChatClientModule.forFeature(), | ||
| ], | ||
| }) | ||
| export class AppModule {} | ||
| ``` | ||
| For dynamic configuration (e.g., `ConfigService`), use the async variant: | ||
| ```typescript | ||
| OpenAiChatModelModule.forFeatureAsync({ | ||
| imports: [ConfigModule], | ||
| inject: [ConfigService], | ||
| useFactory: (config: ConfigService) => ({ | ||
| apiKey: config.getOrThrow("OPENAI_API_KEY"), | ||
| options: { model: config.get("OPENAI_MODEL", "gpt-4o-mini") }, | ||
| }), | ||
| }); | ||
| ``` | ||
| ### 3. Props objects instead of builder-only configuration | ||
| Spring AI's options classes are constructed via `.builder()...build()`. NestJS AI keeps the builder available (via `.builder()` / `.mutate()`) but options constructors accept a **plain props object (JSON literal)**, which matches TypeScript idioms and avoids fluent-chain ceremony. | ||
| ```typescript | ||
| import { OpenAiChatOptions } from "@nestjs-ai/model-openai"; | ||
| // Props style (preferred) | ||
| const options = new OpenAiChatOptions({ | ||
| model: "gpt-4o-mini", | ||
| temperature: 0.7, | ||
| maxTokens: 1024, | ||
| }); | ||
| // Builder style (still supported, useful for partial mutation) | ||
| const tuned = OpenAiChatOptions.builder() | ||
| .temperature(0.9) | ||
| .maxTokens(2048) | ||
| .build(); | ||
| ``` | ||
| ### 4. ChatClient `prompt()` accepts both fluent API and JSON literal | ||
| Spring AI's `ChatClient.prompt()` is fluent. NestJS AI's `prompt()` is overloaded so you can pick whichever style fits the call site — a bare string, a `Prompt` instance, a props object, or the fluent chain. | ||
| ```typescript | ||
| // Fluent API (Spring AI-style) | ||
| await chatClient | ||
| .prompt() | ||
| .system("You are a helpful assistant.") | ||
| .user("Summarize TypeScript in one sentence.") | ||
| .call() | ||
| .content(); | ||
| // String shorthand | ||
| await chatClient | ||
| .prompt("Summarize TypeScript in one sentence.") | ||
| .call() | ||
| .content(); | ||
| // JSON literal props — most ergonomic when options are dynamic | ||
| await chatClient | ||
| .prompt({ | ||
| system: "You are a helpful assistant.", | ||
| user: "Summarize TypeScript in one sentence.", | ||
| options: OpenAiChatOptions.builder().temperature(0.3), | ||
| }) | ||
| .call() | ||
| .content(); | ||
| ``` | ||
| All four forms return the same `ChatClientRequestSpec`, so `.call()`, `.stream()`, `.entity(zodSchema)`, and advisor/tool composition work uniformly. | ||
| ## Project Structure | ||
@@ -90,18 +216,18 @@ | ||
| │ ├── model/ # Core chat/embedding abstractions | ||
| │ ├── client-chat/ # High-level client API & advisors | ||
| │ ├── client-chat/ # High-level fluent ChatClient API | ||
| │ ├── commons/ # Shared utilities & tokens | ||
| │ ├── platform/ # NestJS module integration | ||
| │ ├── platform/ # NestJS module integration (NestAiModule) | ||
| │ ├── rag/ # RAG pipeline | ||
| │ ├── vector-store/ # Vector store abstractions | ||
| │ ├── observation/ # OpenTelemetry integration | ||
| │ ├── retry/ # Retry utilities | ||
| │ ├── template-st/ # Prompt templating | ||
| │ ├── testing/ # Test utilities | ||
| │ ├── jsdbc/ # JDBC integration layer | ||
| │ ├── template-st/ # StringTemplate-based prompt templating | ||
| │ ├── integration-tests/ # Cross-package integration test suite | ||
| │ ├── models/ | ||
| │ │ ├── openai/ # OpenAI provider | ||
| │ │ ├── google-genai/ # Google GenAI provider | ||
| │ │ ├── google-genai/ # Google GenAI (Gemini / Vertex AI) provider | ||
| │ │ ├── anthropic/ # Anthropic (Claude) provider | ||
| │ │ └── transformers/ # Hugging Face local embeddings | ||
| │ ├── mcp/ | ||
| │ │ └── common/ # Model Context Protocol | ||
| │ │ ├── common/ # Model Context Protocol core | ||
| │ │ └── annotations/ # MCP annotations (WIP) | ||
| │ ├── vector-stores/ | ||
@@ -111,5 +237,6 @@ │ │ └── redis-store/ # Redis vector store | ||
| │ │ └── repository/ | ||
| │ │ └── model-chat-memory-repository-redis/ | ||
| │ │ ├── model-chat-memory-repository-redis/ # Redis-backed chat memory | ||
| │ │ └── model-chat-memory-repository-jsdbc/ # SQL-backed chat memory (MySQL/Postgres/Oracle/SQL Server/SQLite) | ||
| │ ├── document-readers/ | ||
| │ │ ├── pdf-reader/ # PDF.js reader | ||
| │ │ ├── pdf-reader/ # PDF reader | ||
| │ │ ├── markdown-reader/ # Markdown reader | ||
@@ -119,3 +246,3 @@ │ │ ├── cheerio-reader/ # HTML/web scraping | ||
| │ └── advisors/ | ||
| │ └── advisors-vector-store/ | ||
| │ └── advisors-vector-store/ # Vector-store-backed advisors | ||
| ├── docs/ # Antora documentation site | ||
@@ -129,5 +256,7 @@ └── turbo.json # Turborepo configuration | ||
| - Node.js >= 20.0.0 | ||
| - Node.js >= 22.12.0 (required for `require(esm)` support so ESM-only packages can be consumed from CJS) | ||
| - pnpm >= 10.0.0 | ||
| All packages are published as **ESM only**. Consumer apps running Node.js 22.12+ can import them from either ESM or CJS code. | ||
| ### Installation | ||
@@ -157,1 +286,9 @@ | ||
| ``` | ||
| ## License | ||
| NestJS AI is released under the [Apache License 2.0](./LICENSE), matching the license of the upstream [Spring AI](https://github.com/spring-projects/spring-ai) project. | ||
| ## Acknowledgments | ||
| NestJS AI would not exist without the foundational work of the [Spring AI](https://github.com/spring-projects/spring-ai) team and contributors. This project is a faithful TypeScript/NestJS port of Spring AI's abstractions, module structure, and API design — all credit for the original architecture and research belongs to them. |
55265
14.44%287
91.33%Yes
NaN395
-8.78%