@delali/narsil 0.1.14 → 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.
Files changed (251) hide show
  1. package/NOTICE +54 -0
  2. package/README.md +38 -972
  3. package/dist/adapters/filesystem.mjs +1 -1
  4. package/dist/adapters/indexeddb.mjs +1 -1
  5. package/dist/{chunk-WISGW24C.mjs → chunk-AUMKFYTG.mjs} +1 -1
  6. package/dist/{chunk-HRABJLPB.mjs → chunk-BKAI2WXI.mjs} +1 -0
  7. package/dist/chunk-GHJWC2E5.mjs +9 -0
  8. package/dist/chunk-KH3YGMVT.mjs +15 -0
  9. package/dist/{chunk-ALB35PRQ.mjs → chunk-M2EDG55Y.mjs} +8 -0
  10. package/dist/{chunk-HMO6OMZ3.mjs → chunk-S6IAXOBA.mjs} +1073 -506
  11. package/dist/chunk-TGP5M5R7.mjs +880 -0
  12. package/dist/chunk-U2BKYEC7.mjs +254 -0
  13. package/dist/{chunk-MEW7HD75.mjs → chunk-XAKNSWIK.mjs} +2543 -1154
  14. package/dist/{config-CojEPOgS.d.ts → config-P27AtSn4.d.ts} +28 -7
  15. package/dist/direct-executor-2FV3MEDD.mjs +5 -0
  16. package/dist/distribution/coordinator/etcd.d.ts +2 -2
  17. package/dist/distribution/coordinator/etcd.mjs +2 -2
  18. package/dist/distribution/coordinator/in-memory.d.ts +2 -2
  19. package/dist/distribution.d.ts +10 -4
  20. package/dist/distribution.mjs +1875 -1772
  21. package/dist/embeddings/openai.mjs +1 -1
  22. package/dist/index.browser.mjs +4566 -1783
  23. package/dist/index.d.ts +14 -5
  24. package/dist/index.mjs +6 -5
  25. package/dist/{language-ONQ3iVDf.d.ts → language-CmJBHf1j.d.ts} +4 -1
  26. package/dist/languages/albanian.d.ts +5 -0
  27. package/dist/languages/albanian.mjs +103 -0
  28. package/dist/languages/amharic.d.ts +5 -0
  29. package/dist/languages/amharic.mjs +240 -0
  30. package/dist/languages/arabic.d.ts +1 -1
  31. package/dist/languages/arabic.mjs +939 -154
  32. package/dist/languages/armenian.d.ts +1 -1
  33. package/dist/languages/armenian.mjs +275 -243
  34. package/dist/languages/azerbaijani.d.ts +5 -0
  35. package/dist/languages/azerbaijani.mjs +152 -0
  36. package/dist/languages/bambara.d.ts +5 -0
  37. package/dist/languages/bambara.mjs +60 -0
  38. package/dist/languages/basque.d.ts +5 -0
  39. package/dist/languages/basque.mjs +726 -0
  40. package/dist/languages/belarusian.d.ts +5 -0
  41. package/dist/languages/belarusian.mjs +100 -0
  42. package/dist/languages/bengali.d.ts +5 -0
  43. package/dist/languages/bengali.mjs +128 -0
  44. package/dist/languages/bosnian.d.ts +5 -0
  45. package/dist/languages/bosnian.mjs +197 -0
  46. package/dist/languages/breton.d.ts +5 -0
  47. package/dist/languages/breton.mjs +96 -0
  48. package/dist/languages/bulgarian.d.ts +1 -1
  49. package/dist/languages/bulgarian.mjs +11 -2
  50. package/dist/languages/burmese.d.ts +5 -0
  51. package/dist/languages/burmese.mjs +57 -0
  52. package/dist/languages/catalan.d.ts +5 -0
  53. package/dist/languages/catalan.mjs +987 -0
  54. package/dist/languages/chinese.d.ts +1 -1
  55. package/dist/languages/chinese.mjs +4 -3
  56. package/dist/languages/croatian.d.ts +5 -0
  57. package/dist/languages/croatian.mjs +191 -0
  58. package/dist/languages/czech.d.ts +5 -0
  59. package/dist/languages/czech.mjs +628 -0
  60. package/dist/languages/dagbani.d.ts +1 -1
  61. package/dist/languages/dagbani.mjs +11 -2
  62. package/dist/languages/danish.d.ts +1 -1
  63. package/dist/languages/danish.mjs +215 -110
  64. package/dist/languages/dutch.d.ts +1 -1
  65. package/dist/languages/dutch.mjs +1248 -163
  66. package/dist/languages/english.d.ts +1 -1
  67. package/dist/languages/english.mjs +2 -1
  68. package/dist/languages/esperanto.d.ts +5 -0
  69. package/dist/languages/esperanto.mjs +689 -0
  70. package/dist/languages/estonian.d.ts +5 -0
  71. package/dist/languages/estonian.mjs +2160 -0
  72. package/dist/languages/ewe.d.ts +1 -1
  73. package/dist/languages/ewe.mjs +11 -2
  74. package/dist/languages/faroese.d.ts +5 -0
  75. package/dist/languages/faroese.mjs +93 -0
  76. package/dist/languages/fijian.d.ts +5 -0
  77. package/dist/languages/fijian.mjs +55 -0
  78. package/dist/languages/finnish.d.ts +1 -1
  79. package/dist/languages/finnish.mjs +528 -263
  80. package/dist/languages/french.d.ts +1 -1
  81. package/dist/languages/french.mjs +950 -437
  82. package/dist/languages/ga.d.ts +1 -1
  83. package/dist/languages/ga.mjs +2 -1
  84. package/dist/languages/galician.d.ts +5 -0
  85. package/dist/languages/galician.mjs +172 -0
  86. package/dist/languages/georgian.d.ts +5 -0
  87. package/dist/languages/georgian.mjs +91 -0
  88. package/dist/languages/german.d.ts +1 -1
  89. package/dist/languages/german.mjs +432 -162
  90. package/dist/languages/greek.d.ts +1 -1
  91. package/dist/languages/greek.mjs +1970 -281
  92. package/dist/languages/guarani.d.ts +5 -0
  93. package/dist/languages/guarani.mjs +132 -0
  94. package/dist/languages/gujarati.d.ts +5 -0
  95. package/dist/languages/gujarati.mjs +234 -0
  96. package/dist/languages/haitian-creole.d.ts +5 -0
  97. package/dist/languages/haitian-creole.mjs +106 -0
  98. package/dist/languages/hausa.d.ts +1 -1
  99. package/dist/languages/hausa.mjs +2 -1
  100. package/dist/languages/hawaiian.d.ts +5 -0
  101. package/dist/languages/hawaiian.mjs +69 -0
  102. package/dist/languages/hebrew.d.ts +5 -0
  103. package/dist/languages/hebrew.mjs +213 -0
  104. package/dist/languages/hindi.d.ts +1 -1
  105. package/dist/languages/hindi.mjs +175 -97
  106. package/dist/languages/hungarian.d.ts +1 -1
  107. package/dist/languages/hungarian.mjs +412 -326
  108. package/dist/languages/icelandic.d.ts +5 -0
  109. package/dist/languages/icelandic.mjs +161 -0
  110. package/dist/languages/igbo.d.ts +1 -1
  111. package/dist/languages/igbo.mjs +2 -1
  112. package/dist/languages/indonesian.d.ts +1 -1
  113. package/dist/languages/indonesian.mjs +329 -137
  114. package/dist/languages/irish.d.ts +1 -1
  115. package/dist/languages/irish.mjs +223 -139
  116. package/dist/languages/italian.d.ts +1 -1
  117. package/dist/languages/italian.mjs +703 -406
  118. package/dist/languages/japanese.d.ts +1 -1
  119. package/dist/languages/japanese.mjs +5 -108
  120. package/dist/languages/kannada.d.ts +5 -0
  121. package/dist/languages/kannada.mjs +94 -0
  122. package/dist/languages/kazakh.d.ts +5 -0
  123. package/dist/languages/kazakh.mjs +90 -0
  124. package/dist/languages/khmer.d.ts +5 -0
  125. package/dist/languages/khmer.mjs +181 -0
  126. package/dist/languages/kinyarwanda.d.ts +5 -0
  127. package/dist/languages/kinyarwanda.mjs +99 -0
  128. package/dist/languages/kirundi.d.ts +5 -0
  129. package/dist/languages/kirundi.mjs +92 -0
  130. package/dist/languages/korean.d.ts +5 -0
  131. package/dist/languages/korean.mjs +252 -0
  132. package/dist/languages/kurmanji.d.ts +5 -0
  133. package/dist/languages/kurmanji.mjs +50 -0
  134. package/dist/languages/kyrgyz.d.ts +5 -0
  135. package/dist/languages/kyrgyz.mjs +108 -0
  136. package/dist/languages/lao.d.ts +5 -0
  137. package/dist/languages/lao.mjs +63 -0
  138. package/dist/languages/latin.d.ts +5 -0
  139. package/dist/languages/latin.mjs +69 -0
  140. package/dist/languages/latvian.d.ts +5 -0
  141. package/dist/languages/latvian.mjs +173 -0
  142. package/dist/languages/lingala.d.ts +5 -0
  143. package/dist/languages/lingala.mjs +61 -0
  144. package/dist/languages/lithuanian.d.ts +5 -0
  145. package/dist/languages/lithuanian.mjs +571 -0
  146. package/dist/languages/luxembourgish.d.ts +5 -0
  147. package/dist/languages/luxembourgish.mjs +214 -0
  148. package/dist/languages/macedonian.d.ts +5 -0
  149. package/dist/languages/macedonian.mjs +808 -0
  150. package/dist/languages/malagasy.d.ts +5 -0
  151. package/dist/languages/malagasy.mjs +67 -0
  152. package/dist/languages/malay.d.ts +5 -0
  153. package/dist/languages/malay.mjs +482 -0
  154. package/dist/languages/malayalam.d.ts +5 -0
  155. package/dist/languages/malayalam.mjs +122 -0
  156. package/dist/languages/maltese.d.ts +5 -0
  157. package/dist/languages/maltese.mjs +139 -0
  158. package/dist/languages/maori.d.ts +5 -0
  159. package/dist/languages/maori.mjs +79 -0
  160. package/dist/languages/marathi.d.ts +5 -0
  161. package/dist/languages/marathi.mjs +111 -0
  162. package/dist/languages/nepali.d.ts +1 -1
  163. package/dist/languages/nepali.mjs +209 -99
  164. package/dist/languages/norwegian.d.ts +1 -1
  165. package/dist/languages/norwegian.mjs +218 -85
  166. package/dist/languages/oromo.d.ts +5 -0
  167. package/dist/languages/oromo.mjs +78 -0
  168. package/dist/languages/persian.d.ts +5 -0
  169. package/dist/languages/persian.mjs +710 -0
  170. package/dist/languages/polish.d.ts +5 -0
  171. package/dist/languages/polish.mjs +614 -0
  172. package/dist/languages/portuguese.d.ts +1 -1
  173. package/dist/languages/portuguese.mjs +613 -380
  174. package/dist/languages/punjabi.d.ts +5 -0
  175. package/dist/languages/punjabi.mjs +197 -0
  176. package/dist/languages/romanian.d.ts +1 -1
  177. package/dist/languages/romanian.mjs +561 -382
  178. package/dist/languages/russian.d.ts +1 -1
  179. package/dist/languages/russian.mjs +373 -244
  180. package/dist/languages/samoan.d.ts +5 -0
  181. package/dist/languages/samoan.mjs +63 -0
  182. package/dist/languages/sanskrit.d.ts +1 -1
  183. package/dist/languages/sanskrit.mjs +2 -2
  184. package/dist/languages/scottish-gaelic.d.ts +5 -0
  185. package/dist/languages/scottish-gaelic.mjs +370 -0
  186. package/dist/languages/serbian.d.ts +1 -1
  187. package/dist/languages/serbian.mjs +3635 -155
  188. package/dist/languages/shona.d.ts +5 -0
  189. package/dist/languages/shona.mjs +91 -0
  190. package/dist/languages/sinhala.d.ts +5 -0
  191. package/dist/languages/sinhala.mjs +182 -0
  192. package/dist/languages/slovak.d.ts +5 -0
  193. package/dist/languages/slovak.mjs +430 -0
  194. package/dist/languages/slovenian.d.ts +1 -1
  195. package/dist/languages/slovenian.mjs +11 -2
  196. package/dist/languages/sorani.d.ts +5 -0
  197. package/dist/languages/sorani.mjs +156 -0
  198. package/dist/languages/spanish.d.ts +1 -1
  199. package/dist/languages/spanish.mjs +676 -374
  200. package/dist/languages/swahili.d.ts +1 -1
  201. package/dist/languages/swahili.mjs +2 -1
  202. package/dist/languages/swedish.d.ts +1 -1
  203. package/dist/languages/swedish.mjs +237 -95
  204. package/dist/languages/tagalog.d.ts +5 -0
  205. package/dist/languages/tagalog.mjs +159 -0
  206. package/dist/languages/tamil.d.ts +1 -1
  207. package/dist/languages/tamil.mjs +836 -64
  208. package/dist/languages/tatar.d.ts +5 -0
  209. package/dist/languages/tatar.mjs +1017 -0
  210. package/dist/languages/telugu.d.ts +5 -0
  211. package/dist/languages/telugu.mjs +62 -0
  212. package/dist/languages/thai.d.ts +5 -0
  213. package/dist/languages/thai.mjs +65 -0
  214. package/dist/languages/tibetan.d.ts +5 -0
  215. package/dist/languages/tibetan.mjs +119 -0
  216. package/dist/languages/tigrinya.d.ts +5 -0
  217. package/dist/languages/tigrinya.mjs +194 -0
  218. package/dist/languages/tongan.d.ts +5 -0
  219. package/dist/languages/tongan.mjs +56 -0
  220. package/dist/languages/turkish.d.ts +1 -1
  221. package/dist/languages/turkish.mjs +1246 -393
  222. package/dist/languages/twi.d.ts +1 -1
  223. package/dist/languages/twi.mjs +13 -2
  224. package/dist/languages/ukrainian.d.ts +1 -1
  225. package/dist/languages/ukrainian.mjs +125 -47
  226. package/dist/languages/urdu.d.ts +5 -0
  227. package/dist/languages/urdu.mjs +528 -0
  228. package/dist/languages/vietnamese.d.ts +5 -0
  229. package/dist/languages/vietnamese.mjs +277 -0
  230. package/dist/languages/welsh.d.ts +5 -0
  231. package/dist/languages/welsh.mjs +446 -0
  232. package/dist/languages/wolof.d.ts +5 -0
  233. package/dist/languages/wolof.mjs +79 -0
  234. package/dist/languages/xhosa.d.ts +5 -0
  235. package/dist/languages/xhosa.mjs +95 -0
  236. package/dist/languages/yoruba.d.ts +1 -1
  237. package/dist/languages/yoruba.mjs +1 -0
  238. package/dist/languages/zulu.d.ts +1 -1
  239. package/dist/languages/zulu.mjs +2 -1
  240. package/dist/narsil-CMZRPDlQ.d.ts +159 -0
  241. package/dist/persistence/durability/checkpoint-worker.d.ts +13 -0
  242. package/dist/persistence/durability/checkpoint-worker.mjs +6 -5
  243. package/dist/{schema-DCgkO1j4.d.ts → schema-BnvLvjRp.d.ts} +5 -3
  244. package/dist/server.d.ts +12 -3
  245. package/dist/server.mjs +183 -64
  246. package/dist/{types-DHX6zGeD.d.ts → types-BRTcBgAp.d.ts} +1 -1
  247. package/dist/workers/entry.mjs +2 -2
  248. package/package.json +10 -3
  249. package/dist/chunk-TW6BXTOL.mjs +0 -338
  250. package/dist/direct-executor-E52FFGDE.mjs +0 -4
  251. package/dist/narsil-D-84Nvm4.d.ts +0 -72
@@ -1,176 +1,440 @@
1
- // src/languages/german.ts
2
- var VOWELS = "aeiouy\xE4\xF6\xFC";
3
- function isVowel(ch) {
4
- return VOWELS.includes(ch);
5
- }
6
- function findRegions(word) {
7
- let r1 = word.length;
8
- let r2 = word.length;
9
- let i = 1;
10
- while (i < word.length) {
11
- if (!isVowel(word[i]) && isVowel(word[i - 1])) {
12
- r1 = i + 1;
13
- break;
14
- }
15
- i++;
16
- }
17
- if (r1 < 3) r1 = 3;
18
- i = r1;
19
- while (i < word.length) {
20
- if (!isVowel(word[i]) && i > 0 && isVowel(word[i - 1])) {
21
- r2 = i + 1;
22
- break;
23
- }
24
- i++;
25
- }
26
- return { r1, r2 };
27
- }
28
- function markConsonantUY(word) {
29
- const chars = word.split("");
30
- for (let i = 1; i < chars.length - 1; i++) {
31
- if (chars[i] === "u" && isVowel(chars[i - 1]) && isVowel(chars[i + 1])) {
32
- chars[i] = "U";
1
+ import { withNormalisedSpellings } from '../chunk-GHJWC2E5.mjs';
2
+ import { BaseStemmer } from '../chunk-U2BKYEC7.mjs';
3
+
4
+ // src/languages/snowball/german.ts
5
+ var a_0 = [
6
+ ["", 5],
7
+ ["ae", 2, 1],
8
+ ["oe", 3, 2],
9
+ ["qu", -1, 3],
10
+ ["ue", 4, 4],
11
+ ["\xDF", 1, 5]
12
+ ];
13
+ var a_1 = [
14
+ ["", 5],
15
+ ["U", 2, 1],
16
+ ["Y", 1, 2],
17
+ ["\xE4", 3, 3],
18
+ ["\xF6", 4, 4],
19
+ ["\xFC", 2, 5]
20
+ ];
21
+ var a_2 = [
22
+ ["e", 3],
23
+ ["em", 1],
24
+ ["en", 3],
25
+ ["erinnen", 2, 1],
26
+ ["erin", 2],
27
+ ["ln", 5],
28
+ ["ern", 2],
29
+ ["er", 2],
30
+ ["s", 4],
31
+ ["es", 3, 1],
32
+ ["lns", 5, 2]
33
+ ];
34
+ var a_3 = [
35
+ ["tick", -1],
36
+ ["plan", -1],
37
+ ["geordn", -1],
38
+ ["intern", -1],
39
+ ["tr", -1]
40
+ ];
41
+ var a_4 = [
42
+ ["en", 1],
43
+ ["er", 1],
44
+ ["et", 3],
45
+ ["st", 2],
46
+ ["est", 1, 1]
47
+ ];
48
+ var a_5 = [
49
+ ["ig", 1],
50
+ ["lich", 1]
51
+ ];
52
+ var a_6 = [
53
+ ["end", 1],
54
+ ["ig", 2],
55
+ ["ung", 1],
56
+ ["lich", 3],
57
+ ["isch", 2],
58
+ ["ik", 2],
59
+ ["heit", 3],
60
+ ["keit", 4]
61
+ ];
62
+ var a_7 = [
63
+ ["'", 1],
64
+ ["'sch", 1],
65
+ ["'s", 1]
66
+ ];
67
+ var g_v = [17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32, 8];
68
+ var g_et_ending = [1, 128, 198, 227, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128];
69
+ var g_s_ending = [117, 30, 5];
70
+ var g_st_ending = [117, 30, 4];
71
+ var GermanStemmer = class extends BaseStemmer {
72
+ #stem() {
73
+ let a;
74
+ let I_x;
75
+ let I_p2;
76
+ let I_p1;
77
+ const v_1 = this.c;
78
+ {
79
+ const v_2 = this.c;
80
+ while (true) {
81
+ const v_3 = this.c;
82
+ lab1: {
83
+ while (true) {
84
+ const v_4 = this.c;
85
+ lab3: {
86
+ if (!this.in_grouping(g_v, 97, 252)) break lab3;
87
+ this.bra = this.c;
88
+ lab4: {
89
+ const v_5 = this.c;
90
+ lab5: {
91
+ if (!this.eq_s("u")) break lab5;
92
+ this.ket = this.c;
93
+ if (!this.in_grouping(g_v, 97, 252)) break lab5;
94
+ this.slice_from("U");
95
+ break lab4;
96
+ }
97
+ this.c = v_5;
98
+ if (!this.eq_s("y")) break lab3;
99
+ this.ket = this.c;
100
+ if (!this.in_grouping(g_v, 97, 252)) break lab3;
101
+ this.slice_from("Y");
102
+ }
103
+ this.c = v_4;
104
+ break;
105
+ }
106
+ this.c = v_4;
107
+ if (this.c >= this.limit) break lab1;
108
+ this.c++;
109
+ }
110
+ continue;
111
+ }
112
+ this.c = v_3;
113
+ break;
114
+ }
115
+ this.c = v_2;
116
+ while (true) {
117
+ const v_6 = this.c;
118
+ lab6: {
119
+ this.bra = this.c;
120
+ a = this.find_among(a_0);
121
+ this.ket = this.c;
122
+ switch (a) {
123
+ case 1: {
124
+ this.slice_from("ss");
125
+ break;
126
+ }
127
+ case 2: {
128
+ this.slice_from("\xE4");
129
+ break;
130
+ }
131
+ case 3: {
132
+ this.slice_from("\xF6");
133
+ break;
134
+ }
135
+ case 4: {
136
+ this.slice_from("\xFC");
137
+ break;
138
+ }
139
+ case 5: {
140
+ if (this.c >= this.limit) break lab6;
141
+ this.c++;
142
+ break;
143
+ }
144
+ }
145
+ continue;
146
+ }
147
+ this.c = v_6;
148
+ break;
149
+ }
33
150
  }
34
- if (chars[i] === "y" && isVowel(chars[i - 1]) && isVowel(chars[i + 1])) {
35
- chars[i] = "Y";
151
+ this.c = v_1;
152
+ const v_7 = this.c;
153
+ lab7: {
154
+ I_p1 = this.limit;
155
+ I_p2 = this.limit;
156
+ const v_8 = this.c;
157
+ if (this.c + 3 > this.limit) break lab7;
158
+ this.c += 3;
159
+ I_x = this.c;
160
+ this.c = v_8;
161
+ if (!this.go_out_grouping(g_v, 97, 252)) break lab7;
162
+ this.c++;
163
+ if (!this.go_in_grouping(g_v, 97, 252)) break lab7;
164
+ this.c++;
165
+ I_p1 = this.c;
166
+ lab8: {
167
+ if (
168
+ /**@type {boolean}*/
169
+ I_p1 >= I_x
170
+ ) break lab8;
171
+ I_p1 = I_x;
172
+ }
173
+ if (!this.go_out_grouping(g_v, 97, 252)) break lab7;
174
+ this.c++;
175
+ if (!this.go_in_grouping(g_v, 97, 252)) break lab7;
176
+ this.c++;
177
+ I_p2 = this.c;
36
178
  }
37
- }
38
- return chars.join("");
39
- }
40
- var S_ENDING_VALID = "bdfghklmnrt";
41
- function isValidSEnding(word, beforeSuffix) {
42
- if (beforeSuffix <= 0) return false;
43
- return S_ENDING_VALID.includes(word[beforeSuffix - 1]);
44
- }
45
- var ST_ENDING_VALID = "bdfghklmnt";
46
- var STEP1_SUFFIXES = ["em", "ern", "er", "en", "es", "e", "s"];
47
- var STEP2_SUFFIXES = ["est", "en", "er", "st"];
48
- var RE_ESZETT = /ß/g;
49
- var RE_UPPER_Y = /Y/g;
50
- var RE_UPPER_U = /U/g;
51
- var RE_UMLAUT_A = /ä/g;
52
- var RE_UMLAUT_O = /ö/g;
53
- var RE_UMLAUT_U = /ü/g;
54
- function isValidStEnding(word, beforeSuffix) {
55
- if (beforeSuffix <= 0) return false;
56
- return ST_ENDING_VALID.includes(word[beforeSuffix - 1]);
57
- }
58
- function step1(word, r1) {
59
- for (const suffix of STEP1_SUFFIXES) {
60
- if (word.endsWith(suffix) && word.length - suffix.length >= r1) {
61
- if (suffix === "s") {
62
- const cutPos = word.length - 1;
63
- if (isValidSEnding(word, cutPos)) {
64
- return word.slice(0, cutPos);
179
+ this.c = v_7;
180
+ this.limit_backward = this.c;
181
+ this.c = this.limit;
182
+ {
183
+ const v_9 = this.limit - this.c;
184
+ lab10: {
185
+ this.ket = this.c;
186
+ a = this.find_among_b(a_2);
187
+ if (a === 0) break lab10;
188
+ this.bra = this.c;
189
+ if (
190
+ /**@type {boolean}*/
191
+ I_p1 > this.c
192
+ ) break lab10;
193
+ switch (a) {
194
+ case 1: {
195
+ lab11: {
196
+ if (!this.eq_s_b("syst")) break lab11;
197
+ break lab10;
198
+ }
199
+ this.slice_del();
200
+ break;
201
+ }
202
+ case 2: {
203
+ this.slice_del();
204
+ break;
205
+ }
206
+ case 3: {
207
+ this.slice_del();
208
+ const v_10 = this.limit - this.c;
209
+ lab12: {
210
+ this.ket = this.c;
211
+ if (!this.eq_s_b("s")) {
212
+ this.c = this.limit - v_10;
213
+ break lab12;
214
+ }
215
+ this.bra = this.c;
216
+ if (!this.eq_s_b("nis")) {
217
+ this.c = this.limit - v_10;
218
+ break lab12;
219
+ }
220
+ this.slice_del();
221
+ }
222
+ break;
223
+ }
224
+ case 4: {
225
+ if (!this.in_grouping_b(g_s_ending, 98, 116)) break lab10;
226
+ this.slice_del();
227
+ break;
228
+ }
229
+ case 5: {
230
+ this.slice_from("l");
231
+ break;
232
+ }
65
233
  }
66
- return word;
67
234
  }
68
- const stripped = word.slice(0, word.length - suffix.length);
69
- if (suffix === "en" || suffix === "e" || suffix === "es") {
70
- if (stripped.endsWith("niss")) {
71
- return stripped.slice(0, -1);
235
+ this.c = this.limit - v_9;
236
+ const v_11 = this.limit - this.c;
237
+ lab13: {
238
+ this.ket = this.c;
239
+ a = this.find_among_b(a_4);
240
+ if (a === 0) break lab13;
241
+ this.bra = this.c;
242
+ if (
243
+ /**@type {boolean}*/
244
+ I_p1 > this.c
245
+ ) break lab13;
246
+ switch (a) {
247
+ case 1: {
248
+ this.slice_del();
249
+ break;
250
+ }
251
+ case 2: {
252
+ if (!this.in_grouping_b(g_st_ending, 98, 116)) break lab13;
253
+ if (this.c - 3 < this.limit_backward) break lab13;
254
+ this.c -= 3;
255
+ this.slice_del();
256
+ break;
257
+ }
258
+ case 3: {
259
+ const v_12 = this.limit - this.c;
260
+ if (!this.in_grouping_b(g_et_ending, 85, 228)) break lab13;
261
+ this.c = this.limit - v_12;
262
+ {
263
+ const v_13 = this.limit - this.c;
264
+ lab14: {
265
+ if (this.find_among_b(a_3) === 0) break lab14;
266
+ break lab13;
267
+ }
268
+ this.c = this.limit - v_13;
269
+ }
270
+ this.slice_del();
271
+ break;
272
+ }
72
273
  }
73
274
  }
74
- return stripped;
75
- }
76
- }
77
- return word;
78
- }
79
- function step2(word, r1) {
80
- for (const suffix of STEP2_SUFFIXES) {
81
- if (word.endsWith(suffix) && word.length - suffix.length >= r1) {
82
- if (suffix === "st") {
83
- const cutPos = word.length - 2;
84
- if (cutPos >= 3 && isValidStEnding(word, cutPos)) {
85
- return word.slice(0, cutPos);
275
+ this.c = this.limit - v_11;
276
+ const v_14 = this.limit - this.c;
277
+ lab15: {
278
+ this.ket = this.c;
279
+ a = this.find_among_b(a_6);
280
+ if (a === 0) break lab15;
281
+ this.bra = this.c;
282
+ if (
283
+ /**@type {boolean}*/
284
+ I_p2 > this.c
285
+ ) break lab15;
286
+ switch (a) {
287
+ case 1: {
288
+ this.slice_del();
289
+ const v_15 = this.limit - this.c;
290
+ lab16: {
291
+ this.ket = this.c;
292
+ if (!this.eq_s_b("ig")) {
293
+ this.c = this.limit - v_15;
294
+ break lab16;
295
+ }
296
+ this.bra = this.c;
297
+ lab17: {
298
+ if (!this.eq_s_b("e")) break lab17;
299
+ this.c = this.limit - v_15;
300
+ break lab16;
301
+ }
302
+ if (
303
+ /**@type {boolean}*/
304
+ I_p2 > this.c
305
+ ) {
306
+ this.c = this.limit - v_15;
307
+ break lab16;
308
+ }
309
+ this.slice_del();
310
+ }
311
+ break;
312
+ }
313
+ case 2: {
314
+ lab18: {
315
+ if (!this.eq_s_b("e")) break lab18;
316
+ break lab15;
317
+ }
318
+ this.slice_del();
319
+ break;
320
+ }
321
+ case 3: {
322
+ this.slice_del();
323
+ const v_16 = this.limit - this.c;
324
+ lab19: {
325
+ this.ket = this.c;
326
+ lab20: {
327
+ lab21: {
328
+ if (!this.eq_s_b("er")) break lab21;
329
+ break lab20;
330
+ }
331
+ if (!this.eq_s_b("en")) {
332
+ this.c = this.limit - v_16;
333
+ break lab19;
334
+ }
335
+ }
336
+ this.bra = this.c;
337
+ if (
338
+ /**@type {boolean}*/
339
+ I_p1 > this.c
340
+ ) {
341
+ this.c = this.limit - v_16;
342
+ break lab19;
343
+ }
344
+ this.slice_del();
345
+ }
346
+ break;
347
+ }
348
+ case 4: {
349
+ this.slice_del();
350
+ const v_17 = this.limit - this.c;
351
+ lab22: {
352
+ this.ket = this.c;
353
+ if (this.find_among_b(a_5) === 0) {
354
+ this.c = this.limit - v_17;
355
+ break lab22;
356
+ }
357
+ this.bra = this.c;
358
+ if (
359
+ /**@type {boolean}*/
360
+ I_p2 > this.c
361
+ ) {
362
+ this.c = this.limit - v_17;
363
+ break lab22;
364
+ }
365
+ this.slice_del();
366
+ }
367
+ break;
368
+ }
86
369
  }
87
- return word;
88
370
  }
89
- return word.slice(0, word.length - suffix.length);
90
- }
91
- }
92
- return word;
93
- }
94
- function step3(word, r1, r2) {
95
- if (word.endsWith("keit") && word.length - 4 >= r2) {
96
- word = word.slice(0, -4);
97
- if (word.endsWith("lich") && word.length - 4 >= r2) {
98
- return word.slice(0, -4);
99
- }
100
- if (word.endsWith("ig") && word.length - 2 >= r2) {
101
- return word.slice(0, -2);
102
- }
103
- return word;
104
- }
105
- if (word.endsWith("heit") && word.length - 4 >= r2) {
106
- word = word.slice(0, -4);
107
- if (word.endsWith("er") && word.length - 2 >= r1) {
108
- return word.slice(0, -2);
109
- }
110
- if (word.endsWith("en") && word.length - 2 >= r1) {
111
- return word.slice(0, -2);
112
- }
113
- return word;
114
- }
115
- if (word.endsWith("isch") && word.length - 4 >= r2) {
116
- if (!word.endsWith("eisch")) {
117
- return word.slice(0, -4);
118
- }
119
- return word;
120
- }
121
- if (word.endsWith("lich") && word.length - 4 >= r2) {
122
- word = word.slice(0, -4);
123
- if (word.endsWith("er") && word.length - 2 >= r1) {
124
- return word.slice(0, -2);
125
- }
126
- if (word.endsWith("en") && word.length - 2 >= r1) {
127
- return word.slice(0, -2);
128
- }
129
- return word;
130
- }
131
- if (word.endsWith("end") && word.length - 3 >= r2) {
132
- word = word.slice(0, -3);
133
- if (word.endsWith("ig") && word.length - 2 >= r2 && !word.endsWith("eig")) {
134
- return word.slice(0, -2);
135
- }
136
- return word;
137
- }
138
- if (word.endsWith("ung") && word.length - 3 >= r2) {
139
- word = word.slice(0, -3);
140
- if (word.endsWith("ig") && word.length - 2 >= r2 && !word.endsWith("eig")) {
141
- return word.slice(0, -2);
371
+ this.c = this.limit - v_14;
372
+ const v_18 = this.limit - this.c;
373
+ lab23: {
374
+ this.ket = this.c;
375
+ if (this.find_among_b(a_7) === 0) break lab23;
376
+ this.bra = this.c;
377
+ if (this.c <= this.limit_backward) break lab23;
378
+ this.c--;
379
+ if (
380
+ /**@type {boolean}*/
381
+ this.c <= this.limit_backward
382
+ ) break lab23;
383
+ this.slice_del();
384
+ }
385
+ this.c = this.limit - v_18;
142
386
  }
143
- return word;
144
- }
145
- if (word.endsWith("ig") && word.length - 2 >= r2) {
146
- if (!word.endsWith("eig")) {
147
- return word.slice(0, -2);
387
+ this.c = this.limit_backward;
388
+ const v_19 = this.c;
389
+ while (true) {
390
+ const v_20 = this.c;
391
+ lab25: {
392
+ this.bra = this.c;
393
+ a = this.find_among(a_1);
394
+ this.ket = this.c;
395
+ switch (a) {
396
+ case 1: {
397
+ this.slice_from("y");
398
+ break;
399
+ }
400
+ case 2: {
401
+ this.slice_from("u");
402
+ break;
403
+ }
404
+ case 3: {
405
+ this.slice_from("a");
406
+ break;
407
+ }
408
+ case 4: {
409
+ this.slice_from("o");
410
+ break;
411
+ }
412
+ case 5: {
413
+ if (this.c >= this.limit) break lab25;
414
+ this.c++;
415
+ break;
416
+ }
417
+ }
418
+ continue;
419
+ }
420
+ this.c = v_20;
421
+ break;
148
422
  }
149
- return word;
423
+ this.c = v_19;
424
+ return true;
150
425
  }
151
- if (word.endsWith("ik") && word.length - 2 >= r2) {
152
- if (!word.endsWith("eik")) {
153
- return word.slice(0, -2);
154
- }
155
- return word;
426
+ stem(input) {
427
+ this.setCurrent(input);
428
+ this.#stem();
429
+ return this.getCurrent();
156
430
  }
157
- return word;
158
- }
159
- function restoreLowercase(word) {
160
- return word.replace(RE_UPPER_Y, "y").replace(RE_UPPER_U, "u").replace(RE_UMLAUT_A, "a").replace(RE_UMLAUT_O, "o").replace(RE_UMLAUT_U, "u");
161
- }
162
- function stem(word) {
163
- if (word.length < 3) return word;
164
- word = word.toLowerCase();
165
- word = word.replace(RE_ESZETT, "ss");
166
- word = markConsonantUY(word);
167
- const { r1, r2 } = findRegions(word);
168
- word = step1(word, r1);
169
- word = step2(word, r1);
170
- word = step3(word, r1, r2);
171
- word = restoreLowercase(word);
172
- return word;
431
+ };
432
+ var shared = new GermanStemmer();
433
+ function stem(token) {
434
+ return shared.stem(token);
173
435
  }
436
+
437
+ // src/languages/german.ts
174
438
  var stopWords = /* @__PURE__ */ new Set([
175
439
  "aber",
176
440
  "alle",
@@ -404,11 +668,17 @@ var stopWords = /* @__PURE__ */ new Set([
404
668
  "zwar",
405
669
  "zwischen"
406
670
  ]);
671
+ var SHARP_S = /\u00DF/g;
672
+ function normalize(token) {
673
+ return token.replace(SHARP_S, "ss");
674
+ }
407
675
  var german = {
408
676
  name: "german",
677
+ revision: "ff10b0dd9feeb7cb",
409
678
  stemmer: stem,
410
- stopWords,
411
- tokenizer: { splitPattern: /[^a-z0-9äöüß]+/gi }
679
+ stopWords: withNormalisedSpellings(stopWords, normalize),
680
+ normalizer: normalize,
681
+ tokenizer: { splitPattern: /[^a-z0-9äöüßé]+/gi }
412
682
  };
413
683
 
414
684
  export { german };
@@ -1,4 +1,4 @@
1
- import { L as LanguageModule } from '../language-ONQ3iVDf.js';
1
+ import { L as LanguageModule } from '../language-CmJBHf1j.js';
2
2
 
3
3
  declare const greek: LanguageModule;
4
4