@delali/narsil 0.1.7 → 0.1.8

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.
Files changed (87) hide show
  1. package/README.md +44 -2
  2. package/dist/adapters/filesystem.d.ts +1 -1
  3. package/dist/adapters/filesystem.mjs +46 -2
  4. package/dist/adapters/indexeddb.d.ts +1 -1
  5. package/dist/adapters/indexeddb.mjs +1 -1
  6. package/dist/adapters/memory.d.ts +1 -1
  7. package/dist/{adapters-BbRkoiu9.d.ts → adapters-Bo2JQg8b.d.ts} +2 -1
  8. package/dist/chunk-ALB35PRQ.mjs +98 -0
  9. package/dist/{chunk-KHL4RPC3.mjs → chunk-FS7XLIUS.mjs} +2536 -2284
  10. package/dist/chunk-GQEHCZG7.mjs +6825 -0
  11. package/dist/chunk-KMMJMDUA.mjs +44 -0
  12. package/dist/chunk-RQLXC2YS.mjs +269 -0
  13. package/dist/chunk-S7RJJMHI.mjs +1086 -0
  14. package/dist/{chunk-I24SGLFS.mjs → chunk-TW6BXTOL.mjs} +5 -1
  15. package/dist/chunk-WISGW24C.mjs +455 -0
  16. package/dist/config-cQLlYR3U.d.ts +470 -0
  17. package/dist/direct-executor-FX56DYD3.mjs +4 -0
  18. package/dist/distribution/coordinator/etcd.d.ts +16 -0
  19. package/dist/distribution/coordinator/etcd.mjs +2 -0
  20. package/dist/distribution/coordinator/in-memory.d.ts +7 -0
  21. package/dist/distribution/coordinator/in-memory.mjs +1 -0
  22. package/dist/distribution.d.ts +122 -0
  23. package/dist/distribution.mjs +7410 -0
  24. package/dist/embeddings/openai.d.ts +1 -1
  25. package/dist/embeddings/openai.mjs +1 -1
  26. package/dist/index.browser.mjs +11469 -7481
  27. package/dist/index.d.ts +6 -450
  28. package/dist/index.mjs +7 -3236
  29. package/dist/invalidation/broadcast-channel.d.ts +1 -1
  30. package/dist/invalidation/filesystem.d.ts +1 -1
  31. package/dist/invalidation/noop.d.ts +1 -1
  32. package/dist/{language-ClUGLuoC.d.ts → language-ONQ3iVDf.d.ts} +1 -0
  33. package/dist/languages/arabic.d.ts +1 -1
  34. package/dist/languages/armenian.d.ts +1 -1
  35. package/dist/languages/bulgarian.d.ts +1 -1
  36. package/dist/languages/chinese.d.ts +1 -1
  37. package/dist/languages/dagbani.d.ts +1 -1
  38. package/dist/languages/danish.d.ts +1 -1
  39. package/dist/languages/dutch.d.ts +1 -1
  40. package/dist/languages/english.d.ts +1 -1
  41. package/dist/languages/english.mjs +1 -1
  42. package/dist/languages/ewe.d.ts +1 -1
  43. package/dist/languages/finnish.d.ts +1 -1
  44. package/dist/languages/french.d.ts +1 -1
  45. package/dist/languages/ga.d.ts +1 -1
  46. package/dist/languages/german.d.ts +1 -1
  47. package/dist/languages/greek.d.ts +1 -1
  48. package/dist/languages/hausa.d.ts +1 -1
  49. package/dist/languages/hindi.d.ts +1 -1
  50. package/dist/languages/hungarian.d.ts +1 -1
  51. package/dist/languages/igbo.d.ts +1 -1
  52. package/dist/languages/indonesian.d.ts +1 -1
  53. package/dist/languages/irish.d.ts +1 -1
  54. package/dist/languages/italian.d.ts +1 -1
  55. package/dist/languages/japanese.d.ts +1 -1
  56. package/dist/languages/nepali.d.ts +1 -1
  57. package/dist/languages/norwegian.d.ts +1 -1
  58. package/dist/languages/portuguese.d.ts +1 -1
  59. package/dist/languages/romanian.d.ts +1 -1
  60. package/dist/languages/russian.d.ts +1 -1
  61. package/dist/languages/sanskrit.d.ts +1 -1
  62. package/dist/languages/serbian.d.ts +1 -1
  63. package/dist/languages/slovenian.d.ts +1 -1
  64. package/dist/languages/spanish.d.ts +1 -1
  65. package/dist/languages/swahili.d.ts +1 -1
  66. package/dist/languages/swedish.d.ts +1 -1
  67. package/dist/languages/tamil.d.ts +1 -1
  68. package/dist/languages/turkish.d.ts +1 -1
  69. package/dist/languages/twi.d.ts +1 -1
  70. package/dist/languages/ukrainian.d.ts +1 -1
  71. package/dist/languages/yoruba.d.ts +1 -1
  72. package/dist/languages/zulu.d.ts +1 -1
  73. package/dist/narsil-ChTdkwPu.d.ts +68 -0
  74. package/dist/persistence/durability/checkpoint-worker.d.ts +41 -0
  75. package/dist/persistence/durability/checkpoint-worker.mjs +59 -0
  76. package/dist/schema-BVaw7nqz.d.ts +58 -0
  77. package/dist/serialization/crc32-worker.d.ts +20 -0
  78. package/dist/serialization/crc32-worker.mjs +61 -0
  79. package/dist/server.d.ts +218 -0
  80. package/dist/server.mjs +1185 -0
  81. package/dist/types-Bt7c4hDF.d.ts +73 -0
  82. package/dist/vector/hnsw-build-worker.mjs +1 -1
  83. package/dist/workers/entry.mjs +1 -1
  84. package/package.json +37 -2
  85. package/dist/chunk-R2C2EQGO.mjs +0 -53
  86. package/dist/chunk-VVORJOXR.mjs +0 -759
  87. package/dist/direct-executor-LBJLGMJ2.mjs +0 -4
@@ -1,4 +1,4 @@
1
- import { I as InvalidationAdapter } from '../adapters-BbRkoiu9.js';
1
+ import { I as InvalidationAdapter } from '../adapters-Bo2JQg8b.js';
2
2
 
3
3
  interface BroadcastChannelInvalidationConfig {
4
4
  channelName?: string;
@@ -1,4 +1,4 @@
1
- import { I as InvalidationAdapter } from '../adapters-BbRkoiu9.js';
1
+ import { I as InvalidationAdapter } from '../adapters-Bo2JQg8b.js';
2
2
 
3
3
  interface FilesystemInvalidationConfig {
4
4
  directory: string;
@@ -1,4 +1,4 @@
1
- import { I as InvalidationAdapter } from '../adapters-BbRkoiu9.js';
1
+ import { I as InvalidationAdapter } from '../adapters-Bo2JQg8b.js';
2
2
 
3
3
  declare function createNoopInvalidation(): InvalidationAdapter;
4
4
 
@@ -8,6 +8,7 @@ interface TokenizerConfig {
8
8
  splitPattern?: RegExp;
9
9
  normalizeDiacritics?: boolean;
10
10
  minTokenLength?: number;
11
+ stripPossessive?: boolean;
11
12
  }
12
13
 
13
14
  export type { LanguageModule as L };
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const arabic: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const armenian: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const bulgarian: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const chinese: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const dagbani: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const danish: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const dutch: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const english: LanguageModule;
4
4
 
@@ -1 +1 @@
1
- export { english } from '../chunk-I24SGLFS.mjs';
1
+ export { english } from '../chunk-TW6BXTOL.mjs';
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const ewe: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const finnish: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const french: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const ga: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const german: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const greek: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const hausa: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const hindi: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const hungarian: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const igbo: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const indonesian: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const irish: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const italian: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const japanese: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const nepali: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const norwegian: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const portuguese: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const romanian: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const russian: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const sanskrit: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const serbian: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const slovenian: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const spanish: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const swahili: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const swedish: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const tamil: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const turkish: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const twi: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const ukrainian: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const yoruba: LanguageModule;
4
4
 
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ClUGLuoC.js';
1
+ import { L as LanguageModule } from '../language-ONQ3iVDf.js';
2
2
 
3
3
  declare const zulu: LanguageModule;
4
4
 
@@ -0,0 +1,68 @@
1
+ import { l as IndexInfo, m as IndexStats, q as PartitionStatsResult, B as BatchResult, Q as QueryParams, u as QueryResult, r as PreflightResult, y as SuggestParams, z as SuggestResult, M as MemoryStats, V as VectorMaintenanceResult, N as NarsilConfig } from './config-cQLlYR3U.js';
2
+ import { I as IndexConfig, A as AnyDocument, a as InsertOptions, P as PartitionConfig } from './schema-BVaw7nqz.js';
3
+
4
+ type NarsilEventMap = {
5
+ persistenceError: {
6
+ indexName: string;
7
+ partitionId: number;
8
+ error: Error;
9
+ retriesExhausted: boolean;
10
+ };
11
+ workerCrash: {
12
+ workerId: number;
13
+ indexNames: string[];
14
+ error: Error;
15
+ };
16
+ workerPromote: {
17
+ workerCount: number;
18
+ reason: string;
19
+ };
20
+ partitionRebalance: {
21
+ indexName: string;
22
+ oldCount: number;
23
+ newCount: number;
24
+ };
25
+ durabilityError: {
26
+ error: Error;
27
+ };
28
+ };
29
+
30
+ interface Narsil {
31
+ createIndex(name: string, config: IndexConfig): Promise<void>;
32
+ dropIndex(name: string): Promise<void>;
33
+ listIndexes(): IndexInfo[];
34
+ getStats(indexName: string): IndexStats;
35
+ getPartitionStats(indexName: string): PartitionStatsResult[];
36
+ insert(indexName: string, document: AnyDocument, docId?: string, options?: InsertOptions): Promise<string>;
37
+ insertBatch(indexName: string, documents: AnyDocument[], options?: InsertOptions): Promise<BatchResult>;
38
+ remove(indexName: string, docId: string): Promise<void>;
39
+ removeBatch(indexName: string, docIds: string[]): Promise<BatchResult>;
40
+ update(indexName: string, docId: string, document: AnyDocument): Promise<void>;
41
+ updateBatch(indexName: string, updates: Array<{
42
+ docId: string;
43
+ document: AnyDocument;
44
+ }>): Promise<BatchResult>;
45
+ get(indexName: string, docId: string): Promise<AnyDocument | undefined>;
46
+ getMultiple(indexName: string, docIds: string[]): Promise<Map<string, AnyDocument>>;
47
+ has(indexName: string, docId: string): Promise<boolean>;
48
+ countDocuments(indexName: string): Promise<number>;
49
+ query<T = AnyDocument>(indexName: string, params: QueryParams): Promise<QueryResult<T>>;
50
+ preflight(indexName: string, params: QueryParams): Promise<PreflightResult>;
51
+ suggest(indexName: string, params: SuggestParams): Promise<SuggestResult>;
52
+ snapshot(indexName: string): Promise<Uint8Array>;
53
+ restore(indexName: string, data: Uint8Array): Promise<void>;
54
+ checkpoint(indexName: string): Promise<void>;
55
+ clear(indexName: string): Promise<void>;
56
+ rebalance(indexName: string, targetPartitionCount: number): Promise<void>;
57
+ updatePartitionConfig(indexName: string, config: Partial<PartitionConfig>): Promise<void>;
58
+ getMemoryStats(): Promise<MemoryStats>;
59
+ compactVectors(indexName: string, fieldName?: string): Promise<void>;
60
+ optimizeVectors(indexName: string, fieldName?: string): Promise<void>;
61
+ vectorMaintenanceStatus(indexName: string): VectorMaintenanceResult[];
62
+ on<K extends keyof NarsilEventMap>(event: K, handler: (payload: NarsilEventMap[K]) => void): void;
63
+ off<K extends keyof NarsilEventMap>(event: K, handler: (payload: NarsilEventMap[K]) => void): void;
64
+ shutdown(): Promise<void>;
65
+ }
66
+ declare function createNarsil(config?: NarsilConfig): Promise<Narsil>;
67
+
68
+ export { type Narsil as N, type NarsilEventMap as a, createNarsil as c };
@@ -0,0 +1,41 @@
1
+ interface IndexMetadata {
2
+ indexName: string;
3
+ schema: Record<string, string>;
4
+ language: string;
5
+ partitionCount: number;
6
+ bm25Params: {
7
+ k1: number;
8
+ b: number;
9
+ };
10
+ createdAt: number;
11
+ engineVersion: string;
12
+ vectorFields?: Record<string, {
13
+ dimension: number;
14
+ metric: string;
15
+ quantization: string;
16
+ }>;
17
+ }
18
+
19
+ interface PartitionCheckpoint {
20
+ partitionId: number;
21
+ lastSeqNo: number;
22
+ primaryTerm: number;
23
+ }
24
+
25
+ interface CheckpointWorkerRequest {
26
+ root: string;
27
+ metadata: IndexMetadata;
28
+ targets: PartitionCheckpoint[];
29
+ compactionThreshold: number;
30
+ }
31
+ interface CheckpointWorkerSuccess {
32
+ type: 'success';
33
+ }
34
+ interface CheckpointWorkerError {
35
+ type: 'error';
36
+ message: string;
37
+ }
38
+ type CheckpointWorkerMessage = CheckpointWorkerSuccess | CheckpointWorkerError;
39
+ declare function handleRequest(raw: unknown): Promise<CheckpointWorkerSuccess>;
40
+
41
+ export { type CheckpointWorkerError, type CheckpointWorkerMessage, type CheckpointWorkerRequest, type CheckpointWorkerSuccess, handleRequest };
@@ -0,0 +1,59 @@
1
+ import { createDurableDirectory, writeSegmentedCheckpoint } from '../../chunk-GQEHCZG7.mjs';
2
+ import '../../chunk-FS7XLIUS.mjs';
3
+ import '../../chunk-S7RJJMHI.mjs';
4
+ import '../../chunk-KMMJMDUA.mjs';
5
+ import '../../chunk-TW6BXTOL.mjs';
6
+ import '../../chunk-ALB35PRQ.mjs';
7
+ import '../../chunk-HRABJLPB.mjs';
8
+
9
+ // src/persistence/durability/rebuild.ts
10
+ async function rebuildSnapshotFromDurable(root, metadata, targets, compactionThreshold) {
11
+ const directory = createDurableDirectory(root);
12
+ await writeSegmentedCheckpoint({ directory, metadata, targets, compactionThreshold });
13
+ }
14
+
15
+ // src/persistence/durability/checkpoint-worker.ts
16
+ async function handleRequest(raw) {
17
+ const request = raw;
18
+ if (typeof request.root !== "string" || request.root.length === 0) {
19
+ throw new Error("Checkpoint request is missing a durable root path");
20
+ }
21
+ if (request.metadata === null || typeof request.metadata !== "object") {
22
+ throw new Error("Checkpoint request is missing index metadata");
23
+ }
24
+ if (!Array.isArray(request.targets)) {
25
+ throw new Error("Checkpoint request is missing partition targets");
26
+ }
27
+ if (!Number.isInteger(request.compactionThreshold) || request.compactionThreshold <= 0) {
28
+ throw new Error("Checkpoint request has an invalid compaction threshold");
29
+ }
30
+ await rebuildSnapshotFromDurable(request.root, request.metadata, request.targets, request.compactionThreshold);
31
+ return { type: "success" };
32
+ }
33
+ async function setupAsync() {
34
+ let parentPort = null;
35
+ try {
36
+ const workerThreads = await import('worker_threads');
37
+ parentPort = workerThreads.parentPort ?? null;
38
+ } catch {
39
+ parentPort = null;
40
+ }
41
+ if (parentPort === null) {
42
+ return;
43
+ }
44
+ const port = parentPort;
45
+ port.on("message", (raw) => {
46
+ handleRequest(raw).then((result) => port.postMessage(result)).catch((err) => {
47
+ const message = err instanceof Error ? err.message : String(err);
48
+ port.postMessage({ type: "error", message });
49
+ });
50
+ });
51
+ }
52
+ function setupWorker() {
53
+ setupAsync().catch((err) => {
54
+ console.error("Checkpoint worker setup failed:", err);
55
+ });
56
+ }
57
+ setupWorker();
58
+
59
+ export { handleRequest };
@@ -0,0 +1,58 @@
1
+ import { E as EmbeddingAdapter } from './adapters-Bo2JQg8b.js';
2
+
3
+ type AnyDocument = Record<string, unknown> & {
4
+ id?: string;
5
+ };
6
+ type FieldType = 'string' | 'number' | 'boolean' | 'enum' | 'geopoint' | `vector[${number}]` | 'string[]' | 'number[]' | 'boolean[]' | 'enum[]';
7
+ type SchemaDefinition = {
8
+ [field: string]: FieldType | SchemaDefinition;
9
+ };
10
+ type VectorQuantizationMode = 'sq8' | 'none';
11
+ interface VectorIndexConfig {
12
+ threshold?: number;
13
+ filterThreshold?: number;
14
+ hnswConfig?: {
15
+ m?: number;
16
+ efConstruction?: number;
17
+ metric?: 'cosine' | 'dotProduct' | 'euclidean';
18
+ };
19
+ quantization?: VectorQuantizationMode;
20
+ }
21
+ interface EmbeddingFieldConfig {
22
+ adapter?: EmbeddingAdapter;
23
+ fields: Record<string, string | string[]>;
24
+ }
25
+ interface IndexConfig {
26
+ schema: SchemaDefinition;
27
+ language?: string;
28
+ partitions?: PartitionConfig;
29
+ defaultScoring?: ScoringMode;
30
+ bm25?: BM25Params;
31
+ stopWords?: Set<string> | ((defaults: Set<string>) => Set<string>);
32
+ tokenizer?: CustomTokenizer;
33
+ trackPositions?: boolean;
34
+ vectorPromotion?: VectorIndexConfig;
35
+ strict?: boolean;
36
+ embedding?: EmbeddingFieldConfig;
37
+ required?: string[];
38
+ }
39
+ interface BM25Params {
40
+ k1?: number;
41
+ b?: number;
42
+ }
43
+ interface CustomTokenizer {
44
+ tokenize(text: string): Array<{
45
+ token: string;
46
+ position: number;
47
+ }>;
48
+ }
49
+ interface PartitionConfig {
50
+ maxDocsPerPartition?: number;
51
+ maxPartitions?: number;
52
+ }
53
+ type ScoringMode = 'local' | 'dfs' | 'broadcast';
54
+ interface InsertOptions {
55
+ skipClone?: boolean;
56
+ }
57
+
58
+ export type { AnyDocument as A, BM25Params as B, CustomTokenizer as C, EmbeddingFieldConfig as E, FieldType as F, IndexConfig as I, PartitionConfig as P, SchemaDefinition as S, InsertOptions as a, ScoringMode as b };
@@ -0,0 +1,20 @@
1
+ interface ChecksumRequest {
2
+ buffer: ArrayBuffer;
3
+ byteOffset: number;
4
+ byteLength: number;
5
+ }
6
+ interface ChecksumResponse {
7
+ type: 'success';
8
+ checksum: number;
9
+ buffer: ArrayBuffer;
10
+ byteOffset: number;
11
+ byteLength: number;
12
+ }
13
+ interface ChecksumError {
14
+ type: 'error';
15
+ message: string;
16
+ }
17
+ type ChecksumWorkerMessage = ChecksumResponse | ChecksumError;
18
+ declare function handleRequest(raw: unknown): ChecksumResponse;
19
+
20
+ export { type ChecksumError, type ChecksumRequest, type ChecksumResponse, type ChecksumWorkerMessage, handleRequest };
@@ -0,0 +1,61 @@
1
+ import { crc32 } from '../chunk-KMMJMDUA.mjs';
2
+
3
+ // src/serialization/crc32-worker.ts
4
+ function handleRequest(raw) {
5
+ const request = raw;
6
+ if (!(request.buffer instanceof ArrayBuffer)) {
7
+ throw new Error("Checksum request is missing a transferable buffer");
8
+ }
9
+ const { byteOffset, byteLength } = request;
10
+ if (!Number.isInteger(byteOffset) || !Number.isInteger(byteLength) || byteOffset < 0 || byteLength < 0) {
11
+ throw new Error("Checksum request has an invalid range");
12
+ }
13
+ if (byteOffset + byteLength > request.buffer.byteLength) {
14
+ throw new Error("Checksum request range exceeds the buffer bounds");
15
+ }
16
+ const checksum = crc32(new Uint8Array(request.buffer, byteOffset, byteLength));
17
+ return { type: "success", checksum, buffer: request.buffer, byteOffset, byteLength };
18
+ }
19
+ async function setupAsync() {
20
+ let parentPort = null;
21
+ try {
22
+ const workerThreads = await import('worker_threads');
23
+ parentPort = workerThreads.parentPort ?? null;
24
+ } catch {
25
+ parentPort = null;
26
+ }
27
+ if (parentPort) {
28
+ const port = parentPort;
29
+ port.on("message", (raw) => {
30
+ try {
31
+ const result = handleRequest(raw);
32
+ port.postMessage(result, [result.buffer]);
33
+ } catch (err) {
34
+ const message = err instanceof Error ? err.message : String(err);
35
+ port.postMessage({ type: "error", message });
36
+ }
37
+ });
38
+ return;
39
+ }
40
+ const globalSelf = typeof self !== "undefined" ? self : void 0;
41
+ if (globalSelf && typeof globalSelf.postMessage === "function") {
42
+ const webSelf = globalSelf;
43
+ webSelf.onmessage = (event) => {
44
+ try {
45
+ const result = handleRequest(event.data);
46
+ webSelf.postMessage(result, [result.buffer]);
47
+ } catch (err) {
48
+ const message = err instanceof Error ? err.message : String(err);
49
+ webSelf.postMessage({ type: "error", message });
50
+ }
51
+ };
52
+ }
53
+ }
54
+ function setupWorker() {
55
+ setupAsync().catch((err) => {
56
+ console.error("Checksum worker setup failed:", err);
57
+ });
58
+ }
59
+ setupWorker();
60
+
61
+ export { handleRequest };