vectra 0.12.3 → 0.14.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 +92 -100
- 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 +91 -0
- package/lib/FolderWatcher.d.ts.map +1 -0
- package/lib/FolderWatcher.js +304 -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 +308 -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 +20 -0
- package/lib/LocalDocumentIndex.d.ts.map +1 -1
- package/lib/LocalDocumentIndex.js +16 -52
- 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 +494 -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 +27 -18
- package/lib/LocalIndex.d.ts.map +1 -1
- package/lib/LocalIndex.js +109 -105
- package/lib/LocalIndex.js.map +1 -1
- package/lib/LocalIndex.spec.js +434 -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 +176 -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 +198 -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 +37 -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 +66 -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 +225 -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 +155 -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 +34 -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/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/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 +322 -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/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/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/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/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/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/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/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 +89 -16
- 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 +288 -0
- package/src/FolderWatcher.ts +304 -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 +481 -0
- package/src/LocalDocumentIndex.ts +39 -40
- 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 +808 -323
- package/src/LocalIndex.ts +479 -430
- 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 +188 -0
- package/src/TransformersEmbeddings.ts +232 -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 +40 -0
- package/src/codecs/JsonCodec.spec.ts +70 -0
- package/src/codecs/JsonCodec.ts +37 -0
- package/src/codecs/LocalIndex.protobuf.spec.ts +115 -0
- package/src/codecs/ProtobufCodec.spec.ts +166 -0
- package/src/codecs/ProtobufCodec.ts +193 -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 +34 -0
- package/src/index.ts +9 -1
- package/src/internals/Colorize.ts +19 -16
- package/src/server/IndexManager.ts +243 -0
- package/src/server/VectraServer.spec.ts +303 -0
- package/src/server/VectraServer.ts +156 -0
- package/src/server/handlers/documentHandlers.ts +59 -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.ts +140 -0
- package/src/server/handlers/lifecycleHandlers.ts +26 -0
- package/src/server/handlers/queryHandlers.ts +96 -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.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/lib/browser.js
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Browser entry point for Vectra.
|
|
4
|
+
*
|
|
5
|
+
* This module exports only browser-compatible components.
|
|
6
|
+
* Node-specific components (LocalFileStorage, FileFetcher, WebFetcher) are excluded.
|
|
7
|
+
*
|
|
8
|
+
* For browser usage:
|
|
9
|
+
* - Use `VirtualFileStorage` for in-memory storage (ephemeral)
|
|
10
|
+
* - Use `IndexedDBStorage` for persistent browser storage
|
|
11
|
+
* - Use `BrowserWebFetcher` for fetching web content
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.pathUtils = exports.BrowserWebFetcher = exports.IndexedDBStorage = exports.VirtualFileStorage = exports.FileStorageUtilities = exports.ItemSelector = exports.TransformersTokenizer = exports.TransformersEmbeddings = exports.OpenAIEmbeddings = exports.GPT3Tokenizer = exports.TextSplitter = exports.LocalDocumentResult = exports.LocalDocument = exports.LocalDocumentIndex = exports.LocalIndex = void 0;
|
|
15
|
+
// Core index classes
|
|
16
|
+
var LocalIndex_1 = require("./LocalIndex");
|
|
17
|
+
Object.defineProperty(exports, "LocalIndex", { enumerable: true, get: function () { return LocalIndex_1.LocalIndex; } });
|
|
18
|
+
var LocalDocumentIndex_1 = require("./LocalDocumentIndex");
|
|
19
|
+
Object.defineProperty(exports, "LocalDocumentIndex", { enumerable: true, get: function () { return LocalDocumentIndex_1.LocalDocumentIndex; } });
|
|
20
|
+
// Document classes
|
|
21
|
+
var LocalDocument_1 = require("./LocalDocument");
|
|
22
|
+
Object.defineProperty(exports, "LocalDocument", { enumerable: true, get: function () { return LocalDocument_1.LocalDocument; } });
|
|
23
|
+
var LocalDocumentResult_1 = require("./LocalDocumentResult");
|
|
24
|
+
Object.defineProperty(exports, "LocalDocumentResult", { enumerable: true, get: function () { return LocalDocumentResult_1.LocalDocumentResult; } });
|
|
25
|
+
// Text processing
|
|
26
|
+
var TextSplitter_1 = require("./TextSplitter");
|
|
27
|
+
Object.defineProperty(exports, "TextSplitter", { enumerable: true, get: function () { return TextSplitter_1.TextSplitter; } });
|
|
28
|
+
var GPT3Tokenizer_1 = require("./GPT3Tokenizer");
|
|
29
|
+
Object.defineProperty(exports, "GPT3Tokenizer", { enumerable: true, get: function () { return GPT3Tokenizer_1.GPT3Tokenizer; } });
|
|
30
|
+
// Embeddings
|
|
31
|
+
var OpenAIEmbeddings_1 = require("./OpenAIEmbeddings");
|
|
32
|
+
Object.defineProperty(exports, "OpenAIEmbeddings", { enumerable: true, get: function () { return OpenAIEmbeddings_1.OpenAIEmbeddings; } });
|
|
33
|
+
var TransformersEmbeddings_1 = require("./TransformersEmbeddings");
|
|
34
|
+
Object.defineProperty(exports, "TransformersEmbeddings", { enumerable: true, get: function () { return TransformersEmbeddings_1.TransformersEmbeddings; } });
|
|
35
|
+
var TransformersTokenizer_1 = require("./TransformersTokenizer");
|
|
36
|
+
Object.defineProperty(exports, "TransformersTokenizer", { enumerable: true, get: function () { return TransformersTokenizer_1.TransformersTokenizer; } });
|
|
37
|
+
// Query utilities
|
|
38
|
+
var ItemSelector_1 = require("./ItemSelector");
|
|
39
|
+
Object.defineProperty(exports, "ItemSelector", { enumerable: true, get: function () { return ItemSelector_1.ItemSelector; } });
|
|
40
|
+
var FileStorageUtilities_1 = require("./storage/FileStorageUtilities");
|
|
41
|
+
Object.defineProperty(exports, "FileStorageUtilities", { enumerable: true, get: function () { return FileStorageUtilities_1.FileStorageUtilities; } });
|
|
42
|
+
var VirtualFileStorage_1 = require("./storage/VirtualFileStorage");
|
|
43
|
+
Object.defineProperty(exports, "VirtualFileStorage", { enumerable: true, get: function () { return VirtualFileStorage_1.VirtualFileStorage; } });
|
|
44
|
+
var IndexedDBStorage_1 = require("./storage/IndexedDBStorage");
|
|
45
|
+
Object.defineProperty(exports, "IndexedDBStorage", { enumerable: true, get: function () { return IndexedDBStorage_1.IndexedDBStorage; } });
|
|
46
|
+
// Browser-compatible fetcher
|
|
47
|
+
var BrowserWebFetcher_1 = require("./BrowserWebFetcher");
|
|
48
|
+
Object.defineProperty(exports, "BrowserWebFetcher", { enumerable: true, get: function () { return BrowserWebFetcher_1.BrowserWebFetcher; } });
|
|
49
|
+
// Utilities
|
|
50
|
+
var pathUtils_1 = require("./utils/pathUtils");
|
|
51
|
+
Object.defineProperty(exports, "pathUtils", { enumerable: true, get: function () { return pathUtils_1.pathUtils; } });
|
|
52
|
+
//# sourceMappingURL=browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAEH,qBAAqB;AACrB,2CAA6D;AAApD,wGAAA,UAAU,OAAA;AACnB,2DAA0G;AAAjG,wHAAA,kBAAkB,OAAA;AAE3B,mBAAmB;AACnB,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAE5B,kBAAkB;AAClB,+CAAkE;AAAzD,4GAAA,YAAY,OAAA;AACrB,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AAEtB,aAAa;AACb,uDAM4B;AALxB,oHAAA,gBAAgB,OAAA;AAMpB,mEAAiG;AAAxF,gIAAA,sBAAsB,OAAA;AAC/B,iEAAgE;AAAvD,8HAAA,qBAAqB,OAAA;AAE9B,kBAAkB;AAClB,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AAuBrB,uEAAsE;AAA7D,4HAAA,oBAAoB,OAAA;AAE7B,mEAAkE;AAAzD,wHAAA,kBAAkB,OAAA;AAC3B,+DAA8D;AAArD,oHAAA,gBAAgB,OAAA;AAEzB,6BAA6B;AAC7B,yDAAiF;AAAxE,sHAAA,iBAAiB,OAAA;AAE1B,YAAY;AACZ,+CAA8C;AAArC,sGAAA,SAAS,OAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { IndexData, MetadataTypes } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Catalog structure for document indexes.
|
|
4
|
+
*/
|
|
5
|
+
export interface DocumentCatalog {
|
|
6
|
+
version: number;
|
|
7
|
+
count: number;
|
|
8
|
+
uriToId: {
|
|
9
|
+
[uri: string]: string;
|
|
10
|
+
};
|
|
11
|
+
idToUri: {
|
|
12
|
+
[id: string]: string;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Abstraction for index serialization format.
|
|
17
|
+
* @remarks
|
|
18
|
+
* Implementations control how index data, catalogs, and metadata are
|
|
19
|
+
* serialized to and from Buffers written by the storage backend.
|
|
20
|
+
*/
|
|
21
|
+
export interface IndexCodec {
|
|
22
|
+
/** File extension used for index files (e.g., '.json', '.pb') */
|
|
23
|
+
readonly extension: string;
|
|
24
|
+
/** Serialize IndexData to a Buffer for writing to storage */
|
|
25
|
+
serializeIndex(data: IndexData): Buffer;
|
|
26
|
+
/** Deserialize a Buffer read from storage into IndexData */
|
|
27
|
+
deserializeIndex(buffer: Buffer): IndexData;
|
|
28
|
+
/** Serialize a DocumentCatalog to a Buffer */
|
|
29
|
+
serializeCatalog(catalog: DocumentCatalog): Buffer;
|
|
30
|
+
/** Deserialize a Buffer into a DocumentCatalog */
|
|
31
|
+
deserializeCatalog(buffer: Buffer): DocumentCatalog;
|
|
32
|
+
/** Serialize arbitrary metadata to a Buffer */
|
|
33
|
+
serializeMetadata(metadata: Record<string, MetadataTypes>): Buffer;
|
|
34
|
+
/** Deserialize a Buffer into metadata */
|
|
35
|
+
deserializeMetadata(buffer: Buffer): Record<string, MetadataTypes>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=IndexCodec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IndexCodec.d.ts","sourceRoot":"","sources":["../../src/codecs/IndexCodec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACnC,OAAO,EAAE;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CACrC;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACvB,iEAAiE;IACjE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,6DAA6D;IAC7D,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC;IAExC,4DAA4D;IAC5D,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAE5C,8CAA8C;IAC9C,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAAC;IAEnD,kDAAkD;IAClD,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAAC;IAEpD,+CAA+C;IAC/C,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,MAAM,CAAC;IAEnE,yCAAyC;IACzC,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACtE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IndexCodec.js","sourceRoot":"","sources":["../../src/codecs/IndexCodec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { IndexData, MetadataTypes } from '../types';
|
|
2
|
+
import { DocumentCatalog, IndexCodec } from './IndexCodec';
|
|
3
|
+
/**
|
|
4
|
+
* JSON codec — default serialization format.
|
|
5
|
+
* @remarks
|
|
6
|
+
* Wraps the existing JSON.stringify/JSON.parse behavior. This preserves
|
|
7
|
+
* full backward compatibility with indexes created before the codec
|
|
8
|
+
* abstraction was introduced.
|
|
9
|
+
*/
|
|
10
|
+
export declare class JsonCodec implements IndexCodec {
|
|
11
|
+
readonly extension = ".json";
|
|
12
|
+
serializeIndex(data: IndexData): Buffer;
|
|
13
|
+
deserializeIndex(buffer: Buffer): IndexData;
|
|
14
|
+
serializeCatalog(catalog: DocumentCatalog): Buffer;
|
|
15
|
+
deserializeCatalog(buffer: Buffer): DocumentCatalog;
|
|
16
|
+
serializeMetadata(metadata: Record<string, MetadataTypes>): Buffer;
|
|
17
|
+
deserializeMetadata(buffer: Buffer): Record<string, MetadataTypes>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=JsonCodec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonCodec.d.ts","sourceRoot":"","sources":["../../src/codecs/JsonCodec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE3D;;;;;;GAMG;AACH,qBAAa,SAAU,YAAW,UAAU;IACxC,QAAQ,CAAC,SAAS,WAAW;IAE7B,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM;IAIvC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAI3C,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM;IAIlD,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe;IAInD,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,MAAM;IAIlE,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAGrE"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JsonCodec = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* JSON codec — default serialization format.
|
|
6
|
+
* @remarks
|
|
7
|
+
* Wraps the existing JSON.stringify/JSON.parse behavior. This preserves
|
|
8
|
+
* full backward compatibility with indexes created before the codec
|
|
9
|
+
* abstraction was introduced.
|
|
10
|
+
*/
|
|
11
|
+
class JsonCodec {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.extension = '.json';
|
|
14
|
+
}
|
|
15
|
+
serializeIndex(data) {
|
|
16
|
+
return Buffer.from(JSON.stringify(data), 'utf-8');
|
|
17
|
+
}
|
|
18
|
+
deserializeIndex(buffer) {
|
|
19
|
+
return JSON.parse(buffer.toString('utf-8'));
|
|
20
|
+
}
|
|
21
|
+
serializeCatalog(catalog) {
|
|
22
|
+
return Buffer.from(JSON.stringify(catalog), 'utf-8');
|
|
23
|
+
}
|
|
24
|
+
deserializeCatalog(buffer) {
|
|
25
|
+
return JSON.parse(buffer.toString('utf-8'));
|
|
26
|
+
}
|
|
27
|
+
serializeMetadata(metadata) {
|
|
28
|
+
return Buffer.from(JSON.stringify(metadata), 'utf-8');
|
|
29
|
+
}
|
|
30
|
+
deserializeMetadata(buffer) {
|
|
31
|
+
return JSON.parse(buffer.toString('utf-8'));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.JsonCodec = JsonCodec;
|
|
35
|
+
//# sourceMappingURL=JsonCodec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonCodec.js","sourceRoot":"","sources":["../../src/codecs/JsonCodec.ts"],"names":[],"mappings":";;;AAGA;;;;;;GAMG;AACH,MAAa,SAAS;IAAtB;QACa,cAAS,GAAG,OAAO,CAAC;IAyBjC,CAAC;IAvBG,cAAc,CAAC,IAAe;QAC1B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,gBAAgB,CAAC,MAAc;QAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,gBAAgB,CAAC,OAAwB;QACrC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,kBAAkB,CAAC,MAAc;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,iBAAiB,CAAC,QAAuC;QACrD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,mBAAmB,CAAC,MAAc;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAChD,CAAC;CACJ;AA1BD,8BA0BC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonCodec.spec.d.ts","sourceRoot":"","sources":["../../src/codecs/JsonCodec.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
|
7
|
+
const JsonCodec_1 = require("./JsonCodec");
|
|
8
|
+
describe('JsonCodec', () => {
|
|
9
|
+
const codec = new JsonCodec_1.JsonCodec();
|
|
10
|
+
it('has .json extension', () => {
|
|
11
|
+
node_assert_1.default.equal(codec.extension, '.json');
|
|
12
|
+
});
|
|
13
|
+
describe('serializeIndex / deserializeIndex', () => {
|
|
14
|
+
it('round-trips IndexData', () => {
|
|
15
|
+
const data = {
|
|
16
|
+
version: 1,
|
|
17
|
+
metadata_config: { indexed: ['category'] },
|
|
18
|
+
items: [
|
|
19
|
+
{ id: 'a', metadata: { category: 'food', score: 0.9 }, vector: [1.5, 2.5, 3.5], norm: 4.5 },
|
|
20
|
+
{ id: 'b', metadata: {}, vector: [0, 0, 0], norm: 0, metadataFile: 'ext.json' },
|
|
21
|
+
],
|
|
22
|
+
};
|
|
23
|
+
const buf = codec.serializeIndex(data);
|
|
24
|
+
node_assert_1.default.ok(Buffer.isBuffer(buf));
|
|
25
|
+
const result = codec.deserializeIndex(buf);
|
|
26
|
+
node_assert_1.default.deepStrictEqual(result, data);
|
|
27
|
+
});
|
|
28
|
+
it('handles empty items', () => {
|
|
29
|
+
const data = { version: 2, metadata_config: {}, items: [] };
|
|
30
|
+
const result = codec.deserializeIndex(codec.serializeIndex(data));
|
|
31
|
+
node_assert_1.default.deepStrictEqual(result, data);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
describe('serializeCatalog / deserializeCatalog', () => {
|
|
35
|
+
it('round-trips DocumentCatalog', () => {
|
|
36
|
+
const catalog = {
|
|
37
|
+
version: 1,
|
|
38
|
+
count: 2,
|
|
39
|
+
uriToId: { 'http://a': 'id-a', 'http://b': 'id-b' },
|
|
40
|
+
idToUri: { 'id-a': 'http://a', 'id-b': 'http://b' },
|
|
41
|
+
};
|
|
42
|
+
const buf = codec.serializeCatalog(catalog);
|
|
43
|
+
node_assert_1.default.ok(Buffer.isBuffer(buf));
|
|
44
|
+
const result = codec.deserializeCatalog(buf);
|
|
45
|
+
node_assert_1.default.deepStrictEqual(result, catalog);
|
|
46
|
+
});
|
|
47
|
+
it('handles empty catalog', () => {
|
|
48
|
+
const catalog = { version: 1, count: 0, uriToId: {}, idToUri: {} };
|
|
49
|
+
const result = codec.deserializeCatalog(codec.serializeCatalog(catalog));
|
|
50
|
+
node_assert_1.default.deepStrictEqual(result, catalog);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
describe('serializeMetadata / deserializeMetadata', () => {
|
|
54
|
+
it('round-trips metadata with all types', () => {
|
|
55
|
+
const metadata = { name: 'test', score: 42, active: true };
|
|
56
|
+
const buf = codec.serializeMetadata(metadata);
|
|
57
|
+
const result = codec.deserializeMetadata(buf);
|
|
58
|
+
node_assert_1.default.deepStrictEqual(result, metadata);
|
|
59
|
+
});
|
|
60
|
+
it('handles empty metadata', () => {
|
|
61
|
+
const result = codec.deserializeMetadata(codec.serializeMetadata({}));
|
|
62
|
+
node_assert_1.default.deepStrictEqual(result, {});
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
//# sourceMappingURL=JsonCodec.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonCodec.spec.js","sourceRoot":"","sources":["../../src/codecs/JsonCodec.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LocalIndex.protobuf.spec.d.ts","sourceRoot":"","sources":["../../src/codecs/LocalIndex.protobuf.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,108 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
|
16
|
+
const LocalIndex_1 = require("../LocalIndex");
|
|
17
|
+
const storage_1 = require("../storage");
|
|
18
|
+
const ProtobufCodec_1 = require("./ProtobufCodec");
|
|
19
|
+
describe('LocalIndex with ProtobufCodec', () => {
|
|
20
|
+
const codec = new ProtobufCodec_1.ProtobufCodec();
|
|
21
|
+
it('creates index with .pb extension', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
22
|
+
const storage = new storage_1.VirtualFileStorage();
|
|
23
|
+
const index = new LocalIndex_1.LocalIndex('mem://idx', undefined, storage, codec);
|
|
24
|
+
node_assert_1.default.equal(index.indexName, 'index.pb');
|
|
25
|
+
yield index.createIndex();
|
|
26
|
+
node_assert_1.default.equal(yield index.isIndexCreated(), true);
|
|
27
|
+
}));
|
|
28
|
+
it('full CRUD operations produce correct results', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
29
|
+
const storage = new storage_1.VirtualFileStorage();
|
|
30
|
+
const index = new LocalIndex_1.LocalIndex('mem://idx', undefined, storage, codec);
|
|
31
|
+
yield index.createIndex();
|
|
32
|
+
// Insert
|
|
33
|
+
yield index.insertItem({ id: 'a', vector: [1, 0, 0], metadata: { cat: 'x' } });
|
|
34
|
+
yield index.insertItem({ id: 'b', vector: [0, 1, 0], metadata: { cat: 'y' } });
|
|
35
|
+
// List
|
|
36
|
+
const items = yield index.listItems();
|
|
37
|
+
node_assert_1.default.equal(items.length, 2);
|
|
38
|
+
node_assert_1.default.equal(items[0].id, 'a');
|
|
39
|
+
// Get
|
|
40
|
+
const item = yield index.getItem('a');
|
|
41
|
+
node_assert_1.default.ok(item);
|
|
42
|
+
node_assert_1.default.equal(item.metadata.cat, 'x');
|
|
43
|
+
// Query
|
|
44
|
+
const results = yield index.queryItems([1, 0, 0], '', 1);
|
|
45
|
+
node_assert_1.default.equal(results.length, 1);
|
|
46
|
+
node_assert_1.default.equal(results[0].item.id, 'a');
|
|
47
|
+
// Upsert
|
|
48
|
+
yield index.upsertItem({ id: 'a', vector: [0, 0, 1], metadata: { cat: 'z' } });
|
|
49
|
+
const updated = yield index.getItem('a');
|
|
50
|
+
node_assert_1.default.equal(updated === null || updated === void 0 ? void 0 : updated.metadata.cat, 'z');
|
|
51
|
+
// Delete
|
|
52
|
+
yield index.deleteItem('b');
|
|
53
|
+
const remaining = yield index.listItems();
|
|
54
|
+
node_assert_1.default.equal(remaining.length, 1);
|
|
55
|
+
node_assert_1.default.equal(remaining[0].id, 'a');
|
|
56
|
+
// Stats
|
|
57
|
+
const stats = yield index.getIndexStats();
|
|
58
|
+
node_assert_1.default.equal(stats.items, 1);
|
|
59
|
+
}));
|
|
60
|
+
it('batch insert works', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
61
|
+
const storage = new storage_1.VirtualFileStorage();
|
|
62
|
+
const index = new LocalIndex_1.LocalIndex('mem://idx', undefined, storage, codec);
|
|
63
|
+
yield index.createIndex();
|
|
64
|
+
yield index.batchInsertItems([
|
|
65
|
+
{ id: '1', vector: [1, 0, 0] },
|
|
66
|
+
{ id: '2', vector: [0, 1, 0] },
|
|
67
|
+
{ id: '3', vector: [0, 0, 1] },
|
|
68
|
+
]);
|
|
69
|
+
const items = yield index.listItems();
|
|
70
|
+
node_assert_1.default.equal(items.length, 3);
|
|
71
|
+
}));
|
|
72
|
+
it('metadata filtering works with protobuf storage', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
73
|
+
const storage = new storage_1.VirtualFileStorage();
|
|
74
|
+
const index = new LocalIndex_1.LocalIndex('mem://idx', undefined, storage, codec);
|
|
75
|
+
yield index.createIndex();
|
|
76
|
+
yield index.batchInsertItems([
|
|
77
|
+
{ id: '1', vector: [1, 0], metadata: { category: 'food' } },
|
|
78
|
+
{ id: '2', vector: [0, 1], metadata: { category: 'drink' } },
|
|
79
|
+
]);
|
|
80
|
+
const food = yield index.listItemsByMetadata({ category: { $eq: 'food' } });
|
|
81
|
+
node_assert_1.default.equal(food.length, 1);
|
|
82
|
+
node_assert_1.default.equal(food[0].id, '1');
|
|
83
|
+
}));
|
|
84
|
+
it('external metadata files use .pb extension', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
85
|
+
const storage = new storage_1.VirtualFileStorage();
|
|
86
|
+
const index = new LocalIndex_1.LocalIndex('mem://idx', undefined, storage, codec);
|
|
87
|
+
yield index.createIndex({ version: 1, metadata_config: { indexed: ['keep'] } });
|
|
88
|
+
yield index.insertItem({ id: 'm1', vector: [1], metadata: { keep: 'x', extra: 'y' } });
|
|
89
|
+
const items = yield index.listItems();
|
|
90
|
+
const stored = items.find(i => i.id === 'm1');
|
|
91
|
+
node_assert_1.default.ok(stored.metadataFile);
|
|
92
|
+
node_assert_1.default.ok(stored.metadataFile.endsWith('.pb'), `Expected .pb extension, got: ${stored.metadataFile}`);
|
|
93
|
+
}));
|
|
94
|
+
it('persists and reloads across instances', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
95
|
+
const storage = new storage_1.VirtualFileStorage();
|
|
96
|
+
// First instance: create and populate
|
|
97
|
+
const idx1 = new LocalIndex_1.LocalIndex('mem://idx', undefined, storage, codec);
|
|
98
|
+
yield idx1.createIndex();
|
|
99
|
+
yield idx1.insertItem({ id: 'persist', vector: [1, 2, 3], metadata: { key: 'val' } });
|
|
100
|
+
// Second instance: should read persisted data
|
|
101
|
+
const idx2 = new LocalIndex_1.LocalIndex('mem://idx', undefined, storage, codec);
|
|
102
|
+
const item = yield idx2.getItem('persist');
|
|
103
|
+
node_assert_1.default.ok(item);
|
|
104
|
+
node_assert_1.default.equal(item.id, 'persist');
|
|
105
|
+
node_assert_1.default.equal(item.metadata.key, 'val');
|
|
106
|
+
}));
|
|
107
|
+
});
|
|
108
|
+
//# sourceMappingURL=LocalIndex.protobuf.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LocalIndex.protobuf.spec.js","sourceRoot":"","sources":["../../src/codecs/LocalIndex.protobuf.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { IndexData, MetadataTypes } from '../types';
|
|
2
|
+
import { DocumentCatalog, IndexCodec } from './IndexCodec';
|
|
3
|
+
/**
|
|
4
|
+
* Protocol Buffers codec — opt-in binary format.
|
|
5
|
+
* @remarks
|
|
6
|
+
* Vectors are stored as packed float32 arrays (~50% smaller than JSON).
|
|
7
|
+
* Norms are stored as float64 to avoid compounding rounding error.
|
|
8
|
+
* Requires the `protobufjs` package to be installed.
|
|
9
|
+
*/
|
|
10
|
+
export declare class ProtobufCodec implements IndexCodec {
|
|
11
|
+
readonly extension = ".pb";
|
|
12
|
+
constructor();
|
|
13
|
+
serializeIndex(data: IndexData): Buffer;
|
|
14
|
+
deserializeIndex(buffer: Buffer): IndexData;
|
|
15
|
+
serializeCatalog(catalog: DocumentCatalog): Buffer;
|
|
16
|
+
deserializeCatalog(buffer: Buffer): DocumentCatalog;
|
|
17
|
+
serializeMetadata(metadata: Record<string, MetadataTypes>): Buffer;
|
|
18
|
+
deserializeMetadata(buffer: Buffer): Record<string, MetadataTypes>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=ProtobufCodec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProtobufCodec.d.ts","sourceRoot":"","sources":["../../src/codecs/ProtobufCodec.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAa,aAAa,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AA2F3D;;;;;;GAMG;AACH,qBAAa,aAAc,YAAW,UAAU;IAC5C,QAAQ,CAAC,SAAS,SAAS;;IAO3B,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM;IAgBvC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAmB3C,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM;IAelD,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe;IAkBnD,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,MAAM;IAalE,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAGrE"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ProtobufCodec = void 0;
|
|
37
|
+
const path = __importStar(require("path"));
|
|
38
|
+
let protobuf;
|
|
39
|
+
function loadProtobuf() {
|
|
40
|
+
if (!protobuf) {
|
|
41
|
+
try {
|
|
42
|
+
protobuf = require('protobufjs');
|
|
43
|
+
}
|
|
44
|
+
catch (_a) {
|
|
45
|
+
throw new Error("ProtobufCodec requires the 'protobufjs' package. Install it with: npm install protobufjs");
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return protobuf;
|
|
49
|
+
}
|
|
50
|
+
// Cached proto root — loaded once per process
|
|
51
|
+
let cachedRoot;
|
|
52
|
+
function getRoot() {
|
|
53
|
+
if (!cachedRoot) {
|
|
54
|
+
const pb = loadProtobuf();
|
|
55
|
+
cachedRoot = pb.loadSync(path.join(__dirname, 'schemas', 'index.proto'));
|
|
56
|
+
}
|
|
57
|
+
return cachedRoot;
|
|
58
|
+
}
|
|
59
|
+
/** Convert MetadataTypes value to protobuf MetadataValue shape */
|
|
60
|
+
function toProtoMetadataValue(value) {
|
|
61
|
+
if (typeof value === 'string')
|
|
62
|
+
return { stringValue: value };
|
|
63
|
+
if (typeof value === 'number')
|
|
64
|
+
return { numberValue: value };
|
|
65
|
+
if (typeof value === 'boolean')
|
|
66
|
+
return { boolValue: value };
|
|
67
|
+
return { stringValue: String(value) };
|
|
68
|
+
}
|
|
69
|
+
/** Convert protobuf MetadataValue back to MetadataTypes */
|
|
70
|
+
function fromProtoMetadataValue(mv) {
|
|
71
|
+
if (mv.stringValue !== undefined && mv.stringValue !== '')
|
|
72
|
+
return mv.stringValue;
|
|
73
|
+
if (mv.numberValue !== undefined && mv.numberValue !== 0)
|
|
74
|
+
return mv.numberValue;
|
|
75
|
+
if (mv.boolValue !== undefined && mv.boolValue !== false)
|
|
76
|
+
return mv.boolValue;
|
|
77
|
+
// Disambiguate zero-value fields by checking which oneof field is set
|
|
78
|
+
if (mv.value === 'boolValue')
|
|
79
|
+
return false;
|
|
80
|
+
if (mv.value === 'numberValue')
|
|
81
|
+
return 0;
|
|
82
|
+
if (mv.value === 'stringValue')
|
|
83
|
+
return '';
|
|
84
|
+
// Fallback — proto3 defaults make this tricky; prefer string empty
|
|
85
|
+
return '';
|
|
86
|
+
}
|
|
87
|
+
/** Convert JS IndexItem to proto-friendly shape */
|
|
88
|
+
function toProtoItem(item) {
|
|
89
|
+
const metadata = {};
|
|
90
|
+
if (item.metadata) {
|
|
91
|
+
for (const [k, v] of Object.entries(item.metadata)) {
|
|
92
|
+
metadata[k] = toProtoMetadataValue(v);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
const out = {
|
|
96
|
+
id: item.id,
|
|
97
|
+
metadata,
|
|
98
|
+
vector: item.vector,
|
|
99
|
+
norm: item.norm,
|
|
100
|
+
};
|
|
101
|
+
if (item.metadataFile) {
|
|
102
|
+
out.metadataFile = item.metadataFile;
|
|
103
|
+
}
|
|
104
|
+
return out;
|
|
105
|
+
}
|
|
106
|
+
/** Convert proto IndexItem back to JS IndexItem */
|
|
107
|
+
function fromProtoItem(pi) {
|
|
108
|
+
const metadata = {};
|
|
109
|
+
if (pi.metadata) {
|
|
110
|
+
for (const [k, v] of Object.entries(pi.metadata)) {
|
|
111
|
+
metadata[k] = fromProtoMetadataValue(v);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// proto packed float → JS number[]; ensure plain array
|
|
115
|
+
const vector = pi.vector ? Array.from(pi.vector) : [];
|
|
116
|
+
const item = {
|
|
117
|
+
id: pi.id,
|
|
118
|
+
metadata,
|
|
119
|
+
vector,
|
|
120
|
+
norm: pi.norm,
|
|
121
|
+
};
|
|
122
|
+
if (pi.metadataFile) {
|
|
123
|
+
item.metadataFile = pi.metadataFile;
|
|
124
|
+
}
|
|
125
|
+
return item;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Protocol Buffers codec — opt-in binary format.
|
|
129
|
+
* @remarks
|
|
130
|
+
* Vectors are stored as packed float32 arrays (~50% smaller than JSON).
|
|
131
|
+
* Norms are stored as float64 to avoid compounding rounding error.
|
|
132
|
+
* Requires the `protobufjs` package to be installed.
|
|
133
|
+
*/
|
|
134
|
+
class ProtobufCodec {
|
|
135
|
+
constructor() {
|
|
136
|
+
this.extension = '.pb';
|
|
137
|
+
// Eagerly validate that protobufjs is available
|
|
138
|
+
loadProtobuf();
|
|
139
|
+
}
|
|
140
|
+
serializeIndex(data) {
|
|
141
|
+
var _a, _b;
|
|
142
|
+
const root = getRoot();
|
|
143
|
+
const IndexDataMsg = root.lookupType('IndexData');
|
|
144
|
+
const payload = {
|
|
145
|
+
version: data.version,
|
|
146
|
+
metadataConfig: {
|
|
147
|
+
indexed: (_b = (_a = data.metadata_config) === null || _a === void 0 ? void 0 : _a.indexed) !== null && _b !== void 0 ? _b : [],
|
|
148
|
+
},
|
|
149
|
+
items: data.items.map(toProtoItem),
|
|
150
|
+
};
|
|
151
|
+
const err = IndexDataMsg.verify(payload);
|
|
152
|
+
if (err)
|
|
153
|
+
throw new Error(`Protobuf verify error: ${err}`);
|
|
154
|
+
const message = IndexDataMsg.create(payload);
|
|
155
|
+
return Buffer.from(IndexDataMsg.encode(message).finish());
|
|
156
|
+
}
|
|
157
|
+
deserializeIndex(buffer) {
|
|
158
|
+
var _a, _b;
|
|
159
|
+
const root = getRoot();
|
|
160
|
+
const IndexDataMsg = root.lookupType('IndexData');
|
|
161
|
+
const decoded = IndexDataMsg.decode(new Uint8Array(buffer));
|
|
162
|
+
const obj = IndexDataMsg.toObject(decoded, {
|
|
163
|
+
longs: Number,
|
|
164
|
+
enums: String,
|
|
165
|
+
defaults: true,
|
|
166
|
+
oneofs: true,
|
|
167
|
+
});
|
|
168
|
+
return {
|
|
169
|
+
version: obj.version,
|
|
170
|
+
metadata_config: {
|
|
171
|
+
indexed: (_b = (_a = obj.metadataConfig) === null || _a === void 0 ? void 0 : _a.indexed) !== null && _b !== void 0 ? _b : [],
|
|
172
|
+
},
|
|
173
|
+
items: (obj.items || []).map(fromProtoItem),
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
serializeCatalog(catalog) {
|
|
177
|
+
const root = getRoot();
|
|
178
|
+
const CatalogMsg = root.lookupType('DocumentCatalog');
|
|
179
|
+
const payload = {
|
|
180
|
+
version: catalog.version,
|
|
181
|
+
count: catalog.count,
|
|
182
|
+
uriToId: catalog.uriToId,
|
|
183
|
+
idToUri: catalog.idToUri,
|
|
184
|
+
};
|
|
185
|
+
const err = CatalogMsg.verify(payload);
|
|
186
|
+
if (err)
|
|
187
|
+
throw new Error(`Protobuf verify error: ${err}`);
|
|
188
|
+
const message = CatalogMsg.create(payload);
|
|
189
|
+
return Buffer.from(CatalogMsg.encode(message).finish());
|
|
190
|
+
}
|
|
191
|
+
deserializeCatalog(buffer) {
|
|
192
|
+
const root = getRoot();
|
|
193
|
+
const CatalogMsg = root.lookupType('DocumentCatalog');
|
|
194
|
+
const decoded = CatalogMsg.decode(new Uint8Array(buffer));
|
|
195
|
+
const obj = CatalogMsg.toObject(decoded, {
|
|
196
|
+
longs: Number,
|
|
197
|
+
enums: String,
|
|
198
|
+
defaults: true,
|
|
199
|
+
oneofs: true,
|
|
200
|
+
});
|
|
201
|
+
return {
|
|
202
|
+
version: obj.version,
|
|
203
|
+
count: obj.count,
|
|
204
|
+
uriToId: obj.uriToId || {},
|
|
205
|
+
idToUri: obj.idToUri || {},
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
serializeMetadata(metadata) {
|
|
209
|
+
// Metadata is a flat key-value map. We encode it as a JSON buffer
|
|
210
|
+
// wrapped in a simple length-prefixed envelope to stay self-describing
|
|
211
|
+
// while keeping the main index binary.
|
|
212
|
+
//
|
|
213
|
+
// We reuse the IndexItem metadata map encoding for consistency:
|
|
214
|
+
// encode as { entries: map<string, MetadataValue> }.
|
|
215
|
+
// However, since there's no standalone proto message for this,
|
|
216
|
+
// we just use JSON for external metadata files — the size savings
|
|
217
|
+
// from protobuf on small metadata objects are negligible.
|
|
218
|
+
return Buffer.from(JSON.stringify(metadata), 'utf-8');
|
|
219
|
+
}
|
|
220
|
+
deserializeMetadata(buffer) {
|
|
221
|
+
return JSON.parse(buffer.toString('utf-8'));
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
exports.ProtobufCodec = ProtobufCodec;
|
|
225
|
+
//# sourceMappingURL=ProtobufCodec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProtobufCodec.js","sourceRoot":"","sources":["../../src/codecs/ProtobufCodec.ts"],"names":[],"mappings":"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"}
|