vectra 0.12.2 → 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/LICENSE +1 -1
- package/README.md +92 -100
- package/bin/vectra.js +3 -0
- 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 +5 -0
- package/lib/FileFetcher.d.ts.map +1 -0
- package/lib/FileFetcher.js +89 -0
- package/lib/FileFetcher.js.map +1 -0
- 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.d.ts +9 -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 +41 -0
- package/lib/ItemSelector.d.ts.map +1 -0
- package/lib/ItemSelector.js +179 -0
- package/lib/ItemSelector.js.map +1 -0
- 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 +54 -0
- package/lib/LocalDocument.d.ts.map +1 -1
- package/lib/LocalDocument.js +116 -0
- package/lib/LocalDocument.js.map +1 -0
- 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 +152 -0
- package/lib/LocalDocumentIndex.d.ts.map +1 -1
- package/lib/LocalDocumentIndex.js +420 -0
- package/lib/LocalDocumentIndex.js.map +1 -0
- 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 +66 -0
- package/lib/LocalDocumentResult.d.ts.map +1 -1
- package/lib/LocalDocumentResult.js +376 -0
- package/lib/LocalDocumentResult.js.map +1 -0
- 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 +159 -0
- package/lib/LocalIndex.d.ts.map +1 -1
- package/lib/LocalIndex.js +519 -0
- package/lib/LocalIndex.js.map +1 -0
- package/lib/LocalIndex.spec.d.ts +2 -0
- package/lib/LocalIndex.spec.js +611 -9
- package/lib/LocalIndex.spec.js.map +1 -1
- package/lib/OpenAIEmbeddings.d.ts +124 -0
- package/lib/OpenAIEmbeddings.d.ts.map +1 -0
- package/lib/OpenAIEmbeddings.js +166 -0
- package/lib/OpenAIEmbeddings.js.map +1 -0
- 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 +21 -0
- package/lib/TextSplitter.d.ts.map +1 -1
- package/lib/TextSplitter.js +500 -0
- package/lib/TextSplitter.js.map +1 -0
- package/lib/TextSplitter.spec.d.ts +2 -0
- package/lib/TextSplitter.spec.d.ts.map +1 -0
- package/lib/TextSplitter.spec.js +337 -0
- package/lib/TextSplitter.spec.js.map +1 -0
- 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 +14 -0
- package/lib/WebFetcher.d.ts.map +1 -0
- package/lib/WebFetcher.js +238 -0
- package/lib/WebFetcher.js.map +1 -0
- 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 +20 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +36 -0
- package/lib/index.js.map +1 -0
- package/lib/internals/Colorize.d.ts +14 -0
- package/lib/internals/Colorize.d.ts.map +1 -0
- package/lib/internals/Colorize.js +69 -0
- package/lib/internals/Colorize.js.map +1 -0
- package/lib/internals/index.d.ts +3 -0
- package/lib/internals/index.d.ts.map +1 -0
- package/lib/internals/index.js +19 -0
- package/lib/internals/index.js.map +1 -0
- package/lib/internals/types.d.ts +43 -0
- package/lib/internals/types.d.ts.map +1 -0
- package/lib/internals/types.js +3 -0
- package/lib/internals/types.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/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 +153 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +3 -0
- package/lib/types.js.map +1 -0
- 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 +2 -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 +760 -0
- package/lib/vectra-cli.js.map +1 -0
- 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 +91 -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 -66
- package/src/LocalIndex.ts +479 -429
- package/src/OpenAIEmbeddings.spec.ts +354 -0
- package/src/OpenAIEmbeddings.ts +26 -27
- package/src/TextSplitter.spec.ts +342 -0
- package/src/TextSplitter.ts +517 -532
- 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
|
@@ -0,0 +1,155 @@
|
|
|
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 ProtobufCodec_1 = require("./ProtobufCodec");
|
|
8
|
+
const JsonCodec_1 = require("./JsonCodec");
|
|
9
|
+
describe('ProtobufCodec', () => {
|
|
10
|
+
const codec = new ProtobufCodec_1.ProtobufCodec();
|
|
11
|
+
it('has .pb extension', () => {
|
|
12
|
+
node_assert_1.default.equal(codec.extension, '.pb');
|
|
13
|
+
});
|
|
14
|
+
describe('serializeIndex / deserializeIndex', () => {
|
|
15
|
+
it('round-trips IndexData', () => {
|
|
16
|
+
const data = {
|
|
17
|
+
version: 1,
|
|
18
|
+
metadata_config: { indexed: ['category'] },
|
|
19
|
+
items: [
|
|
20
|
+
{ id: 'a', metadata: { category: 'food', score: 42 }, vector: [1.5, 2.5, 3.5], norm: 4.5 },
|
|
21
|
+
{ id: 'b', metadata: {}, vector: [0, 0, 0], norm: 0, metadataFile: 'ext.pb' },
|
|
22
|
+
],
|
|
23
|
+
};
|
|
24
|
+
const buf = codec.serializeIndex(data);
|
|
25
|
+
node_assert_1.default.ok(Buffer.isBuffer(buf));
|
|
26
|
+
const result = codec.deserializeIndex(buf);
|
|
27
|
+
node_assert_1.default.equal(result.version, data.version);
|
|
28
|
+
node_assert_1.default.deepStrictEqual(result.metadata_config, data.metadata_config);
|
|
29
|
+
node_assert_1.default.equal(result.items.length, 2);
|
|
30
|
+
node_assert_1.default.equal(result.items[0].id, 'a');
|
|
31
|
+
node_assert_1.default.deepStrictEqual(result.items[0].metadata, { category: 'food', score: 42 });
|
|
32
|
+
// Float32 precision: vectors should be close but not exact
|
|
33
|
+
node_assert_1.default.ok(Math.abs(result.items[0].vector[0] - 1.5) < 0.001);
|
|
34
|
+
node_assert_1.default.ok(Math.abs(result.items[0].vector[1] - 2.5) < 0.001);
|
|
35
|
+
node_assert_1.default.ok(Math.abs(result.items[0].vector[2] - 3.5) < 0.001);
|
|
36
|
+
node_assert_1.default.equal(result.items[0].norm, 4.5); // norm is double, exact
|
|
37
|
+
node_assert_1.default.equal(result.items[1].metadataFile, 'ext.pb');
|
|
38
|
+
});
|
|
39
|
+
it('handles empty items', () => {
|
|
40
|
+
const data = { version: 2, metadata_config: {}, items: [] };
|
|
41
|
+
const result = codec.deserializeIndex(codec.serializeIndex(data));
|
|
42
|
+
node_assert_1.default.equal(result.version, 2);
|
|
43
|
+
node_assert_1.default.deepStrictEqual(result.items, []);
|
|
44
|
+
});
|
|
45
|
+
it('handles boolean metadata values', () => {
|
|
46
|
+
const data = {
|
|
47
|
+
version: 1,
|
|
48
|
+
metadata_config: {},
|
|
49
|
+
items: [
|
|
50
|
+
{ id: 'x', metadata: { active: true, deleted: false }, vector: [1], norm: 1 },
|
|
51
|
+
],
|
|
52
|
+
};
|
|
53
|
+
// Note: false/0/"" are proto3 default values — test the tricky case
|
|
54
|
+
const result = codec.deserializeIndex(codec.serializeIndex(data));
|
|
55
|
+
node_assert_1.default.equal(result.items[0].metadata.active, true);
|
|
56
|
+
});
|
|
57
|
+
it('handles string metadata', () => {
|
|
58
|
+
const data = {
|
|
59
|
+
version: 1,
|
|
60
|
+
metadata_config: {},
|
|
61
|
+
items: [
|
|
62
|
+
{ id: 'x', metadata: { name: 'hello', tag: 'world' }, vector: [1], norm: 1 },
|
|
63
|
+
],
|
|
64
|
+
};
|
|
65
|
+
const result = codec.deserializeIndex(codec.serializeIndex(data));
|
|
66
|
+
node_assert_1.default.equal(result.items[0].metadata.name, 'hello');
|
|
67
|
+
node_assert_1.default.equal(result.items[0].metadata.tag, 'world');
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
describe('serializeCatalog / deserializeCatalog', () => {
|
|
71
|
+
it('round-trips DocumentCatalog', () => {
|
|
72
|
+
const catalog = {
|
|
73
|
+
version: 1,
|
|
74
|
+
count: 2,
|
|
75
|
+
uriToId: { 'http://a': 'id-a', 'http://b': 'id-b' },
|
|
76
|
+
idToUri: { 'id-a': 'http://a', 'id-b': 'http://b' },
|
|
77
|
+
};
|
|
78
|
+
const buf = codec.serializeCatalog(catalog);
|
|
79
|
+
node_assert_1.default.ok(Buffer.isBuffer(buf));
|
|
80
|
+
const result = codec.deserializeCatalog(buf);
|
|
81
|
+
node_assert_1.default.deepStrictEqual(result, catalog);
|
|
82
|
+
});
|
|
83
|
+
it('handles empty catalog', () => {
|
|
84
|
+
const catalog = { version: 1, count: 0, uriToId: {}, idToUri: {} };
|
|
85
|
+
const result = codec.deserializeCatalog(codec.serializeCatalog(catalog));
|
|
86
|
+
node_assert_1.default.deepStrictEqual(result, catalog);
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
describe('serializeMetadata / deserializeMetadata', () => {
|
|
90
|
+
it('round-trips metadata (uses JSON for external files)', () => {
|
|
91
|
+
const metadata = { name: 'test', score: 42, active: true };
|
|
92
|
+
const buf = codec.serializeMetadata(metadata);
|
|
93
|
+
const result = codec.deserializeMetadata(buf);
|
|
94
|
+
node_assert_1.default.deepStrictEqual(result, metadata);
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
describe('cross-codec compatibility', () => {
|
|
98
|
+
const json = new JsonCodec_1.JsonCodec();
|
|
99
|
+
const pb = new ProtobufCodec_1.ProtobufCodec();
|
|
100
|
+
it('data serialized with JSON can be re-serialized with Protobuf and back (logical equivalence)', () => {
|
|
101
|
+
const data = {
|
|
102
|
+
version: 1,
|
|
103
|
+
metadata_config: { indexed: ['cat'] },
|
|
104
|
+
items: [
|
|
105
|
+
{ id: 'item1', metadata: { cat: 'a', num: 7 }, vector: [0.1, 0.2, 0.3], norm: 0.374 },
|
|
106
|
+
],
|
|
107
|
+
};
|
|
108
|
+
// JSON -> Protobuf
|
|
109
|
+
const jsonBuf = json.serializeIndex(data);
|
|
110
|
+
const fromJson = json.deserializeIndex(jsonBuf);
|
|
111
|
+
const pbBuf = pb.serializeIndex(fromJson);
|
|
112
|
+
const fromPb = pb.deserializeIndex(pbBuf);
|
|
113
|
+
node_assert_1.default.equal(fromPb.version, data.version);
|
|
114
|
+
node_assert_1.default.deepStrictEqual(fromPb.metadata_config, data.metadata_config);
|
|
115
|
+
node_assert_1.default.equal(fromPb.items[0].id, data.items[0].id);
|
|
116
|
+
node_assert_1.default.deepStrictEqual(fromPb.items[0].metadata, data.items[0].metadata);
|
|
117
|
+
// Protobuf -> JSON
|
|
118
|
+
const jsonBuf2 = json.serializeIndex(fromPb);
|
|
119
|
+
const final = json.deserializeIndex(jsonBuf2);
|
|
120
|
+
node_assert_1.default.equal(final.items[0].id, 'item1');
|
|
121
|
+
node_assert_1.default.deepStrictEqual(final.items[0].metadata, { cat: 'a', num: 7 });
|
|
122
|
+
});
|
|
123
|
+
it('catalog round-trips across codecs', () => {
|
|
124
|
+
const catalog = {
|
|
125
|
+
version: 1,
|
|
126
|
+
count: 1,
|
|
127
|
+
uriToId: { 'file://doc.txt': 'uuid-1' },
|
|
128
|
+
idToUri: { 'uuid-1': 'file://doc.txt' },
|
|
129
|
+
};
|
|
130
|
+
const pbBuf = pb.serializeCatalog(catalog);
|
|
131
|
+
const fromPb = pb.deserializeCatalog(pbBuf);
|
|
132
|
+
const jsonBuf = json.serializeCatalog(fromPb);
|
|
133
|
+
const final = json.deserializeCatalog(jsonBuf);
|
|
134
|
+
node_assert_1.default.deepStrictEqual(final, catalog);
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
describe('protobuf produces smaller output than JSON for vector data', () => {
|
|
138
|
+
it('binary is smaller than JSON for a 1536-dim vector', () => {
|
|
139
|
+
const vector = Array.from({ length: 1536 }, (_, i) => Math.random() * 2 - 1);
|
|
140
|
+
const norm = Math.sqrt(vector.reduce((s, v) => s + v * v, 0));
|
|
141
|
+
const data = {
|
|
142
|
+
version: 1,
|
|
143
|
+
metadata_config: {},
|
|
144
|
+
items: [{ id: 'vec', metadata: {}, vector, norm }],
|
|
145
|
+
};
|
|
146
|
+
const jsonSize = new JsonCodec_1.JsonCodec().serializeIndex(data).length;
|
|
147
|
+
const pbSize = codec.serializeIndex(data).length;
|
|
148
|
+
// Protobuf should be significantly smaller
|
|
149
|
+
node_assert_1.default.ok(pbSize < jsonSize, `Expected pb (${pbSize}) < json (${jsonSize})`);
|
|
150
|
+
// Spec says ~40-50% savings
|
|
151
|
+
node_assert_1.default.ok(pbSize < jsonSize * 0.7, `Expected at least 30% savings, got ${((1 - pbSize / jsonSize) * 100).toFixed(1)}%`);
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
//# sourceMappingURL=ProtobufCodec.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProtobufCodec.spec.js","sourceRoot":"","sources":["../../src/codecs/ProtobufCodec.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/codecs/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./IndexCodec"), exports);
|
|
18
|
+
__exportStar(require("./JsonCodec"), exports);
|
|
19
|
+
__exportStar(require("./ProtobufCodec"), exports);
|
|
20
|
+
__exportStar(require("./migrateIndex"), exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/codecs/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,8CAA4B;AAC5B,kDAAgC;AAChC,iDAA+B"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { FileStorage } from '../storage';
|
|
2
|
+
import { IndexCodec } from './IndexCodec';
|
|
3
|
+
export type FormatName = 'json' | 'protobuf';
|
|
4
|
+
/**
|
|
5
|
+
* Detects the codec in use for an existing index folder.
|
|
6
|
+
* @remarks
|
|
7
|
+
* Checks for `index.json` and `index.pb` files. If both exist, throws an
|
|
8
|
+
* error directing the user to re-run migration. If neither exists, throws.
|
|
9
|
+
* @param folderPath Path to the index folder.
|
|
10
|
+
* @param storage Storage backend to use.
|
|
11
|
+
* @returns The detected codec.
|
|
12
|
+
*/
|
|
13
|
+
export declare function detectCodec(folderPath: string, storage: FileStorage): Promise<IndexCodec>;
|
|
14
|
+
export interface MigrateOptions {
|
|
15
|
+
to: FormatName;
|
|
16
|
+
storage?: FileStorage;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Migrates an index folder from one serialization format to another.
|
|
20
|
+
* @param folderPath Path to the index folder.
|
|
21
|
+
* @param options Migration options.
|
|
22
|
+
*/
|
|
23
|
+
export declare function migrateIndex(folderPath: string, options: MigrateOptions): Promise<void>;
|
|
24
|
+
//# sourceMappingURL=migrateIndex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrateIndex.d.ts","sourceRoot":"","sources":["../../src/codecs/migrateIndex.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAoB,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,UAAU,CAAC;AAM7C;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAa/F;AAED,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,UAAU,CAAC;IACf,OAAO,CAAC,EAAE,WAAW,CAAC;CACzB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA8E7F"}
|
|
@@ -0,0 +1,119 @@
|
|
|
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.detectCodec = detectCodec;
|
|
13
|
+
exports.migrateIndex = migrateIndex;
|
|
14
|
+
const pathUtils_1 = require("../utils/pathUtils");
|
|
15
|
+
const storage_1 = require("../storage");
|
|
16
|
+
const JsonCodec_1 = require("./JsonCodec");
|
|
17
|
+
const ProtobufCodec_1 = require("./ProtobufCodec");
|
|
18
|
+
function codecForFormat(format) {
|
|
19
|
+
return format === 'protobuf' ? new ProtobufCodec_1.ProtobufCodec() : new JsonCodec_1.JsonCodec();
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Detects the codec in use for an existing index folder.
|
|
23
|
+
* @remarks
|
|
24
|
+
* Checks for `index.json` and `index.pb` files. If both exist, throws an
|
|
25
|
+
* error directing the user to re-run migration. If neither exists, throws.
|
|
26
|
+
* @param folderPath Path to the index folder.
|
|
27
|
+
* @param storage Storage backend to use.
|
|
28
|
+
* @returns The detected codec.
|
|
29
|
+
*/
|
|
30
|
+
function detectCodec(folderPath, storage) {
|
|
31
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
32
|
+
const hasJson = yield storage.pathExists(pathUtils_1.pathUtils.join(folderPath, 'index.json'));
|
|
33
|
+
const hasPb = yield storage.pathExists(pathUtils_1.pathUtils.join(folderPath, 'index.pb'));
|
|
34
|
+
if (hasJson && hasPb) {
|
|
35
|
+
throw new Error('Both index.json and index.pb found — the index may be in a partially migrated state. ' +
|
|
36
|
+
'Run `vectra migrate` or `migrateIndex()` to complete the migration.');
|
|
37
|
+
}
|
|
38
|
+
if (hasPb)
|
|
39
|
+
return new ProtobufCodec_1.ProtobufCodec();
|
|
40
|
+
if (hasJson)
|
|
41
|
+
return new JsonCodec_1.JsonCodec();
|
|
42
|
+
throw new Error('No index file found (expected index.json or index.pb).');
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Migrates an index folder from one serialization format to another.
|
|
47
|
+
* @param folderPath Path to the index folder.
|
|
48
|
+
* @param options Migration options.
|
|
49
|
+
*/
|
|
50
|
+
function migrateIndex(folderPath, options) {
|
|
51
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
const storage = options.storage || new storage_1.LocalFileStorage();
|
|
53
|
+
const targetCodec = codecForFormat(options.to);
|
|
54
|
+
// Detect current format
|
|
55
|
+
const sourceCodec = yield detectCodec(folderPath, storage);
|
|
56
|
+
if (sourceCodec.extension === targetCodec.extension) {
|
|
57
|
+
return; // Already in target format
|
|
58
|
+
}
|
|
59
|
+
// --- Migrate index file ---
|
|
60
|
+
const sourceIndexPath = pathUtils_1.pathUtils.join(folderPath, `index${sourceCodec.extension}`);
|
|
61
|
+
const targetIndexPath = pathUtils_1.pathUtils.join(folderPath, `index${targetCodec.extension}`);
|
|
62
|
+
const indexBuffer = yield storage.readFile(sourceIndexPath);
|
|
63
|
+
const indexData = sourceCodec.deserializeIndex(indexBuffer);
|
|
64
|
+
// Rewrite external metadata file references
|
|
65
|
+
for (const item of indexData.items) {
|
|
66
|
+
if (item.metadataFile && item.metadataFile.endsWith(sourceCodec.extension)) {
|
|
67
|
+
const baseName = item.metadataFile.slice(0, -sourceCodec.extension.length);
|
|
68
|
+
const oldMetaPath = pathUtils_1.pathUtils.join(folderPath, item.metadataFile);
|
|
69
|
+
const newMetaFile = `${baseName}${targetCodec.extension}`;
|
|
70
|
+
const newMetaPath = pathUtils_1.pathUtils.join(folderPath, newMetaFile);
|
|
71
|
+
// Read, re-serialize, write
|
|
72
|
+
const metaBuf = yield storage.readFile(oldMetaPath);
|
|
73
|
+
const metadata = sourceCodec.deserializeMetadata(metaBuf);
|
|
74
|
+
yield storage.upsertFile(newMetaPath, targetCodec.serializeMetadata(metadata));
|
|
75
|
+
// Update reference
|
|
76
|
+
item.metadataFile = newMetaFile;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// Write new index
|
|
80
|
+
yield storage.upsertFile(targetIndexPath, targetCodec.serializeIndex(indexData));
|
|
81
|
+
// --- Migrate catalog if present ---
|
|
82
|
+
const sourceCatalogPath = pathUtils_1.pathUtils.join(folderPath, `catalog${sourceCodec.extension}`);
|
|
83
|
+
const targetCatalogPath = pathUtils_1.pathUtils.join(folderPath, `catalog${targetCodec.extension}`);
|
|
84
|
+
if (yield storage.pathExists(sourceCatalogPath)) {
|
|
85
|
+
const catalogBuffer = yield storage.readFile(sourceCatalogPath);
|
|
86
|
+
const catalog = sourceCodec.deserializeCatalog(catalogBuffer);
|
|
87
|
+
// Migrate per-document metadata files
|
|
88
|
+
for (const docId of Object.values(catalog.idToUri ? catalog.idToUri : {})) {
|
|
89
|
+
// Document metadata uses documentId as filename base
|
|
90
|
+
}
|
|
91
|
+
// Actually the document IDs are the keys of idToUri
|
|
92
|
+
for (const docId of Object.keys(catalog.idToUri)) {
|
|
93
|
+
const oldDocMetaPath = pathUtils_1.pathUtils.join(folderPath, `${docId}${sourceCodec.extension}`);
|
|
94
|
+
if (yield storage.pathExists(oldDocMetaPath)) {
|
|
95
|
+
const docMetaBuf = yield storage.readFile(oldDocMetaPath);
|
|
96
|
+
const docMeta = sourceCodec.deserializeMetadata(docMetaBuf);
|
|
97
|
+
const newDocMetaPath = pathUtils_1.pathUtils.join(folderPath, `${docId}${targetCodec.extension}`);
|
|
98
|
+
yield storage.upsertFile(newDocMetaPath, targetCodec.serializeMetadata(docMeta));
|
|
99
|
+
yield storage.deleteFile(oldDocMetaPath);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
yield storage.upsertFile(targetCatalogPath, targetCodec.serializeCatalog(catalog));
|
|
103
|
+
yield storage.deleteFile(sourceCatalogPath);
|
|
104
|
+
}
|
|
105
|
+
// --- Clean up old files (after new files are safely written) ---
|
|
106
|
+
// Delete old external metadata files
|
|
107
|
+
for (const item of sourceCodec.deserializeIndex(indexBuffer).items) {
|
|
108
|
+
if (item.metadataFile) {
|
|
109
|
+
const oldMetaPath = pathUtils_1.pathUtils.join(folderPath, item.metadataFile);
|
|
110
|
+
if (yield storage.pathExists(oldMetaPath)) {
|
|
111
|
+
yield storage.deleteFile(oldMetaPath);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// Delete old index file last
|
|
116
|
+
yield storage.deleteFile(sourceIndexPath);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=migrateIndex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrateIndex.js","sourceRoot":"","sources":["../../src/codecs/migrateIndex.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrateIndex.spec.d.ts","sourceRoot":"","sources":["../../src/codecs/migrateIndex.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,151 @@
|
|
|
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 storage_1 = require("../storage");
|
|
17
|
+
const JsonCodec_1 = require("./JsonCodec");
|
|
18
|
+
const ProtobufCodec_1 = require("./ProtobufCodec");
|
|
19
|
+
const migrateIndex_1 = require("./migrateIndex");
|
|
20
|
+
describe('detectCodec', () => {
|
|
21
|
+
it('detects JSON format', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
22
|
+
const storage = new storage_1.VirtualFileStorage();
|
|
23
|
+
yield storage.createFolder('/idx');
|
|
24
|
+
yield storage.upsertFile('/idx/index.json', '{}');
|
|
25
|
+
const codec = yield (0, migrateIndex_1.detectCodec)('/idx', storage);
|
|
26
|
+
node_assert_1.default.equal(codec.extension, '.json');
|
|
27
|
+
}));
|
|
28
|
+
it('detects Protobuf format', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
29
|
+
const storage = new storage_1.VirtualFileStorage();
|
|
30
|
+
yield storage.createFolder('/idx');
|
|
31
|
+
yield storage.upsertFile('/idx/index.pb', Buffer.from([0]));
|
|
32
|
+
const codec = yield (0, migrateIndex_1.detectCodec)('/idx', storage);
|
|
33
|
+
node_assert_1.default.equal(codec.extension, '.pb');
|
|
34
|
+
}));
|
|
35
|
+
it('throws when both formats exist', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
36
|
+
const storage = new storage_1.VirtualFileStorage();
|
|
37
|
+
yield storage.createFolder('/idx');
|
|
38
|
+
yield storage.upsertFile('/idx/index.json', '{}');
|
|
39
|
+
yield storage.upsertFile('/idx/index.pb', Buffer.from([0]));
|
|
40
|
+
yield node_assert_1.default.rejects(() => (0, migrateIndex_1.detectCodec)('/idx', storage), /Both index\.json and index\.pb found/);
|
|
41
|
+
}));
|
|
42
|
+
it('throws when no index file exists', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
43
|
+
const storage = new storage_1.VirtualFileStorage();
|
|
44
|
+
yield storage.createFolder('/idx');
|
|
45
|
+
yield node_assert_1.default.rejects(() => (0, migrateIndex_1.detectCodec)('/idx', storage), /No index file found/);
|
|
46
|
+
}));
|
|
47
|
+
});
|
|
48
|
+
describe('migrateIndex', () => {
|
|
49
|
+
const json = new JsonCodec_1.JsonCodec();
|
|
50
|
+
const pb = new ProtobufCodec_1.ProtobufCodec();
|
|
51
|
+
function makeIndexData() {
|
|
52
|
+
return {
|
|
53
|
+
version: 1,
|
|
54
|
+
metadata_config: { indexed: ['cat'] },
|
|
55
|
+
items: [
|
|
56
|
+
{ id: 'item1', metadata: { cat: 'food' }, vector: [0.1, 0.2, 0.3], norm: 0.374 },
|
|
57
|
+
{ id: 'item2', metadata: { cat: 'drink' }, vector: [0.4, 0.5, 0.6], norm: 0.877, metadataFile: 'abc.json' },
|
|
58
|
+
],
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function makeCatalog() {
|
|
62
|
+
return {
|
|
63
|
+
version: 1,
|
|
64
|
+
count: 1,
|
|
65
|
+
uriToId: { 'doc.txt': 'doc-id-1' },
|
|
66
|
+
idToUri: { 'doc-id-1': 'doc.txt' },
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
it('migrates JSON -> Protobuf', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
70
|
+
const storage = new storage_1.VirtualFileStorage();
|
|
71
|
+
yield storage.createFolder('/idx');
|
|
72
|
+
const data = makeIndexData();
|
|
73
|
+
yield storage.upsertFile('/idx/index.json', json.serializeIndex(data));
|
|
74
|
+
yield storage.upsertFile('/idx/abc.json', json.serializeMetadata({ cat: 'drink', extra: 'data' }));
|
|
75
|
+
yield (0, migrateIndex_1.migrateIndex)('/idx', { to: 'protobuf', storage });
|
|
76
|
+
// Old files should be gone
|
|
77
|
+
node_assert_1.default.equal(yield storage.pathExists('/idx/index.json'), false);
|
|
78
|
+
node_assert_1.default.equal(yield storage.pathExists('/idx/abc.json'), false);
|
|
79
|
+
// New files should exist
|
|
80
|
+
node_assert_1.default.equal(yield storage.pathExists('/idx/index.pb'), true);
|
|
81
|
+
node_assert_1.default.equal(yield storage.pathExists('/idx/abc.pb'), true);
|
|
82
|
+
// Data should be intact
|
|
83
|
+
const result = pb.deserializeIndex(yield storage.readFile('/idx/index.pb'));
|
|
84
|
+
node_assert_1.default.equal(result.items.length, 2);
|
|
85
|
+
node_assert_1.default.equal(result.items[0].id, 'item1');
|
|
86
|
+
node_assert_1.default.equal(result.items[1].metadataFile, 'abc.pb');
|
|
87
|
+
// External metadata should be readable
|
|
88
|
+
const meta = pb.deserializeMetadata(yield storage.readFile('/idx/abc.pb'));
|
|
89
|
+
node_assert_1.default.equal(meta.cat, 'drink');
|
|
90
|
+
node_assert_1.default.equal(meta.extra, 'data');
|
|
91
|
+
}));
|
|
92
|
+
it('migrates Protobuf -> JSON', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
93
|
+
const storage = new storage_1.VirtualFileStorage();
|
|
94
|
+
yield storage.createFolder('/idx');
|
|
95
|
+
const data = makeIndexData();
|
|
96
|
+
// Adjust metadataFile extension
|
|
97
|
+
data.items[1].metadataFile = 'abc.pb';
|
|
98
|
+
yield storage.upsertFile('/idx/index.pb', pb.serializeIndex(data));
|
|
99
|
+
yield storage.upsertFile('/idx/abc.pb', pb.serializeMetadata({ cat: 'drink', extra: 'data' }));
|
|
100
|
+
yield (0, migrateIndex_1.migrateIndex)('/idx', { to: 'json', storage });
|
|
101
|
+
node_assert_1.default.equal(yield storage.pathExists('/idx/index.pb'), false);
|
|
102
|
+
node_assert_1.default.equal(yield storage.pathExists('/idx/index.json'), true);
|
|
103
|
+
const result = json.deserializeIndex(yield storage.readFile('/idx/index.json'));
|
|
104
|
+
node_assert_1.default.equal(result.items.length, 2);
|
|
105
|
+
node_assert_1.default.equal(result.items[1].metadataFile, 'abc.json');
|
|
106
|
+
}));
|
|
107
|
+
it('migrates catalog along with index', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
108
|
+
const storage = new storage_1.VirtualFileStorage();
|
|
109
|
+
yield storage.createFolder('/idx');
|
|
110
|
+
const data = { version: 1, metadata_config: {}, items: [] };
|
|
111
|
+
const catalog = makeCatalog();
|
|
112
|
+
yield storage.upsertFile('/idx/index.json', json.serializeIndex(data));
|
|
113
|
+
yield storage.upsertFile('/idx/catalog.json', json.serializeCatalog(catalog));
|
|
114
|
+
yield (0, migrateIndex_1.migrateIndex)('/idx', { to: 'protobuf', storage });
|
|
115
|
+
node_assert_1.default.equal(yield storage.pathExists('/idx/catalog.json'), false);
|
|
116
|
+
node_assert_1.default.equal(yield storage.pathExists('/idx/catalog.pb'), true);
|
|
117
|
+
const result = pb.deserializeCatalog(yield storage.readFile('/idx/catalog.pb'));
|
|
118
|
+
node_assert_1.default.deepStrictEqual(result, catalog);
|
|
119
|
+
}));
|
|
120
|
+
it('migrates document metadata files referenced by catalog', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
121
|
+
const storage = new storage_1.VirtualFileStorage();
|
|
122
|
+
yield storage.createFolder('/idx');
|
|
123
|
+
const data = { version: 1, metadata_config: {}, items: [] };
|
|
124
|
+
const catalog = makeCatalog();
|
|
125
|
+
yield storage.upsertFile('/idx/index.json', json.serializeIndex(data));
|
|
126
|
+
yield storage.upsertFile('/idx/catalog.json', json.serializeCatalog(catalog));
|
|
127
|
+
yield storage.upsertFile('/idx/doc-id-1.json', json.serializeMetadata({ author: 'test' }));
|
|
128
|
+
yield (0, migrateIndex_1.migrateIndex)('/idx', { to: 'protobuf', storage });
|
|
129
|
+
node_assert_1.default.equal(yield storage.pathExists('/idx/doc-id-1.json'), false);
|
|
130
|
+
node_assert_1.default.equal(yield storage.pathExists('/idx/doc-id-1.pb'), true);
|
|
131
|
+
const meta = pb.deserializeMetadata(yield storage.readFile('/idx/doc-id-1.pb'));
|
|
132
|
+
node_assert_1.default.equal(meta.author, 'test');
|
|
133
|
+
}));
|
|
134
|
+
it('no-op when already in target format', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
135
|
+
const storage = new storage_1.VirtualFileStorage();
|
|
136
|
+
yield storage.createFolder('/idx');
|
|
137
|
+
const data = { version: 1, metadata_config: {}, items: [] };
|
|
138
|
+
yield storage.upsertFile('/idx/index.json', json.serializeIndex(data));
|
|
139
|
+
yield (0, migrateIndex_1.migrateIndex)('/idx', { to: 'json', storage });
|
|
140
|
+
// Should still be there, unchanged
|
|
141
|
+
node_assert_1.default.equal(yield storage.pathExists('/idx/index.json'), true);
|
|
142
|
+
}));
|
|
143
|
+
it('interruption detection: dual format raises error on detectCodec', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
144
|
+
const storage = new storage_1.VirtualFileStorage();
|
|
145
|
+
yield storage.createFolder('/idx');
|
|
146
|
+
yield storage.upsertFile('/idx/index.json', '{}');
|
|
147
|
+
yield storage.upsertFile('/idx/index.pb', Buffer.from([0]));
|
|
148
|
+
yield node_assert_1.default.rejects(() => (0, migrateIndex_1.detectCodec)('/idx', storage), /Both index\.json and index\.pb found/);
|
|
149
|
+
}));
|
|
150
|
+
});
|
|
151
|
+
//# sourceMappingURL=migrateIndex.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrateIndex.spec.js","sourceRoot":"","sources":["../../src/codecs/migrateIndex.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
message IndexData {
|
|
4
|
+
uint32 version = 1;
|
|
5
|
+
MetadataConfig metadata_config = 2;
|
|
6
|
+
repeated IndexItem items = 3;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
message MetadataConfig {
|
|
10
|
+
repeated string indexed = 1;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
message IndexItem {
|
|
14
|
+
string id = 1;
|
|
15
|
+
map<string, MetadataValue> metadata = 2;
|
|
16
|
+
repeated float vector = 3 [packed = true];
|
|
17
|
+
double norm = 4;
|
|
18
|
+
optional string metadata_file = 5;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
message MetadataValue {
|
|
22
|
+
oneof value {
|
|
23
|
+
string string_value = 1;
|
|
24
|
+
double number_value = 2;
|
|
25
|
+
bool bool_value = 3;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
message DocumentCatalog {
|
|
30
|
+
uint32 version = 1;
|
|
31
|
+
uint32 count = 2;
|
|
32
|
+
map<string, string> uri_to_id = 3;
|
|
33
|
+
map<string, string> id_to_uri = 4;
|
|
34
|
+
}
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export * from './codecs';
|
|
2
|
+
export * from './storage';
|
|
3
|
+
export * from './FileFetcher';
|
|
4
|
+
export * from './FolderWatcher';
|
|
5
|
+
export * from './GPT3Tokenizer';
|
|
6
|
+
export * from './ItemSelector';
|
|
7
|
+
export * from './LocalEmbeddings';
|
|
8
|
+
export * from './LocalIndex';
|
|
9
|
+
export * from './LocalDocument';
|
|
10
|
+
export * from './LocalDocumentIndex';
|
|
11
|
+
export * from './LocalDocumentResult';
|
|
12
|
+
export * from './TextSplitter';
|
|
13
|
+
export * from './OpenAIEmbeddings';
|
|
14
|
+
export * from './TransformersEmbeddings';
|
|
15
|
+
export * from './TransformersTokenizer';
|
|
16
|
+
export * from './types';
|
|
17
|
+
export * from './WebFetcher';
|
|
18
|
+
export * from './server';
|
|
19
|
+
export * from './utils/pathUtils';
|
|
20
|
+
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC"}
|