@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.
Files changed (251) hide show
  1. package/NOTICE +54 -0
  2. package/README.md +38 -982
  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 +4 -3
  245. package/dist/server.mjs +13 -2
  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,348 +1,433 @@
1
- // src/languages/hungarian.ts
2
- var VOWELS = "a\xE1e\xE9i\xEDo\xF3\xF6\u0151u\xFA\xFC\u0171";
3
- function isVowel(ch) {
4
- return VOWELS.includes(ch);
5
- }
6
- var DOUBLE_CONSONANTS = [
7
- ["ccs", "cs"],
8
- ["ggy", "gy"],
9
- ["lly", "ly"],
10
- ["nny", "ny"],
11
- ["ssz", "sz"],
12
- ["tty", "ty"],
13
- ["zzs", "zs"],
14
- ["bb", "b"],
15
- ["cc", "c"],
16
- ["dd", "d"],
17
- ["ff", "f"],
18
- ["gg", "g"],
19
- ["jj", "j"],
20
- ["kk", "k"],
21
- ["ll", "l"],
22
- ["mm", "m"],
23
- ["nn", "n"],
24
- ["pp", "p"],
25
- ["rr", "r"],
26
- ["ss", "s"],
27
- ["tt", "t"],
28
- ["vv", "v"],
29
- ["zz", "z"]
1
+ import { BaseStemmer } from '../chunk-U2BKYEC7.mjs';
2
+
3
+ // src/languages/snowball/hungarian.ts
4
+ var a_0 = [
5
+ ["\xE1", 1],
6
+ ["\xE9", 2]
30
7
  ];
31
- var DIGRAPH_STARTS = ["dzs", "cs", "dz", "gy", "ly", "ny", "sz", "ty", "zs"];
32
- var STEP1_SUFFIXES = ["al", "el"];
33
- var STEP2_SUFFIXES = [
34
- "k\xE9ppen",
35
- "onk\xE9nt",
36
- "enk\xE9nt",
37
- "ank\xE9nt",
38
- "k\xE9nt",
39
- "k\xE9pp",
40
- "ban",
41
- "ben",
42
- "nak",
43
- "nek",
44
- "val",
45
- "vel",
46
- "b\xF3l",
47
- "r\xF3l",
48
- "t\xF3l",
49
- "b\xF6l",
50
- "r\u0151l",
51
- "t\u0151l",
52
- "n\xE1l",
53
- "n\xE9l",
54
- "hoz",
55
- "hez",
56
- "h\xF6z",
57
- "v\xE1",
58
- "v\xE9",
59
- "ba",
60
- "be",
61
- "ra",
62
- "re",
63
- "an",
64
- "en",
65
- "on",
66
- "\xF6n",
67
- "\xE9rt",
68
- "kor",
69
- "ig",
70
- "at",
71
- "et",
72
- "ot",
73
- "\xF6t",
74
- "ul",
75
- "\xFCl",
76
- "n",
77
- "t"
8
+ var as_0 = ["a", "e"];
9
+ var a_1 = [
10
+ ["bb", -1],
11
+ ["cc", -1],
12
+ ["dd", -1],
13
+ ["ff", -1],
14
+ ["gg", -1],
15
+ ["jj", -1],
16
+ ["kk", -1],
17
+ ["ll", -1],
18
+ ["mm", -1],
19
+ ["nn", -1],
20
+ ["pp", -1],
21
+ ["rr", -1],
22
+ ["ccs", -1],
23
+ ["ss", -1],
24
+ ["zzs", -1],
25
+ ["tt", -1],
26
+ ["vv", -1],
27
+ ["ggy", -1],
28
+ ["lly", -1],
29
+ ["nny", -1],
30
+ ["tty", -1],
31
+ ["ssz", -1],
32
+ ["zz", -1]
78
33
  ];
79
- var STEP3_SUFFIXES = ["\xE1nk\xE9nt", "\xE1n", "\xE9n"];
80
- var STEP4_SUFFIXES = ["\xE1stul", "\xE9st\xFCl", "astul", "est\xFCl", "stul", "st\xFCl"];
81
- var STEP5_SUFFIXES = ["\xE1", "\xE9"];
82
- var STEP6_SUFFIXES = [
83
- "\xE9k\xE9i",
84
- "\xE1\xE9i",
85
- "\xE9\xE9i",
86
- "\xE1k\xE9",
87
- "\xE9k\xE9",
88
- "ok\xE9\xE9",
89
- "\xF6k\xE9\xE9",
90
- "ak\xE9\xE9",
91
- "ek\xE9\xE9",
92
- "ok\xE9",
93
- "\xF6k\xE9",
94
- "ak\xE9",
95
- "ek\xE9",
96
- "\xE9\xE9",
97
- "\xE9i",
98
- "k\xE9",
99
- "\xE9"
34
+ var a_2 = [
35
+ ["al", 1],
36
+ ["el", 1]
100
37
  ];
101
- var STEP7_SUFFIXES = [
102
- "\xE1juk",
103
- "\xE9j\xFCk",
104
- "juk",
105
- "j\xFCk",
106
- "\xE1nk",
107
- "\xE9nk",
108
- "\xFCnk",
109
- "unk",
110
- "\xE1m",
111
- "\xE9m",
112
- "\xE1d",
113
- "\xE9d",
114
- "uk",
115
- "\xFCk",
116
- "ja",
117
- "je",
118
- "am",
119
- "em",
120
- "om",
121
- "ad",
122
- "ed",
123
- "od",
124
- "\xF6d",
125
- "\xE1",
126
- "\xE9",
127
- "a",
128
- "e",
129
- "o",
130
- "nk",
131
- "m",
132
- "d"
38
+ var a_3 = [
39
+ ["ba", -1],
40
+ ["ra", -1],
41
+ ["be", -1],
42
+ ["re", -1],
43
+ ["ig", -1],
44
+ ["nak", -1],
45
+ ["nek", -1],
46
+ ["val", -1],
47
+ ["vel", -1],
48
+ ["ul", -1],
49
+ ["n\xE1l", -1],
50
+ ["n\xE9l", -1],
51
+ ["b\xF3l", -1],
52
+ ["r\xF3l", -1],
53
+ ["t\xF3l", -1],
54
+ ["\xFCl", -1],
55
+ ["b\u0151l", -1],
56
+ ["r\u0151l", -1],
57
+ ["t\u0151l", -1],
58
+ ["n", -1],
59
+ ["an", -1, 1],
60
+ ["ban", -1, 1],
61
+ ["en", -1, 3],
62
+ ["ben", -1, 1],
63
+ ["k\xE9ppen", -1, 2],
64
+ ["on", -1, 6],
65
+ ["\xF6n", -1, 7],
66
+ ["k\xE9pp", -1],
67
+ ["kor", -1],
68
+ ["t", -1],
69
+ ["at", -1, 1],
70
+ ["et", -1, 2],
71
+ ["k\xE9nt", -1, 3],
72
+ ["ank\xE9nt", -1, 1],
73
+ ["enk\xE9nt", -1, 2],
74
+ ["onk\xE9nt", -1, 3],
75
+ ["ot", -1, 7],
76
+ ["\xE9rt", -1, 8],
77
+ ["\xF6t", -1, 9],
78
+ ["hez", -1],
79
+ ["hoz", -1],
80
+ ["h\xF6z", -1],
81
+ ["v\xE1", -1],
82
+ ["v\xE9", -1]
133
83
  ];
134
- var STEP8_SUFFIXES = [
135
- "jaitok",
136
- "jeitek",
137
- "\xE1itok",
138
- "\xE9itek",
139
- "jaink",
140
- "jeink",
141
- "\xE1ink",
142
- "\xE9ink",
143
- "jaim",
144
- "jeim",
145
- "jaid",
146
- "jeid",
147
- "jaik",
148
- "jeik",
149
- "\xE1im",
150
- "\xE9im",
151
- "\xE1id",
152
- "\xE9id",
153
- "\xE1ik",
154
- "\xE9ik",
155
- "jai",
156
- "jei",
157
- "\xE1i",
158
- "\xE9i",
159
- "aink",
160
- "eink",
161
- "aim",
162
- "eim",
163
- "aid",
164
- "eid",
165
- "aik",
166
- "eik",
167
- "ai",
168
- "ei",
169
- "itek",
170
- "ink",
171
- "im",
172
- "id",
173
- "ik",
174
- "i"
84
+ var a_4 = [
85
+ ["\xE1n", 2],
86
+ ["\xE9n", 1],
87
+ ["\xE1nk\xE9nt", 2]
175
88
  ];
176
- var STEP9_SUFFIXES = ["\xE1k", "\xE9k", "\xF6k", "ok", "ek", "ak", "k"];
177
- function computeR1(word) {
178
- if (word.length === 0) return 0;
179
- let i = 0;
180
- if (isVowel(word[0])) {
181
- i = 1;
182
- while (i < word.length && isVowel(word[i])) i++;
183
- if (i >= word.length) return word.length;
184
- let advanced = false;
185
- for (const dg of DIGRAPH_STARTS) {
186
- if (word.startsWith(dg, i)) {
187
- i += dg.length;
188
- advanced = true;
189
- break;
190
- }
191
- }
192
- if (!advanced) i++;
193
- } else {
194
- let advanced = false;
195
- for (const dg of DIGRAPH_STARTS) {
196
- if (word.startsWith(dg, 0)) {
197
- i = dg.length;
198
- advanced = true;
199
- break;
89
+ var as_4 = ["e", "a"];
90
+ var a_5 = [
91
+ ["stul", 1],
92
+ ["astul", 1, 1],
93
+ ["\xE1stul", 2, 2],
94
+ ["st\xFCl", 1],
95
+ ["est\xFCl", 1, 1],
96
+ ["\xE9st\xFCl", 3, 2]
97
+ ];
98
+ var as_5 = ["", "a", "e"];
99
+ var a_6 = [
100
+ ["\xE1", 1],
101
+ ["\xE9", 1]
102
+ ];
103
+ var a_7 = [
104
+ ["k", 3],
105
+ ["ak", 3, 1],
106
+ ["ek", 3, 2],
107
+ ["ok", 3, 3],
108
+ ["\xE1k", 1, 4],
109
+ ["\xE9k", 2, 5],
110
+ ["\xF6k", 3, 6]
111
+ ];
112
+ var as_7 = ["a", "e", ""];
113
+ var a_8 = [
114
+ ["\xE9i", 1],
115
+ ["\xE1\xE9i", 3, 1],
116
+ ["\xE9\xE9i", 2, 2],
117
+ ["\xE9", 1],
118
+ ["k\xE9", 1, 1],
119
+ ["ak\xE9", 1, 1],
120
+ ["ek\xE9", 1, 2],
121
+ ["ok\xE9", 1, 3],
122
+ ["\xE1k\xE9", 3, 4],
123
+ ["\xE9k\xE9", 2, 5],
124
+ ["\xF6k\xE9", 1, 6],
125
+ ["\xE9\xE9", 2, 8]
126
+ ];
127
+ var as_8 = ["", "e", "a"];
128
+ var a_9 = [
129
+ ["a", 1],
130
+ ["ja", 1, 1],
131
+ ["d", 1],
132
+ ["ad", 1, 1],
133
+ ["ed", 1, 2],
134
+ ["od", 1, 3],
135
+ ["\xE1d", 2, 4],
136
+ ["\xE9d", 3, 5],
137
+ ["\xF6d", 1, 6],
138
+ ["e", 1],
139
+ ["je", 1, 1],
140
+ ["nk", 1],
141
+ ["unk", 1, 1],
142
+ ["\xE1nk", 2, 2],
143
+ ["\xE9nk", 3, 3],
144
+ ["\xFCnk", 1, 4],
145
+ ["uk", 1],
146
+ ["juk", 1, 1],
147
+ ["\xE1juk", 2, 1],
148
+ ["\xFCk", 1],
149
+ ["j\xFCk", 1, 1],
150
+ ["\xE9j\xFCk", 3, 1],
151
+ ["m", 1],
152
+ ["am", 1, 1],
153
+ ["em", 1, 2],
154
+ ["om", 1, 3],
155
+ ["\xE1m", 2, 4],
156
+ ["\xE9m", 3, 5],
157
+ ["o", 1],
158
+ ["\xE1", 2],
159
+ ["\xE9", 3]
160
+ ];
161
+ var as_9 = ["", "a", "e"];
162
+ var a_10 = [
163
+ ["id", 1],
164
+ ["aid", 1, 1],
165
+ ["jaid", 1, 1],
166
+ ["eid", 1, 3],
167
+ ["jeid", 1, 1],
168
+ ["\xE1id", 2, 5],
169
+ ["\xE9id", 3, 6],
170
+ ["i", 1],
171
+ ["ai", 1, 1],
172
+ ["jai", 1, 1],
173
+ ["ei", 1, 3],
174
+ ["jei", 1, 1],
175
+ ["\xE1i", 2, 5],
176
+ ["\xE9i", 3, 6],
177
+ ["itek", 1],
178
+ ["eitek", 1, 1],
179
+ ["jeitek", 1, 1],
180
+ ["\xE9itek", 3, 3],
181
+ ["ik", 1],
182
+ ["aik", 1, 1],
183
+ ["jaik", 1, 1],
184
+ ["eik", 1, 3],
185
+ ["jeik", 1, 1],
186
+ ["\xE1ik", 2, 5],
187
+ ["\xE9ik", 3, 6],
188
+ ["ink", 1],
189
+ ["aink", 1, 1],
190
+ ["jaink", 1, 1],
191
+ ["eink", 1, 3],
192
+ ["jeink", 1, 1],
193
+ ["\xE1ink", 2, 5],
194
+ ["\xE9ink", 3, 6],
195
+ ["aitok", 1],
196
+ ["jaitok", 1, 1],
197
+ ["\xE1itok", 2],
198
+ ["im", 1],
199
+ ["aim", 1, 1],
200
+ ["jaim", 1, 1],
201
+ ["eim", 1, 3],
202
+ ["jeim", 1, 1],
203
+ ["\xE1im", 2, 5],
204
+ ["\xE9im", 3, 6]
205
+ ];
206
+ var as_10 = ["", "a", "e"];
207
+ var g_v = [
208
+ 17,
209
+ 65,
210
+ 16,
211
+ 0,
212
+ 0,
213
+ 0,
214
+ 0,
215
+ 0,
216
+ 0,
217
+ 0,
218
+ 0,
219
+ 0,
220
+ 0,
221
+ 0,
222
+ 0,
223
+ 0,
224
+ 1,
225
+ 17,
226
+ 36,
227
+ 10,
228
+ 0,
229
+ 0,
230
+ 0,
231
+ 0,
232
+ 0,
233
+ 0,
234
+ 0,
235
+ 0,
236
+ 0,
237
+ 0,
238
+ 1,
239
+ 0,
240
+ 0,
241
+ 0,
242
+ 1
243
+ ];
244
+ var HungarianStemmer = class extends BaseStemmer {
245
+ #r_double() {
246
+ const v_1 = this.limit - this.c;
247
+ if (this.find_among_b(a_1) === 0) return false;
248
+ this.c = this.limit - v_1;
249
+ return true;
250
+ }
251
+ #r_undouble() {
252
+ if (this.c <= this.limit_backward) return false;
253
+ this.c--;
254
+ this.ket = this.c;
255
+ if (this.c <= this.limit_backward) return false;
256
+ this.c--;
257
+ this.bra = this.c;
258
+ this.slice_del();
259
+ return true;
260
+ }
261
+ #stem() {
262
+ let a;
263
+ let I_p1;
264
+ const v_1 = this.c;
265
+ lab0: {
266
+ I_p1 = this.limit;
267
+ lab1: {
268
+ const v_2 = this.c;
269
+ lab2: {
270
+ if (!this.in_grouping(g_v, 97, 369)) break lab2;
271
+ const v_3 = this.c;
272
+ lab3: {
273
+ if (!this.go_in_grouping(g_v, 97, 369)) break lab3;
274
+ this.c++;
275
+ I_p1 = this.c;
276
+ }
277
+ this.c = v_3;
278
+ break lab1;
279
+ }
280
+ this.c = v_2;
281
+ if (!this.go_out_grouping(g_v, 97, 369)) break lab0;
282
+ this.c++;
283
+ I_p1 = this.c;
200
284
  }
201
285
  }
202
- if (!advanced) i = 1;
203
- while (i < word.length && !isVowel(word[i])) i++;
204
- if (i >= word.length) return word.length;
205
- i++;
206
- }
207
- if (i <= word.length) return i;
208
- return word.length;
209
- }
210
- function endsWithDouble(word) {
211
- return DOUBLE_CONSONANTS.some(([dbl]) => word.endsWith(dbl));
212
- }
213
- function undoubleConsonant(word) {
214
- for (const [dbl, single] of DOUBLE_CONSONANTS) {
215
- if (word.endsWith(dbl)) {
216
- return word.slice(0, word.length - dbl.length) + single;
286
+ this.c = v_1;
287
+ this.limit_backward = this.c;
288
+ this.c = this.limit;
289
+ const v_4 = this.limit - this.c;
290
+ lab4: {
291
+ this.ket = this.c;
292
+ if (this.find_among_b(a_2) === 0) break lab4;
293
+ this.bra = this.c;
294
+ if (
295
+ /**@type {boolean}*/
296
+ I_p1 > this.c
297
+ ) break lab4;
298
+ if (!this.#r_double()) break lab4;
299
+ this.slice_del();
300
+ if (!this.#r_undouble()) break lab4;
217
301
  }
218
- }
219
- return word;
220
- }
221
- function inR1(word, r1, suffixLen) {
222
- return word.length - suffixLen >= r1;
223
- }
224
- function trySuffix(word, suffixes) {
225
- for (const s of suffixes) {
226
- if (word.endsWith(s)) return s;
227
- }
228
- return null;
229
- }
230
- function step1Instrumental(word, r1) {
231
- const matched = trySuffix(word, STEP1_SUFFIXES);
232
- if (matched && inR1(word, r1, matched.length)) {
233
- const stripped = word.slice(0, -matched.length);
234
- if (endsWithDouble(stripped)) {
235
- return undoubleConsonant(stripped);
302
+ this.c = this.limit - v_4;
303
+ const v_5 = this.limit - this.c;
304
+ lab5: {
305
+ this.ket = this.c;
306
+ if (this.find_among_b(a_3) === 0) break lab5;
307
+ this.bra = this.c;
308
+ if (
309
+ /**@type {boolean}*/
310
+ I_p1 > this.c
311
+ ) break lab5;
312
+ this.slice_del();
313
+ this.ket = this.c;
314
+ a = this.find_among_b(a_0);
315
+ if (a === 0) break lab5;
316
+ this.bra = this.c;
317
+ if (
318
+ /**@type {boolean}*/
319
+ I_p1 > this.c
320
+ ) break lab5;
321
+ this.slice_from(as_0[a - 1]);
236
322
  }
237
- }
238
- return word;
239
- }
240
- function step2CaseEndings(word, r1) {
241
- const matched = trySuffix(word, STEP2_SUFFIXES);
242
- if (matched && inR1(word, r1, matched.length)) {
243
- const stripped = word.slice(0, -matched.length);
244
- if (stripped.endsWith("\xE1")) {
245
- return `${stripped.slice(0, -1)}a`;
323
+ this.c = this.limit - v_5;
324
+ const v_6 = this.limit - this.c;
325
+ lab6: {
326
+ this.ket = this.c;
327
+ a = this.find_among_b(a_4);
328
+ if (a === 0) break lab6;
329
+ this.bra = this.c;
330
+ if (
331
+ /**@type {boolean}*/
332
+ I_p1 > this.c
333
+ ) break lab6;
334
+ this.slice_from(as_4[a - 1]);
246
335
  }
247
- if (stripped.endsWith("\xE9")) {
248
- return `${stripped.slice(0, -1)}e`;
336
+ this.c = this.limit - v_6;
337
+ const v_7 = this.limit - this.c;
338
+ lab7: {
339
+ this.ket = this.c;
340
+ a = this.find_among_b(a_5);
341
+ if (a === 0) break lab7;
342
+ this.bra = this.c;
343
+ if (
344
+ /**@type {boolean}*/
345
+ I_p1 > this.c
346
+ ) break lab7;
347
+ this.slice_from(as_5[a - 1]);
249
348
  }
250
- return stripped;
251
- }
252
- return word;
253
- }
254
- function step3Emotive(word, r1) {
255
- const matched = trySuffix(word, STEP3_SUFFIXES);
256
- if (matched && inR1(word, r1, matched.length)) {
257
- const stripped = word.slice(0, -matched.length);
258
- if (matched === "\xE9n") return `${stripped}e`;
259
- return `${stripped}a`;
260
- }
261
- return word;
262
- }
263
- function step4Comitative(word, r1) {
264
- const matched = trySuffix(word, STEP4_SUFFIXES);
265
- if (matched && inR1(word, r1, matched.length)) {
266
- const stripped = word.slice(0, -matched.length);
267
- if (matched === "\xE1stul") return `${stripped}a`;
268
- if (matched === "\xE9st\xFCl") return `${stripped}e`;
269
- return stripped;
270
- }
271
- return word;
272
- }
273
- function step5LongVowel(word, r1) {
274
- const matched = trySuffix(word, STEP5_SUFFIXES);
275
- if (matched && inR1(word, r1, matched.length)) {
276
- const stripped = word.slice(0, -matched.length);
277
- if (endsWithDouble(stripped)) {
278
- return undoubleConsonant(stripped);
349
+ this.c = this.limit - v_7;
350
+ const v_8 = this.limit - this.c;
351
+ lab8: {
352
+ this.ket = this.c;
353
+ if (this.find_among_b(a_6) === 0) break lab8;
354
+ this.bra = this.c;
355
+ if (
356
+ /**@type {boolean}*/
357
+ I_p1 > this.c
358
+ ) break lab8;
359
+ if (!this.#r_double()) break lab8;
360
+ this.slice_del();
361
+ if (!this.#r_undouble()) break lab8;
279
362
  }
280
- }
281
- return word;
282
- }
283
- function step6Possessive(word, r1) {
284
- const matched = trySuffix(word, STEP6_SUFFIXES);
285
- if (matched && inR1(word, r1, matched.length)) {
286
- const stripped = word.slice(0, -matched.length);
287
- if (matched === "\xE1k\xE9" || matched === "\xE1\xE9i") return `${stripped}a`;
288
- if (matched === "\xE9k\xE9" || matched === "\xE9\xE9i" || matched === "\xE9\xE9") return `${stripped}e`;
289
- return stripped;
290
- }
291
- return word;
292
- }
293
- function step7SingularPossessive(word, r1) {
294
- const matched = trySuffix(word, STEP7_SUFFIXES);
295
- if (matched && inR1(word, r1, matched.length)) {
296
- const stripped = word.slice(0, -matched.length);
297
- if (matched === "\xE1juk" || matched === "\xE1nk" || matched === "\xE1m" || matched === "\xE1d" || matched === "\xE1") {
298
- return `${stripped}a`;
363
+ this.c = this.limit - v_8;
364
+ const v_9 = this.limit - this.c;
365
+ lab9: {
366
+ this.ket = this.c;
367
+ a = this.find_among_b(a_8);
368
+ if (a === 0) break lab9;
369
+ this.bra = this.c;
370
+ if (
371
+ /**@type {boolean}*/
372
+ I_p1 > this.c
373
+ ) break lab9;
374
+ this.slice_from(as_8[a - 1]);
299
375
  }
300
- if (matched === "\xE9j\xFCk" || matched === "\xE9nk" || matched === "\xE9m" || matched === "\xE9d" || matched === "\xE9") {
301
- return `${stripped}e`;
376
+ this.c = this.limit - v_9;
377
+ const v_10 = this.limit - this.c;
378
+ lab10: {
379
+ this.ket = this.c;
380
+ a = this.find_among_b(a_9);
381
+ if (a === 0) break lab10;
382
+ this.bra = this.c;
383
+ if (
384
+ /**@type {boolean}*/
385
+ I_p1 > this.c
386
+ ) break lab10;
387
+ this.slice_from(as_9[a - 1]);
302
388
  }
303
- return stripped;
304
- }
305
- return word;
306
- }
307
- function step8PluralPossessive(word, r1) {
308
- const matched = trySuffix(word, STEP8_SUFFIXES);
309
- if (matched && inR1(word, r1, matched.length)) {
310
- const stripped = word.slice(0, -matched.length);
311
- if (matched === "\xE1itok" || matched === "\xE1ink" || matched === "\xE1im" || matched === "\xE1id" || matched === "\xE1ik" || matched === "\xE1i") {
312
- return `${stripped}a`;
389
+ this.c = this.limit - v_10;
390
+ const v_11 = this.limit - this.c;
391
+ lab11: {
392
+ this.ket = this.c;
393
+ a = this.find_among_b(a_10);
394
+ if (a === 0) break lab11;
395
+ this.bra = this.c;
396
+ if (
397
+ /**@type {boolean}*/
398
+ I_p1 > this.c
399
+ ) break lab11;
400
+ this.slice_from(as_10[a - 1]);
313
401
  }
314
- if (matched === "\xE9itek" || matched === "\xE9ink" || matched === "\xE9im" || matched === "\xE9id" || matched === "\xE9ik" || matched === "\xE9i") {
315
- return `${stripped}e`;
402
+ this.c = this.limit - v_11;
403
+ const v_12 = this.limit - this.c;
404
+ lab12: {
405
+ this.ket = this.c;
406
+ a = this.find_among_b(a_7);
407
+ if (a === 0) break lab12;
408
+ this.bra = this.c;
409
+ if (
410
+ /**@type {boolean}*/
411
+ I_p1 > this.c
412
+ ) break lab12;
413
+ this.slice_from(as_7[a - 1]);
316
414
  }
317
- return stripped;
415
+ this.c = this.limit - v_12;
416
+ this.c = this.limit_backward;
417
+ return true;
318
418
  }
319
- return word;
320
- }
321
- function step9Plural(word, r1) {
322
- const matched = trySuffix(word, STEP9_SUFFIXES);
323
- if (matched && inR1(word, r1, matched.length)) {
324
- const stripped = word.slice(0, -matched.length);
325
- if (matched === "\xE1k") return `${stripped}a`;
326
- if (matched === "\xE9k") return `${stripped}e`;
327
- return stripped;
419
+ stem(input) {
420
+ this.setCurrent(input);
421
+ this.#stem();
422
+ return this.getCurrent();
328
423
  }
329
- return word;
330
- }
331
- function stem(word) {
332
- if (word.length < 2) return word;
333
- word = word.toLowerCase();
334
- const r1 = computeR1(word);
335
- word = step1Instrumental(word, r1);
336
- word = step2CaseEndings(word, r1);
337
- word = step3Emotive(word, r1);
338
- word = step4Comitative(word, r1);
339
- word = step5LongVowel(word, r1);
340
- word = step6Possessive(word, r1);
341
- word = step7SingularPossessive(word, r1);
342
- word = step8PluralPossessive(word, r1);
343
- word = step9Plural(word, r1);
344
- return word;
424
+ };
425
+ var shared = new HungarianStemmer();
426
+ function stem(token) {
427
+ return shared.stem(token);
345
428
  }
429
+
430
+ // src/languages/hungarian.ts
346
431
  var stopWords = /* @__PURE__ */ new Set([
347
432
  "a",
348
433
  "abba",
@@ -592,6 +677,7 @@ var stopWords = /* @__PURE__ */ new Set([
592
677
  ]);
593
678
  var hungarian = {
594
679
  name: "hungarian",
680
+ revision: "7b9c2fc79181fc11",
595
681
  stemmer: stem,
596
682
  stopWords,
597
683
  tokenizer: { splitPattern: /[^a-z0-9áéíóöőúüű]+/gi }