@nestjs-ai/document-reader-markdown
Advanced tools
+11
-0
| # @nestjs-ai/document-reader-markdown | ||
| ## 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 @@ |
@@ -1,2 +0,2 @@ | ||
| export { MarkdownDocumentReaderConfig, MarkdownDocumentReaderConfigBuilder, } from "./markdown-document-reader-config"; | ||
| export { MarkdownDocumentReaderConfig, MarkdownDocumentReaderConfigBuilder, } from "./markdown-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,4BAA4B,EAC5B,mCAAmC,GACpC,MAAM,mCAAmC,CAAC"} | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,4BAA4B,EAC5B,mCAAmC,GACpC,MAAM,sCAAsC,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.MarkdownDocumentReaderConfigBuilder = exports.MarkdownDocumentReaderConfig = void 0; | ||
| var markdown_document_reader_config_1 = require("./markdown-document-reader-config"); | ||
| Object.defineProperty(exports, "MarkdownDocumentReaderConfig", { enumerable: true, get: function () { return markdown_document_reader_config_1.MarkdownDocumentReaderConfig; } }); | ||
| Object.defineProperty(exports, "MarkdownDocumentReaderConfigBuilder", { enumerable: true, get: function () { return markdown_document_reader_config_1.MarkdownDocumentReaderConfigBuilder; } }); | ||
| export { MarkdownDocumentReaderConfig, MarkdownDocumentReaderConfigBuilder, } from "./markdown-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,qFAG2C;AAFzC,+IAAA,4BAA4B,OAAA;AAC5B,sJAAA,mCAAmC,OAAA"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,4BAA4B,EAC5B,mCAAmC,GACpC,MAAM,sCAAsC,CAAC"} |
@@ -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.MarkdownDocumentReaderConfigBuilder = exports.MarkdownDocumentReaderConfig = void 0; | ||
| const strict_1 = __importDefault(require("node:assert/strict")); | ||
| class MarkdownDocumentReaderConfig { | ||
| import assert from "node:assert/strict"; | ||
| export class MarkdownDocumentReaderConfig { | ||
| horizontalRuleCreateDocument; | ||
@@ -43,4 +37,3 @@ includeCodeBlock; | ||
| } | ||
| exports.MarkdownDocumentReaderConfig = MarkdownDocumentReaderConfig; | ||
| class MarkdownDocumentReaderConfigBuilder { | ||
| export class MarkdownDocumentReaderConfigBuilder { | ||
| _horizontalRuleCreateDocument = false; | ||
@@ -63,4 +56,4 @@ _includeCodeBlock = false; | ||
| _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); | ||
| } | ||
@@ -94,3 +87,2 @@ horizontalRuleCreateDocument(horizontalRuleCreateDocument) { | ||
| } | ||
| exports.MarkdownDocumentReaderConfigBuilder = MarkdownDocumentReaderConfigBuilder; | ||
| //# sourceMappingURL=markdown-document-reader-config.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"markdown-document-reader-config.js","sourceRoot":"","sources":["../../src/config/markdown-document-reader-config.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;AAEH,gEAAwC;AAExC,MAAa,4BAA4B;IAC9B,4BAA4B,CAAU;IACtC,gBAAgB,CAAU;IAC1B,iBAAiB,CAAU;IAC3B,kBAAkB,CAA0B;IAErD,YAAY,OAA4C;QACtD,IAAI,CAAC,4BAA4B;YAC/B,OAAO,CAAC,iCAAiC,CAAC;QAC5C,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,qBAAqB,CAAC;QACtD,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,sBAAsB,CAAC;QACxD,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,OAAO;QACZ,OAAO,IAAI,mCAAmC,EAAE,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,aAAa;QAClB,OAAO,4BAA4B,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC;IACxD,CAAC;CACF;AArBD,oEAqBC;AAED,MAAa,mCAAmC;IACtC,6BAA6B,GAAG,KAAK,CAAC;IACtC,iBAAiB,GAAG,KAAK,CAAC;IAC1B,kBAAkB,GAAG,KAAK,CAAC;IAC3B,mBAAmB,GAA4B,EAAE,CAAC;IAE1D,IAAI,iCAAiC;QACnC,OAAO,IAAI,CAAC,6BAA6B,CAAC;IAC5C,CAAC;IAED,IAAI,qBAAqB;QACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED,IAAI,sBAAsB;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,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,4BAA4B,CAAC,4BAAqC;QAChE,IAAI,CAAC,6BAA6B,GAAG,4BAA4B,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB,CAAC,gBAAyB;QACxC,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iBAAiB,CAAC,iBAA0B;QAC1C,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;QAC5C,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,4BAA4B,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;CACF;AAlED,kFAkEC"} | ||
| {"version":3,"file":"markdown-document-reader-config.js","sourceRoot":"","sources":["../../src/config/markdown-document-reader-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,MAAM,MAAM,oBAAoB,CAAC;AAExC,MAAM,OAAO,4BAA4B;IAC9B,4BAA4B,CAAU;IACtC,gBAAgB,CAAU;IAC1B,iBAAiB,CAAU;IAC3B,kBAAkB,CAA0B;IAErD,YAAY,OAA4C;QACtD,IAAI,CAAC,4BAA4B;YAC/B,OAAO,CAAC,iCAAiC,CAAC;QAC5C,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,qBAAqB,CAAC;QACtD,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,sBAAsB,CAAC;QACxD,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,OAAO;QACZ,OAAO,IAAI,mCAAmC,EAAE,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,aAAa;QAClB,OAAO,4BAA4B,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC;IACxD,CAAC;CACF;AAED,MAAM,OAAO,mCAAmC;IACtC,6BAA6B,GAAG,KAAK,CAAC;IACtC,iBAAiB,GAAG,KAAK,CAAC;IAC1B,kBAAkB,GAAG,KAAK,CAAC;IAC3B,mBAAmB,GAA4B,EAAE,CAAC;IAE1D,IAAI,iCAAiC;QACnC,OAAO,IAAI,CAAC,6BAA6B,CAAC;IAC5C,CAAC;IAED,IAAI,qBAAqB;QACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED,IAAI,sBAAsB;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAED,IAAI,uBAAuB;QACzB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAEO,gBAAgB,CACtB,KAAQ,EACR,OAAe;QAEf,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACtC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,4BAA4B,CAAC,4BAAqC;QAChE,IAAI,CAAC,6BAA6B,GAAG,4BAA4B,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB,CAAC,gBAAyB;QACxC,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iBAAiB,CAAC,iBAA0B;QAC1C,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;QAC5C,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,4BAA4B,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;CACF"} |
+2
-2
@@ -1,3 +0,3 @@ | ||
| export * from "./config"; | ||
| export { MarkdownDocumentReader, type MarkdownDocumentReaderProps, } from "./markdown-document-reader"; | ||
| export * from "./config/index.js"; | ||
| export { MarkdownDocumentReader, type MarkdownDocumentReaderProps, } from "./markdown-document-reader.js"; | ||
| //# sourceMappingURL=index.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgBA,cAAc,UAAU,CAAC;AACzB,OAAO,EACL,sBAAsB,EACtB,KAAK,2BAA2B,GACjC,MAAM,4BAA4B,CAAC"} | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgBA,cAAc,mBAAmB,CAAC;AAClC,OAAO,EACL,sBAAsB,EACtB,KAAK,2BAA2B,GACjC,MAAM,+BAA+B,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.MarkdownDocumentReader = void 0; | ||
| __exportStar(require("./config"), exports); | ||
| var markdown_document_reader_1 = require("./markdown-document-reader"); | ||
| Object.defineProperty(exports, "MarkdownDocumentReader", { enumerable: true, get: function () { return markdown_document_reader_1.MarkdownDocumentReader; } }); | ||
| export * from "./config/index.js"; | ||
| export { MarkdownDocumentReader, } from "./markdown-document-reader.js"; | ||
| //# sourceMappingURL=index.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;;AAEH,2CAAyB;AACzB,uEAGoC;AAFlC,kIAAA,sBAAsB,OAAA"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,mBAAmB,CAAC;AAClC,OAAO,EACL,sBAAsB,GAEvB,MAAM,+BAA+B,CAAC"} |
| import { Document, type DocumentReader } from "@nestjs-ai/commons"; | ||
| import { MarkdownDocumentReaderConfig } from "./config"; | ||
| import { MarkdownDocumentReaderConfig } from "./config/index.js"; | ||
| type MarkdownResource = string | URL | Buffer; | ||
@@ -4,0 +4,0 @@ export interface MarkdownDocumentReaderProps { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"markdown-document-reader.d.ts","sourceRoot":"","sources":["../src/markdown-document-reader.ts"],"names":[],"mappings":"AAmBA,OAAO,EACL,QAAQ,EAER,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AAExD,KAAK,gBAAgB,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;AAE9C,MAAM,WAAW,2BAA2B;IAC1C,iBAAiB,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;IACzD,MAAM,CAAC,EAAE,4BAA4B,CAAC;CACvC;AAED,qBAAa,sBAAuB,YAAW,cAAc;IAC3D,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;gBAEhC,EACV,iBAAiB,EACjB,MAAqD,GACtD,EAAE,2BAA2B;IAW9B,MAAM,CAAC,YAAY,CACjB,iBAAiB,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,GACvD,sBAAsB;IAInB,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAe1B,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YAInB,iBAAiB;YA4BjB,aAAa;IAiC3B,OAAO,CAAC,OAAO;CAGhB"} | ||
| {"version":3,"file":"markdown-document-reader.d.ts","sourceRoot":"","sources":["../src/markdown-document-reader.ts"],"names":[],"mappings":"AAmBA,OAAO,EACL,QAAQ,EAER,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAEjE,KAAK,gBAAgB,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;AAE9C,MAAM,WAAW,2BAA2B;IAC1C,iBAAiB,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;IACzD,MAAM,CAAC,EAAE,4BAA4B,CAAC;CACvC;AAED,qBAAa,sBAAuB,YAAW,cAAc;IAC3D,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;gBAEhC,EACV,iBAAiB,EACjB,MAAqD,GACtD,EAAE,2BAA2B;IAW9B,MAAM,CAAC,YAAY,CACjB,iBAAiB,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,GACvD,sBAAsB;IAInB,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAe1B,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YAInB,iBAAiB;YA4BjB,aAAa;IAiC3B,OAAO,CAAC,OAAO;CAGhB"} |
@@ -1,2 +0,1 @@ | ||
| "use strict"; | ||
| /* | ||
@@ -17,54 +16,16 @@ * 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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { | ||
| Object.defineProperty(o, "default", { enumerable: true, value: v }); | ||
| }) : function(o, v) { | ||
| o["default"] = v; | ||
| }); | ||
| var __importStar = (this && this.__importStar) || (function () { | ||
| var ownKeys = function(o) { | ||
| ownKeys = Object.getOwnPropertyNames || function (o) { | ||
| var ar = []; | ||
| for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; | ||
| return ar; | ||
| }; | ||
| return ownKeys(o); | ||
| }; | ||
| return function (mod) { | ||
| if (mod && mod.__esModule) return mod; | ||
| var result = {}; | ||
| if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); | ||
| __setModuleDefault(result, mod); | ||
| return result; | ||
| }; | ||
| })(); | ||
| var __importDefault = (this && this.__importDefault) || function (mod) { | ||
| return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
| }; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.MarkdownDocumentReader = 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 commonmark = __importStar(require("commonmark")); | ||
| const fast_glob_1 = __importDefault(require("fast-glob")); | ||
| const config_1 = require("./config"); | ||
| class MarkdownDocumentReader { | ||
| import assert from "node:assert/strict"; | ||
| import { readFile } from "node:fs/promises"; | ||
| import { resolve } from "node:path"; | ||
| import { Document, } from "@nestjs-ai/commons"; | ||
| import * as commonmark from "commonmark"; | ||
| import fg from "fast-glob"; | ||
| import { MarkdownDocumentReaderConfig } from "./config/index.js"; | ||
| export class MarkdownDocumentReader { | ||
| _markdownResources; | ||
| _config; | ||
| _parser; | ||
| constructor({ markdownResources, config = config_1.MarkdownDocumentReaderConfig.defaultConfig(), }) { | ||
| (0, strict_1.default)(markdownResources != null, "markdownResources must not be null"); | ||
| (0, strict_1.default)(config != null, "config must not be null"); | ||
| constructor({ markdownResources, config = MarkdownDocumentReaderConfig.defaultConfig(), }) { | ||
| assert(markdownResources != null, "markdownResources must not be null"); | ||
| assert(config != null, "config must not be null"); | ||
| this._markdownResources = Array.isArray(markdownResources) | ||
@@ -101,7 +62,7 @@ ? markdownResources | ||
| } | ||
| if (!fast_glob_1.default.isDynamicPattern(resource)) { | ||
| if (!fg.isDynamicPattern(resource)) { | ||
| resolved.push(resource); | ||
| continue; | ||
| } | ||
| const expanded = await (0, fast_glob_1.default)(resource, { | ||
| const expanded = await fg(resource, { | ||
| onlyFiles: true, | ||
@@ -122,3 +83,3 @@ absolute: true, | ||
| if (resource.protocol === "file:") { | ||
| const buffer = await (0, promises_1.readFile)(resource); | ||
| const buffer = await readFile(resource); | ||
| return this._decode(buffer); | ||
@@ -139,4 +100,4 @@ } | ||
| } | ||
| 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); | ||
@@ -148,3 +109,2 @@ } | ||
| } | ||
| exports.MarkdownDocumentReader = MarkdownDocumentReader; | ||
| class MarkdownDocumentVisitor { | ||
@@ -154,3 +114,3 @@ _documents = []; | ||
| _config; | ||
| _currentDocumentBuilder = commons_1.Document.builder(); | ||
| _currentDocumentBuilder = Document.builder(); | ||
| constructor(config) { | ||
@@ -160,3 +120,3 @@ this._config = config; | ||
| visit(document) { | ||
| this._currentDocumentBuilder = commons_1.Document.builder(); | ||
| this._currentDocumentBuilder = Document.builder(); | ||
| const walker = document.walker(); | ||
@@ -239,3 +199,3 @@ let event = walker.next(); | ||
| } | ||
| this._currentDocumentBuilder = commons_1.Document.builder(); | ||
| this._currentDocumentBuilder = Document.builder(); | ||
| } | ||
@@ -242,0 +202,0 @@ _translateLineBreakToSpace() { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"markdown-document-reader.js","sourceRoot":"","sources":["../src/markdown-document-reader.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"markdown-document-reader.js","sourceRoot":"","sources":["../src/markdown-document-reader.ts"],"names":[],"mappings":"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"} |
+23
-19
| { | ||
| "name": "@nestjs-ai/document-reader-markdown", | ||
| "version": "0.0.2", | ||
| "version": "0.1.0", | ||
| "private": false, | ||
| "description": "Markdown document reader for NestJS AI", | ||
| "keywords": [ | ||
| "ai", | ||
| "document", | ||
| "markdown", | ||
| "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", | ||
| "markdown" | ||
| "files": [ | ||
| "dist", | ||
| "CHANGELOG.md" | ||
| ], | ||
| "license": "Apache-2.0", | ||
| "type": "module", | ||
| "main": "./dist/index.js", | ||
@@ -26,20 +31,19 @@ "types": "./dist/index.d.ts", | ||
| "types": "./dist/index.d.ts", | ||
| "require": "./dist/index.js" | ||
| "default": "./dist/index.js" | ||
| } | ||
| }, | ||
| "peerDependencies": { | ||
| "@nestjs-ai/commons": "*" | ||
| "dependencies": { | ||
| "commonmark": "^0.31.2", | ||
| "fast-glob": "^3.3.3" | ||
| }, | ||
| "devDependencies": { | ||
| "@types/commonmark": "^0.27.10", | ||
| "@nestjs-ai/commons": "0.0.2" | ||
| "@nestjs-ai/commons": "0.1.0" | ||
| }, | ||
| "dependencies": { | ||
| "commonmark": "^0.31.2", | ||
| "fast-glob": "^3.3.3" | ||
| "peerDependencies": { | ||
| "@nestjs-ai/commons": "^0.1.0" | ||
| }, | ||
| "files": [ | ||
| "dist", | ||
| "CHANGELOG.md" | ||
| ], | ||
| "engines": { | ||
| "node": ">=22.12.0" | ||
| }, | ||
| "scripts": { | ||
@@ -46,0 +50,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. |
53700
11.43%287
91.33%Yes
NaN367
-16.21%