@focus-reactive/payload-plugin-seo 1.0.0 → 1.0.1
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.
- package/dist/admin.css +1214 -0
- package/dist/components/SeoButton/index.d.ts +14 -0
- package/dist/components/SeoButton/index.d.ts.map +1 -0
- package/dist/components/SeoButton/index.js +81 -0
- package/dist/components/SeoButton/index.js.map +1 -0
- package/dist/components/SeoDrawer/TabsNav/constants.d.ts +3 -0
- package/dist/components/SeoDrawer/TabsNav/constants.d.ts.map +1 -0
- package/dist/components/SeoDrawer/TabsNav/constants.js +13 -0
- package/dist/components/SeoDrawer/TabsNav/constants.js.map +1 -0
- package/dist/components/SeoDrawer/TabsNav/index.d.ts +8 -0
- package/dist/components/SeoDrawer/TabsNav/index.d.ts.map +1 -0
- package/dist/components/SeoDrawer/TabsNav/index.js +14 -0
- package/dist/components/SeoDrawer/TabsNav/index.js.map +1 -0
- package/dist/components/SeoDrawer/TabsNav/types.d.ts +8 -0
- package/dist/components/SeoDrawer/TabsNav/types.d.ts.map +1 -0
- package/dist/components/SeoDrawer/TabsNav/types.js +1 -0
- package/dist/components/SeoDrawer/TabsNav/types.js.map +1 -0
- package/dist/components/SeoDrawer/TabsNav/variants.d.ts +4 -0
- package/dist/components/SeoDrawer/TabsNav/variants.d.ts.map +1 -0
- package/dist/components/SeoDrawer/TabsNav/variants.js +14 -0
- package/dist/components/SeoDrawer/TabsNav/variants.js.map +1 -0
- package/dist/components/SeoDrawer/analysisDecision.d.ts +7 -0
- package/dist/components/SeoDrawer/analysisDecision.d.ts.map +1 -0
- package/dist/components/SeoDrawer/analysisDecision.js +12 -0
- package/dist/components/SeoDrawer/analysisDecision.js.map +1 -0
- package/dist/components/SeoDrawer/build-analysis-input.d.ts +24 -0
- package/dist/components/SeoDrawer/build-analysis-input.d.ts.map +1 -0
- package/dist/components/SeoDrawer/build-analysis-input.js +27 -0
- package/dist/components/SeoDrawer/build-analysis-input.js.map +1 -0
- package/dist/components/SeoDrawer/buildInput.d.ts +17 -0
- package/dist/components/SeoDrawer/buildInput.d.ts.map +1 -0
- package/dist/components/SeoDrawer/buildInput.js +32 -0
- package/dist/components/SeoDrawer/buildInput.js.map +1 -0
- package/dist/components/SeoDrawer/components/Header.d.ts +9 -0
- package/dist/components/SeoDrawer/components/Header.d.ts.map +1 -0
- package/dist/components/SeoDrawer/components/Header.js +21 -0
- package/dist/components/SeoDrawer/components/Header.js.map +1 -0
- package/dist/components/SeoDrawer/components/SerpPreview/highlight-keyphrase.d.ts +3 -0
- package/dist/components/SeoDrawer/components/SerpPreview/highlight-keyphrase.d.ts.map +1 -0
- package/dist/components/SeoDrawer/components/SerpPreview/highlight-keyphrase.js +14 -0
- package/dist/components/SeoDrawer/components/SerpPreview/highlight-keyphrase.js.map +1 -0
- package/dist/components/SeoDrawer/components/SerpPreview/index.d.ts +12 -0
- package/dist/components/SeoDrawer/components/SerpPreview/index.d.ts.map +1 -0
- package/dist/components/SeoDrawer/components/SerpPreview/index.js +23 -0
- package/dist/components/SeoDrawer/components/SerpPreview/index.js.map +1 -0
- package/dist/components/SeoDrawer/components/SerpPreview/serp-favicon.d.ts +8 -0
- package/dist/components/SeoDrawer/components/SerpPreview/serp-favicon.d.ts.map +1 -0
- package/dist/components/SeoDrawer/components/SerpPreview/serp-favicon.js +8 -0
- package/dist/components/SeoDrawer/components/SerpPreview/serp-favicon.js.map +1 -0
- package/dist/components/SeoDrawer/components/SerpPreview/truncate-description.d.ts +3 -0
- package/dist/components/SeoDrawer/components/SerpPreview/truncate-description.d.ts.map +1 -0
- package/dist/components/SeoDrawer/components/SerpPreview/truncate-description.js +16 -0
- package/dist/components/SeoDrawer/components/SerpPreview/truncate-description.js.map +1 -0
- package/dist/components/SeoDrawer/components/SerpPreview/variants.d.ts +19 -0
- package/dist/components/SeoDrawer/components/SerpPreview/variants.d.ts.map +1 -0
- package/dist/components/SeoDrawer/components/SerpPreview/variants.js +58 -0
- package/dist/components/SeoDrawer/components/SerpPreview/variants.js.map +1 -0
- package/dist/components/SeoDrawer/index.d.ts +18 -0
- package/dist/components/SeoDrawer/index.d.ts.map +1 -0
- package/dist/components/SeoDrawer/index.js +37 -0
- package/dist/components/SeoDrawer/index.js.map +1 -0
- package/dist/components/SeoDrawer/keyphrasePending.d.ts +2 -0
- package/dist/components/SeoDrawer/keyphrasePending.d.ts.map +1 -0
- package/dist/components/SeoDrawer/keyphrasePending.js +9 -0
- package/dist/components/SeoDrawer/keyphrasePending.js.map +1 -0
- package/dist/components/SeoDrawer/languagePacks.d.ts +2 -0
- package/dist/components/SeoDrawer/languagePacks.d.ts.map +1 -0
- package/dist/components/SeoDrawer/languagePacks.js +19 -0
- package/dist/components/SeoDrawer/languagePacks.js.map +1 -0
- package/dist/components/SeoDrawer/tabs/InclusiveTab.d.ts +5 -0
- package/dist/components/SeoDrawer/tabs/InclusiveTab.d.ts.map +1 -0
- package/dist/components/SeoDrawer/tabs/InclusiveTab.js +46 -0
- package/dist/components/SeoDrawer/tabs/InclusiveTab.js.map +1 -0
- package/dist/components/SeoDrawer/tabs/KeyphraseTab.d.ts +11 -0
- package/dist/components/SeoDrawer/tabs/KeyphraseTab.d.ts.map +1 -0
- package/dist/components/SeoDrawer/tabs/KeyphraseTab.js +72 -0
- package/dist/components/SeoDrawer/tabs/KeyphraseTab.js.map +1 -0
- package/dist/components/SeoDrawer/tabs/OnPageTab.d.ts +5 -0
- package/dist/components/SeoDrawer/tabs/OnPageTab.d.ts.map +1 -0
- package/dist/components/SeoDrawer/tabs/OnPageTab.js +37 -0
- package/dist/components/SeoDrawer/tabs/OnPageTab.js.map +1 -0
- package/dist/components/SeoDrawer/tabs/ReadabilityTab.d.ts +5 -0
- package/dist/components/SeoDrawer/tabs/ReadabilityTab.d.ts.map +1 -0
- package/dist/components/SeoDrawer/tabs/ReadabilityTab.js +37 -0
- package/dist/components/SeoDrawer/tabs/ReadabilityTab.js.map +1 -0
- package/dist/components/SeoDrawer/tabs/SerpTab.d.ts +7 -0
- package/dist/components/SeoDrawer/tabs/SerpTab.d.ts.map +1 -0
- package/dist/components/SeoDrawer/tabs/SerpTab.js +41 -0
- package/dist/components/SeoDrawer/tabs/SerpTab.js.map +1 -0
- package/dist/components/SeoDrawer/tabs/VitalsTab.d.ts +7 -0
- package/dist/components/SeoDrawer/tabs/VitalsTab.d.ts.map +1 -0
- package/dist/components/SeoDrawer/tabs/VitalsTab.js +42 -0
- package/dist/components/SeoDrawer/tabs/VitalsTab.js.map +1 -0
- package/dist/components/SeoDrawer/useAnalysis.d.ts +17 -0
- package/dist/components/SeoDrawer/useAnalysis.d.ts.map +1 -0
- package/dist/components/SeoDrawer/useAnalysis.js +57 -0
- package/dist/components/SeoDrawer/useAnalysis.js.map +1 -0
- package/dist/components/SeoDrawer/useLiveDocument.d.ts +22 -0
- package/dist/components/SeoDrawer/useLiveDocument.d.ts.map +1 -0
- package/dist/components/SeoDrawer/useLiveDocument.js +85 -0
- package/dist/components/SeoDrawer/useLiveDocument.js.map +1 -0
- package/dist/components/SeoDrawer/variants.d.ts +4 -0
- package/dist/components/SeoDrawer/variants.d.ts.map +1 -0
- package/dist/components/SeoDrawer/variants.js +14 -0
- package/dist/components/SeoDrawer/variants.js.map +1 -0
- package/dist/components/icons.d.ts +7 -0
- package/dist/components/icons.d.ts.map +1 -0
- package/dist/components/icons.js +40 -0
- package/dist/components/icons.js.map +1 -0
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +15 -0
- package/dist/config.js.map +1 -0
- package/dist/constants/checkIds.d.ts +8 -0
- package/dist/constants/checkIds.d.ts.map +1 -0
- package/dist/constants/checkIds.js +21 -0
- package/dist/constants/checkIds.js.map +1 -0
- package/dist/constants/index.d.ts +5 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +10 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/constants/statuses.d.ts +3 -0
- package/dist/constants/statuses.d.ts.map +1 -0
- package/dist/constants/statuses.js +9 -0
- package/dist/constants/statuses.js.map +1 -0
- package/dist/content/extractContent.d.ts +3 -0
- package/dist/content/extractContent.d.ts.map +1 -0
- package/dist/content/extractContent.js +31 -0
- package/dist/content/extractContent.js.map +1 -0
- package/dist/content/lexicalToHtml.d.ts +6 -0
- package/dist/content/lexicalToHtml.d.ts.map +1 -0
- package/dist/content/lexicalToHtml.js +15 -0
- package/dist/content/lexicalToHtml.js.map +1 -0
- package/dist/content/uploads/collect-upload-refs.d.ts +5 -0
- package/dist/content/uploads/collect-upload-refs.d.ts.map +1 -0
- package/dist/content/uploads/collect-upload-refs.js +19 -0
- package/dist/content/uploads/collect-upload-refs.js.map +1 -0
- package/dist/content/uploads/hydrate-values.d.ts +5 -0
- package/dist/content/uploads/hydrate-values.d.ts.map +1 -0
- package/dist/content/uploads/hydrate-values.js +15 -0
- package/dist/content/uploads/hydrate-values.js.map +1 -0
- package/dist/content/uploads/media-resolver.d.ts +7 -0
- package/dist/content/uploads/media-resolver.d.ts.map +1 -0
- package/dist/content/uploads/media-resolver.js +60 -0
- package/dist/content/uploads/media-resolver.js.map +1 -0
- package/dist/content/uploads/transform-lexical-uploads.d.ts +5 -0
- package/dist/content/uploads/transform-lexical-uploads.d.ts.map +1 -0
- package/dist/content/uploads/transform-lexical-uploads.js +34 -0
- package/dist/content/uploads/transform-lexical-uploads.js.map +1 -0
- package/dist/content/uploads/transform-upload-values.d.ts +10 -0
- package/dist/content/uploads/transform-upload-values.d.ts.map +1 -0
- package/dist/content/uploads/transform-upload-values.js +108 -0
- package/dist/content/uploads/transform-upload-values.js.map +1 -0
- package/dist/content/uploads/types.d.ts +8 -0
- package/dist/content/uploads/types.d.ts.map +1 -0
- package/dist/content/uploads/types.js +7 -0
- package/dist/content/uploads/types.js.map +1 -0
- package/dist/content/walkValue.d.ts +14 -0
- package/dist/content/walkValue.d.ts.map +1 -0
- package/dist/content/walkValue.js +62 -0
- package/dist/content/walkValue.js.map +1 -0
- package/dist/css.d.js +1 -0
- package/dist/css.d.js.map +1 -0
- package/dist/engine/assessorAdapter.d.ts +14 -0
- package/dist/engine/assessorAdapter.d.ts.map +1 -0
- package/dist/engine/assessorAdapter.js +23 -0
- package/dist/engine/assessorAdapter.js.map +1 -0
- package/dist/engine/buildPaper.d.ts +4 -0
- package/dist/engine/buildPaper.d.ts.map +1 -0
- package/dist/engine/buildPaper.js +16 -0
- package/dist/engine/buildPaper.js.map +1 -0
- package/dist/engine/extractCheckData.d.ts +4 -0
- package/dist/engine/extractCheckData.d.ts.map +1 -0
- package/dist/engine/extractCheckData.js +162 -0
- package/dist/engine/extractCheckData.js.map +1 -0
- package/dist/engine/helpers/has-keyphrase.d.ts +2 -0
- package/dist/engine/helpers/has-keyphrase.d.ts.map +1 -0
- package/dist/engine/helpers/has-keyphrase.js +7 -0
- package/dist/engine/helpers/has-keyphrase.js.map +1 -0
- package/dist/engine/helpers/title-progress.d.ts +5 -0
- package/dist/engine/helpers/title-progress.d.ts.map +1 -0
- package/dist/engine/helpers/title-progress.js +21 -0
- package/dist/engine/helpers/title-progress.js.map +1 -0
- package/dist/engine/inclusiveScore.d.ts +15 -0
- package/dist/engine/inclusiveScore.d.ts.map +1 -0
- package/dist/engine/inclusiveScore.js +25 -0
- package/dist/engine/inclusiveScore.js.map +1 -0
- package/dist/engine/recommendations.d.ts +7 -0
- package/dist/engine/recommendations.d.ts.map +1 -0
- package/dist/engine/recommendations.js +53 -0
- package/dist/engine/recommendations.js.map +1 -0
- package/dist/engine/researcherAdapter.d.ts +6 -0
- package/dist/engine/researcherAdapter.d.ts.map +1 -0
- package/dist/engine/researcherAdapter.js +16 -0
- package/dist/engine/researcherAdapter.js.map +1 -0
- package/dist/engine/runAnalysis/index.d.ts +3 -0
- package/dist/engine/runAnalysis/index.d.ts.map +1 -0
- package/dist/engine/runAnalysis/index.js +24 -0
- package/dist/engine/runAnalysis/index.js.map +1 -0
- package/dist/engine/runAnalysis/services/derive-inclusive.d.ts +4 -0
- package/dist/engine/runAnalysis/services/derive-inclusive.d.ts.map +1 -0
- package/dist/engine/runAnalysis/services/derive-inclusive.js +47 -0
- package/dist/engine/runAnalysis/services/derive-inclusive.js.map +1 -0
- package/dist/engine/runAnalysis/services/derive-readability.d.ts +4 -0
- package/dist/engine/runAnalysis/services/derive-readability.d.ts.map +1 -0
- package/dist/engine/runAnalysis/services/derive-readability.js +32 -0
- package/dist/engine/runAnalysis/services/derive-readability.js.map +1 -0
- package/dist/engine/runAnalysis/services/derive-seo.d.ts +18 -0
- package/dist/engine/runAnalysis/services/derive-seo.d.ts.map +1 -0
- package/dist/engine/runAnalysis/services/derive-seo.js +40 -0
- package/dist/engine/runAnalysis/services/derive-seo.js.map +1 -0
- package/dist/engine/runAnalysis/services/derive-serp.d.ts +3 -0
- package/dist/engine/runAnalysis/services/derive-serp.d.ts.map +1 -0
- package/dist/engine/runAnalysis/services/derive-serp.js +13 -0
- package/dist/engine/runAnalysis/services/derive-serp.js.map +1 -0
- package/dist/engine/runAnalysis/services/derive-vitals/index.d.ts +4 -0
- package/dist/engine/runAnalysis/services/derive-vitals/index.d.ts.map +1 -0
- package/dist/engine/runAnalysis/services/derive-vitals/index.js +19 -0
- package/dist/engine/runAnalysis/services/derive-vitals/index.js.map +1 -0
- package/dist/engine/runAnalysis/services/derive-vitals/researches.d.ts +19 -0
- package/dist/engine/runAnalysis/services/derive-vitals/researches.d.ts.map +1 -0
- package/dist/engine/runAnalysis/services/derive-vitals/researches.js +47 -0
- package/dist/engine/runAnalysis/services/derive-vitals/researches.js.map +1 -0
- package/dist/engine/runAnalysis/utils/enrich.d.ts +5 -0
- package/dist/engine/runAnalysis/utils/enrich.d.ts.map +1 -0
- package/dist/engine/runAnalysis/utils/enrich.js +16 -0
- package/dist/engine/runAnalysis/utils/enrich.js.map +1 -0
- package/dist/engine/runAnalysis/utils/toCategory.d.ts +3 -0
- package/dist/engine/runAnalysis/utils/toCategory.d.ts.map +1 -0
- package/dist/engine/runAnalysis/utils/toCategory.js +13 -0
- package/dist/engine/runAnalysis/utils/toCategory.js.map +1 -0
- package/dist/engine/scoreStatus.d.ts +8 -0
- package/dist/engine/scoreStatus.d.ts.map +1 -0
- package/dist/engine/scoreStatus.js +35 -0
- package/dist/engine/scoreStatus.js.map +1 -0
- package/dist/engine/types/analysis.d.ts +81 -0
- package/dist/engine/types/analysis.d.ts.map +1 -0
- package/dist/engine/types/analysis.js +1 -0
- package/dist/engine/types/analysis.js.map +1 -0
- package/dist/engine/types/paper.d.ts +8 -0
- package/dist/engine/types/paper.d.ts.map +1 -0
- package/dist/engine/types/paper.js +1 -0
- package/dist/engine/types/paper.js.map +1 -0
- package/dist/engine/types/visualization.d.ts +73 -0
- package/dist/engine/types/visualization.d.ts.map +1 -0
- package/dist/engine/types/visualization.js +1 -0
- package/dist/engine/types/visualization.js.map +1 -0
- package/dist/engine/visualization/buildGauge.d.ts +3 -0
- package/dist/engine/visualization/buildGauge.d.ts.map +1 -0
- package/dist/engine/visualization/buildGauge.js +62 -0
- package/dist/engine/visualization/buildGauge.js.map +1 -0
- package/dist/engine/visualization/formatGaugeValue.d.ts +3 -0
- package/dist/engine/visualization/formatGaugeValue.d.ts.map +1 -0
- package/dist/engine/visualization/formatGaugeValue.js +16 -0
- package/dist/engine/visualization/formatGaugeValue.js.map +1 -0
- package/dist/engine/visualization/gaugeSpecs.d.ts +4 -0
- package/dist/engine/visualization/gaugeSpecs.d.ts.map +1 -0
- package/dist/engine/visualization/gaugeSpecs.js +78 -0
- package/dist/engine/visualization/gaugeSpecs.js.map +1 -0
- package/dist/engine/visualization/resolveVisualization/constants.d.ts +4 -0
- package/dist/engine/visualization/resolveVisualization/constants.d.ts.map +1 -0
- package/dist/engine/visualization/resolveVisualization/constants.js +17 -0
- package/dist/engine/visualization/resolveVisualization/constants.js.map +1 -0
- package/dist/engine/visualization/resolveVisualization/index.d.ts +4 -0
- package/dist/engine/visualization/resolveVisualization/index.d.ts.map +1 -0
- package/dist/engine/visualization/resolveVisualization/index.js +43 -0
- package/dist/engine/visualization/resolveVisualization/index.js.map +1 -0
- package/dist/engine/visualization/resolveVisualization/resolves/resolveDrilldown.d.ts +3 -0
- package/dist/engine/visualization/resolveVisualization/resolves/resolveDrilldown.d.ts.map +1 -0
- package/dist/engine/visualization/resolveVisualization/resolves/resolveDrilldown.js +19 -0
- package/dist/engine/visualization/resolveVisualization/resolves/resolveDrilldown.js.map +1 -0
- package/dist/engine/visualization/resolveVisualization/resolves/resolveLinks.d.ts +4 -0
- package/dist/engine/visualization/resolveVisualization/resolves/resolveLinks.d.ts.map +1 -0
- package/dist/engine/visualization/resolveVisualization/resolves/resolveLinks.js +24 -0
- package/dist/engine/visualization/resolveVisualization/resolves/resolveLinks.js.map +1 -0
- package/dist/engine/visualization/resolveVisualization/resolves/resolvePresence.d.ts +4 -0
- package/dist/engine/visualization/resolveVisualization/resolves/resolvePresence.d.ts.map +1 -0
- package/dist/engine/visualization/resolveVisualization/resolves/resolvePresence.js +7 -0
- package/dist/engine/visualization/resolveVisualization/resolves/resolvePresence.js.map +1 -0
- package/dist/engine/visualization/resolveVisualization/resolves/resolveProportionCount.d.ts +4 -0
- package/dist/engine/visualization/resolveVisualization/resolves/resolveProportionCount.d.ts.map +1 -0
- package/dist/engine/visualization/resolveVisualization/resolves/resolveProportionCount.js +20 -0
- package/dist/engine/visualization/resolveVisualization/resolves/resolveProportionCount.js.map +1 -0
- package/dist/engine/visualization/resolveVisualization/resolves/resolveValueRange.d.ts +4 -0
- package/dist/engine/visualization/resolveVisualization/resolves/resolveValueRange.d.ts.map +1 -0
- package/dist/engine/visualization/resolveVisualization/resolves/resolveValueRange.js +28 -0
- package/dist/engine/visualization/resolveVisualization/resolves/resolveValueRange.js.map +1 -0
- package/dist/engine/visualization/resolveVisualization/utils/pluralize.d.ts +2 -0
- package/dist/engine/visualization/resolveVisualization/utils/pluralize.d.ts.map +1 -0
- package/dist/engine/visualization/resolveVisualization/utils/pluralize.js +5 -0
- package/dist/engine/visualization/resolveVisualization/utils/pluralize.js.map +1 -0
- package/dist/engine/visualization/resolveVisualization/utils/readDrilldownItems.d.ts +5 -0
- package/dist/engine/visualization/resolveVisualization/utils/readDrilldownItems.d.ts.map +1 -0
- package/dist/engine/visualization/resolveVisualization/utils/readDrilldownItems.js +8 -0
- package/dist/engine/visualization/resolveVisualization/utils/readDrilldownItems.js.map +1 -0
- package/dist/engine/visualization/resolveVisualization/utils/readNumber.d.ts +2 -0
- package/dist/engine/visualization/resolveVisualization/utils/readNumber.d.ts.map +1 -0
- package/dist/engine/visualization/resolveVisualization/utils/readNumber.js +8 -0
- package/dist/engine/visualization/resolveVisualization/utils/readNumber.js.map +1 -0
- package/dist/engine/visualization/resolveVisualization/utils/readPositions.d.ts +2 -0
- package/dist/engine/visualization/resolveVisualization/utils/readPositions.d.ts.map +1 -0
- package/dist/engine/visualization/resolveVisualization/utils/readPositions.js +8 -0
- package/dist/engine/visualization/resolveVisualization/utils/readPositions.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/plugin.d.ts +4 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +23 -0
- package/dist/plugin.js.map +1 -0
- package/dist/translations/en.d.ts +3 -0
- package/dist/translations/en.d.ts.map +1 -0
- package/dist/translations/en.js +17 -0
- package/dist/translations/en.js.map +1 -0
- package/dist/translations/types.d.ts +2 -0
- package/dist/translations/types.d.ts.map +1 -0
- package/dist/translations/types.js +1 -0
- package/dist/translations/types.js.map +1 -0
- package/dist/types/config.d.ts +39 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +1 -0
- package/dist/types/config.js.map +1 -0
- package/dist/ui/CheckRow/CheckVisualization/index.d.ts +5 -0
- package/dist/ui/CheckRow/CheckVisualization/index.d.ts.map +1 -0
- package/dist/ui/CheckRow/CheckVisualization/index.js +27 -0
- package/dist/ui/CheckRow/CheckVisualization/index.js.map +1 -0
- package/dist/ui/CheckRow/CheckVisualization/visualizations/DensityGauge.d.ts +3 -0
- package/dist/ui/CheckRow/CheckVisualization/visualizations/DensityGauge.d.ts.map +1 -0
- package/dist/ui/CheckRow/CheckVisualization/visualizations/DensityGauge.js +70 -0
- package/dist/ui/CheckRow/CheckVisualization/visualizations/DensityGauge.js.map +1 -0
- package/dist/ui/CheckRow/CheckVisualization/visualizations/DistributionBar.d.ts +3 -0
- package/dist/ui/CheckRow/CheckVisualization/visualizations/DistributionBar.d.ts.map +1 -0
- package/dist/ui/CheckRow/CheckVisualization/visualizations/DistributionBar.js +16 -0
- package/dist/ui/CheckRow/CheckVisualization/visualizations/DistributionBar.js.map +1 -0
- package/dist/ui/CheckRow/CheckVisualization/visualizations/DrillDown.d.ts +3 -0
- package/dist/ui/CheckRow/CheckVisualization/visualizations/DrillDown.d.ts.map +1 -0
- package/dist/ui/CheckRow/CheckVisualization/visualizations/DrillDown.js +36 -0
- package/dist/ui/CheckRow/CheckVisualization/visualizations/DrillDown.js.map +1 -0
- package/dist/ui/CheckRow/CheckVisualization/visualizations/SegmentBar.d.ts +3 -0
- package/dist/ui/CheckRow/CheckVisualization/visualizations/SegmentBar.d.ts.map +1 -0
- package/dist/ui/CheckRow/CheckVisualization/visualizations/SegmentBar.js +32 -0
- package/dist/ui/CheckRow/CheckVisualization/visualizations/SegmentBar.js.map +1 -0
- package/dist/ui/CheckRow/constants/labels.d.ts +6 -0
- package/dist/ui/CheckRow/constants/labels.d.ts.map +1 -0
- package/dist/ui/CheckRow/constants/labels.js +103 -0
- package/dist/ui/CheckRow/constants/labels.js.map +1 -0
- package/dist/ui/CheckRow/index.d.ts +7 -0
- package/dist/ui/CheckRow/index.d.ts.map +1 -0
- package/dist/ui/CheckRow/index.js +29 -0
- package/dist/ui/CheckRow/index.js.map +1 -0
- package/dist/ui/FilterPills.d.ts +10 -0
- package/dist/ui/FilterPills.d.ts.map +1 -0
- package/dist/ui/FilterPills.js +37 -0
- package/dist/ui/FilterPills.js.map +1 -0
- package/dist/ui/KpiCard.d.ts +9 -0
- package/dist/ui/KpiCard.d.ts.map +1 -0
- package/dist/ui/KpiCard.js +19 -0
- package/dist/ui/KpiCard.js.map +1 -0
- package/dist/ui/Pill.d.ts +9 -0
- package/dist/ui/Pill.d.ts.map +1 -0
- package/dist/ui/Pill.js +20 -0
- package/dist/ui/Pill.js.map +1 -0
- package/dist/ui/ScoreRing.d.ts +8 -0
- package/dist/ui/ScoreRing.d.ts.map +1 -0
- package/dist/ui/ScoreRing.js +20 -0
- package/dist/ui/ScoreRing.js.map +1 -0
- package/dist/ui/SectionCard.d.ts +9 -0
- package/dist/ui/SectionCard.d.ts.map +1 -0
- package/dist/ui/SectionCard.js +16 -0
- package/dist/ui/SectionCard.js.map +1 -0
- package/dist/ui/SectionWrapper.d.ts +8 -0
- package/dist/ui/SectionWrapper.d.ts.map +1 -0
- package/dist/ui/SectionWrapper.js +10 -0
- package/dist/ui/SectionWrapper.js.map +1 -0
- package/dist/ui/SegmentedControl.d.ts +15 -0
- package/dist/ui/SegmentedControl.d.ts.map +1 -0
- package/dist/ui/SegmentedControl.js +75 -0
- package/dist/ui/SegmentedControl.js.map +1 -0
- package/dist/ui/TabHeader.d.ts +12 -0
- package/dist/ui/TabHeader.d.ts.map +1 -0
- package/dist/ui/TabHeader.js +22 -0
- package/dist/ui/TabHeader.js.map +1 -0
- package/dist/ui/Tooltip.d.ts +17 -0
- package/dist/ui/Tooltip.d.ts.map +1 -0
- package/dist/ui/Tooltip.js +81 -0
- package/dist/ui/Tooltip.js.map +1 -0
- package/dist/utils/config/getComponentPath.d.ts +2 -0
- package/dist/utils/config/getComponentPath.d.ts.map +1 -0
- package/dist/utils/config/getComponentPath.js +8 -0
- package/dist/utils/config/getComponentPath.js.map +1 -0
- package/dist/utils/config/mergeTranslations.d.ts +3 -0
- package/dist/utils/config/mergeTranslations.d.ts.map +1 -0
- package/dist/utils/config/mergeTranslations.js +11 -0
- package/dist/utils/config/mergeTranslations.js.map +1 -0
- package/dist/utils/config/overrideAdmin.d.ts +4 -0
- package/dist/utils/config/overrideAdmin.d.ts.map +1 -0
- package/dist/utils/config/overrideAdmin.js +43 -0
- package/dist/utils/config/overrideAdmin.js.map +1 -0
- package/dist/utils/style.d.ts +4 -0
- package/dist/utils/style.d.ts.map +1 -0
- package/dist/utils/style.js +11 -0
- package/dist/utils/style.js.map +1 -0
- package/dist/yoastseo.d.js +1 -0
- package/dist/yoastseo.d.js.map +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|