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,130 @@
1
+ import isPhrasingContent from "./isPhrasingContent";
2
+ import { Paragraph } from "../../structure";
3
+ import { isEmpty } from "lodash";
4
+ import SourceCodeLocation from "../../structure/SourceCodeLocation";
5
+
6
+ /**
7
+ * Checks whether a node is inter-element whitespace.
8
+ *
9
+ * @see https://html.spec.whatwg.org/#inter-element-whitespace
10
+ *
11
+ * @param {Object} node The node to check.
12
+ *
13
+ * @returns {boolean} Whether the node is inter-element whitespace.
14
+ */
15
+ function isInterElementWhitespace( node ) {
16
+ return node.name === "#text" && node.value && node.value.match( /^[\n\s]+$/g );
17
+ }
18
+
19
+ /**
20
+ * Checks whether a node has any children.
21
+ *
22
+ * @param {Object} node The node to check.
23
+ *
24
+ * @returns {boolean} Whether the node has any children.
25
+ */
26
+ function hasChildren( node ) {
27
+ return node && node.childNodes.length > 0;
28
+ }
29
+
30
+ /**
31
+ * Updates the source code location of an implicit paragraph based on its children.
32
+ * @param {Paragraph} implicitParagraph The implicit paragraph to update.
33
+ * @returns {void}
34
+ */
35
+ const updateImplicitParagraphLocation = ( implicitParagraph ) => {
36
+ const [ firstChild ] = implicitParagraph.childNodes.slice( 0 );
37
+ const [ lastChild ] = implicitParagraph.childNodes.slice( -1 );
38
+ if ( ( firstChild.sourceCodeRange || firstChild.sourceCodeLocation ) && ( lastChild.sourceCodeRange || lastChild.sourceCodeLocation ) ) {
39
+ const startOffset = firstChild.sourceCodeRange ? firstChild.sourceCodeRange.startOffset : firstChild.sourceCodeLocation.startOffset;
40
+ const endOffset = lastChild.sourceCodeRange ? lastChild.sourceCodeRange.endOffset : lastChild.sourceCodeLocation.endOffset;
41
+ implicitParagraph.sourceCodeLocation = new SourceCodeLocation( { startOffset: startOffset, endOffset: endOffset } );
42
+ }
43
+ };
44
+
45
+ /**
46
+ * Checks whether the current node is part of a double line break.
47
+ * @param {Node} currentNode The current node.
48
+ * @param {Node} prevNode The previous node (if available).
49
+ * @param {Node} nextNode The next node (if available).
50
+ * @returns {boolean} Whether the current node is part of a double line break
51
+ */
52
+ const isPartOfDoubleBreak = ( currentNode, prevNode, nextNode ) => {
53
+ const prevNodeIsBreak = prevNode && prevNode.name === "br";
54
+ const nextNodeIsBreak = nextNode && nextNode.name === "br";
55
+ return currentNode.name === "br" && ( prevNodeIsBreak || nextNodeIsBreak );
56
+ };
57
+
58
+ /**
59
+ * Combines series of consecutive phrasing content ("inline" tags like `a` and `span`, and text) into implicit paragraphs.
60
+ *
61
+ * @see https://html.spec.whatwg.org/#paragraphs
62
+ *
63
+ * @param {Array} nodes The nodes to combine where able to.
64
+ * @param {Object} parentSourceCodeLocation This parent node's location in the source code, from parse5.
65
+ *
66
+ * @returns {Array} The combined nodes.
67
+ */
68
+ function combineIntoImplicitParagraphs( nodes, parentSourceCodeLocation = {} ) {
69
+ const newNodes = [];
70
+ let currentSourceCodeLocation = {};
71
+ // For implicit paragraphs, strip off the start and end tag information from the parent's source code location.
72
+ if ( isEmpty( parentSourceCodeLocation ) ) {
73
+ const firstNode = nodes[ 0 ];
74
+ const lastNode = nodes[ nodes.length - 1 ];
75
+
76
+ if ( firstNode && lastNode && firstNode.sourceCodeLocation && lastNode.sourceCodeLocation ) {
77
+ currentSourceCodeLocation = new SourceCodeLocation( {
78
+ startOffset: firstNode.sourceCodeLocation.startOffset,
79
+ endOffset: lastNode.sourceCodeLocation.endOffset,
80
+ } );
81
+ }
82
+ } else {
83
+ currentSourceCodeLocation = new SourceCodeLocation( {
84
+ startOffset: parentSourceCodeLocation.startTag
85
+ ? parentSourceCodeLocation.startTag.endOffset
86
+ : parentSourceCodeLocation.startOffset,
87
+ endOffset: parentSourceCodeLocation.endTag
88
+ ? parentSourceCodeLocation.endTag.startOffset
89
+ : parentSourceCodeLocation.endOffset,
90
+ } );
91
+ }
92
+
93
+ let implicitParagraph = Paragraph.createImplicit( {}, [], currentSourceCodeLocation );
94
+ nodes.forEach( ( node, index, allNodes ) => {
95
+ const prevNode = 0 !== index && allNodes[ index - 1 ];
96
+ const nextNode = allNodes.length - 1 !== index && allNodes[ index + 1 ];
97
+
98
+ if ( isPhrasingContent( node.name ) && ! isInterElementWhitespace( node ) && ! isPartOfDoubleBreak( node, prevNode, nextNode ) ) {
99
+ // If the node is phrasing content, add it to the implicit paragraph.
100
+ implicitParagraph.childNodes.push( node );
101
+ } else {
102
+ // If the node is not phrasing content, this means that the implicit paragraph has ended.
103
+ if ( hasChildren( implicitParagraph ) ) {
104
+ // If the implicit paragraph has children this means an implicit paragraph was created:
105
+ // end the current implicit paragraph and start a new one.
106
+
107
+ // But before pushing, we need to update the source code location of the implicit paragraph based on its child nodes.
108
+ updateImplicitParagraphLocation( implicitParagraph );
109
+
110
+ // Update the startOffset of the next implicit paragraph to be the end of the current node.
111
+ if ( node.sourceCodeLocation ) {
112
+ currentSourceCodeLocation.startOffset = node.sourceCodeLocation.endOffset;
113
+ }
114
+
115
+ newNodes.push( implicitParagraph );
116
+ implicitParagraph = Paragraph.createImplicit( {}, [], currentSourceCodeLocation );
117
+ }
118
+ newNodes.push( node );
119
+ }
120
+ } );
121
+
122
+ if ( hasChildren( implicitParagraph ) ) {
123
+ updateImplicitParagraphLocation( implicitParagraph );
124
+
125
+ newNodes.push( implicitParagraph );
126
+ }
127
+ return newNodes;
128
+ }
129
+
130
+ export default combineIntoImplicitParagraphs;
@@ -0,0 +1,32 @@
1
+ import { isEmpty } from "lodash";
2
+ import { canBeChildOfParagraph as excludeFromAnalysis } from "./alwaysFilterElements";
3
+
4
+ /**
5
+ * Removes all child nodes from nodes that we want to exclude from the analysis, and that can be children of a paragraph
6
+ * or heading.
7
+ *
8
+ * The child nodes are removed because we don't want to include any text between those nodes in the analysis.
9
+ * If we don't remove them here, the text between those nodes will be considered as part of the paragraph's
10
+ * inner text and will be tokenized.
11
+ *
12
+ * These changes are only necessary for elements that can be children of paragraphs or headings. For example, we also
13
+ * don't want to analyze content in between `blockquote` tags, but these cannot be children of paragraphs/headings.
14
+ * Because of that, they wouldn't interfere with tokenizing the text inside paragraphs and headings and calculating
15
+ * the positions.
16
+ *
17
+ * @param {Node} node The node to check.
18
+ *
19
+ * @returns {Node} The filtered out node that's ready to be tokenized.
20
+ */
21
+ export function filterBeforeTokenizing( node ) {
22
+ if ( excludeFromAnalysis.includes( node.name ) ) {
23
+ node.childNodes = [];
24
+ }
25
+
26
+ // Recursively filters the node's children.
27
+ if ( ! isEmpty( node.childNodes ) ) {
28
+ node.childNodes.map( filterBeforeTokenizing );
29
+ }
30
+
31
+ return node;
32
+ }
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Filter helpers for the html tree filter.
3
+ * All helpers are functions that return a callback with the element as the only argument.
4
+ */
5
+
6
+
7
+ /**
8
+ * Creates a callback that checks if an element has a specific name.
9
+ *
10
+ * @param {string} name The name to check.
11
+ *
12
+ * @returns {function(*)} A function that returns true if the element has a specific name.
13
+ */
14
+ export function elementHasName( name ) {
15
+ return ( element ) => {
16
+ return element.name === name;
17
+ };
18
+ }
19
+
20
+ /**
21
+ * Creates a callback that checks the class of an element.
22
+ *
23
+ * @param {string} className The classname to filter out.
24
+ *
25
+ * @returns {function(*): boolean} A function that returns true if a Node has a certain class.
26
+ */
27
+ export function elementHasClass( className ) {
28
+ return ( blockElement ) => {
29
+ return !! blockElement.attributes.class && blockElement.attributes.class.has( className );
30
+ };
31
+ }
32
+
33
+ /**
34
+ * Creates a callback that checks if an element has a certain ID.
35
+ *
36
+ * @param {string} id The ID we want to check against.
37
+ *
38
+ * @returns {function(*): boolean} A function that returns true if an element has a certain ID.
39
+ */
40
+ export function elementHasID( id ) {
41
+ return ( element ) => {
42
+ return element.attributes.id === id;
43
+ };
44
+ }
@@ -0,0 +1,42 @@
1
+ import { Paragraph } from "../../structure";
2
+
3
+ /**
4
+ * Checks if a node should be kept or discarded.
5
+ * @param {Node} node A node.
6
+ * @param {Function[]} filters An array of filter callbacks.
7
+ * @returns {boolean} True if the node should be kept, false if the node should be discarded.
8
+ */
9
+ function shouldRemoveNode( node, filters ) {
10
+ // Always keep text nodes.
11
+ if ( node.name === "#text" ) {
12
+ return false;
13
+ }
14
+
15
+ // If any of the filters returns true, the node will be discarded.
16
+ return filters.some( filter => filter( node ) );
17
+ }
18
+
19
+ /**
20
+ * A recursive function that removes all nodes based on an array of filters.
21
+ * @param {Node} node A node. (Could be the entire tree.)
22
+ * @param {Function[]} filters An array of callbacks. If a callback returns true, the node is discarded.
23
+ * @returns {Node|undefined} A Node with all undesired subtrees removed.
24
+ */
25
+ export default function filterTree( node, filters ) {
26
+ // Returns undefined when the node should be disregarded.
27
+ if ( shouldRemoveNode( node, filters ) ) {
28
+ return;
29
+ }
30
+
31
+ // Recursively filters the node's children.
32
+ if ( node.childNodes ) {
33
+ node.childNodes = node.childNodes.filter( childNode => filterTree( childNode, filters ) );
34
+
35
+ // Drops implicit paragraphs if all their child nodes have been removed.
36
+ if ( node.childNodes.length === 0 && node instanceof Paragraph && node.isImplicit ) {
37
+ return;
38
+ }
39
+ }
40
+
41
+ return node;
42
+ }
@@ -0,0 +1,184 @@
1
+ import { Paragraph } from "../../structure";
2
+ import { canBeChildOfParagraph as excludeFromAnalysis } from "./alwaysFilterElements";
3
+
4
+ /**
5
+ * Gets the start and end positions of all descendant nodes' tags and stores them in an array.
6
+ * Each object in the array represents an opening or closing tag for nodes that have tags, or the full node for nodes
7
+ * without tags (such as 'comment' nodes).
8
+ * The startOffset and endOffset properties of the objects correspond to the start and end positions of the tags, or the
9
+ * start and end positions of the full node for nodes without tags.
10
+ * Extracting this data into a separate array makes it easier to work with it (e.g. sort it and loop over it).
11
+ *
12
+ * @param {Node[]} descendantNodes The descendant nodes to get positions from.
13
+ *
14
+ * @returns {SourceCodeRange[]} An array of the locations of each start and end tag in the source code, or the start and
15
+ * end locations of the full node for nodes without tags.
16
+ *
17
+ */
18
+ function getDescendantPositions( descendantNodes ) {
19
+ const descendantTagPositions = [];
20
+ descendantNodes.forEach( ( node ) => {
21
+ /*
22
+ * For nodes whose content we don't want to analyze, we should add the length of the full node to the array, to
23
+ * still take into account the whole element's length when calculating positions.
24
+ */
25
+ if ( excludeFromAnalysis.includes( node.name ) ) {
26
+ descendantTagPositions.push( node.sourceCodeLocation );
27
+ } else {
28
+ if ( node.sourceCodeLocation.startTag ) {
29
+ const startRange = {
30
+ startOffset: node.sourceCodeLocation.startTag.startOffset,
31
+ endOffset: node.sourceCodeLocation.startTag.endOffset,
32
+ };
33
+ /*
34
+ * Here, we need to account for the fact that earlier (in innerText.js), we treated a <br> as a newline character.
35
+ * Therefore, we need to subtract 1 from the endOffset to not count it twice.
36
+ */
37
+ if ( node.name === "br" ) {
38
+ startRange.endOffset = startRange.endOffset - 1;
39
+ }
40
+ descendantTagPositions.push( startRange );
41
+ }
42
+ /*
43
+ * Check whether node has an end tag before adding it to the array.
44
+ * Some nodes, such as the 'img' node, only have a start tag.
45
+ */
46
+ if ( node.sourceCodeLocation.endTag ) {
47
+ descendantTagPositions.push( node.sourceCodeLocation.endTag );
48
+ }
49
+ }
50
+ } );
51
+ // Sort the tag position objects by the start tag position in ascending order.
52
+ descendantTagPositions.sort( ( a, b ) => a.startOffset - b.startOffset );
53
+
54
+ return descendantTagPositions;
55
+ }
56
+
57
+ /**
58
+ * Adjusts the end position of the text element to account for descendant node tags that overlap with the text element.
59
+ * We want to add the length of tags that are directly preceding the start of the text, or that are between the start
60
+ * and end of the text, to the end position of the text element.
61
+ * For example, if the text is "<span><em>Hello</em>, world!</span>", the length of all tags except for the closing
62
+ * </span> tag should be added to the end position of the sentence.
63
+ *
64
+ * @param {SourceCodeRange[]} descendantTagPositions The positions of the descendant nodes' tags.
65
+ * @param {number} textElementStart The start position of a text element.
66
+ * @param {number} textElementEnd The end position of a text element.
67
+ *
68
+ * @returns {number} The adjusted end position of the text element.
69
+ */
70
+ function adjustElementEnd( descendantTagPositions, textElementStart, textElementEnd ) {
71
+ /*
72
+ * If the start position of a descendant's node tag is between the start and end position of the text element, or is
73
+ * the same as the start position of the text element, add the tag's length to the end position of the text element.
74
+ */
75
+ descendantTagPositions.forEach( ( position ) => {
76
+ if ( position.startOffset >= textElementStart && position.startOffset < textElementEnd ) {
77
+ textElementEnd += ( position.endOffset - position.startOffset );
78
+ }
79
+ } );
80
+
81
+ return textElementEnd;
82
+ }
83
+
84
+ /**
85
+ * Adjusts the start position of the text element to exclude descendant node tags at the beginning of the text element.
86
+ * For example, the start position of the text element `<span>Hello!</span>`
87
+ * should be adjusted to start at the `H`, not at the start tag of the opening `<span>` tag.
88
+ * @param {SourceCodeRange[]} descendantTagPositions The positions of the descendant nodes' tags.
89
+ * @param {Number} textElementStart The start position of a text element.
90
+ *
91
+ * @returns {Number} The adjusted start position of the text element.
92
+ */
93
+ function adjustTextElementStart( descendantTagPositions, textElementStart ) {
94
+ /*
95
+ * If the start position of a descendant's node tag is between the start and end position of the text element, or is
96
+ * the same as the start/end position of the text element, add the tag's length to the end position of the text element.
97
+ */
98
+ descendantTagPositions.forEach( ( position ) => {
99
+ if ( position.startOffset === textElementStart ) {
100
+ textElementStart += ( position.endOffset - position.startOffset );
101
+ }
102
+ } );
103
+
104
+ return textElementStart;
105
+ }
106
+
107
+ /**
108
+ * Retrieves the initial start offset for the first text element.
109
+ * Normally, that is the end offset of the start tag of the parent node.
110
+ * In case of implicit paragraphs, we use the start offset of the node as a whole.
111
+ *
112
+ * @param {Paragraph|Heading} node The node to retrieve the start position from.
113
+ * @returns {number} The start offset for the first text element.
114
+ */
115
+ const getTextElementStart = ( node ) => {
116
+ return node instanceof Paragraph && node.isImplicit
117
+ ? node.sourceCodeLocation.startOffset
118
+ : node.sourceCodeLocation.startTag.endOffset;
119
+ };
120
+
121
+ /**
122
+ * Gets the start and end positions of text elements (sentences or tokens) in the source code.
123
+ *
124
+ * @param {Paragraph|Heading} node The paragraph or heading node.
125
+ * @param {Sentence[]|Token[]} textElements The sentences or tokens in the node.
126
+ * @param {number} startOffset The start position of the node in the source code.
127
+ * Defaults to -1 which signals that it should not be used.
128
+ *
129
+ * @returns {Sentence[]|Token[]} The sentences or tokens, with their positions in the source code.
130
+ */
131
+ export default function getTextElementPositions( node, textElements, startOffset = -1 ) {
132
+ // We cannot calculate positions if there are no text elements, or if we don't know the node's source code location.
133
+ if ( textElements.length === 0 || ! node.sourceCodeLocation ) {
134
+ return textElements;
135
+ }
136
+
137
+ /*
138
+ * Set the (initial) start offset of the first text element.
139
+ * If the start offset has been provided (in the case of Tokens), use that.
140
+ * Otherwise, determine the start offset from the parent Paragraph or Heading node.
141
+ */
142
+ let textElementStart = startOffset >= 0 ? startOffset : getTextElementStart( node );
143
+
144
+ let textElementEnd;
145
+ let descendantTagPositions = [];
146
+
147
+ /*
148
+ * Check if the node has any descendant nodes that have a sourceCodeLocation property (all nodes other than Text nodes
149
+ * should have this property). If such nodes exist, store the positions of each node's opening and closing tags in
150
+ * an array. These positions will have to be taken into account when calculating the position of the text elements.
151
+ */
152
+ if ( node.findAll ) {
153
+ const descendantNodes = node.findAll( descendantNode => descendantNode.sourceCodeLocation, true );
154
+ if ( descendantNodes.length > 0 ) {
155
+ descendantTagPositions = getDescendantPositions( descendantNodes );
156
+ }
157
+ }
158
+
159
+ textElements.forEach( ( textElement ) => {
160
+ // Set the end position to the start position + the length of the textElement.
161
+ textElementEnd = textElementStart + textElement.text.length;
162
+
163
+ /*
164
+ * If there are descendant tags, possibly adjust the textElementEnd and textElementStart.
165
+ * The textElementEnd should be adjusted to include the length of any descendant tags until the end of the text, in
166
+ * addition to the length of the text itself. Descendant tags AFTER the end of the text should not be included.
167
+ * The textElementStart should be adjusted so that it is where the actual text starts, not including any descendant
168
+ * tags preceding the text.
169
+ */
170
+ if ( descendantTagPositions.length > 0 ) {
171
+ textElementEnd = adjustElementEnd( descendantTagPositions, textElementStart, textElementEnd );
172
+
173
+ textElementStart = adjustTextElementStart( descendantTagPositions, textElementStart );
174
+ }
175
+
176
+ // Add the start and end positions to the textElement object.
177
+ textElement.sourceCodeRange = { startOffset: textElementStart, endOffset: textElementEnd };
178
+
179
+ // Start position of the next textElement is the end position of current textElement.
180
+ textElementStart = textElementEnd;
181
+ } );
182
+
183
+ return textElements;
184
+ }
@@ -0,0 +1,9 @@
1
+
2
+ /**
3
+ * When splits a string of html classes into a set html classes.
4
+ * @param {string} classString The value of the class attribute.
5
+ * @returns {Set} A set containing all individual values of the class.
6
+ */
7
+ export default function parseClassAttribute( classString ) {
8
+ return new Set( classString.split( " " ) );
9
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Tag names of HTML elements that are considered phrasing content
3
+ * in the HTML content model.
4
+ *
5
+ * @see https://html.spec.whatwg.org/#phrasing-content
6
+ *
7
+ * @type {string[]}
8
+ */
9
+ const phrasingContentTags = [
10
+ "b", "big", "i", "small", "tt", "abbr", "acronym", "cite", "code", "dfn", "em", "kbd", "strong",
11
+ "samp", "time", "var", "a", "bdo", "br", "img", "map", "object", "q", "script", "span", "sub", "sup", "button",
12
+ "input", "label", "select", "textarea",
13
+ ];
14
+
15
+ /**
16
+ * Checks whether a node is considered phrasing content.
17
+ *
18
+ * @see https://html.spec.whatwg.org/#phrasing-content
19
+ *
20
+ * @param {string} nodeName The name/tag of the node to check if it is phrasing content.
21
+ *
22
+ * @returns {boolean} Whether the node is phrasing content.
23
+ */
24
+ function isPhrasingContent( nodeName ) {
25
+ return phrasingContentTags.includes( nodeName ) || nodeName === "#text";
26
+ }
27
+
28
+ export default isPhrasingContent;
@@ -0,0 +1,151 @@
1
+ import { isUndefined } from "lodash";
2
+ const blockTokenizer = /<!--\s+wp:([a-z][a-z0-9_-]*\/)?([a-z][a-z0-9_-]*)\s+({(?:(?=([^}]+|}+(?=})|(?!}\s+\/?-->)[^])*)\5|[^]*?)}\s+)?(\/)?-->/g;
3
+
4
+ /**
5
+ * Get all the blocks including the inner blocks.
6
+ *
7
+ * @param {Paper} paper The paper to get all the blocks from.
8
+ *
9
+ * @returns {Object[]} An array of blocks.
10
+ */
11
+ const getAllBlocks = ( paper ) => {
12
+ const blocks = paper._attributes.wpBlocks;
13
+ const flattenBlocks = [];
14
+ if ( ! ( blocks && blocks.length > 0 ) ) {
15
+ return [];
16
+ }
17
+ blocks.forEach( ( block ) => {
18
+ if ( block.innerBlocks.length > 0 ) {
19
+ const innerBlocks = block.innerBlocks;
20
+ flattenBlocks.push(
21
+ block, ...innerBlocks
22
+ );
23
+ } else {
24
+ flattenBlocks.push( block );
25
+ }
26
+ } );
27
+ return flattenBlocks;
28
+ };
29
+
30
+
31
+ /**
32
+ * Gets the offset of each block and set it to the tree.
33
+ *
34
+ * @param {Object[]} blocks An array of blocks.
35
+ * @param {string} text The text.
36
+ *
37
+ * @returns {void}
38
+ */
39
+ export function updateBlocksOffset( blocks, text ) {
40
+ if ( blocks.length === 0 ) {
41
+ return;
42
+ }
43
+ blocks.forEach( ( currentBlock, index ) => {
44
+ const matches = blockTokenizer.exec( text );
45
+ if ( currentBlock.name === "core/freeform" ) {
46
+ const previousBlock = blocks[ index - 1 ];
47
+ if ( previousBlock ) {
48
+ const previousBlockEndOffset = previousBlock.endOffset;
49
+ const startedAt = previousBlockEndOffset + 2;
50
+ currentBlock.startOffset = startedAt;
51
+ currentBlock.endOffset = startedAt + currentBlock.blockLength;
52
+ currentBlock.contentOffset = startedAt;
53
+ } else {
54
+ currentBlock.startOffset = 0;
55
+ currentBlock.endOffset = 0 + currentBlock.blockLength;
56
+ currentBlock.contentOffset = 0;
57
+ }
58
+ } else {
59
+ if ( null === matches ) {
60
+ return;
61
+ }
62
+ const [ match ] = matches;
63
+ const startedAt = matches.index;
64
+ const length = match.length;
65
+ currentBlock.startOffset = startedAt;
66
+ currentBlock.endOffset = startedAt + currentBlock.blockLength;
67
+ currentBlock.contentOffset = startedAt + length + 1;
68
+ }
69
+
70
+ if ( currentBlock.innerBlocks && currentBlock.innerBlocks.length > 0 ) {
71
+ updateBlocksOffset( currentBlock.innerBlocks, text );
72
+ }
73
+ } );
74
+ }
75
+
76
+
77
+ /**
78
+ * Gets the client id for each block and set it to the child nodes.
79
+ * Additionally, when a node has an attribute with 'id' key, also set this id to the first.
80
+ *
81
+ * @param {Node} rootNode The root node.
82
+ * @param {Object[]} blocks An array of blocks.
83
+ * @param {string} clientId The client id to set.
84
+ *
85
+ * @returns {void}
86
+ */
87
+ function updateClientIdAndAttrIdForSubtree( rootNode, blocks, clientId ) {
88
+ if ( ! rootNode ) {
89
+ return;
90
+ }
91
+
92
+ let currentClientId = clientId;
93
+ if ( rootNode.sourceCodeLocation && ! isUndefined( rootNode.sourceCodeLocation.startOffset ) ) {
94
+ const foundBlock = blocks.find( block => block.contentOffset === rootNode.sourceCodeLocation.startOffset );
95
+ if ( foundBlock ) {
96
+ currentClientId = foundBlock.clientId;
97
+ }
98
+ }
99
+
100
+ // If the clientId is not undefined, also set this to the root node.
101
+ if ( currentClientId ) {
102
+ rootNode.clientId = currentClientId;
103
+ }
104
+
105
+ // If the node has children, update the clientId for them.
106
+ ( rootNode.childNodes || [] ).forEach( ( node ) => {
107
+ if ( node.attributes && node.attributes.id ) {
108
+ /*
109
+ * If the node's child has an attribute with 'id' key, also set this id to the first and third child node.
110
+ * This step is specifically for parsing the Yoast blocks.
111
+ *
112
+ * For Yoast blocks, if a node has attribute with 'id' key, this means that this node represents a sub-block.
113
+ * A sub-block has four child nodes:
114
+ * 1. The first child node of the sub-block, represents the first section of that sub-block.
115
+ * - For example, in Yoast FAQ block, the first child node would represent the "question" section.
116
+ * 2. The second child node of the sub-block, only contains a new line.
117
+ * 3. The third child node of the sub-block, represents the second section of that sub-block.
118
+ * - For example, in Yoast FAQ block, the second child node would represent the "answer" section.
119
+ * 4. The fourth child node of the sub-block, only contains a new line.
120
+ */
121
+ if ( node.childNodes && node.childNodes.length > 3 ) {
122
+ node.childNodes[ 0 ].attributeId = node.attributes.id;
123
+ node.childNodes[ 0 ].isFirstSection = true;
124
+
125
+ node.childNodes[ 2 ].attributeId = node.attributes.id;
126
+ node.childNodes[ 2 ].isFirstSection = false;
127
+ }
128
+ }
129
+ updateClientIdAndAttrIdForSubtree( node, blocks, currentClientId );
130
+ } );
131
+ }
132
+
133
+ /**
134
+ * Parses blocks and updates the clientId for the subtree.
135
+ * Additionally, when a node has an attribute with 'id' key, also set this id to the first and third child node of that node.
136
+ *
137
+ * @param {Paper} paper The paper to parse.
138
+ * @param {Node} node The node to parse.
139
+ *
140
+ * @returns {void}
141
+ */
142
+ export default function( paper, node ) {
143
+ const blocks = paper._attributes.wpBlocks || [];
144
+ blockTokenizer.lastIndex = 0;
145
+ updateBlocksOffset( blocks, paper.getText() );
146
+
147
+ const rawBlocks = getAllBlocks( paper );
148
+
149
+ // eslint-disable-next-line no-undefined
150
+ updateClientIdAndAttrIdForSubtree( node, rawBlocks, undefined );
151
+ }