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,57 @@
1
+ /** @module researches/keywordCountInSlug */
2
+ import parseSlug from "../helpers/url/parseSlug";
3
+ import { findTopicFormsInString } from "../helpers/match/findKeywordFormsInString.js";
4
+ import { cloneDeep } from "lodash";
5
+
6
+ /**
7
+ * Matches the keyword in the slug. Replaces all dashes and underscores with whitespaces and uses whitespace as word boundary.
8
+ *
9
+ * @param {Paper} paper the Paper object to use in this count.
10
+ * @param {Researcher} researcher The Researcher object containing all available researches.
11
+ *
12
+ * @returns {{keyphraseLength: int, percentWordMatches: int}} The length of the keyphrase and the percentage of keyphrase forms that has been found.
13
+ */
14
+ function keywordCountInSlug( paper, researcher ) {
15
+ /*
16
+ * We want to override the `areHyphensWordBoundaries` config value from the researcher so that it is `true` for all
17
+ * languages. This is because slugs usually use hyphens (or underscores) as word boundaries. So if only the slug is
18
+ * split on hyphens and not the keyphrase forms, some keyphrase forms won't be found in the slug.
19
+ */
20
+ const languageResearcher = cloneDeep( researcher );
21
+ languageResearcher.addConfig( "areHyphensWordBoundaries", true );
22
+ const topicForms = languageResearcher.getResearch( "morphology" );
23
+
24
+ const parsedSlug = parseSlug( paper.getSlug() );
25
+ const locale = paper.getLocale();
26
+
27
+ const keyphraseInSlug = findTopicFormsInString( topicForms, parsedSlug, false, locale, false );
28
+
29
+ return {
30
+ keyphraseLength: topicForms.keyphraseForms.length,
31
+ percentWordMatches: keyphraseInSlug.percentWordMatches,
32
+ };
33
+ }
34
+
35
+ /**
36
+ * Matches the keyword in the slug.
37
+ * keywordCountInUrl was the previous name for keywordCountInSlug (hence the name of this file).
38
+ * We keep (and expose) this research for backwards compatibility.
39
+ *
40
+ * @deprecated Since version 18.7. Use keywordCountInSlug instead.
41
+ *
42
+ * @param {Paper} paper the Paper object to use in this count.
43
+ * @param {Researcher} researcher The Researcher object containing all available researches.
44
+ *
45
+ * @returns {{keyphraseLength: int, percentWordMatches: int}} The length of the keyphrase and the percentage of keyphrase forms that has been found.
46
+ */
47
+ function keywordCountInUrl( paper, researcher ) {
48
+ console.warn( "This function is deprecated, use keywordCountInSlug instead." );
49
+ return keywordCountInSlug( paper, researcher );
50
+ }
51
+
52
+ export {
53
+ keywordCountInSlug,
54
+ keywordCountInUrl,
55
+ };
56
+
57
+ export default keywordCountInSlug;
@@ -0,0 +1,62 @@
1
+ import { getSubheadingContentsTopLevel } from "../helpers/html/getSubheadings";
2
+ import stripSomeTags from "../helpers/sanitize/stripNonTextTags";
3
+ import { findTopicFormsInString } from "../helpers/match/findKeywordFormsInString";
4
+ import removeHtmlBlocks from "../helpers/html/htmlParser";
5
+ import { filterShortcodesFromHTML } from "../helpers";
6
+
7
+ /**
8
+ * Computes the amount of subheadings reflecting the topic.
9
+ *
10
+ * @param {Object} topicForms The main key phrase and its synonyms to check.
11
+ * @param {string[]} subheadings The subheadings to check.
12
+ * @param {boolean} useSynonyms Whether to match synonyms or only main keyphrase.
13
+ * @param {string} locale The current locale.
14
+ * @param {Array} functionWords The function words list.
15
+ * @param {function} matchWordCustomHelper The language-specific helper function to match word in text.
16
+ *
17
+ * @returns {number} The amount of subheadings reflecting the topic.
18
+ */
19
+ const numberOfSubheadingsReflectingTopic = function( topicForms, subheadings, useSynonyms, locale, functionWords, matchWordCustomHelper ) {
20
+ return subheadings.filter( subheading => {
21
+ const matchedTopicForms = findTopicFormsInString( topicForms, subheading, useSynonyms, locale, matchWordCustomHelper );
22
+
23
+ if ( functionWords.length === 0 ) {
24
+ return matchedTopicForms.percentWordMatches === 100;
25
+ }
26
+ return matchedTopicForms.percentWordMatches > 50;
27
+ } ).length;
28
+ };
29
+
30
+ /**
31
+ * Checks if there are any h2 or h3 subheadings in the text and if they have the keyphrase or synonyms in them.
32
+ *
33
+ * @param {Object} paper The paper object containing the text and keyword.
34
+ * @param {Researcher} researcher The researcher object.
35
+ *
36
+ * @returns {Object} The result object.
37
+ */
38
+ export default function matchKeywordInSubheadings( paper, researcher ) {
39
+ const functionWords = researcher.getConfig( "functionWords" );
40
+
41
+ // A custom helper to match word in text.
42
+ const matchWordCustomHelper = researcher.getHelper( "matchWordCustomHelper" );
43
+
44
+
45
+ let text = paper.getText();
46
+ text = removeHtmlBlocks( text );
47
+ text = filterShortcodesFromHTML( text, paper._attributes && paper._attributes.shortcodes );
48
+ text = stripSomeTags( text );
49
+ const topicForms = researcher.getResearch( "morphology" );
50
+ const locale = paper.getLocale();
51
+ const result = { count: 0, matches: 0, percentReflectingTopic: 0 };
52
+ const useSynonyms = true;
53
+ const subheadings = getSubheadingContentsTopLevel( text );
54
+
55
+ if ( subheadings.length !== 0 ) {
56
+ result.count = subheadings.length;
57
+ result.matches = numberOfSubheadingsReflectingTopic( topicForms, subheadings, useSynonyms, locale, functionWords, matchWordCustomHelper );
58
+ result.percentReflectingTopic = result.matches / result.count * 100;
59
+ }
60
+
61
+ return result;
62
+ }
@@ -0,0 +1,85 @@
1
+ import matchWords from "../helpers/match/matchTextWithArray";
2
+ import getSentences from "../helpers/sentence/getSentences";
3
+
4
+ /**
5
+ * Replaces found keyword forms in the given description.
6
+ *
7
+ * @param {string} description The description to remove the matched keyword forms from.
8
+ * @param {Object[]} matchedKeywordForms The matched keyword forms to remove from the description.
9
+ * @param {Number} maxToRemove The maximum amount of matches of each individual keyword to remove.
10
+ *
11
+ * @returns {string} The description with the keywords removed.
12
+ */
13
+ const replaceFoundKeywordForms = function( description, matchedKeywordForms, maxToRemove ) {
14
+ // Replace matches so we do not match them for synonyms.
15
+ matchedKeywordForms.forEach( keywordForm =>
16
+ keywordForm.matches.slice( 0, maxToRemove ).forEach(
17
+ match => {
18
+ description = description.replace( match, "" );
19
+ }
20
+ )
21
+ );
22
+ return description;
23
+ };
24
+
25
+ /**
26
+ * Counts the number of full keyphrase matches in the given sentence. Takes synonyms into account.
27
+ * A full keyphrase is when all keywords in the keyphrase match.
28
+ *
29
+ * @param {string} sentence The sentence that needs to be analyzed.
30
+ * @param {Object} topicForms The keyphrase (and its optional synonyms') word forms.
31
+ * @param {string} locale The current locale.
32
+ * @param {function} matchWordCustomHelper The language-specific helper function to match word in text.
33
+ *
34
+ * @returns {Number} The number of matched keyphrases in the sentence.
35
+ */
36
+ const matchPerSentence = function( sentence, topicForms, locale, matchWordCustomHelper ) {
37
+ // Focus keyphrase matches.
38
+ const matchesKeyphrase = topicForms.keyphraseForms.map( keywordForms => matchWords( sentence, keywordForms, locale, matchWordCustomHelper ) );
39
+ // Count the number of matches that contain every word in the entire keyphrase.
40
+ const fullKeyphraseMatches = Math.min( ...matchesKeyphrase.map( match => match.count ) );
41
+
42
+ // Replace all full keyphrase matches so we do not match them for synonyms.
43
+ sentence = replaceFoundKeywordForms( sentence, matchesKeyphrase, fullKeyphraseMatches );
44
+
45
+ // Keyphrase synonyms matches.
46
+ const fullSynonymsMatches = topicForms.synonymsForms.map(
47
+ synonymForms => {
48
+ // Synonym keyphrase matches.
49
+ const matches = synonymForms.map( keywordForms => matchWords( sentence, keywordForms, locale, matchWordCustomHelper ) );
50
+ // Count the number of matches that contain every word in the entire synonym keyphrase.
51
+ const fullSynonymMatches = Math.min( ...matches.map( match => match.count ) );
52
+ // Replace all full matches so we do not match them for other synonyms.
53
+ sentence = replaceFoundKeywordForms( sentence, matchesKeyphrase, fullSynonymMatches );
54
+ return fullSynonymMatches;
55
+ }
56
+ );
57
+
58
+ return [ fullKeyphraseMatches, ...fullSynonymsMatches ].reduce( ( sum, count ) => sum + count, 0 );
59
+ };
60
+
61
+ /**
62
+ * Counts the number of full keyphrase matches in the description.
63
+ *
64
+ * @param {Paper} paper The paper object containing the description.
65
+ * @param {Researcher} researcher The researcher object to gather researchers from.
66
+ *
67
+ * @returns {Number} The number of keyphrase matches for the entire description.
68
+ */
69
+ export default function( paper, researcher ) {
70
+ const description = paper.getDescription();
71
+ const locale = paper.getLocale();
72
+
73
+ const topicForms = researcher.getResearch( "morphology" );
74
+ const matchWordCustomHelper = researcher.getHelper( "matchWordCustomHelper" );
75
+ const memoizedTokenizer = researcher.getHelper( "memoizedTokenizer" );
76
+
77
+ const sentences = getSentences( description, memoizedTokenizer );
78
+
79
+ const sentenceMatches = sentences.map(
80
+ sentence => matchPerSentence( sentence, topicForms, locale, matchWordCustomHelper )
81
+ );
82
+
83
+ return sentenceMatches.reduce( ( sum, count ) => sum + count, 0 );
84
+ }
85
+
@@ -0,0 +1,12 @@
1
+ import countMetaDescriptionLength from "../helpers/word/countMetaDescriptionLength";
2
+
3
+ /**
4
+ * Count the meta description length.
5
+ *
6
+ * @param {Paper} paper The paper to check for images.
7
+ *
8
+ * @returns {number|*} The meta description length.
9
+ */
10
+ export default function metaDescriptionLength( paper ) {
11
+ return countMetaDescriptionLength( paper.getDate(), paper.getDescription() );
12
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Check the width of the title in pixels
3
+ * @param {Paper} paper The paper object containing the title width in pixels.
4
+ * @returns {number} The width of the title in pixels
5
+ */
6
+ export default function( paper ) {
7
+ if ( paper.hasTitle() ) {
8
+ return paper.getTitleWidth();
9
+ }
10
+ return 0;
11
+ }
@@ -0,0 +1,82 @@
1
+ import getLanguage from "../../languageProcessing/helpers/language/getLanguage";
2
+ import wordCountInText from "./wordCountInText.js";
3
+ import imageCount from "./imageCount.js";
4
+
5
+ /**
6
+ * Calculates the expected reading time of a text.
7
+ *
8
+ * @param {Paper} paper The paper to calculate the reading time for.
9
+ * @param {Researcher} researcher The researcher.
10
+ *
11
+ * @returns {number} The expected reading time in minutes for a given language.
12
+ */
13
+ export default function( paper, researcher ) {
14
+ const language = getLanguage( paper.getLocale() );
15
+
16
+ // A helper to get words from the text for languages that don't use the default approach.
17
+ const customGetWords = researcher.getHelper( "getWordsCustomHelper" );
18
+ const countCharactersFromArray = researcher.getHelper( "wordsCharacterCount" );
19
+
20
+ /*
21
+ * These numbers (both in `wordsPerMinute` and `charactersPerMinute`) are based on research into average reading times:
22
+ * Susanne Trauzettel-Klosinski, Klaus Dietz, the IReST Study Group;
23
+ * Standardized Assessment of Reading Performance: The New International Reading Speed Texts IReST.
24
+ * Invest. Ophthalmol. Vis. Sci. 2012;53(9):5452-5461
25
+ */
26
+ const wordsPerMinute = {
27
+ ar: 138,
28
+ cn: 158,
29
+ de: 179,
30
+ en: 228,
31
+ es: 218,
32
+ fi: 161,
33
+ fr: 195,
34
+ he: 187,
35
+ it: 188,
36
+ nl: 202,
37
+ pl: 166,
38
+ pt: 181,
39
+ ru: 184,
40
+ sl: 180,
41
+ sv: 199,
42
+ tr: 166,
43
+ };
44
+
45
+ const charactersPerMinute = {
46
+ ja: 357,
47
+ };
48
+
49
+
50
+ const wordsPerMinuteScore = wordsPerMinute[ language ];
51
+ const charactersPerMinuteScore = charactersPerMinute[ language ];
52
+
53
+ // The default approach of calculating the text length is by counting the words in the text.
54
+ let textLength = wordCountInText( paper ).count;
55
+ let minutesToReadText;
56
+
57
+ if ( charactersPerMinuteScore ) {
58
+ /*
59
+ * If a language has a characters per minute score, we assume that the language also uses a character count helper
60
+ * for retrieving the text length and a custom helper to get words from the text.
61
+ */
62
+ textLength = countCharactersFromArray( customGetWords( paper.getText() ) );
63
+ minutesToReadText = textLength / charactersPerMinuteScore;
64
+ } else if ( wordsPerMinuteScore ) {
65
+ minutesToReadText = textLength / wordsPerMinuteScore;
66
+ } else {
67
+ // If the language is not on both lists, assign the average of all language-dependent reading times as the score.
68
+ const sumWordsPerMinute = Object.values( wordsPerMinute ).reduce( ( a, b ) => a + b );
69
+ const sumNumberOfLanguages = Object.keys( wordsPerMinute ).length;
70
+ minutesToReadText = textLength / ( sumWordsPerMinute / sumNumberOfLanguages );
71
+ }
72
+
73
+ const minutesPerImage = 0.2;
74
+ const numberOfImages = imageCount( paper );
75
+
76
+ /*
77
+ * This formula is based on the average number of words a person is expected to read per minute,
78
+ * plus extra time for each image in the text. It returns the expected reading time in whole minutes,
79
+ * rounded up to the nearest minute.
80
+ */
81
+ return Math.ceil( minutesToReadText + ( numberOfImages * minutesPerImage ) );
82
+ }
@@ -0,0 +1,20 @@
1
+ import getSentences from "../helpers/sentence/getSentences";
2
+ import removeHtmlBlocks from "../helpers/html/htmlParser";
3
+ import { filterShortcodesFromHTML } from "../helpers";
4
+
5
+ /**
6
+ * Returns the sentences from a paper.
7
+ *
8
+ * @param {Paper} paper The paper to analyze.
9
+ * @param {object} researcher The researcher.
10
+ *
11
+ * @returns {Array} Sentences found in the paper.
12
+ */
13
+ export default function( paper, researcher ) {
14
+ const memoizedTokenizer = researcher.getHelper( "memoizedTokenizer" );
15
+
16
+ let text = paper.getText();
17
+ text = removeHtmlBlocks( text );
18
+ text = filterShortcodesFromHTML( text, paper._attributes && paper._attributes.shortcodes );
19
+ return getSentences( text, memoizedTokenizer );
20
+ }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Checks the amount of videos in the text, including embedded video iframes and specific video sources.
3
+ *
4
+ * @param {Paper} paper The paper to check for videos.
5
+ *
6
+ * @returns {number} The amount of found videos.
7
+ */
8
+ export default function countVideoInText(paper) {
9
+ // Regular expression to match <video> tags.
10
+ const videoTag = /<video.*?<\/video>/gis;
11
+
12
+ // Regular expression to match <iframe> tags with video sources (YouTube, Vimeo, Shopify CDN, etc.).
13
+ const iframeVideoTag = /<iframe[^>]*src=["']https?:\/\/(?:www\.)?(youtube\.com|youtu\.be|vimeo\.com|cdn\.shopify\.com)[^"']*["'][^>]*>/gis;
14
+
15
+ // Regular expression to match any src attributes with common video file extensions.
16
+ const videoSrcTag = /src=["'].*?\.(mp4|webm|ogg|mov|m4v|avi|mkv|flv|wmv)(\?.*?)?["']/gis;
17
+
18
+ // Match occurrences of <video> tags in the text.
19
+ const videoMatches = paper.getText().match(videoTag) || [];
20
+
21
+ // Match occurrences of <iframe> tags with video sources in the text.
22
+ const iframeVideoMatches = paper.getText().match(iframeVideoTag) || [];
23
+
24
+ // Match occurrences of src attributes pointing to video files in the text.
25
+ const videoSrcMatches = paper.getText().match(videoSrcTag) || [];
26
+
27
+ // Combine all matches into a single set to remove duplicates.
28
+ const allMatches = new Set([...videoMatches, ...iframeVideoMatches, ...videoSrcMatches]);
29
+
30
+ // Return the unique count of all found matches.
31
+ return allMatches.size;
32
+ }
@@ -0,0 +1,129 @@
1
+ import { flatMap, get } from "lodash";
2
+
3
+ import getSentences from "../helpers/sentence/getSentences";
4
+ import getWords from "../helpers/word/getWords";
5
+ import removeHtmlBlocks from "../helpers/html/htmlParser";
6
+ import { filterShortcodesFromHTML } from "../helpers";
7
+ import { findTopicFormsInString } from "../helpers/match/findKeywordFormsInString";
8
+
9
+ /**
10
+ * An object containing the results of the complex words research for a single sentence.
11
+ *
12
+ * The structure of the data is:
13
+ * @example
14
+ * {
15
+ * complexWords: ["word1", "word2", "word3" ],
16
+ * sentence: "the sentence"
17
+ * }
18
+ *
19
+ * @typedef {Object} ComplexWordsResult
20
+ * @property {string[]} complexWords The complex words in the sentence.
21
+ * @property {string} sentence The sentence.
22
+ */
23
+
24
+ /**
25
+ * Retrieves all complex words in a sentence.
26
+ *
27
+ * @param {string} currentSentence The current sentence.
28
+ * @param {Researcher} researcher The researcher object.
29
+ * @param {Object} topicForms The object with word forms of all (content) words from the keyphrase and eventually synonyms,
30
+ * comes in a shape {
31
+ * keyphraseForms: [[ form1, form2, ... ], [ form1, form2, ... ]],
32
+ * synonymsForms: [
33
+ * [[ form1, form2, ... ], [ form1, form2, ... ]],
34
+ * [[ form1, form2, ... ], [ form1, form2, ... ]],
35
+ * [[ form1, form2, ... ], [ form1, form2, ... ]],
36
+ * ],
37
+ * }
38
+ *
39
+ * @returns {ComplexWordsResult} An object containing all complex words in a given sentence.
40
+ */
41
+ const getComplexWords = function( currentSentence, researcher, topicForms ) {
42
+ const language = researcher.getConfig( "language" );
43
+ const checkIfWordIsComplex = researcher.getHelper( "checkIfWordIsComplex" );
44
+ const functionWords = researcher.getConfig( "functionWords" );
45
+ const wordComplexityConfig = researcher.getConfig( "wordComplexity" );
46
+ const checkIfWordIsFunction = researcher.getHelper( "checkIfWordIsFunction" );
47
+ const premiumData = get( researcher.getData( "morphology" ), language, false );
48
+
49
+ // Retrieve all words from the sentence.
50
+ let words = getWords( currentSentence );
51
+
52
+ // Filters out keyphrase forms (but not synonyms) because we consider them not to be complex.
53
+ const matchWordCustomHelper = researcher.getHelper( "matchWordCustomHelper" );
54
+ const foundTopicForms = findTopicFormsInString( topicForms, currentSentence, false, researcher.paper.getLocale(), matchWordCustomHelper );
55
+ words = words.filter( word => ! foundTopicForms.matches.includes( word ) );
56
+
57
+ // Filters out function words because function words are not complex.
58
+ // Words are converted to lowercase before processing to avoid excluding function words that start with a capital letter.
59
+ words = words.filter( word => ! ( checkIfWordIsFunction ? checkIfWordIsFunction( word ) : functionWords.includes( word ) ) );
60
+
61
+ const result = {
62
+ complexWords: [],
63
+ sentence: currentSentence,
64
+ };
65
+
66
+ if ( ! premiumData ) {
67
+ return result;
68
+ }
69
+
70
+ words.forEach( word => {
71
+ if ( checkIfWordIsComplex( wordComplexityConfig, word, premiumData ) ) {
72
+ result.complexWords.push( word );
73
+ }
74
+ } );
75
+
76
+ return result;
77
+ };
78
+
79
+ /**
80
+ * Calculates the percentage of the complex words compared to the total words in the text.
81
+ *
82
+ * @param {ComplexWordsResult[]} complexWordsResults The array of complex words results.
83
+ * @param {string[]} words The array of words retrieved from the text.
84
+ *
85
+ * @returns {number} The percentage of the complex words compared to the total words in the text.
86
+ */
87
+ const calculateComplexWordsPercentage = function( complexWordsResults, words ) {
88
+ const totalComplexWords = flatMap( complexWordsResults, result => result.complexWords );
89
+ const percentage = ( totalComplexWords.length / words.length ) * 100;
90
+
91
+ // If the number is a decimal, round it to two numbers after the period, e.g. 5.12345 -> 5.12.
92
+ // This approach is inspired from this thread: https://stackoverflow.com/questions/11832914/how-to-round-to-at-most-2-decimal-places-if-necessary.
93
+ return +percentage.toFixed( 2 );
94
+ };
95
+
96
+ /**
97
+ * Gets the complex words from the sentences and calculates the percentage of complex words compared to the total words in the text.
98
+ * This is a research for the Word Complexity assessment. As such, this research is not part of the AbstractResearcher, and not bundled in Yoast SEO.
99
+ *
100
+ * @param {Paper} paper The Paper object to get the text from.
101
+ * @param {Researcher} researcher The researcher object.
102
+ *
103
+ * @returns {{complexWords: ComplexWordsResult[], percentage: number}}
104
+ * The complex words found and their percentage compared to the total words in the text.
105
+ */
106
+ export default function wordComplexity( paper, researcher ) {
107
+ const memoizedTokenizer = researcher.getHelper( "memoizedTokenizer" );
108
+ let text = paper.getText();
109
+ text = removeHtmlBlocks( text );
110
+ text = filterShortcodesFromHTML( text, paper._attributes && paper._attributes.shortcodes );
111
+ const sentences = getSentences( text, memoizedTokenizer );
112
+
113
+ const topicForms = researcher.getResearch( "morphology" );
114
+ // Find the complex words in each sentence.
115
+ let results = sentences.map( sentence => getComplexWords( sentence, researcher, topicForms ) );
116
+
117
+ // Remove sentences without complex words.
118
+ results = results.filter( result => result.complexWords.length !== 0 );
119
+
120
+ // Calculate the percentage of complex words in the text as a whole.
121
+ const words = getWords( text );
122
+ const percentage = calculateComplexWordsPercentage( results, words );
123
+
124
+ return {
125
+ complexWords: results,
126
+ percentage: percentage,
127
+ };
128
+ }
129
+
@@ -0,0 +1,29 @@
1
+ import wordCount from "../helpers/word/countWords.js";
2
+ import removeHtmlBlocks from "../helpers/html/htmlParser";
3
+ import { filterShortcodesFromHTML } from "../helpers";
4
+
5
+ /**
6
+ * A result of the word count calculation.
7
+ *
8
+ * @typedef WordCountResult
9
+ * @param {number} count The number of words found in the text.
10
+ * @param {"word"} unit The unit used in the text length calculations, always "word".
11
+ */
12
+
13
+ /**
14
+ * Count the words in the text.
15
+ *
16
+ * @param {Paper} paper The Paper object.
17
+ *
18
+ * @returns {WordCountResult} The number of words found in the text, plus "word" as the unit used in calculating the text length.
19
+ */
20
+ export default function( paper ) {
21
+ let text = paper.getText();
22
+ text = removeHtmlBlocks( text );
23
+ text = filterShortcodesFromHTML( text, paper._attributes && paper._attributes.shortcodes );
24
+ return {
25
+ text: text,
26
+ count: wordCount( text ),
27
+ unit: "word",
28
+ };
29
+ }
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Sentence clause which should be checked for passiveness.
3
+ *
4
+ */
5
+ class Clause {
6
+ /**
7
+ * Constructs a clause object.
8
+ *
9
+ * @param {string} clauseText The text in the clause.
10
+ * @param {Array} auxiliaries The auxiliaries in the clause.
11
+ *
12
+ * @constructor
13
+ */
14
+ constructor( clauseText, auxiliaries ) {
15
+ this._clauseText = clauseText;
16
+ this._auxiliaries = auxiliaries;
17
+ this._isPassive = false;
18
+ this._participles = [];
19
+ }
20
+ /**
21
+ * Returns the clause text.
22
+ *
23
+ * @returns {string} The clause text.
24
+ */
25
+ getClauseText() {
26
+ return this._clauseText;
27
+ }
28
+
29
+ /**
30
+ * Returns true if the clause is passive.
31
+ *
32
+ * @returns {boolean} Whether the clause is passive.
33
+ */
34
+ isPassive() {
35
+ return this._isPassive;
36
+ }
37
+
38
+ /**
39
+ * Returns the auxiliaries of the clause.
40
+ *
41
+ * @returns {Array} The auxiliaries present in the clause.
42
+ */
43
+ getAuxiliaries() {
44
+ return this._auxiliaries;
45
+ }
46
+
47
+ /**
48
+ * Sets the passiveness of the clause.
49
+ *
50
+ * @param {boolean} passive Whether the clause is passive.
51
+ *
52
+ * @returns {void}
53
+ */
54
+ setPassive( passive ) {
55
+ this._isPassive = passive;
56
+ }
57
+
58
+ /**
59
+ * Sets the participles.
60
+ *
61
+ * @param {Array} participles The participles.
62
+ *
63
+ * @returns {void}
64
+ */
65
+ setParticiples( participles ) {
66
+ this._participles = participles;
67
+ }
68
+
69
+ /**
70
+ * Returns the found participles.
71
+ *
72
+ * @returns {Array} The participles
73
+ */
74
+ getParticiples() {
75
+ return this._participles;
76
+ }
77
+
78
+ /**
79
+ * Serializes the Clause instance to an object.
80
+ *
81
+ * @returns {Object} The serialized Clause.
82
+ */
83
+ serialize() {
84
+ return {
85
+ _parseClass: "Clause",
86
+ clauseText: this._clauseText,
87
+ auxiliaries: this._auxiliaries,
88
+ isPassive: this._isPassive,
89
+ participles: this._participles,
90
+ };
91
+ }
92
+
93
+ /**
94
+ * Parses the object to a Clause.
95
+ *
96
+ * @param {Object} serialized The serialized object.
97
+ *
98
+ * @returns {Clause} The parsed Clause.
99
+ */
100
+ static parse( serialized ) {
101
+ const clause = new Clause( serialized.clauseText, serialized.auxiliaries );
102
+ clause.setPassive( serialized.isPassive );
103
+
104
+ return clause;
105
+ }
106
+ }
107
+
108
+ export default Clause;