@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,424 @@
1
+ // src/languages/russian.ts
2
+ var VOWELS = "\u0430\u0435\u0438\u043E\u0443\u044B\u044D\u044E\u044F";
3
+ function isVowel(ch) {
4
+ return VOWELS.includes(ch);
5
+ }
6
+ function findRegions(word) {
7
+ let rv = word.length;
8
+ let r1 = word.length;
9
+ let r2 = word.length;
10
+ for (let i = 0; i < word.length; i++) {
11
+ if (isVowel(word[i])) {
12
+ rv = i + 1;
13
+ break;
14
+ }
15
+ }
16
+ for (let i = 1; i < word.length; i++) {
17
+ if (!isVowel(word[i]) && isVowel(word[i - 1])) {
18
+ r1 = i + 1;
19
+ break;
20
+ }
21
+ }
22
+ for (let i = r1 + 1; i < word.length; i++) {
23
+ if (!isVowel(word[i]) && isVowel(word[i - 1])) {
24
+ r2 = i + 1;
25
+ break;
26
+ }
27
+ }
28
+ return { rv, r1, r2 };
29
+ }
30
+ function removeSuffix(word, suffix, regionStart) {
31
+ if (!word.endsWith(suffix)) return null;
32
+ if (word.length - suffix.length < regionStart) return null;
33
+ return word.slice(0, word.length - suffix.length);
34
+ }
35
+ function findAndRemoveSuffix(word, suffixes, regionStart) {
36
+ for (const suffix of suffixes) {
37
+ const result = removeSuffix(word, suffix, regionStart);
38
+ if (result !== null) return result;
39
+ }
40
+ return null;
41
+ }
42
+ var PERFECTIVE_GERUND_GROUP1 = ["\u0432", "\u0432\u0448\u0438", "\u0432\u0448\u0438\u0441\u044C"];
43
+ var PERFECTIVE_GERUND_GROUP2 = ["\u0438\u0432", "\u0438\u0432\u0448\u0438", "\u0438\u0432\u0448\u0438\u0441\u044C", "\u044B\u0432", "\u044B\u0432\u0448\u0438", "\u044B\u0432\u0448\u0438\u0441\u044C"];
44
+ function removePerfectiveGerund(word, rv) {
45
+ for (const suffix of PERFECTIVE_GERUND_GROUP1) {
46
+ if (word.endsWith(suffix) && word.length - suffix.length >= rv) {
47
+ const base = word.slice(0, word.length - suffix.length);
48
+ if (base.endsWith("\u0430") || base.endsWith("\u044F")) {
49
+ return base;
50
+ }
51
+ }
52
+ }
53
+ return findAndRemoveSuffix(word, PERFECTIVE_GERUND_GROUP2, rv);
54
+ }
55
+ var REFLEXIVE_SUFFIXES = ["\u0441\u044F", "\u0441\u044C"];
56
+ function removeReflexive(word, rv) {
57
+ return findAndRemoveSuffix(word, REFLEXIVE_SUFFIXES, rv);
58
+ }
59
+ var ADJECTIVE_SUFFIXES = [
60
+ "\u0438\u043C\u0438",
61
+ "\u044B\u043C\u0438",
62
+ "\u0435\u0433\u043E",
63
+ "\u043E\u0433\u043E",
64
+ "\u0435\u043C\u0443",
65
+ "\u043E\u043C\u0443",
66
+ "\u0435\u0435",
67
+ "\u0438\u0435",
68
+ "\u043E\u0435",
69
+ "\u044B\u0435",
70
+ "\u0435\u0439",
71
+ "\u0438\u0439",
72
+ "\u043E\u0439",
73
+ "\u044B\u0439",
74
+ "\u0435\u043C",
75
+ "\u0438\u043C",
76
+ "\u043E\u043C",
77
+ "\u044B\u043C",
78
+ "\u0438\u0445",
79
+ "\u044B\u0445",
80
+ "\u0435\u044E",
81
+ "\u043E\u044E",
82
+ "\u0443\u044E",
83
+ "\u044E\u044E",
84
+ "\u0430\u044F",
85
+ "\u044F\u044F"
86
+ ];
87
+ var PARTICIPLE_GROUP1 = ["\u0435\u043C", "\u043D\u043D", "\u0432\u0448", "\u044E\u0449", "\u0449"];
88
+ var PARTICIPLE_GROUP2 = ["\u0438\u0432\u0448", "\u044B\u0432\u0448", "\u0443\u044E\u0449"];
89
+ function removeAdjectival(word, rv) {
90
+ const adjResult = findAndRemoveSuffix(word, ADJECTIVE_SUFFIXES, rv);
91
+ if (adjResult === null) return null;
92
+ for (const suffix of PARTICIPLE_GROUP1) {
93
+ if (adjResult.endsWith(suffix) && adjResult.length - suffix.length >= rv) {
94
+ const base = adjResult.slice(0, adjResult.length - suffix.length);
95
+ if (base.endsWith("\u0430") || base.endsWith("\u044F")) {
96
+ return base;
97
+ }
98
+ }
99
+ }
100
+ const partResult = findAndRemoveSuffix(adjResult, PARTICIPLE_GROUP2, rv);
101
+ if (partResult !== null) return partResult;
102
+ return adjResult;
103
+ }
104
+ var VERB_GROUP1 = [
105
+ "\u043B\u0430",
106
+ "\u043D\u0430",
107
+ "\u0435\u0442\u0435",
108
+ "\u0439\u0442\u0435",
109
+ "\u043B\u0438",
110
+ "\u0439",
111
+ "\u043B",
112
+ "\u0435\u043C",
113
+ "\u043D",
114
+ "\u043B\u043E",
115
+ "\u043D\u043E",
116
+ "\u0435\u0442",
117
+ "\u044E\u0442",
118
+ "\u043D\u044B",
119
+ "\u0442\u044C",
120
+ "\u0435\u0448\u044C",
121
+ "\u043D\u043D\u043E"
122
+ ];
123
+ var VERB_GROUP2 = [
124
+ "\u0438\u043B\u0430",
125
+ "\u044B\u043B\u0430",
126
+ "\u0435\u043D\u0430",
127
+ "\u0435\u0439\u0442\u0435",
128
+ "\u0443\u0439\u0442\u0435",
129
+ "\u0438\u0442\u0435",
130
+ "\u0438\u043B\u0438",
131
+ "\u044B\u043B\u0438",
132
+ "\u0435\u0439",
133
+ "\u0443\u0439",
134
+ "\u0438\u043B",
135
+ "\u044B\u043B",
136
+ "\u0438\u043C",
137
+ "\u044B\u043C",
138
+ "\u0435\u043D",
139
+ "\u0438\u043B\u043E",
140
+ "\u044B\u043B\u043E",
141
+ "\u0435\u043D\u043E",
142
+ "\u044F\u0442",
143
+ "\u0443\u0435\u0442",
144
+ "\u0443\u044E\u0442",
145
+ "\u0438\u0442",
146
+ "\u044B\u0442",
147
+ "\u0435\u043D\u044B",
148
+ "\u0438\u0442\u044C",
149
+ "\u044B\u0442\u044C",
150
+ "\u0438\u0448\u044C",
151
+ "\u0443\u044E",
152
+ "\u044E"
153
+ ];
154
+ function removeVerb(word, rv) {
155
+ for (const suffix of VERB_GROUP1) {
156
+ if (word.endsWith(suffix) && word.length - suffix.length >= rv) {
157
+ const base = word.slice(0, word.length - suffix.length);
158
+ if (base.endsWith("\u0430") || base.endsWith("\u044F")) {
159
+ return base;
160
+ }
161
+ }
162
+ }
163
+ return findAndRemoveSuffix(word, VERB_GROUP2, rv);
164
+ }
165
+ var NOUN_SUFFIXES = [
166
+ "\u0438\u044F\u043C\u0438",
167
+ "\u044F\u043C\u0438",
168
+ "\u0438\u044F\u043C",
169
+ "\u0438\u0435\u0439",
170
+ "\u0438\u0435\u043C",
171
+ "\u0430\u043C\u0438",
172
+ "\u0438\u0438",
173
+ "\u0435\u0432",
174
+ "\u043E\u0432",
175
+ "\u0438\u0435",
176
+ "\u044C\u0435",
177
+ "\u0435\u0438",
178
+ "\u0435\u0439",
179
+ "\u0438\u0439",
180
+ "\u043E\u0439",
181
+ "\u0430\u043C",
182
+ "\u044F\u043C",
183
+ "\u0435\u043C",
184
+ "\u043E\u043C",
185
+ "\u044F\u0445",
186
+ "\u0430\u0445",
187
+ "\u0438\u044E",
188
+ "\u044C\u044E",
189
+ "\u0438\u044F",
190
+ "\u044C\u044F",
191
+ "\u0430",
192
+ "\u0435",
193
+ "\u0438",
194
+ "\u043E",
195
+ "\u0443",
196
+ "\u044B",
197
+ "\u044C",
198
+ "\u044E",
199
+ "\u044F"
200
+ ];
201
+ function removeNoun(word, rv) {
202
+ return findAndRemoveSuffix(word, NOUN_SUFFIXES, rv);
203
+ }
204
+ var DERIVATIONAL_SUFFIXES = ["\u043E\u0441\u0442\u044C", "\u043E\u0441\u0442"];
205
+ function removeDerivational(word, r2) {
206
+ const result = findAndRemoveSuffix(word, DERIVATIONAL_SUFFIXES, r2);
207
+ return result ?? word;
208
+ }
209
+ function step1(word, rv) {
210
+ const pgResult = removePerfectiveGerund(word, rv);
211
+ if (pgResult !== null) return pgResult;
212
+ const reflexResult = removeReflexive(word, rv);
213
+ const base = reflexResult ?? word;
214
+ const adjResult = removeAdjectival(base, rv);
215
+ if (adjResult !== null) return adjResult;
216
+ const verbResult = removeVerb(base, rv);
217
+ if (verbResult !== null) return verbResult;
218
+ const nounResult = removeNoun(base, rv);
219
+ if (nounResult !== null) return nounResult;
220
+ return base;
221
+ }
222
+ function step2(word, rv) {
223
+ if (word.endsWith("\u0438") && word.length - 1 >= rv) {
224
+ return word.slice(0, -1);
225
+ }
226
+ return word;
227
+ }
228
+ function step3(word, r2) {
229
+ return removeDerivational(word, r2);
230
+ }
231
+ function step4(word, rv) {
232
+ if (word.endsWith("\u0435\u0439\u0448\u0435") && word.length - 4 >= rv) {
233
+ return word.slice(0, -4);
234
+ }
235
+ if (word.endsWith("\u0435\u0439\u0448") && word.length - 3 >= rv) {
236
+ return word.slice(0, -3);
237
+ }
238
+ if (word.endsWith("\u043D\u043D") && word.length - 2 >= rv) {
239
+ return word.slice(0, -1);
240
+ }
241
+ if (word.endsWith("\u044C") && word.length - 1 >= rv) {
242
+ return word.slice(0, -1);
243
+ }
244
+ return word;
245
+ }
246
+ var RE_YO = /ё/g;
247
+ function stem(word) {
248
+ word = word.replace(RE_YO, "\u0435");
249
+ const { rv, r2 } = findRegions(word);
250
+ word = step1(word, rv);
251
+ word = step2(word, rv);
252
+ word = step3(word, r2);
253
+ word = step4(word, rv);
254
+ return word;
255
+ }
256
+ var stopWords = /* @__PURE__ */ new Set([
257
+ "\u0438",
258
+ "\u0432",
259
+ "\u0432\u043E",
260
+ "\u043D\u0435",
261
+ "\u0447\u0442\u043E",
262
+ "\u043E\u043D",
263
+ "\u043D\u0430",
264
+ "\u044F",
265
+ "\u0441",
266
+ "\u0441\u043E",
267
+ "\u043A\u0430\u043A",
268
+ "\u0430",
269
+ "\u0442\u043E",
270
+ "\u0432\u0441\u0435",
271
+ "\u043E\u043D\u0430",
272
+ "\u0442\u0430\u043A",
273
+ "\u0435\u0433\u043E",
274
+ "\u043D\u043E",
275
+ "\u0434\u0430",
276
+ "\u0442\u044B",
277
+ "\u043A",
278
+ "\u0443",
279
+ "\u0436\u0435",
280
+ "\u0432\u044B",
281
+ "\u0437\u0430",
282
+ "\u0431\u044B",
283
+ "\u043F\u043E",
284
+ "\u0442\u043E\u043B\u044C\u043A\u043E",
285
+ "\u0435\u0435",
286
+ "\u043C\u043D\u0435",
287
+ "\u0431\u044B\u043B\u043E",
288
+ "\u0432\u043E\u0442",
289
+ "\u043E\u0442",
290
+ "\u043C\u0435\u043D\u044F",
291
+ "\u0435\u0449\u0435",
292
+ "\u043D\u0435\u0442",
293
+ "\u043E",
294
+ "\u0438\u0437",
295
+ "\u0435\u043C\u0443",
296
+ "\u0442\u0435\u043F\u0435\u0440\u044C",
297
+ "\u043A\u043E\u0433\u0434\u0430",
298
+ "\u0434\u0430\u0436\u0435",
299
+ "\u043D\u0443",
300
+ "\u0432\u0434\u0440\u0443\u0433",
301
+ "\u043B\u0438",
302
+ "\u0435\u0441\u043B\u0438",
303
+ "\u0443\u0436\u0435",
304
+ "\u0438\u043B\u0438",
305
+ "\u043D\u0438",
306
+ "\u0431\u044B\u0442\u044C",
307
+ "\u0431\u044B\u043B",
308
+ "\u043D\u0435\u0433\u043E",
309
+ "\u0434\u043E",
310
+ "\u0432\u0430\u0441",
311
+ "\u043D\u0438\u0431\u0443\u0434\u044C",
312
+ "\u043E\u043F\u044F\u0442\u044C",
313
+ "\u0443\u0436",
314
+ "\u0432\u0430\u043C",
315
+ "\u0441\u043A\u0430\u0437\u0430\u043B",
316
+ "\u0432\u0435\u0434\u044C",
317
+ "\u0442\u0430\u043C",
318
+ "\u043F\u043E\u0442\u043E\u043C",
319
+ "\u0441\u0435\u0431\u044F",
320
+ "\u043D\u0438\u0447\u0435\u0433\u043E",
321
+ "\u0435\u0439",
322
+ "\u043C\u043E\u0436\u0435\u0442",
323
+ "\u043E\u043D\u0438",
324
+ "\u0442\u0443\u0442",
325
+ "\u0433\u0434\u0435",
326
+ "\u0435\u0441\u0442\u044C",
327
+ "\u043D\u0430\u0434\u043E",
328
+ "\u043D\u0435\u0439",
329
+ "\u0434\u043B\u044F",
330
+ "\u043C\u044B",
331
+ "\u0442\u0435\u0431\u044F",
332
+ "\u0438\u0445",
333
+ "\u0447\u0435\u043C",
334
+ "\u0431\u044B\u043B\u0430",
335
+ "\u0441\u0430\u043C",
336
+ "\u0447\u0442\u043E\u0431",
337
+ "\u0431\u0435\u0437",
338
+ "\u0431\u0443\u0434\u0442\u043E",
339
+ "\u0447\u0435\u043B\u043E\u0432\u0435\u043A",
340
+ "\u0447\u0435\u0433\u043E",
341
+ "\u0440\u0430\u0437",
342
+ "\u0442\u043E\u0436\u0435",
343
+ "\u0441\u0435\u0431\u0435",
344
+ "\u043F\u043E\u0434",
345
+ "\u0436\u0438\u0437\u043D\u044C",
346
+ "\u0431\u0443\u0434\u0435\u0442",
347
+ "\u0436",
348
+ "\u0442\u043E\u0433\u0434\u0430",
349
+ "\u043A\u0442\u043E",
350
+ "\u044D\u0442\u043E\u0442",
351
+ "\u0433\u043E\u0432\u043E\u0440\u0438\u043B",
352
+ "\u0442\u043E\u0433\u043E",
353
+ "\u043F\u043E\u0442\u043E\u043C\u0443",
354
+ "\u044D\u0442\u043E\u0433\u043E",
355
+ "\u043A\u0430\u043A\u043E\u0439",
356
+ "\u0441\u043E\u0432\u0441\u0435\u043C",
357
+ "\u043D\u0438\u043C",
358
+ "\u0437\u0434\u0435\u0441\u044C",
359
+ "\u044D\u0442\u043E\u043C",
360
+ "\u043E\u0434\u0438\u043D",
361
+ "\u043F\u043E\u0447\u0442\u0438",
362
+ "\u043C\u043E\u0439",
363
+ "\u0442\u0435\u043C",
364
+ "\u0447\u0442\u043E\u0431\u044B",
365
+ "\u043D\u0435\u0435",
366
+ "\u043A\u0430\u0436\u0435\u0442\u0441\u044F",
367
+ "\u0441\u0435\u0439\u0447\u0430\u0441",
368
+ "\u0431\u044B\u043B\u0438",
369
+ "\u043A\u0443\u0434\u0430",
370
+ "\u0437\u0430\u0447\u0435\u043C",
371
+ "\u0441\u043A\u0430\u0437\u0430\u0442\u044C",
372
+ "\u0432\u0441\u0435\u0445",
373
+ "\u043D\u0438\u043A\u043E\u0433\u0434\u0430",
374
+ "\u0441\u0435\u0433\u043E\u0434\u043D\u044F",
375
+ "\u043C\u043E\u0436\u043D\u043E",
376
+ "\u043F\u0440\u0438",
377
+ "\u043D\u0430\u043A\u043E\u043D\u0435\u0446",
378
+ "\u0434\u0432\u0430",
379
+ "\u043E\u0431",
380
+ "\u0434\u0440\u0443\u0433\u043E\u0439",
381
+ "\u0445\u043E\u0442\u044C",
382
+ "\u043F\u043E\u0441\u043B\u0435",
383
+ "\u043D\u0430\u0434",
384
+ "\u0431\u043E\u043B\u044C\u0448\u0435",
385
+ "\u0442\u043E\u0442",
386
+ "\u0447\u0435\u0440\u0435\u0437",
387
+ "\u044D\u0442\u0438",
388
+ "\u043D\u0430\u0441",
389
+ "\u043F\u0440\u043E",
390
+ "\u0432\u0441\u0435\u0433\u043E",
391
+ "\u043D\u0438\u0445",
392
+ "\u043A\u0430\u043A\u0430\u044F",
393
+ "\u043C\u043D\u043E\u0433\u043E",
394
+ "\u0440\u0430\u0437\u0432\u0435",
395
+ "\u0441\u043A\u0430\u0437\u0430\u043B\u0430",
396
+ "\u0442\u0440\u0438",
397
+ "\u044D\u0442\u0443",
398
+ "\u043C\u043E\u044F",
399
+ "\u0432\u043F\u0440\u043E\u0447\u0435\u043C",
400
+ "\u0445\u043E\u0440\u043E\u0448\u043E",
401
+ "\u0441\u0432\u043E\u044E",
402
+ "\u044D\u0442\u043E\u0439",
403
+ "\u043F\u0435\u0440\u0435\u0434",
404
+ "\u0438\u043D\u043E\u0433\u0434\u0430",
405
+ "\u043B\u0443\u0447\u0448\u0435",
406
+ "\u0447\u0443\u0442\u044C",
407
+ "\u0442\u043E\u043C",
408
+ "\u043D\u0435\u043B\u044C\u0437\u044F",
409
+ "\u0442\u0430\u043A\u043E\u0439",
410
+ "\u0438\u043C",
411
+ "\u0431\u043E\u043B\u0435\u0435",
412
+ "\u0432\u0441\u0435\u0433\u0434\u0430",
413
+ "\u043A\u043E\u043D\u0435\u0447\u043D\u043E",
414
+ "\u0432\u0441\u044E",
415
+ "\u043C\u0435\u0436\u0434\u0443"
416
+ ]);
417
+ var russian = {
418
+ name: "russian",
419
+ stemmer: stem,
420
+ stopWords,
421
+ tokenizer: { splitPattern: /[^a-z0-9а-яё]+/gi }
422
+ };
423
+
424
+ export { russian };
@@ -0,0 +1,5 @@
1
+ import { L as LanguageModule } from '../language-ClUGLuoC.js';
2
+
3
+ declare const sanskrit: LanguageModule;
4
+
5
+ export { sanskrit };
@@ -0,0 +1,155 @@
1
+ // src/languages/sanskrit.ts
2
+ var LONG_NOMINAL_ENDINGS = [
3
+ "\u0906\u092D\u094D\u092F\u093E\u092E\u094D",
4
+ "\u093E\u092D\u094D\u092F\u093E\u092E\u094D",
5
+ "\u0906\u0928\u093E\u092E\u094D",
6
+ "\u090F\u092D\u094D\u092F\u0903",
7
+ "\u093E\u0923\u093E\u092E\u094D",
8
+ "\u0947\u092D\u094D\u092F\u0903"
9
+ ];
10
+ var MEDIUM_NOMINAL_ENDINGS = [
11
+ "\u0938\u094D\u092F",
12
+ "\u0947\u0937\u0941",
13
+ "\u093E\u0924\u094D",
14
+ "\u093E\u092E\u094D",
15
+ "\u093E\u0928\u094D",
16
+ "\u0947\u0928",
17
+ "\u092F\u093E",
18
+ "\u093E\u0903",
19
+ "\u0905\u0903",
20
+ "\u092E\u094D",
21
+ "\u093E\u092E",
22
+ "\u094C",
23
+ "\u0903",
24
+ "\u0906"
25
+ ];
26
+ var SHORT_NOMINAL_ENDINGS = ["\u093E", "\u093F", "\u0940", "\u0941", "\u0942", "\u0947", "\u094B", "\u0902"];
27
+ var VERB_ENDINGS = [
28
+ "\u0928\u094D\u0924\u093F",
29
+ "\u0928\u094D\u0924\u0947",
30
+ "\u0928\u094D\u0924\u0941",
31
+ "\u0905\u092E\u094D",
32
+ "\u0938\u093F",
33
+ "\u0924\u093F",
34
+ "\u092E\u093F",
35
+ "\u0924\u0947",
36
+ "\u0938\u0947",
37
+ "\u0924\u0941"
38
+ ];
39
+ function charLen(str) {
40
+ let count = 0;
41
+ for (const _ of str) {
42
+ count++;
43
+ }
44
+ return count;
45
+ }
46
+ function endsWithStr(word, suffix) {
47
+ return word.endsWith(suffix);
48
+ }
49
+ function removeSuffix(word, suffix) {
50
+ return word.slice(0, word.length - suffix.length);
51
+ }
52
+ function tryRemoveFromList(word, suffixes, minRemaining) {
53
+ for (const suffix of suffixes) {
54
+ if (endsWithStr(word, suffix)) {
55
+ const stem2 = removeSuffix(word, suffix);
56
+ if (charLen(stem2) >= minRemaining) {
57
+ return stem2;
58
+ }
59
+ }
60
+ }
61
+ return word;
62
+ }
63
+ function stem(word) {
64
+ if (charLen(word) < 4) return word;
65
+ let result = tryRemoveFromList(word, LONG_NOMINAL_ENDINGS, 3);
66
+ if (result !== word) return result;
67
+ result = tryRemoveFromList(word, MEDIUM_NOMINAL_ENDINGS, 3);
68
+ if (result !== word) return result;
69
+ result = tryRemoveFromList(word, VERB_ENDINGS, 3);
70
+ if (result !== word) return result;
71
+ result = tryRemoveFromList(word, SHORT_NOMINAL_ENDINGS, 3);
72
+ return result;
73
+ }
74
+ var stopWords = /* @__PURE__ */ new Set([
75
+ "\u091A",
76
+ "\u0935\u093E",
77
+ "\u0928",
78
+ "\u0905\u092A\u093F",
79
+ "\u0924\u0941",
80
+ "\u090F\u0935",
81
+ "\u0939",
82
+ "\u0907\u0924\u093F",
83
+ "\u0924\u0924\u094D",
84
+ "\u092F\u0924\u094D",
85
+ "\u0915\u093F\u092E\u094D",
86
+ "\u0905\u0925",
87
+ "\u0905\u0924\u094D\u0930",
88
+ "\u0924\u0925\u093E",
89
+ "\u0907\u0926\u092E\u094D",
90
+ "\u090F\u0924\u0924\u094D",
91
+ "\u0938\u0903",
92
+ "\u0938\u093E",
93
+ "\u0905\u092F\u092E\u094D",
94
+ "\u0907\u092F\u092E\u094D",
95
+ "\u0905\u0938\u094D\u0924\u093F",
96
+ "\u092D\u0935\u0924\u093F",
97
+ "\u092F\u0926\u093F",
98
+ "\u0924\u0930\u094D\u0939\u093F",
99
+ "\u0905\u0925\u0935\u093E",
100
+ "\u092A\u0930\u0928\u094D\u0924\u0941",
101
+ "\u0915\u0926\u093E",
102
+ "\u0915\u0941\u0924\u094D\u0930",
103
+ "\u0915\u0925\u092E\u094D",
104
+ "\u0938\u0939",
105
+ "\u0935\u093F\u0928\u093E",
106
+ "\u092A\u094D\u0930\u0924\u093F",
107
+ "\u0905\u0928\u0941",
108
+ "\u0905\u0927\u093F",
109
+ "\u0905\u092D\u093F",
110
+ "\u0909\u092A",
111
+ "\u092A\u0930\u093F",
112
+ "\u0905\u0935",
113
+ "\u0928\u093F\u0903",
114
+ "\u0906",
115
+ "\u0909\u0924",
116
+ "\u0905\u092A\u0930\u092E\u094D",
117
+ "\u092A\u0941\u0928\u0903",
118
+ "\u092F\u0925\u093E",
119
+ "\u090F\u0935\u092E\u094D",
120
+ "\u0907\u0935",
121
+ "\u0928\u093E\u092E",
122
+ "\u0916\u0932\u0941",
123
+ "\u0939\u093F",
124
+ "\u0928\u0941",
125
+ "\u0905\u0924\u0903",
126
+ "\u0924\u0924\u0903",
127
+ "\u092F\u0924\u0903",
128
+ "\u0915\u0941\u0924\u0903",
129
+ "\u0905\u0924",
130
+ "\u090F\u0935",
131
+ "\u0924\u0924\u094D\u0930",
132
+ "\u092F\u0924\u094D\u0930",
133
+ "\u0938\u0930\u094D\u0935\u0924\u094D\u0930",
134
+ "\u0905\u0928\u094D\u092F\u0924\u094D\u0930",
135
+ "\u0907\u0924\u0903",
136
+ "\u092E\u092E",
137
+ "\u0924\u0935",
138
+ "\u0905\u0938\u094D\u092F",
139
+ "\u0905\u0938\u094D\u092F\u093E\u0903",
140
+ "\u0924\u0938\u094D\u092F",
141
+ "\u0924\u0938\u094D\u092F\u093E\u0903",
142
+ "\u090F\u0937\u0903",
143
+ "\u090F\u0937\u093E",
144
+ "\u0938\u0930\u094D\u0935\u092E\u094D",
145
+ "\u0915\u093F\u091E\u094D\u091A\u093F\u0924\u094D",
146
+ "\u0905\u0928\u094D\u092F\u0924\u094D"
147
+ ]);
148
+ var sanskrit = {
149
+ name: "sanskrit",
150
+ stemmer: stem,
151
+ stopWords,
152
+ tokenizer: { splitPattern: /[^\u0900-\u097fa-z0-9]+/gi }
153
+ };
154
+
155
+ export { sanskrit };
@@ -0,0 +1,5 @@
1
+ import { L as LanguageModule } from '../language-ClUGLuoC.js';
2
+
3
+ declare const serbian: LanguageModule;
4
+
5
+ export { serbian };