@delali/narsil 0.1.15 → 0.2.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/NOTICE +54 -0
- package/README.md +38 -982
- package/dist/adapters/filesystem.mjs +1 -1
- package/dist/adapters/indexeddb.mjs +1 -1
- package/dist/{chunk-WISGW24C.mjs → chunk-AUMKFYTG.mjs} +1 -1
- package/dist/{chunk-HRABJLPB.mjs → chunk-BKAI2WXI.mjs} +1 -0
- package/dist/chunk-GHJWC2E5.mjs +9 -0
- package/dist/chunk-KH3YGMVT.mjs +15 -0
- package/dist/{chunk-ALB35PRQ.mjs → chunk-M2EDG55Y.mjs} +8 -0
- package/dist/{chunk-HMO6OMZ3.mjs → chunk-S6IAXOBA.mjs} +1073 -506
- package/dist/chunk-TGP5M5R7.mjs +880 -0
- package/dist/chunk-U2BKYEC7.mjs +254 -0
- package/dist/{chunk-MEW7HD75.mjs → chunk-XAKNSWIK.mjs} +2543 -1154
- package/dist/{config-CojEPOgS.d.ts → config-P27AtSn4.d.ts} +28 -7
- package/dist/direct-executor-2FV3MEDD.mjs +5 -0
- package/dist/distribution/coordinator/etcd.d.ts +2 -2
- package/dist/distribution/coordinator/etcd.mjs +2 -2
- package/dist/distribution/coordinator/in-memory.d.ts +2 -2
- package/dist/distribution.d.ts +10 -4
- package/dist/distribution.mjs +1875 -1772
- package/dist/embeddings/openai.mjs +1 -1
- package/dist/index.browser.mjs +4566 -1783
- package/dist/index.d.ts +14 -5
- package/dist/index.mjs +6 -5
- package/dist/{language-ONQ3iVDf.d.ts → language-CmJBHf1j.d.ts} +4 -1
- package/dist/languages/albanian.d.ts +5 -0
- package/dist/languages/albanian.mjs +103 -0
- package/dist/languages/amharic.d.ts +5 -0
- package/dist/languages/amharic.mjs +240 -0
- package/dist/languages/arabic.d.ts +1 -1
- package/dist/languages/arabic.mjs +939 -154
- package/dist/languages/armenian.d.ts +1 -1
- package/dist/languages/armenian.mjs +275 -243
- package/dist/languages/azerbaijani.d.ts +5 -0
- package/dist/languages/azerbaijani.mjs +152 -0
- package/dist/languages/bambara.d.ts +5 -0
- package/dist/languages/bambara.mjs +60 -0
- package/dist/languages/basque.d.ts +5 -0
- package/dist/languages/basque.mjs +726 -0
- package/dist/languages/belarusian.d.ts +5 -0
- package/dist/languages/belarusian.mjs +100 -0
- package/dist/languages/bengali.d.ts +5 -0
- package/dist/languages/bengali.mjs +128 -0
- package/dist/languages/bosnian.d.ts +5 -0
- package/dist/languages/bosnian.mjs +197 -0
- package/dist/languages/breton.d.ts +5 -0
- package/dist/languages/breton.mjs +96 -0
- package/dist/languages/bulgarian.d.ts +1 -1
- package/dist/languages/bulgarian.mjs +11 -2
- package/dist/languages/burmese.d.ts +5 -0
- package/dist/languages/burmese.mjs +57 -0
- package/dist/languages/catalan.d.ts +5 -0
- package/dist/languages/catalan.mjs +987 -0
- package/dist/languages/chinese.d.ts +1 -1
- package/dist/languages/chinese.mjs +4 -3
- package/dist/languages/croatian.d.ts +5 -0
- package/dist/languages/croatian.mjs +191 -0
- package/dist/languages/czech.d.ts +5 -0
- package/dist/languages/czech.mjs +628 -0
- package/dist/languages/dagbani.d.ts +1 -1
- package/dist/languages/dagbani.mjs +11 -2
- package/dist/languages/danish.d.ts +1 -1
- package/dist/languages/danish.mjs +215 -110
- package/dist/languages/dutch.d.ts +1 -1
- package/dist/languages/dutch.mjs +1248 -163
- package/dist/languages/english.d.ts +1 -1
- package/dist/languages/english.mjs +2 -1
- package/dist/languages/esperanto.d.ts +5 -0
- package/dist/languages/esperanto.mjs +689 -0
- package/dist/languages/estonian.d.ts +5 -0
- package/dist/languages/estonian.mjs +2160 -0
- package/dist/languages/ewe.d.ts +1 -1
- package/dist/languages/ewe.mjs +11 -2
- package/dist/languages/faroese.d.ts +5 -0
- package/dist/languages/faroese.mjs +93 -0
- package/dist/languages/fijian.d.ts +5 -0
- package/dist/languages/fijian.mjs +55 -0
- package/dist/languages/finnish.d.ts +1 -1
- package/dist/languages/finnish.mjs +528 -263
- package/dist/languages/french.d.ts +1 -1
- package/dist/languages/french.mjs +950 -437
- package/dist/languages/ga.d.ts +1 -1
- package/dist/languages/ga.mjs +2 -1
- package/dist/languages/galician.d.ts +5 -0
- package/dist/languages/galician.mjs +172 -0
- package/dist/languages/georgian.d.ts +5 -0
- package/dist/languages/georgian.mjs +91 -0
- package/dist/languages/german.d.ts +1 -1
- package/dist/languages/german.mjs +432 -162
- package/dist/languages/greek.d.ts +1 -1
- package/dist/languages/greek.mjs +1970 -281
- package/dist/languages/guarani.d.ts +5 -0
- package/dist/languages/guarani.mjs +132 -0
- package/dist/languages/gujarati.d.ts +5 -0
- package/dist/languages/gujarati.mjs +234 -0
- package/dist/languages/haitian-creole.d.ts +5 -0
- package/dist/languages/haitian-creole.mjs +106 -0
- package/dist/languages/hausa.d.ts +1 -1
- package/dist/languages/hausa.mjs +2 -1
- package/dist/languages/hawaiian.d.ts +5 -0
- package/dist/languages/hawaiian.mjs +69 -0
- package/dist/languages/hebrew.d.ts +5 -0
- package/dist/languages/hebrew.mjs +213 -0
- package/dist/languages/hindi.d.ts +1 -1
- package/dist/languages/hindi.mjs +175 -97
- package/dist/languages/hungarian.d.ts +1 -1
- package/dist/languages/hungarian.mjs +412 -326
- package/dist/languages/icelandic.d.ts +5 -0
- package/dist/languages/icelandic.mjs +161 -0
- package/dist/languages/igbo.d.ts +1 -1
- package/dist/languages/igbo.mjs +2 -1
- package/dist/languages/indonesian.d.ts +1 -1
- package/dist/languages/indonesian.mjs +329 -137
- package/dist/languages/irish.d.ts +1 -1
- package/dist/languages/irish.mjs +223 -139
- package/dist/languages/italian.d.ts +1 -1
- package/dist/languages/italian.mjs +703 -406
- package/dist/languages/japanese.d.ts +1 -1
- package/dist/languages/japanese.mjs +5 -108
- package/dist/languages/kannada.d.ts +5 -0
- package/dist/languages/kannada.mjs +94 -0
- package/dist/languages/kazakh.d.ts +5 -0
- package/dist/languages/kazakh.mjs +90 -0
- package/dist/languages/khmer.d.ts +5 -0
- package/dist/languages/khmer.mjs +181 -0
- package/dist/languages/kinyarwanda.d.ts +5 -0
- package/dist/languages/kinyarwanda.mjs +99 -0
- package/dist/languages/kirundi.d.ts +5 -0
- package/dist/languages/kirundi.mjs +92 -0
- package/dist/languages/korean.d.ts +5 -0
- package/dist/languages/korean.mjs +252 -0
- package/dist/languages/kurmanji.d.ts +5 -0
- package/dist/languages/kurmanji.mjs +50 -0
- package/dist/languages/kyrgyz.d.ts +5 -0
- package/dist/languages/kyrgyz.mjs +108 -0
- package/dist/languages/lao.d.ts +5 -0
- package/dist/languages/lao.mjs +63 -0
- package/dist/languages/latin.d.ts +5 -0
- package/dist/languages/latin.mjs +69 -0
- package/dist/languages/latvian.d.ts +5 -0
- package/dist/languages/latvian.mjs +173 -0
- package/dist/languages/lingala.d.ts +5 -0
- package/dist/languages/lingala.mjs +61 -0
- package/dist/languages/lithuanian.d.ts +5 -0
- package/dist/languages/lithuanian.mjs +571 -0
- package/dist/languages/luxembourgish.d.ts +5 -0
- package/dist/languages/luxembourgish.mjs +214 -0
- package/dist/languages/macedonian.d.ts +5 -0
- package/dist/languages/macedonian.mjs +808 -0
- package/dist/languages/malagasy.d.ts +5 -0
- package/dist/languages/malagasy.mjs +67 -0
- package/dist/languages/malay.d.ts +5 -0
- package/dist/languages/malay.mjs +482 -0
- package/dist/languages/malayalam.d.ts +5 -0
- package/dist/languages/malayalam.mjs +122 -0
- package/dist/languages/maltese.d.ts +5 -0
- package/dist/languages/maltese.mjs +139 -0
- package/dist/languages/maori.d.ts +5 -0
- package/dist/languages/maori.mjs +79 -0
- package/dist/languages/marathi.d.ts +5 -0
- package/dist/languages/marathi.mjs +111 -0
- package/dist/languages/nepali.d.ts +1 -1
- package/dist/languages/nepali.mjs +209 -99
- package/dist/languages/norwegian.d.ts +1 -1
- package/dist/languages/norwegian.mjs +218 -85
- package/dist/languages/oromo.d.ts +5 -0
- package/dist/languages/oromo.mjs +78 -0
- package/dist/languages/persian.d.ts +5 -0
- package/dist/languages/persian.mjs +710 -0
- package/dist/languages/polish.d.ts +5 -0
- package/dist/languages/polish.mjs +614 -0
- package/dist/languages/portuguese.d.ts +1 -1
- package/dist/languages/portuguese.mjs +613 -380
- package/dist/languages/punjabi.d.ts +5 -0
- package/dist/languages/punjabi.mjs +197 -0
- package/dist/languages/romanian.d.ts +1 -1
- package/dist/languages/romanian.mjs +561 -382
- package/dist/languages/russian.d.ts +1 -1
- package/dist/languages/russian.mjs +373 -244
- package/dist/languages/samoan.d.ts +5 -0
- package/dist/languages/samoan.mjs +63 -0
- package/dist/languages/sanskrit.d.ts +1 -1
- package/dist/languages/sanskrit.mjs +2 -2
- package/dist/languages/scottish-gaelic.d.ts +5 -0
- package/dist/languages/scottish-gaelic.mjs +370 -0
- package/dist/languages/serbian.d.ts +1 -1
- package/dist/languages/serbian.mjs +3635 -155
- package/dist/languages/shona.d.ts +5 -0
- package/dist/languages/shona.mjs +91 -0
- package/dist/languages/sinhala.d.ts +5 -0
- package/dist/languages/sinhala.mjs +182 -0
- package/dist/languages/slovak.d.ts +5 -0
- package/dist/languages/slovak.mjs +430 -0
- package/dist/languages/slovenian.d.ts +1 -1
- package/dist/languages/slovenian.mjs +11 -2
- package/dist/languages/sorani.d.ts +5 -0
- package/dist/languages/sorani.mjs +156 -0
- package/dist/languages/spanish.d.ts +1 -1
- package/dist/languages/spanish.mjs +676 -374
- package/dist/languages/swahili.d.ts +1 -1
- package/dist/languages/swahili.mjs +2 -1
- package/dist/languages/swedish.d.ts +1 -1
- package/dist/languages/swedish.mjs +237 -95
- package/dist/languages/tagalog.d.ts +5 -0
- package/dist/languages/tagalog.mjs +159 -0
- package/dist/languages/tamil.d.ts +1 -1
- package/dist/languages/tamil.mjs +836 -64
- package/dist/languages/tatar.d.ts +5 -0
- package/dist/languages/tatar.mjs +1017 -0
- package/dist/languages/telugu.d.ts +5 -0
- package/dist/languages/telugu.mjs +62 -0
- package/dist/languages/thai.d.ts +5 -0
- package/dist/languages/thai.mjs +65 -0
- package/dist/languages/tibetan.d.ts +5 -0
- package/dist/languages/tibetan.mjs +119 -0
- package/dist/languages/tigrinya.d.ts +5 -0
- package/dist/languages/tigrinya.mjs +194 -0
- package/dist/languages/tongan.d.ts +5 -0
- package/dist/languages/tongan.mjs +56 -0
- package/dist/languages/turkish.d.ts +1 -1
- package/dist/languages/turkish.mjs +1246 -393
- package/dist/languages/twi.d.ts +1 -1
- package/dist/languages/twi.mjs +13 -2
- package/dist/languages/ukrainian.d.ts +1 -1
- package/dist/languages/ukrainian.mjs +125 -47
- package/dist/languages/urdu.d.ts +5 -0
- package/dist/languages/urdu.mjs +528 -0
- package/dist/languages/vietnamese.d.ts +5 -0
- package/dist/languages/vietnamese.mjs +277 -0
- package/dist/languages/welsh.d.ts +5 -0
- package/dist/languages/welsh.mjs +446 -0
- package/dist/languages/wolof.d.ts +5 -0
- package/dist/languages/wolof.mjs +79 -0
- package/dist/languages/xhosa.d.ts +5 -0
- package/dist/languages/xhosa.mjs +95 -0
- package/dist/languages/yoruba.d.ts +1 -1
- package/dist/languages/yoruba.mjs +1 -0
- package/dist/languages/zulu.d.ts +1 -1
- package/dist/languages/zulu.mjs +2 -1
- package/dist/narsil-CMZRPDlQ.d.ts +159 -0
- package/dist/persistence/durability/checkpoint-worker.d.ts +13 -0
- package/dist/persistence/durability/checkpoint-worker.mjs +6 -5
- package/dist/{schema-DCgkO1j4.d.ts → schema-BnvLvjRp.d.ts} +5 -3
- package/dist/server.d.ts +4 -3
- package/dist/server.mjs +13 -2
- package/dist/{types-DHX6zGeD.d.ts → types-BRTcBgAp.d.ts} +1 -1
- package/dist/workers/entry.mjs +2 -2
- package/package.json +10 -3
- package/dist/chunk-TW6BXTOL.mjs +0 -338
- package/dist/direct-executor-E52FFGDE.mjs +0 -4
- package/dist/narsil-D-84Nvm4.d.ts +0 -72
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
// src/languages/wolof.ts
|
|
2
|
+
var stopWords = /* @__PURE__ */ new Set([
|
|
3
|
+
"ak",
|
|
4
|
+
"am",
|
|
5
|
+
"ba",
|
|
6
|
+
"ban",
|
|
7
|
+
"beneen",
|
|
8
|
+
"benn",
|
|
9
|
+
"bi",
|
|
10
|
+
"bii",
|
|
11
|
+
"boobu",
|
|
12
|
+
"bu",
|
|
13
|
+
"ca",
|
|
14
|
+
"ci",
|
|
15
|
+
"dafa",
|
|
16
|
+
"dina",
|
|
17
|
+
"du",
|
|
18
|
+
"fa",
|
|
19
|
+
"fi",
|
|
20
|
+
"fu",
|
|
21
|
+
"gi",
|
|
22
|
+
"it",
|
|
23
|
+
"itam",
|
|
24
|
+
"ji",
|
|
25
|
+
"ki",
|
|
26
|
+
"kon",
|
|
27
|
+
"ku",
|
|
28
|
+
"la",
|
|
29
|
+
"l\xE9pp",
|
|
30
|
+
"li",
|
|
31
|
+
"lool",
|
|
32
|
+
"lu",
|
|
33
|
+
"ma",
|
|
34
|
+
"man",
|
|
35
|
+
"mi",
|
|
36
|
+
"moom",
|
|
37
|
+
"mu",
|
|
38
|
+
"na",
|
|
39
|
+
"naa",
|
|
40
|
+
"na\xF1u",
|
|
41
|
+
"ndax",
|
|
42
|
+
"ndaxte",
|
|
43
|
+
"ne",
|
|
44
|
+
"\xF1\xE9pp",
|
|
45
|
+
"nga",
|
|
46
|
+
"ngeen",
|
|
47
|
+
"ni",
|
|
48
|
+
"\xF1i",
|
|
49
|
+
"\xF1oom",
|
|
50
|
+
"\xF1u",
|
|
51
|
+
"nun",
|
|
52
|
+
"rekk",
|
|
53
|
+
"sa",
|
|
54
|
+
"sama",
|
|
55
|
+
"seen",
|
|
56
|
+
"si",
|
|
57
|
+
"su",
|
|
58
|
+
"sunu",
|
|
59
|
+
"te",
|
|
60
|
+
"waaye",
|
|
61
|
+
"walla",
|
|
62
|
+
"wi",
|
|
63
|
+
"yeen",
|
|
64
|
+
"yeneen",
|
|
65
|
+
"y\xE9pp",
|
|
66
|
+
"yi",
|
|
67
|
+
"yii",
|
|
68
|
+
"yooyu",
|
|
69
|
+
"yow"
|
|
70
|
+
]);
|
|
71
|
+
var wolof = {
|
|
72
|
+
name: "wolof",
|
|
73
|
+
revision: "1",
|
|
74
|
+
stemmer: null,
|
|
75
|
+
stopWords,
|
|
76
|
+
tokenizer: { splitPattern: /[^\p{Script=Latin}0-9]+/giu }
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
export { wolof };
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
// src/languages/xhosa.ts
|
|
2
|
+
var stopWords = /* @__PURE__ */ new Set([
|
|
3
|
+
"aba",
|
|
4
|
+
"abanye",
|
|
5
|
+
"abo",
|
|
6
|
+
"apho",
|
|
7
|
+
"bakhe",
|
|
8
|
+
"bona",
|
|
9
|
+
"bonke",
|
|
10
|
+
"eli",
|
|
11
|
+
"elo",
|
|
12
|
+
"emva",
|
|
13
|
+
"enye",
|
|
14
|
+
"esi",
|
|
15
|
+
"eso",
|
|
16
|
+
"ezi",
|
|
17
|
+
"ezinye",
|
|
18
|
+
"ezo",
|
|
19
|
+
"kakhulu",
|
|
20
|
+
"kamva",
|
|
21
|
+
"kancinci",
|
|
22
|
+
"kanye",
|
|
23
|
+
"ke",
|
|
24
|
+
"kodwa",
|
|
25
|
+
"konke",
|
|
26
|
+
"kuba",
|
|
27
|
+
"kunye",
|
|
28
|
+
"kwaye",
|
|
29
|
+
"la",
|
|
30
|
+
"lakhe",
|
|
31
|
+
"le",
|
|
32
|
+
"leyo",
|
|
33
|
+
"lo",
|
|
34
|
+
"lonke",
|
|
35
|
+
"lowo",
|
|
36
|
+
"malunga",
|
|
37
|
+
"mna",
|
|
38
|
+
"na",
|
|
39
|
+
"nangona",
|
|
40
|
+
"ngaphakathi",
|
|
41
|
+
"ngaphandle",
|
|
42
|
+
"ngenxa",
|
|
43
|
+
"ngoku",
|
|
44
|
+
"ngokuba",
|
|
45
|
+
"nina",
|
|
46
|
+
"nje",
|
|
47
|
+
"okanye",
|
|
48
|
+
"oko",
|
|
49
|
+
"oku",
|
|
50
|
+
"olo",
|
|
51
|
+
"olu",
|
|
52
|
+
"omnye",
|
|
53
|
+
"phakathi",
|
|
54
|
+
"phambi",
|
|
55
|
+
"phambili",
|
|
56
|
+
"phantsi",
|
|
57
|
+
"phezulu",
|
|
58
|
+
"sakhe",
|
|
59
|
+
"sonke",
|
|
60
|
+
"thina",
|
|
61
|
+
"ukuba",
|
|
62
|
+
"ukuze",
|
|
63
|
+
"wabo",
|
|
64
|
+
"wakhe",
|
|
65
|
+
"wakho",
|
|
66
|
+
"wam",
|
|
67
|
+
"wena",
|
|
68
|
+
"wenu",
|
|
69
|
+
"wethu",
|
|
70
|
+
"xa",
|
|
71
|
+
"yabo",
|
|
72
|
+
"yakhe",
|
|
73
|
+
"yakho",
|
|
74
|
+
"yam",
|
|
75
|
+
"yena",
|
|
76
|
+
"yenu",
|
|
77
|
+
"yethu",
|
|
78
|
+
"yonke",
|
|
79
|
+
"zabo",
|
|
80
|
+
"zakhe",
|
|
81
|
+
"zakho",
|
|
82
|
+
"zam",
|
|
83
|
+
"zenu",
|
|
84
|
+
"zethu",
|
|
85
|
+
"zonke"
|
|
86
|
+
]);
|
|
87
|
+
var xhosa = {
|
|
88
|
+
name: "xhosa",
|
|
89
|
+
revision: "1",
|
|
90
|
+
stemmer: null,
|
|
91
|
+
stopWords,
|
|
92
|
+
tokenizer: { splitPattern: /[^a-z0-9-]+/gi }
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
export { xhosa };
|
package/dist/languages/zulu.d.ts
CHANGED
package/dist/languages/zulu.mjs
CHANGED
|
@@ -101,10 +101,11 @@ var stopWords = /* @__PURE__ */ new Set([
|
|
|
101
101
|
]);
|
|
102
102
|
var zulu = {
|
|
103
103
|
name: "zulu",
|
|
104
|
+
revision: "1",
|
|
104
105
|
stemmer: null,
|
|
105
106
|
stopWords,
|
|
106
107
|
tokenizer: {
|
|
107
|
-
splitPattern: /[^a-zA-Z0-9]+/gi,
|
|
108
|
+
splitPattern: /[^a-zA-Z0-9-]+/gi,
|
|
108
109
|
normalizeDiacritics: false,
|
|
109
110
|
minTokenLength: 1
|
|
110
111
|
}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { I as IndexConfig, A as AnyDocument, a as InsertOptions, P as PartitionConfig } from './schema-BnvLvjRp.js';
|
|
2
|
+
import { k as IndexInfo, l as IndexStats, p as PartitionStatsResult, B as BatchResult, Q as QueryParams, t as QueryResult, q as PreflightResult, x as SuggestParams, y as SuggestResult, M as MemoryStats, V as VectorMaintenanceResult, N as NarsilConfig } from './config-P27AtSn4.js';
|
|
3
|
+
import { E as EmbeddingAdapter } from './adapters-Bo2JQg8b.js';
|
|
4
|
+
|
|
5
|
+
type NarsilEventMap = {
|
|
6
|
+
persistenceError: {
|
|
7
|
+
indexName: string;
|
|
8
|
+
partitionId: number;
|
|
9
|
+
error: Error;
|
|
10
|
+
retriesExhausted: boolean;
|
|
11
|
+
};
|
|
12
|
+
workerCrash: {
|
|
13
|
+
workerId: number;
|
|
14
|
+
indexNames: string[];
|
|
15
|
+
error: Error;
|
|
16
|
+
};
|
|
17
|
+
workerPromote: {
|
|
18
|
+
workerCount: number;
|
|
19
|
+
reason: string;
|
|
20
|
+
};
|
|
21
|
+
workerPromoteFailure: {
|
|
22
|
+
reason: string;
|
|
23
|
+
error: Error;
|
|
24
|
+
retryable: boolean;
|
|
25
|
+
};
|
|
26
|
+
partitionRebalance: {
|
|
27
|
+
indexName: string;
|
|
28
|
+
oldCount: number;
|
|
29
|
+
newCount: number;
|
|
30
|
+
};
|
|
31
|
+
partitionWatermark: {
|
|
32
|
+
indexName: string;
|
|
33
|
+
documentCount: number;
|
|
34
|
+
capacity: number;
|
|
35
|
+
partitionCount: number;
|
|
36
|
+
};
|
|
37
|
+
analysisRebuild: {
|
|
38
|
+
indexName: string;
|
|
39
|
+
status: 'started' | 'completed' | 'failed';
|
|
40
|
+
partitionsRebuilt: number;
|
|
41
|
+
partitionCount: number;
|
|
42
|
+
error?: Error;
|
|
43
|
+
};
|
|
44
|
+
durabilityError: {
|
|
45
|
+
error: Error;
|
|
46
|
+
};
|
|
47
|
+
invalidationError: {
|
|
48
|
+
error: Error;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
interface Narsil {
|
|
53
|
+
/**
|
|
54
|
+
* Creates an index you can insert documents into and query.
|
|
55
|
+
*
|
|
56
|
+
* The schema sets the type of each field, decides which fields you can
|
|
57
|
+
* filter and sort on, and controls how the engine tokenises text. The
|
|
58
|
+
* `language` option picks the analyser that stems those text fields.
|
|
59
|
+
*
|
|
60
|
+
* @param name - Every later call uses this name to reach the index.
|
|
61
|
+
* @param config - This carries the schema, and the language, partitioning,
|
|
62
|
+
* and scoring settings.
|
|
63
|
+
*/
|
|
64
|
+
createIndex(name: string, config: IndexConfig): Promise<void>;
|
|
65
|
+
/** Registers an adapter under a name that index configs can reference and
|
|
66
|
+
* durability metadata can persist; re-registering rebinds referencing indexes. */
|
|
67
|
+
registerEmbeddingAdapter(name: string, adapter: EmbeddingAdapter): void;
|
|
68
|
+
dropIndex(name: string): Promise<void>;
|
|
69
|
+
listIndexes(): IndexInfo[];
|
|
70
|
+
getStats(indexName: string): IndexStats;
|
|
71
|
+
getPartitionStats(indexName: string): PartitionStatsResult[];
|
|
72
|
+
/**
|
|
73
|
+
* Adds one document to an index and returns the id it is stored under.
|
|
74
|
+
*
|
|
75
|
+
* The id comes from the `docId` argument when you pass one, otherwise from
|
|
76
|
+
* the document's own `id` field, and otherwise the engine generates it. Use
|
|
77
|
+
* {@link Narsil.insertBatch} for a large load, so that one bad document
|
|
78
|
+
* cannot abandon the rest.
|
|
79
|
+
*
|
|
80
|
+
* @param indexName - The index that receives the document.
|
|
81
|
+
* @param document - Its fields must match the types the schema declares.
|
|
82
|
+
* @param docId - Pass an id to control it yourself, or omit it and read the
|
|
83
|
+
* returned value.
|
|
84
|
+
* @returns The id the document is stored under.
|
|
85
|
+
*/
|
|
86
|
+
insert(indexName: string, document: AnyDocument, docId?: string, options?: InsertOptions): Promise<string>;
|
|
87
|
+
insertBatch(indexName: string, documents: AnyDocument[], options?: InsertOptions): Promise<BatchResult>;
|
|
88
|
+
remove(indexName: string, docId: string): Promise<void>;
|
|
89
|
+
removeBatch(indexName: string, docIds: string[]): Promise<BatchResult>;
|
|
90
|
+
update(indexName: string, docId: string, document: AnyDocument): Promise<void>;
|
|
91
|
+
updateBatch(indexName: string, updates: Array<{
|
|
92
|
+
docId: string;
|
|
93
|
+
document: AnyDocument;
|
|
94
|
+
}>): Promise<BatchResult>;
|
|
95
|
+
get(indexName: string, docId: string): Promise<AnyDocument | undefined>;
|
|
96
|
+
getMultiple(indexName: string, docIds: string[]): Promise<Map<string, AnyDocument>>;
|
|
97
|
+
has(indexName: string, docId: string): Promise<boolean>;
|
|
98
|
+
countDocuments(indexName: string): Promise<number>;
|
|
99
|
+
/**
|
|
100
|
+
* Runs a search against an index and returns the ranked hits.
|
|
101
|
+
*
|
|
102
|
+
* One call covers keyword search, vector search, and a hybrid of the two,
|
|
103
|
+
* chosen by the `mode` parameter. BM25 ranks keyword results by default.
|
|
104
|
+
* Every hit carries its score and its document, along with highlights when
|
|
105
|
+
* you ask for them.
|
|
106
|
+
*
|
|
107
|
+
* @param indexName - The index the search runs against.
|
|
108
|
+
* @param params - These set the search term, filters, field boosts, sorting,
|
|
109
|
+
* facets, highlighting, and the result limit.
|
|
110
|
+
* @returns The hits, the total count, the elapsed time, and any facets or
|
|
111
|
+
* groups the query asked for.
|
|
112
|
+
*/
|
|
113
|
+
query<T = AnyDocument>(indexName: string, params: QueryParams): Promise<QueryResult<T>>;
|
|
114
|
+
preflight(indexName: string, params: QueryParams): Promise<PreflightResult>;
|
|
115
|
+
suggest(indexName: string, params: SuggestParams): Promise<SuggestResult>;
|
|
116
|
+
/**
|
|
117
|
+
* Rebuilds an index's terms from the documents it already stores, and
|
|
118
|
+
* resolves once every partition carries terms the current language module
|
|
119
|
+
* produced.
|
|
120
|
+
*
|
|
121
|
+
* An index whose stored analysis revision differs from the one its language
|
|
122
|
+
* module carries answers text queries from terms an earlier analysis wrote,
|
|
123
|
+
* and every such result reports `analysisStale`. Call this after the engine
|
|
124
|
+
* reports a stale index to configuration that declined an automatic rebuild.
|
|
125
|
+
* Calling it for an index whose terms are current does nothing.
|
|
126
|
+
*
|
|
127
|
+
* @param indexName - The index whose terms are rebuilt.
|
|
128
|
+
*/
|
|
129
|
+
rebuildAnalysis(indexName: string): Promise<void>;
|
|
130
|
+
snapshot(indexName: string): Promise<Uint8Array>;
|
|
131
|
+
restore(indexName: string, data: Uint8Array): Promise<void>;
|
|
132
|
+
checkpoint(indexName: string): Promise<void>;
|
|
133
|
+
clear(indexName: string): Promise<void>;
|
|
134
|
+
rebalance(indexName: string, targetPartitionCount: number): Promise<void>;
|
|
135
|
+
updatePartitionConfig(indexName: string, config: Partial<PartitionConfig>): Promise<void>;
|
|
136
|
+
getMemoryStats(): Promise<MemoryStats>;
|
|
137
|
+
compactVectors(indexName: string, fieldName?: string): Promise<void>;
|
|
138
|
+
optimizeVectors(indexName: string, fieldName?: string): Promise<void>;
|
|
139
|
+
vectorMaintenanceStatus(indexName: string): VectorMaintenanceResult[];
|
|
140
|
+
on<K extends keyof NarsilEventMap>(event: K, handler: (payload: NarsilEventMap[K]) => void): void;
|
|
141
|
+
off<K extends keyof NarsilEventMap>(event: K, handler: (payload: NarsilEventMap[K]) => void): void;
|
|
142
|
+
shutdown(): Promise<void>;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Creates a search engine that runs inside your process, with no server to
|
|
146
|
+
* provision.
|
|
147
|
+
*
|
|
148
|
+
* The engine holds every index you create, so an application usually keeps one
|
|
149
|
+
* instance for its lifetime. When you configure persistence, this recovers the
|
|
150
|
+
* indexes already on disk before it resolves, so the engine is ready to query
|
|
151
|
+
* as soon as you have it.
|
|
152
|
+
*
|
|
153
|
+
* @param config - This carries the persistence, partitioning, and worker
|
|
154
|
+
* invalidation settings. Omit it for an engine that keeps everything in memory.
|
|
155
|
+
* @returns The engine, ready for {@link Narsil.createIndex} to run against.
|
|
156
|
+
*/
|
|
157
|
+
declare function createNarsil(config?: NarsilConfig): Promise<Narsil>;
|
|
158
|
+
|
|
159
|
+
export { type Narsil as N, type NarsilEventMap as a, createNarsil as c };
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { P as PartitionConfig, c as ScoringMode, V as VectorIndexConfig } from '../../schema-BnvLvjRp.js';
|
|
2
|
+
import '../../adapters-Bo2JQg8b.js';
|
|
3
|
+
|
|
1
4
|
interface IndexMetadata {
|
|
2
5
|
indexName: string;
|
|
3
6
|
schema: Record<string, string>;
|
|
@@ -17,6 +20,16 @@ interface IndexMetadata {
|
|
|
17
20
|
embedding?: IndexEmbeddingMetadata;
|
|
18
21
|
/** Persisted so recovered indexes keep collecting surface forms. */
|
|
19
22
|
surfaceForms?: boolean;
|
|
23
|
+
analysisRevision?: string;
|
|
24
|
+
tokenizer?: string;
|
|
25
|
+
stopWords?: string;
|
|
26
|
+
stopWordList?: string[];
|
|
27
|
+
partitionLimits?: PartitionConfig;
|
|
28
|
+
defaultScoring?: ScoringMode;
|
|
29
|
+
trackPositions?: boolean;
|
|
30
|
+
strict?: boolean;
|
|
31
|
+
required?: string[];
|
|
32
|
+
vectorPromotion?: VectorIndexConfig;
|
|
20
33
|
}
|
|
21
34
|
/** Persisted so recovery can restore field mappings and rebind the adapter by
|
|
22
35
|
* name; the name is absent when the index was configured with a bare instance. */
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { createDurableDirectory, writeSegmentedCheckpoint } from '../../chunk-
|
|
2
|
-
import '../../chunk-
|
|
1
|
+
import { createDurableDirectory, writeSegmentedCheckpoint } from '../../chunk-XAKNSWIK.mjs';
|
|
2
|
+
import '../../chunk-S6IAXOBA.mjs';
|
|
3
|
+
import '../../chunk-TGP5M5R7.mjs';
|
|
3
4
|
import '../../chunk-S7RJJMHI.mjs';
|
|
4
5
|
import '../../chunk-KMMJMDUA.mjs';
|
|
5
|
-
import '../../chunk-
|
|
6
|
-
import '../../chunk-
|
|
7
|
-
import '../../chunk-
|
|
6
|
+
import '../../chunk-U2BKYEC7.mjs';
|
|
7
|
+
import '../../chunk-M2EDG55Y.mjs';
|
|
8
|
+
import '../../chunk-BKAI2WXI.mjs';
|
|
8
9
|
|
|
9
10
|
// src/persistence/durability/rebuild.ts
|
|
10
11
|
async function rebuildSnapshotFromDurable(root, metadata, targets, compactionThreshold) {
|
|
@@ -24,14 +24,15 @@ interface EmbeddingFieldConfig {
|
|
|
24
24
|
adapter?: EmbeddingAdapter | string;
|
|
25
25
|
fields: Record<string, string | string[]>;
|
|
26
26
|
}
|
|
27
|
+
type StopWordOverride = Set<string> | ((defaults: Set<string>) => Set<string>);
|
|
27
28
|
interface IndexConfig {
|
|
28
29
|
schema: SchemaDefinition;
|
|
29
30
|
language?: string;
|
|
30
31
|
partitions?: PartitionConfig;
|
|
31
32
|
defaultScoring?: ScoringMode;
|
|
32
33
|
bm25?: BM25Params;
|
|
33
|
-
stopWords?:
|
|
34
|
-
tokenizer?: CustomTokenizer;
|
|
34
|
+
stopWords?: StopWordOverride | string;
|
|
35
|
+
tokenizer?: CustomTokenizer | string;
|
|
35
36
|
trackPositions?: boolean;
|
|
36
37
|
vectorPromotion?: VectorIndexConfig;
|
|
37
38
|
strict?: boolean;
|
|
@@ -56,10 +57,11 @@ interface CustomTokenizer {
|
|
|
56
57
|
interface PartitionConfig {
|
|
57
58
|
maxDocsPerPartition?: number;
|
|
58
59
|
maxPartitions?: number;
|
|
60
|
+
watermark?: number;
|
|
59
61
|
}
|
|
60
62
|
type ScoringMode = 'local' | 'dfs' | 'broadcast';
|
|
61
63
|
interface InsertOptions {
|
|
62
64
|
skipClone?: boolean;
|
|
63
65
|
}
|
|
64
66
|
|
|
65
|
-
export type { AnyDocument as A, BM25Params as B, CustomTokenizer as C, EmbeddingFieldConfig as E, FieldType as F, IndexConfig as I, PartitionConfig as P,
|
|
67
|
+
export type { AnyDocument as A, BM25Params as B, CustomTokenizer as C, EmbeddingFieldConfig as E, FieldType as F, IndexConfig as I, PartitionConfig as P, StopWordOverride as S, VectorIndexConfig as V, InsertOptions as a, SchemaDefinition as b, ScoringMode as c };
|
package/dist/server.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { N as Narsil } from './narsil-
|
|
1
|
+
import { N as Narsil } from './narsil-CMZRPDlQ.js';
|
|
2
2
|
import { E as EmbeddingAdapter } from './adapters-Bo2JQg8b.js';
|
|
3
|
-
import './
|
|
4
|
-
import './
|
|
3
|
+
import './schema-BnvLvjRp.js';
|
|
4
|
+
import './config-P27AtSn4.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Context handed to {@link OnRequestHook} for every inbound request, captured
|
|
@@ -163,6 +163,7 @@ interface HttpIndexConfig {
|
|
|
163
163
|
partitions?: {
|
|
164
164
|
maxDocsPerPartition?: number;
|
|
165
165
|
maxPartitions?: number;
|
|
166
|
+
watermark?: number;
|
|
166
167
|
};
|
|
167
168
|
defaultScoring?: 'local' | 'dfs' | 'broadcast';
|
|
168
169
|
bm25?: {
|
package/dist/server.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NarsilError, ErrorCodes } from './chunk-
|
|
1
|
+
import { NarsilError, ErrorCodes } from './chunk-M2EDG55Y.mjs';
|
|
2
2
|
import { randomUUID } from 'crypto';
|
|
3
3
|
|
|
4
4
|
// src/server/cors.ts
|
|
@@ -81,7 +81,18 @@ var STATUS_BY_CODE = {
|
|
|
81
81
|
QUERY_ROUTING_FAILED: 503,
|
|
82
82
|
QUERY_PARTIAL_FAILURE: 503,
|
|
83
83
|
QUERY_NODE_TIMEOUT: 503,
|
|
84
|
-
QUERY_NO_ACTIVE_REPLICA: 503
|
|
84
|
+
QUERY_NO_ACTIVE_REPLICA: 503,
|
|
85
|
+
REPLICATION_ENTRY_INVALID: 503,
|
|
86
|
+
REPLICATION_INSYNC_REMOVAL_FAILED: 503,
|
|
87
|
+
REPLICATION_ROLLBACK_FAILED: 503,
|
|
88
|
+
REPLICATION_LOG_FULL: 503,
|
|
89
|
+
REPLICATION_ENTRY_CORRUPT: 503,
|
|
90
|
+
REPLICATION_SNAPSHOT_CORRUPT: 503,
|
|
91
|
+
REPLICATION_TERM_MISMATCH: 503,
|
|
92
|
+
REPLICATION_SYNC_FAILED: 503,
|
|
93
|
+
PARTITION_NOT_PRIMARY: 503,
|
|
94
|
+
PARTITION_UNASSIGNED: 503,
|
|
95
|
+
INSUFFICIENT_REPLICAS: 503
|
|
85
96
|
};
|
|
86
97
|
function httpStatusForNarsilError(code) {
|
|
87
98
|
return STATUS_BY_CODE[code] ?? 500;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { b as SchemaDefinition } from './schema-BnvLvjRp.js';
|
|
2
2
|
|
|
3
3
|
type NodeRole = 'data' | 'coordinator' | 'controller';
|
|
4
4
|
type PartitionState = 'UNASSIGNED' | 'INITIALISING' | 'ACTIVE' | 'MIGRATING' | 'DECOMMISSIONING';
|
package/dist/workers/entry.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isValidWorkerAction } from '../chunk-
|
|
1
|
+
import { isValidWorkerAction } from '../chunk-BKAI2WXI.mjs';
|
|
2
2
|
|
|
3
3
|
// src/workers/worker-entry.ts
|
|
4
4
|
function startWorker() {
|
|
@@ -15,7 +15,7 @@ async function setup() {
|
|
|
15
15
|
} catch {
|
|
16
16
|
parentPort = null;
|
|
17
17
|
}
|
|
18
|
-
const { createDirectExecutor } = await import('../direct-executor-
|
|
18
|
+
const { createDirectExecutor } = await import('../direct-executor-2FV3MEDD.mjs');
|
|
19
19
|
const executor = createDirectExecutor();
|
|
20
20
|
function buildErrorResponse(requestId, code, message) {
|
|
21
21
|
return { type: "error", requestId, code, message };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@delali/narsil",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "A distributed full-text search engine with cross-language portable binary format.",
|
|
6
6
|
"author": "Delali (https://sondelali.com)",
|
|
@@ -109,7 +109,8 @@
|
|
|
109
109
|
},
|
|
110
110
|
"files": [
|
|
111
111
|
"dist/",
|
|
112
|
-
"LICENSE"
|
|
112
|
+
"LICENSE",
|
|
113
|
+
"NOTICE"
|
|
113
114
|
],
|
|
114
115
|
"dependencies": {
|
|
115
116
|
"@msgpack/msgpack": "3.1.1"
|
|
@@ -122,6 +123,7 @@
|
|
|
122
123
|
"fflate": "0.8.3",
|
|
123
124
|
"selfsigned": "5.5.0",
|
|
124
125
|
"tsup": "8.5.1",
|
|
126
|
+
"tsx": "4.21.0",
|
|
125
127
|
"typescript": "5.9.3",
|
|
126
128
|
"uWebSockets.js": "github:uNetworking/uWebSockets.js#v20.58.0",
|
|
127
129
|
"vitest": "4.0.18",
|
|
@@ -149,10 +151,15 @@
|
|
|
149
151
|
"test:recall": "vitest run src/__tests__/vector/recall.test.ts",
|
|
150
152
|
"test:embeddings": "NARSIL_TEST_EMBEDDINGS=1 vitest run embedding-e2e",
|
|
151
153
|
"bench": "vitest bench",
|
|
154
|
+
"stemmers": "tsx snowball/build.ts",
|
|
155
|
+
"revisions": "tsx scripts/analysis-revisions.ts",
|
|
156
|
+
"revisions:write": "tsx scripts/analysis-revisions.ts --write",
|
|
157
|
+
"lookalikes": "tsx scripts/lookalike-counts.ts",
|
|
158
|
+
"lookalikes:collect": "tsx scripts/lookalike-counts.ts --collect",
|
|
152
159
|
"lint": "biome check src/",
|
|
153
160
|
"typecheck:src": "tsc --noEmit",
|
|
154
161
|
"typecheck:tests": "tsc --noEmit -p tsconfig.test.json",
|
|
155
|
-
"typecheck:tooling": "tsc --noEmit -p scripts/tsconfig.json && tsc --noEmit -p benchmarks/tsconfig.json && tsc --noEmit -p wasm/tsconfig.json",
|
|
162
|
+
"typecheck:tooling": "tsc --noEmit -p scripts/tsconfig.json && tsc --noEmit -p benchmarks/tsconfig.json && tsc --noEmit -p wasm/tsconfig.json && tsc --noEmit -p snowball/tsconfig.json",
|
|
156
163
|
"typecheck": "pnpm run typecheck:src && pnpm run typecheck:tests && pnpm run typecheck:tooling"
|
|
157
164
|
}
|
|
158
165
|
}
|