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,42 @@
1
+ /** @module config/transitionWords */
2
+
3
+ export const singleWords = [ "fakat", "halbuki", "hatta", "üstelik", "ancak", "oysa", "sonuçta", "yalnız", "çünkü", "oysaki", "kısacası", "özetle",
4
+ "böylelikle", "ama", "lakin", "ayrıca", "açıkcası", "yani", "sonucunda", "böylece", "kısaca", "veya", "veyahut", "zira", "öyleyse",
5
+ "sonrasında", "ardından", "vakıa", "gerçi", "karşın", "tümüyle", "bütünüyle", "tamamıyla", "genelde", "diğer", "başka", "önce",
6
+ "öncesinde", "sonra", "yanısıra", "ama", "muhakkak", "kesinlikle", "şüphesiz", "elbet", "elbette", "kuşkusuz", "başlıca", "bilakis", "aksine",
7
+ "tersine", "devamında", "özellikle", "bilhassa", "nihayet", "nihayetinde", "neticede", "ayrıyeten", "dahası", "çoğunlukla", "genellikle",
8
+ "genelde", "dolayısıyla", "gelgelelim", "aslında", "doğrusu", "mamafih", "binaenaleyh", "evvelce", "önceden", "şöylelikle", "örneğin", "mesela",
9
+ "nitekim", "mademki", "şimdi", "halihazırda", "i̇laveten", "aynen", "nazaran", "nedeniyle", "yüzünden", "umumiyetle", "ekseriye", "amacıyla",
10
+ "gayesiyle", "velhasıl", "ezcümle", "özetlersek", "etraflıca", "tafsilatlı", "genişçe", "bilfiil", "filhakika", "evvela", "i̇lkin", "en önce",
11
+ "birincisi", "i̇kincisi", "üçüncüsü", "sonuncusu", "tıpkı", "topyekun", "hem", "kah", "ister", "ya", "gerekse", "sayesinde", "sebebiyle",
12
+ "üzere", "göre", "uyarınca", "halen", "gerçekten", "madem", "yoksa" ];
13
+
14
+ export const multipleWords = [ "o halde", "bundan böyle", "demek ki", "ne yazık ki", "görüldüğü gibi", "i̇lk olarak", "son olarak", "ne var ki",
15
+ "buna rağmen", "yine de", "başka bir deyişle", "açıklamak gerekirse", "özetlemek gerekirse", "kısaca söylemek gerekirse", "görüldüğü gibi",
16
+ "ve bunun gibi", "halbu ki", "buna göre", "ona göre", "ek olarak", "her ne kadar", "velev ki", "olmakla beraber", "bile olsa", "i̇le beaber",
17
+ "i̇le birlikte", "her şeye rağmen", "bütün yanlarıyla", "bütün yönleriyle", "ele alacak olursak", "baştan sona", "diğer bir", "başka bir",
18
+ "daha önce", "daha sonra", "bundan başka", "bunun yanında", "bunun yanı sıra", "bununla birlikte", "buna ilaveten", "bunun dışında", "elbette ki",
19
+ "muhakkak ki", "belli başlı", "karşılaştırmak gerekirse", "karşılaştırmalı olarak", "aynı zamanda", "sonuç olarak", "diğer taraftan",
20
+ "diğer bir taraftan", "buna karşılık", "tam tersine", "buna bağlı olarak", "buna parelel olarak", "i̇kinci olarak", "üçüncü olarak",
21
+ "aynı derecede", "eşit olarak", "başta olmak üzere", "en sonunda", "açık bir şekilde", "ana hatlarıyla", "genel itibariyle", "genel anlamda",
22
+ "genel olarak", "bunun için", "bu nedenle", "bundan dolayı", "bu sebeple", "dolayısı ile", "her halükarda", "aynı biçimde", "aynı şekilde",
23
+ "bu esnada", "bu arada", "hal böyleyken", "bağlı kalmaksızın", "açık olarak", "belli ki", "ayrıntılı olarak", "bundan önce", "sözün kısası",
24
+ "az ve öz bir şekilde", "tüm ayrıntılarıyla", "bu şekilde", "o yüzden", "bu sayede", "buradan hareketle", "buna mukabil", "en önemlisi",
25
+ "her şeyden önce", "esas olarak", "hepsinden önce", "hepsinden öte", "hepsinden ötesi", "her şeyin üzerinde", "her şeyin ötesinde",
26
+ "hepsinden önemlisi", "asıl önemlisi", "her şeyi hesaba katarak", "bütün olarak", "her şey göz önüne alındığında", "pararel olarak",
27
+ "diğer bir nokta", "diğer açıdan", "öyle ya da böyle", "doğrusunu söylemek gerekirse", "i̇şin doğrusu", "aslına bakılırsa", "gerçek şu ki",
28
+ "hattı zatında", "aslına bakıldığında", "aslına bakarsak", "i̇şin aslı", "sonuç itibariyle", "örnek olarak", "örneleyecek olursak",
29
+ "görülebileceği gibi", "görülebileceği üzere", "görüldüğü üzere", "söylendiği gibi", "söylenildiği gibi", "söylediği gibi", "söylediğim gibi",
30
+ "olduğu kadar", "önceden belirtildiği gibi", "önceden söylendiği gibi", "yukarıda gösterildiği gibi", "eninde sonunda", "önünde sonunda",
31
+ "şu anda", "bu sırada", "bununla beraber", "bu noktada", "bunun ışığında", "bunların ışığında", "aşikar olarak", "aynı sebeple", "bir de",
32
+ "doğru da olsa", "doğru bile olsa", "öyle bile olsa", "öyle de olsa", "i̇le ilgili", "olsa bile", "eğer ki", "olsa dahi", "ondan dolayı",
33
+ "o sebepten dolayı", "bu yüzden", "onun için", "esas itibarıyla", "aynı sebepten dolayı", "bu amaçla", "zaman zaman", "arada sırada",
34
+ "dönem dönem", "arada bir", "diyelim ki", "farz edelim ki", "farz edersek", "kısaca söylecek olursak", "tek kelimeyle", "birkaç kelimeyle",
35
+ "sözün özü", "en nihayetinde", "uzun uzadıya", "her iki durumda da", "özü itibariyle", "amacı ile", "olması için", "başka bir ifadeyle",
36
+ "diğer bir deyişle", "i̇lk önce", "bir yandan", "bir taraftan", "hatırlatmak gerekirse", "bu bağlamda", "gel gelelim", "her şey hesaba katılırsa",
37
+ "bütüne bakıldığında", "belirtildiği gibi", "bir başka ifadeyle", "lafı toparlamak gerekirse", "bu düşünceyle", "bu maksatla", "bu doğrultuda",
38
+ "bu niyetle", "ne de", "ya da", "aksi durumda", "bu durum", "olup olmadığı", "diğer yandan", "öte yandan", "ne olursa olsun" ];
39
+
40
+ export const allWords = singleWords.concat( multipleWords );
41
+
42
+ export default allWords;
@@ -0,0 +1,7 @@
1
+ /** @module config/twoPartTransitionWords */
2
+
3
+ /**
4
+ * Returns an array with two-part transition words to be used by the assessments.
5
+ * @returns {Array} The array filled with two-part transition words.
6
+ */
7
+ export default [ [ "ne", "ne" ], [ "gerek", "gerek" ], [ "olsun", "olmasın" ] ];
@@ -0,0 +1,22 @@
1
+ import {get} from 'lodash';
2
+ import {languageProcessing} from '../../../index';
3
+ const {baseStemmer} = languageProcessing;
4
+
5
+ import determineStem from './internal/stem';
6
+
7
+ /**
8
+ * Returns the stemmer for a researcher.
9
+ *
10
+ * @param {Researcher} researcher The researcher.
11
+ *
12
+ * @returns {Function} The stemmer.
13
+ */
14
+ export default function getStemmer(researcher) {
15
+ const morphologyData = get(researcher.getData('morphology'), 'tr', false);
16
+
17
+ if (morphologyData) {
18
+ return word => determineStem(word, morphologyData);
19
+ }
20
+
21
+ return baseStemmer;
22
+ }
@@ -0,0 +1,20 @@
1
+ import TurkishStemmer from '../../../vendor/turkishStemmer';
2
+
3
+ /**
4
+ * Stems Turkish words.
5
+ *
6
+ * @param {string} word The word to stem.
7
+ * @param {Object} morphologyData The Turkish morphology data.
8
+ *
9
+ * @returns {string} The stemmed word.
10
+ */
11
+ export default function stem(word, morphologyData) {
12
+ word = word.toLowerCase();
13
+ word = word.replace("'", '');
14
+
15
+ const stemmer = new TurkishStemmer(morphologyData);
16
+ stemmer.setCurrent(word);
17
+ stemmer.stem();
18
+
19
+ return stemmer.getCurrent();
20
+ }
@@ -0,0 +1,43 @@
1
+ import {languageProcessing} from '../../../index';
2
+ const {getWords} = languageProcessing;
3
+
4
+ import passiveEndings from '../config/internal/passiveEndings';
5
+ import {nonPassivesFullForms, nonPassiveStems} from '../config/internal/nonPassiveExceptions';
6
+
7
+ /**
8
+ * Filters out words that are passive exceptions from an array.
9
+ *
10
+ * @param {string[]} matchedPassives The words from the sentence that could be passives
11
+ *
12
+ * @returns {string[]} The array of words with the non-passives filtered out
13
+ */
14
+ const checkNonPassivesStemsList = function(matchedPassives) {
15
+ return matchedPassives.filter(passive =>
16
+ nonPassiveStems.some(stem =>
17
+ passiveEndings.some(function(ending) {
18
+ const pattern = new RegExp('^' + stem + ending + '$');
19
+ return !pattern.test(passive);
20
+ })
21
+ )
22
+ );
23
+ };
24
+
25
+ /**
26
+ * Checks the passed sentence to see if it contains passive verb forms and is not found in the non-passive full forms exception list.
27
+ *
28
+ * @param {string} sentence The sentence to match against.
29
+ *
30
+ * @returns {Boolean} Whether the sentence contains a Turkish verb passive voice.
31
+ */
32
+ export default function isPassiveSentence(sentence) {
33
+ const words = getWords(sentence);
34
+
35
+ // We only check words that is longer than 5 letters
36
+ let matchedPassives = words.filter(word => word.length > 5);
37
+
38
+ // Filter out words that are passive exceptions from an array
39
+ matchedPassives = matchedPassives.filter(word => !nonPassivesFullForms.includes(word));
40
+ matchedPassives = checkNonPassivesStemsList(matchedPassives);
41
+
42
+ return matchedPassives.some(word => passiveEndings.some(ending => word.endsWith(ending)));
43
+ }
@@ -0,0 +1,70 @@
1
+ /** @module researches/imageAltTags */
2
+
3
+ import imageAltAttribute from "../helpers/image/getAltAttribute";
4
+ import { findTopicFormsInString } from "../helpers/match/findKeywordFormsInString";
5
+ import { isEmpty } from "lodash";
6
+ import getImagesInTree from "../helpers/image/getImagesInTree";
7
+
8
+ /**
9
+ * Matches the alt-tags in the images found in the text.
10
+ * Returns an object with the totals and different alt-tags.
11
+ *
12
+ * @param {Array} imageNodes Array with all the image nodes in the text
13
+ * @param {Object} topicForms The object with the keyphrase and the synonyms forms from the paper.
14
+ * @param {string} locale The locale used for transliteration.
15
+ * @param {function} matchWordCustomHelper A language-specific helper function to match word in text.
16
+ *
17
+ * @returns {object} altProperties Object with all alt-tags that were found.
18
+ */
19
+ const matchAltProperties = function( imageNodes, topicForms, locale, matchWordCustomHelper ) {
20
+ const altProperties = {
21
+ noAlt: 0,
22
+ withAlt: 0,
23
+ withAltKeyword: 0,
24
+ withAltNonKeyword: 0,
25
+ };
26
+
27
+ imageNodes.forEach( imageNode => {
28
+ const alttag = imageAltAttribute( imageNode );
29
+
30
+ // If no alt-tag is set
31
+ if ( alttag === "" ) {
32
+ altProperties.noAlt++;
33
+ return;
34
+ }
35
+
36
+ // If no keyword is set, but the alt-tag is
37
+ if ( isEmpty( topicForms.keyphraseForms ) ) {
38
+ altProperties.withAlt++;
39
+ return;
40
+ }
41
+
42
+ // If the keyword is matched in the alt tag
43
+ const keywordMatchedInAltTag = findTopicFormsInString( topicForms, alttag, true, locale, matchWordCustomHelper );
44
+ if ( keywordMatchedInAltTag.percentWordMatches >= 50 ) {
45
+ altProperties.withAltKeyword++;
46
+ return;
47
+ }
48
+
49
+ altProperties.withAltNonKeyword++;
50
+ } );
51
+
52
+ return altProperties;
53
+ };
54
+
55
+ /**
56
+ * Checks the text for images, checks the type of each image and alt attributes for containing keywords
57
+ *
58
+ * @param {Paper} paper The paper to check for images.
59
+ * @param {Researcher} researcher The researcher to use for analysis.
60
+ *
61
+ * @returns {object} Object containing all types of found images
62
+ */
63
+ export default function altTagCount( paper, researcher ) {
64
+ const images = getImagesInTree( paper );
65
+
66
+ const topicForms = researcher.getResearch( "morphology" );
67
+ const matchWordCustomHelper = researcher.getHelper( "matchWordCustomHelper" );
68
+
69
+ return matchAltProperties( images, topicForms, paper.getLocale(), matchWordCustomHelper );
70
+ }
@@ -0,0 +1,19 @@
1
+ import getSentences from "../helpers/sentence/getSentences";
2
+ import sentencesLength from "../helpers/sentence/sentencesLength.js";
3
+ import removeHtmlBlocks from "../helpers/html/htmlParser";
4
+ import { filterShortcodesFromHTML } from "../helpers";
5
+
6
+ /**
7
+ * Count sentences in the text.
8
+ * @param {Paper} paper The Paper object to get text from.
9
+ * @param {Researcher} researcher The researcher to use for analysis.
10
+ * @returns {Array} The sentences from the text.
11
+ */
12
+ export default function( paper, researcher ) {
13
+ const memoizedTokenizer = researcher.getHelper( "memoizedTokenizer" );
14
+ let text = paper.getText();
15
+ text = removeHtmlBlocks( text );
16
+ text = filterShortcodesFromHTML( text, paper._attributes && paper._attributes.shortcodes );
17
+ const sentences = getSentences( text, memoizedTokenizer );
18
+ return sentencesLength( sentences, researcher );
19
+ }
@@ -0,0 +1,257 @@
1
+ import { escapeRegExp, filter, includes, isEmpty, uniq } from "lodash";
2
+
3
+ import wordMatch from "../helpers/match/matchTextWithWord.js";
4
+ import { findTopicFormsInString } from "../helpers/match/findKeywordFormsInString.js";
5
+ import { stemPrefixedFunctionWords } from "../helpers/morphology/stemPrefixedFunctionWords.js";
6
+
7
+ import processExactMatchRequest from "../helpers/match/processExactMatchRequest";
8
+ import getWords from "../helpers/word/getWords";
9
+ import { WORD_BOUNDARY_WITH_HYPHEN } from "../../config/wordBoundariesWithoutPunctuation";
10
+
11
+ let functionWords = [];
12
+
13
+ /**
14
+ * Strips all function words from the start of the given string.
15
+ *
16
+ * @param {string} str The string from which to strip the function words.
17
+ *
18
+ * @returns {boolean} Whether the string consists of function words only.
19
+ */
20
+ const stripFunctionWordsFromStart = function( str ) {
21
+ str = str.toLocaleLowerCase();
22
+
23
+ /*
24
+ * We use a word boundary regex that includes whitespaces, en-dashes, and hyphens for all languages.
25
+ * This means that when we filter out function words from the beginning of the title, we also filter out words
26
+ * separated by hyphens (e.g. 'three-piece'), as well as function words attached to a content word with a hyphen
27
+ * (e.g. 'after' in 'after-school).
28
+ * In Indonesian we normally don't want to treat hyphens as word boundaries, but in this case it makes sense because
29
+ * an Indonesian title can also contain function words seperated by hyphens at the beginning of the title (e.g. 'dua'
30
+ * and 'lima' in 'dua-lima ribuan').
31
+ * As a downside, single function words containing hyphens (e.g. 'vis-à-vis') won't be filtered out, but we are solving this
32
+ * by adding each word from such function words as separate entries in the function words lists.
33
+ */
34
+ let titleWords = getWords( str.toLocaleLowerCase(), WORD_BOUNDARY_WITH_HYPHEN );
35
+
36
+ // Strip all function words from the start of the string.
37
+ titleWords = filter( titleWords, function( word ) {
38
+ return ( ! includes( functionWords, word.trim().toLocaleLowerCase() ) );
39
+ } );
40
+
41
+ return isEmpty( titleWords );
42
+ };
43
+
44
+ /**
45
+ * Checks the position of the keyphrase in the SEO title.
46
+ *
47
+ * @param {string} title The SEO title of the paper.
48
+ * @param {number} position The position of the keyphrase in the SEO title.
49
+ *
50
+ * @returns {number} Potentially adjusted position of the keyphrase in the SEO title.
51
+ */
52
+ const adjustPosition = function( title, position ) {
53
+ // Don't do anything if position is already 0.
54
+ if ( position === 0 ) {
55
+ return position;
56
+ }
57
+
58
+ // Don't do anything if no function words exist for this language.
59
+ if ( functionWords.length === 0 ) {
60
+ return position;
61
+ }
62
+
63
+ // Strip all function words from the beginning of the SEO title.
64
+ const titleBeforeKeyword = title.substring( 0, position );
65
+ if ( stripFunctionWordsFromStart( titleBeforeKeyword ) ) {
66
+ /*
67
+ * Return position 0 if there are no words left in the SEO title before the keyword after filtering
68
+ * the function words (such that "keyword" in "the keyword" is still counted as position 0).
69
+ */
70
+ return 0;
71
+ }
72
+
73
+ return position;
74
+ };
75
+
76
+ /**
77
+ * Creates a cartesian product of the given arrays.
78
+ * This function is taken from: https://stackoverflow.com/questions/12303989/cartesian-product-of-multiple-arrays-in-javascript
79
+ *
80
+ * @param {array} arrays The arrays to create the cartesian product of.
81
+ *
82
+ * @returns {array} The cartesian product of the given arrays.
83
+ */
84
+ function cartesian( ...arrays ) {
85
+ return arrays.reduce( ( a, b ) => a.flatMap( d => b.map( e => [ d, e ].flat() ) ) );
86
+ }
87
+
88
+ /**
89
+ * Finds the exact match of the keyphrase in the SEO title for languages that have prefixed function words.
90
+ *
91
+ * @param {object} matchesObject The object that contains an array of matched words of the keyphrase in SEO title and the position of the match.
92
+ * @param {string} keyphrase The keyphrase to find in the SEO title.
93
+ * @param {object} result The result object to store the results in.
94
+ * @param {RegExp} prefixedFunctionWordsRegex The function to stem the prefixed function words.
95
+ * @param {string} title The SEO title of the paper.
96
+ * @param {string} locale The locale of the paper.
97
+ *
98
+ * @returns {object} The new result object containing the results of the analysis.
99
+ */
100
+ function findExactMatch( matchesObject, keyphrase, result, prefixedFunctionWordsRegex, title, locale ) {
101
+ let matchedPrefixedFunctionWords = [];
102
+ /*
103
+ For each matched word of the keyphrase, get the prefixed function word.
104
+ For example, for the matches array [ "القطط" ,"والوسيمة" ], the `matchedPrefixedFunctionWords` array will be [ "ال", "وال" ].
105
+ */
106
+ matchesObject.matches.forEach( match => {
107
+ const { prefix: prefixedFunctionWord } = stemPrefixedFunctionWords( match, prefixedFunctionWordsRegex );
108
+ matchedPrefixedFunctionWords.push( prefixedFunctionWord );
109
+ } );
110
+
111
+ // Split the keyphrase into words. For example, the keyphrase "قطط وسيمة" will be split into [ قطط", "وسيمة" ].
112
+ const splitKeyphrase = keyphrase.split( " " );
113
+ let keyphraseVariations = [];
114
+
115
+ // Add an empty string to the array to account for the case where the word is not prefixed, remove duplicates.
116
+ matchedPrefixedFunctionWords = uniq( matchedPrefixedFunctionWords.concat( [ "" ] ) );
117
+ /*
118
+ Create an array of arrays, where each array contains each word of the keyphrase with function word prefixes attached.
119
+ For example, when the split keyphrase is [ "قطط", "وسيمة" ] and the matchedPrefixedFunctionWords is [ "ال", "وال", "" ],
120
+ the array would be: [ [ "والقطط","القطط", "قطط" ], [ "والوسيمة" ,"الوسيمة", "وسيمة" ] ].
121
+ */
122
+ const arrays = [];
123
+ splitKeyphrase.forEach( word => {
124
+ arrays.push( matchedPrefixedFunctionWords.map( prefixedFunctionWord => prefixedFunctionWord + word ) );
125
+ } );
126
+ /*
127
+ Create the cartesian product of the created arrays: to create all possible combinations of the previously created arrays.
128
+ For example, the cartesian product of [ [ "والقطط","القطط", "قطط" ], [ "والوسيمة" ,"الوسيمة", "وسيمة" ] ] will be:
129
+ ...[ [ "والقطط", "والوسيمة" ], [ "والقطط", "الوسيمة" ], [ "والقطط", "وسيمة" ], [ "القطط", "والوسيمة" ]]
130
+ */
131
+ keyphraseVariations = cartesian( ...arrays );
132
+ // Turn the keyphrase combination array into strings. For example, [ "والقطط", "والوسيمة" ] will be turned into "والقطط والوسيمة".
133
+ keyphraseVariations = keyphraseVariations.map( variation => Array.isArray( variation ) ? variation.join( " " ) : variation );
134
+ keyphraseVariations.forEach( variation => {
135
+ // Check if the exact match of the keyphrase combination is found in the SEO title.
136
+ const foundMatch = wordMatch( title, variation, locale, false );
137
+ if ( foundMatch.count > 0 ) {
138
+ result.exactMatchFound = true;
139
+ // Adjust the position of the matched keyphrase if it's preceded by non-prefixed function words.
140
+ result.position = adjustPosition( title, foundMatch.position );
141
+ }
142
+ } );
143
+ /*
144
+ This check if to account for the case where an exact match of the keyphrase is not found in the SEO title,
145
+ but it's found in the position is 0.
146
+ */
147
+ if ( matchesObject.position === 0 ) {
148
+ result.position = 0;
149
+ }
150
+ return result;
151
+ }
152
+
153
+ /**
154
+ * An object containing the results of the keyphrase in SEO title research.
155
+ *
156
+ * @typedef {Object} KeyphraseInSEOTitleResult
157
+ * @property {boolean} exactMatchFound Whether the exact match of the keyphrase was found in the SEO title.
158
+ * @property {boolean} allWordsFound Whether all content words from the keyphrase were found in the SEO title.
159
+ * @property {number} position The position of the keyphrase in the SEO title.
160
+ * @property {boolean} exactMatchKeyphrase Whether the exact match was requested.
161
+ */
162
+
163
+ /**
164
+ * Checks if all content words from the keyphrase are found in the SEO title.
165
+ *
166
+ * @param {Paper} paper The Paper object that contains analysis data.
167
+ * @param {Researcher} researcher The language researcher.
168
+ * @param {string} keyword The keyword to find in the SEO title.
169
+ * @param {object} result The result object to store the results in.
170
+ * @param {RegExp} prefixedFunctionWordsRegex The researcher to use for analysis.
171
+ * @returns {object} The new result object containing the results of the analysis.
172
+ */
173
+ function checkIfAllWordsAreFound( paper, researcher, keyword, result, prefixedFunctionWordsRegex ) {
174
+ const title = paper.getTitle();
175
+ const locale = paper.getLocale();
176
+ const topicForms = researcher.getResearch( "morphology" );
177
+
178
+ // Use only keyphrase (not the synonyms) to match topic words in the SEO title.
179
+ const useSynonyms = false;
180
+
181
+ const separateWordsMatched = findTopicFormsInString( topicForms, title, useSynonyms, locale, false );
182
+
183
+ if ( separateWordsMatched.percentWordMatches === 100 ) {
184
+ /*
185
+ If all words are found and the position of the found words is 0, we further check if the exact match is found
186
+ for languages with a helper to stem prefixed function words, e.g. definite article.
187
+ Our support for this type of language is currently only for Arabic and Hebrew.
188
+ For example, in Arabic, the word "المنزل" (the house) is written as "ال" (the) + "منزل" (house).
189
+ And in Hebrew, the word "הבית" (the house) is written as "ה" (the) + "בית" (house).
190
+ In the above case, when the keyphrase is "منزل", and the SEO title starts with "المنزل" in Arabic,
191
+ or when the keyphrase is "בית" and the SEO title is "הבית", we want to consider this as an exact match
192
+ and the position is 0 if it's found in the beginning of the SEO title.
193
+ This treatment is to align with the way we match the keyphrase in SEO title for other languages.
194
+ For example, in English, the keyphrase "house" is considered to be found in the SEO title "the house" at position 0.
195
+ */
196
+ if ( prefixedFunctionWordsRegex ) {
197
+ const {
198
+ exactMatchFound,
199
+ position,
200
+ } = findExactMatch( separateWordsMatched, keyword, result, prefixedFunctionWordsRegex, title, locale );
201
+ result = {
202
+ ...result,
203
+ exactMatchFound: exactMatchFound,
204
+ position: position,
205
+ };
206
+ }
207
+ result.allWordsFound = true;
208
+ }
209
+ return result;
210
+ }
211
+
212
+ /**
213
+ * Counts the occurrences of the keyword in the SEO title. Returns the result that contains information on
214
+ * (1) whether the exact match of the keyphrase was used in the SEO title,
215
+ * (2) whether all (content) words from the keyphrase were found in the SEO title,
216
+ * (3) at which position the exact match was found in the SEO title.
217
+ *
218
+ * @param {Object} paper The paper containing SEO title and keyword.
219
+ * @param {Researcher} researcher The researcher to use for analysis.
220
+ *
221
+ * @returns {KeyphraseInSEOTitleResult} An object containing the information on whether the keyphrase was matched in the SEO title and how.
222
+ */
223
+ const findKeyphraseInSEOTitle = function( paper, researcher ) {
224
+ functionWords = researcher.getConfig( "functionWords" );
225
+
226
+ let keyword = escapeRegExp( paper.getKeyword() );
227
+ const title = paper.getTitle();
228
+ const locale = paper.getLocale();
229
+
230
+ let result = { exactMatchFound: false, allWordsFound: false, position: -1, exactMatchKeyphrase: false };
231
+
232
+ // Check if the keyphrase is enclosed in double quotation marks to ensure that only exact matches are processed.
233
+ const exactMatchRequest = processExactMatchRequest( keyword );
234
+
235
+ if ( exactMatchRequest.exactMatchRequested ) {
236
+ keyword = exactMatchRequest.keyphrase;
237
+ result.exactMatchKeyphrase = true;
238
+ }
239
+
240
+ // Check if the exact match of the keyphrase is found in the SEO title.
241
+ const prefixedFunctionWordsRegex = researcher.getConfig( "prefixedFunctionWordsRegex" );
242
+ const keywordMatched = wordMatch( title, keyword, locale, false );
243
+
244
+ if ( keywordMatched.count > 0 && ! prefixedFunctionWordsRegex ) {
245
+ result.exactMatchFound = true;
246
+ result.allWordsFound = true;
247
+ result.position = adjustPosition( title, keywordMatched.position );
248
+
249
+ return result;
250
+ }
251
+
252
+ result = checkIfAllWordsAreFound( paper, researcher, keyword, result, prefixedFunctionWordsRegex );
253
+
254
+ return result;
255
+ };
256
+
257
+ export default findKeyphraseInSEOTitle;
@@ -0,0 +1,86 @@
1
+ /** @module analyses/findKeywordInFirstParagraph */
2
+ import { inRange, isEmpty } from "lodash";
3
+
4
+ import { findTopicFormsInString } from "../helpers/match/findKeywordFormsInString.js";
5
+ import { getParentNode } from "../helpers/sentence/getSentencesFromTree";
6
+ import { createShortcodeTagsRegex } from "../helpers";
7
+
8
+
9
+ /**
10
+ * Checks if the introductory paragraph contains keyphrase or synonyms.
11
+ * First splits the first paragraph by sentences. Finds the first paragraph which contains sentences e.g., not an image).
12
+ * (1) Tries to find all (content) words from the keyphrase or a synonym phrase within one sentence.
13
+ * If found all words within one sentence, returns an object with foundInOneSentence = true and keyphraseOrSynonym = "keyphrase"
14
+ * or "synonym".
15
+ * If it did not find all words within one sentence, goes ahead with matching the keyphrase with the entire first paragraph.
16
+ * (2) Tries to find all (content) words from the keyphrase or a synonym phrase within the paragraph.
17
+ * If found all words within the paragraph, returns an object with foundInOneSentence = false, foundInParagraph = true,
18
+ * and keyphraseOrSynonym = "keyphrase" or "synonym".
19
+ * If found not all words within the paragraph of nothing at all, returns an object with foundInOneSentence = false,
20
+ * foundInParagraph = false, and keyphraseOrSynonym = "".
21
+ *
22
+ * @param {Paper} paper The text to check for paragraphs.
23
+ * @param {Researcher} researcher The researcher to use for analysis.
24
+ *
25
+ * @returns {Object} Whether the keyphrase words were found in one sentence, whether the keyphrase words were found in
26
+ * the paragraph, whether a keyphrase or a synonym phrase was matched.
27
+ */
28
+ export default function( paper, researcher ) {
29
+ let paragraphs = researcher.getResearch( "getParagraphs" );
30
+ // Filter captions from non-Classic editors.
31
+ paragraphs = paragraphs.filter( paragraph => {
32
+ const parentNode = getParentNode( paper, paragraph );
33
+ return ! ( paragraph.isImplicit && parentNode && parentNode.name === "figcaption" );
34
+ } );
35
+ // Filter captions from Classic editor and from classic block inside Block editor.
36
+ paragraphs = paragraphs.filter( paragraph => {
37
+ return ! ( paragraph.childNodes && paragraph.childNodes[ 0 ] &&
38
+ createShortcodeTagsRegex( [ "caption" ] ).test( paragraph.childNodes[ 0 ].value ) );
39
+ } );
40
+ const firstParagraph = paragraphs[ 0 ];
41
+
42
+ const topicForms = researcher.getResearch( "morphology" );
43
+ const matchWordCustomHelper = researcher.getHelper( "matchWordCustomHelper" );
44
+ const locale = paper.getLocale();
45
+ const startOffset = firstParagraph && firstParagraph.sourceCodeLocation.startOffset;
46
+
47
+ const mappedBlocks = paper._attributes.wpBlocks;
48
+ const filteredIntroductionBlock = mappedBlocks && mappedBlocks.filter( block => inRange( startOffset, block.startOffset, block.endOffset ) )[ 0 ];
49
+ const result = {
50
+ foundInOneSentence: false,
51
+ foundInParagraph: false,
52
+ keyphraseOrSynonym: "",
53
+ introduction: firstParagraph,
54
+ parentBlock: filteredIntroductionBlock || null,
55
+ };
56
+
57
+ if ( isEmpty( firstParagraph ) ) {
58
+ return result;
59
+ }
60
+
61
+ const sentences = firstParagraph.sentences.map( sentence => sentence.text );
62
+ // Use both keyphrase and synonyms to match topic words in the first paragraph.
63
+ const useSynonyms = true;
64
+
65
+ if ( ! isEmpty( sentences ) ) {
66
+ const firstResultSentence = sentences
67
+ .map( sentence => findTopicFormsInString( topicForms, sentence, useSynonyms, locale, matchWordCustomHelper ) )
68
+ .find( resultSentence => resultSentence.percentWordMatches === 100 );
69
+
70
+ if ( firstResultSentence ) {
71
+ result.foundInOneSentence = true;
72
+ result.foundInParagraph = true;
73
+ result.keyphraseOrSynonym = firstResultSentence.keyphraseOrSynonym;
74
+ return result;
75
+ }
76
+
77
+ const resultParagraph = findTopicFormsInString( topicForms, firstParagraph.innerText(), useSynonyms, locale, matchWordCustomHelper );
78
+ if ( resultParagraph.percentWordMatches === 100 ) {
79
+ result.foundInParagraph = true;
80
+ result.keyphraseOrSynonym = resultParagraph.keyphraseOrSynonym;
81
+ return result;
82
+ }
83
+ }
84
+
85
+ return result;
86
+ }