vectra 0.12.3 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +68 -75
- package/lib/BrowserWebFetcher.d.ts +75 -0
- package/lib/BrowserWebFetcher.d.ts.map +1 -0
- package/lib/BrowserWebFetcher.js +290 -0
- package/lib/BrowserWebFetcher.js.map +1 -0
- package/lib/FileFetcher.d.ts.map +1 -1
- package/lib/FileFetcher.js +25 -15
- package/lib/FileFetcher.js.map +1 -1
- package/lib/FileFetcher.spec.d.ts +2 -0
- package/lib/FileFetcher.spec.d.ts.map +1 -0
- package/lib/FileFetcher.spec.js +244 -0
- package/lib/FileFetcher.spec.js.map +1 -0
- package/lib/FolderWatcher.d.ts +111 -0
- package/lib/FolderWatcher.d.ts.map +1 -0
- package/lib/FolderWatcher.js +431 -0
- package/lib/FolderWatcher.js.map +1 -0
- package/lib/FolderWatcher.spec.d.ts +2 -0
- package/lib/FolderWatcher.spec.d.ts.map +1 -0
- package/lib/FolderWatcher.spec.js +542 -0
- package/lib/FolderWatcher.spec.js.map +1 -0
- package/lib/GPT3Tokenizer.spec.d.ts +2 -0
- package/lib/GPT3Tokenizer.spec.d.ts.map +1 -0
- package/lib/GPT3Tokenizer.spec.js +45 -0
- package/lib/GPT3Tokenizer.spec.js.map +1 -0
- package/lib/ItemSelector.d.ts.map +1 -1
- package/lib/ItemSelector.js +19 -8
- package/lib/ItemSelector.js.map +1 -1
- package/lib/ItemSelector.spec.d.ts +2 -0
- package/lib/ItemSelector.spec.d.ts.map +1 -0
- package/lib/ItemSelector.spec.js +204 -0
- package/lib/ItemSelector.spec.js.map +1 -0
- package/lib/LocalDocument.d.ts +1 -1
- package/lib/LocalDocument.d.ts.map +1 -1
- package/lib/LocalDocument.js +5 -45
- package/lib/LocalDocument.js.map +1 -1
- package/lib/LocalDocument.spec.d.ts +2 -0
- package/lib/LocalDocument.spec.d.ts.map +1 -0
- package/lib/LocalDocument.spec.js +214 -0
- package/lib/LocalDocument.spec.js.map +1 -0
- package/lib/LocalDocumentIndex.d.ts +29 -3
- package/lib/LocalDocumentIndex.d.ts.map +1 -1
- package/lib/LocalDocumentIndex.js +42 -60
- package/lib/LocalDocumentIndex.js.map +1 -1
- package/lib/LocalDocumentIndex.spec.d.ts +2 -0
- package/lib/LocalDocumentIndex.spec.d.ts.map +1 -0
- package/lib/LocalDocumentIndex.spec.js +612 -0
- package/lib/LocalDocumentIndex.spec.js.map +1 -0
- package/lib/LocalDocumentResult.d.ts +32 -11
- package/lib/LocalDocumentResult.d.ts.map +1 -1
- package/lib/LocalDocumentResult.js +305 -257
- package/lib/LocalDocumentResult.js.map +1 -1
- package/lib/LocalDocumentResult.spec.d.ts +2 -0
- package/lib/LocalDocumentResult.spec.d.ts.map +1 -0
- package/lib/LocalDocumentResult.spec.js +373 -0
- package/lib/LocalDocumentResult.spec.js.map +1 -0
- package/lib/LocalEmbeddings.d.ts +59 -0
- package/lib/LocalEmbeddings.d.ts.map +1 -0
- package/lib/LocalEmbeddings.js +101 -0
- package/lib/LocalEmbeddings.js.map +1 -0
- package/lib/LocalEmbeddings.spec.d.ts +2 -0
- package/lib/LocalEmbeddings.spec.d.ts.map +1 -0
- package/lib/LocalEmbeddings.spec.js +155 -0
- package/lib/LocalEmbeddings.spec.js.map +1 -0
- package/lib/LocalIndex.d.ts +37 -18
- package/lib/LocalIndex.d.ts.map +1 -1
- package/lib/LocalIndex.js +206 -131
- package/lib/LocalIndex.js.map +1 -1
- package/lib/LocalIndex.spec.js +519 -43
- package/lib/LocalIndex.spec.js.map +1 -1
- package/lib/OpenAIEmbeddings.d.ts +4 -6
- package/lib/OpenAIEmbeddings.d.ts.map +1 -1
- package/lib/OpenAIEmbeddings.js +16 -24
- package/lib/OpenAIEmbeddings.js.map +1 -1
- package/lib/OpenAIEmbeddings.spec.d.ts +2 -0
- package/lib/OpenAIEmbeddings.spec.d.ts.map +1 -0
- package/lib/OpenAIEmbeddings.spec.js +298 -0
- package/lib/OpenAIEmbeddings.spec.js.map +1 -0
- package/lib/TextSplitter.d.ts +2 -0
- package/lib/TextSplitter.d.ts.map +1 -1
- package/lib/TextSplitter.js +154 -111
- package/lib/TextSplitter.js.map +1 -1
- package/lib/TextSplitter.spec.js +289 -61
- package/lib/TextSplitter.spec.js.map +1 -1
- package/lib/TransformersEmbeddings.d.ts +121 -0
- package/lib/TransformersEmbeddings.d.ts.map +1 -0
- package/lib/TransformersEmbeddings.js +139 -0
- package/lib/TransformersEmbeddings.js.map +1 -0
- package/lib/TransformersEmbeddings.spec.d.ts +2 -0
- package/lib/TransformersEmbeddings.spec.d.ts.map +1 -0
- package/lib/TransformersEmbeddings.spec.js +202 -0
- package/lib/TransformersEmbeddings.spec.js.map +1 -0
- package/lib/TransformersTokenizer.d.ts +33 -0
- package/lib/TransformersTokenizer.d.ts.map +1 -0
- package/lib/TransformersTokenizer.js +44 -0
- package/lib/TransformersTokenizer.js.map +1 -0
- package/lib/TransformersTokenizer.spec.d.ts +2 -0
- package/lib/TransformersTokenizer.spec.d.ts.map +1 -0
- package/lib/TransformersTokenizer.spec.js +112 -0
- package/lib/TransformersTokenizer.spec.js.map +1 -0
- package/lib/WebFetcher.d.ts +1 -2
- package/lib/WebFetcher.d.ts.map +1 -1
- package/lib/WebFetcher.js +58 -54
- package/lib/WebFetcher.js.map +1 -1
- package/lib/WebFetcher.spec.d.ts +2 -0
- package/lib/WebFetcher.spec.d.ts.map +1 -0
- package/lib/WebFetcher.spec.js +263 -0
- package/lib/WebFetcher.spec.js.map +1 -0
- package/lib/browser.d.ts +30 -0
- package/lib/browser.d.ts.map +1 -0
- package/lib/browser.js +52 -0
- package/lib/browser.js.map +1 -0
- package/lib/codecs/IndexCodec.d.ts +47 -0
- package/lib/codecs/IndexCodec.d.ts.map +1 -0
- package/lib/codecs/IndexCodec.js +3 -0
- package/lib/codecs/IndexCodec.js.map +1 -0
- package/lib/codecs/JsonCodec.d.ts +19 -0
- package/lib/codecs/JsonCodec.d.ts.map +1 -0
- package/lib/codecs/JsonCodec.js +35 -0
- package/lib/codecs/JsonCodec.js.map +1 -0
- package/lib/codecs/JsonCodec.spec.d.ts +2 -0
- package/lib/codecs/JsonCodec.spec.d.ts.map +1 -0
- package/lib/codecs/JsonCodec.spec.js +87 -0
- package/lib/codecs/JsonCodec.spec.js.map +1 -0
- package/lib/codecs/LocalIndex.protobuf.spec.d.ts +2 -0
- package/lib/codecs/LocalIndex.protobuf.spec.d.ts.map +1 -0
- package/lib/codecs/LocalIndex.protobuf.spec.js +108 -0
- package/lib/codecs/LocalIndex.protobuf.spec.js.map +1 -0
- package/lib/codecs/ProtobufCodec.d.ts +20 -0
- package/lib/codecs/ProtobufCodec.d.ts.map +1 -0
- package/lib/codecs/ProtobufCodec.js +232 -0
- package/lib/codecs/ProtobufCodec.js.map +1 -0
- package/lib/codecs/ProtobufCodec.spec.d.ts +2 -0
- package/lib/codecs/ProtobufCodec.spec.d.ts.map +1 -0
- package/lib/codecs/ProtobufCodec.spec.js +176 -0
- package/lib/codecs/ProtobufCodec.spec.js.map +1 -0
- package/lib/codecs/index.d.ts +5 -0
- package/lib/codecs/index.d.ts.map +1 -0
- package/lib/codecs/index.js +21 -0
- package/lib/codecs/index.js.map +1 -0
- package/lib/codecs/migrateIndex.d.ts +24 -0
- package/lib/codecs/migrateIndex.d.ts.map +1 -0
- package/lib/codecs/migrateIndex.js +119 -0
- package/lib/codecs/migrateIndex.js.map +1 -0
- package/lib/codecs/migrateIndex.spec.d.ts +2 -0
- package/lib/codecs/migrateIndex.spec.d.ts.map +1 -0
- package/lib/codecs/migrateIndex.spec.js +151 -0
- package/lib/codecs/migrateIndex.spec.js.map +1 -0
- package/lib/codecs/schemas/index.proto +35 -0
- package/lib/index.d.ts +9 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +9 -1
- package/lib/index.js.map +1 -1
- package/lib/internals/Colorize.d.ts.map +1 -1
- package/lib/internals/Colorize.js +20 -15
- package/lib/internals/Colorize.js.map +1 -1
- package/lib/internals/contentHash.d.ts +14 -0
- package/lib/internals/contentHash.d.ts.map +1 -0
- package/lib/internals/contentHash.js +39 -0
- package/lib/internals/contentHash.js.map +1 -0
- package/lib/internals/contentHash.spec.d.ts +2 -0
- package/lib/internals/contentHash.spec.d.ts.map +1 -0
- package/lib/internals/contentHash.spec.js +53 -0
- package/lib/internals/contentHash.spec.js.map +1 -0
- package/lib/internals/transformersLoader.d.ts +25 -0
- package/lib/internals/transformersLoader.d.ts.map +1 -0
- package/lib/internals/transformersLoader.js +86 -0
- package/lib/internals/transformersLoader.js.map +1 -0
- package/lib/server/IndexManager.d.ts +78 -0
- package/lib/server/IndexManager.d.ts.map +1 -0
- package/lib/server/IndexManager.js +259 -0
- package/lib/server/IndexManager.js.map +1 -0
- package/lib/server/IndexManager.spec.d.ts +2 -0
- package/lib/server/IndexManager.spec.d.ts.map +1 -0
- package/lib/server/IndexManager.spec.js +303 -0
- package/lib/server/IndexManager.spec.js.map +1 -0
- package/lib/server/VectraServer.d.ts +40 -0
- package/lib/server/VectraServer.d.ts.map +1 -0
- package/lib/server/VectraServer.js +151 -0
- package/lib/server/VectraServer.js.map +1 -0
- package/lib/server/VectraServer.spec.d.ts +2 -0
- package/lib/server/VectraServer.spec.d.ts.map +1 -0
- package/lib/server/VectraServer.spec.js +420 -0
- package/lib/server/VectraServer.spec.js.map +1 -0
- package/lib/server/handlers/documentHandlers.d.ts +15 -0
- package/lib/server/handlers/documentHandlers.d.ts.map +1 -0
- package/lib/server/handlers/documentHandlers.js +95 -0
- package/lib/server/handlers/documentHandlers.js.map +1 -0
- package/lib/server/handlers/documentHandlers.spec.d.ts +2 -0
- package/lib/server/handlers/documentHandlers.spec.d.ts.map +1 -0
- package/lib/server/handlers/documentHandlers.spec.js +227 -0
- package/lib/server/handlers/documentHandlers.spec.js.map +1 -0
- package/lib/server/handlers/helpers.d.ts +23 -0
- package/lib/server/handlers/helpers.d.ts.map +1 -0
- package/lib/server/handlers/helpers.js +138 -0
- package/lib/server/handlers/helpers.js.map +1 -0
- package/lib/server/handlers/helpers.spec.d.ts +2 -0
- package/lib/server/handlers/helpers.spec.d.ts.map +1 -0
- package/lib/server/handlers/helpers.spec.js +241 -0
- package/lib/server/handlers/helpers.spec.js.map +1 -0
- package/lib/server/handlers/index.d.ts +8 -0
- package/lib/server/handlers/index.d.ts.map +1 -0
- package/lib/server/handlers/index.js +22 -0
- package/lib/server/handlers/index.js.map +1 -0
- package/lib/server/handlers/indexHandlers.d.ts +14 -0
- package/lib/server/handlers/indexHandlers.d.ts.map +1 -0
- package/lib/server/handlers/indexHandlers.js +85 -0
- package/lib/server/handlers/indexHandlers.js.map +1 -0
- package/lib/server/handlers/itemHandlers.d.ts +34 -0
- package/lib/server/handlers/itemHandlers.d.ts.map +1 -0
- package/lib/server/handlers/itemHandlers.js +166 -0
- package/lib/server/handlers/itemHandlers.js.map +1 -0
- package/lib/server/handlers/itemHandlers.spec.d.ts +2 -0
- package/lib/server/handlers/itemHandlers.spec.d.ts.map +1 -0
- package/lib/server/handlers/itemHandlers.spec.js +366 -0
- package/lib/server/handlers/itemHandlers.spec.js.map +1 -0
- package/lib/server/handlers/lifecycleHandlers.d.ts +11 -0
- package/lib/server/handlers/lifecycleHandlers.d.ts.map +1 -0
- package/lib/server/handlers/lifecycleHandlers.js +31 -0
- package/lib/server/handlers/lifecycleHandlers.js.map +1 -0
- package/lib/server/handlers/lifecycleHandlers.spec.d.ts +2 -0
- package/lib/server/handlers/lifecycleHandlers.spec.d.ts.map +1 -0
- package/lib/server/handlers/lifecycleHandlers.spec.js +97 -0
- package/lib/server/handlers/lifecycleHandlers.spec.js.map +1 -0
- package/lib/server/handlers/queryHandlers.d.ts +27 -0
- package/lib/server/handlers/queryHandlers.d.ts.map +1 -0
- package/lib/server/handlers/queryHandlers.js +135 -0
- package/lib/server/handlers/queryHandlers.js.map +1 -0
- package/lib/server/handlers/queryHandlers.spec.d.ts +2 -0
- package/lib/server/handlers/queryHandlers.spec.d.ts.map +1 -0
- package/lib/server/handlers/queryHandlers.spec.js +296 -0
- package/lib/server/handlers/queryHandlers.spec.js.map +1 -0
- package/lib/server/handlers/statsHandlers.d.ts +17 -0
- package/lib/server/handlers/statsHandlers.d.ts.map +1 -0
- package/lib/server/handlers/statsHandlers.js +81 -0
- package/lib/server/handlers/statsHandlers.js.map +1 -0
- package/lib/server/handlers/statsHandlers.spec.d.ts +2 -0
- package/lib/server/handlers/statsHandlers.spec.d.ts.map +1 -0
- package/lib/server/handlers/statsHandlers.spec.js +138 -0
- package/lib/server/handlers/statsHandlers.spec.js.map +1 -0
- package/lib/server/index.d.ts +4 -0
- package/lib/server/index.d.ts.map +1 -0
- package/lib/server/index.js +23 -0
- package/lib/server/index.js.map +1 -0
- package/lib/storage/FileStorage.d.ts +92 -0
- package/lib/storage/FileStorage.d.ts.map +1 -0
- package/lib/storage/FileStorage.js +3 -0
- package/lib/storage/FileStorage.js.map +1 -0
- package/lib/storage/FileStorageUtilities.d.ts +36 -0
- package/lib/storage/FileStorageUtilities.d.ts.map +1 -0
- package/lib/storage/FileStorageUtilities.js +91 -0
- package/lib/storage/FileStorageUtilities.js.map +1 -0
- package/lib/storage/FileStorageUtilities.spec.d.ts +2 -0
- package/lib/storage/FileStorageUtilities.spec.d.ts.map +1 -0
- package/lib/storage/FileStorageUtilities.spec.js +98 -0
- package/lib/storage/FileStorageUtilities.spec.js.map +1 -0
- package/lib/storage/FileType.d.ts +29 -0
- package/lib/storage/FileType.d.ts.map +1 -0
- package/lib/storage/FileType.js +38 -0
- package/lib/storage/FileType.js.map +1 -0
- package/lib/storage/IndexedDBStorage.d.ts +47 -0
- package/lib/storage/IndexedDBStorage.d.ts.map +1 -0
- package/lib/storage/IndexedDBStorage.js +347 -0
- package/lib/storage/IndexedDBStorage.js.map +1 -0
- package/lib/storage/LocalFileStorage.browser.d.ts +19 -0
- package/lib/storage/LocalFileStorage.browser.d.ts.map +1 -0
- package/lib/storage/LocalFileStorage.browser.js +43 -0
- package/lib/storage/LocalFileStorage.browser.js.map +1 -0
- package/lib/storage/LocalFileStorage.d.ts +23 -0
- package/lib/storage/LocalFileStorage.d.ts.map +1 -0
- package/lib/storage/LocalFileStorage.js +152 -0
- package/lib/storage/LocalFileStorage.js.map +1 -0
- package/lib/storage/LocalFileStorage.spec.d.ts +2 -0
- package/lib/storage/LocalFileStorage.spec.d.ts.map +1 -0
- package/lib/storage/LocalFileStorage.spec.js +249 -0
- package/lib/storage/LocalFileStorage.spec.js.map +1 -0
- package/lib/storage/VirtualFileStorage.d.ts +18 -0
- package/lib/storage/VirtualFileStorage.d.ts.map +1 -0
- package/lib/storage/VirtualFileStorage.js +178 -0
- package/lib/storage/VirtualFileStorage.js.map +1 -0
- package/lib/storage/VirtualFileStorage.spec.d.ts +2 -0
- package/lib/storage/VirtualFileStorage.spec.d.ts.map +1 -0
- package/lib/storage/VirtualFileStorage.spec.js +302 -0
- package/lib/storage/VirtualFileStorage.spec.js.map +1 -0
- package/lib/storage/index.d.ts +6 -0
- package/lib/storage/index.d.ts.map +1 -0
- package/lib/storage/index.js +22 -0
- package/lib/storage/index.js.map +1 -0
- package/lib/templates/templates/csharp/README.md +48 -0
- package/lib/templates/templates/csharp/VectraClient.cs +234 -0
- package/lib/templates/templates/go/README.md +71 -0
- package/lib/templates/templates/go/vectra_client.go +322 -0
- package/lib/templates/templates/java/README.md +81 -0
- package/lib/templates/templates/java/VectraClient.java +232 -0
- package/lib/templates/templates/python/README.md +37 -0
- package/lib/templates/templates/python/vectra_client.py +279 -0
- package/lib/templates/templates/rust/Cargo.toml +14 -0
- package/lib/templates/templates/rust/README.md +39 -0
- package/lib/templates/templates/rust/build.rs +4 -0
- package/lib/templates/templates/rust/lib.rs +284 -0
- package/lib/templates/templates/typescript/README.md +96 -0
- package/lib/templates/templates/typescript/VectraClient.ts +374 -0
- package/lib/templates/typescript/VectraClient.d.ts +114 -0
- package/lib/templates/typescript/VectraClient.d.ts.map +1 -0
- package/lib/templates/typescript/VectraClient.js +328 -0
- package/lib/templates/typescript/VectraClient.js.map +1 -0
- package/lib/types.d.ts +7 -0
- package/lib/types.d.ts.map +1 -1
- package/lib/utils/index.d.ts +2 -0
- package/lib/utils/index.d.ts.map +1 -0
- package/lib/utils/index.js +18 -0
- package/lib/utils/index.js.map +1 -0
- package/lib/utils/pathUtils.d.ts +40 -0
- package/lib/utils/pathUtils.d.ts.map +1 -0
- package/lib/utils/pathUtils.js +98 -0
- package/lib/utils/pathUtils.js.map +1 -0
- package/lib/utils/pathUtils.spec.d.ts +2 -0
- package/lib/utils/pathUtils.spec.d.ts.map +1 -0
- package/lib/utils/pathUtils.spec.js +152 -0
- package/lib/utils/pathUtils.spec.js.map +1 -0
- package/lib/vectra-cli.d.ts.map +1 -1
- package/lib/vectra-cli.generate.spec.d.ts +2 -0
- package/lib/vectra-cli.generate.spec.d.ts.map +1 -0
- package/lib/vectra-cli.generate.spec.js +112 -0
- package/lib/vectra-cli.generate.spec.js.map +1 -0
- package/lib/vectra-cli.js +446 -9
- package/lib/vectra-cli.js.map +1 -1
- package/lib/vectra-cli.spec.d.ts +1 -0
- package/lib/vectra-cli.spec.d.ts.map +1 -0
- package/lib/vectra-cli.spec.js +2 -0
- package/lib/vectra-cli.spec.js.map +1 -0
- package/package.json +98 -25
- package/proto/vectra_service.proto +276 -0
- package/src/BrowserWebFetcher.ts +345 -0
- package/src/FileFetcher.spec.ts +234 -0
- package/src/FileFetcher.ts +37 -25
- package/src/FolderWatcher.spec.ts +542 -0
- package/src/FolderWatcher.ts +418 -0
- package/src/GPT3Tokenizer.spec.ts +50 -0
- package/src/ItemSelector.spec.ts +252 -0
- package/src/ItemSelector.ts +163 -150
- package/src/LocalDocument.spec.ts +211 -0
- package/src/LocalDocument.ts +88 -94
- package/src/LocalDocumentIndex.spec.ts +613 -0
- package/src/LocalDocumentIndex.ts +65 -48
- package/src/LocalDocumentResult.spec.ts +373 -0
- package/src/LocalDocumentResult.ts +489 -319
- package/src/LocalEmbeddings.spec.ts +138 -0
- package/src/LocalEmbeddings.ts +120 -0
- package/src/LocalIndex.spec.ts +741 -163
- package/src/LocalIndex.ts +546 -431
- package/src/OpenAIEmbeddings.spec.ts +354 -0
- package/src/OpenAIEmbeddings.ts +26 -27
- package/src/TextSplitter.spec.ts +320 -65
- package/src/TextSplitter.ts +172 -115
- package/src/TransformersEmbeddings.spec.ts +192 -0
- package/src/TransformersEmbeddings.ts +219 -0
- package/src/TransformersTokenizer.spec.ts +143 -0
- package/src/TransformersTokenizer.ts +45 -0
- package/src/WebFetcher.spec.ts +288 -0
- package/src/WebFetcher.ts +184 -186
- package/src/browser.ts +69 -0
- package/src/codecs/IndexCodec.ts +48 -0
- package/src/codecs/JsonCodec.spec.ts +93 -0
- package/src/codecs/JsonCodec.ts +37 -0
- package/src/codecs/LocalIndex.protobuf.spec.ts +115 -0
- package/src/codecs/ProtobufCodec.spec.ts +189 -0
- package/src/codecs/ProtobufCodec.ts +200 -0
- package/src/codecs/index.ts +4 -0
- package/src/codecs/migrateIndex.spec.ts +176 -0
- package/src/codecs/migrateIndex.ts +125 -0
- package/src/codecs/schemas/index.proto +35 -0
- package/src/index.ts +9 -1
- package/src/internals/Colorize.ts +19 -16
- package/src/internals/contentHash.spec.ts +59 -0
- package/src/internals/contentHash.ts +42 -0
- package/src/internals/transformersLoader.ts +55 -0
- package/src/server/IndexManager.spec.ts +278 -0
- package/src/server/IndexManager.ts +243 -0
- package/src/server/VectraServer.spec.ts +399 -0
- package/src/server/VectraServer.ts +156 -0
- package/src/server/handlers/documentHandlers.spec.ts +202 -0
- package/src/server/handlers/documentHandlers.ts +59 -0
- package/src/server/handlers/helpers.spec.ts +234 -0
- package/src/server/handlers/helpers.ts +93 -0
- package/src/server/handlers/index.ts +7 -0
- package/src/server/handlers/indexHandlers.ts +44 -0
- package/src/server/handlers/itemHandlers.spec.ts +358 -0
- package/src/server/handlers/itemHandlers.ts +140 -0
- package/src/server/handlers/lifecycleHandlers.spec.ts +60 -0
- package/src/server/handlers/lifecycleHandlers.ts +26 -0
- package/src/server/handlers/queryHandlers.spec.ts +280 -0
- package/src/server/handlers/queryHandlers.ts +96 -0
- package/src/server/handlers/statsHandlers.spec.ts +104 -0
- package/src/server/handlers/statsHandlers.ts +38 -0
- package/src/server/index.ts +3 -0
- package/src/storage/FileStorage.ts +105 -0
- package/src/storage/FileStorageUtilities.spec.ts +106 -0
- package/src/storage/FileStorageUtilities.ts +77 -0
- package/src/storage/FileType.ts +61 -0
- package/src/storage/IndexedDBStorage.ts +365 -0
- package/src/storage/LocalFileStorage.browser.ts +52 -0
- package/src/storage/LocalFileStorage.spec.ts +292 -0
- package/src/storage/LocalFileStorage.ts +98 -0
- package/src/storage/VirtualFileStorage.spec.ts +307 -0
- package/src/storage/VirtualFileStorage.ts +169 -0
- package/src/storage/index.ts +5 -0
- package/src/templates/csharp/README.md +48 -0
- package/src/templates/csharp/VectraClient.cs +234 -0
- package/src/templates/go/README.md +71 -0
- package/src/templates/go/vectra_client.go +322 -0
- package/src/templates/java/README.md +81 -0
- package/src/templates/java/VectraClient.java +232 -0
- package/src/templates/python/README.md +37 -0
- package/src/templates/python/vectra_client.py +279 -0
- package/src/templates/rust/Cargo.toml +14 -0
- package/src/templates/rust/README.md +39 -0
- package/src/templates/rust/build.rs +4 -0
- package/src/templates/rust/lib.rs +284 -0
- package/src/templates/typescript/README.md +96 -0
- package/src/templates/typescript/VectraClient.ts +374 -0
- package/src/types.ts +131 -123
- package/src/utils/index.ts +1 -0
- package/src/utils/pathUtils.spec.ts +148 -0
- package/src/utils/pathUtils.ts +106 -0
- package/src/vectra-cli.generate.spec.ts +72 -0
- package/src/vectra-cli.spec.ts +0 -0
- package/src/vectra-cli.ts +687 -246
- package/README.draft.md +0 -499
- package/README.draft.outline.md +0 -160
- package/README.research.md +0 -2159
package/README.md
CHANGED
|
@@ -1,100 +1,93 @@
|
|
|
1
|
-
# Vectra
|
|
1
|
+
# Vectra: a local vector database
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/vectra)
|
|
4
|
+
[](https://github.com/Stevenic/vectra/actions/workflows/ci.yml)
|
|
5
|
+
[](https://coveralls.io/github/Stevenic/vectra?branch=main)
|
|
6
|
+
[](https://opensource.org/licenses/MIT)
|
|
7
|
+
[](#agent-ready)
|
|
4
8
|
|
|
5
|
-
|
|
9
|
+
Vectra is a local, file-backed, in-memory vector database with an optional gRPC server for cross-language access. Each index is a folder on disk — queries use MongoDB-style metadata filtering and cosine similarity ranking, with sub-millisecond latency for small indexes.
|
|
6
10
|
|
|
7
|
-
|
|
11
|
+
## What's New in Vectra 0.14+
|
|
8
12
|
|
|
9
|
-
|
|
13
|
+
- **Browser & Electron support** — `vectra/browser` entry point with `IndexedDBStorage` and `TransformersEmbeddings`
|
|
14
|
+
- **Local embeddings** — `LocalEmbeddings` and `TransformersEmbeddings` run HuggingFace models with no API key
|
|
15
|
+
- **Protocol Buffers** — opt-in binary format, 40-50% smaller files
|
|
16
|
+
- **gRPC server** — `vectra serve` exposes 19 RPCs for cross-language access
|
|
17
|
+
- **FolderWatcher** — auto-sync directories into a document index
|
|
18
|
+
- **Language bindings** — `vectra generate` scaffolds clients for 6 languages
|
|
19
|
+
- **0.15: Performance improvements** — skip-if-unchanged document upserts, shallow-clone transactional snapshots, heap-based top-K query ranking, parallel metadata loads, and O(N) batch chunk deletion
|
|
10
20
|
|
|
11
|
-
|
|
21
|
+
See the [Changelog](https://stevenic.github.io/vectra/changelog) for breaking changes and migration details.
|
|
12
22
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
- [vectra-py](https://github.com/BMS-geodev/vectra-py) - Python version of Vectra.
|
|
16
|
-
|
|
17
|
-
## Installation
|
|
23
|
+
## Install
|
|
18
24
|
|
|
19
|
-
```
|
|
20
|
-
|
|
25
|
+
```sh
|
|
26
|
+
npm install vectra
|
|
21
27
|
```
|
|
22
28
|
|
|
23
|
-
##
|
|
29
|
+
## Quick Example
|
|
24
30
|
|
|
25
|
-
|
|
31
|
+
```ts
|
|
32
|
+
import { LocalDocumentIndex, OpenAIEmbeddings } from 'vectra';
|
|
26
33
|
|
|
27
|
-
|
|
28
|
-
|
|
34
|
+
const docs = new LocalDocumentIndex({
|
|
35
|
+
folderPath: './my-index',
|
|
36
|
+
embeddings: new OpenAIEmbeddings({
|
|
37
|
+
apiKey: process.env.OPENAI_API_KEY!,
|
|
38
|
+
model: 'text-embedding-3-small',
|
|
39
|
+
maxTokens: 8000,
|
|
40
|
+
}),
|
|
41
|
+
});
|
|
29
42
|
|
|
30
|
-
|
|
31
|
-
|
|
43
|
+
if (!(await docs.isIndexCreated())) {
|
|
44
|
+
await docs.createIndex({ version: 1 });
|
|
45
|
+
}
|
|
32
46
|
|
|
33
|
-
|
|
47
|
+
await docs.upsertDocument('doc://readme', 'Vectra is a local vector database...', 'md');
|
|
34
48
|
|
|
35
|
-
|
|
36
|
-
if (
|
|
37
|
-
|
|
49
|
+
const results = await docs.queryDocuments('What is Vectra?', { maxDocuments: 5 });
|
|
50
|
+
if (results.length > 0) {
|
|
51
|
+
const sections = await results[0].renderSections(2000, 1, true);
|
|
52
|
+
console.log(sections[0].text);
|
|
38
53
|
}
|
|
39
54
|
```
|
|
40
55
|
|
|
41
|
-
|
|
56
|
+
## Documentation
|
|
42
57
|
|
|
43
|
-
|
|
44
|
-
import { OpenAI } from 'openai';
|
|
58
|
+
Full docs at **[stevenic.github.io/vectra](https://stevenic.github.io/vectra/)**:
|
|
45
59
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
60
|
+
| Guide | Description |
|
|
61
|
+
|-------|-------------|
|
|
62
|
+
| [Getting Started](https://stevenic.github.io/vectra/getting-started) | Install, requirements, quick start with both index types |
|
|
63
|
+
| [Core Concepts](https://stevenic.github.io/vectra/core-concepts) | Index types, metadata filtering, on-disk layout |
|
|
64
|
+
| [Embeddings Guide](https://stevenic.github.io/vectra/embeddings) | Choose and configure an embeddings provider |
|
|
65
|
+
| [Document Indexing](https://stevenic.github.io/vectra/documents) | Chunking, retrieval, hybrid search, FolderWatcher |
|
|
66
|
+
| [CLI Reference](https://stevenic.github.io/vectra/cli) | All CLI commands, flags, and provider config |
|
|
67
|
+
| [API Reference](https://stevenic.github.io/vectra/api-reference) | TypeScript API overview |
|
|
68
|
+
| [Best Practices](https://stevenic.github.io/vectra/best-practices) | Performance tuning, troubleshooting |
|
|
69
|
+
| [Storage](https://stevenic.github.io/vectra/storage) | Pluggable backends, browser/IndexedDB, serialization formats |
|
|
70
|
+
| [gRPC Server](https://stevenic.github.io/vectra/grpc) | Cross-language access and language bindings |
|
|
71
|
+
| [Changelog](https://stevenic.github.io/vectra/changelog) | Breaking changes and migration guides |
|
|
72
|
+
| [Tutorials](https://stevenic.github.io/vectra/tutorials/) | RAG pipeline, browser app, gRPC, custom storage, folder sync |
|
|
73
|
+
| [Samples](./samples/) | Runnable examples: quickstart, RAG, browser, SQLite storage, gRPC, folder watcher |
|
|
49
74
|
|
|
50
|
-
|
|
51
|
-
const response = await openai.embeddings.create({
|
|
52
|
-
'model': 'text-embedding-ada-002',
|
|
53
|
-
'input': text,
|
|
54
|
-
});
|
|
55
|
-
return response.data[0].embedding;
|
|
56
|
-
}
|
|
75
|
+
## Agent Ready
|
|
57
76
|
|
|
58
|
-
|
|
59
|
-
await index.insertItem({
|
|
60
|
-
vector: await getVector(text),
|
|
61
|
-
metadata: { text },
|
|
62
|
-
});
|
|
63
|
-
}
|
|
77
|
+
Vectra ships an [`llms.txt`](https://github.com/Stevenic/vectra/blob/main/llms.txt) file that gives coding agents everything they need to integrate Vectra into your project. Point your agent at it and let it do the work:
|
|
64
78
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
await addItem('blue');
|
|
79
|
+
```
|
|
80
|
+
Read the llms.txt file at https://raw.githubusercontent.com/Stevenic/vectra/main/llms.txt
|
|
81
|
+
and then add Vectra support to this project. Use LocalDocumentIndex for document
|
|
82
|
+
storage and retrieval.
|
|
70
83
|
```
|
|
71
84
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
```typescript
|
|
75
|
-
async function query(text: string) {
|
|
76
|
-
const vector = await getVector(text);
|
|
77
|
-
const results = await index.queryItems(vector, 3);
|
|
78
|
-
if (results.length > 0) {
|
|
79
|
-
for (const result of results) {
|
|
80
|
-
console.log(`[${result.score}] ${result.item.metadata.text}`);
|
|
81
|
-
}
|
|
82
|
-
} else {
|
|
83
|
-
console.log(`No results found.`);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
85
|
+
The `llms.txt` file covers all exports, index types, CLI commands, gRPC bindings, and on-disk format — enough for any coding agent to scaffold a working integration without browsing docs.
|
|
86
86
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
[
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
await query('banana');
|
|
95
|
-
/*
|
|
96
|
-
[0.9033128691220631] apple
|
|
97
|
-
[0.8493374123092652] oranges
|
|
98
|
-
[0.8415324469533297] blue
|
|
99
|
-
*/
|
|
100
|
-
```
|
|
87
|
+
## License
|
|
88
|
+
|
|
89
|
+
MIT License. See [LICENSE](LICENSE).
|
|
90
|
+
|
|
91
|
+
## Contributing
|
|
92
|
+
|
|
93
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines. Please review our [Code of Conduct](CODE_OF_CONDUCT.md).
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { TextFetcher } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Configuration options for BrowserWebFetcher.
|
|
4
|
+
*/
|
|
5
|
+
export interface BrowserWebFetcherConfig {
|
|
6
|
+
/**
|
|
7
|
+
* Optional. Whether to convert HTML to a simplified text/markdown format.
|
|
8
|
+
* @remarks
|
|
9
|
+
* Defaults to `true`.
|
|
10
|
+
*/
|
|
11
|
+
htmlToMarkdown?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Optional. Additional headers to include in requests.
|
|
14
|
+
*/
|
|
15
|
+
headers?: Record<string, string>;
|
|
16
|
+
/**
|
|
17
|
+
* Optional. Request mode for fetch.
|
|
18
|
+
* @remarks
|
|
19
|
+
* Defaults to 'cors'.
|
|
20
|
+
*/
|
|
21
|
+
mode?: RequestMode;
|
|
22
|
+
/**
|
|
23
|
+
* Optional. Credentials mode for fetch.
|
|
24
|
+
* @remarks
|
|
25
|
+
* Defaults to 'same-origin'.
|
|
26
|
+
*/
|
|
27
|
+
credentials?: RequestCredentials;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Browser-compatible web fetcher using the native Fetch API.
|
|
31
|
+
* @remarks
|
|
32
|
+
* This fetcher works in browsers and Electron renderer processes.
|
|
33
|
+
* Uses DOMParser instead of cheerio for HTML parsing.
|
|
34
|
+
*/
|
|
35
|
+
export declare class BrowserWebFetcher implements TextFetcher {
|
|
36
|
+
private readonly _config;
|
|
37
|
+
private static readonly ALLOWED_CONTENT_TYPES;
|
|
38
|
+
/**
|
|
39
|
+
* Creates a new `BrowserWebFetcher` instance.
|
|
40
|
+
* @param config Optional configuration options.
|
|
41
|
+
*/
|
|
42
|
+
constructor(config?: BrowserWebFetcherConfig);
|
|
43
|
+
/**
|
|
44
|
+
* Fetches content from a URL and passes it to the document handler.
|
|
45
|
+
* @param uri URL to fetch.
|
|
46
|
+
* @param onDocument Callback to handle the fetched document.
|
|
47
|
+
* @returns Promise that resolves to the return value of onDocument.
|
|
48
|
+
*/
|
|
49
|
+
fetch(uri: string, onDocument: (uri: string, text: string, docType?: string) => Promise<boolean>): Promise<boolean>;
|
|
50
|
+
/**
|
|
51
|
+
* Converts HTML to a simplified markdown-like format using DOMParser.
|
|
52
|
+
*/
|
|
53
|
+
private htmlToMarkdown;
|
|
54
|
+
/**
|
|
55
|
+
* Recursively processes DOM nodes to extract text content.
|
|
56
|
+
*/
|
|
57
|
+
private processNode;
|
|
58
|
+
/**
|
|
59
|
+
* Processes child nodes of an element.
|
|
60
|
+
*/
|
|
61
|
+
private processChildren;
|
|
62
|
+
/**
|
|
63
|
+
* Gets clean text content from an element.
|
|
64
|
+
*/
|
|
65
|
+
private getTextContent;
|
|
66
|
+
/**
|
|
67
|
+
* Processes a table element to markdown format.
|
|
68
|
+
*/
|
|
69
|
+
private processTable;
|
|
70
|
+
/**
|
|
71
|
+
* Maps MIME type to document type.
|
|
72
|
+
*/
|
|
73
|
+
private getDocTypeFromMime;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=BrowserWebFetcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BrowserWebFetcher.d.ts","sourceRoot":"","sources":["../src/BrowserWebFetcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACpC;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC;;;;OAIG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;IAEnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,kBAAkB,CAAC;CACpC;AAED;;;;;GAKG;AACH,qBAAa,iBAAkB,YAAW,WAAW;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAElD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAQ3C;IAEF;;;OAGG;gBACS,MAAM,CAAC,EAAE,uBAAuB;IAS5C;;;;;OAKG;IACG,KAAK,CACP,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAC9E,OAAO,CAAC,OAAO,CAAC;IAiCnB;;OAEG;IACH,OAAO,CAAC,cAAc;IA2CtB;;OAEG;IACH,OAAO,CAAC,WAAW;IA2HnB;;OAEG;IACH,OAAO,CAAC,eAAe;IAMvB;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;IACH,OAAO,CAAC,YAAY;IAwBpB;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAmB7B"}
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.BrowserWebFetcher = void 0;
|
|
13
|
+
/**
|
|
14
|
+
* Browser-compatible web fetcher using the native Fetch API.
|
|
15
|
+
* @remarks
|
|
16
|
+
* This fetcher works in browsers and Electron renderer processes.
|
|
17
|
+
* Uses DOMParser instead of cheerio for HTML parsing.
|
|
18
|
+
*/
|
|
19
|
+
class BrowserWebFetcher {
|
|
20
|
+
/**
|
|
21
|
+
* Creates a new `BrowserWebFetcher` instance.
|
|
22
|
+
* @param config Optional configuration options.
|
|
23
|
+
*/
|
|
24
|
+
constructor(config) {
|
|
25
|
+
this._config = Object.assign({ htmlToMarkdown: true, mode: 'cors', credentials: 'same-origin' }, config);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Fetches content from a URL and passes it to the document handler.
|
|
29
|
+
* @param uri URL to fetch.
|
|
30
|
+
* @param onDocument Callback to handle the fetched document.
|
|
31
|
+
* @returns Promise that resolves to the return value of onDocument.
|
|
32
|
+
*/
|
|
33
|
+
fetch(uri, onDocument) {
|
|
34
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
35
|
+
const response = yield fetch(uri, {
|
|
36
|
+
method: 'GET',
|
|
37
|
+
headers: this._config.headers,
|
|
38
|
+
mode: this._config.mode,
|
|
39
|
+
credentials: this._config.credentials
|
|
40
|
+
});
|
|
41
|
+
if (!response.ok) {
|
|
42
|
+
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
43
|
+
}
|
|
44
|
+
const contentType = response.headers.get('content-type') || 'text/plain';
|
|
45
|
+
const mimeType = contentType.split(';')[0].trim().toLowerCase();
|
|
46
|
+
// Validate content type
|
|
47
|
+
if (!BrowserWebFetcher.ALLOWED_CONTENT_TYPES.some(allowed => mimeType.includes(allowed))) {
|
|
48
|
+
throw new Error(`Unsupported content type: ${contentType}`);
|
|
49
|
+
}
|
|
50
|
+
const text = yield response.text();
|
|
51
|
+
// Handle HTML content
|
|
52
|
+
if (mimeType.includes('text/html') && this._config.htmlToMarkdown) {
|
|
53
|
+
const markdown = this.htmlToMarkdown(text, uri);
|
|
54
|
+
return onDocument(uri, markdown, 'md');
|
|
55
|
+
}
|
|
56
|
+
// Determine doc type from content type
|
|
57
|
+
const docType = this.getDocTypeFromMime(mimeType);
|
|
58
|
+
return onDocument(uri, text, docType);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Converts HTML to a simplified markdown-like format using DOMParser.
|
|
63
|
+
*/
|
|
64
|
+
htmlToMarkdown(html, baseUrl) {
|
|
65
|
+
const parser = new DOMParser();
|
|
66
|
+
const doc = parser.parseFromString(html, 'text/html');
|
|
67
|
+
// Remove unwanted elements
|
|
68
|
+
const removeSelectors = ['script', 'style', 'noscript', 'iframe', 'svg', 'canvas'];
|
|
69
|
+
removeSelectors.forEach(selector => {
|
|
70
|
+
doc.querySelectorAll(selector).forEach(el => el.remove());
|
|
71
|
+
});
|
|
72
|
+
// Convert relative URLs to absolute
|
|
73
|
+
doc.querySelectorAll('a[href]').forEach(el => {
|
|
74
|
+
const href = el.getAttribute('href');
|
|
75
|
+
if (href && !href.startsWith('http') && !href.startsWith('//') && !href.startsWith('#')) {
|
|
76
|
+
try {
|
|
77
|
+
el.setAttribute('href', new URL(href, baseUrl).toString());
|
|
78
|
+
}
|
|
79
|
+
catch (_a) {
|
|
80
|
+
// Leave as-is if URL parsing fails
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
// Process the body
|
|
85
|
+
const body = doc.body;
|
|
86
|
+
if (!body) {
|
|
87
|
+
return html;
|
|
88
|
+
}
|
|
89
|
+
const lines = [];
|
|
90
|
+
this.processNode(body, lines);
|
|
91
|
+
// Clean up the result
|
|
92
|
+
let result = lines.join('\n');
|
|
93
|
+
// Remove excessive newlines
|
|
94
|
+
result = result.replace(/\n{3,}/g, '\n\n');
|
|
95
|
+
// Trim leading/trailing whitespace
|
|
96
|
+
result = result.trim();
|
|
97
|
+
return result;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Recursively processes DOM nodes to extract text content.
|
|
101
|
+
*/
|
|
102
|
+
processNode(node, lines) {
|
|
103
|
+
var _a;
|
|
104
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
105
|
+
const text = (_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim();
|
|
106
|
+
if (text) {
|
|
107
|
+
lines.push(text);
|
|
108
|
+
}
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
const el = node;
|
|
115
|
+
const tagName = el.tagName.toLowerCase();
|
|
116
|
+
// Handle specific elements
|
|
117
|
+
switch (tagName) {
|
|
118
|
+
case 'h1':
|
|
119
|
+
lines.push('');
|
|
120
|
+
lines.push(`# ${this.getTextContent(el)}`);
|
|
121
|
+
lines.push('');
|
|
122
|
+
return;
|
|
123
|
+
case 'h2':
|
|
124
|
+
lines.push('');
|
|
125
|
+
lines.push(`## ${this.getTextContent(el)}`);
|
|
126
|
+
lines.push('');
|
|
127
|
+
return;
|
|
128
|
+
case 'h3':
|
|
129
|
+
lines.push('');
|
|
130
|
+
lines.push(`### ${this.getTextContent(el)}`);
|
|
131
|
+
lines.push('');
|
|
132
|
+
return;
|
|
133
|
+
case 'h4':
|
|
134
|
+
lines.push('');
|
|
135
|
+
lines.push(`#### ${this.getTextContent(el)}`);
|
|
136
|
+
lines.push('');
|
|
137
|
+
return;
|
|
138
|
+
case 'h5':
|
|
139
|
+
lines.push('');
|
|
140
|
+
lines.push(`##### ${this.getTextContent(el)}`);
|
|
141
|
+
lines.push('');
|
|
142
|
+
return;
|
|
143
|
+
case 'h6':
|
|
144
|
+
lines.push('');
|
|
145
|
+
lines.push(`###### ${this.getTextContent(el)}`);
|
|
146
|
+
lines.push('');
|
|
147
|
+
return;
|
|
148
|
+
case 'p':
|
|
149
|
+
lines.push('');
|
|
150
|
+
this.processChildren(el, lines);
|
|
151
|
+
lines.push('');
|
|
152
|
+
return;
|
|
153
|
+
case 'br':
|
|
154
|
+
lines.push('');
|
|
155
|
+
return;
|
|
156
|
+
case 'hr':
|
|
157
|
+
lines.push('');
|
|
158
|
+
lines.push('---');
|
|
159
|
+
lines.push('');
|
|
160
|
+
return;
|
|
161
|
+
case 'a':
|
|
162
|
+
const href = el.getAttribute('href');
|
|
163
|
+
const text = this.getTextContent(el);
|
|
164
|
+
if (href && text) {
|
|
165
|
+
lines.push(`[${text}](${href})`);
|
|
166
|
+
}
|
|
167
|
+
else if (text) {
|
|
168
|
+
lines.push(text);
|
|
169
|
+
}
|
|
170
|
+
return;
|
|
171
|
+
case 'strong':
|
|
172
|
+
case 'b':
|
|
173
|
+
lines.push(`**${this.getTextContent(el)}**`);
|
|
174
|
+
return;
|
|
175
|
+
case 'em':
|
|
176
|
+
case 'i':
|
|
177
|
+
lines.push(`*${this.getTextContent(el)}*`);
|
|
178
|
+
return;
|
|
179
|
+
case 'code':
|
|
180
|
+
lines.push(`\`${this.getTextContent(el)}\``);
|
|
181
|
+
return;
|
|
182
|
+
case 'pre':
|
|
183
|
+
lines.push('');
|
|
184
|
+
lines.push('```');
|
|
185
|
+
lines.push(this.getTextContent(el));
|
|
186
|
+
lines.push('```');
|
|
187
|
+
lines.push('');
|
|
188
|
+
return;
|
|
189
|
+
case 'blockquote':
|
|
190
|
+
lines.push('');
|
|
191
|
+
const quoteText = this.getTextContent(el);
|
|
192
|
+
quoteText.split('\n').forEach(line => {
|
|
193
|
+
lines.push(`> ${line}`);
|
|
194
|
+
});
|
|
195
|
+
lines.push('');
|
|
196
|
+
return;
|
|
197
|
+
case 'ul':
|
|
198
|
+
case 'ol':
|
|
199
|
+
lines.push('');
|
|
200
|
+
el.querySelectorAll(':scope > li').forEach((li, index) => {
|
|
201
|
+
const prefix = tagName === 'ol' ? `${index + 1}.` : '-';
|
|
202
|
+
lines.push(`${prefix} ${this.getTextContent(li)}`);
|
|
203
|
+
});
|
|
204
|
+
lines.push('');
|
|
205
|
+
return;
|
|
206
|
+
case 'table':
|
|
207
|
+
lines.push('');
|
|
208
|
+
this.processTable(el, lines);
|
|
209
|
+
lines.push('');
|
|
210
|
+
return;
|
|
211
|
+
case 'img':
|
|
212
|
+
const alt = el.getAttribute('alt') || 'image';
|
|
213
|
+
const src = el.getAttribute('src');
|
|
214
|
+
if (src) {
|
|
215
|
+
lines.push(``);
|
|
216
|
+
}
|
|
217
|
+
return;
|
|
218
|
+
default:
|
|
219
|
+
// For other elements, process children
|
|
220
|
+
this.processChildren(el, lines);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Processes child nodes of an element.
|
|
225
|
+
*/
|
|
226
|
+
processChildren(el, lines) {
|
|
227
|
+
el.childNodes.forEach(child => {
|
|
228
|
+
this.processNode(child, lines);
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Gets clean text content from an element.
|
|
233
|
+
*/
|
|
234
|
+
getTextContent(el) {
|
|
235
|
+
return (el.textContent || '').replace(/\s+/g, ' ').trim();
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Processes a table element to markdown format.
|
|
239
|
+
*/
|
|
240
|
+
processTable(table, lines) {
|
|
241
|
+
const rows = table.querySelectorAll('tr');
|
|
242
|
+
let isFirstRow = true;
|
|
243
|
+
rows.forEach(row => {
|
|
244
|
+
const cells = row.querySelectorAll('th, td');
|
|
245
|
+
const cellContents = [];
|
|
246
|
+
cells.forEach(cell => {
|
|
247
|
+
cellContents.push(this.getTextContent(cell));
|
|
248
|
+
});
|
|
249
|
+
if (cellContents.length > 0) {
|
|
250
|
+
lines.push(`| ${cellContents.join(' | ')} |`);
|
|
251
|
+
// Add separator after header row
|
|
252
|
+
if (isFirstRow) {
|
|
253
|
+
lines.push(`| ${cellContents.map(() => '---').join(' | ')} |`);
|
|
254
|
+
isFirstRow = false;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Maps MIME type to document type.
|
|
261
|
+
*/
|
|
262
|
+
getDocTypeFromMime(mimeType) {
|
|
263
|
+
const mimeMap = {
|
|
264
|
+
'text/html': 'html',
|
|
265
|
+
'text/plain': undefined,
|
|
266
|
+
'text/markdown': 'md',
|
|
267
|
+
'text/xml': 'xml',
|
|
268
|
+
'application/json': 'json',
|
|
269
|
+
'application/xml': 'xml',
|
|
270
|
+
'application/javascript': 'js'
|
|
271
|
+
};
|
|
272
|
+
for (const [mime, docType] of Object.entries(mimeMap)) {
|
|
273
|
+
if (mimeType.includes(mime)) {
|
|
274
|
+
return docType;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
return undefined;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
exports.BrowserWebFetcher = BrowserWebFetcher;
|
|
281
|
+
BrowserWebFetcher.ALLOWED_CONTENT_TYPES = [
|
|
282
|
+
'text/html',
|
|
283
|
+
'application/json',
|
|
284
|
+
'application/xml',
|
|
285
|
+
'application/javascript',
|
|
286
|
+
'text/plain',
|
|
287
|
+
'text/markdown',
|
|
288
|
+
'text/xml'
|
|
289
|
+
];
|
|
290
|
+
//# sourceMappingURL=BrowserWebFetcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BrowserWebFetcher.js","sourceRoot":"","sources":["../src/BrowserWebFetcher.ts"],"names":[],"mappings":"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"}
|
package/lib/FileFetcher.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileFetcher.d.ts","sourceRoot":"","sources":["../src/FileFetcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAItC,qBAAa,WAAY,YAAW,WAAW;
|
|
1
|
+
{"version":3,"file":"FileFetcher.d.ts","sourceRoot":"","sources":["../src/FileFetcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAItC,qBAAa,WAAY,YAAW,WAAW;IAChC,KAAK,CAChB,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,GACxF,OAAO,CAAC,OAAO,CAAC;CAkCpB"}
|
package/lib/FileFetcher.js
CHANGED
|
@@ -41,36 +41,46 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
41
41
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
42
42
|
});
|
|
43
43
|
};
|
|
44
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
45
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
46
|
+
};
|
|
44
47
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
48
|
exports.FileFetcher = void 0;
|
|
46
|
-
const
|
|
47
|
-
const path = __importStar(require("path"));
|
|
49
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
50
|
+
const path = __importStar(require("node:path"));
|
|
48
51
|
class FileFetcher {
|
|
49
52
|
fetch(uri, onDocument) {
|
|
50
53
|
return __awaiter(this, void 0, void 0, function* () {
|
|
51
54
|
// Does path exist and is it a directory?
|
|
52
|
-
let
|
|
55
|
+
let stat;
|
|
53
56
|
try {
|
|
54
|
-
|
|
55
|
-
isDirectory = stat.isDirectory();
|
|
57
|
+
stat = yield node_fs_1.default.promises.stat(uri);
|
|
56
58
|
}
|
|
57
59
|
catch (_a) {
|
|
60
|
+
// Non-existent path: treat as no-op success
|
|
58
61
|
return true;
|
|
59
62
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
const
|
|
63
|
-
|
|
63
|
+
if (stat.isDirectory()) {
|
|
64
|
+
// Read directory and recurse. If any child returns false, aggregate to false.
|
|
65
|
+
const entries = yield node_fs_1.default.promises.readdir(uri);
|
|
66
|
+
let allOk = true;
|
|
67
|
+
for (const file of entries) {
|
|
64
68
|
const filePath = path.join(uri, file);
|
|
65
|
-
yield this.fetch(filePath, onDocument);
|
|
69
|
+
const ok = yield this.fetch(filePath, onDocument);
|
|
70
|
+
if (!ok) {
|
|
71
|
+
allOk = false;
|
|
72
|
+
}
|
|
66
73
|
}
|
|
67
|
-
return
|
|
74
|
+
return allOk;
|
|
68
75
|
}
|
|
69
76
|
else {
|
|
70
|
-
// Read file and
|
|
71
|
-
const text = yield
|
|
72
|
-
const
|
|
73
|
-
|
|
77
|
+
// Read file and invoke onDocument
|
|
78
|
+
const text = yield node_fs_1.default.promises.readFile(uri, 'utf8');
|
|
79
|
+
const ext = path.extname(uri);
|
|
80
|
+
const docType = ext && ext.length > 1
|
|
81
|
+
? ext.slice(1).toLowerCase()
|
|
82
|
+
: path.basename(uri).toLowerCase();
|
|
83
|
+
return yield onDocument(uri, text, docType);
|
|
74
84
|
}
|
|
75
85
|
});
|
|
76
86
|
}
|
package/lib/FileFetcher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileFetcher.js","sourceRoot":"","sources":["../src/FileFetcher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FileFetcher.js","sourceRoot":"","sources":["../src/FileFetcher.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,sDAAyB;AACzB,gDAAkC;AAElC,MAAa,WAAW;IACT,KAAK,CAChB,GAAW,EACX,UAAyF;;YAEzF,yCAAyC;YACzC,IAAI,IAAI,CAAC;YACT,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,iBAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrC,CAAC;YAAC,WAAM,CAAC;gBACP,4CAA4C;gBAC5C,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACvB,8EAA8E;gBAC9E,MAAM,OAAO,GAAG,MAAM,iBAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC/C,IAAI,KAAK,GAAG,IAAI,CAAC;gBACjB,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;oBAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;oBACtC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;oBAClD,IAAI,CAAC,EAAE,EAAE,CAAC;wBACR,KAAK,GAAG,KAAK,CAAC;oBAChB,CAAC;gBACH,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,kCAAkC;gBAClC,MAAM,IAAI,GAAG,MAAM,iBAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBACrD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC9B,MAAM,OAAO,GACX,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;oBACnB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;oBAC5B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;gBAEvC,OAAO,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;KAAA;CACF;AAtCD,kCAsCC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileFetcher.spec.d.ts","sourceRoot":"","sources":["../src/FileFetcher.spec.ts"],"names":[],"mappings":""}
|