@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,164 +1,948 @@
1
- // src/languages/arabic.ts
2
- var DIACRITICS = /* @__PURE__ */ new Set(["\u0640", "\u064B", "\u064C", "\u064D", "\u064E", "\u064F", "\u0650", "\u0651", "\u0652"]);
3
- var ARABIC_INDIC_DIGITS = {
4
- "\u0660": "0",
5
- "\u0661": "1",
6
- "\u0662": "2",
7
- "\u0663": "3",
8
- "\u0664": "4",
9
- "\u0665": "5",
10
- "\u0666": "6",
11
- "\u0667": "7",
12
- "\u0668": "8",
13
- "\u0669": "9"
14
- };
15
- function normalize(word) {
16
- let result = "";
17
- for (let i = 0; i < word.length; i++) {
18
- const ch = word[i];
19
- const code = ch.charCodeAt(0);
20
- if (DIACRITICS.has(ch)) continue;
21
- if (code >= 65136 && code <= 65279) {
22
- result += mapPresentationForm(code);
23
- continue;
24
- }
25
- if (ch in ARABIC_INDIC_DIGITS) {
26
- result += ARABIC_INDIC_DIGITS[ch];
27
- continue;
28
- }
29
- switch (ch) {
30
- case "\u0622":
31
- case "\u0623":
32
- case "\u0625":
33
- result += "\u0627";
1
+ import { BaseStemmer } from '../chunk-U2BKYEC7.mjs';
2
+
3
+ // src/languages/snowball/arabic.ts
4
+ var a_0 = [
5
+ ["\u0640", 1],
6
+ ["\u064B", 1],
7
+ ["\u064C", 1],
8
+ ["\u064D", 1],
9
+ ["\u064E", 1],
10
+ ["\u064F", 1],
11
+ ["\u0650", 1],
12
+ ["\u0651", 1],
13
+ ["\u0652", 1],
14
+ ["\u0660", 2],
15
+ ["\u0661", 3],
16
+ ["\u0662", 4],
17
+ ["\u0663", 5],
18
+ ["\u0664", 6],
19
+ ["\u0665", 7],
20
+ ["\u0666", 8],
21
+ ["\u0667", 9],
22
+ ["\u0668", 10],
23
+ ["\u0669", 11],
24
+ ["\uFE80", 12],
25
+ ["\uFE81", 16],
26
+ ["\uFE82", 16],
27
+ ["\uFE83", 13],
28
+ ["\uFE84", 13],
29
+ ["\uFE85", 17],
30
+ ["\uFE86", 17],
31
+ ["\uFE87", 14],
32
+ ["\uFE88", 14],
33
+ ["\uFE89", 15],
34
+ ["\uFE8A", 15],
35
+ ["\uFE8B", 15],
36
+ ["\uFE8C", 15],
37
+ ["\uFE8D", 18],
38
+ ["\uFE8E", 18],
39
+ ["\uFE8F", 19],
40
+ ["\uFE90", 19],
41
+ ["\uFE91", 19],
42
+ ["\uFE92", 19],
43
+ ["\uFE93", 20],
44
+ ["\uFE94", 20],
45
+ ["\uFE95", 21],
46
+ ["\uFE96", 21],
47
+ ["\uFE97", 21],
48
+ ["\uFE98", 21],
49
+ ["\uFE99", 22],
50
+ ["\uFE9A", 22],
51
+ ["\uFE9B", 22],
52
+ ["\uFE9C", 22],
53
+ ["\uFE9D", 23],
54
+ ["\uFE9E", 23],
55
+ ["\uFE9F", 23],
56
+ ["\uFEA0", 23],
57
+ ["\uFEA1", 24],
58
+ ["\uFEA2", 24],
59
+ ["\uFEA3", 24],
60
+ ["\uFEA4", 24],
61
+ ["\uFEA5", 25],
62
+ ["\uFEA6", 25],
63
+ ["\uFEA7", 25],
64
+ ["\uFEA8", 25],
65
+ ["\uFEA9", 26],
66
+ ["\uFEAA", 26],
67
+ ["\uFEAB", 27],
68
+ ["\uFEAC", 27],
69
+ ["\uFEAD", 28],
70
+ ["\uFEAE", 28],
71
+ ["\uFEAF", 29],
72
+ ["\uFEB0", 29],
73
+ ["\uFEB1", 30],
74
+ ["\uFEB2", 30],
75
+ ["\uFEB3", 30],
76
+ ["\uFEB4", 30],
77
+ ["\uFEB5", 31],
78
+ ["\uFEB6", 31],
79
+ ["\uFEB7", 31],
80
+ ["\uFEB8", 31],
81
+ ["\uFEB9", 32],
82
+ ["\uFEBA", 32],
83
+ ["\uFEBB", 32],
84
+ ["\uFEBC", 32],
85
+ ["\uFEBD", 33],
86
+ ["\uFEBE", 33],
87
+ ["\uFEBF", 33],
88
+ ["\uFEC0", 33],
89
+ ["\uFEC1", 34],
90
+ ["\uFEC2", 34],
91
+ ["\uFEC3", 34],
92
+ ["\uFEC4", 34],
93
+ ["\uFEC5", 35],
94
+ ["\uFEC6", 35],
95
+ ["\uFEC7", 35],
96
+ ["\uFEC8", 35],
97
+ ["\uFEC9", 36],
98
+ ["\uFECA", 36],
99
+ ["\uFECB", 36],
100
+ ["\uFECC", 36],
101
+ ["\uFECD", 37],
102
+ ["\uFECE", 37],
103
+ ["\uFECF", 37],
104
+ ["\uFED0", 37],
105
+ ["\uFED1", 38],
106
+ ["\uFED2", 38],
107
+ ["\uFED3", 38],
108
+ ["\uFED4", 38],
109
+ ["\uFED5", 39],
110
+ ["\uFED6", 39],
111
+ ["\uFED7", 39],
112
+ ["\uFED8", 39],
113
+ ["\uFED9", 40],
114
+ ["\uFEDA", 40],
115
+ ["\uFEDB", 40],
116
+ ["\uFEDC", 40],
117
+ ["\uFEDD", 41],
118
+ ["\uFEDE", 41],
119
+ ["\uFEDF", 41],
120
+ ["\uFEE0", 41],
121
+ ["\uFEE1", 42],
122
+ ["\uFEE2", 42],
123
+ ["\uFEE3", 42],
124
+ ["\uFEE4", 42],
125
+ ["\uFEE5", 43],
126
+ ["\uFEE6", 43],
127
+ ["\uFEE7", 43],
128
+ ["\uFEE8", 43],
129
+ ["\uFEE9", 44],
130
+ ["\uFEEA", 44],
131
+ ["\uFEEB", 44],
132
+ ["\uFEEC", 44],
133
+ ["\uFEED", 45],
134
+ ["\uFEEE", 45],
135
+ ["\uFEEF", 46],
136
+ ["\uFEF0", 46],
137
+ ["\uFEF1", 47],
138
+ ["\uFEF2", 47],
139
+ ["\uFEF3", 47],
140
+ ["\uFEF4", 47],
141
+ ["\uFEF5", 51],
142
+ ["\uFEF6", 51],
143
+ ["\uFEF7", 49],
144
+ ["\uFEF8", 49],
145
+ ["\uFEF9", 50],
146
+ ["\uFEFA", 50],
147
+ ["\uFEFB", 48],
148
+ ["\uFEFC", 48]
149
+ ];
150
+ var as_0 = [
151
+ "",
152
+ "0",
153
+ "1",
154
+ "2",
155
+ "3",
156
+ "4",
157
+ "5",
158
+ "6",
159
+ "7",
160
+ "8",
161
+ "9",
162
+ "\u0621",
163
+ "\u0623",
164
+ "\u0625",
165
+ "\u0626",
166
+ "\u0622",
167
+ "\u0624",
168
+ "\u0627",
169
+ "\u0628",
170
+ "\u0629",
171
+ "\u062A",
172
+ "\u062B",
173
+ "\u062C",
174
+ "\u062D",
175
+ "\u062E",
176
+ "\u062F",
177
+ "\u0630",
178
+ "\u0631",
179
+ "\u0632",
180
+ "\u0633",
181
+ "\u0634",
182
+ "\u0635",
183
+ "\u0636",
184
+ "\u0637",
185
+ "\u0638",
186
+ "\u0639",
187
+ "\u063A",
188
+ "\u0641",
189
+ "\u0642",
190
+ "\u0643",
191
+ "\u0644",
192
+ "\u0645",
193
+ "\u0646",
194
+ "\u0647",
195
+ "\u0648",
196
+ "\u0649",
197
+ "\u064A",
198
+ "\u0644\u0627",
199
+ "\u0644\u0623",
200
+ "\u0644\u0625",
201
+ "\u0644\u0622"
202
+ ];
203
+ var a_1 = [
204
+ ["\u0622", 1],
205
+ ["\u0623", 1],
206
+ ["\u0624", 1],
207
+ ["\u0625", 1],
208
+ ["\u0626", 1]
209
+ ];
210
+ var a_2 = [
211
+ ["\u0622", 1],
212
+ ["\u0623", 1],
213
+ ["\u0624", 2],
214
+ ["\u0625", 1],
215
+ ["\u0626", 3]
216
+ ];
217
+ var as_2 = ["\u0627", "\u0648", "\u064A"];
218
+ var a_3 = [
219
+ ["\u0627\u0644", 2],
220
+ ["\u0628\u0627\u0644", 1],
221
+ ["\u0643\u0627\u0644", 1],
222
+ ["\u0644\u0644", 2]
223
+ ];
224
+ var a_4 = [
225
+ ["\u0623\u0622", 2],
226
+ ["\u0623\u0623", 1],
227
+ ["\u0623\u0624", 1],
228
+ ["\u0623\u0625", 4],
229
+ ["\u0623\u0627", 3]
230
+ ];
231
+ var a_5 = [
232
+ ["\u0641", 1],
233
+ ["\u0648", 1]
234
+ ];
235
+ var a_6 = [
236
+ ["\u0627\u0644", 2],
237
+ ["\u0628\u0627\u0644", 1],
238
+ ["\u0643\u0627\u0644", 1],
239
+ ["\u0644\u0644", 2]
240
+ ];
241
+ var a_7 = [
242
+ ["\u0628", 1],
243
+ ["\u0628\u0627", -1, 1],
244
+ ["\u0628\u0628", 2, 2],
245
+ ["\u0643\u0643", 3]
246
+ ];
247
+ var a_8 = [
248
+ ["\u0633\u0623", 4],
249
+ ["\u0633\u062A", 2],
250
+ ["\u0633\u0646", 3],
251
+ ["\u0633\u064A", 1]
252
+ ];
253
+ var a_9 = [
254
+ ["\u062A\u0633\u062A", 1],
255
+ ["\u0646\u0633\u062A", 1],
256
+ ["\u064A\u0633\u062A", 1]
257
+ ];
258
+ var a_10 = [
259
+ ["\u0643\u0645\u0627", 3],
260
+ ["\u0647\u0645\u0627", 3],
261
+ ["\u0646\u0627", 2],
262
+ ["\u0647\u0627", 2],
263
+ ["\u0643", 1],
264
+ ["\u0643\u0645", 2],
265
+ ["\u0647\u0645", 2],
266
+ ["\u0647\u0646", 2],
267
+ ["\u0647", 1],
268
+ ["\u064A", 1]
269
+ ];
270
+ var a_11 = [
271
+ ["\u0627", 1],
272
+ ["\u0648", 1],
273
+ ["\u064A", 1]
274
+ ];
275
+ var a_12 = [
276
+ ["\u0643\u0645\u0627", 3],
277
+ ["\u0647\u0645\u0627", 3],
278
+ ["\u0646\u0627", 2],
279
+ ["\u0647\u0627", 2],
280
+ ["\u0643", 1],
281
+ ["\u0643\u0645", 2],
282
+ ["\u0647\u0645", 2],
283
+ ["\u0643\u0646", 2],
284
+ ["\u0647\u0646", 2],
285
+ ["\u0647", 1],
286
+ ["\u0643\u0645\u0648", 3],
287
+ ["\u0646\u064A", 2]
288
+ ];
289
+ var a_13 = [
290
+ ["\u0627", 1],
291
+ ["\u062A\u0627", 2, 1],
292
+ ["\u062A\u0645\u0627", 3, 2],
293
+ ["\u0646\u0627", 2, 3],
294
+ ["\u062A", 1],
295
+ ["\u0646", 1],
296
+ ["\u0627\u0646", 3, 1],
297
+ ["\u062A\u0646", 2, 2],
298
+ ["\u0648\u0646", 3, 3],
299
+ ["\u064A\u0646", 3, 4],
300
+ ["\u064A", 1]
301
+ ];
302
+ var a_14 = [
303
+ ["\u0648\u0627", 1],
304
+ ["\u062A\u0645", 1]
305
+ ];
306
+ var a_15 = [
307
+ ["\u0648", 1],
308
+ ["\u062A\u0645\u0648", 2, 1]
309
+ ];
310
+ var ArabicStemmer = class extends BaseStemmer {
311
+ #r_Suffix_Noun_Step2a() {
312
+ this.ket = this.c;
313
+ if (this.find_among_b(a_11) === 0) return false;
314
+ this.bra = this.c;
315
+ if (
316
+ /**@type {boolean}*/
317
+ this.current.length < 5
318
+ ) return false;
319
+ this.slice_del();
320
+ return true;
321
+ }
322
+ #r_Suffix_Noun_Step2b() {
323
+ this.ket = this.c;
324
+ if (!this.eq_s_b("\u0627\u062A")) return false;
325
+ this.bra = this.c;
326
+ if (
327
+ /**@type {boolean}*/
328
+ this.current.length < 5
329
+ ) return false;
330
+ this.slice_del();
331
+ return true;
332
+ }
333
+ #r_Suffix_Noun_Step2c1() {
334
+ this.ket = this.c;
335
+ if (!this.eq_s_b("\u062A")) return false;
336
+ this.bra = this.c;
337
+ if (
338
+ /**@type {boolean}*/
339
+ this.current.length < 4
340
+ ) return false;
341
+ this.slice_del();
342
+ return true;
343
+ }
344
+ #r_Suffix_Verb_Step2a() {
345
+ let a;
346
+ this.ket = this.c;
347
+ a = this.find_among_b(a_13);
348
+ if (a === 0) return false;
349
+ this.bra = this.c;
350
+ switch (a) {
351
+ case 1: {
352
+ if (
353
+ /**@type {boolean}*/
354
+ this.current.length < 4
355
+ ) return false;
356
+ this.slice_del();
34
357
  break;
35
- case "\u0624":
36
- result += "\u0648";
358
+ }
359
+ case 2: {
360
+ if (
361
+ /**@type {boolean}*/
362
+ this.current.length < 5
363
+ ) return false;
364
+ this.slice_del();
37
365
  break;
38
- case "\u0626":
39
- result += "\u064A";
366
+ }
367
+ case 3: {
368
+ if (
369
+ /**@type {boolean}*/
370
+ this.current.length < 6
371
+ ) return false;
372
+ this.slice_del();
40
373
  break;
41
- default:
42
- result += ch;
374
+ }
43
375
  }
376
+ return true;
44
377
  }
45
- return result;
46
- }
47
- function mapPresentationForm(code) {
48
- if (code >= 65152 && code <= 65156) return "\u0627";
49
- if (code >= 65157 && code <= 65158) return "\u0648";
50
- if (code >= 65159 && code <= 65160) return "\u0627";
51
- if (code >= 65161 && code <= 65164) return "\u064A";
52
- if (code >= 65165 && code <= 65166) return "\u0627";
53
- if (code >= 65167 && code <= 65170) return "\u0628";
54
- if (code >= 65171 && code <= 65172) return "\u0629";
55
- if (code >= 65173 && code <= 65176) return "\u062A";
56
- if (code >= 65177 && code <= 65180) return "\u062B";
57
- if (code >= 65181 && code <= 65184) return "\u062C";
58
- if (code >= 65185 && code <= 65188) return "\u062D";
59
- if (code >= 65189 && code <= 65192) return "\u062E";
60
- if (code >= 65193 && code <= 65194) return "\u062F";
61
- if (code >= 65195 && code <= 65196) return "\u0630";
62
- if (code >= 65197 && code <= 65198) return "\u0631";
63
- if (code >= 65199 && code <= 65200) return "\u0632";
64
- if (code >= 65201 && code <= 65204) return "\u0633";
65
- if (code >= 65205 && code <= 65208) return "\u0634";
66
- if (code >= 65209 && code <= 65212) return "\u0635";
67
- if (code >= 65213 && code <= 65216) return "\u0636";
68
- if (code >= 65217 && code <= 65220) return "\u0637";
69
- if (code >= 65221 && code <= 65224) return "\u0638";
70
- if (code >= 65225 && code <= 65228) return "\u0639";
71
- if (code >= 65229 && code <= 65232) return "\u063A";
72
- if (code >= 65233 && code <= 65236) return "\u0641";
73
- if (code >= 65237 && code <= 65240) return "\u0642";
74
- if (code >= 65241 && code <= 65244) return "\u0643";
75
- if (code >= 65245 && code <= 65248) return "\u0644";
76
- if (code >= 65249 && code <= 65252) return "\u0645";
77
- if (code >= 65253 && code <= 65256) return "\u0646";
78
- if (code >= 65257 && code <= 65260) return "\u0647";
79
- if (code >= 65261 && code <= 65262) return "\u0648";
80
- if (code >= 65263 && code <= 65264) return "\u0649";
81
- if (code >= 65265 && code <= 65268) return "\u064A";
82
- if (code >= 65269 && code <= 65276) return "\u0644\u0627";
83
- return String.fromCharCode(code);
84
- }
85
- function removePrefixes(word) {
86
- if (word.startsWith("\u0628\u0627\u0644") && word.length > 6) {
87
- return word.slice(3);
88
- }
89
- if (word.startsWith("\u0643\u0627\u0644") && word.length > 6) {
90
- return word.slice(3);
91
- }
92
- if (word.startsWith("\u0627\u0644") && word.length > 5) {
93
- return word.slice(2);
94
- }
95
- if (word.startsWith("\u0644\u0644") && word.length > 5) {
96
- return word.slice(2);
97
- }
98
- if (word.startsWith("\u0648") && word.length > 4) {
99
- return word.slice(1);
100
- }
101
- if (word.startsWith("\u0641") && word.length > 4) {
102
- return word.slice(1);
103
- }
104
- return word;
105
- }
106
- function removeObjectPronouns(word) {
107
- if (word.length >= 6) {
108
- if (word.endsWith("\u0643\u0645\u0627")) return word.slice(0, -3);
109
- if (word.endsWith("\u0647\u0645\u0627")) return word.slice(0, -3);
110
- }
111
- if (word.length >= 5) {
112
- if (word.endsWith("\u0646\u0627")) return word.slice(0, -2);
113
- if (word.endsWith("\u0647\u0627")) return word.slice(0, -2);
114
- if (word.endsWith("\u0643\u0645")) return word.slice(0, -2);
115
- if (word.endsWith("\u0647\u0645")) return word.slice(0, -2);
116
- if (word.endsWith("\u0647\u0646")) return word.slice(0, -2);
117
- }
118
- if (word.length >= 4) {
119
- if (word.endsWith("\u0643")) return word.slice(0, -1);
120
- if (word.endsWith("\u0647")) return word.slice(0, -1);
121
- if (word.endsWith("\u064A")) return word.slice(0, -1);
122
- }
123
- return word;
124
- }
125
- function removeVerbSuffixes(word) {
126
- if (word.length >= 5) {
127
- if (word.endsWith("\u062A\u0645\u0627")) return word.slice(0, -3);
128
- }
129
- if (word.length >= 4) {
130
- if (word.endsWith("\u0627\u0646")) return word.slice(0, -2);
131
- if (word.endsWith("\u062A\u0627")) return word.slice(0, -2);
132
- if (word.endsWith("\u062A\u0646")) return word.slice(0, -2);
133
- if (word.endsWith("\u0648\u0646")) return word.slice(0, -2);
134
- if (word.endsWith("\u064A\u0646")) return word.slice(0, -2);
135
- if (word.endsWith("\u0648\u0627")) return word.slice(0, -2);
136
- if (word.endsWith("\u062A\u0645")) return word.slice(0, -2);
137
- }
138
- if (word.length >= 4) {
139
- if (word.endsWith("\u062A")) return word.slice(0, -1);
140
- if (word.endsWith("\u0627")) return word.slice(0, -1);
141
- if (word.endsWith("\u0646")) return word.slice(0, -1);
378
+ #stem() {
379
+ let a;
380
+ let B_is_defined;
381
+ let B_is_verb;
382
+ let B_is_noun;
383
+ B_is_noun = true;
384
+ B_is_verb = true;
385
+ B_is_defined = false;
386
+ const v_1 = this.c;
387
+ lab0: {
388
+ this.bra = this.c;
389
+ a = this.find_among(a_3);
390
+ if (a === 0) break lab0;
391
+ this.ket = this.c;
392
+ switch (a) {
393
+ case 1: {
394
+ if (
395
+ /**@type {boolean}*/
396
+ this.current.length < 5
397
+ ) break lab0;
398
+ B_is_noun = true;
399
+ B_is_verb = false;
400
+ B_is_defined = true;
401
+ break;
402
+ }
403
+ case 2: {
404
+ if (
405
+ /**@type {boolean}*/
406
+ this.current.length < 4
407
+ ) break lab0;
408
+ B_is_noun = true;
409
+ B_is_verb = false;
410
+ B_is_defined = true;
411
+ break;
412
+ }
413
+ }
414
+ }
415
+ this.c = v_1;
416
+ {
417
+ const v_2 = this.c;
418
+ while (true) {
419
+ const v_3 = this.c;
420
+ lab3: {
421
+ lab4: {
422
+ const v_4 = this.c;
423
+ lab5: {
424
+ this.bra = this.c;
425
+ a = this.find_among(a_0);
426
+ if (a === 0) break lab5;
427
+ this.ket = this.c;
428
+ this.slice_from(as_0[a - 1]);
429
+ break lab4;
430
+ }
431
+ this.c = v_4;
432
+ if (this.c >= this.limit) break lab3;
433
+ this.c++;
434
+ }
435
+ continue;
436
+ }
437
+ this.c = v_3;
438
+ break;
439
+ }
440
+ this.c = v_2;
441
+ }
442
+ this.limit_backward = this.c;
443
+ this.c = this.limit;
444
+ const v_5 = this.limit - this.c;
445
+ lab6: {
446
+ lab7: {
447
+ const v_6 = this.limit - this.c;
448
+ lab8: {
449
+ if (!B_is_verb) break lab8;
450
+ lab9: {
451
+ const v_7 = this.limit - this.c;
452
+ lab10: {
453
+ {
454
+ let v_8 = 1;
455
+ while (true) {
456
+ const v_9 = this.limit - this.c;
457
+ lab11: {
458
+ this.ket = this.c;
459
+ a = this.find_among_b(a_12);
460
+ if (a === 0) break lab11;
461
+ this.bra = this.c;
462
+ switch (a) {
463
+ case 1: {
464
+ if (
465
+ /**@type {boolean}*/
466
+ this.current.length < 4
467
+ ) break lab11;
468
+ this.slice_del();
469
+ break;
470
+ }
471
+ case 2: {
472
+ if (
473
+ /**@type {boolean}*/
474
+ this.current.length < 5
475
+ ) break lab11;
476
+ this.slice_del();
477
+ break;
478
+ }
479
+ case 3: {
480
+ if (
481
+ /**@type {boolean}*/
482
+ this.current.length < 6
483
+ ) break lab11;
484
+ this.slice_del();
485
+ break;
486
+ }
487
+ }
488
+ v_8--;
489
+ continue;
490
+ }
491
+ this.c = this.limit - v_9;
492
+ break;
493
+ }
494
+ if (v_8 > 0) break lab10;
495
+ }
496
+ lab12: {
497
+ const v_10 = this.limit - this.c;
498
+ lab13: {
499
+ if (!this.#r_Suffix_Verb_Step2a()) break lab13;
500
+ break lab12;
501
+ }
502
+ this.c = this.limit - v_10;
503
+ lab14: {
504
+ this.ket = this.c;
505
+ a = this.find_among_b(a_15);
506
+ if (a === 0) break lab14;
507
+ this.bra = this.c;
508
+ switch (a) {
509
+ case 1: {
510
+ if (
511
+ /**@type {boolean}*/
512
+ this.current.length < 4
513
+ ) break lab14;
514
+ this.slice_del();
515
+ break;
516
+ }
517
+ case 2: {
518
+ if (
519
+ /**@type {boolean}*/
520
+ this.current.length < 6
521
+ ) break lab14;
522
+ this.slice_del();
523
+ break;
524
+ }
525
+ }
526
+ break lab12;
527
+ }
528
+ this.c = this.limit - v_10;
529
+ if (this.c <= this.limit_backward) break lab10;
530
+ this.c--;
531
+ }
532
+ break lab9;
533
+ }
534
+ this.c = this.limit - v_7;
535
+ lab15: {
536
+ this.ket = this.c;
537
+ if (this.find_among_b(a_14) === 0) break lab15;
538
+ this.bra = this.c;
539
+ if (
540
+ /**@type {boolean}*/
541
+ this.current.length < 5
542
+ ) break lab15;
543
+ this.slice_del();
544
+ break lab9;
545
+ }
546
+ this.c = this.limit - v_7;
547
+ if (!this.#r_Suffix_Verb_Step2a()) break lab8;
548
+ }
549
+ break lab7;
550
+ }
551
+ this.c = this.limit - v_6;
552
+ lab16: {
553
+ if (!B_is_noun) break lab16;
554
+ const v_11 = this.limit - this.c;
555
+ lab17: {
556
+ lab18: {
557
+ const v_12 = this.limit - this.c;
558
+ lab19: {
559
+ this.ket = this.c;
560
+ if (!this.eq_s_b("\u0629")) break lab19;
561
+ this.bra = this.c;
562
+ if (
563
+ /**@type {boolean}*/
564
+ this.current.length < 4
565
+ ) break lab19;
566
+ this.slice_del();
567
+ break lab18;
568
+ }
569
+ this.c = this.limit - v_12;
570
+ lab20: {
571
+ if (B_is_defined) break lab20;
572
+ this.ket = this.c;
573
+ a = this.find_among_b(a_10);
574
+ if (a === 0) break lab20;
575
+ this.bra = this.c;
576
+ switch (a) {
577
+ case 1: {
578
+ if (
579
+ /**@type {boolean}*/
580
+ this.current.length < 4
581
+ ) break lab20;
582
+ this.slice_del();
583
+ break;
584
+ }
585
+ case 2: {
586
+ if (
587
+ /**@type {boolean}*/
588
+ this.current.length < 5
589
+ ) break lab20;
590
+ this.slice_del();
591
+ break;
592
+ }
593
+ case 3: {
594
+ if (
595
+ /**@type {boolean}*/
596
+ this.current.length < 6
597
+ ) break lab20;
598
+ this.slice_del();
599
+ break;
600
+ }
601
+ }
602
+ lab21: {
603
+ const v_13 = this.limit - this.c;
604
+ lab22: {
605
+ if (!this.#r_Suffix_Noun_Step2a()) break lab22;
606
+ break lab21;
607
+ }
608
+ this.c = this.limit - v_13;
609
+ lab23: {
610
+ if (!this.#r_Suffix_Noun_Step2b()) break lab23;
611
+ break lab21;
612
+ }
613
+ this.c = this.limit - v_13;
614
+ lab24: {
615
+ if (!this.#r_Suffix_Noun_Step2c1()) break lab24;
616
+ break lab21;
617
+ }
618
+ this.c = this.limit - v_13;
619
+ if (this.c <= this.limit_backward) break lab20;
620
+ this.c--;
621
+ }
622
+ break lab18;
623
+ }
624
+ this.c = this.limit - v_12;
625
+ lab25: {
626
+ this.ket = this.c;
627
+ if (!this.eq_s_b("\u0646")) break lab25;
628
+ this.bra = this.c;
629
+ if (
630
+ /**@type {boolean}*/
631
+ this.current.length < 6
632
+ ) break lab25;
633
+ this.slice_del();
634
+ lab26: {
635
+ const v_14 = this.limit - this.c;
636
+ lab27: {
637
+ if (!this.#r_Suffix_Noun_Step2a()) break lab27;
638
+ break lab26;
639
+ }
640
+ this.c = this.limit - v_14;
641
+ lab28: {
642
+ if (!this.#r_Suffix_Noun_Step2b()) break lab28;
643
+ break lab26;
644
+ }
645
+ this.c = this.limit - v_14;
646
+ if (!this.#r_Suffix_Noun_Step2c1()) break lab25;
647
+ }
648
+ break lab18;
649
+ }
650
+ this.c = this.limit - v_12;
651
+ lab29: {
652
+ if (B_is_defined) break lab29;
653
+ if (!this.#r_Suffix_Noun_Step2a()) break lab29;
654
+ break lab18;
655
+ }
656
+ this.c = this.limit - v_12;
657
+ if (!this.#r_Suffix_Noun_Step2b()) {
658
+ this.c = this.limit - v_11;
659
+ break lab17;
660
+ }
661
+ }
662
+ }
663
+ this.ket = this.c;
664
+ if (!this.eq_s_b("\u064A")) break lab16;
665
+ this.bra = this.c;
666
+ if (
667
+ /**@type {boolean}*/
668
+ this.current.length < 3
669
+ ) break lab16;
670
+ this.slice_del();
671
+ break lab7;
672
+ }
673
+ this.c = this.limit - v_6;
674
+ this.ket = this.c;
675
+ if (!this.eq_s_b("\u0649")) break lab6;
676
+ this.bra = this.c;
677
+ this.slice_from("\u064A");
678
+ }
679
+ }
680
+ this.c = this.limit - v_5;
681
+ this.c = this.limit_backward;
682
+ const v_15 = this.c;
683
+ lab30: {
684
+ const v_16 = this.c;
685
+ lab31: {
686
+ this.bra = this.c;
687
+ a = this.find_among(a_4);
688
+ if (a === 0) {
689
+ this.c = v_16;
690
+ break lab31;
691
+ }
692
+ this.ket = this.c;
693
+ switch (a) {
694
+ case 1: {
695
+ if (
696
+ /**@type {boolean}*/
697
+ this.current.length < 4
698
+ ) {
699
+ this.c = v_16;
700
+ break lab31;
701
+ }
702
+ this.slice_from("\u0623");
703
+ break;
704
+ }
705
+ case 2: {
706
+ if (
707
+ /**@type {boolean}*/
708
+ this.current.length < 4
709
+ ) {
710
+ this.c = v_16;
711
+ break lab31;
712
+ }
713
+ this.slice_from("\u0622");
714
+ break;
715
+ }
716
+ case 3: {
717
+ if (
718
+ /**@type {boolean}*/
719
+ this.current.length < 4
720
+ ) {
721
+ this.c = v_16;
722
+ break lab31;
723
+ }
724
+ this.slice_from("\u0627");
725
+ break;
726
+ }
727
+ case 4: {
728
+ if (
729
+ /**@type {boolean}*/
730
+ this.current.length < 4
731
+ ) {
732
+ this.c = v_16;
733
+ break lab31;
734
+ }
735
+ this.slice_from("\u0625");
736
+ break;
737
+ }
738
+ }
739
+ }
740
+ const v_17 = this.c;
741
+ lab32: {
742
+ this.bra = this.c;
743
+ if (this.find_among(a_5) === 0) {
744
+ this.c = v_17;
745
+ break lab32;
746
+ }
747
+ this.ket = this.c;
748
+ if (
749
+ /**@type {boolean}*/
750
+ this.current.length < 4
751
+ ) {
752
+ this.c = v_17;
753
+ break lab32;
754
+ }
755
+ lab33: {
756
+ if (!this.eq_s("\u0627")) break lab33;
757
+ this.c = v_17;
758
+ break lab32;
759
+ }
760
+ this.slice_del();
761
+ }
762
+ lab34: {
763
+ const v_18 = this.c;
764
+ lab35: {
765
+ this.bra = this.c;
766
+ a = this.find_among(a_6);
767
+ if (a === 0) break lab35;
768
+ this.ket = this.c;
769
+ switch (a) {
770
+ case 1: {
771
+ if (
772
+ /**@type {boolean}*/
773
+ this.current.length < 6
774
+ ) break lab35;
775
+ this.slice_del();
776
+ break;
777
+ }
778
+ case 2: {
779
+ if (
780
+ /**@type {boolean}*/
781
+ this.current.length < 5
782
+ ) break lab35;
783
+ this.slice_del();
784
+ break;
785
+ }
786
+ }
787
+ break lab34;
788
+ }
789
+ this.c = v_18;
790
+ lab36: {
791
+ if (!B_is_noun) break lab36;
792
+ this.bra = this.c;
793
+ a = this.find_among(a_7);
794
+ if (a === 0) break lab36;
795
+ this.ket = this.c;
796
+ switch (a) {
797
+ case 1: {
798
+ if (
799
+ /**@type {boolean}*/
800
+ this.current.length < 4
801
+ ) break lab36;
802
+ this.slice_del();
803
+ break;
804
+ }
805
+ case 2: {
806
+ if (
807
+ /**@type {boolean}*/
808
+ this.current.length < 4
809
+ ) break lab36;
810
+ this.slice_from("\u0628");
811
+ break;
812
+ }
813
+ case 3: {
814
+ if (
815
+ /**@type {boolean}*/
816
+ this.current.length < 4
817
+ ) break lab36;
818
+ this.slice_from("\u0643");
819
+ break;
820
+ }
821
+ }
822
+ break lab34;
823
+ }
824
+ this.c = v_18;
825
+ if (!B_is_verb) break lab30;
826
+ const v_19 = this.c;
827
+ lab37: {
828
+ this.bra = this.c;
829
+ a = this.find_among(a_8);
830
+ if (a === 0) {
831
+ this.c = v_19;
832
+ break lab37;
833
+ }
834
+ this.ket = this.c;
835
+ switch (a) {
836
+ case 1: {
837
+ if (
838
+ /**@type {boolean}*/
839
+ this.current.length < 5
840
+ ) {
841
+ this.c = v_19;
842
+ break lab37;
843
+ }
844
+ this.slice_from("\u064A");
845
+ break;
846
+ }
847
+ case 2: {
848
+ if (
849
+ /**@type {boolean}*/
850
+ this.current.length < 5
851
+ ) {
852
+ this.c = v_19;
853
+ break lab37;
854
+ }
855
+ this.slice_from("\u062A");
856
+ break;
857
+ }
858
+ case 3: {
859
+ if (
860
+ /**@type {boolean}*/
861
+ this.current.length < 5
862
+ ) {
863
+ this.c = v_19;
864
+ break lab37;
865
+ }
866
+ this.slice_from("\u0646");
867
+ break;
868
+ }
869
+ case 4: {
870
+ if (
871
+ /**@type {boolean}*/
872
+ this.current.length < 5
873
+ ) {
874
+ this.c = v_19;
875
+ break lab37;
876
+ }
877
+ this.slice_from("\u0623");
878
+ break;
879
+ }
880
+ }
881
+ }
882
+ this.bra = this.c;
883
+ if (this.find_among(a_9) === 0) break lab30;
884
+ this.ket = this.c;
885
+ if (
886
+ /**@type {boolean}*/
887
+ this.current.length < 5
888
+ ) break lab30;
889
+ B_is_verb = true;
890
+ B_is_noun = false;
891
+ this.slice_from("\u0627\u0633\u062A");
892
+ }
893
+ }
894
+ this.c = v_15;
895
+ {
896
+ const v_20 = this.c;
897
+ lab39: {
898
+ this.limit_backward = this.c;
899
+ this.c = this.limit;
900
+ this.ket = this.c;
901
+ if (this.find_among_b(a_1) === 0) break lab39;
902
+ this.bra = this.c;
903
+ this.slice_from("\u0621");
904
+ this.c = this.limit_backward;
905
+ }
906
+ this.c = v_20;
907
+ const v_21 = this.c;
908
+ while (true) {
909
+ const v_22 = this.c;
910
+ lab41: {
911
+ lab42: {
912
+ const v_23 = this.c;
913
+ lab43: {
914
+ this.bra = this.c;
915
+ a = this.find_among(a_2);
916
+ if (a === 0) break lab43;
917
+ this.ket = this.c;
918
+ this.slice_from(as_2[a - 1]);
919
+ break lab42;
920
+ }
921
+ this.c = v_23;
922
+ if (this.c >= this.limit) break lab41;
923
+ this.c++;
924
+ }
925
+ continue;
926
+ }
927
+ this.c = v_22;
928
+ break;
929
+ }
930
+ this.c = v_21;
931
+ }
932
+ return true;
142
933
  }
143
- return word;
144
- }
145
- function removeNounSuffixes(word) {
146
- if (word.length >= 4) {
147
- if (word.endsWith("\u0627\u062A")) return word.slice(0, -2);
148
- if (word.endsWith("\u0629")) return word.slice(0, -1);
149
- if (word.endsWith("\u064A")) return word.slice(0, -1);
934
+ stem(input) {
935
+ this.setCurrent(input);
936
+ this.#stem();
937
+ return this.getCurrent();
150
938
  }
151
- return word;
152
- }
153
- function stem(word) {
154
- if (word.length < 3) return word;
155
- word = normalize(word);
156
- word = removePrefixes(word);
157
- word = removeObjectPronouns(word);
158
- word = removeVerbSuffixes(word);
159
- word = removeNounSuffixes(word);
160
- return word;
939
+ };
940
+ var shared = new ArabicStemmer();
941
+ function stem(token) {
942
+ return shared.stem(token);
161
943
  }
944
+
945
+ // src/languages/arabic.ts
162
946
  var stopWords = /* @__PURE__ */ new Set([
163
947
  "\u0623\u0644\u0627",
164
948
  "\u0623\u0645\u0627",
@@ -623,9 +1407,10 @@ var stopWords = /* @__PURE__ */ new Set([
623
1407
  ]);
624
1408
  var arabic = {
625
1409
  name: "arabic",
1410
+ revision: "d9b491d016b4caf6",
626
1411
  stemmer: stem,
627
1412
  stopWords,
628
- tokenizer: { splitPattern: /[^\u0621-\u064a\u0660-\u0669a-z0-9]+/gi }
1413
+ tokenizer: { splitPattern: /[^\u0621-\u065f\u0660-\u0669\u066e-\u06d3\u06f0-\u06f9a-z0-9]+/gi }
629
1414
  };
630
1415
 
631
1416
  export { arabic };