@delali/narsil 0.1.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.
Files changed (103) hide show
  1. package/LICENSE +201 -0
  2. package/dist/adapters/filesystem.d.ts +8 -0
  3. package/dist/adapters/filesystem.mjs +107 -0
  4. package/dist/adapters/indexeddb.d.ts +9 -0
  5. package/dist/adapters/indexeddb.mjs +153 -0
  6. package/dist/adapters/memory.d.ts +5 -0
  7. package/dist/adapters/memory.mjs +30 -0
  8. package/dist/adapters-XODT2F3h.d.ts +30 -0
  9. package/dist/chunk-5HXMVMSM.mjs +3147 -0
  10. package/dist/chunk-JKIBUPAY.mjs +42 -0
  11. package/dist/chunk-N37VMC62.mjs +18 -0
  12. package/dist/chunk-WYC635GI.mjs +335 -0
  13. package/dist/direct-executor-MQD7JRD4.mjs +3 -0
  14. package/dist/index.d.ts +386 -0
  15. package/dist/index.mjs +1099 -0
  16. package/dist/invalidation/broadcast-channel.d.ts +8 -0
  17. package/dist/invalidation/broadcast-channel.mjs +46 -0
  18. package/dist/invalidation/filesystem.d.ts +10 -0
  19. package/dist/invalidation/filesystem.mjs +159 -0
  20. package/dist/invalidation/noop.d.ts +5 -0
  21. package/dist/invalidation/noop.mjs +13 -0
  22. package/dist/language-ClUGLuoC.d.ts +13 -0
  23. package/dist/languages/arabic.d.ts +5 -0
  24. package/dist/languages/arabic.mjs +631 -0
  25. package/dist/languages/armenian.d.ts +5 -0
  26. package/dist/languages/armenian.mjs +306 -0
  27. package/dist/languages/bulgarian.d.ts +5 -0
  28. package/dist/languages/bulgarian.mjs +330 -0
  29. package/dist/languages/chinese.d.ts +5 -0
  30. package/dist/languages/chinese.mjs +250 -0
  31. package/dist/languages/dagbani.d.ts +5 -0
  32. package/dist/languages/dagbani.mjs +85 -0
  33. package/dist/languages/danish.d.ts +5 -0
  34. package/dist/languages/danish.mjs +224 -0
  35. package/dist/languages/dutch.d.ts +5 -0
  36. package/dist/languages/dutch.mjs +296 -0
  37. package/dist/languages/english.d.ts +5 -0
  38. package/dist/languages/english.mjs +1 -0
  39. package/dist/languages/ewe.d.ts +5 -0
  40. package/dist/languages/ewe.mjs +85 -0
  41. package/dist/languages/finnish.d.ts +5 -0
  42. package/dist/languages/finnish.mjs +536 -0
  43. package/dist/languages/french.d.ts +5 -0
  44. package/dist/languages/french.mjs +635 -0
  45. package/dist/languages/ga.d.ts +5 -0
  46. package/dist/languages/ga.mjs +69 -0
  47. package/dist/languages/german.d.ts +5 -0
  48. package/dist/languages/german.mjs +414 -0
  49. package/dist/languages/greek.d.ts +5 -0
  50. package/dist/languages/greek.mjs +888 -0
  51. package/dist/languages/hausa.d.ts +5 -0
  52. package/dist/languages/hausa.mjs +243 -0
  53. package/dist/languages/hindi.d.ts +5 -0
  54. package/dist/languages/hindi.mjs +333 -0
  55. package/dist/languages/hungarian.d.ts +5 -0
  56. package/dist/languages/hungarian.mjs +600 -0
  57. package/dist/languages/igbo.d.ts +5 -0
  58. package/dist/languages/igbo.mjs +96 -0
  59. package/dist/languages/indonesian.d.ts +5 -0
  60. package/dist/languages/indonesian.mjs +896 -0
  61. package/dist/languages/irish.d.ts +5 -0
  62. package/dist/languages/irish.mjs +268 -0
  63. package/dist/languages/italian.d.ts +5 -0
  64. package/dist/languages/italian.mjs +713 -0
  65. package/dist/languages/japanese.d.ts +5 -0
  66. package/dist/languages/japanese.mjs +210 -0
  67. package/dist/languages/nepali.d.ts +5 -0
  68. package/dist/languages/nepali.mjs +262 -0
  69. package/dist/languages/norwegian.d.ts +5 -0
  70. package/dist/languages/norwegian.mjs +274 -0
  71. package/dist/languages/portuguese.d.ts +5 -0
  72. package/dist/languages/portuguese.mjs +606 -0
  73. package/dist/languages/romanian.d.ts +5 -0
  74. package/dist/languages/romanian.mjs +634 -0
  75. package/dist/languages/russian.d.ts +5 -0
  76. package/dist/languages/russian.mjs +424 -0
  77. package/dist/languages/sanskrit.d.ts +5 -0
  78. package/dist/languages/sanskrit.mjs +155 -0
  79. package/dist/languages/serbian.d.ts +5 -0
  80. package/dist/languages/serbian.mjs +277 -0
  81. package/dist/languages/slovenian.d.ts +5 -0
  82. package/dist/languages/slovenian.mjs +522 -0
  83. package/dist/languages/spanish.d.ts +5 -0
  84. package/dist/languages/spanish.mjs +606 -0
  85. package/dist/languages/swahili.d.ts +5 -0
  86. package/dist/languages/swahili.mjs +212 -0
  87. package/dist/languages/swedish.d.ts +5 -0
  88. package/dist/languages/swedish.mjs +224 -0
  89. package/dist/languages/tamil.d.ts +5 -0
  90. package/dist/languages/tamil.mjs +186 -0
  91. package/dist/languages/turkish.d.ts +5 -0
  92. package/dist/languages/turkish.mjs +675 -0
  93. package/dist/languages/twi.d.ts +5 -0
  94. package/dist/languages/twi.mjs +84 -0
  95. package/dist/languages/ukrainian.d.ts +5 -0
  96. package/dist/languages/ukrainian.mjs +444 -0
  97. package/dist/languages/yoruba.d.ts +5 -0
  98. package/dist/languages/yoruba.mjs +103 -0
  99. package/dist/languages/zulu.d.ts +5 -0
  100. package/dist/languages/zulu.mjs +113 -0
  101. package/dist/workers/entry.d.ts +3 -0
  102. package/dist/workers/entry.mjs +106 -0
  103. package/package.json +87 -0
@@ -0,0 +1,42 @@
1
+ // src/errors.ts
2
+ var ErrorCodes = {
3
+ SCHEMA_INVALID_TYPE: "SCHEMA_INVALID_TYPE",
4
+ SCHEMA_MISSING_FIELD: "SCHEMA_MISSING_FIELD",
5
+ SCHEMA_DEPTH_EXCEEDED: "SCHEMA_DEPTH_EXCEEDED",
6
+ SCHEMA_INVALID_VECTOR_DIMENSION: "SCHEMA_INVALID_VECTOR_DIMENSION",
7
+ SCHEMA_INVALID_GEOPOINT: "SCHEMA_INVALID_GEOPOINT",
8
+ DOC_NOT_FOUND: "DOC_NOT_FOUND",
9
+ DOC_ALREADY_EXISTS: "DOC_ALREADY_EXISTS",
10
+ DOC_VALIDATION_FAILED: "DOC_VALIDATION_FAILED",
11
+ INDEX_NOT_FOUND: "INDEX_NOT_FOUND",
12
+ INDEX_ALREADY_EXISTS: "INDEX_ALREADY_EXISTS",
13
+ PARTITION_CORRUPTED: "PARTITION_CORRUPTED",
14
+ PARTITION_REBALANCING_BACKPRESSURE: "PARTITION_REBALANCING_BACKPRESSURE",
15
+ WORKER_CRASHED: "WORKER_CRASHED",
16
+ WORKER_BUSY: "WORKER_BUSY",
17
+ WORKER_TIMEOUT: "WORKER_TIMEOUT",
18
+ PERSISTENCE_SAVE_FAILED: "PERSISTENCE_SAVE_FAILED",
19
+ PERSISTENCE_LOAD_FAILED: "PERSISTENCE_LOAD_FAILED",
20
+ PERSISTENCE_DELETE_FAILED: "PERSISTENCE_DELETE_FAILED",
21
+ PERSISTENCE_CRC_MISMATCH: "PERSISTENCE_CRC_MISMATCH",
22
+ SEARCH_INVALID_FIELD: "SEARCH_INVALID_FIELD",
23
+ SEARCH_INVALID_VECTOR_SIZE: "SEARCH_INVALID_VECTOR_SIZE",
24
+ SEARCH_INVALID_FILTER: "SEARCH_INVALID_FILTER",
25
+ SEARCH_INVALID_MODE: "SEARCH_INVALID_MODE",
26
+ SEARCH_INVALID_CURSOR: "SEARCH_INVALID_CURSOR",
27
+ LANGUAGE_NOT_SUPPORTED: "LANGUAGE_NOT_SUPPORTED",
28
+ ENVELOPE_VERSION_MISMATCH: "ENVELOPE_VERSION_MISMATCH",
29
+ ENVELOPE_INVALID_MAGIC: "ENVELOPE_INVALID_MAGIC"
30
+ };
31
+ var NarsilError = class extends Error {
32
+ code;
33
+ details;
34
+ constructor(code, message, details) {
35
+ super(message);
36
+ this.name = "NarsilError";
37
+ this.code = code;
38
+ this.details = details ?? {};
39
+ }
40
+ };
41
+
42
+ export { ErrorCodes, NarsilError };
@@ -0,0 +1,18 @@
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
+ export { generateId };
@@ -0,0 +1,335 @@
1
+ // src/languages/english.ts
2
+ var SUFFIX_TRANSFORMS_STEP2 = {
3
+ ational: "ate",
4
+ tional: "tion",
5
+ enci: "ence",
6
+ anci: "ance",
7
+ izer: "ize",
8
+ bli: "ble",
9
+ alli: "al",
10
+ entli: "ent",
11
+ eli: "e",
12
+ ousli: "ous",
13
+ ization: "ize",
14
+ ation: "ate",
15
+ ator: "ate",
16
+ alism: "al",
17
+ iveness: "ive",
18
+ fulness: "ful",
19
+ ousness: "ous",
20
+ aliti: "al",
21
+ iviti: "ive",
22
+ biliti: "ble",
23
+ logi: "log"
24
+ };
25
+ var SUFFIX_TRANSFORMS_STEP3 = {
26
+ icate: "ic",
27
+ ative: "",
28
+ alize: "al",
29
+ iciti: "ic",
30
+ ical: "ic",
31
+ ful: "",
32
+ ness: ""
33
+ };
34
+ var CONSONANT = "[^aeiou]";
35
+ var VOWEL = "[aeiouy]";
36
+ var CONSONANT_SEQ = `${CONSONANT}[^aeiouy]*`;
37
+ var VOWEL_SEQ = `${VOWEL}[aeiou]*`;
38
+ var RE_MEASURE_GT_0 = new RegExp(`^(${CONSONANT_SEQ})?${VOWEL_SEQ}${CONSONANT_SEQ}`);
39
+ var RE_MEASURE_EQ_1 = new RegExp(`^(${CONSONANT_SEQ})?${VOWEL_SEQ}${CONSONANT_SEQ}(${VOWEL_SEQ})?$`);
40
+ var RE_MEASURE_GT_1 = new RegExp(`^(${CONSONANT_SEQ})?${VOWEL_SEQ}${CONSONANT_SEQ}${VOWEL_SEQ}${CONSONANT_SEQ}`);
41
+ var RE_HAS_VOWEL = new RegExp(`^(${CONSONANT_SEQ})?${VOWEL}`);
42
+ var RE_CONSONANT_CVC = new RegExp(`^${CONSONANT_SEQ}${VOWEL}[^aeiouwxy]$`);
43
+ var RE_PLURAL_SS_IES = /^(.+?)(ss|i)es$/;
44
+ var RE_PLURAL_S = /^(.+?)([^s])s$/;
45
+ var RE_SUFFIX_EED = /^(.+?)eed$/;
46
+ var RE_SUFFIX_ED_ING = /^(.+?)(ed|ing)$/;
47
+ var RE_SUFFIX_AT_BL_IZ = /(at|bl|iz)$/;
48
+ var RE_DOUBLE_CONSONANT = /([^aeiouylsz])\1$/;
49
+ var RE_TRAILING_Y = /^(.+?)y$/;
50
+ var RE_STEP2_SUFFIXES = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
51
+ var RE_STEP3_SUFFIXES = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
52
+ var RE_STEP4_SUFFIXES = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
53
+ var RE_STEP4_STION = /^(.+?)(s|t)(ion)$/;
54
+ var RE_TRAILING_E = /^(.+?)e$/;
55
+ var RE_TRAILING_LL = /ll$/;
56
+ var RE_LAST_CHAR = /.$/;
57
+ function hasMeasureGt0(stem) {
58
+ return RE_MEASURE_GT_0.test(stem);
59
+ }
60
+ function hasMeasureGt1(stem) {
61
+ return RE_MEASURE_GT_1.test(stem);
62
+ }
63
+ function stripPlurals(word) {
64
+ if (RE_PLURAL_SS_IES.test(word)) return word.replace(RE_PLURAL_SS_IES, "$1$2");
65
+ if (RE_PLURAL_S.test(word)) return word.replace(RE_PLURAL_S, "$1$2");
66
+ return word;
67
+ }
68
+ function stripVerbSuffixes(word) {
69
+ let match = RE_SUFFIX_EED.exec(word);
70
+ if (match) {
71
+ return hasMeasureGt0(match[1]) ? word.replace(RE_LAST_CHAR, "") : word;
72
+ }
73
+ match = RE_SUFFIX_ED_ING.exec(word);
74
+ if (match) {
75
+ const base = match[1];
76
+ if (!RE_HAS_VOWEL.test(base)) return word;
77
+ word = base;
78
+ if (RE_SUFFIX_AT_BL_IZ.test(word)) return `${word}e`;
79
+ if (RE_DOUBLE_CONSONANT.test(word)) return word.replace(RE_LAST_CHAR, "");
80
+ if (RE_CONSONANT_CVC.test(word)) return `${word}e`;
81
+ }
82
+ return word;
83
+ }
84
+ function replaceTrailingY(word) {
85
+ const match = RE_TRAILING_Y.exec(word);
86
+ if (match && RE_HAS_VOWEL.test(match[1])) {
87
+ return `${match[1]}i`;
88
+ }
89
+ return word;
90
+ }
91
+ function applySuffixMap(word, pattern, map) {
92
+ const match = pattern.exec(word);
93
+ if (match) {
94
+ const base = match[1];
95
+ const suffix = match[2];
96
+ if (hasMeasureGt0(base)) {
97
+ return base + map[suffix];
98
+ }
99
+ }
100
+ return word;
101
+ }
102
+ function stripDerivationals(word) {
103
+ let match = RE_STEP4_SUFFIXES.exec(word);
104
+ if (match) {
105
+ return hasMeasureGt1(match[1]) ? match[1] : word;
106
+ }
107
+ match = RE_STEP4_STION.exec(word);
108
+ if (match) {
109
+ const base = match[1] + match[2];
110
+ return hasMeasureGt1(base) ? base : word;
111
+ }
112
+ return word;
113
+ }
114
+ function tidyTrailingE(word) {
115
+ const match = RE_TRAILING_E.exec(word);
116
+ if (match) {
117
+ const base = match[1];
118
+ if (hasMeasureGt1(base)) return base;
119
+ if (RE_MEASURE_EQ_1.test(base) && !RE_CONSONANT_CVC.test(base)) return base;
120
+ }
121
+ return word;
122
+ }
123
+ function collapseDoubleLl(word) {
124
+ if (RE_TRAILING_LL.test(word) && hasMeasureGt1(word)) {
125
+ return word.replace(RE_LAST_CHAR, "");
126
+ }
127
+ return word;
128
+ }
129
+ function stemWord(input) {
130
+ if (input.length < 3) return input;
131
+ const startsWithY = input[0] === "y";
132
+ let word = startsWithY ? `Y${input.substring(1)}` : input;
133
+ word = stripPlurals(word);
134
+ word = stripVerbSuffixes(word);
135
+ word = replaceTrailingY(word);
136
+ word = applySuffixMap(word, RE_STEP2_SUFFIXES, SUFFIX_TRANSFORMS_STEP2);
137
+ word = applySuffixMap(word, RE_STEP3_SUFFIXES, SUFFIX_TRANSFORMS_STEP3);
138
+ word = stripDerivationals(word);
139
+ word = tidyTrailingE(word);
140
+ word = collapseDoubleLl(word);
141
+ if (startsWithY) {
142
+ word = `y${word.substring(1)}`;
143
+ }
144
+ return word;
145
+ }
146
+ var stopWords = /* @__PURE__ */ new Set([
147
+ "a",
148
+ "an",
149
+ "the",
150
+ "i",
151
+ "me",
152
+ "my",
153
+ "myself",
154
+ "we",
155
+ "us",
156
+ "our",
157
+ "ours",
158
+ "ourselves",
159
+ "you",
160
+ "your",
161
+ "yours",
162
+ "yourself",
163
+ "yourselves",
164
+ "he",
165
+ "him",
166
+ "his",
167
+ "himself",
168
+ "she",
169
+ "her",
170
+ "hers",
171
+ "herself",
172
+ "it",
173
+ "its",
174
+ "itself",
175
+ "they",
176
+ "them",
177
+ "their",
178
+ "theirs",
179
+ "themselves",
180
+ "what",
181
+ "which",
182
+ "who",
183
+ "whom",
184
+ "this",
185
+ "that",
186
+ "these",
187
+ "those",
188
+ "am",
189
+ "is",
190
+ "are",
191
+ "was",
192
+ "were",
193
+ "be",
194
+ "been",
195
+ "being",
196
+ "have",
197
+ "has",
198
+ "had",
199
+ "having",
200
+ "do",
201
+ "does",
202
+ "did",
203
+ "doing",
204
+ "will",
205
+ "would",
206
+ "shall",
207
+ "should",
208
+ "can",
209
+ "could",
210
+ "may",
211
+ "might",
212
+ "must",
213
+ "ought",
214
+ "i'm",
215
+ "you're",
216
+ "he's",
217
+ "she's",
218
+ "it's",
219
+ "we're",
220
+ "they're",
221
+ "i've",
222
+ "you've",
223
+ "we've",
224
+ "they've",
225
+ "i'd",
226
+ "you'd",
227
+ "he'd",
228
+ "she'd",
229
+ "we'd",
230
+ "they'd",
231
+ "i'll",
232
+ "you'll",
233
+ "he'll",
234
+ "she'll",
235
+ "we'll",
236
+ "they'll",
237
+ "isn't",
238
+ "aren't",
239
+ "wasn't",
240
+ "weren't",
241
+ "hasn't",
242
+ "haven't",
243
+ "hadn't",
244
+ "doesn't",
245
+ "don't",
246
+ "didn't",
247
+ "won't",
248
+ "wouldn't",
249
+ "shan't",
250
+ "shouldn't",
251
+ "can't",
252
+ "cannot",
253
+ "couldn't",
254
+ "mustn't",
255
+ "let's",
256
+ "that's",
257
+ "who's",
258
+ "what's",
259
+ "here's",
260
+ "there's",
261
+ "when's",
262
+ "where's",
263
+ "why's",
264
+ "how's",
265
+ "and",
266
+ "but",
267
+ "if",
268
+ "or",
269
+ "because",
270
+ "as",
271
+ "until",
272
+ "while",
273
+ "of",
274
+ "at",
275
+ "by",
276
+ "for",
277
+ "with",
278
+ "about",
279
+ "against",
280
+ "between",
281
+ "into",
282
+ "through",
283
+ "during",
284
+ "before",
285
+ "after",
286
+ "above",
287
+ "below",
288
+ "to",
289
+ "from",
290
+ "up",
291
+ "down",
292
+ "in",
293
+ "out",
294
+ "on",
295
+ "off",
296
+ "over",
297
+ "under",
298
+ "again",
299
+ "further",
300
+ "then",
301
+ "once",
302
+ "here",
303
+ "there",
304
+ "when",
305
+ "where",
306
+ "why",
307
+ "how",
308
+ "all",
309
+ "any",
310
+ "both",
311
+ "each",
312
+ "few",
313
+ "more",
314
+ "most",
315
+ "other",
316
+ "some",
317
+ "such",
318
+ "no",
319
+ "nor",
320
+ "not",
321
+ "only",
322
+ "own",
323
+ "same",
324
+ "so",
325
+ "than",
326
+ "too",
327
+ "very"
328
+ ]);
329
+ var english = {
330
+ name: "english",
331
+ stemmer: stemWord,
332
+ stopWords
333
+ };
334
+
335
+ export { english };
@@ -0,0 +1,3 @@
1
+ export { createDirectExecutor } from './chunk-5HXMVMSM.mjs';
2
+ import './chunk-WYC635GI.mjs';
3
+ import './chunk-JKIBUPAY.mjs';