@delali/narsil 0.2.4-next.49 → 0.2.4-next.51
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 +1 -1
- package/dist/{options-Dtk99qUs.d.ts → capabilities-BWm4IITU.d.ts} +56 -48
- package/dist/chunk-AV4IJKD2.mjs +35 -0
- package/dist/{chunk-M6JGMKA5.mjs → chunk-BEIK3EOZ.mjs} +503 -2273
- package/dist/chunk-CMVG2UEF.mjs +2038 -0
- package/dist/chunk-CV5H7XL7.mjs +876 -0
- package/dist/{chunk-KGRYQVZ5.mjs → chunk-MHE7YWAU.mjs} +2 -1
- package/dist/{chunk-56PJBIJ6.mjs → chunk-ND34I3SV.mjs} +427 -1455
- package/dist/chunk-PIWKZPP7.mjs +64 -0
- package/dist/{chunk-HGJC5L65.mjs → chunk-PMBHH44R.mjs} +121 -2
- package/dist/chunk-RP23PWMV.mjs +11 -0
- package/dist/{chunk-RDGXYRF4.mjs → chunk-WYJXSLER.mjs} +8 -19
- package/dist/{chunk-JXHUHFJ5.mjs → chunk-X6YZO4MQ.mjs} +2 -11
- package/dist/{chunk-OWCFK42Q.mjs → chunk-XE6XR2OE.mjs} +3 -10
- package/dist/chunk-ZHUQKZBE.mjs +1292 -0
- package/dist/{client-DX7xPcNA.d.ts → client-B_X6_AbT.d.ts} +34 -10
- package/dist/client.d.ts +8 -8
- package/dist/client.mjs +26 -10
- package/dist/{config-B41W23Us.d.ts → config-Czh2YNDi.d.ts} +2 -2
- package/dist/{config-Co-zAXqO.d.ts → config-OON7IJ_B.d.ts} +26 -5
- package/dist/direct-executor-OREXU72C.mjs +12 -0
- package/dist/distribution/coordinator/etcd.d.ts +2 -2
- package/dist/distribution/coordinator/in-memory.d.ts +2 -2
- package/dist/distribution.d.ts +8 -8
- package/dist/distribution.mjs +28 -11
- package/dist/{engine-CABZg25p.d.ts → engine-9PtFY50q.d.ts} +114 -62
- package/dist/index.browser.mjs +3255 -2516
- package/dist/index.d.ts +7 -7
- package/dist/index.mjs +11 -6
- package/dist/{search-FjWhZN3f.d.ts → memory-Bzd5xcEW.d.ts} +88 -79
- package/dist/persistence/durability/checkpoint-worker.d.ts +1 -1
- package/dist/persistence/durability/checkpoint-worker.mjs +11 -6
- package/dist/react.d.ts +6 -6
- package/dist/{schema-B7juWg8Q.d.ts → schema-BqRx9t4E.d.ts} +22 -3
- package/dist/server.d.ts +48 -43
- package/dist/server.mjs +326 -819
- package/dist/{tasks-Bn4R1NPN.d.ts → tasks-DT7L1p6w.d.ts} +20 -1
- package/dist/thread-PZLEO6JL.mjs +310 -0
- package/dist/{types-DsSSjY4d.d.ts → types-DXPxaXPO.d.ts} +1 -1
- package/dist/vector/hnsw-build-worker.mjs +2 -1
- package/dist/vector/search-worker.mjs +3 -121
- package/dist/workers/entry.mjs +47 -3
- package/package.json +5 -1
- package/dist/direct-executor-HRTDWMVB.mjs +0 -9
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { NarsilError, ErrorCodes } from './chunk-P4ELXVJQ.mjs';
|
|
2
|
+
|
|
3
|
+
// src/narsil/internals.ts
|
|
4
|
+
var engineCores = /* @__PURE__ */ new WeakMap();
|
|
5
|
+
function bindEngineCore(engine, core) {
|
|
6
|
+
engineCores.set(engine, core);
|
|
7
|
+
}
|
|
8
|
+
function engineCoreOf(engine) {
|
|
9
|
+
return engineCores.get(engine);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
// src/distribution/constants.ts
|
|
13
|
+
var WIRE_BATCH_BUDGET = {
|
|
14
|
+
maxCount: 1e3,
|
|
15
|
+
maxBytes: 8388608,
|
|
16
|
+
overheadBytes: 256
|
|
17
|
+
};
|
|
18
|
+
var MAX_PARTITION_COUNT = 65536;
|
|
19
|
+
var MAX_REPLICATION_FACTOR = 255;
|
|
20
|
+
|
|
21
|
+
// src/engine/resolve-vector-text.ts
|
|
22
|
+
async function resolveVectorText(params, embeddingAdapter, signal, embeddingAdapterName) {
|
|
23
|
+
if (!params.vector) return params;
|
|
24
|
+
if (params.vector.text === void 0 && params.vector.value === void 0) return params;
|
|
25
|
+
if (params.vector.value !== void 0 && params.vector.text === void 0) return params;
|
|
26
|
+
if (params.vector.text !== void 0 && params.vector.value !== void 0) {
|
|
27
|
+
throw new NarsilError(ErrorCodes.EMBEDDING_CONFIG_INVALID, "Vector query cannot have both 'text' and 'value'");
|
|
28
|
+
}
|
|
29
|
+
if (!embeddingAdapter) {
|
|
30
|
+
throw new NarsilError(
|
|
31
|
+
ErrorCodes.EMBEDDING_CONFIG_INVALID,
|
|
32
|
+
embeddingAdapterName ? `Vector query with 'text' needs embedding adapter "${embeddingAdapterName}", which is not registered on this engine. Register it with registerEmbeddingAdapter or supply a raw vector.` : "Vector query with 'text' requires an embedding adapter on the index or instance",
|
|
33
|
+
embeddingAdapterName ? { adapter: embeddingAdapterName } : void 0
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
if (typeof params.vector.text !== "string") {
|
|
37
|
+
throw new NarsilError(
|
|
38
|
+
ErrorCodes.DOC_VALIDATION_FAILED,
|
|
39
|
+
`Vector query 'text' must be a string, got ${typeof params.vector.text}`
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
if (params.vector.text.length === 0) {
|
|
43
|
+
throw new NarsilError(ErrorCodes.DOC_VALIDATION_FAILED, "Vector query 'text' must not be empty");
|
|
44
|
+
}
|
|
45
|
+
const raw = await embeddingAdapter.embed(params.vector.text, "query", signal);
|
|
46
|
+
if (!(raw instanceof Float32Array)) {
|
|
47
|
+
throw new NarsilError(
|
|
48
|
+
ErrorCodes.EMBEDDING_FAILED,
|
|
49
|
+
`Adapter returned ${typeof raw} for query embedding, expected Float32Array`
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
if (raw.length !== embeddingAdapter.dimensions) {
|
|
53
|
+
throw new NarsilError(
|
|
54
|
+
ErrorCodes.EMBEDDING_DIMENSION_MISMATCH,
|
|
55
|
+
`Adapter returned ${raw.length}-dimensional vector for query, expected ${embeddingAdapter.dimensions}`,
|
|
56
|
+
{ expected: embeddingAdapter.dimensions, actual: raw.length }
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
const resolved = { ...params.vector, value: Array.from(raw) };
|
|
60
|
+
delete resolved.text;
|
|
61
|
+
return { ...params, vector: resolved };
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export { MAX_PARTITION_COUNT, MAX_REPLICATION_FACTOR, WIRE_BATCH_BUDGET, bindEngineCore, engineCoreOf, resolveVectorText };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createArenaSimd, WASM_PAGE_BYTES, VECTOR_STORE_INITIAL_CAPACITY, QUANTIZATION_PADDING_FACTOR } from './chunk-
|
|
1
|
+
import { createSharedArenaSimd, importAdjacency, createHNSWWorkspace, createArenaSimd, WASM_PAGE_BYTES, VECTOR_STORE_INITIAL_CAPACITY, arenaFloat32Distance, ABSENT_DOCUMENT_RANK, QUANTIZATION_PADDING_FACTOR } from './chunk-X6YZO4MQ.mjs';
|
|
2
2
|
|
|
3
3
|
// src/vector/scalar-quantization-math.ts
|
|
4
4
|
function deriveSq8Constants(alpha, offset, dimensions) {
|
|
@@ -68,6 +68,125 @@ function arenaQuantizedDistance(simd, queryByteOffset, codeByteOffset, dimension
|
|
|
68
68
|
return 1 - realDot / (queryMagnitude * documentMagnitude);
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
+
// src/vector/shared-generation/worker-view.ts
|
|
72
|
+
function createVectorReader(snapshot, simd, scratchSlot) {
|
|
73
|
+
const { layout, magnitudes, rankByOrdinal } = snapshot;
|
|
74
|
+
const { dimension, slots } = layout;
|
|
75
|
+
const vectors = new Float32Array(snapshot.memory.buffer, layout.vectorsOffset, slots * dimension);
|
|
76
|
+
const scratchByteOffset = scratchSlot * layout.float32ScratchStride;
|
|
77
|
+
const scratch = simd ? new Float32Array(snapshot.memory.buffer, scratchByteOffset, dimension) : null;
|
|
78
|
+
const holdsDocument = (ordinal) => ordinal >= 0 && ordinal < slots && rankByOrdinal[ordinal] !== ABSENT_DOCUMENT_RANK;
|
|
79
|
+
return {
|
|
80
|
+
entryForOrdinal(ordinal) {
|
|
81
|
+
if (!holdsDocument(ordinal)) return void 0;
|
|
82
|
+
const base = ordinal * dimension;
|
|
83
|
+
return { vector: vectors.subarray(base, base + dimension), magnitude: magnitudes[ordinal] };
|
|
84
|
+
},
|
|
85
|
+
prepareQueryArena(query) {
|
|
86
|
+
if (!simd || !scratch || query.length !== dimension) return null;
|
|
87
|
+
scratch.set(query, 0);
|
|
88
|
+
return { magnitude: simd.magnitude(scratchByteOffset, dimension) };
|
|
89
|
+
},
|
|
90
|
+
distanceFromArena(prepared, ordinal, metric) {
|
|
91
|
+
if (!simd || !holdsDocument(ordinal)) return Number.POSITIVE_INFINITY;
|
|
92
|
+
const byteOffset = layout.vectorsOffset + ordinal * dimension * 4;
|
|
93
|
+
return arenaFloat32Distance(
|
|
94
|
+
simd,
|
|
95
|
+
scratchByteOffset,
|
|
96
|
+
byteOffset,
|
|
97
|
+
dimension,
|
|
98
|
+
metric,
|
|
99
|
+
prepared.magnitude,
|
|
100
|
+
magnitudes[ordinal]
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
function createQuantizerReader(snapshot, simd, scratchSlot) {
|
|
106
|
+
if (snapshot.quantization !== "sq8" || snapshot.calibration === null) return void 0;
|
|
107
|
+
const { layout, codeSums, codeMagnitudes, codePresent } = snapshot;
|
|
108
|
+
const { dimension, slots } = layout;
|
|
109
|
+
const constants = deriveSq8Constants(snapshot.calibration.alpha, snapshot.calibration.offset, dimension);
|
|
110
|
+
const codes = new Uint8Array(snapshot.memory.buffer, layout.codesOffset, slots * dimension);
|
|
111
|
+
const scratchByteOffset = layout.codeScratchOffset + scratchSlot * layout.codeScratchStride;
|
|
112
|
+
const scratch = simd ? new Uint8Array(snapshot.memory.buffer, scratchByteOffset, dimension) : null;
|
|
113
|
+
let liveCodes = 0;
|
|
114
|
+
for (let ordinal = 0; ordinal < codePresent.length; ordinal++) {
|
|
115
|
+
if (codePresent[ordinal] === 1) liveCodes++;
|
|
116
|
+
}
|
|
117
|
+
const holdsCodes = (ordinal) => ordinal >= 0 && ordinal < slots && codePresent[ordinal] === 1;
|
|
118
|
+
return {
|
|
119
|
+
get size() {
|
|
120
|
+
return liveCodes;
|
|
121
|
+
},
|
|
122
|
+
isCalibrated: () => true,
|
|
123
|
+
prepareQuery(query) {
|
|
124
|
+
const quantized = new Uint8Array(dimension);
|
|
125
|
+
const { sum, sumSq } = quantizeVectorInto(quantized, query, dimension, constants);
|
|
126
|
+
return { quantized, sum, sumSq, magnitude: quantizedMagnitude(constants, sumSq, sum) };
|
|
127
|
+
},
|
|
128
|
+
distanceFromPreparedByOrdinal(prepared, ordinal, metric) {
|
|
129
|
+
if (!holdsCodes(ordinal)) return Number.POSITIVE_INFINITY;
|
|
130
|
+
return scalarQuantizedDistance(
|
|
131
|
+
codes,
|
|
132
|
+
codeSums,
|
|
133
|
+
codeMagnitudes,
|
|
134
|
+
dimension,
|
|
135
|
+
constants,
|
|
136
|
+
prepared.quantized,
|
|
137
|
+
prepared.sum,
|
|
138
|
+
prepared.magnitude,
|
|
139
|
+
ordinal,
|
|
140
|
+
metric
|
|
141
|
+
);
|
|
142
|
+
},
|
|
143
|
+
prepareQueryArena(query) {
|
|
144
|
+
if (!simd || !scratch) return null;
|
|
145
|
+
const { sum, sumSq } = quantizeVectorInto(scratch, query, dimension, constants);
|
|
146
|
+
return { sum, sumSq, magnitude: quantizedMagnitude(constants, sumSq, sum) };
|
|
147
|
+
},
|
|
148
|
+
distanceFromArena(prepared, ordinal, metric) {
|
|
149
|
+
if (!simd || !holdsCodes(ordinal)) return Number.POSITIVE_INFINITY;
|
|
150
|
+
return arenaQuantizedDistance(
|
|
151
|
+
simd,
|
|
152
|
+
scratchByteOffset,
|
|
153
|
+
layout.codesOffset + ordinal * dimension,
|
|
154
|
+
dimension,
|
|
155
|
+
constants,
|
|
156
|
+
prepared.sum,
|
|
157
|
+
prepared.magnitude,
|
|
158
|
+
codeSums[ordinal],
|
|
159
|
+
codeMagnitudes[ordinal],
|
|
160
|
+
metric
|
|
161
|
+
);
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
function openSharedWorkerCopy(snapshot, scratchSlot) {
|
|
166
|
+
if (scratchSlot < 0 || scratchSlot >= snapshot.layout.workerSlots) {
|
|
167
|
+
throw new Error(`Scratch slot ${scratchSlot} is outside the ${snapshot.layout.workerSlots} reserved slots`);
|
|
168
|
+
}
|
|
169
|
+
const simd = createSharedArenaSimd(snapshot.memory);
|
|
170
|
+
const adjacency = importAdjacency(snapshot.graph.adjacency);
|
|
171
|
+
const capacity = Math.max(snapshot.graph.capacity, adjacency.capacity);
|
|
172
|
+
const searchState = {
|
|
173
|
+
dimension: snapshot.dimension,
|
|
174
|
+
store: createVectorReader(snapshot, simd, scratchSlot),
|
|
175
|
+
quantizer: createQuantizerReader(snapshot, simd, scratchSlot),
|
|
176
|
+
adjacency,
|
|
177
|
+
tombstones: snapshot.graph.tombstones,
|
|
178
|
+
tombstoneCount: snapshot.graph.tombstoneCount,
|
|
179
|
+
nodeCount: snapshot.graph.nodeCount,
|
|
180
|
+
capacity,
|
|
181
|
+
visited: new Uint32Array(capacity),
|
|
182
|
+
visitStamp: 0,
|
|
183
|
+
entryPointOrd: snapshot.graph.entryPointOrd,
|
|
184
|
+
topLayer: snapshot.graph.topLayer,
|
|
185
|
+
workspace: createHNSWWorkspace()
|
|
186
|
+
};
|
|
187
|
+
return { searchState, rankByOrdinal: snapshot.rankByOrdinal };
|
|
188
|
+
}
|
|
189
|
+
|
|
71
190
|
// src/vector/scalar-quantization-calibration.ts
|
|
72
191
|
function computeCalibrationBounds(vectors, dimensions) {
|
|
73
192
|
let globalMin = Number.POSITIVE_INFINITY;
|
|
@@ -370,4 +489,4 @@ function createScalarQuantizer(dimensions, ordinalSource) {
|
|
|
370
489
|
};
|
|
371
490
|
}
|
|
372
491
|
|
|
373
|
-
export {
|
|
492
|
+
export { createScalarQuantizer, openSharedWorkerCopy };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// src/vector/hnsw/constants.ts
|
|
2
|
+
var MAX_LAYER_CAP = 32;
|
|
3
|
+
var MAX_M = 512;
|
|
4
|
+
var INITIAL_UPPER_SLOTS = 64;
|
|
5
|
+
var INITIAL_LIST_CAPACITY = 64;
|
|
6
|
+
var COMPACTION_TOMBSTONE_RATIO = 0.1;
|
|
7
|
+
var COMPACTION_ABSOLUTE_THRESHOLD = 1e3;
|
|
8
|
+
var SQ8_OVERSELECTION_FACTOR = 2;
|
|
9
|
+
var SQ8_RERANK_FLOOR = 10;
|
|
10
|
+
|
|
11
|
+
export { COMPACTION_ABSOLUTE_THRESHOLD, COMPACTION_TOMBSTONE_RATIO, INITIAL_LIST_CAPACITY, INITIAL_UPPER_SLOTS, MAX_LAYER_CAP, MAX_M, SQ8_OVERSELECTION_FACTOR, SQ8_RERANK_FLOOR };
|
|
@@ -1,20 +1,3 @@
|
|
|
1
|
-
// src/core/id-generator.ts
|
|
2
|
-
function generateId() {
|
|
3
|
-
const bytes = new Uint8Array(16);
|
|
4
|
-
crypto.getRandomValues(bytes);
|
|
5
|
-
const now = Date.now();
|
|
6
|
-
bytes[0] = Math.floor(now / 2 ** 40);
|
|
7
|
-
bytes[1] = Math.floor(now / 2 ** 32) % 256;
|
|
8
|
-
bytes[2] = Math.floor(now / 2 ** 24) % 256;
|
|
9
|
-
bytes[3] = Math.floor(now / 2 ** 16) % 256;
|
|
10
|
-
bytes[4] = Math.floor(now / 2 ** 8) % 256;
|
|
11
|
-
bytes[5] = now % 256;
|
|
12
|
-
bytes[6] = bytes[6] & 15 | 112;
|
|
13
|
-
bytes[8] = bytes[8] & 63 | 128;
|
|
14
|
-
const hex = Array.from(bytes, (b) => b.toString(16).padStart(2, "0")).join("");
|
|
15
|
-
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
1
|
// src/workers/protocol.ts
|
|
19
2
|
var KNOWN_ACTION_TYPES = [
|
|
20
3
|
"insert",
|
|
@@ -26,6 +9,10 @@ var KNOWN_ACTION_TYPES = [
|
|
|
26
9
|
"has",
|
|
27
10
|
"count",
|
|
28
11
|
"createIndex",
|
|
12
|
+
"loadVectorCopy",
|
|
13
|
+
"dropVectorCopy",
|
|
14
|
+
"serveRequests",
|
|
15
|
+
"stopServing",
|
|
29
16
|
"dropIndex",
|
|
30
17
|
"getStats",
|
|
31
18
|
"clear",
|
|
@@ -41,8 +28,10 @@ var KNOWN_ACTION_TYPES = [
|
|
|
41
28
|
"bootstrap",
|
|
42
29
|
"shutdown"
|
|
43
30
|
];
|
|
31
|
+
var nextRequestSequence = 0;
|
|
44
32
|
function createRequestId() {
|
|
45
|
-
|
|
33
|
+
nextRequestSequence += 1;
|
|
34
|
+
return String(nextRequestSequence);
|
|
46
35
|
}
|
|
47
36
|
function isValidWorkerAction(msg) {
|
|
48
37
|
if (msg === null || msg === void 0 || typeof msg !== "object") {
|
|
@@ -68,4 +57,4 @@ function isValidWorkerResponse(msg) {
|
|
|
68
57
|
return true;
|
|
69
58
|
}
|
|
70
59
|
|
|
71
|
-
export { createRequestId,
|
|
60
|
+
export { createRequestId, isValidWorkerAction, isValidWorkerResponse };
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { INITIAL_LIST_CAPACITY, COMPACTION_TOMBSTONE_RATIO, COMPACTION_ABSOLUTE_THRESHOLD, MAX_LAYER_CAP, SQ8_OVERSELECTION_FACTOR, SQ8_RERANK_FLOOR, INITIAL_UPPER_SLOTS } from './chunk-RP23PWMV.mjs';
|
|
1
2
|
import { compareCodePoints } from './chunk-2GWVQWGA.mjs';
|
|
2
3
|
|
|
3
4
|
// src/vector/constants.ts
|
|
@@ -546,16 +547,6 @@ function createVectorStore() {
|
|
|
546
547
|
};
|
|
547
548
|
}
|
|
548
549
|
|
|
549
|
-
// src/vector/hnsw/constants.ts
|
|
550
|
-
var MAX_LAYER_CAP = 32;
|
|
551
|
-
var MAX_M = 512;
|
|
552
|
-
var INITIAL_UPPER_SLOTS = 64;
|
|
553
|
-
var INITIAL_LIST_CAPACITY = 64;
|
|
554
|
-
var COMPACTION_TOMBSTONE_RATIO = 0.1;
|
|
555
|
-
var COMPACTION_ABSOLUTE_THRESHOLD = 1e3;
|
|
556
|
-
var SQ8_OVERSELECTION_FACTOR = 2;
|
|
557
|
-
var SQ8_RERANK_FLOOR = 10;
|
|
558
|
-
|
|
559
550
|
// src/vector/hnsw/adjacency.ts
|
|
560
551
|
var ABSENT = -1;
|
|
561
552
|
function createAdjacency(m, mMax0) {
|
|
@@ -1578,4 +1569,4 @@ function createHNSWIndex(dimension, store, config, quantizer) {
|
|
|
1578
1569
|
};
|
|
1579
1570
|
}
|
|
1580
1571
|
|
|
1581
|
-
export { ABSENT_DOCUMENT_RANK, HNSW_BUILD_TIMEOUT_MS,
|
|
1572
|
+
export { ABSENT_DOCUMENT_RANK, HNSW_BUILD_TIMEOUT_MS, MAX_WASM_PAGES, MAX_WORKER_COPIES, MAX_WORKER_DIMENSION, MAX_WORKER_VECTORS, QUANTIZATION_PADDING_FACTOR, VECTOR_SEARCH_LOAD_TIMEOUT_MS, VECTOR_SEARCH_TIMEOUT_MS, VECTOR_STORE_INITIAL_CAPACITY, WASM_PAGE_BYTES, addToOrdinalFilter, arenaFloat32Distance, cosineSimilarityWithMagnitudes, createArenaSimd, createHNSWIndex, createHNSWWorkspace, createOrdinalFilter, createSharedArenaSimd, createVectorStore, dotProduct, entryForOrd, euclideanDistance, importAdjacency, isSimdAvailable, magnitude, ordinalFilterHas, ordinalFilterValues, removeFromOrdinalFilter, searchOrdinals, toDistance, toScore };
|
|
@@ -1,14 +1,5 @@
|
|
|
1
1
|
import { DEFAULT_PAGE_SIZE } from './chunk-CBLS46IE.mjs';
|
|
2
2
|
|
|
3
|
-
// src/distribution/constants.ts
|
|
4
|
-
var WIRE_BATCH_BUDGET = {
|
|
5
|
-
maxCount: 1e3,
|
|
6
|
-
maxBytes: 8388608,
|
|
7
|
-
overheadBytes: 256
|
|
8
|
-
};
|
|
9
|
-
var MAX_PARTITION_COUNT = 65536;
|
|
10
|
-
var MAX_REPLICATION_FACTOR = 255;
|
|
11
|
-
|
|
12
3
|
// src/engine/constants.ts
|
|
13
4
|
var MIN_DOCUMENTS_FOR_SEGMENTS = 64;
|
|
14
5
|
var BATCH_CHUNK_SIZE = 1e3;
|
|
@@ -19,6 +10,8 @@ var MAX_INDEX_NAME_LENGTH = 255;
|
|
|
19
10
|
var MAX_DOC_ID_LENGTH = 512;
|
|
20
11
|
var MIN_SWEEP_INTERVAL_MS = 100;
|
|
21
12
|
var MAX_SWEEP_INTERVAL_MS = 6e4;
|
|
13
|
+
var HEAP_PRESSURE_WARNING_FRACTION = 0.9;
|
|
14
|
+
var HEAP_PRESSURE_REARM_FRACTION = 0.8;
|
|
22
15
|
var STATISTICS_BROADCAST_INTERVAL_MS = 5e3;
|
|
23
16
|
var FOREIGN_STATS_TTL_MS = 6e4;
|
|
24
17
|
var DEFAULT_SUGGEST_LIMIT = 10;
|
|
@@ -27,4 +20,4 @@ var SUGGEST_OVERSAMPLE_FACTOR = 1.5;
|
|
|
27
20
|
var SUGGEST_OVERSAMPLE_PADDING = 10;
|
|
28
21
|
var MAX_SUGGEST_SCATTER_LIMIT = Math.ceil(MAX_SUGGEST_LIMIT * SUGGEST_OVERSAMPLE_FACTOR) + SUGGEST_OVERSAMPLE_PADDING;
|
|
29
22
|
|
|
30
|
-
export { BATCH_CHUNK_SIZE, DEFAULT_LIMIT, DEFAULT_OFFSET, DEFAULT_SUGGEST_LIMIT, FOREIGN_STATS_TTL_MS,
|
|
23
|
+
export { BATCH_CHUNK_SIZE, DEFAULT_LIMIT, DEFAULT_OFFSET, DEFAULT_SUGGEST_LIMIT, FOREIGN_STATS_TTL_MS, HEAP_PRESSURE_REARM_FRACTION, HEAP_PRESSURE_WARNING_FRACTION, INDEX_NAME_PATTERN, MAX_DOC_ID_LENGTH, MAX_INDEX_NAME_LENGTH, MAX_SUGGEST_LIMIT, MAX_SUGGEST_SCATTER_LIMIT, MAX_SWEEP_INTERVAL_MS, MIN_DOCUMENTS_FOR_SEGMENTS, MIN_SWEEP_INTERVAL_MS, STATISTICS_BROADCAST_INTERVAL_MS, SUGGEST_OVERSAMPLE_FACTOR, SUGGEST_OVERSAMPLE_PADDING };
|