toolbox-x 1.0.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 (190) hide show
  1. package/LICENSE +201 -0
  2. package/dist/Color-B3mgF9Dh.d.cts +486 -0
  3. package/dist/Color-D38Xrw65.d.mts +486 -0
  4. package/dist/Stylog-Df7eq3-j.d.cts +519 -0
  5. package/dist/Stylog-jvlLcMQq.d.mts +519 -0
  6. package/dist/array-DvW0zIu6.d.mts +130 -0
  7. package/dist/array-rUnEVisO.d.cts +130 -0
  8. package/dist/basics-D_eSv0cu.cjs +132 -0
  9. package/dist/basics-Dp_aEK81.mjs +115 -0
  10. package/dist/basics-WEYWlnRO.d.cts +95 -0
  11. package/dist/basics-uBSfkBEI.d.mts +95 -0
  12. package/dist/case-BWIt8Ash.mjs +449 -0
  13. package/dist/case-C-S-b5YP.d.cts +327 -0
  14. package/dist/case-CS8Ii3A7.cjs +526 -0
  15. package/dist/case-CybASFPD.d.mts +327 -0
  16. package/dist/change-case.cjs +32 -0
  17. package/dist/change-case.d.cts +18 -0
  18. package/dist/change-case.d.mts +18 -0
  19. package/dist/change-case.mjs +19 -0
  20. package/dist/colors.cjs +574 -0
  21. package/dist/colors.d.cts +355 -0
  22. package/dist/colors.d.mts +355 -0
  23. package/dist/colors.mjs +547 -0
  24. package/dist/constants-2gAw23_7.mjs +144 -0
  25. package/dist/constants-B34K0QPi.d.cts +21 -0
  26. package/dist/constants-BIBDKY1u.cjs +924 -0
  27. package/dist/constants-BWT-810U.cjs +158 -0
  28. package/dist/constants-BwbHnXlM.mjs +662 -0
  29. package/dist/constants-BxN9l5el.cjs +74 -0
  30. package/dist/constants-CLS_bgKD.d.mts +847 -0
  31. package/dist/constants-D73iFu8g.mjs +171 -0
  32. package/dist/constants-DAfRxaa8.mjs +62 -0
  33. package/dist/constants-DQYeCjlx.cjs +207 -0
  34. package/dist/constants-Deeie-iH.d.mts +21 -0
  35. package/dist/constants-DpTG9RP6.d.mts +29 -0
  36. package/dist/constants-DqwnkJ_d.cjs +740 -0
  37. package/dist/constants-DvRUY_FY.cjs +150 -0
  38. package/dist/constants-VcRtQu0K.d.cts +29 -0
  39. package/dist/constants-X5hm1UtB.mjs +912 -0
  40. package/dist/constants-eNd-iYsV.mjs +134 -0
  41. package/dist/constants-qm8FafmD.d.cts +847 -0
  42. package/dist/constants.cjs +415 -0
  43. package/dist/constants.d.cts +184 -0
  44. package/dist/constants.d.mts +184 -0
  45. package/dist/constants.mjs +378 -0
  46. package/dist/convert-BOCgUv2D.cjs +252 -0
  47. package/dist/convert-Bn4jFomQ.mjs +169 -0
  48. package/dist/convert-BrzlG-m_.cjs +475 -0
  49. package/dist/convert-DhaUoPVU.mjs +368 -0
  50. package/dist/converter-1P90_RcP.d.mts +402 -0
  51. package/dist/converter-CmkcAppi.d.cts +402 -0
  52. package/dist/converter.cjs +780 -0
  53. package/dist/converter.d.cts +29 -0
  54. package/dist/converter.d.mts +29 -0
  55. package/dist/converter.mjs +771 -0
  56. package/dist/countries-CIpmtEzV.cjs +1469 -0
  57. package/dist/countries-Cy0xiqS3.mjs +1463 -0
  58. package/dist/css-colors-Bx947Ng3.d.cts +179 -0
  59. package/dist/css-colors-CXCDqQbG.cjs +186 -0
  60. package/dist/css-colors-CXTp1vvy.d.mts +179 -0
  61. package/dist/css-colors-DfUW3nTR.mjs +180 -0
  62. package/dist/date.cjs +332 -0
  63. package/dist/date.d.cts +213 -0
  64. package/dist/date.d.mts +213 -0
  65. package/dist/date.mjs +298 -0
  66. package/dist/dom.cjs +461 -0
  67. package/dist/dom.d.cts +228 -0
  68. package/dist/dom.d.mts +228 -0
  69. package/dist/dom.mjs +429 -0
  70. package/dist/form-BMFVGUrN.d.mts +118 -0
  71. package/dist/form-DRFbryvK.d.cts +118 -0
  72. package/dist/guards-3kaUX66g.mjs +157 -0
  73. package/dist/guards-C8gkvIHb.cjs +240 -0
  74. package/dist/guards-DdyU4h4o.mjs +110 -0
  75. package/dist/guards-Efhp1mNy.cjs +151 -0
  76. package/dist/guards.cjs +172 -0
  77. package/dist/guards.d.cts +399 -0
  78. package/dist/guards.d.mts +399 -0
  79. package/dist/guards.mjs +75 -0
  80. package/dist/hash-B6JPEyAz.d.mts +131 -0
  81. package/dist/hash-NTpeKYB_.d.cts +131 -0
  82. package/dist/hash.cjs +2126 -0
  83. package/dist/hash.d.cts +1239 -0
  84. package/dist/hash.d.mts +1239 -0
  85. package/dist/hash.mjs +2095 -0
  86. package/dist/http-status-BAZdtr7-.d.mts +65 -0
  87. package/dist/http-status-U_3MtoGb.d.cts +65 -0
  88. package/dist/http-status.cjs +173 -0
  89. package/dist/http-status.d.cts +142 -0
  90. package/dist/http-status.d.mts +142 -0
  91. package/dist/http-status.mjs +171 -0
  92. package/dist/index.cjs +2551 -0
  93. package/dist/index.d.cts +1493 -0
  94. package/dist/index.d.mts +1493 -0
  95. package/dist/index.mjs +2357 -0
  96. package/dist/object-B0TV3eHx.d.mts +8052 -0
  97. package/dist/object-Blq0Amdv.d.cts +8052 -0
  98. package/dist/objectify-CDs0Fbr1.mjs +417 -0
  99. package/dist/objectify-DIJ-OBmo.cjs +524 -0
  100. package/dist/paginator.cjs +245 -0
  101. package/dist/paginator.d.cts +144 -0
  102. package/dist/paginator.d.mts +144 -0
  103. package/dist/paginator.mjs +243 -0
  104. package/dist/parse-2ubxXZRp.cjs +211 -0
  105. package/dist/parse-N7g942uy.mjs +164 -0
  106. package/dist/pluralizer-BjMIc6uT.d.mts +42 -0
  107. package/dist/pluralizer-Cb6ZmrDl.d.cts +42 -0
  108. package/dist/pluralizer.cjs +678 -0
  109. package/dist/pluralizer.d.cts +152 -0
  110. package/dist/pluralizer.d.mts +152 -0
  111. package/dist/pluralizer.mjs +676 -0
  112. package/dist/primitives-B26uZolQ.cjs +228 -0
  113. package/dist/primitives-KsFUp3kQ.mjs +144 -0
  114. package/dist/specials-D48_IZbd.d.mts +108 -0
  115. package/dist/specials-DzLr1ZgU.cjs +477 -0
  116. package/dist/specials-LVONlKbQ.d.cts +108 -0
  117. package/dist/specials-uhDuRg8H.mjs +292 -0
  118. package/dist/string-CBAbxaG1.d.mts +258 -0
  119. package/dist/string-CsNsm_65.d.cts +258 -0
  120. package/dist/stylog.cjs +621 -0
  121. package/dist/stylog.d.cts +49 -0
  122. package/dist/stylog.d.mts +49 -0
  123. package/dist/stylog.mjs +614 -0
  124. package/dist/timezone-B2OYK6Fh.mjs +5589 -0
  125. package/dist/timezone-Beh9IGpw.cjs +5625 -0
  126. package/dist/types/array.cjs +16 -0
  127. package/dist/types/array.d.cts +18 -0
  128. package/dist/types/array.d.mts +18 -0
  129. package/dist/types/array.mjs +17 -0
  130. package/dist/types/colors.cjs +16 -0
  131. package/dist/types/colors.d.cts +18 -0
  132. package/dist/types/colors.d.mts +18 -0
  133. package/dist/types/colors.mjs +17 -0
  134. package/dist/types/converter.cjs +16 -0
  135. package/dist/types/converter.d.cts +18 -0
  136. package/dist/types/converter.d.mts +18 -0
  137. package/dist/types/converter.mjs +17 -0
  138. package/dist/types/form.cjs +16 -0
  139. package/dist/types/form.d.cts +18 -0
  140. package/dist/types/form.d.mts +18 -0
  141. package/dist/types/form.mjs +17 -0
  142. package/dist/types/hash.cjs +16 -0
  143. package/dist/types/hash.d.cts +18 -0
  144. package/dist/types/hash.d.mts +18 -0
  145. package/dist/types/hash.mjs +17 -0
  146. package/dist/types/http-status.cjs +16 -0
  147. package/dist/types/http-status.d.cts +18 -0
  148. package/dist/types/http-status.d.mts +18 -0
  149. package/dist/types/http-status.mjs +17 -0
  150. package/dist/types/index.cjs +16 -0
  151. package/dist/types/index.d.cts +18 -0
  152. package/dist/types/index.d.mts +18 -0
  153. package/dist/types/index.mjs +17 -0
  154. package/dist/types/number.cjs +16 -0
  155. package/dist/types/number.d.cts +18 -0
  156. package/dist/types/number.d.mts +18 -0
  157. package/dist/types/number.mjs +17 -0
  158. package/dist/types/object.cjs +16 -0
  159. package/dist/types/object.d.cts +18 -0
  160. package/dist/types/object.d.mts +18 -0
  161. package/dist/types/object.mjs +17 -0
  162. package/dist/types/pluralizer.cjs +16 -0
  163. package/dist/types/pluralizer.d.cts +18 -0
  164. package/dist/types/pluralizer.d.mts +18 -0
  165. package/dist/types/pluralizer.mjs +17 -0
  166. package/dist/types/string.cjs +16 -0
  167. package/dist/types/string.d.cts +18 -0
  168. package/dist/types/string.d.mts +18 -0
  169. package/dist/types/string.mjs +17 -0
  170. package/dist/types/stylog.cjs +16 -0
  171. package/dist/types/stylog.d.cts +18 -0
  172. package/dist/types/stylog.d.mts +18 -0
  173. package/dist/types/stylog.mjs +17 -0
  174. package/dist/types/utils.cjs +16 -0
  175. package/dist/types/utils.d.cts +18 -0
  176. package/dist/types/utils.d.mts +18 -0
  177. package/dist/types/utils.mjs +17 -0
  178. package/dist/types/verbalizer.cjs +16 -0
  179. package/dist/types/verbalizer.d.cts +30 -0
  180. package/dist/types/verbalizer.d.mts +30 -0
  181. package/dist/types/verbalizer.mjs +17 -0
  182. package/dist/utilities-CLUmdQeV.cjs +140 -0
  183. package/dist/utilities-m5yFKqLd.mjs +105 -0
  184. package/dist/utils-ClW9LA6f.mjs +449 -0
  185. package/dist/utils-DLFRgXUC.cjs +568 -0
  186. package/dist/verbalizer.cjs +998 -0
  187. package/dist/verbalizer.d.cts +148 -0
  188. package/dist/verbalizer.d.mts +148 -0
  189. package/dist/verbalizer.mjs +996 -0
  190. package/package.json +249 -0
@@ -0,0 +1,998 @@
1
+ /**
2
+ * Copyright 2026 - present Nazmul Hassan
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
18
+ const require_primitives = require('./primitives-B26uZolQ.cjs');
19
+
20
+ //#region src/verbalizer/rules.ts
21
+ /** Irregular verb mappings: base → past → past participle */
22
+ const irregularVerbs = /* @__PURE__ */ Object.freeze([
23
+ [
24
+ "am",
25
+ "was",
26
+ "been"
27
+ ],
28
+ [
29
+ "is",
30
+ "was",
31
+ "been"
32
+ ],
33
+ [
34
+ "are",
35
+ "were",
36
+ "been"
37
+ ],
38
+ [
39
+ "be",
40
+ "were",
41
+ "been"
42
+ ],
43
+ [
44
+ "can",
45
+ "could",
46
+ "been able"
47
+ ],
48
+ [
49
+ "may",
50
+ "might",
51
+ ""
52
+ ],
53
+ [
54
+ "must",
55
+ "had to",
56
+ ""
57
+ ],
58
+ [
59
+ "will",
60
+ "would",
61
+ ""
62
+ ],
63
+ [
64
+ "shall",
65
+ "should",
66
+ ""
67
+ ],
68
+ [
69
+ "arise",
70
+ "arose",
71
+ "arisen"
72
+ ],
73
+ [
74
+ "awake",
75
+ "awoke",
76
+ "awoken"
77
+ ],
78
+ [
79
+ "bear",
80
+ "bore",
81
+ "born"
82
+ ],
83
+ [
84
+ "bear",
85
+ "bore",
86
+ "borne"
87
+ ],
88
+ [
89
+ "beat",
90
+ "beat",
91
+ "beaten"
92
+ ],
93
+ [
94
+ "become",
95
+ "became",
96
+ "become"
97
+ ],
98
+ [
99
+ "begin",
100
+ "began",
101
+ "begun"
102
+ ],
103
+ [
104
+ "bend",
105
+ "bent",
106
+ "bent"
107
+ ],
108
+ [
109
+ "bet",
110
+ "bet",
111
+ "bet"
112
+ ],
113
+ [
114
+ "bind",
115
+ "bound",
116
+ "bound"
117
+ ],
118
+ [
119
+ "bite",
120
+ "bit",
121
+ "bitten"
122
+ ],
123
+ [
124
+ "bleed",
125
+ "bled",
126
+ "bled"
127
+ ],
128
+ [
129
+ "blow",
130
+ "blew",
131
+ "blown"
132
+ ],
133
+ [
134
+ "break",
135
+ "broke",
136
+ "broken"
137
+ ],
138
+ [
139
+ "breed",
140
+ "bred",
141
+ "bred"
142
+ ],
143
+ [
144
+ "bring",
145
+ "brought",
146
+ "brought"
147
+ ],
148
+ [
149
+ "broadcast",
150
+ "broadcast",
151
+ "broadcast"
152
+ ],
153
+ [
154
+ "build",
155
+ "built",
156
+ "built"
157
+ ],
158
+ [
159
+ "burn",
160
+ "burnt",
161
+ "burnt"
162
+ ],
163
+ [
164
+ "burst",
165
+ "burst",
166
+ "burst"
167
+ ],
168
+ [
169
+ "buy",
170
+ "bought",
171
+ "bought"
172
+ ],
173
+ [
174
+ "catch",
175
+ "caught",
176
+ "caught"
177
+ ],
178
+ [
179
+ "choose",
180
+ "chose",
181
+ "chosen"
182
+ ],
183
+ [
184
+ "cling",
185
+ "clung",
186
+ "clung"
187
+ ],
188
+ [
189
+ "come",
190
+ "came",
191
+ "come"
192
+ ],
193
+ [
194
+ "cost",
195
+ "cost",
196
+ "cost"
197
+ ],
198
+ [
199
+ "creep",
200
+ "crept",
201
+ "crept"
202
+ ],
203
+ [
204
+ "cut",
205
+ "cut",
206
+ "cut"
207
+ ],
208
+ [
209
+ "deal",
210
+ "dealt",
211
+ "dealt"
212
+ ],
213
+ [
214
+ "dig",
215
+ "dug",
216
+ "dug"
217
+ ],
218
+ [
219
+ "do",
220
+ "did",
221
+ "done"
222
+ ],
223
+ [
224
+ "draw",
225
+ "drew",
226
+ "drawn"
227
+ ],
228
+ [
229
+ "dream",
230
+ "dreamt",
231
+ "dreamt"
232
+ ],
233
+ [
234
+ "drink",
235
+ "drank",
236
+ "drunk"
237
+ ],
238
+ [
239
+ "drive",
240
+ "drove",
241
+ "driven"
242
+ ],
243
+ [
244
+ "eat",
245
+ "ate",
246
+ "eaten"
247
+ ],
248
+ [
249
+ "fall",
250
+ "fell",
251
+ "fallen"
252
+ ],
253
+ [
254
+ "feed",
255
+ "fed",
256
+ "fed"
257
+ ],
258
+ [
259
+ "feel",
260
+ "felt",
261
+ "felt"
262
+ ],
263
+ [
264
+ "fight",
265
+ "fought",
266
+ "fought"
267
+ ],
268
+ [
269
+ "find",
270
+ "found",
271
+ "found"
272
+ ],
273
+ [
274
+ "fly",
275
+ "flew",
276
+ "flown"
277
+ ],
278
+ [
279
+ "forbid",
280
+ "forbade",
281
+ "forbidden"
282
+ ],
283
+ [
284
+ "forget",
285
+ "forgot",
286
+ "forgotten"
287
+ ],
288
+ [
289
+ "forgive",
290
+ "forgave",
291
+ "forgiven"
292
+ ],
293
+ [
294
+ "freeze",
295
+ "froze",
296
+ "frozen"
297
+ ],
298
+ [
299
+ "get",
300
+ "got",
301
+ "got"
302
+ ],
303
+ [
304
+ "give",
305
+ "gave",
306
+ "given"
307
+ ],
308
+ [
309
+ "go",
310
+ "went",
311
+ "gone"
312
+ ],
313
+ [
314
+ "grind",
315
+ "ground",
316
+ "ground"
317
+ ],
318
+ [
319
+ "grow",
320
+ "grew",
321
+ "grown"
322
+ ],
323
+ [
324
+ "hang",
325
+ "hung",
326
+ "hung"
327
+ ],
328
+ [
329
+ "have",
330
+ "had",
331
+ "had"
332
+ ],
333
+ [
334
+ "hear",
335
+ "heard",
336
+ "heard"
337
+ ],
338
+ [
339
+ "hide",
340
+ "hid",
341
+ "hidden"
342
+ ],
343
+ [
344
+ "hit",
345
+ "hit",
346
+ "hit"
347
+ ],
348
+ [
349
+ "hold",
350
+ "held",
351
+ "held"
352
+ ],
353
+ [
354
+ "hurt",
355
+ "hurt",
356
+ "hurt"
357
+ ],
358
+ [
359
+ "keep",
360
+ "kept",
361
+ "kept"
362
+ ],
363
+ [
364
+ "kneel",
365
+ "knelt",
366
+ "knelt"
367
+ ],
368
+ [
369
+ "know",
370
+ "knew",
371
+ "known"
372
+ ],
373
+ [
374
+ "lay",
375
+ "laid",
376
+ "laid"
377
+ ],
378
+ [
379
+ "lead",
380
+ "led",
381
+ "led"
382
+ ],
383
+ [
384
+ "lean",
385
+ "leant",
386
+ "leant"
387
+ ],
388
+ [
389
+ "learn",
390
+ "learnt",
391
+ "learnt"
392
+ ],
393
+ [
394
+ "leave",
395
+ "left",
396
+ "left"
397
+ ],
398
+ [
399
+ "lend",
400
+ "lent",
401
+ "lent"
402
+ ],
403
+ [
404
+ "lie",
405
+ "lay",
406
+ "lain"
407
+ ],
408
+ [
409
+ "light",
410
+ "lit",
411
+ "lit"
412
+ ],
413
+ [
414
+ "lose",
415
+ "lost",
416
+ "lost"
417
+ ],
418
+ [
419
+ "make",
420
+ "made",
421
+ "made"
422
+ ],
423
+ [
424
+ "mean",
425
+ "meant",
426
+ "meant"
427
+ ],
428
+ [
429
+ "meet",
430
+ "met",
431
+ "met"
432
+ ],
433
+ [
434
+ "mow",
435
+ "mowed",
436
+ "mown"
437
+ ],
438
+ [
439
+ "overtake",
440
+ "overtook",
441
+ "overtaken"
442
+ ],
443
+ [
444
+ "pay",
445
+ "paid",
446
+ "paid"
447
+ ],
448
+ [
449
+ "put",
450
+ "put",
451
+ "put"
452
+ ],
453
+ [
454
+ "read",
455
+ "read",
456
+ "read"
457
+ ],
458
+ [
459
+ "ride",
460
+ "rode",
461
+ "ridden"
462
+ ],
463
+ [
464
+ "ring",
465
+ "rang",
466
+ "rung"
467
+ ],
468
+ [
469
+ "rise",
470
+ "rose",
471
+ "risen"
472
+ ],
473
+ [
474
+ "run",
475
+ "ran",
476
+ "run"
477
+ ],
478
+ [
479
+ "saw",
480
+ "sawed",
481
+ "sawn"
482
+ ],
483
+ [
484
+ "say",
485
+ "said",
486
+ "said"
487
+ ],
488
+ [
489
+ "see",
490
+ "saw",
491
+ "seen"
492
+ ],
493
+ [
494
+ "sell",
495
+ "sold",
496
+ "sold"
497
+ ],
498
+ [
499
+ "send",
500
+ "sent",
501
+ "sent"
502
+ ],
503
+ [
504
+ "set",
505
+ "set",
506
+ "set"
507
+ ],
508
+ [
509
+ "sew",
510
+ "sewed",
511
+ "sewn"
512
+ ],
513
+ [
514
+ "shake",
515
+ "shook",
516
+ "shaken"
517
+ ],
518
+ [
519
+ "shed",
520
+ "shed",
521
+ "shed"
522
+ ],
523
+ [
524
+ "shine",
525
+ "shone",
526
+ "shone"
527
+ ],
528
+ [
529
+ "shoot",
530
+ "shot",
531
+ "shot"
532
+ ],
533
+ [
534
+ "show",
535
+ "showed",
536
+ "shown"
537
+ ],
538
+ [
539
+ "shrink",
540
+ "shrank",
541
+ "shrunk"
542
+ ],
543
+ [
544
+ "shut",
545
+ "shut",
546
+ "shut"
547
+ ],
548
+ [
549
+ "sing",
550
+ "sang",
551
+ "sung"
552
+ ],
553
+ [
554
+ "sink",
555
+ "sank",
556
+ "sunk"
557
+ ],
558
+ [
559
+ "sit",
560
+ "sat",
561
+ "sat"
562
+ ],
563
+ [
564
+ "sleep",
565
+ "slept",
566
+ "slept"
567
+ ],
568
+ [
569
+ "slide",
570
+ "slid",
571
+ "slid"
572
+ ],
573
+ [
574
+ "smell",
575
+ "smelt",
576
+ "smelt"
577
+ ],
578
+ [
579
+ "sow",
580
+ "sowed",
581
+ "sown"
582
+ ],
583
+ [
584
+ "speak",
585
+ "spoke",
586
+ "spoken"
587
+ ],
588
+ [
589
+ "spend",
590
+ "spent",
591
+ "spent"
592
+ ],
593
+ [
594
+ "spin",
595
+ "spun",
596
+ "spun"
597
+ ],
598
+ [
599
+ "spit",
600
+ "spat",
601
+ "spat"
602
+ ],
603
+ [
604
+ "spread",
605
+ "spread",
606
+ "spread"
607
+ ],
608
+ [
609
+ "stand",
610
+ "stood",
611
+ "stood"
612
+ ],
613
+ [
614
+ "steal",
615
+ "stole",
616
+ "stolen"
617
+ ],
618
+ [
619
+ "stick",
620
+ "stuck",
621
+ "stuck"
622
+ ],
623
+ [
624
+ "sting",
625
+ "stung",
626
+ "stung"
627
+ ],
628
+ [
629
+ "stink",
630
+ "stank",
631
+ "stunk"
632
+ ],
633
+ [
634
+ "strike",
635
+ "struck",
636
+ "struck"
637
+ ],
638
+ [
639
+ "swear",
640
+ "swore",
641
+ "sworn"
642
+ ],
643
+ [
644
+ "sweep",
645
+ "swept",
646
+ "swept"
647
+ ],
648
+ [
649
+ "swell",
650
+ "swelled",
651
+ "swollen"
652
+ ],
653
+ [
654
+ "swim",
655
+ "swam",
656
+ "swum"
657
+ ],
658
+ [
659
+ "swing",
660
+ "swung",
661
+ "swung"
662
+ ],
663
+ [
664
+ "take",
665
+ "took",
666
+ "taken"
667
+ ],
668
+ [
669
+ "teach",
670
+ "taught",
671
+ "taught"
672
+ ],
673
+ [
674
+ "tear",
675
+ "tore",
676
+ "torn"
677
+ ],
678
+ [
679
+ "tell",
680
+ "told",
681
+ "told"
682
+ ],
683
+ [
684
+ "think",
685
+ "thought",
686
+ "thought"
687
+ ],
688
+ [
689
+ "throw",
690
+ "threw",
691
+ "thrown"
692
+ ],
693
+ [
694
+ "understand",
695
+ "understood",
696
+ "understood"
697
+ ],
698
+ [
699
+ "wake",
700
+ "woke",
701
+ "woken"
702
+ ],
703
+ [
704
+ "wear",
705
+ "wore",
706
+ "worn"
707
+ ],
708
+ [
709
+ "weep",
710
+ "wept",
711
+ "wept"
712
+ ],
713
+ [
714
+ "win",
715
+ "won",
716
+ "won"
717
+ ],
718
+ [
719
+ "wind",
720
+ "wound",
721
+ "wound"
722
+ ],
723
+ [
724
+ "write",
725
+ "wrote",
726
+ "written"
727
+ ]
728
+ ]);
729
+ /** Past tense conjugation rules with regex and replacements */
730
+ const pastRules = /* @__PURE__ */ Object.freeze([
731
+ [/([aeiou])y$/i, "$1yed"],
732
+ [/e$/i, "ed"],
733
+ [/([aeiou])lf$/i, "$1lved"],
734
+ [/([^aeiou])y$/i, "$1ied"],
735
+ [/([^aeiou])ic$/i, "$1icked"],
736
+ [/([^aeiou])([aeiou])([^aeiou])$/i, "$1$2$3$3ed"],
737
+ [/$/i, "ed"]
738
+ ]);
739
+ /** Past participle conjugation rules with regex and replacements */
740
+ const pastParticipleRules = /* @__PURE__ */ Object.freeze([
741
+ [/([aeiou])y$/i, "$1yed"],
742
+ [/e$/i, "ed"],
743
+ [/([aeiou])lf$/i, "$1lved"],
744
+ [/([^aeiou])y$/i, "$1ied"],
745
+ [/([^aeiou])ic$/i, "$1icked"],
746
+ [/([^aeiou])([aeiou])([^aeiou])$/i, "$1$2$3$3ed"],
747
+ [/$/i, "ed"]
748
+ ]);
749
+ /** Base form recovery rules (reverse of pastRules) */
750
+ const baseRules = Object.freeze([
751
+ [/([aeiou])yed$/i, "$1y"],
752
+ [/^([^aeiouwy])ied$/i, "$1ie"],
753
+ [/ied$/i, "y"],
754
+ [/([aeiou])lved$/i, "$1lf"],
755
+ [/([^aeiou])icked$/i, "$1ic"],
756
+ [/([bcdfghjklmnpqrstvwxyz])\1ed$/i, "$1"],
757
+ [/([aeiou])ked$/i, "$1ke"],
758
+ [/ined$/i, "ine"],
759
+ [/eted$/i, "ete"],
760
+ [/gued$/i, "gue"],
761
+ [/ed$/i, ""]
762
+ ]);
763
+
764
+ //#endregion
765
+ //#region src/verbalizer/Verbalizer.ts
766
+ /**
767
+ * @class Handles English verb conjugation between base, past tense, and past participle forms.
768
+ *
769
+ * - Provides methods to convert verbs between base, past, and past participle forms, check verb forms, and manage custom conjugation rules.
770
+ * - Supports adding custom conjugation rules and irregular verbs.
771
+ * - Automatically handles common irregular verbs like "go" to "went" (past) and "gone" (past participle).
772
+ * - Automatically loads common irregular verbs and conjugation rules.
773
+ * - Preserves case sensitivity of input verbs.
774
+ * - This class is useful for natural language processing tasks, such as chatbots, text analysis, or content generation systems requiring accurate verb conjugation.
775
+ *
776
+ * @remarks
777
+ * For ready to use instance, please refer to {@link https://toolbox.nazmul-nhb.dev/docs/utilities/string/verbalizer verbalizer} instead.
778
+ *
779
+ * @example
780
+ * const myVerbalizer = new Verbalizer();
781
+ * myVerbalizer.toPast('run'); // "ran"
782
+ * myVerbalizer.toParticiple('go'); // "gone"
783
+ * myVerbalizer.toBase('went'); // "go"
784
+ */
785
+ var Verbalizer = class {
786
+ #baseRules = [];
787
+ #pastRules = [];
788
+ #participleRules = [];
789
+ #irregularVerbs = {};
790
+ #reverseIrregular = {};
791
+ /**
792
+ * Initializes `Verbalizer` with default rules and irregular verbs.
793
+ * Automatically loads irregular verbs and conjugation rules for base, past and past participle forms.
794
+ */
795
+ constructor() {
796
+ this.#loadRules();
797
+ }
798
+ #loadRules() {
799
+ irregularVerbs.forEach(([base, past, pastParticiple]) => {
800
+ this.addIrregular(base, past, pastParticiple);
801
+ });
802
+ baseRules.forEach(([rule, replacement]) => {
803
+ this.addBaseRule(rule, replacement);
804
+ });
805
+ pastRules.forEach(([rule, replacement]) => {
806
+ this.addPastRule(rule, replacement);
807
+ });
808
+ pastParticipleRules.forEach(([rule, replacement]) => {
809
+ this.addParticipleRule(rule, replacement);
810
+ });
811
+ }
812
+ /** Restore case order(s) */
813
+ #restoreCase(original, transformed) {
814
+ original = original?.trim();
815
+ if (original === transformed) return transformed;
816
+ if (original === original.toLowerCase()) return transformed.toLowerCase();
817
+ if (original === original.toUpperCase()) return transformed.toUpperCase();
818
+ if (original[0] === original[0].toUpperCase() && original.slice(1) === original.slice(1).toLowerCase()) return transformed.charAt(0).toUpperCase() + transformed.slice(1).toLowerCase();
819
+ let result = "";
820
+ for (let i = 0; i < transformed.length; i++) {
821
+ const origChar = original[i];
822
+ if (origChar && origChar === origChar.toUpperCase() && origChar !== origChar.toLowerCase()) result += transformed[i].toUpperCase();
823
+ else result += transformed[i].toLowerCase();
824
+ }
825
+ return result;
826
+ }
827
+ /** Apply base rule to already trimmed and lowercased verb */
828
+ #applyBaseRule(verb) {
829
+ return this.#applyRules(verb, this.#baseRules);
830
+ }
831
+ /** Apply corresponding rules */
832
+ #applyRules(verb, rules) {
833
+ if (!require_primitives.isNonEmptyString(verb)) return "";
834
+ for (let i = 0; i < rules.length; i++) {
835
+ const [rule, replacement] = rules[i];
836
+ if (rule.test(verb)) return verb.replace(rule, replacement);
837
+ }
838
+ return verb;
839
+ }
840
+ /** Find irregular verb entry */
841
+ #findIrregularEntry(verb) {
842
+ const base = this.#irregularVerbs[verb] ? verb : this.#reverseIrregular[verb];
843
+ return base ? this.#irregularVerbs[base] : void 0;
844
+ }
845
+ /**
846
+ * * Add a new base tense conjugation rule.
847
+ * @param rule Pattern to match past/participle form of verbs.
848
+ * @param replacement Replacement pattern for base tense form.
849
+ * @example
850
+ * verbalizer.addBaseRule(/ied$/i, 'y');
851
+ */
852
+ addBaseRule(rule, replacement) {
853
+ this.#baseRules.push([rule, replacement]);
854
+ }
855
+ /**
856
+ * * Add a new past tense conjugation rule.
857
+ * @param rule Pattern to match base verbs.
858
+ * @param replacement Replacement pattern for past tense form.
859
+ * @example
860
+ * verbalizer.addPastRule(/e$/i, 'ed');
861
+ */
862
+ addPastRule(rule, replacement) {
863
+ this.#pastRules.push([rule, replacement]);
864
+ }
865
+ /**
866
+ * * Add a new past participle conjugation rule.
867
+ * @param rule Pattern to match base verbs.
868
+ * @param replacement Replacement pattern for past participle form.
869
+ * @example
870
+ * verbalizer.addParticipleRule(/e$/i, 'ed');
871
+ */
872
+ addParticipleRule(rule, replacement) {
873
+ this.#participleRules.push([rule, replacement]);
874
+ }
875
+ /**
876
+ * * Add a custom irregular verb.
877
+ * @param base Base form of the verb.
878
+ * @param past Past tense form.
879
+ * @param participle Past participle form.
880
+ * @example
881
+ * verbalizer.addIrregular('swim', 'swam', 'swum');
882
+ */
883
+ addIrregular(base, past, participle) {
884
+ const baseLower = base?.toLowerCase();
885
+ const pastLower = past?.toLowerCase();
886
+ const participleLower = participle?.toLowerCase();
887
+ this.#irregularVerbs[baseLower] = {
888
+ base: baseLower,
889
+ past: pastLower,
890
+ participle: participleLower
891
+ };
892
+ this.#reverseIrregular[pastLower] = baseLower;
893
+ this.#reverseIrregular[participleLower] = baseLower;
894
+ }
895
+ /**
896
+ * * Convert a verb to its past tense form.
897
+ * @param verb Base form of the verb.
898
+ * @returns Past tense form of the verb.
899
+ * @example
900
+ * verbalizer.toPast('walk'); // "walked"
901
+ * verbalizer.toPast('run'); // "ran"
902
+ */
903
+ toPast(verb) {
904
+ if (!require_primitives.isNonEmptyString(verb)) return "";
905
+ const lower = verb?.trim()?.toLowerCase();
906
+ const irregularEntry = this.#findIrregularEntry(lower);
907
+ if (irregularEntry) return this.#restoreCase(verb, irregularEntry.past);
908
+ return this.#restoreCase(verb, this.#applyRules(this.#applyBaseRule(lower), this.#pastRules));
909
+ }
910
+ /**
911
+ * * Convert a verb to its past participle form.
912
+ * @param verb Base form of the verb.
913
+ * @returns Past participle form of the verb.
914
+ * @example
915
+ * verbalizer.toParticiple('walk'); // "walked"
916
+ * verbalizer.toParticiple('go'); // "gone"
917
+ */
918
+ toParticiple(verb) {
919
+ if (!require_primitives.isNonEmptyString(verb)) return "";
920
+ const lower = verb?.trim()?.toLowerCase();
921
+ const irregularEntry = this.#findIrregularEntry(lower);
922
+ if (irregularEntry) return this.#restoreCase(verb, irregularEntry.participle);
923
+ return this.#restoreCase(verb, this.#applyRules(this.#applyBaseRule(lower), this.#participleRules));
924
+ }
925
+ /**
926
+ * * Convert a verb to its base form.
927
+ * @param verb Past or past participle form of the verb.
928
+ * @returns Base form of the verb.
929
+ * @example
930
+ * verbalizer.toBase('went'); // "go"
931
+ * verbalizer.toBase('walked'); // "walk"
932
+ */
933
+ toBase(verb) {
934
+ if (!require_primitives.isNonEmptyString(verb)) return "";
935
+ const lower = verb?.trim()?.toLowerCase();
936
+ const irregularEntry = this.#findIrregularEntry(lower);
937
+ if (irregularEntry) return this.#restoreCase(verb, irregularEntry.base);
938
+ return this.#restoreCase(verb, this.#applyBaseRule(lower));
939
+ }
940
+ /**
941
+ * * Check if a given verb is in its past tense form.
942
+ * @param verb Verb to check.
943
+ * @returns True if the verb is in past tense, otherwise false.
944
+ * @example
945
+ * verbalizer.isPast('ran'); // true
946
+ * verbalizer.isPast('run'); // false
947
+ */
948
+ isPast(verb) {
949
+ if (!require_primitives.isNonEmptyString(verb)) return false;
950
+ const lower = verb?.trim()?.toLowerCase();
951
+ return this.toPast(lower) === lower;
952
+ }
953
+ /**
954
+ * * Check if a given verb is in its past participle form.
955
+ * @param verb Verb to check.
956
+ * @returns True if the verb is in past participle form, otherwise false.
957
+ * @example
958
+ * verbalizer.isParticiple('gone'); // true
959
+ * verbalizer.isParticiple('go'); // false
960
+ */
961
+ isParticiple(verb) {
962
+ if (!require_primitives.isNonEmptyString(verb)) return false;
963
+ const lower = verb?.trim()?.toLowerCase();
964
+ return this.toParticiple(lower) === lower;
965
+ }
966
+ /**
967
+ * * Check if a given verb is in its base form.
968
+ * @param verb Verb to check.
969
+ * @returns True if the verb is in base form, otherwise false.
970
+ * @example
971
+ * verbalizer.isBase('run'); // true
972
+ * verbalizer.isBase('ran'); // false
973
+ */
974
+ isBase(verb) {
975
+ if (!require_primitives.isNonEmptyString(verb)) return false;
976
+ const lower = verb?.trim()?.toLowerCase();
977
+ return this.toBase(lower) === lower;
978
+ }
979
+ };
980
+ /**
981
+ * Default shared instance of {@link https://toolbox.nazmul-nhb.dev/docs/classes/Verbalizer Verbalizer}.
982
+ *
983
+ * - Use this when you don’t need multiple configurations.
984
+ * - It comes preloaded with standard conjugation rules and irregular verbs.
985
+ * -
986
+ *
987
+ * @example
988
+ * import { verbalizer } from 'nhb-toolbox';
989
+ *
990
+ * verbalizer.toPast('run'); // "ran"
991
+ * verbalizer.toParticiple('go'); // "gone"
992
+ * verbalizer.toBase('went'); // "go"
993
+ */
994
+ const verbalizer = new Verbalizer();
995
+
996
+ //#endregion
997
+ exports.Verbalizer = Verbalizer;
998
+ exports.verbalizer = verbalizer;