@focus-reactive/payload-plugin-seo 1.0.0 → 1.0.2

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 (406) hide show
  1. package/dist/admin.css +1214 -0
  2. package/dist/components/SeoButton/index.d.ts +14 -0
  3. package/dist/components/SeoButton/index.d.ts.map +1 -0
  4. package/dist/components/SeoButton/index.js +81 -0
  5. package/dist/components/SeoButton/index.js.map +1 -0
  6. package/dist/components/SeoDrawer/TabsNav/constants.d.ts +3 -0
  7. package/dist/components/SeoDrawer/TabsNav/constants.d.ts.map +1 -0
  8. package/dist/components/SeoDrawer/TabsNav/constants.js +13 -0
  9. package/dist/components/SeoDrawer/TabsNav/constants.js.map +1 -0
  10. package/dist/components/SeoDrawer/TabsNav/index.d.ts +8 -0
  11. package/dist/components/SeoDrawer/TabsNav/index.d.ts.map +1 -0
  12. package/dist/components/SeoDrawer/TabsNav/index.js +14 -0
  13. package/dist/components/SeoDrawer/TabsNav/index.js.map +1 -0
  14. package/dist/components/SeoDrawer/TabsNav/types.d.ts +8 -0
  15. package/dist/components/SeoDrawer/TabsNav/types.d.ts.map +1 -0
  16. package/dist/components/SeoDrawer/TabsNav/types.js +1 -0
  17. package/dist/components/SeoDrawer/TabsNav/types.js.map +1 -0
  18. package/dist/components/SeoDrawer/TabsNav/variants.d.ts +4 -0
  19. package/dist/components/SeoDrawer/TabsNav/variants.d.ts.map +1 -0
  20. package/dist/components/SeoDrawer/TabsNav/variants.js +14 -0
  21. package/dist/components/SeoDrawer/TabsNav/variants.js.map +1 -0
  22. package/dist/components/SeoDrawer/analysisDecision.d.ts +7 -0
  23. package/dist/components/SeoDrawer/analysisDecision.d.ts.map +1 -0
  24. package/dist/components/SeoDrawer/analysisDecision.js +12 -0
  25. package/dist/components/SeoDrawer/analysisDecision.js.map +1 -0
  26. package/dist/components/SeoDrawer/build-analysis-input.d.ts +24 -0
  27. package/dist/components/SeoDrawer/build-analysis-input.d.ts.map +1 -0
  28. package/dist/components/SeoDrawer/build-analysis-input.js +27 -0
  29. package/dist/components/SeoDrawer/build-analysis-input.js.map +1 -0
  30. package/dist/components/SeoDrawer/buildInput.d.ts +17 -0
  31. package/dist/components/SeoDrawer/buildInput.d.ts.map +1 -0
  32. package/dist/components/SeoDrawer/buildInput.js +32 -0
  33. package/dist/components/SeoDrawer/buildInput.js.map +1 -0
  34. package/dist/components/SeoDrawer/components/Header.d.ts +9 -0
  35. package/dist/components/SeoDrawer/components/Header.d.ts.map +1 -0
  36. package/dist/components/SeoDrawer/components/Header.js +21 -0
  37. package/dist/components/SeoDrawer/components/Header.js.map +1 -0
  38. package/dist/components/SeoDrawer/components/SerpPreview/highlight-keyphrase.d.ts +3 -0
  39. package/dist/components/SeoDrawer/components/SerpPreview/highlight-keyphrase.d.ts.map +1 -0
  40. package/dist/components/SeoDrawer/components/SerpPreview/highlight-keyphrase.js +14 -0
  41. package/dist/components/SeoDrawer/components/SerpPreview/highlight-keyphrase.js.map +1 -0
  42. package/dist/components/SeoDrawer/components/SerpPreview/index.d.ts +12 -0
  43. package/dist/components/SeoDrawer/components/SerpPreview/index.d.ts.map +1 -0
  44. package/dist/components/SeoDrawer/components/SerpPreview/index.js +23 -0
  45. package/dist/components/SeoDrawer/components/SerpPreview/index.js.map +1 -0
  46. package/dist/components/SeoDrawer/components/SerpPreview/serp-favicon.d.ts +8 -0
  47. package/dist/components/SeoDrawer/components/SerpPreview/serp-favicon.d.ts.map +1 -0
  48. package/dist/components/SeoDrawer/components/SerpPreview/serp-favicon.js +8 -0
  49. package/dist/components/SeoDrawer/components/SerpPreview/serp-favicon.js.map +1 -0
  50. package/dist/components/SeoDrawer/components/SerpPreview/truncate-description.d.ts +3 -0
  51. package/dist/components/SeoDrawer/components/SerpPreview/truncate-description.d.ts.map +1 -0
  52. package/dist/components/SeoDrawer/components/SerpPreview/truncate-description.js +16 -0
  53. package/dist/components/SeoDrawer/components/SerpPreview/truncate-description.js.map +1 -0
  54. package/dist/components/SeoDrawer/components/SerpPreview/variants.d.ts +19 -0
  55. package/dist/components/SeoDrawer/components/SerpPreview/variants.d.ts.map +1 -0
  56. package/dist/components/SeoDrawer/components/SerpPreview/variants.js +58 -0
  57. package/dist/components/SeoDrawer/components/SerpPreview/variants.js.map +1 -0
  58. package/dist/components/SeoDrawer/index.d.ts +18 -0
  59. package/dist/components/SeoDrawer/index.d.ts.map +1 -0
  60. package/dist/components/SeoDrawer/index.js +37 -0
  61. package/dist/components/SeoDrawer/index.js.map +1 -0
  62. package/dist/components/SeoDrawer/keyphrasePending.d.ts +2 -0
  63. package/dist/components/SeoDrawer/keyphrasePending.d.ts.map +1 -0
  64. package/dist/components/SeoDrawer/keyphrasePending.js +9 -0
  65. package/dist/components/SeoDrawer/keyphrasePending.js.map +1 -0
  66. package/dist/components/SeoDrawer/languagePacks.d.ts +2 -0
  67. package/dist/components/SeoDrawer/languagePacks.d.ts.map +1 -0
  68. package/dist/components/SeoDrawer/languagePacks.js +19 -0
  69. package/dist/components/SeoDrawer/languagePacks.js.map +1 -0
  70. package/dist/components/SeoDrawer/tabs/InclusiveTab.d.ts +5 -0
  71. package/dist/components/SeoDrawer/tabs/InclusiveTab.d.ts.map +1 -0
  72. package/dist/components/SeoDrawer/tabs/InclusiveTab.js +46 -0
  73. package/dist/components/SeoDrawer/tabs/InclusiveTab.js.map +1 -0
  74. package/dist/components/SeoDrawer/tabs/KeyphraseTab.d.ts +11 -0
  75. package/dist/components/SeoDrawer/tabs/KeyphraseTab.d.ts.map +1 -0
  76. package/dist/components/SeoDrawer/tabs/KeyphraseTab.js +72 -0
  77. package/dist/components/SeoDrawer/tabs/KeyphraseTab.js.map +1 -0
  78. package/dist/components/SeoDrawer/tabs/OnPageTab.d.ts +5 -0
  79. package/dist/components/SeoDrawer/tabs/OnPageTab.d.ts.map +1 -0
  80. package/dist/components/SeoDrawer/tabs/OnPageTab.js +37 -0
  81. package/dist/components/SeoDrawer/tabs/OnPageTab.js.map +1 -0
  82. package/dist/components/SeoDrawer/tabs/ReadabilityTab.d.ts +5 -0
  83. package/dist/components/SeoDrawer/tabs/ReadabilityTab.d.ts.map +1 -0
  84. package/dist/components/SeoDrawer/tabs/ReadabilityTab.js +37 -0
  85. package/dist/components/SeoDrawer/tabs/ReadabilityTab.js.map +1 -0
  86. package/dist/components/SeoDrawer/tabs/SerpTab.d.ts +7 -0
  87. package/dist/components/SeoDrawer/tabs/SerpTab.d.ts.map +1 -0
  88. package/dist/components/SeoDrawer/tabs/SerpTab.js +41 -0
  89. package/dist/components/SeoDrawer/tabs/SerpTab.js.map +1 -0
  90. package/dist/components/SeoDrawer/tabs/VitalsTab.d.ts +7 -0
  91. package/dist/components/SeoDrawer/tabs/VitalsTab.d.ts.map +1 -0
  92. package/dist/components/SeoDrawer/tabs/VitalsTab.js +42 -0
  93. package/dist/components/SeoDrawer/tabs/VitalsTab.js.map +1 -0
  94. package/dist/components/SeoDrawer/useAnalysis.d.ts +17 -0
  95. package/dist/components/SeoDrawer/useAnalysis.d.ts.map +1 -0
  96. package/dist/components/SeoDrawer/useAnalysis.js +57 -0
  97. package/dist/components/SeoDrawer/useAnalysis.js.map +1 -0
  98. package/dist/components/SeoDrawer/useLiveDocument.d.ts +22 -0
  99. package/dist/components/SeoDrawer/useLiveDocument.d.ts.map +1 -0
  100. package/dist/components/SeoDrawer/useLiveDocument.js +85 -0
  101. package/dist/components/SeoDrawer/useLiveDocument.js.map +1 -0
  102. package/dist/components/SeoDrawer/variants.d.ts +4 -0
  103. package/dist/components/SeoDrawer/variants.d.ts.map +1 -0
  104. package/dist/components/SeoDrawer/variants.js +14 -0
  105. package/dist/components/SeoDrawer/variants.js.map +1 -0
  106. package/dist/components/icons.d.ts +7 -0
  107. package/dist/components/icons.d.ts.map +1 -0
  108. package/dist/components/icons.js +40 -0
  109. package/dist/components/icons.js.map +1 -0
  110. package/dist/config.d.ts +4 -0
  111. package/dist/config.d.ts.map +1 -0
  112. package/dist/config.js +15 -0
  113. package/dist/config.js.map +1 -0
  114. package/dist/constants/checkIds.d.ts +8 -0
  115. package/dist/constants/checkIds.d.ts.map +1 -0
  116. package/dist/constants/checkIds.js +21 -0
  117. package/dist/constants/checkIds.js.map +1 -0
  118. package/dist/constants/index.d.ts +5 -0
  119. package/dist/constants/index.d.ts.map +1 -0
  120. package/dist/constants/index.js +10 -0
  121. package/dist/constants/index.js.map +1 -0
  122. package/dist/constants/statuses.d.ts +3 -0
  123. package/dist/constants/statuses.d.ts.map +1 -0
  124. package/dist/constants/statuses.js +9 -0
  125. package/dist/constants/statuses.js.map +1 -0
  126. package/dist/content/extractContent.d.ts +3 -0
  127. package/dist/content/extractContent.d.ts.map +1 -0
  128. package/dist/content/extractContent.js +31 -0
  129. package/dist/content/extractContent.js.map +1 -0
  130. package/dist/content/lexicalToHtml.d.ts +6 -0
  131. package/dist/content/lexicalToHtml.d.ts.map +1 -0
  132. package/dist/content/lexicalToHtml.js +15 -0
  133. package/dist/content/lexicalToHtml.js.map +1 -0
  134. package/dist/content/uploads/collect-upload-refs.d.ts +5 -0
  135. package/dist/content/uploads/collect-upload-refs.d.ts.map +1 -0
  136. package/dist/content/uploads/collect-upload-refs.js +19 -0
  137. package/dist/content/uploads/collect-upload-refs.js.map +1 -0
  138. package/dist/content/uploads/hydrate-values.d.ts +5 -0
  139. package/dist/content/uploads/hydrate-values.d.ts.map +1 -0
  140. package/dist/content/uploads/hydrate-values.js +15 -0
  141. package/dist/content/uploads/hydrate-values.js.map +1 -0
  142. package/dist/content/uploads/media-resolver.d.ts +7 -0
  143. package/dist/content/uploads/media-resolver.d.ts.map +1 -0
  144. package/dist/content/uploads/media-resolver.js +60 -0
  145. package/dist/content/uploads/media-resolver.js.map +1 -0
  146. package/dist/content/uploads/transform-lexical-uploads.d.ts +5 -0
  147. package/dist/content/uploads/transform-lexical-uploads.d.ts.map +1 -0
  148. package/dist/content/uploads/transform-lexical-uploads.js +34 -0
  149. package/dist/content/uploads/transform-lexical-uploads.js.map +1 -0
  150. package/dist/content/uploads/transform-upload-values.d.ts +10 -0
  151. package/dist/content/uploads/transform-upload-values.d.ts.map +1 -0
  152. package/dist/content/uploads/transform-upload-values.js +108 -0
  153. package/dist/content/uploads/transform-upload-values.js.map +1 -0
  154. package/dist/content/uploads/types.d.ts +8 -0
  155. package/dist/content/uploads/types.d.ts.map +1 -0
  156. package/dist/content/uploads/types.js +7 -0
  157. package/dist/content/uploads/types.js.map +1 -0
  158. package/dist/content/walkValue.d.ts +14 -0
  159. package/dist/content/walkValue.d.ts.map +1 -0
  160. package/dist/content/walkValue.js +62 -0
  161. package/dist/content/walkValue.js.map +1 -0
  162. package/dist/css.d.js +1 -0
  163. package/dist/css.d.js.map +1 -0
  164. package/dist/engine/assessorAdapter.d.ts +14 -0
  165. package/dist/engine/assessorAdapter.d.ts.map +1 -0
  166. package/dist/engine/assessorAdapter.js +23 -0
  167. package/dist/engine/assessorAdapter.js.map +1 -0
  168. package/dist/engine/buildPaper.d.ts +4 -0
  169. package/dist/engine/buildPaper.d.ts.map +1 -0
  170. package/dist/engine/buildPaper.js +16 -0
  171. package/dist/engine/buildPaper.js.map +1 -0
  172. package/dist/engine/extractCheckData.d.ts +4 -0
  173. package/dist/engine/extractCheckData.d.ts.map +1 -0
  174. package/dist/engine/extractCheckData.js +162 -0
  175. package/dist/engine/extractCheckData.js.map +1 -0
  176. package/dist/engine/helpers/has-keyphrase.d.ts +2 -0
  177. package/dist/engine/helpers/has-keyphrase.d.ts.map +1 -0
  178. package/dist/engine/helpers/has-keyphrase.js +7 -0
  179. package/dist/engine/helpers/has-keyphrase.js.map +1 -0
  180. package/dist/engine/helpers/title-progress.d.ts +5 -0
  181. package/dist/engine/helpers/title-progress.d.ts.map +1 -0
  182. package/dist/engine/helpers/title-progress.js +21 -0
  183. package/dist/engine/helpers/title-progress.js.map +1 -0
  184. package/dist/engine/inclusiveScore.d.ts +15 -0
  185. package/dist/engine/inclusiveScore.d.ts.map +1 -0
  186. package/dist/engine/inclusiveScore.js +25 -0
  187. package/dist/engine/inclusiveScore.js.map +1 -0
  188. package/dist/engine/recommendations.d.ts +7 -0
  189. package/dist/engine/recommendations.d.ts.map +1 -0
  190. package/dist/engine/recommendations.js +53 -0
  191. package/dist/engine/recommendations.js.map +1 -0
  192. package/dist/engine/researcherAdapter.d.ts +6 -0
  193. package/dist/engine/researcherAdapter.d.ts.map +1 -0
  194. package/dist/engine/researcherAdapter.js +16 -0
  195. package/dist/engine/researcherAdapter.js.map +1 -0
  196. package/dist/engine/runAnalysis/index.d.ts +3 -0
  197. package/dist/engine/runAnalysis/index.d.ts.map +1 -0
  198. package/dist/engine/runAnalysis/index.js +24 -0
  199. package/dist/engine/runAnalysis/index.js.map +1 -0
  200. package/dist/engine/runAnalysis/services/derive-inclusive.d.ts +4 -0
  201. package/dist/engine/runAnalysis/services/derive-inclusive.d.ts.map +1 -0
  202. package/dist/engine/runAnalysis/services/derive-inclusive.js +47 -0
  203. package/dist/engine/runAnalysis/services/derive-inclusive.js.map +1 -0
  204. package/dist/engine/runAnalysis/services/derive-readability.d.ts +4 -0
  205. package/dist/engine/runAnalysis/services/derive-readability.d.ts.map +1 -0
  206. package/dist/engine/runAnalysis/services/derive-readability.js +32 -0
  207. package/dist/engine/runAnalysis/services/derive-readability.js.map +1 -0
  208. package/dist/engine/runAnalysis/services/derive-seo.d.ts +18 -0
  209. package/dist/engine/runAnalysis/services/derive-seo.d.ts.map +1 -0
  210. package/dist/engine/runAnalysis/services/derive-seo.js +40 -0
  211. package/dist/engine/runAnalysis/services/derive-seo.js.map +1 -0
  212. package/dist/engine/runAnalysis/services/derive-serp.d.ts +3 -0
  213. package/dist/engine/runAnalysis/services/derive-serp.d.ts.map +1 -0
  214. package/dist/engine/runAnalysis/services/derive-serp.js +13 -0
  215. package/dist/engine/runAnalysis/services/derive-serp.js.map +1 -0
  216. package/dist/engine/runAnalysis/services/derive-vitals/index.d.ts +4 -0
  217. package/dist/engine/runAnalysis/services/derive-vitals/index.d.ts.map +1 -0
  218. package/dist/engine/runAnalysis/services/derive-vitals/index.js +19 -0
  219. package/dist/engine/runAnalysis/services/derive-vitals/index.js.map +1 -0
  220. package/dist/engine/runAnalysis/services/derive-vitals/researches.d.ts +19 -0
  221. package/dist/engine/runAnalysis/services/derive-vitals/researches.d.ts.map +1 -0
  222. package/dist/engine/runAnalysis/services/derive-vitals/researches.js +47 -0
  223. package/dist/engine/runAnalysis/services/derive-vitals/researches.js.map +1 -0
  224. package/dist/engine/runAnalysis/utils/enrich.d.ts +5 -0
  225. package/dist/engine/runAnalysis/utils/enrich.d.ts.map +1 -0
  226. package/dist/engine/runAnalysis/utils/enrich.js +16 -0
  227. package/dist/engine/runAnalysis/utils/enrich.js.map +1 -0
  228. package/dist/engine/runAnalysis/utils/toCategory.d.ts +3 -0
  229. package/dist/engine/runAnalysis/utils/toCategory.d.ts.map +1 -0
  230. package/dist/engine/runAnalysis/utils/toCategory.js +13 -0
  231. package/dist/engine/runAnalysis/utils/toCategory.js.map +1 -0
  232. package/dist/engine/scoreStatus.d.ts +8 -0
  233. package/dist/engine/scoreStatus.d.ts.map +1 -0
  234. package/dist/engine/scoreStatus.js +35 -0
  235. package/dist/engine/scoreStatus.js.map +1 -0
  236. package/dist/engine/types/analysis.d.ts +81 -0
  237. package/dist/engine/types/analysis.d.ts.map +1 -0
  238. package/dist/engine/types/analysis.js +1 -0
  239. package/dist/engine/types/analysis.js.map +1 -0
  240. package/dist/engine/types/paper.d.ts +8 -0
  241. package/dist/engine/types/paper.d.ts.map +1 -0
  242. package/dist/engine/types/paper.js +1 -0
  243. package/dist/engine/types/paper.js.map +1 -0
  244. package/dist/engine/types/visualization.d.ts +73 -0
  245. package/dist/engine/types/visualization.d.ts.map +1 -0
  246. package/dist/engine/types/visualization.js +1 -0
  247. package/dist/engine/types/visualization.js.map +1 -0
  248. package/dist/engine/visualization/buildGauge.d.ts +3 -0
  249. package/dist/engine/visualization/buildGauge.d.ts.map +1 -0
  250. package/dist/engine/visualization/buildGauge.js +62 -0
  251. package/dist/engine/visualization/buildGauge.js.map +1 -0
  252. package/dist/engine/visualization/formatGaugeValue.d.ts +3 -0
  253. package/dist/engine/visualization/formatGaugeValue.d.ts.map +1 -0
  254. package/dist/engine/visualization/formatGaugeValue.js +16 -0
  255. package/dist/engine/visualization/formatGaugeValue.js.map +1 -0
  256. package/dist/engine/visualization/gaugeSpecs.d.ts +4 -0
  257. package/dist/engine/visualization/gaugeSpecs.d.ts.map +1 -0
  258. package/dist/engine/visualization/gaugeSpecs.js +78 -0
  259. package/dist/engine/visualization/gaugeSpecs.js.map +1 -0
  260. package/dist/engine/visualization/resolveVisualization/constants.d.ts +4 -0
  261. package/dist/engine/visualization/resolveVisualization/constants.d.ts.map +1 -0
  262. package/dist/engine/visualization/resolveVisualization/constants.js +17 -0
  263. package/dist/engine/visualization/resolveVisualization/constants.js.map +1 -0
  264. package/dist/engine/visualization/resolveVisualization/index.d.ts +4 -0
  265. package/dist/engine/visualization/resolveVisualization/index.d.ts.map +1 -0
  266. package/dist/engine/visualization/resolveVisualization/index.js +43 -0
  267. package/dist/engine/visualization/resolveVisualization/index.js.map +1 -0
  268. package/dist/engine/visualization/resolveVisualization/resolves/resolveDrilldown.d.ts +3 -0
  269. package/dist/engine/visualization/resolveVisualization/resolves/resolveDrilldown.d.ts.map +1 -0
  270. package/dist/engine/visualization/resolveVisualization/resolves/resolveDrilldown.js +19 -0
  271. package/dist/engine/visualization/resolveVisualization/resolves/resolveDrilldown.js.map +1 -0
  272. package/dist/engine/visualization/resolveVisualization/resolves/resolveLinks.d.ts +4 -0
  273. package/dist/engine/visualization/resolveVisualization/resolves/resolveLinks.d.ts.map +1 -0
  274. package/dist/engine/visualization/resolveVisualization/resolves/resolveLinks.js +24 -0
  275. package/dist/engine/visualization/resolveVisualization/resolves/resolveLinks.js.map +1 -0
  276. package/dist/engine/visualization/resolveVisualization/resolves/resolvePresence.d.ts +4 -0
  277. package/dist/engine/visualization/resolveVisualization/resolves/resolvePresence.d.ts.map +1 -0
  278. package/dist/engine/visualization/resolveVisualization/resolves/resolvePresence.js +7 -0
  279. package/dist/engine/visualization/resolveVisualization/resolves/resolvePresence.js.map +1 -0
  280. package/dist/engine/visualization/resolveVisualization/resolves/resolveProportionCount.d.ts +4 -0
  281. package/dist/engine/visualization/resolveVisualization/resolves/resolveProportionCount.d.ts.map +1 -0
  282. package/dist/engine/visualization/resolveVisualization/resolves/resolveProportionCount.js +20 -0
  283. package/dist/engine/visualization/resolveVisualization/resolves/resolveProportionCount.js.map +1 -0
  284. package/dist/engine/visualization/resolveVisualization/resolves/resolveValueRange.d.ts +4 -0
  285. package/dist/engine/visualization/resolveVisualization/resolves/resolveValueRange.d.ts.map +1 -0
  286. package/dist/engine/visualization/resolveVisualization/resolves/resolveValueRange.js +28 -0
  287. package/dist/engine/visualization/resolveVisualization/resolves/resolveValueRange.js.map +1 -0
  288. package/dist/engine/visualization/resolveVisualization/utils/pluralize.d.ts +2 -0
  289. package/dist/engine/visualization/resolveVisualization/utils/pluralize.d.ts.map +1 -0
  290. package/dist/engine/visualization/resolveVisualization/utils/pluralize.js +5 -0
  291. package/dist/engine/visualization/resolveVisualization/utils/pluralize.js.map +1 -0
  292. package/dist/engine/visualization/resolveVisualization/utils/readDrilldownItems.d.ts +5 -0
  293. package/dist/engine/visualization/resolveVisualization/utils/readDrilldownItems.d.ts.map +1 -0
  294. package/dist/engine/visualization/resolveVisualization/utils/readDrilldownItems.js +8 -0
  295. package/dist/engine/visualization/resolveVisualization/utils/readDrilldownItems.js.map +1 -0
  296. package/dist/engine/visualization/resolveVisualization/utils/readNumber.d.ts +2 -0
  297. package/dist/engine/visualization/resolveVisualization/utils/readNumber.d.ts.map +1 -0
  298. package/dist/engine/visualization/resolveVisualization/utils/readNumber.js +8 -0
  299. package/dist/engine/visualization/resolveVisualization/utils/readNumber.js.map +1 -0
  300. package/dist/engine/visualization/resolveVisualization/utils/readPositions.d.ts +2 -0
  301. package/dist/engine/visualization/resolveVisualization/utils/readPositions.d.ts.map +1 -0
  302. package/dist/engine/visualization/resolveVisualization/utils/readPositions.js +8 -0
  303. package/dist/engine/visualization/resolveVisualization/utils/readPositions.js.map +1 -0
  304. package/dist/index.d.ts +3 -0
  305. package/dist/index.d.ts.map +1 -0
  306. package/dist/index.js +5 -0
  307. package/dist/index.js.map +1 -0
  308. package/dist/plugin.d.ts +4 -0
  309. package/dist/plugin.d.ts.map +1 -0
  310. package/dist/plugin.js +23 -0
  311. package/dist/plugin.js.map +1 -0
  312. package/dist/translations/en.d.ts +3 -0
  313. package/dist/translations/en.d.ts.map +1 -0
  314. package/dist/translations/en.js +17 -0
  315. package/dist/translations/en.js.map +1 -0
  316. package/dist/translations/types.d.ts +2 -0
  317. package/dist/translations/types.d.ts.map +1 -0
  318. package/dist/translations/types.js +1 -0
  319. package/dist/translations/types.js.map +1 -0
  320. package/dist/types/config.d.ts +39 -0
  321. package/dist/types/config.d.ts.map +1 -0
  322. package/dist/types/config.js +1 -0
  323. package/dist/types/config.js.map +1 -0
  324. package/dist/ui/CheckRow/CheckVisualization/index.d.ts +5 -0
  325. package/dist/ui/CheckRow/CheckVisualization/index.d.ts.map +1 -0
  326. package/dist/ui/CheckRow/CheckVisualization/index.js +27 -0
  327. package/dist/ui/CheckRow/CheckVisualization/index.js.map +1 -0
  328. package/dist/ui/CheckRow/CheckVisualization/visualizations/DensityGauge.d.ts +3 -0
  329. package/dist/ui/CheckRow/CheckVisualization/visualizations/DensityGauge.d.ts.map +1 -0
  330. package/dist/ui/CheckRow/CheckVisualization/visualizations/DensityGauge.js +72 -0
  331. package/dist/ui/CheckRow/CheckVisualization/visualizations/DensityGauge.js.map +1 -0
  332. package/dist/ui/CheckRow/CheckVisualization/visualizations/DistributionBar.d.ts +3 -0
  333. package/dist/ui/CheckRow/CheckVisualization/visualizations/DistributionBar.d.ts.map +1 -0
  334. package/dist/ui/CheckRow/CheckVisualization/visualizations/DistributionBar.js +16 -0
  335. package/dist/ui/CheckRow/CheckVisualization/visualizations/DistributionBar.js.map +1 -0
  336. package/dist/ui/CheckRow/CheckVisualization/visualizations/DrillDown.d.ts +3 -0
  337. package/dist/ui/CheckRow/CheckVisualization/visualizations/DrillDown.d.ts.map +1 -0
  338. package/dist/ui/CheckRow/CheckVisualization/visualizations/DrillDown.js +36 -0
  339. package/dist/ui/CheckRow/CheckVisualization/visualizations/DrillDown.js.map +1 -0
  340. package/dist/ui/CheckRow/CheckVisualization/visualizations/SegmentBar.d.ts +3 -0
  341. package/dist/ui/CheckRow/CheckVisualization/visualizations/SegmentBar.d.ts.map +1 -0
  342. package/dist/ui/CheckRow/CheckVisualization/visualizations/SegmentBar.js +32 -0
  343. package/dist/ui/CheckRow/CheckVisualization/visualizations/SegmentBar.js.map +1 -0
  344. package/dist/ui/CheckRow/constants/labels.d.ts +6 -0
  345. package/dist/ui/CheckRow/constants/labels.d.ts.map +1 -0
  346. package/dist/ui/CheckRow/constants/labels.js +103 -0
  347. package/dist/ui/CheckRow/constants/labels.js.map +1 -0
  348. package/dist/ui/CheckRow/index.d.ts +7 -0
  349. package/dist/ui/CheckRow/index.d.ts.map +1 -0
  350. package/dist/ui/CheckRow/index.js +29 -0
  351. package/dist/ui/CheckRow/index.js.map +1 -0
  352. package/dist/ui/FilterPills.d.ts +10 -0
  353. package/dist/ui/FilterPills.d.ts.map +1 -0
  354. package/dist/ui/FilterPills.js +37 -0
  355. package/dist/ui/FilterPills.js.map +1 -0
  356. package/dist/ui/KpiCard.d.ts +9 -0
  357. package/dist/ui/KpiCard.d.ts.map +1 -0
  358. package/dist/ui/KpiCard.js +19 -0
  359. package/dist/ui/KpiCard.js.map +1 -0
  360. package/dist/ui/Pill.d.ts +9 -0
  361. package/dist/ui/Pill.d.ts.map +1 -0
  362. package/dist/ui/Pill.js +20 -0
  363. package/dist/ui/Pill.js.map +1 -0
  364. package/dist/ui/ScoreRing.d.ts +8 -0
  365. package/dist/ui/ScoreRing.d.ts.map +1 -0
  366. package/dist/ui/ScoreRing.js +20 -0
  367. package/dist/ui/ScoreRing.js.map +1 -0
  368. package/dist/ui/SectionCard.d.ts +9 -0
  369. package/dist/ui/SectionCard.d.ts.map +1 -0
  370. package/dist/ui/SectionCard.js +16 -0
  371. package/dist/ui/SectionCard.js.map +1 -0
  372. package/dist/ui/SectionWrapper.d.ts +8 -0
  373. package/dist/ui/SectionWrapper.d.ts.map +1 -0
  374. package/dist/ui/SectionWrapper.js +10 -0
  375. package/dist/ui/SectionWrapper.js.map +1 -0
  376. package/dist/ui/SegmentedControl.d.ts +15 -0
  377. package/dist/ui/SegmentedControl.d.ts.map +1 -0
  378. package/dist/ui/SegmentedControl.js +75 -0
  379. package/dist/ui/SegmentedControl.js.map +1 -0
  380. package/dist/ui/TabHeader.d.ts +12 -0
  381. package/dist/ui/TabHeader.d.ts.map +1 -0
  382. package/dist/ui/TabHeader.js +22 -0
  383. package/dist/ui/TabHeader.js.map +1 -0
  384. package/dist/ui/Tooltip.d.ts +17 -0
  385. package/dist/ui/Tooltip.d.ts.map +1 -0
  386. package/dist/ui/Tooltip.js +81 -0
  387. package/dist/ui/Tooltip.js.map +1 -0
  388. package/dist/utils/config/getComponentPath.d.ts +2 -0
  389. package/dist/utils/config/getComponentPath.d.ts.map +1 -0
  390. package/dist/utils/config/getComponentPath.js +8 -0
  391. package/dist/utils/config/getComponentPath.js.map +1 -0
  392. package/dist/utils/config/mergeTranslations.d.ts +3 -0
  393. package/dist/utils/config/mergeTranslations.d.ts.map +1 -0
  394. package/dist/utils/config/mergeTranslations.js +11 -0
  395. package/dist/utils/config/mergeTranslations.js.map +1 -0
  396. package/dist/utils/config/overrideAdmin.d.ts +4 -0
  397. package/dist/utils/config/overrideAdmin.d.ts.map +1 -0
  398. package/dist/utils/config/overrideAdmin.js +43 -0
  399. package/dist/utils/config/overrideAdmin.js.map +1 -0
  400. package/dist/utils/style.d.ts +4 -0
  401. package/dist/utils/style.d.ts.map +1 -0
  402. package/dist/utils/style.js +11 -0
  403. package/dist/utils/style.js.map +1 -0
  404. package/dist/yoastseo.d.js +1 -0
  405. package/dist/yoastseo.d.js.map +1 -0
  406. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/engine/extractCheckData.ts"],"sourcesContent":["import { getResearch } from \"./researcherAdapter\";\nimport type { YoastResearcher } from \"./researcherAdapter\";\nimport { getTitleProgressGuarded } from \"./helpers/title-progress\";\nimport type { PaperLike } from \"./types/paper\";\n\nconst MAX_SENTENCE_WORDS = 20;\nconst MAX_PARAGRAPH_WORDS = 150;\nconst SNIPPET_MAX = 64;\n\nfunction stripHtml(html: string): string {\n return html.replace(/<[^>]*>/gu, \" \");\n}\n\nfunction splitSentences(text: string): string[] {\n return stripHtml(text)\n .split(/[.!?]+/u)\n .map((s) => s.trim())\n .filter(Boolean);\n}\n\nfunction sentenceLengthPct(text: string): { pct: number } | undefined {\n const sentences = splitSentences(text);\n if (!sentences.length) return undefined;\n const long = sentences.filter((s) => s.split(/\\s+/u).filter(Boolean).length > MAX_SENTENCE_WORDS).length;\n return { pct: Math.round((long / sentences.length) * 100) };\n}\n\nfunction keyphrasePositions(text: string, keyphrase: string): number[] {\n const kp = keyphrase.trim().toLowerCase();\n if (!kp) return [];\n const sentences = splitSentences(text);\n const n = sentences.length;\n if (!n) return [];\n const positions: number[] = [];\n sentences.forEach((s, i) => {\n if (s.toLowerCase().includes(kp)) positions.push(Math.round(((i + 0.5) / n) * 100));\n });\n return positions;\n}\n\nfunction snippet(text: string): string {\n const t = text.trim();\n return t.length > SNIPPET_MAX ? `${t.slice(0, SNIPPET_MAX - 1)}…` : t;\n}\n\nexport function extractCheckData(id: string, paper: PaperLike, researcher: YoastResearcher): Record<string, unknown> | undefined {\n switch (id) {\n case \"keyphraseDensity\": {\n const r = getResearch<{ density: number }>(researcher, \"getKeyphraseDensity\");\n return r ? { densityPct: r.density } : undefined;\n }\n case \"imageKeyphrase\": {\n const r = getResearch<{\n noAlt: number;\n withAlt: number;\n withAltKeyword: number;\n withAltNonKeyword: number;\n }>(researcher, \"altTagCount\");\n if (!r) return undefined;\n const total = r.noAlt + r.withAlt + r.withAltKeyword + r.withAltNonKeyword;\n return { total, matched: r.withAltKeyword };\n }\n case \"externalLinks\":\n case \"internalLinks\": {\n const s = getResearch<{\n externalTotal: number;\n externalDofollow: number;\n internalTotal: number;\n internalDofollow: number;\n }>(researcher, \"getLinkStatistics\");\n if (!s) return undefined;\n return id === \"externalLinks\" ? { total: s.externalTotal, follow: s.externalDofollow } : { total: s.internalTotal, follow: s.internalDofollow };\n }\n case \"metaDescriptionLength\": {\n const chars = getResearch<number>(researcher, \"metaDescriptionLength\");\n return typeof chars === \"number\" ? { chars } : undefined;\n }\n case \"textLength\": {\n const wc = getResearch<number | { count?: number }>(researcher, \"wordCountInText\");\n const words = typeof wc === \"number\" ? wc : wc?.count;\n return typeof words === \"number\" ? { words } : undefined;\n }\n case \"fleschReadingEase\": {\n const r = getResearch<{ score: number }>(researcher, \"getFleschReadingScore\");\n return r && r.score >= 0 ? { score: r.score } : undefined;\n }\n case \"titleWidth\": {\n const title = paper.getTitle?.() ?? \"\";\n return title ? { px: getTitleProgressGuarded(title).actual } : undefined;\n }\n case \"textTransitionWords\": {\n const r = getResearch<{\n totalSentences: number;\n transitionWordSentences: number;\n }>(researcher, \"findTransitionWords\");\n if (!r || !r.totalSentences) return undefined;\n return {\n pct: Math.round((r.transitionWordSentences / r.totalSentences) * 100),\n };\n }\n case \"textSentenceLength\":\n return sentenceLengthPct(paper.getText?.() ?? \"\");\n case \"keyphraseDistribution\": {\n const positions = keyphrasePositions(paper.getText?.() ?? \"\", paper.getKeyword?.() ?? \"\");\n return positions.length ? { positions } : undefined;\n }\n case \"textParagraphTooLong\": {\n const ps = getResearch<{ paragraph: { innerText: () => string }; paragraphLength: number }[]>(researcher, \"getParagraphLength\");\n if (!ps) return undefined;\n const long = ps.filter((p) => p.paragraphLength > MAX_PARAGRAPH_WORDS);\n if (!long.length) return undefined;\n return {\n paragraphs: long.map((p) => ({\n // oxlint-disable-next-line unicorn/prefer-dom-node-text-content -- Yoast tree node, not a DOM node; only innerText() exists\n left: snippet(p.paragraph.innerText()),\n right: `${p.paragraphLength} words`,\n })),\n };\n }\n case \"keyphraseLength\": {\n const r = getResearch<{ keyphraseLength: number }>(researcher, \"keyphraseLength\");\n return typeof r?.keyphraseLength === \"number\" ? { words: r.keyphraseLength } : undefined;\n }\n case \"subheadingsKeyword\": {\n const r = getResearch<{ count: number; matches: number }>(researcher, \"matchKeywordInSubheadings\");\n return r && r.count > 0 ? { matched: r.matches, total: r.count } : undefined;\n }\n case \"textCompetingLinks\": {\n const r = getResearch<{\n anchorsWithKeyphrase: { innerText: () => string }[];\n anchorsWithKeyphraseCount: number;\n }>(researcher, \"getAnchorsWithKeyphrase\");\n if (!r || !r.anchorsWithKeyphraseCount) return undefined;\n return {\n items: r.anchorsWithKeyphrase.map((a) => ({\n // oxlint-disable-next-line unicorn/prefer-dom-node-text-content -- Yoast tree node, not a DOM node; only innerText() exists\n left: snippet(a.innerText()),\n right: \"competing\",\n })),\n };\n }\n case \"passiveVoice\": {\n const r = getResearch<{ total: number; passives: string[] }>(researcher, \"getPassiveVoiceResult\");\n if (!r || !r.total) return undefined;\n return { pct: Math.round((r.passives.length / r.total) * 100) };\n }\n case \"sentenceBeginnings\": {\n const r = getResearch<{ word: string; count: number }[]>(researcher, \"getSentenceBeginnings\");\n if (!Array.isArray(r)) return undefined;\n const repeats = r.filter((g) => g.count >= 3);\n return repeats.length\n ? {\n items: repeats.map((g) => ({ left: g.word, right: `${g.count}×` })),\n }\n : undefined;\n }\n case \"subheadingsTooLong\": {\n const r = getResearch<{ subheading: string; text: string; countLength: number }[]>(researcher, \"getSubheadingTextLengths\");\n if (!Array.isArray(r)) return undefined;\n const long = r.filter((s) => s.countLength > 300);\n return long.length\n ? {\n items: long.map((s) => ({\n left: s.subheading || snippet(s.text),\n right: `${s.countLength} words`,\n })),\n }\n : undefined;\n }\n case \"images\": {\n const n = getResearch<number>(researcher, \"imageCount\");\n return typeof n === \"number\" ? { count: n } : undefined;\n }\n default:\n return undefined;\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,2 @@
1
+ export declare function hasKeyphrase(keyphrase: string): boolean;
2
+ //# sourceMappingURL=has-keyphrase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"has-keyphrase.d.ts","sourceRoot":"","sources":["../../../src/engine/helpers/has-keyphrase.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEvD"}
@@ -0,0 +1,7 @@
1
+ function hasKeyphrase(keyphrase) {
2
+ return keyphrase.trim().length > 0;
3
+ }
4
+ export {
5
+ hasKeyphrase
6
+ };
7
+ //# sourceMappingURL=has-keyphrase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/engine/helpers/has-keyphrase.ts"],"sourcesContent":["export function hasKeyphrase(keyphrase: string): boolean {\n return keyphrase.trim().length > 0;\n}\n"],"mappings":"AAAO,SAAS,aAAa,WAA4B;AACvD,SAAO,UAAU,KAAK,EAAE,SAAS;AACnC;","names":[]}
@@ -0,0 +1,5 @@
1
+ import type { LengthProgress } from '@yoast/search-metadata-previews/build/helpers/progress';
2
+ export declare const AVG_GLYPH_PX = 8.5;
3
+ export declare const TITLE_FALLBACK_MAX_PX = 600;
4
+ export declare function getTitleProgressGuarded(title: string): LengthProgress;
5
+ //# sourceMappingURL=title-progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"title-progress.d.ts","sourceRoot":"","sources":["../../../src/engine/helpers/title-progress.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wDAAwD,CAAC;AAE7F,eAAO,MAAM,YAAY,MAAM,CAAC;AAChC,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAarE"}
@@ -0,0 +1,21 @@
1
+ import { getTitleProgress } from "@yoast/search-metadata-previews/build/helpers/progress";
2
+ const AVG_GLYPH_PX = 8.5;
3
+ const TITLE_FALLBACK_MAX_PX = 600;
4
+ function getTitleProgressGuarded(title) {
5
+ if (typeof document !== "undefined") {
6
+ return getTitleProgress(title);
7
+ }
8
+ const actual = Math.round(title.length * AVG_GLYPH_PX);
9
+ const score = actual <= TITLE_FALLBACK_MAX_PX ? 9 : 1;
10
+ return {
11
+ actual,
12
+ max: TITLE_FALLBACK_MAX_PX,
13
+ score
14
+ };
15
+ }
16
+ export {
17
+ AVG_GLYPH_PX,
18
+ TITLE_FALLBACK_MAX_PX,
19
+ getTitleProgressGuarded
20
+ };
21
+ //# sourceMappingURL=title-progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/engine/helpers/title-progress.ts"],"sourcesContent":["import { getTitleProgress } from '@yoast/search-metadata-previews/build/helpers/progress';\nimport type { LengthProgress } from '@yoast/search-metadata-previews/build/helpers/progress';\n\nexport const AVG_GLYPH_PX = 8.5;\nexport const TITLE_FALLBACK_MAX_PX = 600;\n\nexport function getTitleProgressGuarded(title: string): LengthProgress {\n if (typeof document !== \"undefined\") {\n return getTitleProgress(title);\n }\n\n const actual = Math.round(title.length * AVG_GLYPH_PX);\n const score = actual <= TITLE_FALLBACK_MAX_PX ? 9 : 1;\n\n return {\n actual,\n max: TITLE_FALLBACK_MAX_PX,\n score,\n };\n}\n"],"mappings":"AAAA,SAAS,wBAAwB;AAG1B,MAAM,eAAe;AACrB,MAAM,wBAAwB;AAE9B,SAAS,wBAAwB,OAA+B;AACrE,MAAI,OAAO,aAAa,aAAa;AACnC,WAAO,iBAAiB,KAAK;AAAA,EAC/B;AAEA,QAAM,SAAS,KAAK,MAAM,MAAM,SAAS,YAAY;AACrD,QAAM,QAAQ,UAAU,wBAAwB,IAAI;AAEpD,SAAO;AAAA,IACL;AAAA,IACA,KAAK;AAAA,IACL;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,15 @@
1
+ import type { InclusiveCategory, Status } from "./types/analysis";
2
+ export interface RawInclusiveFlag {
3
+ category: string;
4
+ term: string;
5
+ suggestion: string;
6
+ location: string;
7
+ }
8
+ export interface InclusiveResult {
9
+ ringScore: number;
10
+ status: Status;
11
+ categories: InclusiveCategory[];
12
+ cleanCategories: string[];
13
+ }
14
+ export declare function scoreInclusive(flags: RawInclusiveFlag[], allCategories: string[]): InclusiveResult;
15
+ //# sourceMappingURL=inclusiveScore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inclusiveScore.d.ts","sourceRoot":"","sources":["../../src/engine/inclusiveScore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAElE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAMD,wBAAgB,cAAc,CAAC,KAAK,EAAE,gBAAgB,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,eAAe,CAoBlG"}
@@ -0,0 +1,25 @@
1
+ function flagsToRing(count) {
2
+ return Math.max(0, 100 - count * 10);
3
+ }
4
+ function scoreInclusive(flags, allCategories) {
5
+ const byCategory = /* @__PURE__ */ new Map();
6
+ for (const f of flags) {
7
+ const cat = byCategory.get(f.category) ?? { name: f.category, flags: [] };
8
+ cat.flags.push({
9
+ term: f.term,
10
+ suggestion: f.suggestion,
11
+ location: f.location
12
+ });
13
+ byCategory.set(f.category, cat);
14
+ }
15
+ const categories = [...byCategory.values()];
16
+ const flaggedNames = new Set(categories.map((c) => c.name));
17
+ const cleanCategories = allCategories.filter((name) => !flaggedNames.has(name));
18
+ const ringScore = flagsToRing(flags.length);
19
+ const status = ringScore >= 80 ? "good" : ringScore >= 50 ? "warn" : "bad";
20
+ return { ringScore, status, categories, cleanCategories };
21
+ }
22
+ export {
23
+ scoreInclusive
24
+ };
25
+ //# sourceMappingURL=inclusiveScore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/engine/inclusiveScore.ts"],"sourcesContent":["import type { InclusiveCategory, Status } from \"./types/analysis\";\n\nexport interface RawInclusiveFlag {\n category: string;\n term: string;\n suggestion: string;\n location: string;\n}\n\nexport interface InclusiveResult {\n ringScore: number;\n status: Status;\n categories: InclusiveCategory[];\n cleanCategories: string[];\n}\n\nfunction flagsToRing(count: number): number {\n return Math.max(0, 100 - count * 10);\n}\n\nexport function scoreInclusive(flags: RawInclusiveFlag[], allCategories: string[]): InclusiveResult {\n const byCategory = new Map<string, InclusiveCategory>();\n\n for (const f of flags) {\n const cat = byCategory.get(f.category) ?? { name: f.category, flags: [] };\n cat.flags.push({\n term: f.term,\n suggestion: f.suggestion,\n location: f.location,\n });\n byCategory.set(f.category, cat);\n }\n\n const categories = [...byCategory.values()];\n const flaggedNames = new Set(categories.map((c) => c.name));\n const cleanCategories = allCategories.filter((name) => !flaggedNames.has(name));\n const ringScore = flagsToRing(flags.length);\n const status: Status = ringScore >= 80 ? \"good\" : ringScore >= 50 ? \"warn\" : \"bad\";\n\n return { ringScore, status, categories, cleanCategories };\n}\n"],"mappings":"AAgBA,SAAS,YAAY,OAAuB;AAC1C,SAAO,KAAK,IAAI,GAAG,MAAM,QAAQ,EAAE;AACrC;AAEO,SAAS,eAAe,OAA2B,eAA0C;AAClG,QAAM,aAAa,oBAAI,IAA+B;AAEtD,aAAW,KAAK,OAAO;AACrB,UAAM,MAAM,WAAW,IAAI,EAAE,QAAQ,KAAK,EAAE,MAAM,EAAE,UAAU,OAAO,CAAC,EAAE;AACxE,QAAI,MAAM,KAAK;AAAA,MACb,MAAM,EAAE;AAAA,MACR,YAAY,EAAE;AAAA,MACd,UAAU,EAAE;AAAA,IACd,CAAC;AACD,eAAW,IAAI,EAAE,UAAU,GAAG;AAAA,EAChC;AAEA,QAAM,aAAa,CAAC,GAAG,WAAW,OAAO,CAAC;AAC1C,QAAM,eAAe,IAAI,IAAI,WAAW,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AAC1D,QAAM,kBAAkB,cAAc,OAAO,CAAC,SAAS,CAAC,aAAa,IAAI,IAAI,CAAC;AAC9E,QAAM,YAAY,YAAY,MAAM,MAAM;AAC1C,QAAM,SAAiB,aAAa,KAAK,SAAS,aAAa,KAAK,SAAS;AAE7E,SAAO,EAAE,WAAW,QAAQ,YAAY,gBAAgB;AAC1D;","names":[]}
@@ -0,0 +1,7 @@
1
+ import type { Status } from "./types/analysis";
2
+ export interface RecoContext {
3
+ keyphrase?: string;
4
+ [k: string]: unknown;
5
+ }
6
+ export declare function getRecommendation(id: string, status: Status, ctx: RecoContext): string | undefined;
7
+ //# sourceMappingURL=recommendations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recommendations.d.ts","sourceRoot":"","sources":["../../src/engine/recommendations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AA+CD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAOlG"}
@@ -0,0 +1,53 @@
1
+ const MAP = {
2
+ introductionKeyword: {
3
+ bad: (c) => `Add "${c.keyphrase ?? "your keyphrase"}" to your opening paragraph.`
4
+ },
5
+ keyphraseDensity: {
6
+ bad: () => `Use the keyphrase a few more times to land in the ideal band.`,
7
+ warn: () => `Use the keyphrase ~2 more times to land in the ideal band.`
8
+ },
9
+ metaDescriptionKeyword: {
10
+ bad: () => `Add the keyphrase to the meta description to improve click-through.`
11
+ },
12
+ imageKeyphrase: {
13
+ warn: () => `Add the keyphrase to the alt text of the remaining images.`,
14
+ bad: () => `Add the keyphrase to your image alt texts.`
15
+ },
16
+ keyphraseDistribution: {
17
+ warn: () => `Occurrences are clustered \u2014 spread the keyphrase through the body.`,
18
+ bad: () => `Distribute the keyphrase more evenly through the text.`
19
+ },
20
+ metaDescriptionLength: {
21
+ warn: () => `You're near the limit \u2014 trim a few characters to avoid truncation.`,
22
+ bad: () => `Adjust the meta description toward 120\u2013158 characters.`
23
+ },
24
+ internalLinks: {
25
+ warn: () => `Add a few internal links to related pages.`,
26
+ bad: () => `Add internal links to related pages.`
27
+ },
28
+ textLength: {
29
+ bad: () => `Add more content \u2014 aim for at least 300 words.`,
30
+ warn: () => `Add more content to comfortably clear the minimum.`
31
+ },
32
+ fleschReadingEase: {
33
+ warn: () => `Shorten sentences and prefer simpler words to make the text easier to read.`,
34
+ bad: () => `The text is hard to read \u2014 use shorter sentences and simpler words.`
35
+ }
36
+ };
37
+ const GENERIC = {
38
+ good: "",
39
+ warn: "This check needs some attention.",
40
+ bad: "This check needs improvement."
41
+ };
42
+ function getRecommendation(id, status, ctx) {
43
+ if (status === "good")
44
+ return void 0;
45
+ const builder = MAP[id]?.[status];
46
+ if (builder)
47
+ return builder(ctx);
48
+ return GENERIC[status];
49
+ }
50
+ export {
51
+ getRecommendation
52
+ };
53
+ //# sourceMappingURL=recommendations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/engine/recommendations.ts"],"sourcesContent":["import type { Status } from \"./types/analysis\";\n\nexport interface RecoContext {\n keyphrase?: string;\n [k: string]: unknown;\n}\n\ntype Builder = (ctx: RecoContext) => string;\n\nconst MAP: Record<string, Partial<Record<Status, Builder>>> = {\n introductionKeyword: {\n bad: (c) => `Add \"${c.keyphrase ?? \"your keyphrase\"}\" to your opening paragraph.`,\n },\n keyphraseDensity: {\n bad: () => `Use the keyphrase a few more times to land in the ideal band.`,\n warn: () => `Use the keyphrase ~2 more times to land in the ideal band.`,\n },\n metaDescriptionKeyword: {\n bad: () => `Add the keyphrase to the meta description to improve click-through.`,\n },\n imageKeyphrase: {\n warn: () => `Add the keyphrase to the alt text of the remaining images.`,\n bad: () => `Add the keyphrase to your image alt texts.`,\n },\n keyphraseDistribution: {\n warn: () => `Occurrences are clustered — spread the keyphrase through the body.`,\n bad: () => `Distribute the keyphrase more evenly through the text.`,\n },\n metaDescriptionLength: {\n warn: () => `You're near the limit — trim a few characters to avoid truncation.`,\n bad: () => `Adjust the meta description toward 120–158 characters.`,\n },\n internalLinks: {\n warn: () => `Add a few internal links to related pages.`,\n bad: () => `Add internal links to related pages.`,\n },\n textLength: {\n bad: () => `Add more content — aim for at least 300 words.`,\n warn: () => `Add more content to comfortably clear the minimum.`,\n },\n fleschReadingEase: {\n warn: () => `Shorten sentences and prefer simpler words to make the text easier to read.`,\n bad: () => `The text is hard to read — use shorter sentences and simpler words.`,\n },\n};\n\nconst GENERIC: Record<Status, string> = {\n good: \"\",\n warn: \"This check needs some attention.\",\n bad: \"This check needs improvement.\",\n};\n\nexport function getRecommendation(id: string, status: Status, ctx: RecoContext): string | undefined {\n if (status === \"good\") return undefined;\n\n const builder = MAP[id]?.[status];\n if (builder) return builder(ctx);\n\n return GENERIC[status];\n}\n"],"mappings":"AASA,MAAM,MAAwD;AAAA,EAC5D,qBAAqB;AAAA,IACnB,KAAK,CAAC,MAAM,QAAQ,EAAE,aAAa,gBAAgB;AAAA,EACrD;AAAA,EACA,kBAAkB;AAAA,IAChB,KAAK,MAAM;AAAA,IACX,MAAM,MAAM;AAAA,EACd;AAAA,EACA,wBAAwB;AAAA,IACtB,KAAK,MAAM;AAAA,EACb;AAAA,EACA,gBAAgB;AAAA,IACd,MAAM,MAAM;AAAA,IACZ,KAAK,MAAM;AAAA,EACb;AAAA,EACA,uBAAuB;AAAA,IACrB,MAAM,MAAM;AAAA,IACZ,KAAK,MAAM;AAAA,EACb;AAAA,EACA,uBAAuB;AAAA,IACrB,MAAM,MAAM;AAAA,IACZ,KAAK,MAAM;AAAA,EACb;AAAA,EACA,eAAe;AAAA,IACb,MAAM,MAAM;AAAA,IACZ,KAAK,MAAM;AAAA,EACb;AAAA,EACA,YAAY;AAAA,IACV,KAAK,MAAM;AAAA,IACX,MAAM,MAAM;AAAA,EACd;AAAA,EACA,mBAAmB;AAAA,IACjB,MAAM,MAAM;AAAA,IACZ,KAAK,MAAM;AAAA,EACb;AACF;AAEA,MAAM,UAAkC;AAAA,EACtC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,KAAK;AACP;AAEO,SAAS,kBAAkB,IAAY,QAAgB,KAAsC;AAClG,MAAI,WAAW;AAAQ,WAAO;AAE9B,QAAM,UAAU,IAAI,EAAE,IAAI,MAAM;AAChC,MAAI;AAAS,WAAO,QAAQ,GAAG;AAE/B,SAAO,QAAQ,MAAM;AACvB;","names":[]}
@@ -0,0 +1,6 @@
1
+ export interface YoastResearcher {
2
+ getResearch: (name: string) => unknown;
3
+ }
4
+ export declare function makeResearcher(paper: unknown): YoastResearcher;
5
+ export declare function getResearch<T = unknown>(researcher: YoastResearcher, name: string): T | undefined;
6
+ //# sourceMappingURL=researcherAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"researcherAdapter.d.ts","sourceRoot":"","sources":["../../src/engine/researcherAdapter.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CACxC;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAE9D;AAED,wBAAgB,WAAW,CAAC,CAAC,GAAG,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAMjG"}
@@ -0,0 +1,16 @@
1
+ import EnglishResearcher from "yoastseo/build/languageProcessing/languages/en/Researcher";
2
+ function makeResearcher(paper) {
3
+ return new EnglishResearcher(paper);
4
+ }
5
+ function getResearch(researcher, name) {
6
+ try {
7
+ return researcher.getResearch(name);
8
+ } catch {
9
+ return void 0;
10
+ }
11
+ }
12
+ export {
13
+ getResearch,
14
+ makeResearcher
15
+ };
16
+ //# sourceMappingURL=researcherAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/engine/researcherAdapter.ts"],"sourcesContent":["import EnglishResearcher from \"yoastseo/build/languageProcessing/languages/en/Researcher\";\n\nexport interface YoastResearcher {\n getResearch: (name: string) => unknown;\n}\n\nexport function makeResearcher(paper: unknown): YoastResearcher {\n return new EnglishResearcher(paper) as YoastResearcher;\n}\n\nexport function getResearch<T = unknown>(researcher: YoastResearcher, name: string): T | undefined {\n try {\n return researcher.getResearch(name) as T;\n } catch {\n return undefined;\n }\n}\n"],"mappings":"AAAA,OAAO,uBAAuB;AAMvB,SAAS,eAAe,OAAiC;AAC9D,SAAO,IAAI,kBAAkB,KAAK;AACpC;AAEO,SAAS,YAAyB,YAA6B,MAA6B;AACjG,MAAI;AACF,WAAO,WAAW,YAAY,IAAI;AAAA,EACpC,QAAQ;AACN,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -0,0 +1,3 @@
1
+ import type { AnalysisInput, AnalysisResult } from "../types/analysis";
2
+ export declare function runAnalysis(input: AnalysisInput): AnalysisResult;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engine/runAnalysis/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAOvE,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CAehE"}
@@ -0,0 +1,24 @@
1
+ import { buildPaper } from "../buildPaper";
2
+ import { deriveInclusive } from "./services/derive-inclusive";
3
+ import { deriveReadability } from "./services/derive-readability";
4
+ import { deriveSeo } from "./services/derive-seo";
5
+ import { deriveSerp } from "./services/derive-serp";
6
+ import { deriveVitals } from "./services/derive-vitals";
7
+ function runAnalysis(input) {
8
+ const paper = buildPaper(input);
9
+ const { keyphrase } = input;
10
+ const seo = deriveSeo(paper, keyphrase);
11
+ return {
12
+ overall: seo.overall,
13
+ keyphrase: seo.keyphrase,
14
+ onPage: seo.onPage,
15
+ readability: deriveReadability(paper, keyphrase),
16
+ inclusive: deriveInclusive(paper),
17
+ vitals: deriveVitals(paper, keyphrase),
18
+ serp: deriveSerp(input)
19
+ };
20
+ }
21
+ export {
22
+ runAnalysis
23
+ };
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/engine/runAnalysis/index.ts"],"sourcesContent":["import { buildPaper } from \"../buildPaper\";\nimport type { AnalysisInput, AnalysisResult } from \"../types/analysis\";\nimport { deriveInclusive } from \"./services/derive-inclusive\";\nimport { deriveReadability } from \"./services/derive-readability\";\nimport { deriveSeo } from \"./services/derive-seo\";\nimport { deriveSerp } from \"./services/derive-serp\";\nimport { deriveVitals } from \"./services/derive-vitals\";\n\nexport function runAnalysis(input: AnalysisInput): AnalysisResult {\n const paper = buildPaper(input);\n const { keyphrase } = input;\n\n const seo = deriveSeo(paper, keyphrase);\n\n return {\n overall: seo.overall,\n keyphrase: seo.keyphrase,\n onPage: seo.onPage,\n readability: deriveReadability(paper, keyphrase),\n inclusive: deriveInclusive(paper),\n vitals: deriveVitals(paper, keyphrase),\n serp: deriveSerp(input),\n };\n}\n"],"mappings":"AAAA,SAAS,kBAAkB;AAE3B,SAAS,uBAAuB;AAChC,SAAS,yBAAyB;AAClC,SAAS,iBAAiB;AAC1B,SAAS,kBAAkB;AAC3B,SAAS,oBAAoB;AAEtB,SAAS,YAAY,OAAsC;AAChE,QAAM,QAAQ,WAAW,KAAK;AAC9B,QAAM,EAAE,UAAU,IAAI;AAEtB,QAAM,MAAM,UAAU,OAAO,SAAS;AAEtC,SAAO;AAAA,IACL,SAAS,IAAI;AAAA,IACb,WAAW,IAAI;AAAA,IACf,QAAQ,IAAI;AAAA,IACZ,aAAa,kBAAkB,OAAO,SAAS;AAAA,IAC/C,WAAW,gBAAgB,KAAK;AAAA,IAChC,QAAQ,aAAa,OAAO,SAAS;AAAA,IACrC,MAAM,WAAW,KAAK;AAAA,EACxB;AACF;","names":[]}
@@ -0,0 +1,4 @@
1
+ import type { Paper } from "yoastseo";
2
+ import type { InclusiveResult } from "../../inclusiveScore";
3
+ export declare function deriveInclusive(paper: InstanceType<typeof Paper>): InclusiveResult;
4
+ //# sourceMappingURL=derive-inclusive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derive-inclusive.d.ts","sourceRoot":"","sources":["../../../../src/engine/runAnalysis/services/derive-inclusive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAGtC,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,sBAAsB,CAAC;AAuC9E,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,KAAK,CAAC,GAAG,eAAe,CAKlF"}
@@ -0,0 +1,47 @@
1
+ import { assessors } from "yoastseo";
2
+ import { scoreInclusive } from "../../inclusiveScore";
3
+ import { makeResearcher } from "../../researcherAdapter";
4
+ const { InclusiveLanguageAssessor } = assessors;
5
+ const CATEGORY_LABELS = {
6
+ age: "Age",
7
+ appearance: "Appearance & body",
8
+ culture: "Culture, race & religion",
9
+ disability: "Disability",
10
+ gender: "Gendered language",
11
+ sexualOrientation: "Sexual orientation",
12
+ ses: "Socioeconomic status",
13
+ other: "Other"
14
+ };
15
+ const INCLUSIVE_CATEGORIES = Object.values(CATEGORY_LABELS);
16
+ function deriveInclusive(paper) {
17
+ const assessor = new InclusiveLanguageAssessor(makeResearcher(paper));
18
+ assessor.assess(paper);
19
+ return scoreInclusive(extractInclusiveFlags(assessor), INCLUSIVE_CATEGORIES);
20
+ }
21
+ function stripTags(html) {
22
+ return html.replace(/<[^>]+>/g, "").trim();
23
+ }
24
+ function extractInclusiveFlags(assessor) {
25
+ return assessor.getValidResults().flatMap((result) => {
26
+ const identifier = result.getIdentifier?.();
27
+ if (!identifier)
28
+ return [];
29
+ const assessment = assessor.getAssessment(identifier);
30
+ const phrases = assessment?.foundPhrases ?? [];
31
+ if (phrases.length === 0) {
32
+ return [];
33
+ }
34
+ const category = CATEGORY_LABELS[assessment?.category ?? ""] ?? "Other";
35
+ const suggestion = (assessment?.inclusiveAlternatives ?? []).map(stripTags).filter(Boolean).join(", ");
36
+ return phrases.map((found) => ({
37
+ category,
38
+ term: found.phrase,
39
+ suggestion,
40
+ location: found.sentence
41
+ }));
42
+ });
43
+ }
44
+ export {
45
+ deriveInclusive
46
+ };
47
+ //# sourceMappingURL=derive-inclusive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/engine/runAnalysis/services/derive-inclusive.ts"],"sourcesContent":["import type { Paper } from \"yoastseo\";\nimport { assessors } from \"yoastseo\";\nimport { scoreInclusive } from \"../../inclusiveScore\";\nimport type { InclusiveResult, RawInclusiveFlag } from \"../../inclusiveScore\";\nimport { makeResearcher } from \"../../researcherAdapter\";\n\nconst { InclusiveLanguageAssessor } = assessors;\n\nconst CATEGORY_LABELS: Record<string, string> = {\n age: \"Age\",\n appearance: \"Appearance & body\",\n culture: \"Culture, race & religion\",\n disability: \"Disability\",\n gender: \"Gendered language\",\n sexualOrientation: \"Sexual orientation\",\n ses: \"Socioeconomic status\",\n other: \"Other\",\n};\n\nconst INCLUSIVE_CATEGORIES = Object.values(CATEGORY_LABELS);\n\ninterface YoastInclusiveResult {\n getIdentifier?: () => string;\n}\n\ninterface YoastFoundPhrase {\n phrase: string;\n sentence: string;\n}\n\ninterface YoastInclusiveAssessment {\n category?: string;\n inclusiveAlternatives?: string[];\n foundPhrases?: YoastFoundPhrase[];\n}\n\ninterface YoastInclusiveAssessor {\n assess: (paper: unknown) => void;\n getValidResults: () => YoastInclusiveResult[];\n getAssessment: (identifier: string) => YoastInclusiveAssessment | undefined;\n}\n\nexport function deriveInclusive(paper: InstanceType<typeof Paper>): InclusiveResult {\n const assessor: YoastInclusiveAssessor = new InclusiveLanguageAssessor(makeResearcher(paper));\n assessor.assess(paper);\n\n return scoreInclusive(extractInclusiveFlags(assessor), INCLUSIVE_CATEGORIES);\n}\n\nfunction stripTags(html: string): string {\n return html.replace(/<[^>]+>/g, \"\").trim();\n}\n\nfunction extractInclusiveFlags(assessor: YoastInclusiveAssessor): RawInclusiveFlag[] {\n return assessor.getValidResults().flatMap((result) => {\n const identifier = result.getIdentifier?.();\n if (!identifier) return [];\n\n const assessment = assessor.getAssessment(identifier);\n const phrases = assessment?.foundPhrases ?? [];\n if (phrases.length === 0) {\n return [];\n }\n\n const category = CATEGORY_LABELS[assessment?.category ?? \"\"] ?? \"Other\";\n const suggestion = (assessment?.inclusiveAlternatives ?? []).map(stripTags).filter(Boolean).join(\", \");\n\n return phrases.map((found) => ({\n category,\n term: found.phrase,\n suggestion,\n location: found.sentence,\n }));\n });\n}\n"],"mappings":"AACA,SAAS,iBAAiB;AAC1B,SAAS,sBAAsB;AAE/B,SAAS,sBAAsB;AAE/B,MAAM,EAAE,0BAA0B,IAAI;AAEtC,MAAM,kBAA0C;AAAA,EAC9C,KAAK;AAAA,EACL,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,mBAAmB;AAAA,EACnB,KAAK;AAAA,EACL,OAAO;AACT;AAEA,MAAM,uBAAuB,OAAO,OAAO,eAAe;AAuBnD,SAAS,gBAAgB,OAAoD;AAClF,QAAM,WAAmC,IAAI,0BAA0B,eAAe,KAAK,CAAC;AAC5F,WAAS,OAAO,KAAK;AAErB,SAAO,eAAe,sBAAsB,QAAQ,GAAG,oBAAoB;AAC7E;AAEA,SAAS,UAAU,MAAsB;AACvC,SAAO,KAAK,QAAQ,YAAY,EAAE,EAAE,KAAK;AAC3C;AAEA,SAAS,sBAAsB,UAAsD;AACnF,SAAO,SAAS,gBAAgB,EAAE,QAAQ,CAAC,WAAW;AACpD,UAAM,aAAa,OAAO,gBAAgB;AAC1C,QAAI,CAAC;AAAY,aAAO,CAAC;AAEzB,UAAM,aAAa,SAAS,cAAc,UAAU;AACpD,UAAM,UAAU,YAAY,gBAAgB,CAAC;AAC7C,QAAI,QAAQ,WAAW,GAAG;AACxB,aAAO,CAAC;AAAA,IACV;AAEA,UAAM,WAAW,gBAAgB,YAAY,YAAY,EAAE,KAAK;AAChE,UAAM,cAAc,YAAY,yBAAyB,CAAC,GAAG,IAAI,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,IAAI;AAErG,WAAO,QAAQ,IAAI,CAAC,WAAW;AAAA,MAC7B;AAAA,MACA,MAAM,MAAM;AAAA,MACZ;AAAA,MACA,UAAU,MAAM;AAAA,IAClB,EAAE;AAAA,EACJ,CAAC;AACH;","names":[]}
@@ -0,0 +1,4 @@
1
+ import type { Paper } from "yoastseo";
2
+ import type { CategoryResult } from "../../types/analysis";
3
+ export declare function deriveReadability(paper: InstanceType<typeof Paper>, keyphrase: string): CategoryResult;
4
+ //# sourceMappingURL=derive-readability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derive-readability.d.ts","sourceRoot":"","sources":["../../../../src/engine/runAnalysis/services/derive-readability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAQtC,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,sBAAsB,CAAC;AAKxE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,KAAK,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,cAAc,CAStG"}
@@ -0,0 +1,32 @@
1
+ import { ContentAssessor } from "yoastseo";
2
+ import { runAssessor } from "../../assessorAdapter";
3
+ import { getRecommendation } from "../../recommendations";
4
+ import { getResearch, makeResearcher } from "../../researcherAdapter";
5
+ import { fleschToStatus } from "../../scoreStatus";
6
+ import { enrich } from "../utils/enrich";
7
+ import { toCategory } from "../utils/toCategory";
8
+ function deriveReadability(paper, keyphrase) {
9
+ const ctx = { keyphrase };
10
+ const researcher = makeResearcher(paper);
11
+ const readRaw = runAssessor(new ContentAssessor(makeResearcher(paper)), ctx, paper);
12
+ const flesch = fleschCheck(researcher, ctx);
13
+ const readChecks = enrich(flesch ? [...readRaw, flesch] : readRaw, paper, researcher);
14
+ return toCategory(readChecks);
15
+ }
16
+ function fleschCheck(researcher, ctx) {
17
+ const r = getResearch(researcher, "getFleschReadingScore");
18
+ if (!r || r.score < 0)
19
+ return void 0;
20
+ const status = fleschToStatus(r.score);
21
+ return {
22
+ id: "fleschReadingEase",
23
+ score: r.score,
24
+ status,
25
+ recommendation: getRecommendation("fleschReadingEase", status, ctx),
26
+ data: void 0
27
+ };
28
+ }
29
+ export {
30
+ deriveReadability
31
+ };
32
+ //# sourceMappingURL=derive-readability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/engine/runAnalysis/services/derive-readability.ts"],"sourcesContent":["import type { Paper } from \"yoastseo\";\nimport { ContentAssessor } from \"yoastseo\";\nimport { runAssessor } from \"../../assessorAdapter\";\nimport { getRecommendation } from '../../recommendations';\nimport type { RecoContext } from '../../recommendations';\nimport { getResearch, makeResearcher } from '../../researcherAdapter';\nimport type { YoastResearcher } from '../../researcherAdapter';\nimport { fleschToStatus } from \"../../scoreStatus\";\nimport type { CategoryResult, CheckResult } from \"../../types/analysis\";\nimport { enrich } from \"../utils/enrich\";\nimport { toCategory } from \"../utils/toCategory\";\nimport type { PaperLike } from \"../../types/paper\";\n\nexport function deriveReadability(paper: InstanceType<typeof Paper>, keyphrase: string): CategoryResult {\n const ctx = { keyphrase };\n const researcher = makeResearcher(paper);\n\n const readRaw = runAssessor(new ContentAssessor(makeResearcher(paper)), ctx, paper);\n const flesch = fleschCheck(researcher, ctx);\n const readChecks = enrich(flesch ? [...readRaw, flesch] : readRaw, paper as PaperLike, researcher);\n\n return toCategory(readChecks);\n}\n\nfunction fleschCheck(researcher: YoastResearcher, ctx: RecoContext): CheckResult | undefined {\n const r = getResearch<{ score: number }>(researcher, \"getFleschReadingScore\");\n if (!r || r.score < 0) return undefined;\n\n const status = fleschToStatus(r.score);\n\n return {\n id: \"fleschReadingEase\",\n score: r.score,\n status,\n recommendation: getRecommendation(\"fleschReadingEase\", status, ctx),\n data: undefined,\n };\n}\n"],"mappings":"AACA,SAAS,uBAAuB;AAChC,SAAS,mBAAmB;AAC5B,SAAS,yBAAyB;AAElC,SAAS,aAAa,sBAAsB;AAE5C,SAAS,sBAAsB;AAE/B,SAAS,cAAc;AACvB,SAAS,kBAAkB;AAGpB,SAAS,kBAAkB,OAAmC,WAAmC;AACtG,QAAM,MAAM,EAAE,UAAU;AACxB,QAAM,aAAa,eAAe,KAAK;AAEvC,QAAM,UAAU,YAAY,IAAI,gBAAgB,eAAe,KAAK,CAAC,GAAG,KAAK,KAAK;AAClF,QAAM,SAAS,YAAY,YAAY,GAAG;AAC1C,QAAM,aAAa,OAAO,SAAS,CAAC,GAAG,SAAS,MAAM,IAAI,SAAS,OAAoB,UAAU;AAEjG,SAAO,WAAW,UAAU;AAC9B;AAEA,SAAS,YAAY,YAA6B,KAA2C;AAC3F,QAAM,IAAI,YAA+B,YAAY,uBAAuB;AAC5E,MAAI,CAAC,KAAK,EAAE,QAAQ;AAAG,WAAO;AAE9B,QAAM,SAAS,eAAe,EAAE,KAAK;AAErC,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,OAAO,EAAE;AAAA,IACT;AAAA,IACA,gBAAgB,kBAAkB,qBAAqB,QAAQ,GAAG;AAAA,IAClE,MAAM;AAAA,EACR;AACF;","names":[]}
@@ -0,0 +1,18 @@
1
+ import type { CategoryResult, CheckResult, Status } from "../../types/analysis";
2
+ import type { PaperData } from "../../types/paper";
3
+ interface PartitionSeoResult {
4
+ keyphrase: CheckResult[];
5
+ onPage: CheckResult[];
6
+ }
7
+ export declare function partitionSeo(checks: CheckResult[]): PartitionSeoResult;
8
+ interface DeriveSeoResult {
9
+ overall: {
10
+ seoScore: number;
11
+ status: Status;
12
+ };
13
+ keyphrase: CategoryResult;
14
+ onPage: CategoryResult;
15
+ }
16
+ export declare function deriveSeo(paper: PaperData, keyphrase: string): DeriveSeoResult;
17
+ export {};
18
+ //# sourceMappingURL=derive-seo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derive-seo.d.ts","sourceRoot":"","sources":["../../../../src/engine/runAnalysis/services/derive-seo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,KAAK,EAAE,SAAS,EAAa,MAAM,mBAAmB,CAAC;AAe9D,UAAU,kBAAkB;IAC1B,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,kBAAkB,CAKtE;AAED,UAAU,eAAe;IACvB,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,SAAS,EAAE,cAAc,CAAC;IAC1B,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe,CAsB9E"}
@@ -0,0 +1,40 @@
1
+ import { SeoAssessor } from "yoastseo";
2
+ import KeyphraseDistributionAssessment from "yoastseo/build/scoring/assessments/seo/KeyphraseDistributionAssessment";
3
+ import { CHECK_IDS } from "../../../constants/checkIds";
4
+ import { runAssessor } from "../../assessorAdapter";
5
+ import { hasKeyphrase } from "../../helpers/has-keyphrase";
6
+ import { makeResearcher } from "../../researcherAdapter";
7
+ import { scoreToStatus, statusToRing } from "../../scoreStatus";
8
+ import { enrich } from "../utils/enrich";
9
+ import { toCategory } from "../utils/toCategory";
10
+ const KEYPHRASE = new Set(CHECK_IDS.keyphrase);
11
+ const ONPAGE = new Set(CHECK_IDS.onPage);
12
+ function partitionSeo(checks) {
13
+ return {
14
+ keyphrase: checks.filter((c) => KEYPHRASE.has(c.id)),
15
+ onPage: checks.filter((c) => ONPAGE.has(c.id))
16
+ };
17
+ }
18
+ function deriveSeo(paper, keyphrase) {
19
+ const ctx = { keyphrase };
20
+ const researcher = makeResearcher(paper);
21
+ const seoAssessor = new SeoAssessor(makeResearcher(paper));
22
+ seoAssessor.addAssessment("keyphraseDistribution", new KeyphraseDistributionAssessment());
23
+ const seoChecks = enrich(runAssessor(seoAssessor, ctx, paper), paper, researcher);
24
+ const { keyphrase: keyphraseChecks, onPage } = partitionSeo(seoChecks);
25
+ const scoredChecks = hasKeyphrase(keyphrase) ? seoChecks : onPage;
26
+ const seoScore = statusToRing(scoredChecks);
27
+ return {
28
+ overall: {
29
+ seoScore,
30
+ status: scoreToStatus(seoScore / 10)
31
+ },
32
+ keyphrase: toCategory(hasKeyphrase(keyphrase) ? keyphraseChecks : []),
33
+ onPage: toCategory(onPage)
34
+ };
35
+ }
36
+ export {
37
+ deriveSeo,
38
+ partitionSeo
39
+ };
40
+ //# sourceMappingURL=derive-seo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/engine/runAnalysis/services/derive-seo.ts"],"sourcesContent":["import type { CategoryResult, CheckResult, Status } from \"../../types/analysis\";\nimport type { PaperData, PaperLike } from \"../../types/paper\";\n\nimport { SeoAssessor } from \"yoastseo\";\nimport KeyphraseDistributionAssessment from \"yoastseo/build/scoring/assessments/seo/KeyphraseDistributionAssessment\";\nimport { CHECK_IDS } from \"../../../constants/checkIds\";\nimport { runAssessor } from \"../../assessorAdapter\";\nimport { hasKeyphrase } from \"../../helpers/has-keyphrase\";\nimport { makeResearcher } from \"../../researcherAdapter\";\nimport { scoreToStatus, statusToRing } from \"../../scoreStatus\";\nimport { enrich } from \"../utils/enrich\";\nimport { toCategory } from \"../utils/toCategory\";\n\nconst KEYPHRASE = new Set<string>(CHECK_IDS.keyphrase);\nconst ONPAGE = new Set<string>(CHECK_IDS.onPage);\n\ninterface PartitionSeoResult {\n keyphrase: CheckResult[];\n onPage: CheckResult[];\n}\n\nexport function partitionSeo(checks: CheckResult[]): PartitionSeoResult {\n return {\n keyphrase: checks.filter((c) => KEYPHRASE.has(c.id)),\n onPage: checks.filter((c) => ONPAGE.has(c.id)),\n };\n}\n\ninterface DeriveSeoResult {\n overall: {\n seoScore: number;\n status: Status;\n };\n keyphrase: CategoryResult;\n onPage: CategoryResult;\n}\n\nexport function deriveSeo(paper: PaperData, keyphrase: string): DeriveSeoResult {\n const ctx = { keyphrase };\n const researcher = makeResearcher(paper);\n\n const seoAssessor = new SeoAssessor(makeResearcher(paper));\n seoAssessor.addAssessment(\"keyphraseDistribution\", new KeyphraseDistributionAssessment());\n\n const seoChecks = enrich(runAssessor(seoAssessor, ctx, paper), paper as PaperLike, researcher);\n\n const { keyphrase: keyphraseChecks, onPage } = partitionSeo(seoChecks);\n\n const scoredChecks = hasKeyphrase(keyphrase) ? seoChecks : onPage;\n const seoScore = statusToRing(scoredChecks);\n\n return {\n overall: {\n seoScore,\n status: scoreToStatus(seoScore / 10),\n },\n keyphrase: toCategory(hasKeyphrase(keyphrase) ? keyphraseChecks : []),\n onPage: toCategory(onPage),\n };\n}\n"],"mappings":"AAGA,SAAS,mBAAmB;AAC5B,OAAO,qCAAqC;AAC5C,SAAS,iBAAiB;AAC1B,SAAS,mBAAmB;AAC5B,SAAS,oBAAoB;AAC7B,SAAS,sBAAsB;AAC/B,SAAS,eAAe,oBAAoB;AAC5C,SAAS,cAAc;AACvB,SAAS,kBAAkB;AAE3B,MAAM,YAAY,IAAI,IAAY,UAAU,SAAS;AACrD,MAAM,SAAS,IAAI,IAAY,UAAU,MAAM;AAOxC,SAAS,aAAa,QAA2C;AACtE,SAAO;AAAA,IACL,WAAW,OAAO,OAAO,CAAC,MAAM,UAAU,IAAI,EAAE,EAAE,CAAC;AAAA,IACnD,QAAQ,OAAO,OAAO,CAAC,MAAM,OAAO,IAAI,EAAE,EAAE,CAAC;AAAA,EAC/C;AACF;AAWO,SAAS,UAAU,OAAkB,WAAoC;AAC9E,QAAM,MAAM,EAAE,UAAU;AACxB,QAAM,aAAa,eAAe,KAAK;AAEvC,QAAM,cAAc,IAAI,YAAY,eAAe,KAAK,CAAC;AACzD,cAAY,cAAc,yBAAyB,IAAI,gCAAgC,CAAC;AAExF,QAAM,YAAY,OAAO,YAAY,aAAa,KAAK,KAAK,GAAG,OAAoB,UAAU;AAE7F,QAAM,EAAE,WAAW,iBAAiB,OAAO,IAAI,aAAa,SAAS;AAErE,QAAM,eAAe,aAAa,SAAS,IAAI,YAAY;AAC3D,QAAM,WAAW,aAAa,YAAY;AAE1C,SAAO;AAAA,IACL,SAAS;AAAA,MACP;AAAA,MACA,QAAQ,cAAc,WAAW,EAAE;AAAA,IACrC;AAAA,IACA,WAAW,WAAW,aAAa,SAAS,IAAI,kBAAkB,CAAC,CAAC;AAAA,IACpE,QAAQ,WAAW,MAAM;AAAA,EAC3B;AACF;","names":[]}
@@ -0,0 +1,3 @@
1
+ import type { AnalysisInput, SerpResult } from "../../types/analysis";
2
+ export declare function deriveSerp(input: AnalysisInput): SerpResult;
3
+ //# sourceMappingURL=derive-serp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derive-serp.d.ts","sourceRoot":"","sources":["../../../../src/engine/runAnalysis/services/derive-serp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEtE,wBAAgB,UAAU,CAAC,KAAK,EAAE,aAAa,GAAG,UAAU,CAS3D"}
@@ -0,0 +1,13 @@
1
+ function deriveSerp(input) {
2
+ const url = input.site.baseUrl ? `${input.site.baseUrl}/${input.slug}` : `/${input.slug}`;
3
+ return {
4
+ title: input.title,
5
+ url,
6
+ description: input.description,
7
+ siteName: input.site.name
8
+ };
9
+ }
10
+ export {
11
+ deriveSerp
12
+ };
13
+ //# sourceMappingURL=derive-serp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/engine/runAnalysis/services/derive-serp.ts"],"sourcesContent":["import type { AnalysisInput, SerpResult } from \"../../types/analysis\";\n\nexport function deriveSerp(input: AnalysisInput): SerpResult {\n const url = input.site.baseUrl ? `${input.site.baseUrl}/${input.slug}` : `/${input.slug}`;\n\n return {\n title: input.title,\n url,\n description: input.description,\n siteName: input.site.name,\n };\n}\n"],"mappings":"AAEO,SAAS,WAAW,OAAkC;AAC3D,QAAM,MAAM,MAAM,KAAK,UAAU,GAAG,MAAM,KAAK,OAAO,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,IAAI;AAEvF,SAAO;AAAA,IACL,OAAO,MAAM;AAAA,IACb;AAAA,IACA,aAAa,MAAM;AAAA,IACnB,UAAU,MAAM,KAAK;AAAA,EACvB;AACF;","names":[]}
@@ -0,0 +1,4 @@
1
+ import type { Paper } from "yoastseo";
2
+ import type { VitalsResult } from "../../../types/analysis";
3
+ export declare function deriveVitals(paper: InstanceType<typeof Paper>, keyphrase: string): VitalsResult;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/engine/runAnalysis/services/derive-vitals/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5D,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,KAAK,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,CAa/F"}
@@ -0,0 +1,19 @@
1
+ import { makeResearcher } from "../../../researcherAdapter";
2
+ import { countImages, countParagraphs, countSentences, countVideos, countWords, estimateReadingTime, findProminentWords } from "./researches";
3
+ function deriveVitals(paper, keyphrase) {
4
+ const researcher = makeResearcher(paper);
5
+ const words = countWords(researcher);
6
+ return {
7
+ words,
8
+ sentences: countSentences(researcher),
9
+ paragraphs: countParagraphs(researcher),
10
+ images: countImages(researcher),
11
+ videos: countVideos(researcher),
12
+ readingTimeMinutes: estimateReadingTime({ researcher, words }),
13
+ prominentWords: findProminentWords({ researcher, keyphrase })
14
+ };
15
+ }
16
+ export {
17
+ deriveVitals
18
+ };
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/engine/runAnalysis/services/derive-vitals/index.ts"],"sourcesContent":["import type { Paper } from \"yoastseo\";\nimport { makeResearcher } from \"../../../researcherAdapter\";\nimport type { VitalsResult } from \"../../../types/analysis\";\nimport { countImages, countParagraphs, countSentences, countVideos, countWords, estimateReadingTime, findProminentWords } from \"./researches\";\n\nexport function deriveVitals(paper: InstanceType<typeof Paper>, keyphrase: string): VitalsResult {\n const researcher = makeResearcher(paper);\n const words = countWords(researcher);\n\n return {\n words,\n sentences: countSentences(researcher),\n paragraphs: countParagraphs(researcher),\n images: countImages(researcher),\n videos: countVideos(researcher),\n readingTimeMinutes: estimateReadingTime({ researcher, words }),\n prominentWords: findProminentWords({ researcher, keyphrase }),\n };\n}\n"],"mappings":"AACA,SAAS,sBAAsB;AAE/B,SAAS,aAAa,iBAAiB,gBAAgB,aAAa,YAAY,qBAAqB,0BAA0B;AAExH,SAAS,aAAa,OAAmC,WAAiC;AAC/F,QAAM,aAAa,eAAe,KAAK;AACvC,QAAM,QAAQ,WAAW,UAAU;AAEnC,SAAO;AAAA,IACL;AAAA,IACA,WAAW,eAAe,UAAU;AAAA,IACpC,YAAY,gBAAgB,UAAU;AAAA,IACtC,QAAQ,YAAY,UAAU;AAAA,IAC9B,QAAQ,YAAY,UAAU;AAAA,IAC9B,oBAAoB,oBAAoB,EAAE,YAAY,MAAM,CAAC;AAAA,IAC7D,gBAAgB,mBAAmB,EAAE,YAAY,UAAU,CAAC;AAAA,EAC9D;AACF;","names":[]}
@@ -0,0 +1,19 @@
1
+ import type { YoastResearcher } from "../../../researcherAdapter";
2
+ import type { ProminentWord } from "../../../types/analysis";
3
+ export declare function countWords(researcher: YoastResearcher): number;
4
+ export declare function countSentences(researcher: YoastResearcher): number;
5
+ export declare function countParagraphs(researcher: YoastResearcher): number;
6
+ export declare function countImages(researcher: YoastResearcher): number;
7
+ export declare function countVideos(researcher: YoastResearcher): number;
8
+ interface EstimateReadingTimeArgs {
9
+ researcher: YoastResearcher;
10
+ words: number;
11
+ }
12
+ export declare function estimateReadingTime({ researcher, words }: EstimateReadingTimeArgs): number;
13
+ interface FindProminentWordsArgs {
14
+ researcher: YoastResearcher;
15
+ keyphrase: string;
16
+ }
17
+ export declare function findProminentWords({ researcher, keyphrase }: FindProminentWordsArgs): ProminentWord[];
18
+ export {};
19
+ //# sourceMappingURL=researches.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"researches.d.ts","sourceRoot":"","sources":["../../../../../src/engine/runAnalysis/services/derive-vitals/researches.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAK7D,wBAAgB,UAAU,CAAC,UAAU,EAAE,eAAe,GAAG,MAAM,CAI9D;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,eAAe,GAAG,MAAM,CAMlE;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,eAAe,GAAG,MAAM,CAEnE;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,eAAe,GAAG,MAAM,CAE/D;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,eAAe,GAAG,MAAM,CAE/D;AAED,UAAU,uBAAuB;IAC/B,UAAU,EAAE,eAAe,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,mBAAmB,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,uBAAuB,GAAG,MAAM,CAE1F;AAED,UAAU,sBAAsB;IAC9B,UAAU,EAAE,eAAe,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,kBAAkB,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,sBAAsB,GAAG,aAAa,EAAE,CAcrG"}