axyseo 2.0.0-alpha.0.0.4 → 2.0.0-alpha.0.0.5

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 (637) hide show
  1. package/package.json +5 -2
  2. package/.browserslistrc +0 -1
  3. package/.gitattributes +0 -1
  4. package/babel.config.js +0 -3
  5. package/eslint.config.mjs +0 -119
  6. package/src/bundledPlugins/index.js +0 -5
  7. package/src/bundledPlugins/previouslyUsedKeywords.js +0 -192
  8. package/src/config/diacritics.js +0 -106
  9. package/src/config/getTransliterations.js +0 -1447
  10. package/src/config/transliterationsWPstyle.js +0 -774
  11. package/src/config/wordBoundaries.js +0 -23
  12. package/src/config/wordBoundariesWithoutPunctuation.js +0 -9
  13. package/src/const/analysis.js +0 -41
  14. package/src/errors/invalidType.js +0 -14
  15. package/src/errors/missingArgument.js +0 -14
  16. package/src/helpers/createMeasurementElement.js +0 -40
  17. package/src/helpers/domManipulation.js +0 -65
  18. package/src/helpers/errors.js +0 -26
  19. package/src/helpers/factory.js +0 -219
  20. package/src/helpers/formatNumber.js +0 -12
  21. package/src/helpers/formatString.js +0 -33
  22. package/src/helpers/getLanguagesWithWordComplexity.js +0 -8
  23. package/src/helpers/getLanguagesWithWordFormSupport.js +0 -11
  24. package/src/helpers/getWordComplexityConfig.js +0 -20
  25. package/src/helpers/getWordComplexityHelper.js +0 -20
  26. package/src/helpers/htmlEntities.js +0 -41
  27. package/src/helpers/includesAny.js +0 -19
  28. package/src/helpers/index.js +0 -127
  29. package/src/helpers/shortlinker/Shortlinker.js +0 -75
  30. package/src/helpers/shortlinker/index.js +0 -1
  31. package/src/helpers/shortlinker/singleton.js +0 -68
  32. package/src/helpers/types.js +0 -34
  33. package/src/index.js +0 -60
  34. package/src/languageProcessing/AbstractResearcher.js +0 -366
  35. package/src/languageProcessing/helpers/highlighting/getMarkingsInSentence.js +0 -125
  36. package/src/languageProcessing/helpers/html/getFieldsToMark.js +0 -29
  37. package/src/languageProcessing/helpers/html/getSubheadingTexts.js +0 -47
  38. package/src/languageProcessing/helpers/html/getSubheadings.js +0 -95
  39. package/src/languageProcessing/helpers/html/html.js +0 -176
  40. package/src/languageProcessing/helpers/html/htmlParser.js +0 -145
  41. package/src/languageProcessing/helpers/html/matchParagraphs.js +0 -62
  42. package/src/languageProcessing/helpers/html/normalizeHTML.js +0 -16
  43. package/src/languageProcessing/helpers/image/getAltAttribute.js +0 -20
  44. package/src/languageProcessing/helpers/image/getImagesInTree.js +0 -16
  45. package/src/languageProcessing/helpers/image/imageInText.js +0 -19
  46. package/src/languageProcessing/helpers/index.js +0 -12
  47. package/src/languageProcessing/helpers/language/getLanguage.js +0 -9
  48. package/src/languageProcessing/helpers/link/checkNofollow.js +0 -38
  49. package/src/languageProcessing/helpers/link/getAnchorsFromText.js +0 -32
  50. package/src/languageProcessing/helpers/link/getLinkType.js +0 -32
  51. package/src/languageProcessing/helpers/match/findKeywordFormsInString.js +0 -101
  52. package/src/languageProcessing/helpers/match/isDoubleQuoted.js +0 -13
  53. package/src/languageProcessing/helpers/match/matchTextWithArray.js +0 -36
  54. package/src/languageProcessing/helpers/match/matchTextWithTransliteration.js +0 -58
  55. package/src/languageProcessing/helpers/match/matchTextWithWord.js +0 -45
  56. package/src/languageProcessing/helpers/match/matchWordFormsWithSentence.js +0 -164
  57. package/src/languageProcessing/helpers/match/processExactMatchRequest.js +0 -20
  58. package/src/languageProcessing/helpers/morphology/baseStemmer.js +0 -11
  59. package/src/languageProcessing/helpers/morphology/buildFormRule.js +0 -19
  60. package/src/languageProcessing/helpers/morphology/buildTopicStems.js +0 -169
  61. package/src/languageProcessing/helpers/morphology/createRulesFromArrays.js +0 -45
  62. package/src/languageProcessing/helpers/morphology/exceptionListHelpers.js +0 -65
  63. package/src/languageProcessing/helpers/morphology/findMatchingEndingInArray.js +0 -24
  64. package/src/languageProcessing/helpers/morphology/flattenSortLength.js +0 -14
  65. package/src/languageProcessing/helpers/morphology/getAllWordsFromPaper.js +0 -39
  66. package/src/languageProcessing/helpers/morphology/regexHelpers.js +0 -44
  67. package/src/languageProcessing/helpers/morphology/stemHelpers.js +0 -38
  68. package/src/languageProcessing/helpers/morphology/stemPrefixedFunctionWords.js +0 -31
  69. package/src/languageProcessing/helpers/passiveVoice/periphrastic/directPrecedenceException.js +0 -36
  70. package/src/languageProcessing/helpers/passiveVoice/periphrastic/freeAuxiliaryParticipleOrder/getClausesSplitOnStopWords.js +0 -113
  71. package/src/languageProcessing/helpers/passiveVoice/periphrastic/freeAuxiliaryParticipleOrder/nonDirectParticiplePrecedenceException.js +0 -45
  72. package/src/languageProcessing/helpers/passiveVoice/periphrastic/getClauses.js +0 -231
  73. package/src/languageProcessing/helpers/passiveVoice/periphrastic/getIndicesWithRegex.js +0 -20
  74. package/src/languageProcessing/helpers/passiveVoice/periphrastic/matchRegularParticiples.js +0 -23
  75. package/src/languageProcessing/helpers/passiveVoice/periphrastic/precedenceException.js +0 -40
  76. package/src/languageProcessing/helpers/prominentWords/determineProminentWords.js +0 -238
  77. package/src/languageProcessing/helpers/regex/createRegexFromArray.js +0 -35
  78. package/src/languageProcessing/helpers/regex/createRegexFromDoubleArray.js +0 -34
  79. package/src/languageProcessing/helpers/regex/createWordRegex.js +0 -30
  80. package/src/languageProcessing/helpers/regex/matchStringWithRegex.js +0 -19
  81. package/src/languageProcessing/helpers/regex/searchAndReplaceWithOneRegex.js +0 -14
  82. package/src/languageProcessing/helpers/sanitize/doubleQuotes.js +0 -12
  83. package/src/languageProcessing/helpers/sanitize/filterShortcodesFromTree.js +0 -131
  84. package/src/languageProcessing/helpers/sanitize/mergeListItems.js +0 -24
  85. package/src/languageProcessing/helpers/sanitize/parseSynonyms.js +0 -20
  86. package/src/languageProcessing/helpers/sanitize/quotes.js +0 -46
  87. package/src/languageProcessing/helpers/sanitize/removeEmailAddresses.js +0 -12
  88. package/src/languageProcessing/helpers/sanitize/removePunctuation.js +0 -64
  89. package/src/languageProcessing/helpers/sanitize/removePunctuationExceptQuotes.js +0 -18
  90. package/src/languageProcessing/helpers/sanitize/removeSentenceTerminators.js +0 -13
  91. package/src/languageProcessing/helpers/sanitize/removeURLs.js +0 -13
  92. package/src/languageProcessing/helpers/sanitize/sanitizeLineBreakTag.js +0 -11
  93. package/src/languageProcessing/helpers/sanitize/sanitizeString.js +0 -18
  94. package/src/languageProcessing/helpers/sanitize/stripHTMLTags.js +0 -57
  95. package/src/languageProcessing/helpers/sanitize/stripNonTextTags.js +0 -15
  96. package/src/languageProcessing/helpers/sanitize/stripNumbers.js +0 -21
  97. package/src/languageProcessing/helpers/sanitize/stripSpaces.js +0 -23
  98. package/src/languageProcessing/helpers/sanitize/stripWordBoundaries.js +0 -65
  99. package/src/languageProcessing/helpers/sanitize/unifyWhitespace.js +0 -61
  100. package/src/languageProcessing/helpers/sentence/SentenceTokenizer.js +0 -640
  101. package/src/languageProcessing/helpers/sentence/countSentences.js +0 -20
  102. package/src/languageProcessing/helpers/sentence/getSentences.js +0 -65
  103. package/src/languageProcessing/helpers/sentence/getSentencesFromTree.js +0 -55
  104. package/src/languageProcessing/helpers/sentence/memoizedSentenceTokenizer.js +0 -28
  105. package/src/languageProcessing/helpers/sentence/sentencesLength.js +0 -31
  106. package/src/languageProcessing/helpers/syllables/DeviationFragment.js +0 -112
  107. package/src/languageProcessing/helpers/syllables/countSyllables.js +0 -182
  108. package/src/languageProcessing/helpers/syllables/syllableCountIterator.js +0 -56
  109. package/src/languageProcessing/helpers/syllables/syllableCountStep.js +0 -68
  110. package/src/languageProcessing/helpers/transform/transformWordsWithHyphens.js +0 -17
  111. package/src/languageProcessing/helpers/transliterate/replaceDiacritics.js +0 -22
  112. package/src/languageProcessing/helpers/transliterate/specialCharacterMappings.js +0 -214
  113. package/src/languageProcessing/helpers/transliterate/transliterate.js +0 -20
  114. package/src/languageProcessing/helpers/transliterate/transliterateWPstyle.js +0 -21
  115. package/src/languageProcessing/helpers/url/parseSlug.js +0 -10
  116. package/src/languageProcessing/helpers/url/url.js +0 -172
  117. package/src/languageProcessing/helpers/word/addWordboundary.js +0 -37
  118. package/src/languageProcessing/helpers/word/areWordsInSentence.js +0 -16
  119. package/src/languageProcessing/helpers/word/countMetaDescriptionLength.js +0 -18
  120. package/src/languageProcessing/helpers/word/countWords.js +0 -14
  121. package/src/languageProcessing/helpers/word/createPunctuationTokens.js +0 -42
  122. package/src/languageProcessing/helpers/word/filterWordsFromArray.js +0 -15
  123. package/src/languageProcessing/helpers/word/followsIndex.js +0 -25
  124. package/src/languageProcessing/helpers/word/getAllWordsFromTree.js +0 -23
  125. package/src/languageProcessing/helpers/word/getWords.js +0 -43
  126. package/src/languageProcessing/helpers/word/includesIndex.js +0 -30
  127. package/src/languageProcessing/helpers/word/indices.js +0 -146
  128. package/src/languageProcessing/helpers/word/markWordsInSentences.js +0 -173
  129. package/src/languageProcessing/helpers/word/matchWordInSentence.js +0 -61
  130. package/src/languageProcessing/helpers/word/splitIntoTokens.js +0 -46
  131. package/src/languageProcessing/index.js +0 -91
  132. package/src/languageProcessing/languages/_default/Researcher.js +0 -34
  133. package/src/languageProcessing/languages/_default/helpers/getStemmer.js +0 -11
  134. package/src/languageProcessing/languages/ar/Researcher.js +0 -46
  135. package/src/languageProcessing/languages/ar/config/firstWordExceptions.js +0 -14
  136. package/src/languageProcessing/languages/ar/config/functionWords.js +0 -329
  137. package/src/languageProcessing/languages/ar/config/internal/passiveVerbsWithLongVowel.js +0 -570
  138. package/src/languageProcessing/languages/ar/config/prefixedFunctionWords.js +0 -5
  139. package/src/languageProcessing/languages/ar/config/transitionWords.js +0 -19
  140. package/src/languageProcessing/languages/ar/config/twoPartTransitionWords.js +0 -7
  141. package/src/languageProcessing/languages/ar/helpers/createBasicWordForms.js +0 -32
  142. package/src/languageProcessing/languages/ar/helpers/getStemmer.js +0 -22
  143. package/src/languageProcessing/languages/ar/helpers/internal/stem.js +0 -632
  144. package/src/languageProcessing/languages/ar/helpers/isPassiveSentence.js +0 -33
  145. package/src/languageProcessing/languages/ca/Researcher.js +0 -43
  146. package/src/languageProcessing/languages/ca/config/sentenceLength.js +0 -3
  147. package/src/languageProcessing/languages/ca/config/transitionWords.js +0 -31
  148. package/src/languageProcessing/languages/ca/config/twoPartTransitionWords.js +0 -7
  149. package/src/languageProcessing/languages/ca/helpers/getStemmer.js +0 -11
  150. package/src/languageProcessing/languages/cs/Researcher.js +0 -44
  151. package/src/languageProcessing/languages/cs/config/firstWordExceptions.js +0 -15
  152. package/src/languageProcessing/languages/cs/config/functionWords.js +0 -121
  153. package/src/languageProcessing/languages/cs/config/internal/passiveVoiceAuxiliaries.js +0 -38
  154. package/src/languageProcessing/languages/cs/config/internal/passiveVoiceEndings.js +0 -54
  155. package/src/languageProcessing/languages/cs/config/stopWords.js +0 -42
  156. package/src/languageProcessing/languages/cs/config/transitionWords.js +0 -26
  157. package/src/languageProcessing/languages/cs/config/twoPartTransitionWords.js +0 -8
  158. package/src/languageProcessing/languages/cs/helpers/getClauses.js +0 -26
  159. package/src/languageProcessing/languages/cs/helpers/getStemmer.js +0 -22
  160. package/src/languageProcessing/languages/cs/helpers/internal/getParticiples.js +0 -16
  161. package/src/languageProcessing/languages/cs/helpers/internal/stem.js +0 -499
  162. package/src/languageProcessing/languages/cs/values/Clause.js +0 -34
  163. package/src/languageProcessing/languages/de/Researcher.js +0 -52
  164. package/src/languageProcessing/languages/de/config/firstWordExceptions.js +0 -17
  165. package/src/languageProcessing/languages/de/config/functionWords.js +0 -303
  166. package/src/languageProcessing/languages/de/config/internal/exceptionsParticiplesActive.js +0 -2231
  167. package/src/languageProcessing/languages/de/config/internal/passiveVoiceAuxiliaries.js +0 -96
  168. package/src/languageProcessing/languages/de/config/internal/passiveVoiceIrregulars.js +0 -368
  169. package/src/languageProcessing/languages/de/config/internal/passiveVoiceRegex.js +0 -72
  170. package/src/languageProcessing/languages/de/config/keyphraseLength.js +0 -11
  171. package/src/languageProcessing/languages/de/config/stopWords.js +0 -67
  172. package/src/languageProcessing/languages/de/config/syllables.json +0 -460
  173. package/src/languageProcessing/languages/de/config/transitionWords.js +0 -31
  174. package/src/languageProcessing/languages/de/config/twoPartTransitionWords.js +0 -12
  175. package/src/languageProcessing/languages/de/config/wordComplexity.js +0 -4
  176. package/src/languageProcessing/languages/de/helpers/calculateFleschReadingScore.js +0 -18
  177. package/src/languageProcessing/languages/de/helpers/checkIfWordIsComplex.js +0 -40
  178. package/src/languageProcessing/languages/de/helpers/checkIfWordIsFunction.js +0 -15
  179. package/src/languageProcessing/languages/de/helpers/getClauses.js +0 -25
  180. package/src/languageProcessing/languages/de/helpers/getStemmer.js +0 -22
  181. package/src/languageProcessing/languages/de/helpers/internal/SentenceTokenizer.js +0 -31
  182. package/src/languageProcessing/languages/de/helpers/internal/detectAndStemRegularParticiple.js +0 -128
  183. package/src/languageProcessing/languages/de/helpers/internal/determineStem.js +0 -128
  184. package/src/languageProcessing/languages/de/helpers/internal/getParticiples.js +0 -40
  185. package/src/languageProcessing/languages/de/helpers/internal/stem.js +0 -215
  186. package/src/languageProcessing/languages/de/helpers/memoizedSentenceTokenizer.js +0 -28
  187. package/src/languageProcessing/languages/de/values/Clause.js +0 -85
  188. package/src/languageProcessing/languages/el/Researcher.js +0 -46
  189. package/src/languageProcessing/languages/el/config/firstWordExceptions.js +0 -47
  190. package/src/languageProcessing/languages/el/config/functionWords.js +0 -116
  191. package/src/languageProcessing/languages/el/config/internal/auxiliaries.js +0 -19
  192. package/src/languageProcessing/languages/el/config/internal/morphologicalPassiveSuffixes.js +0 -87
  193. package/src/languageProcessing/languages/el/config/internal/nonPassiveVerbStems.js +0 -138
  194. package/src/languageProcessing/languages/el/config/stopWords.js +0 -854
  195. package/src/languageProcessing/languages/el/config/transitionWords.js +0 -26
  196. package/src/languageProcessing/languages/el/config/twoPartTransitionWords.js +0 -10
  197. package/src/languageProcessing/languages/el/helpers/getClauses.js +0 -25
  198. package/src/languageProcessing/languages/el/helpers/getStemmer.js +0 -21
  199. package/src/languageProcessing/languages/el/helpers/internal/getParticiples.js +0 -20
  200. package/src/languageProcessing/languages/el/helpers/internal/stem.js +0 -368
  201. package/src/languageProcessing/languages/el/helpers/isPassiveSentence.js +0 -38
  202. package/src/languageProcessing/languages/el/values/Clause.js +0 -37
  203. package/src/languageProcessing/languages/en/Researcher.js +0 -46
  204. package/src/languageProcessing/languages/en/config/abbreviations.js +0 -55
  205. package/src/languageProcessing/languages/en/config/firstWordExceptions.js +0 -14
  206. package/src/languageProcessing/languages/en/config/functionWords.js +0 -186
  207. package/src/languageProcessing/languages/en/config/internal/passiveVoiceAuxiliaries.js +0 -44
  208. package/src/languageProcessing/languages/en/config/internal/passiveVoiceIrregulars.js +0 -354
  209. package/src/languageProcessing/languages/en/config/internal/passiveVoiceNonVerbEndingEd.js +0 -3047
  210. package/src/languageProcessing/languages/en/config/regularParticiplesRegex.js +0 -5
  211. package/src/languageProcessing/languages/en/config/stopWords.js +0 -52
  212. package/src/languageProcessing/languages/en/config/syllables.json +0 -86
  213. package/src/languageProcessing/languages/en/config/transitionWords.js +0 -48
  214. package/src/languageProcessing/languages/en/config/twoPartTransitionWords.js +0 -7
  215. package/src/languageProcessing/languages/en/config/wordComplexity.js +0 -5
  216. package/src/languageProcessing/languages/en/helpers/calculateFleschReadingScore.js +0 -18
  217. package/src/languageProcessing/languages/en/helpers/checkIfWordIsComplex.js +0 -43
  218. package/src/languageProcessing/languages/en/helpers/getClauses.js +0 -49
  219. package/src/languageProcessing/languages/en/helpers/getStemmer.js +0 -22
  220. package/src/languageProcessing/languages/en/helpers/internal/determineStem.js +0 -178
  221. package/src/languageProcessing/languages/en/helpers/internal/getAdjectiveStem.js +0 -162
  222. package/src/languageProcessing/languages/en/helpers/internal/getParticiples.js +0 -25
  223. package/src/languageProcessing/languages/en/helpers/internal/getVerbStem.js +0 -237
  224. package/src/languageProcessing/languages/en/values/Clause.js +0 -68
  225. package/src/languageProcessing/languages/es/Researcher.js +0 -48
  226. package/src/languageProcessing/languages/es/config/firstWordExceptions.js +0 -16
  227. package/src/languageProcessing/languages/es/config/functionWords.js +0 -321
  228. package/src/languageProcessing/languages/es/config/internal/passiveVoiceAuxiliaries.js +0 -60
  229. package/src/languageProcessing/languages/es/config/internal/passiveVoiceParticiples.js +0 -7327
  230. package/src/languageProcessing/languages/es/config/sentenceLength.js +0 -3
  231. package/src/languageProcessing/languages/es/config/stopWords.js +0 -33
  232. package/src/languageProcessing/languages/es/config/syllables.json +0 -176
  233. package/src/languageProcessing/languages/es/config/transitionWords.js +0 -40
  234. package/src/languageProcessing/languages/es/config/twoPartTransitionWords.js +0 -10
  235. package/src/languageProcessing/languages/es/config/wordComplexity.js +0 -4
  236. package/src/languageProcessing/languages/es/helpers/calculateFleschReadingScore.js +0 -18
  237. package/src/languageProcessing/languages/es/helpers/checkIfWordIsComplex.js +0 -56
  238. package/src/languageProcessing/languages/es/helpers/getClauses.js +0 -29
  239. package/src/languageProcessing/languages/es/helpers/getStemmer.js +0 -22
  240. package/src/languageProcessing/languages/es/helpers/internal/checkVerbStemModifications.js +0 -41
  241. package/src/languageProcessing/languages/es/helpers/internal/getParticiples.js +0 -35
  242. package/src/languageProcessing/languages/es/helpers/internal/stem.js +0 -793
  243. package/src/languageProcessing/languages/es/values/Clause.js +0 -47
  244. package/src/languageProcessing/languages/fa/Researcher.js +0 -47
  245. package/src/languageProcessing/languages/fa/config/firstWordExceptions.js +0 -12
  246. package/src/languageProcessing/languages/fa/config/functionWords.js +0 -122
  247. package/src/languageProcessing/languages/fa/config/internal/participles.js +0 -1429
  248. package/src/languageProcessing/languages/fa/config/sentenceLength.js +0 -3
  249. package/src/languageProcessing/languages/fa/config/transitionWords.js +0 -20
  250. package/src/languageProcessing/languages/fa/config/twoPartTransitionWords.js +0 -9
  251. package/src/languageProcessing/languages/fa/helpers/createBasicWordForms.js +0 -97
  252. package/src/languageProcessing/languages/fa/helpers/getStemmer.js +0 -13
  253. package/src/languageProcessing/languages/fa/helpers/isPassiveSentence.js +0 -14
  254. package/src/languageProcessing/languages/fr/Researcher.js +0 -46
  255. package/src/languageProcessing/languages/fr/config/firstWordExceptions.js +0 -16
  256. package/src/languageProcessing/languages/fr/config/functionWords.js +0 -281
  257. package/src/languageProcessing/languages/fr/config/internal/exceptionsParticiplesActive.js +0 -1510
  258. package/src/languageProcessing/languages/fr/config/internal/passiveVoiceAuxiliaries.js +0 -108
  259. package/src/languageProcessing/languages/fr/config/internal/passiveVoiceIrregulars.js +0 -565
  260. package/src/languageProcessing/languages/fr/config/stopWords.js +0 -119
  261. package/src/languageProcessing/languages/fr/config/syllables.json +0 -1426
  262. package/src/languageProcessing/languages/fr/config/transitionWords.js +0 -59
  263. package/src/languageProcessing/languages/fr/config/twoPartTransitionWords.js +0 -15
  264. package/src/languageProcessing/languages/fr/config/wordComplexity.js +0 -4
  265. package/src/languageProcessing/languages/fr/helpers/calculateFleschReadingScore.js +0 -18
  266. package/src/languageProcessing/languages/fr/helpers/checkIfWordIsComplex.js +0 -67
  267. package/src/languageProcessing/languages/fr/helpers/getClauses.js +0 -34
  268. package/src/languageProcessing/languages/fr/helpers/getStemmer.js +0 -22
  269. package/src/languageProcessing/languages/fr/helpers/internal/getParticiples.js +0 -72
  270. package/src/languageProcessing/languages/fr/helpers/internal/stem.js +0 -633
  271. package/src/languageProcessing/languages/fr/values/Clause.js +0 -96
  272. package/src/languageProcessing/languages/he/Researcher.js +0 -50
  273. package/src/languageProcessing/languages/he/config/firstWordExceptions.js +0 -13
  274. package/src/languageProcessing/languages/he/config/functionWords.js +0 -564
  275. package/src/languageProcessing/languages/he/config/internal/regularRootsHufal.js +0 -186
  276. package/src/languageProcessing/languages/he/config/internal/regularRootsNifal.js +0 -195
  277. package/src/languageProcessing/languages/he/config/internal/regularRootsPual.js +0 -168
  278. package/src/languageProcessing/languages/he/config/passiveVoice/regularRootsHufal.js +0 -188
  279. package/src/languageProcessing/languages/he/config/passiveVoice/regularRootsNifal.js +0 -197
  280. package/src/languageProcessing/languages/he/config/passiveVoice/regularRootsPual.js +0 -170
  281. package/src/languageProcessing/languages/he/config/prefixedFunctionWords.js +0 -2
  282. package/src/languageProcessing/languages/he/config/sentenceLength.js +0 -3
  283. package/src/languageProcessing/languages/he/config/transitionWords.js +0 -28
  284. package/src/languageProcessing/languages/he/config/twoPartTransitionWords.js +0 -8
  285. package/src/languageProcessing/languages/he/helpers/createBasicWordForms.js +0 -33
  286. package/src/languageProcessing/languages/he/helpers/getStemmer.js +0 -22
  287. package/src/languageProcessing/languages/he/helpers/internal/stem.js +0 -52
  288. package/src/languageProcessing/languages/he/helpers/isPassiveSentence.js +0 -96
  289. package/src/languageProcessing/languages/he/helpers/stem.js +0 -52
  290. package/src/languageProcessing/languages/hu/Researcher.js +0 -48
  291. package/src/languageProcessing/languages/hu/config/firstWordExceptions.js +0 -31
  292. package/src/languageProcessing/languages/hu/config/functionWords.js +0 -284
  293. package/src/languageProcessing/languages/hu/config/internal/auxiliaries.js +0 -97
  294. package/src/languageProcessing/languages/hu/config/internal/morphologicalPassiveAffixes.js +0 -125
  295. package/src/languageProcessing/languages/hu/config/internal/nonPassivesInVaAndVe.js +0 -265
  296. package/src/languageProcessing/languages/hu/config/internal/odikVerbs.js +0 -273
  297. package/src/languageProcessing/languages/hu/config/internal/participles.js +0 -412
  298. package/src/languageProcessing/languages/hu/config/stopWords.js +0 -213
  299. package/src/languageProcessing/languages/hu/config/transitionWords.js +0 -42
  300. package/src/languageProcessing/languages/hu/config/twoPartTransitionWords.js +0 -34
  301. package/src/languageProcessing/languages/hu/helpers/getClauses.js +0 -25
  302. package/src/languageProcessing/languages/hu/helpers/getStemmer.js +0 -22
  303. package/src/languageProcessing/languages/hu/helpers/internal/getParticiples.js +0 -21
  304. package/src/languageProcessing/languages/hu/helpers/internal/stem.js +0 -389
  305. package/src/languageProcessing/languages/hu/helpers/isPassiveSentence.js +0 -54
  306. package/src/languageProcessing/languages/hu/values/Clause.js +0 -41
  307. package/src/languageProcessing/languages/id/Researcher.js +0 -46
  308. package/src/languageProcessing/languages/id/config/firstWordExceptions.js +0 -13
  309. package/src/languageProcessing/languages/id/config/functionWords.js +0 -202
  310. package/src/languageProcessing/languages/id/config/internal/nonPassiveVerbsStartingDi.js +0 -215
  311. package/src/languageProcessing/languages/id/config/transitionWords.js +0 -62
  312. package/src/languageProcessing/languages/id/config/twoPartTransitionWords.js +0 -13
  313. package/src/languageProcessing/languages/id/helpers/getStemmer.js +0 -22
  314. package/src/languageProcessing/languages/id/helpers/internal/stem.js +0 -462
  315. package/src/languageProcessing/languages/id/helpers/internal/stemHelpers.js +0 -78
  316. package/src/languageProcessing/languages/id/helpers/isPassiveSentence.js +0 -39
  317. package/src/languageProcessing/languages/id/helpers/splitIntoTokensCustom.js +0 -47
  318. package/src/languageProcessing/languages/it/Researcher.js +0 -48
  319. package/src/languageProcessing/languages/it/config/firstWordExceptions.js +0 -17
  320. package/src/languageProcessing/languages/it/config/functionWords.js +0 -277
  321. package/src/languageProcessing/languages/it/config/internal/passiveVoiceAuxiliaries.js +0 -98
  322. package/src/languageProcessing/languages/it/config/internal/passiveVoiceParticiples.js +0 -7197
  323. package/src/languageProcessing/languages/it/config/sentenceLength.js +0 -3
  324. package/src/languageProcessing/languages/it/config/stopWords.js +0 -57
  325. package/src/languageProcessing/languages/it/config/syllables.json +0 -573
  326. package/src/languageProcessing/languages/it/config/transitionWords.js +0 -104
  327. package/src/languageProcessing/languages/it/config/twoPartTransitionWords.js +0 -9
  328. package/src/languageProcessing/languages/it/helpers/calculateFleschReadingScore.js +0 -15
  329. package/src/languageProcessing/languages/it/helpers/getClauses.js +0 -32
  330. package/src/languageProcessing/languages/it/helpers/getStemmer.js +0 -22
  331. package/src/languageProcessing/languages/it/helpers/internal/getParticiples.js +0 -34
  332. package/src/languageProcessing/languages/it/helpers/internal/stem.js +0 -436
  333. package/src/languageProcessing/languages/it/values/Clause.js +0 -47
  334. package/src/languageProcessing/languages/ja/Researcher.js +0 -86
  335. package/src/languageProcessing/languages/ja/config/assessmentApplicabilityCharacterCount.js +0 -4
  336. package/src/languageProcessing/languages/ja/config/firstWordExceptions.js +0 -8
  337. package/src/languageProcessing/languages/ja/config/functionWords.js +0 -563
  338. package/src/languageProcessing/languages/ja/config/keyphraseLength.js +0 -16
  339. package/src/languageProcessing/languages/ja/config/metaDescriptionLength.js +0 -4
  340. package/src/languageProcessing/languages/ja/config/paragraphLength.js +0 -10
  341. package/src/languageProcessing/languages/ja/config/sentenceLength.js +0 -4
  342. package/src/languageProcessing/languages/ja/config/subheadingsTooLong.js +0 -18
  343. package/src/languageProcessing/languages/ja/config/textLength.js +0 -47
  344. package/src/languageProcessing/languages/ja/config/topicLength.js +0 -5
  345. package/src/languageProcessing/languages/ja/config/transitionWords.js +0 -354
  346. package/src/languageProcessing/languages/ja/customResearches/findKeyphraseInSEOTitle.js +0 -98
  347. package/src/languageProcessing/languages/ja/customResearches/getKeyphraseLength.js +0 -19
  348. package/src/languageProcessing/languages/ja/customResearches/getWordForms.js +0 -50
  349. package/src/languageProcessing/languages/ja/customResearches/textLength.js +0 -24
  350. package/src/languageProcessing/languages/ja/helpers/countCharacters.js +0 -19
  351. package/src/languageProcessing/languages/ja/helpers/customGetStemmer.js +0 -21
  352. package/src/languageProcessing/languages/ja/helpers/getContentWords.js +0 -21
  353. package/src/languageProcessing/languages/ja/helpers/getWords.js +0 -31
  354. package/src/languageProcessing/languages/ja/helpers/internal/SentenceTokenizer.js +0 -102
  355. package/src/languageProcessing/languages/ja/helpers/internal/createWordForms.js +0 -68
  356. package/src/languageProcessing/languages/ja/helpers/internal/determineStem.js +0 -17
  357. package/src/languageProcessing/languages/ja/helpers/matchTextWithWord.js +0 -53
  358. package/src/languageProcessing/languages/ja/helpers/matchTransitionWords.js +0 -25
  359. package/src/languageProcessing/languages/ja/helpers/memoizedSentenceTokenizer.js +0 -28
  360. package/src/languageProcessing/languages/ja/helpers/splitIntoTokensCustom.js +0 -20
  361. package/src/languageProcessing/languages/ja/helpers/wordsCharacterCount.js +0 -13
  362. package/src/languageProcessing/languages/nb/Researcher.js +0 -45
  363. package/src/languageProcessing/languages/nb/config/firstWordExceptions.js +0 -12
  364. package/src/languageProcessing/languages/nb/config/functionWords.js +0 -106
  365. package/src/languageProcessing/languages/nb/config/internal/participles.js +0 -3127
  366. package/src/languageProcessing/languages/nb/config/internal/passiveVoiceAuxiliaries.js +0 -15
  367. package/src/languageProcessing/languages/nb/config/stopWords.js +0 -39
  368. package/src/languageProcessing/languages/nb/config/transitionWords.js +0 -21
  369. package/src/languageProcessing/languages/nb/config/twoPartTransitionWords.js +0 -10
  370. package/src/languageProcessing/languages/nb/helpers/getClauses.js +0 -28
  371. package/src/languageProcessing/languages/nb/helpers/getStemmer.js +0 -22
  372. package/src/languageProcessing/languages/nb/helpers/internal/getParticiples.js +0 -24
  373. package/src/languageProcessing/languages/nb/helpers/internal/stem.js +0 -133
  374. package/src/languageProcessing/languages/nb/values/Clause.js +0 -43
  375. package/src/languageProcessing/languages/nl/Researcher.js +0 -48
  376. package/src/languageProcessing/languages/nl/config/firstWordExceptions.js +0 -15
  377. package/src/languageProcessing/languages/nl/config/functionWords.js +0 -233
  378. package/src/languageProcessing/languages/nl/config/internal/nonParticiples.js +0 -2515
  379. package/src/languageProcessing/languages/nl/config/internal/passiveVoiceAuxiliaries.js +0 -13
  380. package/src/languageProcessing/languages/nl/config/internal/passiveVoiceIrregulars.js +0 -474
  381. package/src/languageProcessing/languages/nl/config/keyphraseLength.js +0 -10
  382. package/src/languageProcessing/languages/nl/config/stopWords.js +0 -35
  383. package/src/languageProcessing/languages/nl/config/syllables.json +0 -343
  384. package/src/languageProcessing/languages/nl/config/transitionWords.js +0 -22
  385. package/src/languageProcessing/languages/nl/config/twoPartTransitionWords.js +0 -8
  386. package/src/languageProcessing/languages/nl/helpers/calculateFleschReadingScore.js +0 -15
  387. package/src/languageProcessing/languages/nl/helpers/getClauses.js +0 -25
  388. package/src/languageProcessing/languages/nl/helpers/getStemmer.js +0 -22
  389. package/src/languageProcessing/languages/nl/helpers/internal/checkExceptionsWithFullForms.js +0 -128
  390. package/src/languageProcessing/languages/nl/helpers/internal/detectAndStemRegularParticiple.js +0 -324
  391. package/src/languageProcessing/languages/nl/helpers/internal/detectAndStemSuffixes.js +0 -164
  392. package/src/languageProcessing/languages/nl/helpers/internal/determineStem.js +0 -133
  393. package/src/languageProcessing/languages/nl/helpers/internal/getParticiples.js +0 -25
  394. package/src/languageProcessing/languages/nl/helpers/internal/getStemWordsWithTAndDEnding.js +0 -183
  395. package/src/languageProcessing/languages/nl/helpers/internal/stem.js +0 -146
  396. package/src/languageProcessing/languages/nl/helpers/internal/stemModificationHelpers.js +0 -109
  397. package/src/languageProcessing/languages/nl/helpers/internal/stemTOrDFromEndOfWord.js +0 -65
  398. package/src/languageProcessing/languages/nl/values/Clause.js +0 -62
  399. package/src/languageProcessing/languages/pl/Researcher.js +0 -47
  400. package/src/languageProcessing/languages/pl/config/firstWordExceptions.js +0 -12
  401. package/src/languageProcessing/languages/pl/config/functionWords.js +0 -421
  402. package/src/languageProcessing/languages/pl/config/internal/auxiliaries.js +0 -85
  403. package/src/languageProcessing/languages/pl/config/internal/participles.js +0 -26433
  404. package/src/languageProcessing/languages/pl/config/sentenceLength.js +0 -10
  405. package/src/languageProcessing/languages/pl/config/stopWords.js +0 -36
  406. package/src/languageProcessing/languages/pl/config/transitionWords.js +0 -42
  407. package/src/languageProcessing/languages/pl/config/twoPartTransitionWords.js +0 -8
  408. package/src/languageProcessing/languages/pl/helpers/getClauses.js +0 -25
  409. package/src/languageProcessing/languages/pl/helpers/getStemmer.js +0 -22
  410. package/src/languageProcessing/languages/pl/helpers/internal/getParticiples.js +0 -18
  411. package/src/languageProcessing/languages/pl/helpers/internal/stem.js +0 -161
  412. package/src/languageProcessing/languages/pl/values/Clause.js +0 -53
  413. package/src/languageProcessing/languages/pt/Researcher.js +0 -48
  414. package/src/languageProcessing/languages/pt/config/firstWordExceptions.js +0 -15
  415. package/src/languageProcessing/languages/pt/config/functionWords.js +0 -226
  416. package/src/languageProcessing/languages/pt/config/internal/passiveVoiceAuxiliaries.js +0 -66
  417. package/src/languageProcessing/languages/pt/config/internal/passiveVoiceParticiples.js +0 -4088
  418. package/src/languageProcessing/languages/pt/config/sentenceLength.js +0 -3
  419. package/src/languageProcessing/languages/pt/config/stopWords.js +0 -50
  420. package/src/languageProcessing/languages/pt/config/syllables.json +0 -38
  421. package/src/languageProcessing/languages/pt/config/transitionWords.js +0 -34
  422. package/src/languageProcessing/languages/pt/config/twoPartTransitionWords.js +0 -9
  423. package/src/languageProcessing/languages/pt/helpers/calculateFleschReadingScore.js +0 -15
  424. package/src/languageProcessing/languages/pt/helpers/getClauses.js +0 -29
  425. package/src/languageProcessing/languages/pt/helpers/getStemmer.js +0 -22
  426. package/src/languageProcessing/languages/pt/helpers/internal/getParticiples.js +0 -35
  427. package/src/languageProcessing/languages/pt/helpers/internal/stem.js +0 -319
  428. package/src/languageProcessing/languages/pt/values/Clause.js +0 -43
  429. package/src/languageProcessing/languages/ru/Researcher.js +0 -48
  430. package/src/languageProcessing/languages/ru/config/firstWordExceptions.js +0 -14
  431. package/src/languageProcessing/languages/ru/config/fleschReadingEaseScores.js +0 -20
  432. package/src/languageProcessing/languages/ru/config/functionWords.js +0 -519
  433. package/src/languageProcessing/languages/ru/config/internal/participlesShortenedList.js +0 -2914
  434. package/src/languageProcessing/languages/ru/config/internal/passiveVoiceParticiples.js +0 -6295
  435. package/src/languageProcessing/languages/ru/config/sentenceLength.js +0 -3
  436. package/src/languageProcessing/languages/ru/config/syllables.json +0 -19
  437. package/src/languageProcessing/languages/ru/config/transitionWords.js +0 -62
  438. package/src/languageProcessing/languages/ru/config/twoPartTransitionWords.js +0 -14
  439. package/src/languageProcessing/languages/ru/helpers/calculateFleschReadingScore.js +0 -16
  440. package/src/languageProcessing/languages/ru/helpers/getStemmer.js +0 -22
  441. package/src/languageProcessing/languages/ru/helpers/internal/stem.js +0 -288
  442. package/src/languageProcessing/languages/ru/helpers/isPassiveSentence.js +0 -14
  443. package/src/languageProcessing/languages/sk/Researcher.js +0 -46
  444. package/src/languageProcessing/languages/sk/config/firstWordExceptions.js +0 -14
  445. package/src/languageProcessing/languages/sk/config/functionWords.js +0 -855
  446. package/src/languageProcessing/languages/sk/config/internal/nonPassives.js +0 -1074
  447. package/src/languageProcessing/languages/sk/config/internal/passiveVoiceAuxiliaries.js +0 -22
  448. package/src/languageProcessing/languages/sk/config/stopWords.js +0 -34
  449. package/src/languageProcessing/languages/sk/config/transitionWords.js +0 -23
  450. package/src/languageProcessing/languages/sk/config/twoPartTransitionWords.js +0 -10
  451. package/src/languageProcessing/languages/sk/helpers/getClauses.js +0 -26
  452. package/src/languageProcessing/languages/sk/helpers/getStemmer.js +0 -22
  453. package/src/languageProcessing/languages/sk/helpers/internal/getParticiples.js +0 -16
  454. package/src/languageProcessing/languages/sk/helpers/internal/stem.js +0 -319
  455. package/src/languageProcessing/languages/sk/values/Clause.js +0 -39
  456. package/src/languageProcessing/languages/sv/Researcher.js +0 -45
  457. package/src/languageProcessing/languages/sv/config/firstWordExceptions.js +0 -15
  458. package/src/languageProcessing/languages/sv/config/functionWords.js +0 -176
  459. package/src/languageProcessing/languages/sv/config/internal/passiveVerbs.js +0 -10400
  460. package/src/languageProcessing/languages/sv/config/keyphraseLength.js +0 -11
  461. package/src/languageProcessing/languages/sv/config/transitionWords.js +0 -35
  462. package/src/languageProcessing/languages/sv/config/twoPartTransitionWords.js +0 -8
  463. package/src/languageProcessing/languages/sv/helpers/getStemmer.js +0 -22
  464. package/src/languageProcessing/languages/sv/helpers/internal/stem.js +0 -152
  465. package/src/languageProcessing/languages/sv/helpers/isPassiveSentence.js +0 -14
  466. package/src/languageProcessing/languages/tr/Researcher.js +0 -44
  467. package/src/languageProcessing/languages/tr/config/firstWordExceptions.js +0 -13
  468. package/src/languageProcessing/languages/tr/config/functionWords.js +0 -116
  469. package/src/languageProcessing/languages/tr/config/internal/nonPassiveExceptions.js +0 -574
  470. package/src/languageProcessing/languages/tr/config/internal/passiveEndings.js +0 -151
  471. package/src/languageProcessing/languages/tr/config/sentenceLength.js +0 -7
  472. package/src/languageProcessing/languages/tr/config/transitionWords.js +0 -42
  473. package/src/languageProcessing/languages/tr/config/twoPartTransitionWords.js +0 -7
  474. package/src/languageProcessing/languages/tr/helpers/getStemmer.js +0 -22
  475. package/src/languageProcessing/languages/tr/helpers/internal/stem.js +0 -20
  476. package/src/languageProcessing/languages/tr/helpers/isPassiveSentence.js +0 -43
  477. package/src/languageProcessing/researches/altTagCount.js +0 -70
  478. package/src/languageProcessing/researches/countSentencesFromText.js +0 -19
  479. package/src/languageProcessing/researches/findKeyphraseInSEOTitle.js +0 -257
  480. package/src/languageProcessing/researches/findKeywordInFirstParagraph.js +0 -86
  481. package/src/languageProcessing/researches/findTransitionWords.js +0 -123
  482. package/src/languageProcessing/researches/functionWordsInKeyphrase.js +0 -44
  483. package/src/languageProcessing/researches/getAnchorsWithKeyphrase.js +0 -227
  484. package/src/languageProcessing/researches/getFleschReadingScore.js +0 -150
  485. package/src/languageProcessing/researches/getKeywordDensity.js +0 -44
  486. package/src/languageProcessing/researches/getLinkStatistics.js +0 -54
  487. package/src/languageProcessing/researches/getLinks.js +0 -18
  488. package/src/languageProcessing/researches/getLongCenterAlignedTexts.js +0 -37
  489. package/src/languageProcessing/researches/getParagraphLength.js +0 -44
  490. package/src/languageProcessing/researches/getParagraphs.js +0 -18
  491. package/src/languageProcessing/researches/getPassiveVoiceResult.js +0 -129
  492. package/src/languageProcessing/researches/getProminentWordsForInsights.js +0 -48
  493. package/src/languageProcessing/researches/getProminentWordsForInternalLinking.js +0 -119
  494. package/src/languageProcessing/researches/getSentenceBeginnings.js +0 -124
  495. package/src/languageProcessing/researches/getSubheadingTextLengths.js +0 -59
  496. package/src/languageProcessing/researches/getWordForms.js +0 -204
  497. package/src/languageProcessing/researches/h1s.js +0 -10
  498. package/src/languageProcessing/researches/imageCount.js +0 -16
  499. package/src/languageProcessing/researches/index.js +0 -5
  500. package/src/languageProcessing/researches/keyphraseDistribution.js +0 -249
  501. package/src/languageProcessing/researches/keyphraseLength.js +0 -17
  502. package/src/languageProcessing/researches/keywordCount.js +0 -134
  503. package/src/languageProcessing/researches/keywordCountInUrl.js +0 -57
  504. package/src/languageProcessing/researches/matchKeywordInSubheadings.js +0 -62
  505. package/src/languageProcessing/researches/metaDescriptionKeyword.js +0 -85
  506. package/src/languageProcessing/researches/metaDescriptionLength.js +0 -12
  507. package/src/languageProcessing/researches/pageTitleWidth.js +0 -11
  508. package/src/languageProcessing/researches/readingTime.js +0 -82
  509. package/src/languageProcessing/researches/sentences.js +0 -20
  510. package/src/languageProcessing/researches/videoCount.js +0 -32
  511. package/src/languageProcessing/researches/wordComplexity.js +0 -129
  512. package/src/languageProcessing/researches/wordCountInText.js +0 -29
  513. package/src/languageProcessing/values/Clause.js +0 -108
  514. package/src/languageProcessing/values/ProminentWord.js +0 -95
  515. package/src/languageProcessing/values/Sentence.js +0 -111
  516. package/src/languageProcessing/values/index.js +0 -9
  517. package/src/markers/addMark.js +0 -9
  518. package/src/markers/addMarkSingleWord.js +0 -32
  519. package/src/markers/index.js +0 -7
  520. package/src/markers/removeDuplicateMarks.js +0 -27
  521. package/src/markers/removeMarks.js +0 -11
  522. package/src/parse/build/build.js +0 -52
  523. package/src/parse/build/index.js +0 -10
  524. package/src/parse/build/private/adapt.js +0 -113
  525. package/src/parse/build/private/adaptAttributes.js +0 -36
  526. package/src/parse/build/private/alwaysFilterElements.js +0 -75
  527. package/src/parse/build/private/combineIntoImplicitParagraphs.js +0 -130
  528. package/src/parse/build/private/filterBeforeTokenizing.js +0 -32
  529. package/src/parse/build/private/filterHelpers.js +0 -44
  530. package/src/parse/build/private/filterTree.js +0 -42
  531. package/src/parse/build/private/getTextElementPositions.js +0 -184
  532. package/src/parse/build/private/helpers/parseClassAttribute.js +0 -9
  533. package/src/parse/build/private/isPhrasingContent.js +0 -28
  534. package/src/parse/build/private/parseBlocks.js +0 -151
  535. package/src/parse/build/private/tokenize.js +0 -74
  536. package/src/parse/language/LanguageProcessor.js +0 -74
  537. package/src/parse/structure/Heading.js +0 -26
  538. package/src/parse/structure/Node.js +0 -69
  539. package/src/parse/structure/Paragraph.js +0 -48
  540. package/src/parse/structure/Sentence.js +0 -30
  541. package/src/parse/structure/SourceCodeLocation.js +0 -41
  542. package/src/parse/structure/Text.js +0 -27
  543. package/src/parse/structure/Token.js +0 -24
  544. package/src/parse/structure/index.js +0 -16
  545. package/src/parse/traverse/findAllInTree.js +0 -58
  546. package/src/parse/traverse/index.js +0 -12
  547. package/src/parse/traverse/innerText.js +0 -26
  548. package/src/parsedPaper/ParsedPaper.js +0 -92
  549. package/src/parsedPaper/assess/TreeAssessor.js +0 -184
  550. package/src/parsedPaper/assess/assessmentListFactories.js +0 -73
  551. package/src/parsedPaper/assess/assessments/Assessment.js +0 -79
  552. package/src/parsedPaper/assess/assessments/index.js +0 -6
  553. package/src/parsedPaper/assess/assessorFactories.js +0 -104
  554. package/src/parsedPaper/assess/cornerstone/assessmentListFactories.js +0 -47
  555. package/src/parsedPaper/assess/cornerstone/index.js +0 -5
  556. package/src/parsedPaper/assess/index.js +0 -20
  557. package/src/parsedPaper/build/PaperParser.js +0 -105
  558. package/src/parsedPaper/build/linguisticParsing/Sentence.js +0 -89
  559. package/src/parsedPaper/build/linguisticParsing/SentenceTokenizer.js +0 -323
  560. package/src/parsedPaper/build/linguisticParsing/parseText.js +0 -20
  561. package/src/parsedPaper/build/tree/TreeBuilder.js +0 -75
  562. package/src/parsedPaper/build/tree/cleanup/calculateTextIndices.js +0 -190
  563. package/src/parsedPaper/build/tree/cleanup/getElementContent.js +0 -21
  564. package/src/parsedPaper/build/tree/cleanup/postParsing.js +0 -37
  565. package/src/parsedPaper/build/tree/html/HTMLTreeConverter.js +0 -230
  566. package/src/parsedPaper/build/tree/html/buildTree.js +0 -31
  567. package/src/parsedPaper/build/tree/html/htmlConstants.js +0 -37
  568. package/src/parsedPaper/build/tree/index.js +0 -14
  569. package/src/parsedPaper/build/tree/metadata/buildTree.js +0 -32
  570. package/src/parsedPaper/research/TreeResearcher.js +0 -134
  571. package/src/parsedPaper/research/index.js +0 -13
  572. package/src/parsedPaper/research/researches/Headings.js +0 -20
  573. package/src/parsedPaper/research/researches/LinkStatistics.js +0 -128
  574. package/src/parsedPaper/research/researches/Research.js +0 -50
  575. package/src/parsedPaper/research/researches/index.js +0 -1
  576. package/src/parsedPaper/structure/tree/FormattingElement.js +0 -67
  577. package/src/parsedPaper/structure/tree/SourceCodeLocation.js +0 -31
  578. package/src/parsedPaper/structure/tree/TextContainer.js +0 -85
  579. package/src/parsedPaper/structure/tree/index.js +0 -22
  580. package/src/parsedPaper/structure/tree/nodes/Heading.js +0 -26
  581. package/src/parsedPaper/structure/tree/nodes/LeafNode.js +0 -75
  582. package/src/parsedPaper/structure/tree/nodes/List.js +0 -47
  583. package/src/parsedPaper/structure/tree/nodes/ListItem.js +0 -26
  584. package/src/parsedPaper/structure/tree/nodes/MetadataMiscellaneous.js +0 -46
  585. package/src/parsedPaper/structure/tree/nodes/MetadataText.js +0 -26
  586. package/src/parsedPaper/structure/tree/nodes/Node.js +0 -154
  587. package/src/parsedPaper/structure/tree/nodes/Paragraph.js +0 -24
  588. package/src/parsedPaper/structure/tree/nodes/StructuredNode.js +0 -52
  589. package/src/parsedPaper/structure/tree/nodes/index.js +0 -21
  590. package/src/scoring/assessments/assessment.js +0 -63
  591. package/src/scoring/assessments/index.js +0 -58
  592. package/src/scoring/assessments/readability/ParagraphTooLongAssessment.js +0 -173
  593. package/src/scoring/assessments/readability/SentenceBeginningsAssessment.js +0 -132
  594. package/src/scoring/assessments/readability/SentenceLengthInTextAssessment.js +0 -186
  595. package/src/scoring/assessments/readability/TransitionWordsAssessment.js +0 -168
  596. package/src/scoring/assessments/seo/ImageCountAssessment.js +0 -112
  597. package/src/scoring/assessments/seo/InternalLinksAssessment.js +0 -114
  598. package/src/scoring/assessments/seo/IntroductionKeywordAssessment.js +0 -110
  599. package/src/scoring/assessments/seo/KeyphraseAssessment.js +0 -104
  600. package/src/scoring/assessments/seo/KeyphraseLengthAssessment.js +0 -110
  601. package/src/scoring/assessments/seo/KeywordDensityAssessment.js +0 -116
  602. package/src/scoring/assessments/seo/MetaDescriptionKeywordAssessment.js +0 -114
  603. package/src/scoring/assessments/seo/MetaDescriptionLengthAssessment.js +0 -112
  604. package/src/scoring/assessments/seo/MetaTitleKeywordAssessment.js +0 -111
  605. package/src/scoring/assessments/seo/NumberInMetaTitleAssessment.js +0 -107
  606. package/src/scoring/assessments/seo/OutboundLinksAssessment.js +0 -111
  607. package/src/scoring/assessments/seo/PageTitleWidthAssessment.js +0 -104
  608. package/src/scoring/assessments/seo/SingleH1Assessment.js +0 -118
  609. package/src/scoring/assessments/seo/SingleTitleAssessment.js +0 -108
  610. package/src/scoring/assessments/seo/SubHeadingsKeywordAssessment.js +0 -107
  611. package/src/scoring/assessments/seo/TextImagesAssessment.js +0 -144
  612. package/src/scoring/assessments/seo/TextLengthAssessment.js +0 -100
  613. package/src/scoring/assessments/seo/UrlKeywordAssessment.js +0 -111
  614. package/src/scoring/assessments/seo/UrlLengthAssessment.js +0 -103
  615. package/src/scoring/assessors/assessor.js +0 -269
  616. package/src/scoring/assessors/avadaAssessor.js +0 -67
  617. package/src/scoring/assessors/contentAssessor.js +0 -159
  618. package/src/scoring/assessors/index.js +0 -4
  619. package/src/scoring/assessors/seoAssessor.js +0 -57
  620. package/src/scoring/helpers/assessments/checkForTooLongSentences.js +0 -13
  621. package/src/scoring/helpers/assessments/inRange.js +0 -49
  622. package/src/scoring/helpers/assessments/keyphraseLengthFactor.js +0 -10
  623. package/src/scoring/helpers/assessments/recommendedKeywordCount.js +0 -43
  624. package/src/scoring/helpers/index.js +0 -74
  625. package/src/scoring/interpreters/index.js +0 -5
  626. package/src/scoring/interpreters/scoreToRating.js +0 -31
  627. package/src/scoring/renderers/AssessorPresenter.js +0 -360
  628. package/src/scoring/scoreAggregators/ReadabilityScoreAggregator.js +0 -203
  629. package/src/scoring/scoreAggregators/SEOScoreAggregator.js +0 -54
  630. package/src/scoring/scoreAggregators/ScoreAggregator.js +0 -23
  631. package/src/scoring/scoreAggregators/index.js +0 -3
  632. package/src/values/AssessmentResult.js +0 -496
  633. package/src/values/Mark.js +0 -271
  634. package/src/values/Paper.js +0 -425
  635. package/src/values/index.js +0 -9
  636. package/src/vendor/turkishStemmer.js +0 -3435
  637. package/tsconfig.json +0 -15
@@ -1,123 +0,0 @@
1
- import createRegexFromDoubleArray from "../helpers/regex/createRegexFromDoubleArray.js";
2
- import getSentences from "../helpers/sentence/getSentences.js";
3
- import { normalizeSingle as normalizeSingleQuotes } from "../helpers/sanitize/quotes.js";
4
- import { isWordInSentence as matchWordInSentence } from "../helpers/word/matchWordInSentence.js";
5
- import removeHtmlBlocks from "../helpers/html/htmlParser";
6
-
7
- import { flattenDeep } from "lodash";
8
- import { filterShortcodesFromHTML } from "../helpers";
9
-
10
- let regexFromDoubleArray = null;
11
- let regexFromDoubleArrayCacheKey = "";
12
-
13
- /**
14
- * Memoizes the createRegexFromDoubleArray with the twoPartTransitionWords.
15
- *
16
- * @param {Array} twoPartTransitionWords The array containing two-part transition words.
17
- *
18
- * @returns {RegExp} The RegExp to match text with a double array.
19
- */
20
- function getRegexFromDoubleArray( twoPartTransitionWords ) {
21
- const cacheKey = flattenDeep( twoPartTransitionWords ).join( "" );
22
- if ( regexFromDoubleArrayCacheKey !== cacheKey || regexFromDoubleArray === null ) {
23
- regexFromDoubleArrayCacheKey = cacheKey;
24
- regexFromDoubleArray = createRegexFromDoubleArray( twoPartTransitionWords );
25
- }
26
- return regexFromDoubleArray;
27
- }
28
-
29
- /**
30
- * Matches the sentence against two part transition words.
31
- *
32
- * @param {string} sentence The sentence to match against.
33
- * @param {Array} twoPartTransitionWords The array containing two-part transition words.
34
- * @returns {Array} The found transitional words.
35
- */
36
- const matchTwoPartTransitionWords = function( sentence, twoPartTransitionWords ) {
37
- sentence = normalizeSingleQuotes( sentence );
38
- const twoPartTransitionWordsRegex = getRegexFromDoubleArray( twoPartTransitionWords );
39
- return sentence.match( twoPartTransitionWordsRegex );
40
- };
41
-
42
- /**
43
- * Matches the sentence against transition words.
44
- *
45
- * @param {string} sentence The sentence to match against.
46
- * @param {Array} transitionWords The array containing transition words.
47
- * @returns {Array} The found transitional words.
48
- */
49
- const matchTransitionWords = function( sentence, transitionWords ) {
50
- sentence = normalizeSingleQuotes( sentence );
51
- return transitionWords.filter( word => matchWordInSentence( word, sentence ) );
52
- };
53
-
54
- /**
55
- * Checks the passed sentences to see if they contain transition words.
56
- *
57
- * @param {Array} sentences The sentences to match against.
58
- * @param {Array} transitionWords The array containing transition words.
59
- * @param {Array} twoPartTransitionWords The array containing two part transition words.
60
- * @param {function} matchTransitionWordsHelper The language-specific helper function to match transition words in a sentence.
61
- *
62
- * @returns {Array} Array of sentence objects containing the complete sentence and the transition words.
63
- */
64
- const checkSentencesForTransitionWords = function( sentences, transitionWords, twoPartTransitionWords, matchTransitionWordsHelper ) {
65
- const results = [];
66
-
67
- sentences.forEach( sentence => {
68
- if ( twoPartTransitionWords ) {
69
- const twoPartMatches = matchTwoPartTransitionWords( sentence, twoPartTransitionWords );
70
-
71
- if ( twoPartMatches !== null ) {
72
- results.push( {
73
- sentence: sentence,
74
- transitionWords: twoPartMatches,
75
- } );
76
-
77
- return;
78
- }
79
- }
80
-
81
- const transitionWordMatches = matchTransitionWordsHelper
82
- ? matchTransitionWordsHelper( sentence, transitionWords )
83
- : matchTransitionWords( sentence, transitionWords );
84
-
85
- if ( transitionWordMatches.length !== 0 ) {
86
- results.push( {
87
- sentence: sentence,
88
- transitionWords: transitionWordMatches,
89
- } );
90
- }
91
- } );
92
-
93
- return results;
94
- };
95
-
96
- /**
97
- * Checks how many sentences from a text contain at least one transition word or two-part transition word
98
- * that are defined in the transition words config and two part transition words config.
99
- *
100
- * @param {Paper} paper The Paper object to get text from.
101
- * @param {Researcher} researcher The researcher.
102
- *
103
- * @returns {object} An object with the total number of sentences in the text
104
- * and the total number of sentences containing one or more transition words.
105
- */
106
- export default function( paper, researcher ) {
107
- const matchTransitionWordsHelper = researcher.getHelper( "matchTransitionWordsHelper" );
108
- const transitionWords = researcher.getConfig( "transitionWords" );
109
- const twoPartTransitionWords = researcher.getConfig( "twoPartTransitionWords" );
110
- const memoizedTokenizer = researcher.getHelper( "memoizedTokenizer" );
111
-
112
- let text = paper.getText();
113
- text = removeHtmlBlocks( text );
114
- text = filterShortcodesFromHTML( text, paper._attributes && paper._attributes.shortcodes );
115
- const sentences = getSentences( text, memoizedTokenizer );
116
- const sentenceResults = checkSentencesForTransitionWords( sentences, transitionWords, twoPartTransitionWords, matchTransitionWordsHelper );
117
-
118
- return {
119
- totalSentences: sentences.length,
120
- sentenceResults: sentenceResults,
121
- transitionWordSentences: sentenceResults.length,
122
- };
123
- }
@@ -1,44 +0,0 @@
1
- import { filter, includes, isEmpty } from "lodash";
2
- import getWords from "../helpers/word/getWords";
3
- import processExactMatchRequest from "../helpers/match/processExactMatchRequest";
4
- import { WORD_BOUNDARY_WITH_HYPHEN } from "../../config/wordBoundariesWithoutPunctuation";
5
-
6
- /**
7
- * Checks if the keyphrase contains of function words only.
8
- *
9
- * @param {object} paper The paper containing the keyword.
10
- * @param {Researcher} researcher The researcher.
11
- *
12
- * @returns {boolean} Whether the keyphrase contains of content words only.
13
- */
14
- export default function( paper, researcher ) {
15
- const functionWords = researcher.getConfig( "functionWords" );
16
-
17
- // A helper to get words from the keyphrase for languages that don't use the default way.
18
- const getWordsCustomHelper = researcher.getHelper( "getWordsCustomHelper" );
19
- const keyphrase = paper.getKeyword();
20
-
21
- // Return false if there are double quotes around the keyphrase.
22
- if ( processExactMatchRequest( keyphrase ).exactMatchRequested ) {
23
- return false;
24
- }
25
-
26
- /*
27
- * We use a word boundary regex that includes whitespaces, en-dashes, and hyphens for all languages.
28
- * This means that we also consider keyphrases that consist of function words separated by hyphens (e.g. 'two-year-old')
29
- * as containing only function words. Since many hyphenated phrases can also be written without hyphens, this way the
30
- * behavior for hyphenated phrases matches the behavior for unhyphenated phrases.
31
- * In Indonesian we normally don't want to treat hyphens as word boundaries, but in this case it makes sense because
32
- * in Indonesian you can also have function words seperated by hyphens (e.g. 'dua-lima').
33
- * As a downside, single function words containing hyphens (e.g. 'vis-à-vis') won't be automatically matched, but we
34
- * are solving this by adding each word from such function words as separate entries in the function words lists.
35
- */
36
- let keyphraseWords = getWordsCustomHelper ? getWordsCustomHelper( keyphrase )
37
- : getWords( keyphrase, WORD_BOUNDARY_WITH_HYPHEN );
38
-
39
- keyphraseWords = filter( keyphraseWords, function( word ) {
40
- return ( ! includes( functionWords, word.trim().toLocaleLowerCase() ) );
41
- } );
42
-
43
- return isEmpty( keyphraseWords );
44
- }
@@ -1,227 +0,0 @@
1
- import { flatten, uniq } from "lodash";
2
- import filterWordsFromArray from "../helpers/word/filterWordsFromArray";
3
- import { findTopicFormsInString } from "../helpers/match/findKeywordFormsInString";
4
- import getWords from "../helpers/word/getWords";
5
- import matchTextWithArray from "../helpers/match/matchTextWithArray";
6
- import parseSynonyms from "../helpers/sanitize/parseSynonyms";
7
- import processExactMatchRequest from "../helpers/match/processExactMatchRequest";
8
- import urlHelper from "../helpers/url/url.js";
9
- import { WORD_BOUNDARY_WITH_HYPHEN, WORD_BOUNDARY_WITHOUT_HYPHEN } from "../../config/wordBoundariesWithoutPunctuation";
10
-
11
- let functionWords = [];
12
-
13
- /**
14
- * Checks whether the anchor's link is a relative fragment or the same as the site url/domain.
15
- * Relative fragment links always point to the page itself.
16
- *
17
- * @param {String} anchorLink The link anchor.
18
- * @param {String} siteUrlOrDomain The site URL or domain of the paper.
19
- *
20
- * @returns {boolean} Whether the anchor's link is a relative fragment or the same as the site url/domain.
21
- */
22
- function isLinkingToSelf( anchorLink, siteUrlOrDomain ) {
23
- return Boolean( urlHelper.areEqual( anchorLink, siteUrlOrDomain ) || urlHelper.isRelativeFragmentURL( anchorLink ) );
24
- }
25
-
26
- /**
27
- * Gets the anchors whose url is not linking at the current site url/domain.
28
- *
29
- * @param {Array} anchors An array with all anchors from the paper.
30
- * @param {String} siteUrlOrDomain The site URL or domain of the paper.
31
- *
32
- * @returns {Array} The array of all anchors whose url is not linking at the current site url/domain.
33
- */
34
- function getAnchorsLinkingToSelf( anchors, siteUrlOrDomain ) {
35
- const anchorsLinkingToSelf = anchors.map( function( anchor ) {
36
- const anchorLink = anchor.attributes.href;
37
- // Return false if there is no href attribute.
38
- return anchorLink ? isLinkingToSelf( anchorLink, siteUrlOrDomain ) : false;
39
- } );
40
-
41
- return anchors.filter( ( anchor, index ) => ! anchorsLinkingToSelf[ index ] );
42
- }
43
-
44
- /**
45
- * Gets the anchors with text that contains all content words of the topic (i.e. keyphrase or synonyms).
46
- *
47
- * @param {Array} anchors An array with all anchors from the paper
48
- * @param {Object} topicForms The object with topicForms. It contains all forms of the keyphrase and synonyms.
49
- * @param {String} locale The locale of the paper.
50
- * @param {Function} matchWordCustomHelper The helper function to match word in text.
51
- *
52
- * @returns {String[]} The array of all anchors with text that contains all content words of the keyphrase or synonyms.
53
- */
54
- function getAnchorsContainingTopic( anchors, topicForms, locale, matchWordCustomHelper ) {
55
- const anchorsContainingTopic = anchors.map( function( anchor ) {
56
- // Only retrieve the anchor's text. This is because we only use the anchor text for the following check.
57
- const anchorText = anchor.innerText();
58
- return findTopicFormsInString( topicForms, anchorText, true, locale, matchWordCustomHelper ).percentWordMatches === 100;
59
- } );
60
-
61
- return anchors.filter( ( anchor, index ) => anchorsContainingTopic[ index ] );
62
- }
63
-
64
- /**
65
- * Gets the anchors with text that has the same content words as the keyphrase or synonyms.
66
- *
67
- * @param {Array} anchors An array with all anchors from the paper.
68
- * @param {Object} topicForms The object with topicForms. It contains all forms of the keyphrase and synonyms.
69
- * @param {string} locale The locale of the paper.
70
- * @param {Object} customHelpers An object containing custom helpers.
71
- * @param {Object[]} exactMatchRequest An array of objects containing the keyphrase and information on whether
72
- * the exact match has been requested.
73
- * @param {boolean} areHyphensWordBoundaries Whether hyphens should be treated as word boundaries.
74
- *
75
- * @returns {Array} The array of all anchors with text that has the same content words as the keyphrase/synonyms.
76
- */
77
- function getAnchorsWithSameTextAsTopic( anchors, topicForms, locale, customHelpers, exactMatchRequest, areHyphensWordBoundaries ) {
78
- const matchWordCustomHelper = customHelpers.matchWordCustomHelper;
79
- const getWordsCustomHelper = customHelpers.getWordsCustomHelper;
80
-
81
- // Prepare keyphrase and synonym forms for comparison with anchors.
82
- const keyphraseAndSynonymsWords = [ flatten( topicForms.keyphraseForms ) ];
83
- const synonymsForms = topicForms.synonymsForms;
84
- synonymsForms.forEach( form => keyphraseAndSynonymsWords.push( flatten( form ) ) );
85
-
86
- // The variable that will save all the anchors with text that has the same content words as the keyphrase/synonyms.
87
- const anchorsContainedInTopic = [];
88
-
89
- anchors.forEach( function( currentAnchor ) {
90
- const currentAnchorText = currentAnchor.innerText();
91
-
92
- /*
93
- * For keyphrase matching, we want to split words on hyphens and en-dashes, except for languages where hyphens shouldn't
94
- * be treated as word boundaries. Currently, the latter only applies to Indonesian, where hyphens are used to create plural forms of nouns,
95
- * such as "buku-buku" being a plural form of "buku". We want to treat forms like "buku-buku" as one word, so we shouldn't
96
- * split words on hyphens in Indonesian.
97
- * For languages where hyphens are treated as word boundaries we pass a custom word boundary regex string to the getWords helper
98
- * that includes whitespaces, hyphens (u002d), and en-dashes (u2013). Otherwise, we pass a word boundary regex that only includes
99
- * whitespaces and en-dashes.
100
- */
101
- let anchorWords;
102
- if ( getWordsCustomHelper ) {
103
- anchorWords = uniq( getWordsCustomHelper( currentAnchorText ) );
104
- } else if ( areHyphensWordBoundaries ) {
105
- anchorWords = uniq( getWords( currentAnchorText, WORD_BOUNDARY_WITH_HYPHEN ) );
106
- } else {
107
- anchorWords = uniq( getWords( currentAnchorText, WORD_BOUNDARY_WITHOUT_HYPHEN ) );
108
- }
109
-
110
- /*
111
- * Filter function words out of the anchor text.
112
- * If the anchor text contains only function words, we keep them.
113
- */
114
- const filteredAnchorWords = filterWordsFromArray( anchorWords, functionWords );
115
- if ( filteredAnchorWords.length > 0 ) {
116
- anchorWords = filteredAnchorWords;
117
- }
118
-
119
- exactMatchRequest.forEach( request => {
120
- /*
121
- * Check a) if the exact match is requested for the keyphrase, and
122
- * b) if every content word in the anchor text is included in the keyphrase or synonym.
123
- */
124
- if ( request.exactMatchRequested &&
125
- anchorWords.every( anchorWord => request.keyphrase.includes( anchorWord ) ) ) {
126
- anchorsContainedInTopic.push( true );
127
- }
128
- } );
129
-
130
- // Check if every word in the anchor text is also present in the keyphrase/synonym.
131
- for ( let i = 0; i < keyphraseAndSynonymsWords.length; i++ ) {
132
- const topicForm = keyphraseAndSynonymsWords[ i ];
133
-
134
- if ( anchorWords.every( anchorWord => matchTextWithArray( anchorWord, topicForm, locale, matchWordCustomHelper ).count > 0 ) ) {
135
- anchorsContainedInTopic.push( true );
136
- break;
137
- }
138
- }
139
- } );
140
-
141
- return anchors.filter( ( anchor, index ) => anchorsContainedInTopic[ index ] );
142
- }
143
-
144
- /**
145
- * Checks whether the content words of the anchor text are the same as the content words of the keyphrase or synonym.
146
- * Also includes different word forms if the morphology is available.
147
- *
148
- * @param {Paper} paper The paper to research.
149
- * @param {Researcher} researcher The researcher to use.
150
- *
151
- * @returns {Object} The amount of anchor texts whose content words are the same as the keyphrase or synonyms' content words.
152
- */
153
- export default function( paper, researcher ) {
154
- functionWords = researcher.getConfig( "functionWords" );
155
-
156
- const areHyphensWordBoundaries = researcher.getConfig( "areHyphensWordBoundaries" );
157
-
158
- const result = {
159
- anchorsWithKeyphrase: [],
160
- anchorsWithKeyphraseCount: 0,
161
- };
162
- // STEP 1.
163
- // If the paper's text is empty, return empty result.
164
- if ( paper.getText() === "" ) {
165
- return result;
166
- }
167
-
168
- // STEP 2.
169
- const keyphrase = paper.getKeyword();
170
- /*
171
- * If no keyphrase is set, return empty result.
172
- * This is a conscious decision where we won't assess the paper if the keyphrase is not set.
173
- * This includes a case where only the synonym is set but not the keyphrase.
174
- */
175
- if ( keyphrase === "" ) {
176
- return result;
177
- }
178
- /*
179
- * When the keyphrase is set, also retrieve the synonyms and save them in "topics" array.
180
- * Eventually, the term topics here refers to either keyphrase or synonyms.
181
- */
182
- const originalTopics = parseSynonyms( paper.getSynonyms() );
183
- originalTopics.push( keyphrase );
184
-
185
- // Retrieve the anchors.
186
- let anchors = paper.getTree().findAll( treeNode => treeNode.name === "a" );
187
- /*
188
- * We get the site's URL (e.g., https://yoast.com) or domain (e.g., yoast.com) from the paper.
189
- * In case of WordPress, the variable is a URL. In case of Shopify, it is a domain.
190
- */
191
- const siteUrlOrDomain = paper.getPermalink();
192
-
193
- // STEP 3.
194
- // Get the anchors with urls that are not linking to the current site url/domain.
195
- anchors = getAnchorsLinkingToSelf( anchors, siteUrlOrDomain );
196
- // If all anchor urls are linking to the current site url/domain, return empty result.
197
- if ( anchors.length === 0 ) {
198
- return result;
199
- }
200
-
201
- const locale = paper.getLocale();
202
- const topicForms = researcher.getResearch( "morphology" );
203
- const customHelpers = {
204
- matchWordCustomHelper: researcher.getHelper( "matchWordCustomHelper" ),
205
- getWordsCustomHelper: researcher.getHelper( "getWordsCustomHelper" ),
206
- };
207
-
208
- // STEP 4.
209
- // Get the anchors with text that contains the keyphrase/synonyms' content words.
210
- anchors = getAnchorsContainingTopic( anchors, topicForms, locale, customHelpers.matchWordCustomHelper );
211
- // If all anchor texts do not contain the keyphrase/synonyms' content words, return empty result.
212
- if ( anchors.length === 0 ) {
213
- return result;
214
- }
215
-
216
- // STEP 5.
217
- // Check if exact match is requested for every topic (keyphrase or synonym).
218
- const isExactMatchRequested = originalTopics.map( originalTopic => processExactMatchRequest( originalTopic ) );
219
- // Get the anchors with text that has the same content words as the keyphrase/synonyms.
220
- anchors = getAnchorsWithSameTextAsTopic( anchors, topicForms, locale, customHelpers, isExactMatchRequested, areHyphensWordBoundaries );
221
-
222
- return {
223
- anchorsWithKeyphrase: anchors,
224
- anchorsWithKeyphraseCount: anchors.length,
225
- };
226
- }
227
-
@@ -1,150 +0,0 @@
1
- /** @module analyses/calculateFleschReading */
2
-
3
- import stripNumbers from "../helpers/sanitize/stripNumbers.js";
4
- import countSentences from "../helpers/sentence/countSentences.js";
5
- import countWords from "../helpers/word/countWords.js";
6
- import countSyllables from "../helpers/syllables/countSyllables.js";
7
- import { clamp, inRange } from "lodash";
8
-
9
- /**
10
- * Calculates an average from a total and an amount
11
- *
12
- * @param {number} total The total.
13
- * @param {number} amount The amount.
14
- * @returns {number} The average from the total and the amount.
15
- */
16
- const getAverage = function( total, amount ) {
17
- return total / amount;
18
- };
19
-
20
- /**
21
- * The Flesch reading ease difficulty.
22
- * @readonly
23
- * @enum {number}
24
- */
25
- export const DIFFICULTY = {
26
- NO_DATA: -1,
27
- VERY_EASY: 0,
28
- EASY: 1,
29
- FAIRLY_EASY: 2,
30
- OKAY: 3,
31
- FAIRLY_DIFFICULT: 4,
32
- DIFFICULT: 5,
33
- VERY_DIFFICULT: 6,
34
- };
35
-
36
- /**
37
- * Returns the Flesch reading ease difficulty based on the boundaries
38
- * defined in the score configuration.
39
- *
40
- * @param {number} score The Flesch reading ease score.
41
- * @param {Object} scoreConfiguration The score configuration.
42
- *
43
- * @returns {DIFFICULTY} The Flesch reading ease difficulty.
44
- */
45
- function getDifficulty( score, scoreConfiguration ) {
46
- if ( score >= scoreConfiguration.borders.veryEasy ) {
47
- return DIFFICULTY.VERY_EASY;
48
- } else if ( inRange( score, scoreConfiguration.borders.easy, scoreConfiguration.borders.veryEasy ) ) {
49
- return DIFFICULTY.EASY;
50
- } else if ( inRange( score, scoreConfiguration.borders.fairlyEasy, scoreConfiguration.borders.easy ) ) {
51
- return DIFFICULTY.FAIRLY_EASY;
52
- } else if ( inRange( score, scoreConfiguration.borders.okay, scoreConfiguration.borders.fairlyEasy ) ) {
53
- return DIFFICULTY.OKAY;
54
- } else if ( inRange( score, scoreConfiguration.borders.fairlyDifficult, scoreConfiguration.borders.okay ) ) {
55
- return DIFFICULTY.FAIRLY_DIFFICULT;
56
- } else if ( inRange( score, scoreConfiguration.borders.difficult, scoreConfiguration.borders.fairlyDifficult ) ) {
57
- return DIFFICULTY.DIFFICULT;
58
- }
59
-
60
- return DIFFICULTY.VERY_DIFFICULT;
61
- }
62
-
63
- /**
64
- * Retrieves the scoring configuration defining the boundaries to use to
65
- * determine the Flesch reading ease difficulty.
66
- *
67
- * @param {Researcher} researcher The researcher.
68
- *
69
- * @returns {Object} The language specific scoring configuration, or the default configuration if not available.
70
- */
71
- function getConfiguration( researcher ) {
72
- const languageSpecificConfig = researcher.getConfig( "fleschReadingEaseScores" );
73
- const defaultConfig = {
74
- borders: {
75
- veryEasy: 90,
76
- easy: 80,
77
- fairlyEasy: 70,
78
- okay: 60,
79
- fairlyDifficult: 50,
80
- difficult: 30,
81
- veryDifficult: 0,
82
- },
83
- scores: {
84
- veryEasy: 9,
85
- easy: 9,
86
- fairlyEasy: 9,
87
- okay: 9,
88
- fairlyDifficult: 6,
89
- difficult: 3,
90
- veryDifficult: 3,
91
- },
92
- };
93
- return languageSpecificConfig ? languageSpecificConfig : defaultConfig;
94
- }
95
-
96
- /**
97
- * This calculates the Flesch reading score for a given text.
98
- *
99
- * @param {Paper} paper The paper containing the text.
100
- * @param {Researcher} researcher The researcher.
101
- *
102
- * @returns {{ score: number, difficulty: DIFFICULTY }} The Flesch reading score.
103
- */
104
- export default function( paper, researcher ) {
105
- const syllables = researcher.getConfig( "syllables" );
106
- const memoizedTokenizer = researcher.getHelper( "memoizedTokenizer" );
107
- const languageSpecificConfiguration = getConfiguration( researcher );
108
-
109
- let text = paper.getText();
110
- if ( text === "" ) {
111
- // A score of -1 signals to the code down the line that no valid FRE was calculated.
112
- return {
113
- score: -1,
114
- difficulty: DIFFICULTY.NO_DATA,
115
- };
116
- }
117
-
118
- text = stripNumbers( text );
119
-
120
- const numberOfSentences = countSentences( text, memoizedTokenizer );
121
- const numberOfWords = countWords( text );
122
-
123
- // Do not show the Flesch reading ease when there is not enough data for the FRE to make sense. Also used to prevent division by zero errors.
124
- // A score of -1 signals to the code down the line that no valid FRE was calculated.
125
- if ( numberOfSentences < 1 || numberOfWords <= 10 ) {
126
- return {
127
- score: -1,
128
- difficulty: DIFFICULTY.NO_DATA,
129
- };
130
- }
131
-
132
- const numberOfSyllables = countSyllables( text, syllables );
133
- const averageWordsPerSentence = getAverage( numberOfWords, numberOfSentences );
134
- const syllablesPer100Words = numberOfSyllables * ( 100 / numberOfWords );
135
- const statistics = {
136
- numberOfSentences,
137
- numberOfWords,
138
- numberOfSyllables,
139
- averageWordsPerSentence,
140
- syllablesPer100Words,
141
- };
142
-
143
- const getScore = researcher.getHelper( "fleschReadingScore" );
144
-
145
- const score = clamp( getScore( statistics ), 0, 100 );
146
-
147
- const difficulty = getDifficulty( score, languageSpecificConfiguration );
148
-
149
- return { score, difficulty };
150
- }
@@ -1,44 +0,0 @@
1
- import getAllWordsFromTree from "../helpers/word/getAllWordsFromTree";
2
-
3
- /**
4
- * Calculates the keyphrase density.
5
- *
6
- * @param {Paper} paper The paper containing keyphrase and text.
7
- * @param {Researcher} researcher The researcher.
8
- *
9
- * @returns {number} The keyphrase density.
10
- */
11
- export default function getKeyphraseDensity( paper, researcher ) {
12
- const getWordsCustomHelper = researcher.getHelper( "getWordsCustomHelper" );
13
- let wordCount = 0;
14
-
15
- // If there is a custom getWords helper, use its output for countWords.
16
- if ( getWordsCustomHelper ) {
17
- wordCount = getWordsCustomHelper( paper.getText() ).length;
18
- } else {
19
- wordCount = getAllWordsFromTree( paper ).length;
20
- }
21
-
22
- if ( wordCount === 0 ) {
23
- return 0;
24
- }
25
-
26
- const keyphraseCount = researcher.getResearch( "getKeyphraseCount" );
27
-
28
- return ( keyphraseCount.count / wordCount ) * 100;
29
- }
30
-
31
- /**
32
- * Calculates the keyphrase density.
33
- *
34
- * @deprecated Use getKeyphraseDensity instead.
35
- *
36
- * @param {Paper} paper The paper containing keyphrase and text.
37
- * @param {Researcher} researcher The researcher.
38
- *
39
- * @returns {number} The keyphrase density.
40
- */
41
- export function getKeywordDensity( paper, researcher ) {
42
- console.warn( "This function is deprecated, use getKeyphraseDensity instead." );
43
- return getKeyphraseDensity( paper, researcher );
44
- }
@@ -1,54 +0,0 @@
1
- import checkNofollow from "../helpers/link/checkNofollow.js";
2
- import getAnchors from "../helpers/link/getAnchorsFromText.js";
3
- import getLinkType from "../helpers/link/getLinkType.js";
4
-
5
- /**
6
- * Counts the links found in the text.
7
- *
8
- * @param {Paper} paper The paper object containing text, keyword and url.
9
- *
10
- * @returns {object} The object containing all linktypes.
11
- * total: the total number of links found.
12
- * internalTotal: the total number of links that are internal.
13
- * internalDofollow: the internal links without a nofollow attribute.
14
- * internalNofollow: the internal links with a nofollow attribute.
15
- * externalTotal: the total number of links that are external.
16
- * externalDofollow: the external links without a nofollow attribute.
17
- * externalNofollow: the internal links with a dofollow attribute.
18
- * otherTotal: all links that are not HTTP or HTTPS.
19
- * otherDofollow: other links without a nofollow attribute.
20
- * otherNofollow: other links with a nofollow attribute.
21
- */
22
- export default function( paper ) {
23
- const anchors = getAnchors( paper.getText() );
24
- /*
25
- * We get the site's URL (e.g., https://yoast.com) or domain (e.g., yoast.com) from the paper.
26
- * In case of WordPress, the variable is a URL. In case of Shopify, it is a domain.
27
- */
28
- const siteUrlOrDomain = paper.getPermalink();
29
-
30
- const linkCount = {
31
- total: anchors.length,
32
- internalTotal: 0,
33
- internalDofollow: 0,
34
- internalNofollow: 0,
35
- externalTotal: 0,
36
- externalDofollow: 0,
37
- externalNofollow: 0,
38
- otherTotal: 0,
39
- otherDofollow: 0,
40
- otherNofollow: 0,
41
- };
42
-
43
- for ( let i = 0; i < anchors.length; i++ ) {
44
- const currentAnchor = anchors[ i ];
45
-
46
- const linkType = getLinkType( currentAnchor, siteUrlOrDomain );
47
- const linkFollow = checkNofollow( currentAnchor );
48
-
49
- linkCount[ linkType + "Total" ]++;
50
- linkCount[ linkType + linkFollow ]++;
51
- }
52
-
53
- return linkCount;
54
- }
@@ -1,18 +0,0 @@
1
- /** @module analyses/getLinkStatistics */
2
-
3
- import getAnchors from "../helpers/link/getAnchorsFromText.js";
4
-
5
- import { map } from "lodash";
6
- import url from "../helpers/url/url.js";
7
-
8
- /**
9
- * Checks a text for anchors and returns the number found.
10
- *
11
- * @param {Object} paper The paper to get the text from.
12
- * @returns {Array} An array with the anchors
13
- */
14
- export default function( paper ) {
15
- const anchors = getAnchors( paper.getText() );
16
-
17
- return map( anchors, url.getFromAnchorTag );
18
- }