axyseo 2.0.0-alpha.0.0.20 → 2.0.0-alpha.0.0.4

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 (946) hide show
  1. package/.browserslistrc +1 -0
  2. package/.gitattributes +1 -0
  3. package/babel.config.js +3 -0
  4. package/build/index.js +0 -8
  5. package/build/index.js.map +1 -1
  6. package/build/languageProcessing/helpers/highlighting/getMarkingsInSentence.js.map +1 -1
  7. package/build/languageProcessing/helpers/morphology/buildTopicStems.js.map +1 -1
  8. package/build/languageProcessing/helpers/morphology/getAllWordsFromPaper.js.map +1 -1
  9. package/build/languageProcessing/languages/_default/Researcher.js +1 -1
  10. package/build/languageProcessing/languages/_default/Researcher.js.map +1 -1
  11. package/build/languageProcessing/languages/_default/helpers/getStemmer.js +1 -1
  12. package/build/languageProcessing/languages/_default/helpers/getStemmer.js.map +1 -1
  13. package/build/languageProcessing/languages/ar/Researcher.js +1 -1
  14. package/build/languageProcessing/languages/ar/Researcher.js.map +1 -1
  15. package/build/languageProcessing/languages/ar/helpers/getStemmer.js +1 -1
  16. package/build/languageProcessing/languages/ar/helpers/getStemmer.js.map +1 -1
  17. package/build/languageProcessing/languages/ar/helpers/isPassiveSentence.js +1 -1
  18. package/build/languageProcessing/languages/ar/helpers/isPassiveSentence.js.map +1 -1
  19. package/build/languageProcessing/languages/ca/Researcher.js +1 -1
  20. package/build/languageProcessing/languages/ca/Researcher.js.map +1 -1
  21. package/build/languageProcessing/languages/ca/helpers/getStemmer.js +1 -1
  22. package/build/languageProcessing/languages/ca/helpers/getStemmer.js.map +1 -1
  23. package/build/languageProcessing/languages/cs/Researcher.js +1 -1
  24. package/build/languageProcessing/languages/cs/Researcher.js.map +1 -1
  25. package/build/languageProcessing/languages/cs/helpers/getClauses.js +1 -1
  26. package/build/languageProcessing/languages/cs/helpers/getClauses.js.map +1 -1
  27. package/build/languageProcessing/languages/cs/helpers/getStemmer.js +1 -1
  28. package/build/languageProcessing/languages/cs/helpers/getStemmer.js.map +1 -1
  29. package/build/languageProcessing/languages/cs/helpers/internal/getParticiples.js +1 -1
  30. package/build/languageProcessing/languages/cs/helpers/internal/getParticiples.js.map +1 -1
  31. package/build/languageProcessing/languages/cs/values/Clause.js +1 -1
  32. package/build/languageProcessing/languages/cs/values/Clause.js.map +1 -1
  33. package/build/languageProcessing/languages/de/Researcher.js +1 -1
  34. package/build/languageProcessing/languages/de/Researcher.js.map +1 -1
  35. package/build/languageProcessing/languages/de/helpers/calculateFleschReadingScore.js +1 -1
  36. package/build/languageProcessing/languages/de/helpers/calculateFleschReadingScore.js.map +1 -1
  37. package/build/languageProcessing/languages/de/helpers/getClauses.js +1 -1
  38. package/build/languageProcessing/languages/de/helpers/getClauses.js.map +1 -1
  39. package/build/languageProcessing/languages/de/helpers/getStemmer.js +1 -1
  40. package/build/languageProcessing/languages/de/helpers/getStemmer.js.map +1 -1
  41. package/build/languageProcessing/languages/de/helpers/internal/determineStem.js +1 -1
  42. package/build/languageProcessing/languages/de/helpers/internal/determineStem.js.map +1 -1
  43. package/build/languageProcessing/languages/de/helpers/internal/getParticiples.js +1 -1
  44. package/build/languageProcessing/languages/de/helpers/internal/getParticiples.js.map +1 -1
  45. package/build/languageProcessing/languages/de/values/Clause.js +1 -1
  46. package/build/languageProcessing/languages/de/values/Clause.js.map +1 -1
  47. package/build/languageProcessing/languages/el/Researcher.js +1 -1
  48. package/build/languageProcessing/languages/el/Researcher.js.map +1 -1
  49. package/build/languageProcessing/languages/el/helpers/getClauses.js +1 -1
  50. package/build/languageProcessing/languages/el/helpers/getClauses.js.map +1 -1
  51. package/build/languageProcessing/languages/el/helpers/getStemmer.js +1 -1
  52. package/build/languageProcessing/languages/el/helpers/getStemmer.js.map +1 -1
  53. package/build/languageProcessing/languages/el/helpers/internal/getParticiples.js +1 -1
  54. package/build/languageProcessing/languages/el/helpers/internal/getParticiples.js.map +1 -1
  55. package/build/languageProcessing/languages/el/helpers/isPassiveSentence.js +1 -1
  56. package/build/languageProcessing/languages/el/helpers/isPassiveSentence.js.map +1 -1
  57. package/build/languageProcessing/languages/el/values/Clause.js +1 -1
  58. package/build/languageProcessing/languages/el/values/Clause.js.map +1 -1
  59. package/build/languageProcessing/languages/en/Researcher.js +1 -1
  60. package/build/languageProcessing/languages/en/Researcher.js.map +1 -1
  61. package/build/languageProcessing/languages/en/helpers/calculateFleschReadingScore.js +1 -1
  62. package/build/languageProcessing/languages/en/helpers/calculateFleschReadingScore.js.map +1 -1
  63. package/build/languageProcessing/languages/en/helpers/getClauses.js +1 -1
  64. package/build/languageProcessing/languages/en/helpers/getClauses.js.map +1 -1
  65. package/build/languageProcessing/languages/en/helpers/getStemmer.js +1 -1
  66. package/build/languageProcessing/languages/en/helpers/getStemmer.js.map +1 -1
  67. package/build/languageProcessing/languages/en/helpers/internal/determineStem.js +1 -1
  68. package/build/languageProcessing/languages/en/helpers/internal/determineStem.js.map +1 -1
  69. package/build/languageProcessing/languages/en/helpers/internal/getAdjectiveStem.js +1 -1
  70. package/build/languageProcessing/languages/en/helpers/internal/getAdjectiveStem.js.map +1 -1
  71. package/build/languageProcessing/languages/en/helpers/internal/getParticiples.js +1 -1
  72. package/build/languageProcessing/languages/en/helpers/internal/getParticiples.js.map +1 -1
  73. package/build/languageProcessing/languages/en/helpers/internal/getVerbStem.js +1 -1
  74. package/build/languageProcessing/languages/en/helpers/internal/getVerbStem.js.map +1 -1
  75. package/build/languageProcessing/languages/en/values/Clause.js +1 -1
  76. package/build/languageProcessing/languages/en/values/Clause.js.map +1 -1
  77. package/build/languageProcessing/languages/es/Researcher.js +1 -1
  78. package/build/languageProcessing/languages/es/Researcher.js.map +1 -1
  79. package/build/languageProcessing/languages/es/helpers/calculateFleschReadingScore.js +1 -1
  80. package/build/languageProcessing/languages/es/helpers/calculateFleschReadingScore.js.map +1 -1
  81. package/build/languageProcessing/languages/es/helpers/getClauses.js +1 -1
  82. package/build/languageProcessing/languages/es/helpers/getClauses.js.map +1 -1
  83. package/build/languageProcessing/languages/es/helpers/getStemmer.js +1 -1
  84. package/build/languageProcessing/languages/es/helpers/getStemmer.js.map +1 -1
  85. package/build/languageProcessing/languages/es/helpers/internal/checkVerbStemModifications.js +3 -3
  86. package/build/languageProcessing/languages/es/helpers/internal/checkVerbStemModifications.js.map +1 -1
  87. package/build/languageProcessing/languages/es/helpers/internal/getParticiples.js +1 -1
  88. package/build/languageProcessing/languages/es/helpers/internal/getParticiples.js.map +1 -1
  89. package/build/languageProcessing/languages/es/helpers/internal/stem.js +1 -1
  90. package/build/languageProcessing/languages/es/helpers/internal/stem.js.map +1 -1
  91. package/build/languageProcessing/languages/es/values/Clause.js +1 -1
  92. package/build/languageProcessing/languages/es/values/Clause.js.map +1 -1
  93. package/build/languageProcessing/languages/fa/Researcher.js +1 -1
  94. package/build/languageProcessing/languages/fa/Researcher.js.map +1 -1
  95. package/build/languageProcessing/languages/fa/helpers/createBasicWordForms.js +1 -1
  96. package/build/languageProcessing/languages/fa/helpers/createBasicWordForms.js.map +1 -1
  97. package/build/languageProcessing/languages/fa/helpers/getStemmer.js +1 -1
  98. package/build/languageProcessing/languages/fa/helpers/getStemmer.js.map +1 -1
  99. package/build/languageProcessing/languages/fa/helpers/isPassiveSentence.js +1 -1
  100. package/build/languageProcessing/languages/fa/helpers/isPassiveSentence.js.map +1 -1
  101. package/build/languageProcessing/languages/fr/Researcher.js +1 -1
  102. package/build/languageProcessing/languages/fr/Researcher.js.map +1 -1
  103. package/build/languageProcessing/languages/fr/helpers/calculateFleschReadingScore.js +1 -1
  104. package/build/languageProcessing/languages/fr/helpers/calculateFleschReadingScore.js.map +1 -1
  105. package/build/languageProcessing/languages/fr/helpers/getClauses.js +1 -1
  106. package/build/languageProcessing/languages/fr/helpers/getClauses.js.map +1 -1
  107. package/build/languageProcessing/languages/fr/helpers/getStemmer.js +1 -1
  108. package/build/languageProcessing/languages/fr/helpers/getStemmer.js.map +1 -1
  109. package/build/languageProcessing/languages/fr/helpers/internal/getParticiples.js +1 -1
  110. package/build/languageProcessing/languages/fr/helpers/internal/getParticiples.js.map +1 -1
  111. package/build/languageProcessing/languages/fr/helpers/internal/stem.js +1 -1
  112. package/build/languageProcessing/languages/fr/helpers/internal/stem.js.map +1 -1
  113. package/build/languageProcessing/languages/fr/values/Clause.js +1 -1
  114. package/build/languageProcessing/languages/fr/values/Clause.js.map +1 -1
  115. package/build/languageProcessing/languages/he/Researcher.js +1 -1
  116. package/build/languageProcessing/languages/he/Researcher.js.map +1 -1
  117. package/build/languageProcessing/languages/he/helpers/getStemmer.js +1 -1
  118. package/build/languageProcessing/languages/he/helpers/getStemmer.js.map +1 -1
  119. package/build/languageProcessing/languages/he/helpers/isPassiveSentence.js +1 -1
  120. package/build/languageProcessing/languages/he/helpers/isPassiveSentence.js.map +1 -1
  121. package/build/languageProcessing/languages/hu/Researcher.js +1 -1
  122. package/build/languageProcessing/languages/hu/Researcher.js.map +1 -1
  123. package/build/languageProcessing/languages/hu/helpers/getClauses.js +1 -1
  124. package/build/languageProcessing/languages/hu/helpers/getClauses.js.map +1 -1
  125. package/build/languageProcessing/languages/hu/helpers/getStemmer.js +1 -1
  126. package/build/languageProcessing/languages/hu/helpers/getStemmer.js.map +1 -1
  127. package/build/languageProcessing/languages/hu/helpers/internal/getParticiples.js +1 -1
  128. package/build/languageProcessing/languages/hu/helpers/internal/getParticiples.js.map +1 -1
  129. package/build/languageProcessing/languages/hu/helpers/isPassiveSentence.js +1 -1
  130. package/build/languageProcessing/languages/hu/helpers/isPassiveSentence.js.map +1 -1
  131. package/build/languageProcessing/languages/hu/values/Clause.js +1 -1
  132. package/build/languageProcessing/languages/hu/values/Clause.js.map +1 -1
  133. package/build/languageProcessing/languages/id/Researcher.js +1 -1
  134. package/build/languageProcessing/languages/id/Researcher.js.map +1 -1
  135. package/build/languageProcessing/languages/id/helpers/getStemmer.js +1 -1
  136. package/build/languageProcessing/languages/id/helpers/getStemmer.js.map +1 -1
  137. package/build/languageProcessing/languages/id/helpers/internal/stem.js +1 -1
  138. package/build/languageProcessing/languages/id/helpers/internal/stem.js.map +1 -1
  139. package/build/languageProcessing/languages/id/helpers/internal/stemHelpers.js +1 -1
  140. package/build/languageProcessing/languages/id/helpers/internal/stemHelpers.js.map +1 -1
  141. package/build/languageProcessing/languages/id/helpers/isPassiveSentence.js +1 -1
  142. package/build/languageProcessing/languages/id/helpers/isPassiveSentence.js.map +1 -1
  143. package/build/languageProcessing/languages/it/Researcher.js +1 -1
  144. package/build/languageProcessing/languages/it/Researcher.js.map +1 -1
  145. package/build/languageProcessing/languages/it/helpers/getClauses.js +1 -1
  146. package/build/languageProcessing/languages/it/helpers/getClauses.js.map +1 -1
  147. package/build/languageProcessing/languages/it/helpers/getStemmer.js +1 -1
  148. package/build/languageProcessing/languages/it/helpers/getStemmer.js.map +1 -1
  149. package/build/languageProcessing/languages/it/helpers/internal/getParticiples.js +1 -1
  150. package/build/languageProcessing/languages/it/helpers/internal/getParticiples.js.map +1 -1
  151. package/build/languageProcessing/languages/it/helpers/internal/stem.js +1 -1
  152. package/build/languageProcessing/languages/it/helpers/internal/stem.js.map +1 -1
  153. package/build/languageProcessing/languages/it/values/Clause.js +1 -1
  154. package/build/languageProcessing/languages/it/values/Clause.js.map +1 -1
  155. package/build/languageProcessing/languages/ja/Researcher.js +1 -1
  156. package/build/languageProcessing/languages/ja/Researcher.js.map +1 -1
  157. package/build/languageProcessing/languages/ja/helpers/countCharacters.js +1 -1
  158. package/build/languageProcessing/languages/ja/helpers/countCharacters.js.map +1 -1
  159. package/build/languageProcessing/languages/ja/helpers/customGetStemmer.js +1 -1
  160. package/build/languageProcessing/languages/ja/helpers/customGetStemmer.js.map +1 -1
  161. package/build/languageProcessing/languages/ja/helpers/getWords.js +1 -1
  162. package/build/languageProcessing/languages/ja/helpers/getWords.js.map +1 -1
  163. package/build/languageProcessing/languages/nb/Researcher.js +1 -1
  164. package/build/languageProcessing/languages/nb/Researcher.js.map +1 -1
  165. package/build/languageProcessing/languages/nb/helpers/getClauses.js +1 -1
  166. package/build/languageProcessing/languages/nb/helpers/getClauses.js.map +1 -1
  167. package/build/languageProcessing/languages/nb/helpers/getStemmer.js +1 -1
  168. package/build/languageProcessing/languages/nb/helpers/getStemmer.js.map +1 -1
  169. package/build/languageProcessing/languages/nb/helpers/internal/getParticiples.js +1 -1
  170. package/build/languageProcessing/languages/nb/helpers/internal/getParticiples.js.map +1 -1
  171. package/build/languageProcessing/languages/nb/values/Clause.js +1 -1
  172. package/build/languageProcessing/languages/nb/values/Clause.js.map +1 -1
  173. package/build/languageProcessing/languages/nl/Researcher.js +1 -1
  174. package/build/languageProcessing/languages/nl/Researcher.js.map +1 -1
  175. package/build/languageProcessing/languages/nl/helpers/getClauses.js +1 -1
  176. package/build/languageProcessing/languages/nl/helpers/getClauses.js.map +1 -1
  177. package/build/languageProcessing/languages/nl/helpers/getStemmer.js +1 -1
  178. package/build/languageProcessing/languages/nl/helpers/getStemmer.js.map +1 -1
  179. package/build/languageProcessing/languages/nl/helpers/internal/checkExceptionsWithFullForms.js +1 -1
  180. package/build/languageProcessing/languages/nl/helpers/internal/checkExceptionsWithFullForms.js.map +1 -1
  181. package/build/languageProcessing/languages/nl/helpers/internal/detectAndStemRegularParticiple.js +1 -1
  182. package/build/languageProcessing/languages/nl/helpers/internal/detectAndStemRegularParticiple.js.map +1 -1
  183. package/build/languageProcessing/languages/nl/helpers/internal/determineStem.js +1 -1
  184. package/build/languageProcessing/languages/nl/helpers/internal/determineStem.js.map +1 -1
  185. package/build/languageProcessing/languages/nl/helpers/internal/getParticiples.js +1 -1
  186. package/build/languageProcessing/languages/nl/helpers/internal/getParticiples.js.map +1 -1
  187. package/build/languageProcessing/languages/nl/helpers/internal/getStemWordsWithTAndDEnding.js +1 -1
  188. package/build/languageProcessing/languages/nl/helpers/internal/getStemWordsWithTAndDEnding.js.map +1 -1
  189. package/build/languageProcessing/languages/nl/helpers/internal/stem.js +1 -1
  190. package/build/languageProcessing/languages/nl/helpers/internal/stem.js.map +1 -1
  191. package/build/languageProcessing/languages/nl/helpers/internal/stemModificationHelpers.js +1 -1
  192. package/build/languageProcessing/languages/nl/helpers/internal/stemModificationHelpers.js.map +1 -1
  193. package/build/languageProcessing/languages/nl/helpers/internal/stemTOrDFromEndOfWord.js +1 -1
  194. package/build/languageProcessing/languages/nl/helpers/internal/stemTOrDFromEndOfWord.js.map +1 -1
  195. package/build/languageProcessing/languages/nl/values/Clause.js +1 -1
  196. package/build/languageProcessing/languages/nl/values/Clause.js.map +1 -1
  197. package/build/languageProcessing/languages/pl/Researcher.js +1 -1
  198. package/build/languageProcessing/languages/pl/Researcher.js.map +1 -1
  199. package/build/languageProcessing/languages/pl/helpers/getClauses.js +1 -1
  200. package/build/languageProcessing/languages/pl/helpers/getClauses.js.map +1 -1
  201. package/build/languageProcessing/languages/pl/helpers/getStemmer.js +1 -1
  202. package/build/languageProcessing/languages/pl/helpers/getStemmer.js.map +1 -1
  203. package/build/languageProcessing/languages/pl/helpers/internal/getParticiples.js +1 -1
  204. package/build/languageProcessing/languages/pl/helpers/internal/getParticiples.js.map +1 -1
  205. package/build/languageProcessing/languages/pl/values/Clause.js +1 -1
  206. package/build/languageProcessing/languages/pl/values/Clause.js.map +1 -1
  207. package/build/languageProcessing/languages/pt/Researcher.js +1 -1
  208. package/build/languageProcessing/languages/pt/Researcher.js.map +1 -1
  209. package/build/languageProcessing/languages/pt/helpers/getClauses.js +1 -1
  210. package/build/languageProcessing/languages/pt/helpers/getClauses.js.map +1 -1
  211. package/build/languageProcessing/languages/pt/helpers/getStemmer.js +1 -1
  212. package/build/languageProcessing/languages/pt/helpers/getStemmer.js.map +1 -1
  213. package/build/languageProcessing/languages/pt/helpers/internal/getParticiples.js +1 -1
  214. package/build/languageProcessing/languages/pt/helpers/internal/getParticiples.js.map +1 -1
  215. package/build/languageProcessing/languages/pt/helpers/internal/stem.js +1 -1
  216. package/build/languageProcessing/languages/pt/helpers/internal/stem.js.map +1 -1
  217. package/build/languageProcessing/languages/pt/values/Clause.js +1 -1
  218. package/build/languageProcessing/languages/pt/values/Clause.js.map +1 -1
  219. package/build/languageProcessing/languages/ru/Researcher.js +1 -1
  220. package/build/languageProcessing/languages/ru/Researcher.js.map +1 -1
  221. package/build/languageProcessing/languages/ru/helpers/getStemmer.js +1 -1
  222. package/build/languageProcessing/languages/ru/helpers/getStemmer.js.map +1 -1
  223. package/build/languageProcessing/languages/ru/helpers/isPassiveSentence.js +1 -1
  224. package/build/languageProcessing/languages/ru/helpers/isPassiveSentence.js.map +1 -1
  225. package/build/languageProcessing/languages/sk/Researcher.js +1 -1
  226. package/build/languageProcessing/languages/sk/Researcher.js.map +1 -1
  227. package/build/languageProcessing/languages/sk/helpers/getClauses.js +1 -1
  228. package/build/languageProcessing/languages/sk/helpers/getClauses.js.map +1 -1
  229. package/build/languageProcessing/languages/sk/helpers/getStemmer.js +1 -1
  230. package/build/languageProcessing/languages/sk/helpers/getStemmer.js.map +1 -1
  231. package/build/languageProcessing/languages/sk/helpers/internal/getParticiples.js +1 -1
  232. package/build/languageProcessing/languages/sk/helpers/internal/getParticiples.js.map +1 -1
  233. package/build/languageProcessing/languages/sk/values/Clause.js +1 -1
  234. package/build/languageProcessing/languages/sk/values/Clause.js.map +1 -1
  235. package/build/languageProcessing/languages/sv/Researcher.js +1 -1
  236. package/build/languageProcessing/languages/sv/Researcher.js.map +1 -1
  237. package/build/languageProcessing/languages/sv/helpers/getStemmer.js +1 -1
  238. package/build/languageProcessing/languages/sv/helpers/getStemmer.js.map +1 -1
  239. package/build/languageProcessing/languages/sv/helpers/isPassiveSentence.js +1 -1
  240. package/build/languageProcessing/languages/sv/helpers/isPassiveSentence.js.map +1 -1
  241. package/build/languageProcessing/languages/tr/Researcher.js +1 -1
  242. package/build/languageProcessing/languages/tr/Researcher.js.map +1 -1
  243. package/build/languageProcessing/languages/tr/helpers/getStemmer.js +1 -1
  244. package/build/languageProcessing/languages/tr/helpers/getStemmer.js.map +1 -1
  245. package/build/languageProcessing/languages/tr/helpers/internal/stem.js +1 -1
  246. package/build/languageProcessing/languages/tr/helpers/internal/stem.js.map +1 -1
  247. package/build/languageProcessing/languages/tr/helpers/isPassiveSentence.js +1 -1
  248. package/build/languageProcessing/languages/tr/helpers/isPassiveSentence.js.map +1 -1
  249. package/build/parsedPaper/assess/assessments/Assessment.js +2 -14
  250. package/build/parsedPaper/assess/assessments/Assessment.js.map +1 -1
  251. package/build/parsedPaper/build/linguisticParsing/SentenceTokenizer.js.map +1 -1
  252. package/build/parsedPaper/build/tree/metadata/buildTree.js +1 -1
  253. package/build/parsedPaper/build/tree/metadata/buildTree.js.map +1 -1
  254. package/build/scoring/assessments/assessment.js +2 -6
  255. package/build/scoring/assessments/assessment.js.map +1 -1
  256. package/build/scoring/assessments/index.js +5 -5
  257. package/build/scoring/assessments/index.js.map +1 -1
  258. package/build/scoring/assessments/readability/ParagraphTooLongAssessment.js +1 -5
  259. package/build/scoring/assessments/readability/ParagraphTooLongAssessment.js.map +1 -1
  260. package/build/scoring/assessments/readability/SentenceBeginningsAssessment.js +1 -5
  261. package/build/scoring/assessments/readability/SentenceBeginningsAssessment.js.map +1 -1
  262. package/build/scoring/assessments/readability/SentenceLengthInTextAssessment.js +1 -5
  263. package/build/scoring/assessments/readability/SentenceLengthInTextAssessment.js.map +1 -1
  264. package/build/scoring/assessments/readability/TransitionWordsAssessment.js +1 -5
  265. package/build/scoring/assessments/readability/TransitionWordsAssessment.js.map +1 -1
  266. package/build/scoring/assessments/seo/ImageCountAssessment.js +1 -5
  267. package/build/scoring/assessments/seo/ImageCountAssessment.js.map +1 -1
  268. package/build/scoring/assessments/seo/InternalLinksAssessment.js +1 -5
  269. package/build/scoring/assessments/seo/InternalLinksAssessment.js.map +1 -1
  270. package/build/scoring/assessments/seo/IntroductionKeywordAssessment.js +1 -5
  271. package/build/scoring/assessments/seo/IntroductionKeywordAssessment.js.map +1 -1
  272. package/build/scoring/assessments/seo/KeyphraseAssessment.js +1 -5
  273. package/build/scoring/assessments/seo/KeyphraseAssessment.js.map +1 -1
  274. package/build/scoring/assessments/seo/KeyphraseLengthAssessment.js +1 -5
  275. package/build/scoring/assessments/seo/KeyphraseLengthAssessment.js.map +1 -1
  276. package/build/scoring/assessments/seo/KeywordDensityAssessment.js +2 -6
  277. package/build/scoring/assessments/seo/KeywordDensityAssessment.js.map +1 -1
  278. package/build/scoring/assessments/seo/MetaDescriptionKeywordAssessment.js +1 -5
  279. package/build/scoring/assessments/seo/MetaDescriptionKeywordAssessment.js.map +1 -1
  280. package/build/scoring/assessments/seo/MetaDescriptionLengthAssessment.js +1 -5
  281. package/build/scoring/assessments/seo/MetaDescriptionLengthAssessment.js.map +1 -1
  282. package/build/scoring/assessments/seo/MetaTitleKeywordAssessment.js +1 -5
  283. package/build/scoring/assessments/seo/MetaTitleKeywordAssessment.js.map +1 -1
  284. package/build/scoring/assessments/seo/NumberInMetaTitleAssessment.js +3 -8
  285. package/build/scoring/assessments/seo/NumberInMetaTitleAssessment.js.map +1 -1
  286. package/build/scoring/assessments/seo/OutboundLinksAssessment.js +1 -5
  287. package/build/scoring/assessments/seo/OutboundLinksAssessment.js.map +1 -1
  288. package/build/scoring/assessments/seo/PageTitleWidthAssessment.js +3 -8
  289. package/build/scoring/assessments/seo/PageTitleWidthAssessment.js.map +1 -1
  290. package/build/scoring/assessments/seo/SingleH1Assessment.js +1 -5
  291. package/build/scoring/assessments/seo/SingleH1Assessment.js.map +1 -1
  292. package/build/scoring/assessments/seo/SingleTitleAssessment.js +1 -5
  293. package/build/scoring/assessments/seo/SingleTitleAssessment.js.map +1 -1
  294. package/build/scoring/assessments/seo/SubHeadingsKeywordAssessment.js +1 -5
  295. package/build/scoring/assessments/seo/SubHeadingsKeywordAssessment.js.map +1 -1
  296. package/build/scoring/assessments/seo/TextImagesAssessment.js +1 -5
  297. package/build/scoring/assessments/seo/TextImagesAssessment.js.map +1 -1
  298. package/build/scoring/assessments/seo/TextLengthAssessment.js +1 -5
  299. package/build/scoring/assessments/seo/TextLengthAssessment.js.map +1 -1
  300. package/build/scoring/assessments/seo/UrlKeywordAssessment.js +1 -5
  301. package/build/scoring/assessments/seo/UrlKeywordAssessment.js.map +1 -1
  302. package/build/scoring/assessments/seo/UrlLengthAssessment.js +1 -5
  303. package/build/scoring/assessments/seo/UrlLengthAssessment.js.map +1 -1
  304. package/build/scoring/assessors/assessor.js +7 -20
  305. package/build/scoring/assessors/assessor.js.map +1 -1
  306. package/build/scoring/assessors/avadaAssessor.js +5 -6
  307. package/build/scoring/assessors/avadaAssessor.js.map +1 -1
  308. package/build/scoring/assessors/contentAssessor.js +3 -3
  309. package/build/scoring/assessors/contentAssessor.js.map +1 -1
  310. package/build/scoring/assessors/seoAssessor.js +3 -3
  311. package/build/scoring/assessors/seoAssessor.js.map +1 -1
  312. package/build/scoring/helpers/assessments/recommendedKeywordCount.js.map +1 -1
  313. package/eslint.config.mjs +119 -0
  314. package/package.json +2 -13
  315. package/src/bundledPlugins/index.js +5 -0
  316. package/src/bundledPlugins/previouslyUsedKeywords.js +192 -0
  317. package/src/config/diacritics.js +106 -0
  318. package/src/config/getTransliterations.js +1447 -0
  319. package/src/config/transliterationsWPstyle.js +774 -0
  320. package/src/config/wordBoundaries.js +23 -0
  321. package/src/config/wordBoundariesWithoutPunctuation.js +9 -0
  322. package/src/const/analysis.js +41 -0
  323. package/src/errors/invalidType.js +14 -0
  324. package/src/errors/missingArgument.js +14 -0
  325. package/src/helpers/createMeasurementElement.js +40 -0
  326. package/src/helpers/domManipulation.js +65 -0
  327. package/src/helpers/errors.js +26 -0
  328. package/src/helpers/factory.js +219 -0
  329. package/src/helpers/formatNumber.js +12 -0
  330. package/src/helpers/formatString.js +33 -0
  331. package/src/helpers/getLanguagesWithWordComplexity.js +8 -0
  332. package/src/helpers/getLanguagesWithWordFormSupport.js +11 -0
  333. package/src/helpers/getWordComplexityConfig.js +20 -0
  334. package/src/helpers/getWordComplexityHelper.js +20 -0
  335. package/src/helpers/htmlEntities.js +41 -0
  336. package/src/helpers/includesAny.js +19 -0
  337. package/src/helpers/index.js +127 -0
  338. package/src/helpers/shortlinker/Shortlinker.js +75 -0
  339. package/src/helpers/shortlinker/index.js +1 -0
  340. package/src/helpers/shortlinker/singleton.js +68 -0
  341. package/src/helpers/types.js +34 -0
  342. package/src/index.js +60 -0
  343. package/src/languageProcessing/AbstractResearcher.js +366 -0
  344. package/src/languageProcessing/helpers/highlighting/getMarkingsInSentence.js +125 -0
  345. package/src/languageProcessing/helpers/html/getFieldsToMark.js +29 -0
  346. package/src/languageProcessing/helpers/html/getSubheadingTexts.js +47 -0
  347. package/src/languageProcessing/helpers/html/getSubheadings.js +95 -0
  348. package/src/languageProcessing/helpers/html/html.js +176 -0
  349. package/src/languageProcessing/helpers/html/htmlParser.js +145 -0
  350. package/src/languageProcessing/helpers/html/matchParagraphs.js +62 -0
  351. package/src/languageProcessing/helpers/html/normalizeHTML.js +16 -0
  352. package/src/languageProcessing/helpers/image/getAltAttribute.js +20 -0
  353. package/src/languageProcessing/helpers/image/getImagesInTree.js +16 -0
  354. package/src/languageProcessing/helpers/image/imageInText.js +19 -0
  355. package/src/languageProcessing/helpers/index.js +12 -0
  356. package/src/languageProcessing/helpers/language/getLanguage.js +9 -0
  357. package/src/languageProcessing/helpers/link/checkNofollow.js +38 -0
  358. package/src/languageProcessing/helpers/link/getAnchorsFromText.js +32 -0
  359. package/src/languageProcessing/helpers/link/getLinkType.js +32 -0
  360. package/src/languageProcessing/helpers/match/findKeywordFormsInString.js +101 -0
  361. package/src/languageProcessing/helpers/match/isDoubleQuoted.js +13 -0
  362. package/src/languageProcessing/helpers/match/matchTextWithArray.js +36 -0
  363. package/src/languageProcessing/helpers/match/matchTextWithTransliteration.js +58 -0
  364. package/src/languageProcessing/helpers/match/matchTextWithWord.js +45 -0
  365. package/src/languageProcessing/helpers/match/matchWordFormsWithSentence.js +164 -0
  366. package/src/languageProcessing/helpers/match/processExactMatchRequest.js +20 -0
  367. package/src/languageProcessing/helpers/morphology/baseStemmer.js +11 -0
  368. package/src/languageProcessing/helpers/morphology/buildFormRule.js +19 -0
  369. package/src/languageProcessing/helpers/morphology/buildTopicStems.js +169 -0
  370. package/src/languageProcessing/helpers/morphology/createRulesFromArrays.js +45 -0
  371. package/src/languageProcessing/helpers/morphology/exceptionListHelpers.js +65 -0
  372. package/src/languageProcessing/helpers/morphology/findMatchingEndingInArray.js +24 -0
  373. package/src/languageProcessing/helpers/morphology/flattenSortLength.js +14 -0
  374. package/src/languageProcessing/helpers/morphology/getAllWordsFromPaper.js +39 -0
  375. package/src/languageProcessing/helpers/morphology/regexHelpers.js +44 -0
  376. package/src/languageProcessing/helpers/morphology/stemHelpers.js +38 -0
  377. package/src/languageProcessing/helpers/morphology/stemPrefixedFunctionWords.js +31 -0
  378. package/src/languageProcessing/helpers/passiveVoice/periphrastic/directPrecedenceException.js +36 -0
  379. package/src/languageProcessing/helpers/passiveVoice/periphrastic/freeAuxiliaryParticipleOrder/getClausesSplitOnStopWords.js +113 -0
  380. package/src/languageProcessing/helpers/passiveVoice/periphrastic/freeAuxiliaryParticipleOrder/nonDirectParticiplePrecedenceException.js +45 -0
  381. package/src/languageProcessing/helpers/passiveVoice/periphrastic/getClauses.js +231 -0
  382. package/src/languageProcessing/helpers/passiveVoice/periphrastic/getIndicesWithRegex.js +20 -0
  383. package/src/languageProcessing/helpers/passiveVoice/periphrastic/matchRegularParticiples.js +23 -0
  384. package/src/languageProcessing/helpers/passiveVoice/periphrastic/precedenceException.js +40 -0
  385. package/src/languageProcessing/helpers/prominentWords/determineProminentWords.js +238 -0
  386. package/src/languageProcessing/helpers/regex/createRegexFromArray.js +35 -0
  387. package/src/languageProcessing/helpers/regex/createRegexFromDoubleArray.js +34 -0
  388. package/src/languageProcessing/helpers/regex/createWordRegex.js +30 -0
  389. package/src/languageProcessing/helpers/regex/matchStringWithRegex.js +19 -0
  390. package/src/languageProcessing/helpers/regex/searchAndReplaceWithOneRegex.js +14 -0
  391. package/src/languageProcessing/helpers/sanitize/doubleQuotes.js +12 -0
  392. package/src/languageProcessing/helpers/sanitize/filterShortcodesFromTree.js +131 -0
  393. package/src/languageProcessing/helpers/sanitize/mergeListItems.js +24 -0
  394. package/src/languageProcessing/helpers/sanitize/parseSynonyms.js +20 -0
  395. package/src/languageProcessing/helpers/sanitize/quotes.js +46 -0
  396. package/src/languageProcessing/helpers/sanitize/removeEmailAddresses.js +12 -0
  397. package/src/languageProcessing/helpers/sanitize/removePunctuation.js +64 -0
  398. package/src/languageProcessing/helpers/sanitize/removePunctuationExceptQuotes.js +18 -0
  399. package/src/languageProcessing/helpers/sanitize/removeSentenceTerminators.js +13 -0
  400. package/src/languageProcessing/helpers/sanitize/removeURLs.js +13 -0
  401. package/src/languageProcessing/helpers/sanitize/sanitizeLineBreakTag.js +11 -0
  402. package/src/languageProcessing/helpers/sanitize/sanitizeString.js +18 -0
  403. package/src/languageProcessing/helpers/sanitize/stripHTMLTags.js +57 -0
  404. package/src/languageProcessing/helpers/sanitize/stripNonTextTags.js +15 -0
  405. package/src/languageProcessing/helpers/sanitize/stripNumbers.js +21 -0
  406. package/src/languageProcessing/helpers/sanitize/stripSpaces.js +23 -0
  407. package/src/languageProcessing/helpers/sanitize/stripWordBoundaries.js +65 -0
  408. package/src/languageProcessing/helpers/sanitize/unifyWhitespace.js +61 -0
  409. package/src/languageProcessing/helpers/sentence/SentenceTokenizer.js +640 -0
  410. package/src/languageProcessing/helpers/sentence/countSentences.js +20 -0
  411. package/src/languageProcessing/helpers/sentence/getSentences.js +65 -0
  412. package/src/languageProcessing/helpers/sentence/getSentencesFromTree.js +55 -0
  413. package/src/languageProcessing/helpers/sentence/memoizedSentenceTokenizer.js +28 -0
  414. package/src/languageProcessing/helpers/sentence/sentencesLength.js +31 -0
  415. package/src/languageProcessing/helpers/syllables/DeviationFragment.js +112 -0
  416. package/src/languageProcessing/helpers/syllables/countSyllables.js +182 -0
  417. package/src/languageProcessing/helpers/syllables/syllableCountIterator.js +56 -0
  418. package/src/languageProcessing/helpers/syllables/syllableCountStep.js +68 -0
  419. package/src/languageProcessing/helpers/transform/transformWordsWithHyphens.js +17 -0
  420. package/src/languageProcessing/helpers/transliterate/replaceDiacritics.js +22 -0
  421. package/src/languageProcessing/helpers/transliterate/specialCharacterMappings.js +214 -0
  422. package/src/languageProcessing/helpers/transliterate/transliterate.js +20 -0
  423. package/src/languageProcessing/helpers/transliterate/transliterateWPstyle.js +21 -0
  424. package/src/languageProcessing/helpers/url/parseSlug.js +10 -0
  425. package/src/languageProcessing/helpers/url/url.js +172 -0
  426. package/src/languageProcessing/helpers/word/addWordboundary.js +37 -0
  427. package/src/languageProcessing/helpers/word/areWordsInSentence.js +16 -0
  428. package/src/languageProcessing/helpers/word/countMetaDescriptionLength.js +18 -0
  429. package/src/languageProcessing/helpers/word/countWords.js +14 -0
  430. package/src/languageProcessing/helpers/word/createPunctuationTokens.js +42 -0
  431. package/src/languageProcessing/helpers/word/filterWordsFromArray.js +15 -0
  432. package/src/languageProcessing/helpers/word/followsIndex.js +25 -0
  433. package/src/languageProcessing/helpers/word/getAllWordsFromTree.js +23 -0
  434. package/src/languageProcessing/helpers/word/getWords.js +43 -0
  435. package/src/languageProcessing/helpers/word/includesIndex.js +30 -0
  436. package/src/languageProcessing/helpers/word/indices.js +146 -0
  437. package/src/languageProcessing/helpers/word/markWordsInSentences.js +173 -0
  438. package/src/languageProcessing/helpers/word/matchWordInSentence.js +61 -0
  439. package/src/languageProcessing/helpers/word/splitIntoTokens.js +46 -0
  440. package/src/languageProcessing/index.js +91 -0
  441. package/src/languageProcessing/languages/_default/Researcher.js +34 -0
  442. package/src/languageProcessing/languages/_default/helpers/getStemmer.js +11 -0
  443. package/src/languageProcessing/languages/ar/Researcher.js +46 -0
  444. package/src/languageProcessing/languages/ar/config/firstWordExceptions.js +14 -0
  445. package/src/languageProcessing/languages/ar/config/functionWords.js +329 -0
  446. package/src/languageProcessing/languages/ar/config/internal/passiveVerbsWithLongVowel.js +570 -0
  447. package/src/languageProcessing/languages/ar/config/prefixedFunctionWords.js +5 -0
  448. package/src/languageProcessing/languages/ar/config/transitionWords.js +19 -0
  449. package/src/languageProcessing/languages/ar/config/twoPartTransitionWords.js +7 -0
  450. package/src/languageProcessing/languages/ar/helpers/createBasicWordForms.js +32 -0
  451. package/src/languageProcessing/languages/ar/helpers/getStemmer.js +22 -0
  452. package/src/languageProcessing/languages/ar/helpers/internal/stem.js +632 -0
  453. package/src/languageProcessing/languages/ar/helpers/isPassiveSentence.js +33 -0
  454. package/src/languageProcessing/languages/ca/Researcher.js +43 -0
  455. package/src/languageProcessing/languages/ca/config/sentenceLength.js +3 -0
  456. package/src/languageProcessing/languages/ca/config/transitionWords.js +31 -0
  457. package/src/languageProcessing/languages/ca/config/twoPartTransitionWords.js +7 -0
  458. package/src/languageProcessing/languages/ca/helpers/getStemmer.js +11 -0
  459. package/src/languageProcessing/languages/cs/Researcher.js +44 -0
  460. package/src/languageProcessing/languages/cs/config/firstWordExceptions.js +15 -0
  461. package/src/languageProcessing/languages/cs/config/functionWords.js +121 -0
  462. package/src/languageProcessing/languages/cs/config/internal/passiveVoiceAuxiliaries.js +38 -0
  463. package/src/languageProcessing/languages/cs/config/internal/passiveVoiceEndings.js +54 -0
  464. package/src/languageProcessing/languages/cs/config/stopWords.js +42 -0
  465. package/src/languageProcessing/languages/cs/config/transitionWords.js +26 -0
  466. package/src/languageProcessing/languages/cs/config/twoPartTransitionWords.js +8 -0
  467. package/src/languageProcessing/languages/cs/helpers/getClauses.js +26 -0
  468. package/src/languageProcessing/languages/cs/helpers/getStemmer.js +22 -0
  469. package/src/languageProcessing/languages/cs/helpers/internal/getParticiples.js +16 -0
  470. package/src/languageProcessing/languages/cs/helpers/internal/stem.js +499 -0
  471. package/src/languageProcessing/languages/cs/values/Clause.js +34 -0
  472. package/src/languageProcessing/languages/de/Researcher.js +52 -0
  473. package/src/languageProcessing/languages/de/config/firstWordExceptions.js +17 -0
  474. package/src/languageProcessing/languages/de/config/functionWords.js +303 -0
  475. package/src/languageProcessing/languages/de/config/internal/exceptionsParticiplesActive.js +2231 -0
  476. package/src/languageProcessing/languages/de/config/internal/passiveVoiceAuxiliaries.js +96 -0
  477. package/src/languageProcessing/languages/de/config/internal/passiveVoiceIrregulars.js +368 -0
  478. package/src/languageProcessing/languages/de/config/internal/passiveVoiceRegex.js +72 -0
  479. package/src/languageProcessing/languages/de/config/keyphraseLength.js +11 -0
  480. package/src/languageProcessing/languages/de/config/stopWords.js +67 -0
  481. package/src/languageProcessing/languages/de/config/syllables.json +460 -0
  482. package/src/languageProcessing/languages/de/config/transitionWords.js +31 -0
  483. package/src/languageProcessing/languages/de/config/twoPartTransitionWords.js +12 -0
  484. package/src/languageProcessing/languages/de/config/wordComplexity.js +4 -0
  485. package/src/languageProcessing/languages/de/helpers/calculateFleschReadingScore.js +18 -0
  486. package/src/languageProcessing/languages/de/helpers/checkIfWordIsComplex.js +40 -0
  487. package/src/languageProcessing/languages/de/helpers/checkIfWordIsFunction.js +15 -0
  488. package/src/languageProcessing/languages/de/helpers/getClauses.js +25 -0
  489. package/src/languageProcessing/languages/de/helpers/getStemmer.js +22 -0
  490. package/src/languageProcessing/languages/de/helpers/internal/SentenceTokenizer.js +31 -0
  491. package/src/languageProcessing/languages/de/helpers/internal/detectAndStemRegularParticiple.js +128 -0
  492. package/src/languageProcessing/languages/de/helpers/internal/determineStem.js +128 -0
  493. package/src/languageProcessing/languages/de/helpers/internal/getParticiples.js +40 -0
  494. package/src/languageProcessing/languages/de/helpers/internal/stem.js +215 -0
  495. package/src/languageProcessing/languages/de/helpers/memoizedSentenceTokenizer.js +28 -0
  496. package/src/languageProcessing/languages/de/values/Clause.js +85 -0
  497. package/src/languageProcessing/languages/el/Researcher.js +46 -0
  498. package/src/languageProcessing/languages/el/config/firstWordExceptions.js +47 -0
  499. package/src/languageProcessing/languages/el/config/functionWords.js +116 -0
  500. package/src/languageProcessing/languages/el/config/internal/auxiliaries.js +19 -0
  501. package/src/languageProcessing/languages/el/config/internal/morphologicalPassiveSuffixes.js +87 -0
  502. package/src/languageProcessing/languages/el/config/internal/nonPassiveVerbStems.js +138 -0
  503. package/src/languageProcessing/languages/el/config/stopWords.js +854 -0
  504. package/src/languageProcessing/languages/el/config/transitionWords.js +26 -0
  505. package/src/languageProcessing/languages/el/config/twoPartTransitionWords.js +10 -0
  506. package/src/languageProcessing/languages/el/helpers/getClauses.js +25 -0
  507. package/src/languageProcessing/languages/el/helpers/getStemmer.js +21 -0
  508. package/src/languageProcessing/languages/el/helpers/internal/getParticiples.js +20 -0
  509. package/src/languageProcessing/languages/el/helpers/internal/stem.js +368 -0
  510. package/src/languageProcessing/languages/el/helpers/isPassiveSentence.js +38 -0
  511. package/src/languageProcessing/languages/el/values/Clause.js +37 -0
  512. package/src/languageProcessing/languages/en/Researcher.js +46 -0
  513. package/src/languageProcessing/languages/en/config/abbreviations.js +55 -0
  514. package/src/languageProcessing/languages/en/config/firstWordExceptions.js +14 -0
  515. package/src/languageProcessing/languages/en/config/functionWords.js +186 -0
  516. package/src/languageProcessing/languages/en/config/internal/passiveVoiceAuxiliaries.js +44 -0
  517. package/src/languageProcessing/languages/en/config/internal/passiveVoiceIrregulars.js +354 -0
  518. package/src/languageProcessing/languages/en/config/internal/passiveVoiceNonVerbEndingEd.js +3047 -0
  519. package/src/languageProcessing/languages/en/config/regularParticiplesRegex.js +5 -0
  520. package/src/languageProcessing/languages/en/config/stopWords.js +52 -0
  521. package/src/languageProcessing/languages/en/config/syllables.json +86 -0
  522. package/src/languageProcessing/languages/en/config/transitionWords.js +48 -0
  523. package/src/languageProcessing/languages/en/config/twoPartTransitionWords.js +7 -0
  524. package/src/languageProcessing/languages/en/config/wordComplexity.js +5 -0
  525. package/src/languageProcessing/languages/en/helpers/calculateFleschReadingScore.js +18 -0
  526. package/src/languageProcessing/languages/en/helpers/checkIfWordIsComplex.js +43 -0
  527. package/src/languageProcessing/languages/en/helpers/getClauses.js +49 -0
  528. package/src/languageProcessing/languages/en/helpers/getStemmer.js +22 -0
  529. package/src/languageProcessing/languages/en/helpers/internal/determineStem.js +178 -0
  530. package/src/languageProcessing/languages/en/helpers/internal/getAdjectiveStem.js +162 -0
  531. package/src/languageProcessing/languages/en/helpers/internal/getParticiples.js +25 -0
  532. package/src/languageProcessing/languages/en/helpers/internal/getVerbStem.js +237 -0
  533. package/src/languageProcessing/languages/en/values/Clause.js +68 -0
  534. package/src/languageProcessing/languages/es/Researcher.js +48 -0
  535. package/src/languageProcessing/languages/es/config/firstWordExceptions.js +16 -0
  536. package/src/languageProcessing/languages/es/config/functionWords.js +321 -0
  537. package/src/languageProcessing/languages/es/config/internal/passiveVoiceAuxiliaries.js +60 -0
  538. package/src/languageProcessing/languages/es/config/internal/passiveVoiceParticiples.js +7327 -0
  539. package/src/languageProcessing/languages/es/config/sentenceLength.js +3 -0
  540. package/src/languageProcessing/languages/es/config/stopWords.js +33 -0
  541. package/src/languageProcessing/languages/es/config/syllables.json +176 -0
  542. package/src/languageProcessing/languages/es/config/transitionWords.js +40 -0
  543. package/src/languageProcessing/languages/es/config/twoPartTransitionWords.js +10 -0
  544. package/src/languageProcessing/languages/es/config/wordComplexity.js +4 -0
  545. package/src/languageProcessing/languages/es/helpers/calculateFleschReadingScore.js +18 -0
  546. package/src/languageProcessing/languages/es/helpers/checkIfWordIsComplex.js +56 -0
  547. package/src/languageProcessing/languages/es/helpers/getClauses.js +29 -0
  548. package/src/languageProcessing/languages/es/helpers/getStemmer.js +22 -0
  549. package/src/languageProcessing/languages/es/helpers/internal/checkVerbStemModifications.js +41 -0
  550. package/src/languageProcessing/languages/es/helpers/internal/getParticiples.js +35 -0
  551. package/src/languageProcessing/languages/es/helpers/internal/stem.js +793 -0
  552. package/src/languageProcessing/languages/es/values/Clause.js +47 -0
  553. package/src/languageProcessing/languages/fa/Researcher.js +47 -0
  554. package/src/languageProcessing/languages/fa/config/firstWordExceptions.js +12 -0
  555. package/src/languageProcessing/languages/fa/config/functionWords.js +122 -0
  556. package/src/languageProcessing/languages/fa/config/internal/participles.js +1429 -0
  557. package/src/languageProcessing/languages/fa/config/sentenceLength.js +3 -0
  558. package/src/languageProcessing/languages/fa/config/transitionWords.js +20 -0
  559. package/src/languageProcessing/languages/fa/config/twoPartTransitionWords.js +9 -0
  560. package/src/languageProcessing/languages/fa/helpers/createBasicWordForms.js +97 -0
  561. package/src/languageProcessing/languages/fa/helpers/getStemmer.js +13 -0
  562. package/src/languageProcessing/languages/fa/helpers/isPassiveSentence.js +14 -0
  563. package/src/languageProcessing/languages/fr/Researcher.js +46 -0
  564. package/src/languageProcessing/languages/fr/config/firstWordExceptions.js +16 -0
  565. package/src/languageProcessing/languages/fr/config/functionWords.js +281 -0
  566. package/src/languageProcessing/languages/fr/config/internal/exceptionsParticiplesActive.js +1510 -0
  567. package/src/languageProcessing/languages/fr/config/internal/passiveVoiceAuxiliaries.js +108 -0
  568. package/src/languageProcessing/languages/fr/config/internal/passiveVoiceIrregulars.js +565 -0
  569. package/src/languageProcessing/languages/fr/config/stopWords.js +119 -0
  570. package/src/languageProcessing/languages/fr/config/syllables.json +1426 -0
  571. package/src/languageProcessing/languages/fr/config/transitionWords.js +59 -0
  572. package/src/languageProcessing/languages/fr/config/twoPartTransitionWords.js +15 -0
  573. package/src/languageProcessing/languages/fr/config/wordComplexity.js +4 -0
  574. package/src/languageProcessing/languages/fr/helpers/calculateFleschReadingScore.js +18 -0
  575. package/src/languageProcessing/languages/fr/helpers/checkIfWordIsComplex.js +67 -0
  576. package/src/languageProcessing/languages/fr/helpers/getClauses.js +34 -0
  577. package/src/languageProcessing/languages/fr/helpers/getStemmer.js +22 -0
  578. package/src/languageProcessing/languages/fr/helpers/internal/getParticiples.js +72 -0
  579. package/src/languageProcessing/languages/fr/helpers/internal/stem.js +633 -0
  580. package/src/languageProcessing/languages/fr/values/Clause.js +96 -0
  581. package/src/languageProcessing/languages/he/Researcher.js +50 -0
  582. package/src/languageProcessing/languages/he/config/firstWordExceptions.js +13 -0
  583. package/src/languageProcessing/languages/he/config/functionWords.js +564 -0
  584. package/src/languageProcessing/languages/he/config/internal/regularRootsHufal.js +186 -0
  585. package/src/languageProcessing/languages/he/config/internal/regularRootsNifal.js +195 -0
  586. package/src/languageProcessing/languages/he/config/internal/regularRootsPual.js +168 -0
  587. package/src/languageProcessing/languages/he/config/passiveVoice/regularRootsHufal.js +188 -0
  588. package/src/languageProcessing/languages/he/config/passiveVoice/regularRootsNifal.js +197 -0
  589. package/src/languageProcessing/languages/he/config/passiveVoice/regularRootsPual.js +170 -0
  590. package/src/languageProcessing/languages/he/config/prefixedFunctionWords.js +2 -0
  591. package/src/languageProcessing/languages/he/config/sentenceLength.js +3 -0
  592. package/src/languageProcessing/languages/he/config/transitionWords.js +28 -0
  593. package/src/languageProcessing/languages/he/config/twoPartTransitionWords.js +8 -0
  594. package/src/languageProcessing/languages/he/helpers/createBasicWordForms.js +33 -0
  595. package/src/languageProcessing/languages/he/helpers/getStemmer.js +22 -0
  596. package/src/languageProcessing/languages/he/helpers/internal/stem.js +52 -0
  597. package/src/languageProcessing/languages/he/helpers/isPassiveSentence.js +96 -0
  598. package/src/languageProcessing/languages/he/helpers/stem.js +52 -0
  599. package/src/languageProcessing/languages/hu/Researcher.js +48 -0
  600. package/src/languageProcessing/languages/hu/config/firstWordExceptions.js +31 -0
  601. package/src/languageProcessing/languages/hu/config/functionWords.js +284 -0
  602. package/src/languageProcessing/languages/hu/config/internal/auxiliaries.js +97 -0
  603. package/src/languageProcessing/languages/hu/config/internal/morphologicalPassiveAffixes.js +125 -0
  604. package/src/languageProcessing/languages/hu/config/internal/nonPassivesInVaAndVe.js +265 -0
  605. package/src/languageProcessing/languages/hu/config/internal/odikVerbs.js +273 -0
  606. package/src/languageProcessing/languages/hu/config/internal/participles.js +412 -0
  607. package/src/languageProcessing/languages/hu/config/stopWords.js +213 -0
  608. package/src/languageProcessing/languages/hu/config/transitionWords.js +42 -0
  609. package/src/languageProcessing/languages/hu/config/twoPartTransitionWords.js +34 -0
  610. package/src/languageProcessing/languages/hu/helpers/getClauses.js +25 -0
  611. package/src/languageProcessing/languages/hu/helpers/getStemmer.js +22 -0
  612. package/src/languageProcessing/languages/hu/helpers/internal/getParticiples.js +21 -0
  613. package/src/languageProcessing/languages/hu/helpers/internal/stem.js +389 -0
  614. package/src/languageProcessing/languages/hu/helpers/isPassiveSentence.js +54 -0
  615. package/src/languageProcessing/languages/hu/values/Clause.js +41 -0
  616. package/src/languageProcessing/languages/id/Researcher.js +46 -0
  617. package/src/languageProcessing/languages/id/config/firstWordExceptions.js +13 -0
  618. package/src/languageProcessing/languages/id/config/functionWords.js +202 -0
  619. package/src/languageProcessing/languages/id/config/internal/nonPassiveVerbsStartingDi.js +215 -0
  620. package/src/languageProcessing/languages/id/config/transitionWords.js +62 -0
  621. package/src/languageProcessing/languages/id/config/twoPartTransitionWords.js +13 -0
  622. package/src/languageProcessing/languages/id/helpers/getStemmer.js +22 -0
  623. package/src/languageProcessing/languages/id/helpers/internal/stem.js +462 -0
  624. package/src/languageProcessing/languages/id/helpers/internal/stemHelpers.js +78 -0
  625. package/src/languageProcessing/languages/id/helpers/isPassiveSentence.js +39 -0
  626. package/src/languageProcessing/languages/id/helpers/splitIntoTokensCustom.js +47 -0
  627. package/src/languageProcessing/languages/it/Researcher.js +48 -0
  628. package/src/languageProcessing/languages/it/config/firstWordExceptions.js +17 -0
  629. package/src/languageProcessing/languages/it/config/functionWords.js +277 -0
  630. package/src/languageProcessing/languages/it/config/internal/passiveVoiceAuxiliaries.js +98 -0
  631. package/src/languageProcessing/languages/it/config/internal/passiveVoiceParticiples.js +7197 -0
  632. package/src/languageProcessing/languages/it/config/sentenceLength.js +3 -0
  633. package/src/languageProcessing/languages/it/config/stopWords.js +57 -0
  634. package/src/languageProcessing/languages/it/config/syllables.json +573 -0
  635. package/src/languageProcessing/languages/it/config/transitionWords.js +104 -0
  636. package/src/languageProcessing/languages/it/config/twoPartTransitionWords.js +9 -0
  637. package/src/languageProcessing/languages/it/helpers/calculateFleschReadingScore.js +15 -0
  638. package/src/languageProcessing/languages/it/helpers/getClauses.js +32 -0
  639. package/src/languageProcessing/languages/it/helpers/getStemmer.js +22 -0
  640. package/src/languageProcessing/languages/it/helpers/internal/getParticiples.js +34 -0
  641. package/src/languageProcessing/languages/it/helpers/internal/stem.js +436 -0
  642. package/src/languageProcessing/languages/it/values/Clause.js +47 -0
  643. package/src/languageProcessing/languages/ja/Researcher.js +86 -0
  644. package/src/languageProcessing/languages/ja/config/assessmentApplicabilityCharacterCount.js +4 -0
  645. package/src/languageProcessing/languages/ja/config/firstWordExceptions.js +8 -0
  646. package/src/languageProcessing/languages/ja/config/functionWords.js +563 -0
  647. package/src/languageProcessing/languages/ja/config/keyphraseLength.js +16 -0
  648. package/src/languageProcessing/languages/ja/config/metaDescriptionLength.js +4 -0
  649. package/src/languageProcessing/languages/ja/config/paragraphLength.js +10 -0
  650. package/src/languageProcessing/languages/ja/config/sentenceLength.js +4 -0
  651. package/src/languageProcessing/languages/ja/config/subheadingsTooLong.js +18 -0
  652. package/src/languageProcessing/languages/ja/config/textLength.js +47 -0
  653. package/src/languageProcessing/languages/ja/config/topicLength.js +5 -0
  654. package/src/languageProcessing/languages/ja/config/transitionWords.js +354 -0
  655. package/src/languageProcessing/languages/ja/customResearches/findKeyphraseInSEOTitle.js +98 -0
  656. package/src/languageProcessing/languages/ja/customResearches/getKeyphraseLength.js +19 -0
  657. package/src/languageProcessing/languages/ja/customResearches/getWordForms.js +50 -0
  658. package/src/languageProcessing/languages/ja/customResearches/textLength.js +24 -0
  659. package/src/languageProcessing/languages/ja/helpers/countCharacters.js +19 -0
  660. package/src/languageProcessing/languages/ja/helpers/customGetStemmer.js +21 -0
  661. package/src/languageProcessing/languages/ja/helpers/getContentWords.js +21 -0
  662. package/src/languageProcessing/languages/ja/helpers/getWords.js +31 -0
  663. package/src/languageProcessing/languages/ja/helpers/internal/SentenceTokenizer.js +102 -0
  664. package/src/languageProcessing/languages/ja/helpers/internal/createWordForms.js +68 -0
  665. package/src/languageProcessing/languages/ja/helpers/internal/determineStem.js +17 -0
  666. package/src/languageProcessing/languages/ja/helpers/matchTextWithWord.js +53 -0
  667. package/src/languageProcessing/languages/ja/helpers/matchTransitionWords.js +25 -0
  668. package/src/languageProcessing/languages/ja/helpers/memoizedSentenceTokenizer.js +28 -0
  669. package/src/languageProcessing/languages/ja/helpers/splitIntoTokensCustom.js +20 -0
  670. package/src/languageProcessing/languages/ja/helpers/wordsCharacterCount.js +13 -0
  671. package/src/languageProcessing/languages/nb/Researcher.js +45 -0
  672. package/src/languageProcessing/languages/nb/config/firstWordExceptions.js +12 -0
  673. package/src/languageProcessing/languages/nb/config/functionWords.js +106 -0
  674. package/src/languageProcessing/languages/nb/config/internal/participles.js +3127 -0
  675. package/src/languageProcessing/languages/nb/config/internal/passiveVoiceAuxiliaries.js +15 -0
  676. package/src/languageProcessing/languages/nb/config/stopWords.js +39 -0
  677. package/src/languageProcessing/languages/nb/config/transitionWords.js +21 -0
  678. package/src/languageProcessing/languages/nb/config/twoPartTransitionWords.js +10 -0
  679. package/src/languageProcessing/languages/nb/helpers/getClauses.js +28 -0
  680. package/src/languageProcessing/languages/nb/helpers/getStemmer.js +22 -0
  681. package/src/languageProcessing/languages/nb/helpers/internal/getParticiples.js +24 -0
  682. package/src/languageProcessing/languages/nb/helpers/internal/stem.js +133 -0
  683. package/src/languageProcessing/languages/nb/values/Clause.js +43 -0
  684. package/src/languageProcessing/languages/nl/Researcher.js +48 -0
  685. package/src/languageProcessing/languages/nl/config/firstWordExceptions.js +15 -0
  686. package/src/languageProcessing/languages/nl/config/functionWords.js +233 -0
  687. package/src/languageProcessing/languages/nl/config/internal/nonParticiples.js +2515 -0
  688. package/src/languageProcessing/languages/nl/config/internal/passiveVoiceAuxiliaries.js +13 -0
  689. package/src/languageProcessing/languages/nl/config/internal/passiveVoiceIrregulars.js +474 -0
  690. package/src/languageProcessing/languages/nl/config/keyphraseLength.js +10 -0
  691. package/src/languageProcessing/languages/nl/config/stopWords.js +35 -0
  692. package/src/languageProcessing/languages/nl/config/syllables.json +343 -0
  693. package/src/languageProcessing/languages/nl/config/transitionWords.js +22 -0
  694. package/src/languageProcessing/languages/nl/config/twoPartTransitionWords.js +8 -0
  695. package/src/languageProcessing/languages/nl/helpers/calculateFleschReadingScore.js +15 -0
  696. package/src/languageProcessing/languages/nl/helpers/getClauses.js +25 -0
  697. package/src/languageProcessing/languages/nl/helpers/getStemmer.js +22 -0
  698. package/src/languageProcessing/languages/nl/helpers/internal/checkExceptionsWithFullForms.js +128 -0
  699. package/src/languageProcessing/languages/nl/helpers/internal/detectAndStemRegularParticiple.js +324 -0
  700. package/src/languageProcessing/languages/nl/helpers/internal/detectAndStemSuffixes.js +164 -0
  701. package/src/languageProcessing/languages/nl/helpers/internal/determineStem.js +133 -0
  702. package/src/languageProcessing/languages/nl/helpers/internal/getParticiples.js +25 -0
  703. package/src/languageProcessing/languages/nl/helpers/internal/getStemWordsWithTAndDEnding.js +183 -0
  704. package/src/languageProcessing/languages/nl/helpers/internal/stem.js +146 -0
  705. package/src/languageProcessing/languages/nl/helpers/internal/stemModificationHelpers.js +109 -0
  706. package/src/languageProcessing/languages/nl/helpers/internal/stemTOrDFromEndOfWord.js +65 -0
  707. package/src/languageProcessing/languages/nl/values/Clause.js +62 -0
  708. package/src/languageProcessing/languages/pl/Researcher.js +47 -0
  709. package/src/languageProcessing/languages/pl/config/firstWordExceptions.js +12 -0
  710. package/src/languageProcessing/languages/pl/config/functionWords.js +421 -0
  711. package/src/languageProcessing/languages/pl/config/internal/auxiliaries.js +85 -0
  712. package/src/languageProcessing/languages/pl/config/internal/participles.js +26433 -0
  713. package/src/languageProcessing/languages/pl/config/sentenceLength.js +10 -0
  714. package/src/languageProcessing/languages/pl/config/stopWords.js +36 -0
  715. package/src/languageProcessing/languages/pl/config/transitionWords.js +42 -0
  716. package/src/languageProcessing/languages/pl/config/twoPartTransitionWords.js +8 -0
  717. package/src/languageProcessing/languages/pl/helpers/getClauses.js +25 -0
  718. package/src/languageProcessing/languages/pl/helpers/getStemmer.js +22 -0
  719. package/src/languageProcessing/languages/pl/helpers/internal/getParticiples.js +18 -0
  720. package/src/languageProcessing/languages/pl/helpers/internal/stem.js +161 -0
  721. package/src/languageProcessing/languages/pl/values/Clause.js +53 -0
  722. package/src/languageProcessing/languages/pt/Researcher.js +48 -0
  723. package/src/languageProcessing/languages/pt/config/firstWordExceptions.js +15 -0
  724. package/src/languageProcessing/languages/pt/config/functionWords.js +226 -0
  725. package/src/languageProcessing/languages/pt/config/internal/passiveVoiceAuxiliaries.js +66 -0
  726. package/src/languageProcessing/languages/pt/config/internal/passiveVoiceParticiples.js +4088 -0
  727. package/src/languageProcessing/languages/pt/config/sentenceLength.js +3 -0
  728. package/src/languageProcessing/languages/pt/config/stopWords.js +50 -0
  729. package/src/languageProcessing/languages/pt/config/syllables.json +38 -0
  730. package/src/languageProcessing/languages/pt/config/transitionWords.js +34 -0
  731. package/src/languageProcessing/languages/pt/config/twoPartTransitionWords.js +9 -0
  732. package/src/languageProcessing/languages/pt/helpers/calculateFleschReadingScore.js +15 -0
  733. package/src/languageProcessing/languages/pt/helpers/getClauses.js +29 -0
  734. package/src/languageProcessing/languages/pt/helpers/getStemmer.js +22 -0
  735. package/src/languageProcessing/languages/pt/helpers/internal/getParticiples.js +35 -0
  736. package/src/languageProcessing/languages/pt/helpers/internal/stem.js +319 -0
  737. package/src/languageProcessing/languages/pt/values/Clause.js +43 -0
  738. package/src/languageProcessing/languages/ru/Researcher.js +48 -0
  739. package/src/languageProcessing/languages/ru/config/firstWordExceptions.js +14 -0
  740. package/src/languageProcessing/languages/ru/config/fleschReadingEaseScores.js +20 -0
  741. package/src/languageProcessing/languages/ru/config/functionWords.js +519 -0
  742. package/src/languageProcessing/languages/ru/config/internal/participlesShortenedList.js +2914 -0
  743. package/src/languageProcessing/languages/ru/config/internal/passiveVoiceParticiples.js +6295 -0
  744. package/src/languageProcessing/languages/ru/config/sentenceLength.js +3 -0
  745. package/src/languageProcessing/languages/ru/config/syllables.json +19 -0
  746. package/src/languageProcessing/languages/ru/config/transitionWords.js +62 -0
  747. package/src/languageProcessing/languages/ru/config/twoPartTransitionWords.js +14 -0
  748. package/src/languageProcessing/languages/ru/helpers/calculateFleschReadingScore.js +16 -0
  749. package/src/languageProcessing/languages/ru/helpers/getStemmer.js +22 -0
  750. package/src/languageProcessing/languages/ru/helpers/internal/stem.js +288 -0
  751. package/src/languageProcessing/languages/ru/helpers/isPassiveSentence.js +14 -0
  752. package/src/languageProcessing/languages/sk/Researcher.js +46 -0
  753. package/src/languageProcessing/languages/sk/config/firstWordExceptions.js +14 -0
  754. package/src/languageProcessing/languages/sk/config/functionWords.js +855 -0
  755. package/src/languageProcessing/languages/sk/config/internal/nonPassives.js +1074 -0
  756. package/src/languageProcessing/languages/sk/config/internal/passiveVoiceAuxiliaries.js +22 -0
  757. package/src/languageProcessing/languages/sk/config/stopWords.js +34 -0
  758. package/src/languageProcessing/languages/sk/config/transitionWords.js +23 -0
  759. package/src/languageProcessing/languages/sk/config/twoPartTransitionWords.js +10 -0
  760. package/src/languageProcessing/languages/sk/helpers/getClauses.js +26 -0
  761. package/src/languageProcessing/languages/sk/helpers/getStemmer.js +22 -0
  762. package/src/languageProcessing/languages/sk/helpers/internal/getParticiples.js +16 -0
  763. package/src/languageProcessing/languages/sk/helpers/internal/stem.js +319 -0
  764. package/src/languageProcessing/languages/sk/values/Clause.js +39 -0
  765. package/src/languageProcessing/languages/sv/Researcher.js +45 -0
  766. package/src/languageProcessing/languages/sv/config/firstWordExceptions.js +15 -0
  767. package/src/languageProcessing/languages/sv/config/functionWords.js +176 -0
  768. package/src/languageProcessing/languages/sv/config/internal/passiveVerbs.js +10400 -0
  769. package/src/languageProcessing/languages/sv/config/keyphraseLength.js +11 -0
  770. package/src/languageProcessing/languages/sv/config/transitionWords.js +35 -0
  771. package/src/languageProcessing/languages/sv/config/twoPartTransitionWords.js +8 -0
  772. package/src/languageProcessing/languages/sv/helpers/getStemmer.js +22 -0
  773. package/src/languageProcessing/languages/sv/helpers/internal/stem.js +152 -0
  774. package/src/languageProcessing/languages/sv/helpers/isPassiveSentence.js +14 -0
  775. package/src/languageProcessing/languages/tr/Researcher.js +44 -0
  776. package/src/languageProcessing/languages/tr/config/firstWordExceptions.js +13 -0
  777. package/src/languageProcessing/languages/tr/config/functionWords.js +116 -0
  778. package/src/languageProcessing/languages/tr/config/internal/nonPassiveExceptions.js +574 -0
  779. package/src/languageProcessing/languages/tr/config/internal/passiveEndings.js +151 -0
  780. package/src/languageProcessing/languages/tr/config/sentenceLength.js +7 -0
  781. package/src/languageProcessing/languages/tr/config/transitionWords.js +42 -0
  782. package/src/languageProcessing/languages/tr/config/twoPartTransitionWords.js +7 -0
  783. package/src/languageProcessing/languages/tr/helpers/getStemmer.js +22 -0
  784. package/src/languageProcessing/languages/tr/helpers/internal/stem.js +20 -0
  785. package/src/languageProcessing/languages/tr/helpers/isPassiveSentence.js +43 -0
  786. package/src/languageProcessing/researches/altTagCount.js +70 -0
  787. package/src/languageProcessing/researches/countSentencesFromText.js +19 -0
  788. package/src/languageProcessing/researches/findKeyphraseInSEOTitle.js +257 -0
  789. package/src/languageProcessing/researches/findKeywordInFirstParagraph.js +86 -0
  790. package/src/languageProcessing/researches/findTransitionWords.js +123 -0
  791. package/src/languageProcessing/researches/functionWordsInKeyphrase.js +44 -0
  792. package/src/languageProcessing/researches/getAnchorsWithKeyphrase.js +227 -0
  793. package/src/languageProcessing/researches/getFleschReadingScore.js +150 -0
  794. package/src/languageProcessing/researches/getKeywordDensity.js +44 -0
  795. package/src/languageProcessing/researches/getLinkStatistics.js +54 -0
  796. package/src/languageProcessing/researches/getLinks.js +18 -0
  797. package/src/languageProcessing/researches/getLongCenterAlignedTexts.js +37 -0
  798. package/src/languageProcessing/researches/getParagraphLength.js +44 -0
  799. package/src/languageProcessing/researches/getParagraphs.js +18 -0
  800. package/src/languageProcessing/researches/getPassiveVoiceResult.js +129 -0
  801. package/src/languageProcessing/researches/getProminentWordsForInsights.js +48 -0
  802. package/src/languageProcessing/researches/getProminentWordsForInternalLinking.js +119 -0
  803. package/src/languageProcessing/researches/getSentenceBeginnings.js +124 -0
  804. package/src/languageProcessing/researches/getSubheadingTextLengths.js +59 -0
  805. package/src/languageProcessing/researches/getWordForms.js +204 -0
  806. package/src/languageProcessing/researches/h1s.js +10 -0
  807. package/src/languageProcessing/researches/imageCount.js +16 -0
  808. package/src/languageProcessing/researches/index.js +5 -0
  809. package/src/languageProcessing/researches/keyphraseDistribution.js +249 -0
  810. package/src/languageProcessing/researches/keyphraseLength.js +17 -0
  811. package/src/languageProcessing/researches/keywordCount.js +134 -0
  812. package/src/languageProcessing/researches/keywordCountInUrl.js +57 -0
  813. package/src/languageProcessing/researches/matchKeywordInSubheadings.js +62 -0
  814. package/src/languageProcessing/researches/metaDescriptionKeyword.js +85 -0
  815. package/src/languageProcessing/researches/metaDescriptionLength.js +12 -0
  816. package/src/languageProcessing/researches/pageTitleWidth.js +11 -0
  817. package/src/languageProcessing/researches/readingTime.js +82 -0
  818. package/src/languageProcessing/researches/sentences.js +20 -0
  819. package/src/languageProcessing/researches/videoCount.js +32 -0
  820. package/src/languageProcessing/researches/wordComplexity.js +129 -0
  821. package/src/languageProcessing/researches/wordCountInText.js +29 -0
  822. package/src/languageProcessing/values/Clause.js +108 -0
  823. package/src/languageProcessing/values/ProminentWord.js +95 -0
  824. package/src/languageProcessing/values/Sentence.js +111 -0
  825. package/src/languageProcessing/values/index.js +9 -0
  826. package/src/markers/addMark.js +9 -0
  827. package/src/markers/addMarkSingleWord.js +32 -0
  828. package/src/markers/index.js +7 -0
  829. package/src/markers/removeDuplicateMarks.js +27 -0
  830. package/src/markers/removeMarks.js +11 -0
  831. package/src/parse/build/build.js +52 -0
  832. package/src/parse/build/index.js +10 -0
  833. package/src/parse/build/private/adapt.js +113 -0
  834. package/src/parse/build/private/adaptAttributes.js +36 -0
  835. package/src/parse/build/private/alwaysFilterElements.js +75 -0
  836. package/src/parse/build/private/combineIntoImplicitParagraphs.js +130 -0
  837. package/src/parse/build/private/filterBeforeTokenizing.js +32 -0
  838. package/src/parse/build/private/filterHelpers.js +44 -0
  839. package/src/parse/build/private/filterTree.js +42 -0
  840. package/src/parse/build/private/getTextElementPositions.js +184 -0
  841. package/src/parse/build/private/helpers/parseClassAttribute.js +9 -0
  842. package/src/parse/build/private/isPhrasingContent.js +28 -0
  843. package/src/parse/build/private/parseBlocks.js +151 -0
  844. package/src/parse/build/private/tokenize.js +74 -0
  845. package/src/parse/language/LanguageProcessor.js +74 -0
  846. package/src/parse/structure/Heading.js +26 -0
  847. package/src/parse/structure/Node.js +69 -0
  848. package/src/parse/structure/Paragraph.js +48 -0
  849. package/src/parse/structure/Sentence.js +30 -0
  850. package/src/parse/structure/SourceCodeLocation.js +41 -0
  851. package/src/parse/structure/Text.js +27 -0
  852. package/src/parse/structure/Token.js +24 -0
  853. package/src/parse/structure/index.js +16 -0
  854. package/src/parse/traverse/findAllInTree.js +58 -0
  855. package/src/parse/traverse/index.js +12 -0
  856. package/src/parse/traverse/innerText.js +26 -0
  857. package/src/parsedPaper/ParsedPaper.js +92 -0
  858. package/src/parsedPaper/assess/TreeAssessor.js +184 -0
  859. package/src/parsedPaper/assess/assessmentListFactories.js +73 -0
  860. package/src/parsedPaper/assess/assessments/Assessment.js +79 -0
  861. package/src/parsedPaper/assess/assessments/index.js +6 -0
  862. package/src/parsedPaper/assess/assessorFactories.js +104 -0
  863. package/src/parsedPaper/assess/cornerstone/assessmentListFactories.js +47 -0
  864. package/src/parsedPaper/assess/cornerstone/index.js +5 -0
  865. package/src/parsedPaper/assess/index.js +20 -0
  866. package/src/parsedPaper/build/PaperParser.js +105 -0
  867. package/src/parsedPaper/build/linguisticParsing/Sentence.js +89 -0
  868. package/src/parsedPaper/build/linguisticParsing/SentenceTokenizer.js +323 -0
  869. package/src/parsedPaper/build/linguisticParsing/parseText.js +20 -0
  870. package/src/parsedPaper/build/tree/TreeBuilder.js +75 -0
  871. package/src/parsedPaper/build/tree/cleanup/calculateTextIndices.js +190 -0
  872. package/src/parsedPaper/build/tree/cleanup/getElementContent.js +21 -0
  873. package/src/parsedPaper/build/tree/cleanup/postParsing.js +37 -0
  874. package/src/parsedPaper/build/tree/html/HTMLTreeConverter.js +230 -0
  875. package/src/parsedPaper/build/tree/html/buildTree.js +31 -0
  876. package/src/parsedPaper/build/tree/html/htmlConstants.js +37 -0
  877. package/src/parsedPaper/build/tree/index.js +14 -0
  878. package/src/parsedPaper/build/tree/metadata/buildTree.js +32 -0
  879. package/src/parsedPaper/research/TreeResearcher.js +134 -0
  880. package/src/parsedPaper/research/index.js +13 -0
  881. package/src/parsedPaper/research/researches/Headings.js +20 -0
  882. package/src/parsedPaper/research/researches/LinkStatistics.js +128 -0
  883. package/src/parsedPaper/research/researches/Research.js +50 -0
  884. package/src/parsedPaper/research/researches/index.js +1 -0
  885. package/src/parsedPaper/structure/tree/FormattingElement.js +67 -0
  886. package/src/parsedPaper/structure/tree/SourceCodeLocation.js +31 -0
  887. package/src/parsedPaper/structure/tree/TextContainer.js +85 -0
  888. package/src/parsedPaper/structure/tree/index.js +22 -0
  889. package/src/parsedPaper/structure/tree/nodes/Heading.js +26 -0
  890. package/src/parsedPaper/structure/tree/nodes/LeafNode.js +75 -0
  891. package/src/parsedPaper/structure/tree/nodes/List.js +47 -0
  892. package/src/parsedPaper/structure/tree/nodes/ListItem.js +26 -0
  893. package/src/parsedPaper/structure/tree/nodes/MetadataMiscellaneous.js +46 -0
  894. package/src/parsedPaper/structure/tree/nodes/MetadataText.js +26 -0
  895. package/src/parsedPaper/structure/tree/nodes/Node.js +154 -0
  896. package/src/parsedPaper/structure/tree/nodes/Paragraph.js +24 -0
  897. package/src/parsedPaper/structure/tree/nodes/StructuredNode.js +52 -0
  898. package/src/parsedPaper/structure/tree/nodes/index.js +21 -0
  899. package/src/scoring/assessments/assessment.js +63 -0
  900. package/src/scoring/assessments/index.js +58 -0
  901. package/src/scoring/assessments/readability/ParagraphTooLongAssessment.js +173 -0
  902. package/src/scoring/assessments/readability/SentenceBeginningsAssessment.js +132 -0
  903. package/src/scoring/assessments/readability/SentenceLengthInTextAssessment.js +186 -0
  904. package/src/scoring/assessments/readability/TransitionWordsAssessment.js +168 -0
  905. package/src/scoring/assessments/seo/ImageCountAssessment.js +112 -0
  906. package/src/scoring/assessments/seo/InternalLinksAssessment.js +114 -0
  907. package/src/scoring/assessments/seo/IntroductionKeywordAssessment.js +110 -0
  908. package/src/scoring/assessments/seo/KeyphraseAssessment.js +104 -0
  909. package/src/scoring/assessments/seo/KeyphraseLengthAssessment.js +110 -0
  910. package/src/scoring/assessments/seo/KeywordDensityAssessment.js +116 -0
  911. package/src/scoring/assessments/seo/MetaDescriptionKeywordAssessment.js +114 -0
  912. package/src/scoring/assessments/seo/MetaDescriptionLengthAssessment.js +112 -0
  913. package/src/scoring/assessments/seo/MetaTitleKeywordAssessment.js +111 -0
  914. package/src/scoring/assessments/seo/NumberInMetaTitleAssessment.js +107 -0
  915. package/src/scoring/assessments/seo/OutboundLinksAssessment.js +111 -0
  916. package/src/scoring/assessments/seo/PageTitleWidthAssessment.js +104 -0
  917. package/src/scoring/assessments/seo/SingleH1Assessment.js +118 -0
  918. package/src/scoring/assessments/seo/SingleTitleAssessment.js +108 -0
  919. package/src/scoring/assessments/seo/SubHeadingsKeywordAssessment.js +107 -0
  920. package/src/scoring/assessments/seo/TextImagesAssessment.js +144 -0
  921. package/src/scoring/assessments/seo/TextLengthAssessment.js +100 -0
  922. package/src/scoring/assessments/seo/UrlKeywordAssessment.js +111 -0
  923. package/src/scoring/assessments/seo/UrlLengthAssessment.js +103 -0
  924. package/src/scoring/assessors/assessor.js +269 -0
  925. package/src/scoring/assessors/avadaAssessor.js +67 -0
  926. package/src/scoring/assessors/contentAssessor.js +159 -0
  927. package/src/scoring/assessors/index.js +4 -0
  928. package/src/scoring/assessors/seoAssessor.js +57 -0
  929. package/src/scoring/helpers/assessments/checkForTooLongSentences.js +13 -0
  930. package/src/scoring/helpers/assessments/inRange.js +49 -0
  931. package/src/scoring/helpers/assessments/keyphraseLengthFactor.js +10 -0
  932. package/src/scoring/helpers/assessments/recommendedKeywordCount.js +43 -0
  933. package/src/scoring/helpers/index.js +74 -0
  934. package/src/scoring/interpreters/index.js +5 -0
  935. package/src/scoring/interpreters/scoreToRating.js +31 -0
  936. package/src/scoring/renderers/AssessorPresenter.js +360 -0
  937. package/src/scoring/scoreAggregators/ReadabilityScoreAggregator.js +203 -0
  938. package/src/scoring/scoreAggregators/SEOScoreAggregator.js +54 -0
  939. package/src/scoring/scoreAggregators/ScoreAggregator.js +23 -0
  940. package/src/scoring/scoreAggregators/index.js +3 -0
  941. package/src/values/AssessmentResult.js +496 -0
  942. package/src/values/Mark.js +271 -0
  943. package/src/values/Paper.js +425 -0
  944. package/src/values/index.js +9 -0
  945. package/src/vendor/turkishStemmer.js +3435 -0
  946. package/tsconfig.json +15 -0
@@ -0,0 +1,640 @@
1
+ import { isNaN, isUndefined, map } from "lodash";
2
+
3
+ import core from "tokenizer2/core";
4
+
5
+ import { normalize as normalizeQuotes } from "../sanitize/quotes.js";
6
+
7
+ import abbreviations from "../../languages/en/config/abbreviations";
8
+
9
+ import createRegexFromArray from "../regex/createRegexFromArray";
10
+ import wordBoundaries from "../../../config/wordBoundaries";
11
+
12
+ // All characters that indicate a sentence delimiter.
13
+ const fullStop = ".";
14
+
15
+ const fullStopRegex = new RegExp( "^[" + fullStop + "]$" );
16
+ const smallerThanContentRegex = /^<[^><]*$/;
17
+ const htmlStartRegex = /^<([^>\s/]+)[^>]*>$/mi;
18
+ const htmlEndRegex = /^<\/([^>\s]+)[^>]*>$/mi;
19
+
20
+ const blockStartRegex = /^\s*[[({]\s*$/;
21
+ const blockEndRegex = /^\s*[\])}]\s*$/;
22
+
23
+ const abbreviationsPreparedForRegex = abbreviations.map( ( abbreviation ) => abbreviation.replace( ".", "\\." ) );
24
+ const abbreviationsRegex = createRegexFromArray( abbreviationsPreparedForRegex );
25
+
26
+ const wordBoundariesForRegex = "(^|$|[" + wordBoundaries().map( ( boundary ) => "\\" + boundary ).join( "" ) + "])";
27
+ const lastCharacterPartOfInitialsRegex = new RegExp( wordBoundariesForRegex + "[A-Za-z]$" );
28
+
29
+ // Constants to be used in isValidTagPair.
30
+ // A regex to get the tag type.
31
+ const tagTypeRegex = /<\/?([^\s]+?)(\s|>)/;
32
+ // Semantic tags (as opposed to style tags) are tags that are used to structure the text.
33
+ const semanticTags = [ "p", "div", "h1", "h2", "h3", "h4", "h5", "h6", "span", "li", "main" ];
34
+
35
+ /**
36
+ * Class for tokenizing a (html) text into sentences.
37
+ */
38
+ export default class SentenceTokenizer {
39
+ /**
40
+ * Constructor
41
+ * @constructor
42
+ */
43
+ constructor() {
44
+ /*
45
+ * \u2026 - ellipsis.
46
+ * \u06D4 - Urdu full stop.
47
+ * \u061f - Arabic question mark.
48
+ */
49
+ this.sentenceDelimiters = "”〞〟„』›»’‛`\"?!\u2026\u06d4\u061f";
50
+ }
51
+
52
+ /**
53
+ * Gets the sentence delimiters.
54
+ *
55
+ * @returns {string} The sentence delimiters.
56
+ */
57
+ getSentenceDelimiters() {
58
+ return this.sentenceDelimiters;
59
+ }
60
+
61
+ /**
62
+ * Returns whether or not a certain character is a number.
63
+ *
64
+ * @param {string} character The character to check.
65
+ * @returns {boolean} Whether or not the character is a capital letter.
66
+ */
67
+ isNumber( character ) {
68
+ return ! isNaN( parseInt( character, 10 ) );
69
+ }
70
+
71
+ /**
72
+ * Returns whether or not a given HTML tag is a break tag.
73
+ *
74
+ * @param {string} htmlTag The HTML tag to check.
75
+ * @returns {boolean} Whether or not the given HTML tag is a break tag.
76
+ */
77
+ isBreakTag( htmlTag ) {
78
+ return /<\/?br/.test( htmlTag );
79
+ }
80
+
81
+ /**
82
+ * Returns whether or not a given character is quotation mark.
83
+ *
84
+ * @param {string} character The character to check.
85
+ * @returns {boolean} Whether or not the given character is a quotation mark.
86
+ */
87
+ isQuotation( character ) {
88
+ character = normalizeQuotes( character );
89
+
90
+ return "'" === character ||
91
+ "\"" === character;
92
+ }
93
+
94
+ /**
95
+ * A mock definition of this function. This function is only used in extensions for languages that use an ordinal dot.
96
+ *
97
+ * @returns {boolean} Always returns false as it is a language specific implementation if a language has an ordinal dot.
98
+ */
99
+ endsWithOrdinalDot() {
100
+ return false;
101
+ }
102
+
103
+ /**
104
+ * Returns whether or not a given character is a punctuation mark that can be at the beginning
105
+ * of a sentence, like ¿ and ¡ used in Spanish.
106
+ *
107
+ * @param {string} character The character to check.
108
+ * @returns {boolean} Whether or not the given character is a punctuation mark.
109
+ */
110
+ isPunctuation( character ) {
111
+ return "¿" === character ||
112
+ "¡" === character;
113
+ }
114
+
115
+ /**
116
+ * Removes duplicate whitespace from a given text.
117
+ *
118
+ * @param {string} text The text with duplicate whitespace.
119
+ * @returns {string} The text without duplicate whitespace.
120
+ */
121
+ removeDuplicateWhitespace( text ) {
122
+ return text.replace( /\s+/, " " );
123
+ }
124
+
125
+ /**
126
+ * Returns whether or not a certain character is a capital letter.
127
+ *
128
+ * @param {string} character The character to check.
129
+ * @returns {boolean} Whether or not the character is a capital letter.
130
+ */
131
+ isCapitalLetter( character ) {
132
+ return character !== character.toLocaleLowerCase();
133
+ }
134
+
135
+ /**
136
+ * Checks whether the given character is a smaller than sign.
137
+ *
138
+ * This function is used to make sure that tokenizing the content after
139
+ * the smaller than sign works as expected.
140
+ * E.g. 'A sentence. < Hello world!' = ['A sentence.', '< Hello world!'].
141
+ *
142
+ * @param {string} character The character to check.
143
+ * @returns {boolean} Whether the character is a smaller than sign ('<') or not.
144
+ */
145
+ isSmallerThanSign( character ) {
146
+ return character === "<";
147
+ }
148
+
149
+ /**
150
+ * Retrieves the next two characters from an array with the two next tokens.
151
+ *
152
+ * @param {Array} nextTokens The two next tokens. Might be undefined.
153
+ * @returns {string} The next two characters.
154
+ */
155
+ getNextTwoCharacters( nextTokens ) {
156
+ let next = "";
157
+
158
+ if ( ! isUndefined( nextTokens[ 0 ] ) ) {
159
+ next += nextTokens[ 0 ].src;
160
+ }
161
+
162
+ if ( ! isUndefined( nextTokens[ 1 ] ) ) {
163
+ next += nextTokens[ 1 ].src;
164
+ }
165
+
166
+ next = this.removeDuplicateWhitespace( next );
167
+
168
+ return next;
169
+ }
170
+
171
+ /**
172
+ * Checks whether a character is from a language that's written from right to left.
173
+ * These languages don't have capital letter forms. Therefore any letter from these languages is a
174
+ * potential sentence beginning.
175
+ *
176
+ * @param {string} letter The letter to check.
177
+ *
178
+ * @returns {boolean} Whether the letter is from an LTR language.
179
+ */
180
+ isLetterFromSpecificLanguage( letter ) {
181
+ const ltrLetterRanges = [
182
+ // Hebrew characters.
183
+ /^[\u0590-\u05fe]+$/i,
184
+ // Arabic characters (used for Arabic, Farsi, Urdu).
185
+ /^[\u0600-\u06FF]+$/i,
186
+ // Additional Farsi characters.
187
+ /^[\uFB8A\u067E\u0686\u06AF]+$/i,
188
+ ];
189
+
190
+ return (
191
+ ltrLetterRanges.some( ltrLetterRange => ltrLetterRange.test( letter ) )
192
+ );
193
+ }
194
+
195
+ /**
196
+ * Checks if the sentenceBeginning beginning is a valid beginning.
197
+ *
198
+ * @param {string} sentenceBeginning The beginning of the sentence to validate.
199
+ * @returns {boolean} Returns true if it is a valid beginning, false if it is not.
200
+ */
201
+ isValidSentenceBeginning( sentenceBeginning ) {
202
+ return ( this.isCapitalLetter( sentenceBeginning ) ||
203
+ this.isLetterFromSpecificLanguage( sentenceBeginning ) ||
204
+ this.isNumber( sentenceBeginning ) ||
205
+ this.isQuotation( sentenceBeginning ) ||
206
+ this.isPunctuation( sentenceBeginning ) ||
207
+ this.isSmallerThanSign( sentenceBeginning ) );
208
+ }
209
+
210
+ /**
211
+ * Checks if the token is a valid sentence start.
212
+ *
213
+ * @param {Object} token The token to validate.
214
+ * @returns {boolean} Returns true if the token is valid sentence start, false if it is not.
215
+ */
216
+ isSentenceStart( token ) {
217
+ return ( ! isUndefined( token ) && (
218
+ "html-start" === token.type ||
219
+ "html-end" === token.type ||
220
+ "block-start" === token.type
221
+ ) );
222
+ }
223
+
224
+ /**
225
+ * Checks if the token is a valid sentence ending. A valid sentence ending is either a full stop or another
226
+ * delimiter such as "?", "!", etc.
227
+ *
228
+ * @param {Object} token The token to validate.
229
+ * @returns {boolean} Returns true if the token is valid sentence ending, false if it is not.
230
+ */
231
+ isSentenceEnding( token ) {
232
+ return (
233
+ ! isUndefined( token ) &&
234
+ ( token.type === "full-stop" || token.type === "sentence-delimiter" )
235
+ );
236
+ }
237
+
238
+ /**
239
+ * Checks if a full stop is part of a person's initials.
240
+ *
241
+ * Tests if tokens exist. Then tests if the tokens are of the right type.
242
+ * For previous token, it checks if the sentence ends with a single letter.
243
+ * For nextToken it checks if it is a single letter.
244
+ * Checks if next token is followed by a full stop.
245
+ *
246
+ * @param {object} token The current token (must be a full stop).
247
+ * @param {object} previousToken The token before the full stop.
248
+ * @param {object} nextToken The token following the full stop.
249
+ * @param {object} secondToNextToken The second token after the full stop.
250
+ * @returns {boolean} True if a full stop is part of a person's initials, False if the full stop is not part of a person's initials.
251
+ */
252
+ isPartOfPersonInitial( token, previousToken, nextToken, secondToNextToken ) {
253
+ return ( ! isUndefined( token ) &&
254
+ ! isUndefined( nextToken ) &&
255
+ ! isUndefined( secondToNextToken ) &&
256
+ ! isUndefined( previousToken ) &&
257
+ token.type === "full-stop" &&
258
+ previousToken.type === "sentence" &&
259
+ lastCharacterPartOfInitialsRegex.test( previousToken.src ) &&
260
+ nextToken.type === "sentence" &&
261
+ nextToken.src.trim().length === 1 &&
262
+ secondToNextToken.type === "full-stop"
263
+ );
264
+ }
265
+
266
+ /**
267
+ * Tokens that represent a '<', followed by content until it enters another '<' or '>'
268
+ * gets another pass by the tokenizer.
269
+ *
270
+ * @param {Object} token A token of type 'smaller-than-sign-content'.
271
+ * @param {string[]} tokenSentences The current array of found sentences. Sentences may get added by this method.
272
+ * @param {string} currentSentence The current sentence. Sentence parts may get appended by this method.
273
+ * @returns {{tokenSentences, currentSentence}} The found sentences and the current sentence, appended when necessary.
274
+ */
275
+ tokenizeSmallerThanContent( token, tokenSentences, currentSentence ) {
276
+ /*
277
+ Remove the '<' from the text, to avoid matching this rule
278
+ recursively again and again.
279
+ We add it again later on.
280
+ */
281
+ const localText = token.src.substring( 1 );
282
+
283
+ // Tokenize the current smaller-than-content token without the first '<'.
284
+ const tokenizerResult = this.createTokenizer();
285
+ this.tokenize( tokenizerResult.tokenizer, localText );
286
+ const localSentences = this.getSentencesFromTokens( tokenizerResult.tokens, false );
287
+
288
+ localSentences[ 0 ] = isUndefined( localSentences[ 0 ] ) ? "<" : "<" + localSentences[ 0 ];
289
+
290
+ /*
291
+ * When the first sentence has a valid sentence beginning.
292
+ * Add the currently build sentence to the sentences.
293
+ * Start building the next sentence.
294
+ */
295
+ if ( this.isValidSentenceBeginning( localSentences[ 0 ] ) ) {
296
+ tokenSentences.push( currentSentence );
297
+ currentSentence = "";
298
+ }
299
+ currentSentence += localSentences[ 0 ];
300
+
301
+ if ( localSentences.length > 1 ) {
302
+ /*
303
+ There is a new sentence after the first,
304
+ add and reset the current sentence.
305
+ */
306
+ tokenSentences.push( currentSentence );
307
+ currentSentence = "";
308
+
309
+ // Remove the first sentence (we do not need to add it again).
310
+ localSentences.shift();
311
+ // Last sentence gets special treatment.
312
+ const lastSentence = localSentences.pop();
313
+
314
+ // Add the remaining found sentences.
315
+ localSentences.forEach( sentence => {
316
+ tokenSentences.push( sentence );
317
+ } );
318
+
319
+ const sentenceEndRegex = new RegExp( "[" + fullStop + this.getSentenceDelimiters() + "]$" );
320
+
321
+ // Check if the last sentence has a valid sentence ending.
322
+ if ( lastSentence.match( sentenceEndRegex ) ) {
323
+ // If so, add it as a sentence.
324
+ tokenSentences.push( lastSentence );
325
+ } else {
326
+ // If not, start making a new one.
327
+ currentSentence = lastSentence;
328
+ }
329
+ }
330
+ return {
331
+ tokenSentences,
332
+ currentSentence,
333
+ };
334
+ }
335
+
336
+ /**
337
+ * Creates a tokenizer.
338
+ *
339
+ * @returns {Object} The tokenizer and the tokens.
340
+ */
341
+ createTokenizer() {
342
+ const sentenceDelimiterRegex = new RegExp( "^[" + this.getSentenceDelimiters() + "]$" );
343
+ const sentenceRegex = new RegExp( "^[^" + fullStop + this.getSentenceDelimiters() + "<\\(\\)\\[\\]]+$" );
344
+
345
+ const tokens = [];
346
+ const tokenizer = core( function( token ) {
347
+ tokens.push( token );
348
+ } );
349
+
350
+ tokenizer.addRule( fullStopRegex, "full-stop" );
351
+ tokenizer.addRule( smallerThanContentRegex, "smaller-than-sign-content" );
352
+ tokenizer.addRule( htmlStartRegex, "html-start" );
353
+ tokenizer.addRule( htmlEndRegex, "html-end" );
354
+ tokenizer.addRule( blockStartRegex, "block-start" );
355
+ tokenizer.addRule( blockEndRegex, "block-end" );
356
+ tokenizer.addRule( sentenceDelimiterRegex, "sentence-delimiter" );
357
+ tokenizer.addRule( sentenceRegex, "sentence" );
358
+
359
+ return {
360
+ tokenizer,
361
+ tokens,
362
+ };
363
+ }
364
+
365
+ /**
366
+ * Tokenizes the given text using the given tokenizer.
367
+ *
368
+ * @param {Object} tokenizer The tokenizer to use.
369
+ * @param {string} text The text to tokenize.
370
+ * @returns {void}
371
+ */
372
+ tokenize( tokenizer, text ) {
373
+ tokenizer.onText( text );
374
+
375
+ try {
376
+ tokenizer.end();
377
+ } catch ( e ) {
378
+ console.error( "Tokenizer end error:", e, e.tokenizer2 );
379
+ }
380
+ }
381
+
382
+ /**
383
+ * Checks if a string ends with an abbreviation.
384
+ * @param {string} currentSentence A (part of) a sentence.
385
+ * @returns {boolean} True if the string ends with an abbreviation that is in abbreviations.js. Otherwise, False.
386
+ */
387
+ endsWithAbbreviation( currentSentence ) {
388
+ const matchedAbbreviations = currentSentence.match( abbreviationsRegex );
389
+
390
+ if ( ! matchedAbbreviations ) {
391
+ return false;
392
+ }
393
+
394
+ const lastAbbreviation = matchedAbbreviations.pop();
395
+ return currentSentence.endsWith( lastAbbreviation );
396
+ }
397
+
398
+ /**
399
+ * Checks whether the given tokens are a valid html tag pair.
400
+ * Note that this method is not a full html tag validator. It should be replaced with a better solution once the html parser is implemented.
401
+ *
402
+ * @param {object} firstToken The first token to check. It is asserted that this token contains/is an opening html tag.
403
+ * @param {object} lastToken The last token to check. It is asserted that this token contains/is a closing html tag.
404
+ *
405
+ * @returns {boolean} True if the tokens are a valid html tag pair. Otherwise, False.
406
+ */
407
+ isValidTagPair( firstToken, lastToken ) {
408
+ const firstTokenText = firstToken.src;
409
+ const lastTokenText = lastToken.src;
410
+
411
+ // Get the tag types.
412
+ const firstTagType = firstTokenText.match( tagTypeRegex )[ 1 ];
413
+ const lastTagType = lastTokenText.match( tagTypeRegex )[ 1 ];
414
+
415
+
416
+ // Check if the tags are the same and if they are a semantic tag (p, div, h1, h2, h3, h4, h5, h6, span).
417
+ return firstTagType === lastTagType && semanticTags.includes( firstTagType );
418
+ }
419
+
420
+ /**
421
+ * Returns an array of sentences for a given array of tokens, assumes that the text has already been split into blocks.
422
+ *
423
+ * @param {Object[]} tokenArray The tokens from the sentence tokenizer.
424
+ * @param {boolean} [trimSentences=true] Whether to trim the sentences at the end or not.
425
+ *
426
+ * @returns {string[]} A list of sentences.
427
+ */
428
+ getSentencesFromTokens( tokenArray, trimSentences = true ) {
429
+ let tokenSentences = [], currentSentence = "", nextSentenceStart, sliced;
430
+
431
+ // Drop the first and last HTML tag if both are present.
432
+ do {
433
+ sliced = false;
434
+ const firstToken = tokenArray[ 0 ];
435
+ const lastToken = tokenArray[ tokenArray.length - 1 ];
436
+
437
+ if ( firstToken && lastToken && firstToken.type === "html-start" &&
438
+ lastToken.type === "html-end" && this.isValidTagPair( firstToken, lastToken ) ) {
439
+ tokenArray = tokenArray.slice( 1, tokenArray.length - 1 );
440
+
441
+ sliced = true;
442
+ }
443
+ } while ( sliced && tokenArray.length > 1 );
444
+
445
+ tokenArray.forEach( ( token, i ) => {
446
+ let hasNextSentence, nextCharacters, tokenizeResults;
447
+ const nextToken = tokenArray[ i + 1 ];
448
+ const previousToken = tokenArray[ i - 1 ];
449
+ const secondToNextToken = tokenArray[ i + 2 ];
450
+ nextCharacters = this.getNextTwoCharacters( [ nextToken, secondToNextToken ] );
451
+
452
+ // For a new sentence we need to check the next two characters.
453
+ hasNextSentence = nextCharacters.length >= 2;
454
+ nextSentenceStart = hasNextSentence ? nextCharacters[ 1 ] : "";
455
+
456
+ switch ( token.type ) {
457
+ case "html-start":
458
+ case "html-end":
459
+ if ( this.isBreakTag( token.src ) ) {
460
+ tokenSentences.push( currentSentence );
461
+ currentSentence = "";
462
+ } else {
463
+ currentSentence += token.src;
464
+ }
465
+ break;
466
+
467
+ case "smaller-than-sign-content":
468
+ tokenizeResults = this.tokenizeSmallerThanContent( token, tokenSentences, currentSentence );
469
+ tokenSentences = tokenizeResults.tokenSentences;
470
+ currentSentence = tokenizeResults.currentSentence;
471
+ break;
472
+ case "sentence":
473
+ currentSentence += token.src;
474
+ break;
475
+ case "sentence-delimiter":
476
+ currentSentence += token.src;
477
+
478
+ /*
479
+ * Only split text into sentences if:
480
+ * the next token is defined, AND
481
+ * the next token type is neither "block-end" nor "sentence-delimiter", AND
482
+ * the next token first character is a white space
483
+ */
484
+ if ( ! isUndefined( nextToken ) &&
485
+ "block-end" !== nextToken.type &&
486
+ "sentence-delimiter" !== nextToken.type &&
487
+ this.isCharacterASpace( nextToken.src[ 0 ] ) ) {
488
+ // Don't split on quotation marks unless they're preceded by a full stop.
489
+ if ( this.isQuotation( token.src ) && previousToken && previousToken.src !== "." ) {
490
+ break;
491
+ }
492
+ /*
493
+ * Only split on ellipsis or quotation marks when:
494
+ * a) There is a next sentence, and the next character is a valid sentence beginning preceded by a white space, OR
495
+ * b) The next token is a sentence start
496
+ */
497
+ if ( this.isQuotation( token.src ) || token.src === "…" ) {
498
+ currentSentence = this.getValidSentence( hasNextSentence,
499
+ nextSentenceStart,
500
+ nextCharacters,
501
+ nextToken,
502
+ tokenSentences,
503
+ currentSentence );
504
+ } else {
505
+ tokenSentences.push( currentSentence );
506
+ currentSentence = "";
507
+ }
508
+ }
509
+ break;
510
+
511
+ case "full-stop":
512
+ currentSentence += token.src;
513
+ nextCharacters = this.getNextTwoCharacters( [ nextToken, secondToNextToken ] );
514
+
515
+ // For a new sentence we need to check the next two characters.
516
+ hasNextSentence = nextCharacters.length >= 2;
517
+ nextSentenceStart = hasNextSentence ? nextCharacters[ 1 ] : "";
518
+
519
+ // If the current sentence ends with an abbreviation, the full stop does not split the sentence.
520
+ if ( this.endsWithAbbreviation( currentSentence ) ) {
521
+ break;
522
+ }
523
+
524
+ // It should not split the text if the first character of the potential next sentence is a number.
525
+ if ( hasNextSentence && this.isNumber( nextCharacters[ 0 ] ) ) {
526
+ break;
527
+ }
528
+
529
+ // If the full stop is part of a person's initials, don't split sentence.
530
+ if ( this.isPartOfPersonInitial( token, previousToken, nextToken, secondToNextToken ) ) {
531
+ break;
532
+ }
533
+
534
+ // If the full stop is an ordinal dot (in German), then don't break the sentence.
535
+ // This check should be done after hasNextSentence && this.isNumber( nextCharacters[ 0 ] ) (above).
536
+ // Because otherwise it could break before that test.
537
+ if ( this.endsWithOrdinalDot( currentSentence ) ) {
538
+ break;
539
+ }
540
+
541
+ /*
542
+ * Only split on full stop when:
543
+ * a) There is a next sentence, and the next character is a valid sentence beginning preceded by a white space, OR
544
+ * b) The next token is a sentence start
545
+ */
546
+ currentSentence = this.getValidSentence( hasNextSentence,
547
+ nextSentenceStart,
548
+ nextCharacters,
549
+ nextToken,
550
+ tokenSentences,
551
+ currentSentence );
552
+
553
+ break;
554
+
555
+ case "block-start":
556
+ currentSentence += token.src;
557
+ break;
558
+
559
+ case "block-end":
560
+ currentSentence += token.src;
561
+
562
+ nextCharacters = this.getNextTwoCharacters( [ nextToken, secondToNextToken ] );
563
+
564
+ // For a new sentence we need to check the next two characters.
565
+ hasNextSentence = nextCharacters.length >= 2;
566
+ nextSentenceStart = hasNextSentence ? nextCharacters[ 0 ] : "";
567
+
568
+ /* Don't split if:
569
+ * - The next character is a number. For example: IPv4-numbers.
570
+ * - The block end is preceded by a valid sentence ending, but not followed by a valid sentence beginning.
571
+ */
572
+ if (
573
+ hasNextSentence && this.isNumber( nextCharacters[ 0 ] ) ||
574
+ ( this.isSentenceEnding( previousToken ) &&
575
+ ( ! ( this.isValidSentenceBeginning( nextSentenceStart ) || this.isSentenceStart( nextToken ) ) ) )
576
+ ) {
577
+ break;
578
+ }
579
+
580
+ /*
581
+ * Split if:
582
+ * - The block end is preceded by a sentence ending and followed by a valid sentence beginning.
583
+ */
584
+ if (
585
+ this.isSentenceEnding( previousToken ) &&
586
+ ( this.isSentenceStart( nextToken ) || this.isValidSentenceBeginning( nextSentenceStart ) )
587
+ ) {
588
+ tokenSentences.push( currentSentence );
589
+ currentSentence = "";
590
+ }
591
+ break;
592
+ }
593
+ } );
594
+
595
+ if ( "" !== currentSentence ) {
596
+ tokenSentences.push( currentSentence );
597
+ }
598
+
599
+ if ( trimSentences ) {
600
+ tokenSentences = map( tokenSentences, function( sentence ) {
601
+ return sentence.trim();
602
+ } );
603
+ }
604
+
605
+ return tokenSentences;
606
+ }
607
+
608
+ /**
609
+ * Gets the current sentence when:
610
+ * a) There is a next sentence, and the next character is a valid sentence beginning preceded by a white space, OR
611
+ * b) The next token is a sentence start
612
+ *
613
+ * @param {boolean} hasNextSentence Whether the next characters are more than two.
614
+ * @param {string} nextSentenceStart The second character of the next characters.
615
+ * @param {string} nextCharacters The string values of the next two tokens.
616
+ * @param {object} nextToken The next token object.
617
+ * @param {array} tokenSentences The array of pushed valid sentences.
618
+ * @param {string} currentSentence The current sentence.
619
+ *
620
+ * @returns {string} The current sentence.
621
+ */
622
+ getValidSentence( hasNextSentence, nextSentenceStart, nextCharacters, nextToken, tokenSentences, currentSentence ) {
623
+ if ( ( hasNextSentence && this.isValidSentenceBeginning( nextSentenceStart ) && this.isCharacterASpace( nextCharacters[ 0 ] ) ) ||
624
+ this.isSentenceStart( nextToken ) ) {
625
+ tokenSentences.push( currentSentence );
626
+ currentSentence = "";
627
+ }
628
+ return currentSentence;
629
+ }
630
+
631
+ /**
632
+ * Checks if the character is a whitespace.
633
+ *
634
+ * @param {string} character The character to check.
635
+ * @returns {boolean} Whether the character is a whitespace.
636
+ */
637
+ isCharacterASpace( character ) {
638
+ return /\s/.test( character );
639
+ }
640
+ }
@@ -0,0 +1,20 @@
1
+ /** @module stringProcessing/countSentences */
2
+
3
+ import getSentences from "./getSentences.js";
4
+
5
+ /**
6
+ * Counts the number of sentences in a given string.
7
+ *
8
+ * @param {string} text The text used to count sentences.
9
+ * @param {function} memoizedTokenizer The memoized sentence tokenizer.
10
+ *
11
+ * @returns {number} The number of sentences in the text.
12
+ */
13
+ export default function( text, memoizedTokenizer ) {
14
+ const sentences = getSentences( text, memoizedTokenizer );
15
+ let sentenceCount = 0;
16
+ for ( let i = 0; i < sentences.length; i++ ) {
17
+ sentenceCount++;
18
+ }
19
+ return sentenceCount;
20
+ }