@focus-reactive/payload-plugin-seo 1.3.0 → 1.4.0
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/README.md +210 -43
- package/dist/admin.css +2 -3
- package/dist/components/SeoButton/ScoreBadge.d.ts.map +1 -1
- package/dist/components/SeoButton/ScoreBadge.js +10 -7
- package/dist/components/SeoButton/ScoreBadge.js.map +1 -1
- package/dist/components/SeoButton/SeoButtonInner.d.ts +3 -1
- package/dist/components/SeoButton/SeoButtonInner.d.ts.map +1 -1
- package/dist/components/SeoButton/SeoButtonInner.js +5 -2
- package/dist/components/SeoButton/SeoButtonInner.js.map +1 -1
- package/dist/components/SeoDrawer/TabsNav/index.d.ts.map +1 -1
- package/dist/components/SeoDrawer/TabsNav/index.js +15 -4
- package/dist/components/SeoDrawer/TabsNav/index.js.map +1 -1
- package/dist/components/SeoDrawer/TabsNav/variants.d.ts.map +1 -1
- package/dist/components/SeoDrawer/TabsNav/variants.js +12 -9
- package/dist/components/SeoDrawer/TabsNav/variants.js.map +1 -1
- package/dist/components/SeoDrawer/analysisDecision.d.ts.map +1 -1
- package/dist/components/SeoDrawer/analysisDecision.js.map +1 -1
- package/dist/components/SeoDrawer/build-analysis-input.d.ts +9 -7
- package/dist/components/SeoDrawer/build-analysis-input.d.ts.map +1 -1
- package/dist/components/SeoDrawer/build-analysis-input.js +39 -11
- package/dist/components/SeoDrawer/build-analysis-input.js.map +1 -1
- package/dist/components/SeoDrawer/buildInput.d.ts +1 -1
- package/dist/components/SeoDrawer/buildInput.d.ts.map +1 -1
- package/dist/components/SeoDrawer/buildInput.js +12 -2
- package/dist/components/SeoDrawer/buildInput.js.map +1 -1
- package/dist/components/SeoDrawer/components/Header.d.ts.map +1 -1
- package/dist/components/SeoDrawer/components/Header.js +20 -2
- package/dist/components/SeoDrawer/components/Header.js.map +1 -1
- package/dist/components/SeoDrawer/components/HeadingsSection/HeadingLevelTiles.d.ts.map +1 -1
- package/dist/components/SeoDrawer/components/HeadingsSection/HeadingLevelTiles.js +23 -5
- package/dist/components/SeoDrawer/components/HeadingsSection/HeadingLevelTiles.js.map +1 -1
- package/dist/components/SeoDrawer/components/HeadingsSection/HeadingTree/Chevron.d.ts.map +1 -1
- package/dist/components/SeoDrawer/components/HeadingsSection/HeadingTree/Chevron.js +12 -1
- package/dist/components/SeoDrawer/components/HeadingsSection/HeadingTree/Chevron.js.map +1 -1
- package/dist/components/SeoDrawer/components/HeadingsSection/HeadingTree/HeadingTreeGroup.d.ts.map +1 -1
- package/dist/components/SeoDrawer/components/HeadingsSection/HeadingTree/HeadingTreeGroup.js +43 -4
- package/dist/components/SeoDrawer/components/HeadingsSection/HeadingTree/HeadingTreeGroup.js.map +1 -1
- package/dist/components/SeoDrawer/components/HeadingsSection/HeadingTree/HeadingTreeRow.d.ts +1 -1
- package/dist/components/SeoDrawer/components/HeadingsSection/HeadingTree/HeadingTreeRow.d.ts.map +1 -1
- package/dist/components/SeoDrawer/components/HeadingsSection/HeadingTree/HeadingTreeRow.js +45 -10
- package/dist/components/SeoDrawer/components/HeadingsSection/HeadingTree/HeadingTreeRow.js.map +1 -1
- package/dist/components/SeoDrawer/components/HeadingsSection/HeadingTree/index.d.ts.map +1 -1
- package/dist/components/SeoDrawer/components/HeadingsSection/HeadingTree/index.js.map +1 -1
- package/dist/components/SeoDrawer/components/HeadingsSection/HeadingTree/useHeadingRails.d.ts +1 -1
- package/dist/components/SeoDrawer/components/HeadingsSection/HeadingTree/useHeadingRails.d.ts.map +1 -1
- package/dist/components/SeoDrawer/components/HeadingsSection/HeadingTree/useHeadingRails.js +6 -1
- package/dist/components/SeoDrawer/components/HeadingsSection/HeadingTree/useHeadingRails.js.map +1 -1
- package/dist/components/SeoDrawer/components/HeadingsSection/index.d.ts.map +1 -1
- package/dist/components/SeoDrawer/components/HeadingsSection/index.js.map +1 -1
- package/dist/components/SeoDrawer/components/SerpPreview/highlight-keyphrase.d.ts.map +1 -1
- package/dist/components/SeoDrawer/components/SerpPreview/highlight-keyphrase.js +3 -1
- package/dist/components/SeoDrawer/components/SerpPreview/highlight-keyphrase.js.map +1 -1
- package/dist/components/SeoDrawer/components/SerpPreview/index.d.ts.map +1 -1
- package/dist/components/SeoDrawer/components/SerpPreview/index.js +8 -1
- package/dist/components/SeoDrawer/components/SerpPreview/index.js.map +1 -1
- package/dist/components/SeoDrawer/components/SerpPreview/serp-favicon.d.ts.map +1 -1
- package/dist/components/SeoDrawer/components/SerpPreview/serp-favicon.js.map +1 -1
- package/dist/components/SeoDrawer/components/SerpPreview/variants.d.ts.map +1 -1
- package/dist/components/SeoDrawer/components/SerpPreview/variants.js +9 -6
- package/dist/components/SeoDrawer/components/SerpPreview/variants.js.map +1 -1
- package/dist/components/SeoDrawer/index.d.ts.map +1 -1
- package/dist/components/SeoDrawer/index.js +50 -15
- package/dist/components/SeoDrawer/index.js.map +1 -1
- package/dist/components/SeoDrawer/keyphrasePending.d.ts.map +1 -1
- package/dist/components/SeoDrawer/keyphrasePending.js.map +1 -1
- package/dist/components/SeoDrawer/languagePacks.d.ts.map +1 -1
- package/dist/components/SeoDrawer/languagePacks.js.map +1 -1
- package/dist/components/SeoDrawer/tabs/InclusiveTab.d.ts.map +1 -1
- package/dist/components/SeoDrawer/tabs/InclusiveTab.js +31 -10
- package/dist/components/SeoDrawer/tabs/InclusiveTab.js.map +1 -1
- package/dist/components/SeoDrawer/tabs/KeyphraseTab.d.ts +1 -1
- package/dist/components/SeoDrawer/tabs/KeyphraseTab.d.ts.map +1 -1
- package/dist/components/SeoDrawer/tabs/KeyphraseTab.js +8 -1
- package/dist/components/SeoDrawer/tabs/KeyphraseTab.js.map +1 -1
- package/dist/components/SeoDrawer/tabs/SerpTab.d.ts +1 -1
- package/dist/components/SeoDrawer/tabs/SerpTab.d.ts.map +1 -1
- package/dist/components/SeoDrawer/tabs/SerpTab.js +5 -1
- package/dist/components/SeoDrawer/tabs/SerpTab.js.map +1 -1
- package/dist/components/SeoDrawer/tabs/VitalsTab.d.ts.map +1 -1
- package/dist/components/SeoDrawer/tabs/VitalsTab.js +32 -9
- package/dist/components/SeoDrawer/tabs/VitalsTab.js.map +1 -1
- package/dist/components/SeoDrawer/useAnalysis.d.ts +1 -1
- package/dist/components/SeoDrawer/useAnalysis.d.ts.map +1 -1
- package/dist/components/SeoDrawer/useAnalysis.js +6 -1
- package/dist/components/SeoDrawer/useAnalysis.js.map +1 -1
- package/dist/components/SeoDrawer/useLiveDocument.d.ts +5 -3
- package/dist/components/SeoDrawer/useLiveDocument.d.ts.map +1 -1
- package/dist/components/SeoDrawer/useLiveDocument.js +82 -37
- package/dist/components/SeoDrawer/useLiveDocument.js.map +1 -1
- package/dist/components/icons.d.ts.map +1 -1
- package/dist/components/icons.js +16 -1
- package/dist/components/icons.js.map +1 -1
- package/dist/constants/checkIds.d.ts.map +1 -1
- package/dist/constants/checkIds.js +18 -2
- package/dist/constants/checkIds.js.map +1 -1
- package/dist/content/extract/context.d.ts +11 -0
- package/dist/content/extract/context.d.ts.map +1 -0
- package/dist/content/extract/context.js +1 -0
- package/dist/content/extract/context.js.map +1 -0
- package/dist/content/extract/extract.d.ts +18 -0
- package/dist/content/extract/extract.d.ts.map +1 -0
- package/dist/content/extract/extract.js +211 -0
- package/dist/content/extract/extract.js.map +1 -0
- package/dist/content/extract/selection.d.ts +3 -0
- package/dist/content/extract/selection.d.ts.map +1 -0
- package/dist/content/extract/selection.js +32 -0
- package/dist/content/extract/selection.js.map +1 -0
- package/dist/content/index.d.ts +5 -0
- package/dist/content/index.d.ts.map +1 -0
- package/dist/content/index.js +14 -0
- package/dist/content/index.js.map +1 -0
- package/dist/content/lexical/transform.d.ts +5 -0
- package/dist/content/lexical/transform.d.ts.map +1 -0
- package/dist/content/lexical/transform.js +56 -0
- package/dist/content/lexical/transform.js.map +1 -0
- package/dist/content/registry.d.ts +4 -0
- package/dist/content/registry.d.ts.map +1 -0
- package/dist/content/registry.js +22 -0
- package/dist/content/registry.js.map +1 -0
- package/dist/content/resolve/collect-refs.d.ts +8 -0
- package/dist/content/resolve/collect-refs.d.ts.map +1 -0
- package/dist/content/resolve/collect-refs.js +79 -0
- package/dist/content/resolve/collect-refs.js.map +1 -0
- package/dist/content/resolve/hydrate.d.ts +7 -0
- package/dist/content/resolve/hydrate.d.ts.map +1 -0
- package/dist/content/resolve/hydrate.js +123 -0
- package/dist/content/resolve/hydrate.js.map +1 -0
- package/dist/content/resolve/resolver.d.ts +7 -0
- package/dist/content/resolve/resolver.d.ts.map +1 -0
- package/dist/content/{uploads/media-resolver.js → resolve/resolver.js} +21 -16
- package/dist/content/resolve/resolver.js.map +1 -0
- package/dist/content/resolve/types.d.ts +12 -0
- package/dist/content/resolve/types.d.ts.map +1 -0
- package/dist/content/resolve/types.js +7 -0
- package/dist/content/resolve/types.js.map +1 -0
- package/dist/content/schema/helpers.d.ts +9 -0
- package/dist/content/schema/helpers.d.ts.map +1 -0
- package/dist/content/schema/helpers.js +60 -0
- package/dist/content/schema/helpers.js.map +1 -0
- package/dist/content/schema/nodes.d.ts +26 -0
- package/dist/content/schema/nodes.d.ts.map +1 -0
- package/dist/content/schema/nodes.js +8 -0
- package/dist/content/schema/nodes.js.map +1 -0
- package/dist/content/schema/serialize.d.ts +3 -0
- package/dist/content/schema/serialize.d.ts.map +1 -0
- package/dist/content/schema/serialize.js +31 -0
- package/dist/content/schema/serialize.js.map +1 -0
- package/dist/content/walk/walkFields.d.ts +17 -0
- package/dist/content/walk/walkFields.d.ts.map +1 -0
- package/dist/content/walk/walkFields.js +88 -0
- package/dist/content/walk/walkFields.js.map +1 -0
- package/dist/engine/assessorAdapter.d.ts.map +1 -1
- package/dist/engine/assessorAdapter.js.map +1 -1
- package/dist/engine/extractCheckData.d.ts.map +1 -1
- package/dist/engine/extractCheckData.js +19 -5
- package/dist/engine/extractCheckData.js.map +1 -1
- package/dist/engine/helpers/title-progress.d.ts +1 -1
- package/dist/engine/helpers/title-progress.js.map +1 -1
- package/dist/engine/inclusiveScore.d.ts.map +1 -1
- package/dist/engine/inclusiveScore.js.map +1 -1
- package/dist/engine/recommendations.d.ts.map +1 -1
- package/dist/engine/recommendations.js.map +1 -1
- package/dist/engine/runAnalysis/services/derive-inclusive.js.map +1 -1
- package/dist/engine/runAnalysis/services/derive-readability.d.ts.map +1 -1
- package/dist/engine/runAnalysis/services/derive-readability.js +5 -1
- package/dist/engine/runAnalysis/services/derive-readability.js.map +1 -1
- package/dist/engine/runAnalysis/services/derive-vitals/heading-tree.d.ts.map +1 -1
- package/dist/engine/runAnalysis/services/derive-vitals/heading-tree.js.map +1 -1
- package/dist/engine/runAnalysis/services/derive-vitals/index.d.ts.map +1 -1
- package/dist/engine/runAnalysis/services/derive-vitals/index.js +9 -1
- package/dist/engine/runAnalysis/services/derive-vitals/index.js.map +1 -1
- package/dist/engine/runAnalysis/services/derive-vitals/researches.d.ts +1 -1
- package/dist/engine/runAnalysis/services/derive-vitals/researches.d.ts.map +1 -1
- package/dist/engine/runAnalysis/services/derive-vitals/researches.js +8 -2
- package/dist/engine/runAnalysis/services/derive-vitals/researches.js.map +1 -1
- package/dist/engine/runAnalysis/utils/enrich.d.ts.map +1 -1
- package/dist/engine/runAnalysis/utils/enrich.js.map +1 -1
- package/dist/engine/visualization/resolveVisualization/constants.d.ts.map +1 -1
- package/dist/engine/visualization/resolveVisualization/constants.js +9 -1
- package/dist/engine/visualization/resolveVisualization/constants.js.map +1 -1
- package/dist/engine/visualization/resolveVisualization/index.d.ts.map +1 -1
- package/dist/engine/visualization/resolveVisualization/index.js.map +1 -1
- package/dist/engine/visualization/resolveVisualization/resolves/resolveDrilldown.d.ts.map +1 -1
- package/dist/engine/visualization/resolveVisualization/resolves/resolveDrilldown.js.map +1 -1
- package/dist/engine/visualization/resolveVisualization/resolves/resolveLinks.d.ts.map +1 -1
- package/dist/engine/visualization/resolveVisualization/resolves/resolveLinks.js.map +1 -1
- package/dist/engine/visualization/resolveVisualization/resolves/resolveProportionCount.d.ts.map +1 -1
- package/dist/engine/visualization/resolveVisualization/resolves/resolveProportionCount.js.map +1 -1
- package/dist/engine/visualization/resolveVisualization/resolves/resolveValueRange.d.ts.map +1 -1
- package/dist/engine/visualization/resolveVisualization/resolves/resolveValueRange.js.map +1 -1
- package/dist/engine/visualization/resolveVisualization/utils/pluralize.d.ts.map +1 -1
- package/dist/engine/visualization/resolveVisualization/utils/pluralize.js.map +1 -1
- package/dist/engine/visualization/resolveVisualization/utils/readDrilldownItems.d.ts.map +1 -1
- package/dist/engine/visualization/resolveVisualization/utils/readDrilldownItems.js.map +1 -1
- package/dist/engine/visualization/resolveVisualization/utils/readNumber.d.ts.map +1 -1
- package/dist/engine/visualization/resolveVisualization/utils/readNumber.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +7 -2
- package/dist/plugin.js.map +1 -1
- package/dist/types/config.d.ts +30 -7
- package/dist/types/config.d.ts.map +1 -1
- package/dist/ui/CheckRow/CheckVisualization/visualizations/DensityGauge.d.ts.map +1 -1
- package/dist/ui/CheckRow/CheckVisualization/visualizations/DensityGauge.js +24 -5
- package/dist/ui/CheckRow/CheckVisualization/visualizations/DensityGauge.js.map +1 -1
- package/dist/ui/CheckRow/CheckVisualization/visualizations/DistributionBar.d.ts.map +1 -1
- package/dist/ui/CheckRow/CheckVisualization/visualizations/DistributionBar.js +8 -1
- package/dist/ui/CheckRow/CheckVisualization/visualizations/DistributionBar.js.map +1 -1
- package/dist/ui/CheckRow/CheckVisualization/visualizations/DrillDown.d.ts.map +1 -1
- package/dist/ui/CheckRow/CheckVisualization/visualizations/DrillDown.js +11 -4
- package/dist/ui/CheckRow/CheckVisualization/visualizations/DrillDown.js.map +1 -1
- package/dist/ui/CheckRow/CheckVisualization/visualizations/SegmentBar.d.ts.map +1 -1
- package/dist/ui/CheckRow/CheckVisualization/visualizations/SegmentBar.js +7 -1
- package/dist/ui/CheckRow/CheckVisualization/visualizations/SegmentBar.js.map +1 -1
- package/dist/ui/CheckRow/index.d.ts.map +1 -1
- package/dist/ui/CheckRow/index.js +23 -9
- package/dist/ui/CheckRow/index.js.map +1 -1
- package/dist/ui/FilterPills.d.ts.map +1 -1
- package/dist/ui/FilterPills.js +78 -19
- package/dist/ui/FilterPills.js.map +1 -1
- package/dist/ui/KpiCard.d.ts.map +1 -1
- package/dist/ui/KpiCard.js.map +1 -1
- package/dist/ui/Pill.d.ts.map +1 -1
- package/dist/ui/Pill.js +11 -8
- package/dist/ui/Pill.js.map +1 -1
- package/dist/ui/ScoreRing.d.ts.map +1 -1
- package/dist/ui/ScoreRing.js +12 -2
- package/dist/ui/ScoreRing.js.map +1 -1
- package/dist/ui/SectionWrapper.d.ts.map +1 -1
- package/dist/ui/SectionWrapper.js.map +1 -1
- package/dist/ui/SegmentedControl.d.ts +1 -1
- package/dist/ui/SegmentedControl.d.ts.map +1 -1
- package/dist/ui/SegmentedControl.js +49 -33
- package/dist/ui/SegmentedControl.js.map +1 -1
- package/dist/ui/Tooltip.d.ts +1 -1
- package/dist/ui/Tooltip.d.ts.map +1 -1
- package/dist/ui/Tooltip.js +8 -1
- package/dist/ui/Tooltip.js.map +1 -1
- package/dist/utils/config/overrideAdmin.d.ts.map +1 -1
- package/dist/utils/config/overrideAdmin.js +9 -1
- package/dist/utils/config/overrideAdmin.js.map +1 -1
- package/dist/utils/style.d.ts.map +1 -1
- package/dist/utils/style.js.map +1 -1
- package/package.json +9 -7
- package/dist/content/extractContent.d.ts +0 -3
- package/dist/content/extractContent.d.ts.map +0 -1
- package/dist/content/extractContent.js +0 -31
- package/dist/content/extractContent.js.map +0 -1
- package/dist/content/uploads/collect-upload-refs.d.ts +0 -5
- package/dist/content/uploads/collect-upload-refs.d.ts.map +0 -1
- package/dist/content/uploads/collect-upload-refs.js +0 -19
- package/dist/content/uploads/collect-upload-refs.js.map +0 -1
- package/dist/content/uploads/hydrate-values.d.ts +0 -5
- package/dist/content/uploads/hydrate-values.d.ts.map +0 -1
- package/dist/content/uploads/hydrate-values.js +0 -15
- package/dist/content/uploads/hydrate-values.js.map +0 -1
- package/dist/content/uploads/media-resolver.d.ts +0 -7
- package/dist/content/uploads/media-resolver.d.ts.map +0 -1
- package/dist/content/uploads/media-resolver.js.map +0 -1
- package/dist/content/uploads/transform-lexical-uploads.d.ts +0 -5
- package/dist/content/uploads/transform-lexical-uploads.d.ts.map +0 -1
- package/dist/content/uploads/transform-lexical-uploads.js +0 -34
- package/dist/content/uploads/transform-lexical-uploads.js.map +0 -1
- package/dist/content/uploads/transform-upload-values.d.ts +0 -10
- package/dist/content/uploads/transform-upload-values.d.ts.map +0 -1
- package/dist/content/uploads/transform-upload-values.js +0 -108
- package/dist/content/uploads/transform-upload-values.js.map +0 -1
- package/dist/content/uploads/types.d.ts +0 -8
- package/dist/content/uploads/types.d.ts.map +0 -1
- package/dist/content/uploads/types.js +0 -7
- package/dist/content/uploads/types.js.map +0 -1
- package/dist/content/walkValue.d.ts +0 -14
- package/dist/content/walkValue.d.ts.map +0 -1
- package/dist/content/walkValue.js +0 -62
- package/dist/content/walkValue.js.map +0 -1
|
@@ -13,7 +13,9 @@ function sentenceLengthPct(text) {
|
|
|
13
13
|
const sentences = splitSentences(text);
|
|
14
14
|
if (!sentences.length)
|
|
15
15
|
return void 0;
|
|
16
|
-
const long = sentences.filter(
|
|
16
|
+
const long = sentences.filter(
|
|
17
|
+
(s) => s.split(/\s+/u).filter(Boolean).length > MAX_SENTENCE_WORDS
|
|
18
|
+
).length;
|
|
17
19
|
return { pct: Math.round(long / sentences.length * 100) };
|
|
18
20
|
}
|
|
19
21
|
function keyphrasePositions(text, keyphrase) {
|
|
@@ -87,7 +89,10 @@ function extractCheckData(id, paper, researcher) {
|
|
|
87
89
|
return positions.length ? { positions } : void 0;
|
|
88
90
|
}
|
|
89
91
|
case "textParagraphTooLong": {
|
|
90
|
-
const ps = getResearch(
|
|
92
|
+
const ps = getResearch(
|
|
93
|
+
researcher,
|
|
94
|
+
"getParagraphLength"
|
|
95
|
+
);
|
|
91
96
|
if (!ps)
|
|
92
97
|
return void 0;
|
|
93
98
|
const long = ps.filter((p) => p.paragraphLength > MAX_PARAGRAPH_WORDS);
|
|
@@ -106,7 +111,10 @@ function extractCheckData(id, paper, researcher) {
|
|
|
106
111
|
return typeof r?.keyphraseLength === "number" ? { words: r.keyphraseLength } : void 0;
|
|
107
112
|
}
|
|
108
113
|
case "subheadingsKeyword": {
|
|
109
|
-
const r = getResearch(
|
|
114
|
+
const r = getResearch(
|
|
115
|
+
researcher,
|
|
116
|
+
"matchKeywordInSubheadings"
|
|
117
|
+
);
|
|
110
118
|
return r && r.count > 0 ? { matched: r.matches, total: r.count } : void 0;
|
|
111
119
|
}
|
|
112
120
|
case "textCompetingLinks": {
|
|
@@ -122,7 +130,10 @@ function extractCheckData(id, paper, researcher) {
|
|
|
122
130
|
};
|
|
123
131
|
}
|
|
124
132
|
case "passiveVoice": {
|
|
125
|
-
const r = getResearch(
|
|
133
|
+
const r = getResearch(
|
|
134
|
+
researcher,
|
|
135
|
+
"getPassiveVoiceResult"
|
|
136
|
+
);
|
|
126
137
|
if (!r || !r.total)
|
|
127
138
|
return void 0;
|
|
128
139
|
return { pct: Math.round(r.passives.length / r.total * 100) };
|
|
@@ -137,7 +148,10 @@ function extractCheckData(id, paper, researcher) {
|
|
|
137
148
|
} : void 0;
|
|
138
149
|
}
|
|
139
150
|
case "subheadingsTooLong": {
|
|
140
|
-
const r = getResearch(
|
|
151
|
+
const r = getResearch(
|
|
152
|
+
researcher,
|
|
153
|
+
"getSubheadingTextLengths"
|
|
154
|
+
);
|
|
141
155
|
if (!Array.isArray(r))
|
|
142
156
|
return void 0;
|
|
143
157
|
const long = r.filter((s) => s.countLength > 300);
|
|
@@ -1 +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":[]}
|
|
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(\n (s) => s.split(/\\s+/u).filter(Boolean).length > MAX_SENTENCE_WORDS\n ).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(\n id: string,\n paper: PaperLike,\n researcher: YoastResearcher\n): 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\"\n ? { total: s.externalTotal, follow: s.externalDofollow }\n : { 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 }[]>(\n researcher,\n \"getParagraphLength\"\n );\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 }>(\n researcher,\n \"matchKeywordInSubheadings\"\n );\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[] }>(\n researcher,\n \"getPassiveVoiceResult\"\n );\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 }[]>(\n researcher,\n \"getSubheadingTextLengths\"\n );\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":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { LengthProgress } from
|
|
1
|
+
import type { LengthProgress } from "@yoast/search-metadata-previews/build/helpers/progress";
|
|
2
2
|
export declare const AVG_GLYPH_PX = 8.5;
|
|
3
3
|
export declare const TITLE_FALLBACK_MAX_PX = 600;
|
|
4
4
|
export declare function getTitleProgressGuarded(title: string): LengthProgress;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/engine/helpers/title-progress.ts"],"sourcesContent":["import { getTitleProgress } from
|
|
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":[]}
|
|
@@ -1 +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,
|
|
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,CAC5B,KAAK,EAAE,gBAAgB,EAAE,EACzB,aAAa,EAAE,MAAM,EAAE,GACtB,eAAe,CAoBjB"}
|
|
@@ -1 +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[]
|
|
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(\n flags: RawInclusiveFlag[],\n allCategories: string[]\n): 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,eACd,OACA,eACiB;AACjB,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":[]}
|
|
@@ -1 +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,
|
|
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,CAC/B,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,WAAW,GACf,MAAM,GAAG,SAAS,CAOpB"}
|
|
@@ -1 +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
|
|
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(\n id: string,\n status: Status,\n ctx: RecoContext\n): 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,kBACd,IACA,QACA,KACoB;AACpB,MAAI,WAAW;AAAQ,WAAO;AAE9B,QAAM,UAAU,IAAI,EAAE,IAAI,MAAM;AAChC,MAAI;AAAS,WAAO,QAAQ,GAAG;AAE/B,SAAO,QAAQ,MAAM;AACvB;","names":[]}
|
|
@@ -1 +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,
|
|
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 ?? [])\n .map(stripTags)\n .filter(Boolean)\n .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,GACvD,IAAI,SAAS,EACb,OAAO,OAAO,EACd,KAAK,IAAI;AAEZ,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":[]}
|
|
@@ -1 +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,
|
|
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,CAC/B,KAAK,EAAE,YAAY,CAAC,OAAO,KAAK,CAAC,EACjC,SAAS,EAAE,MAAM,GAChB,cAAc,CAahB"}
|
|
@@ -10,7 +10,11 @@ function deriveReadability(paper, keyphrase) {
|
|
|
10
10
|
const researcher = makeResearcher(paper);
|
|
11
11
|
const readRaw = runAssessor(new ContentAssessor(makeResearcher(paper)), ctx, paper);
|
|
12
12
|
const flesch = fleschCheck(researcher, ctx);
|
|
13
|
-
const readChecks = enrich(
|
|
13
|
+
const readChecks = enrich(
|
|
14
|
+
flesch ? [...readRaw, flesch] : readRaw,
|
|
15
|
+
paper,
|
|
16
|
+
researcher
|
|
17
|
+
);
|
|
14
18
|
return toCategory(readChecks);
|
|
15
19
|
}
|
|
16
20
|
function fleschCheck(researcher, ctx) {
|
|
@@ -1 +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
|
|
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(\n paper: InstanceType<typeof Paper>,\n keyphrase: string\n): 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(\n flesch ? [...readRaw, flesch] : readRaw,\n paper as PaperLike,\n researcher\n );\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,kBACd,OACA,WACgB;AAChB,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;AAAA,IACjB,SAAS,CAAC,GAAG,SAAS,MAAM,IAAI;AAAA,IAChC;AAAA,IACA;AAAA,EACF;AAEA,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":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heading-tree.d.ts","sourceRoot":"","sources":["../../../../../src/engine/runAnalysis/services/derive-vitals/heading-tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"heading-tree.d.ts","sourceRoot":"","sources":["../../../../../src/engine/runAnalysis/services/derive-vitals/heading-tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAGZ,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAWD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,gBAAgB,CAkCtE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/engine/runAnalysis/services/derive-vitals/heading-tree.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"sources":["../../../../../src/engine/runAnalysis/services/derive-vitals/heading-tree.ts"],"sourcesContent":["import type {\n HeadingLevel,\n HeadingLevelCount,\n HeadingNode,\n HeadingStructure,\n} from \"../../../types/analysis\";\n\nexport interface FlatHeading {\n level: HeadingLevel;\n text: string;\n}\n\nconst LEVELS: HeadingLevel[] = [1, 2, 3, 4, 5, 6];\n\nfunction countLevels(flat: FlatHeading[]): HeadingLevelCount[] {\n return LEVELS.map((level) => ({\n level,\n count: flat.filter((h) => h.level === level).length,\n }));\n}\n\nexport function buildHeadingTree(flat: FlatHeading[]): HeadingStructure {\n const roots: HeadingNode[] = [];\n const stack: HeadingNode[] = [];\n\n for (const heading of flat) {\n let top = stack.at(-1);\n\n while (top && top.level >= heading.level) {\n stack.pop();\n top = stack.at(-1);\n }\n\n const parent = top;\n const id = parent ? `${parent.id}.${parent.children.length}` : `${roots.length}`;\n\n const node: HeadingNode = {\n id,\n level: heading.level,\n text: heading.text,\n children: [],\n };\n if (parent) {\n parent.children.push(node);\n } else {\n roots.push(node);\n }\n stack.push(node);\n }\n\n return {\n total: flat.length,\n levels: countLevels(flat),\n tree: roots,\n };\n}\n"],"mappings":"AAYA,MAAM,SAAyB,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAEhD,SAAS,YAAY,MAA0C;AAC7D,SAAO,OAAO,IAAI,CAAC,WAAW;AAAA,IAC5B;AAAA,IACA,OAAO,KAAK,OAAO,CAAC,MAAM,EAAE,UAAU,KAAK,EAAE;AAAA,EAC/C,EAAE;AACJ;AAEO,SAAS,iBAAiB,MAAuC;AACtE,QAAM,QAAuB,CAAC;AAC9B,QAAM,QAAuB,CAAC;AAE9B,aAAW,WAAW,MAAM;AAC1B,QAAI,MAAM,MAAM,GAAG,EAAE;AAErB,WAAO,OAAO,IAAI,SAAS,QAAQ,OAAO;AACxC,YAAM,IAAI;AACV,YAAM,MAAM,GAAG,EAAE;AAAA,IACnB;AAEA,UAAM,SAAS;AACf,UAAM,KAAK,SAAS,GAAG,OAAO,EAAE,IAAI,OAAO,SAAS,MAAM,KAAK,GAAG,MAAM,MAAM;AAE9E,UAAM,OAAoB;AAAA,MACxB;AAAA,MACA,OAAO,QAAQ;AAAA,MACf,MAAM,QAAQ;AAAA,MACd,UAAU,CAAC;AAAA,IACb;AACA,QAAI,QAAQ;AACV,aAAO,SAAS,KAAK,IAAI;AAAA,IAC3B,OAAO;AACL,YAAM,KAAK,IAAI;AAAA,IACjB;AACA,UAAM,KAAK,IAAI;AAAA,EACjB;AAEA,SAAO;AAAA,IACL,OAAO,KAAK;AAAA,IACZ,QAAQ,YAAY,IAAI;AAAA,IACxB,MAAM;AAAA,EACR;AACF;","names":[]}
|
|
@@ -1 +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;
|
|
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;AAa5D,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,KAAK,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,CAc/F"}
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import { makeResearcher } from "../../../researcherAdapter";
|
|
2
2
|
import { buildHeadingTree } from "./heading-tree";
|
|
3
3
|
import { extractHeadings } from "./headings";
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
countImages,
|
|
6
|
+
countParagraphs,
|
|
7
|
+
countSentences,
|
|
8
|
+
countVideos,
|
|
9
|
+
countWords,
|
|
10
|
+
estimateReadingTime,
|
|
11
|
+
findProminentWords
|
|
12
|
+
} from "./researches";
|
|
5
13
|
function deriveVitals(paper, keyphrase) {
|
|
6
14
|
const researcher = makeResearcher(paper);
|
|
7
15
|
const words = countWords(researcher);
|
|
@@ -1 +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 { buildHeadingTree } from \"./heading-tree\";\nimport { extractHeadings } from \"./headings\";\nimport {
|
|
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 { buildHeadingTree } from \"./heading-tree\";\nimport { extractHeadings } from \"./headings\";\nimport {\n countImages,\n countParagraphs,\n countSentences,\n countVideos,\n countWords,\n estimateReadingTime,\n findProminentWords,\n} 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 headings: buildHeadingTree(extractHeadings(researcher, paper)),\n };\n}\n"],"mappings":"AACA,SAAS,sBAAsB;AAE/B,SAAS,wBAAwB;AACjC,SAAS,uBAAuB;AAChC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEA,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,IAC5D,UAAU,iBAAiB,gBAAgB,YAAY,KAAK,CAAC;AAAA,EAC/D;AACF;","names":[]}
|
|
@@ -14,6 +14,6 @@ interface FindProminentWordsArgs {
|
|
|
14
14
|
researcher: YoastResearcher;
|
|
15
15
|
keyphrase: string;
|
|
16
16
|
}
|
|
17
|
-
export declare function findProminentWords({ researcher, keyphrase }: FindProminentWordsArgs): ProminentWord[];
|
|
17
|
+
export declare function findProminentWords({ researcher, keyphrase, }: FindProminentWordsArgs): ProminentWord[];
|
|
18
18
|
export {};
|
|
19
19
|
//# sourceMappingURL=researches.d.ts.map
|
|
@@ -1 +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,
|
|
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,CAK1F;AAED,UAAU,sBAAsB;IAC9B,UAAU,EAAE,eAAe,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,UAAU,EACV,SAAS,GACV,EAAE,sBAAsB,GAAG,aAAa,EAAE,CAkB1C"}
|
|
@@ -23,9 +23,15 @@ function countVideos(researcher) {
|
|
|
23
23
|
function estimateReadingTime({ researcher, words }) {
|
|
24
24
|
return getResearch(researcher, "readingTime") ?? Math.max(1, Math.round(words / WORDS_PER_MINUTE));
|
|
25
25
|
}
|
|
26
|
-
function findProminentWords({
|
|
26
|
+
function findProminentWords({
|
|
27
|
+
researcher,
|
|
28
|
+
keyphrase
|
|
29
|
+
}) {
|
|
27
30
|
const keyphraseWords = new Set(keyphrase.toLowerCase().split(/\s+/u).filter(Boolean));
|
|
28
|
-
const insights = getResearch(
|
|
31
|
+
const insights = getResearch(
|
|
32
|
+
researcher,
|
|
33
|
+
"getProminentWordsForInsights"
|
|
34
|
+
) ?? [];
|
|
29
35
|
return insights.slice(0, MAX_PROMINENT_WORDS).map((entry) => {
|
|
30
36
|
const word = entry.getWord?.() ?? String(entry);
|
|
31
37
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/engine/runAnalysis/services/derive-vitals/researches.ts"],"sourcesContent":["import { getResearch } from \"../../../researcherAdapter\";\nimport type { YoastResearcher } from \"../../../researcherAdapter\";\nimport type { ProminentWord } from \"../../../types/analysis\";\n\nconst WORDS_PER_MINUTE = 200;\nconst MAX_PROMINENT_WORDS = 5;\n\nexport function countWords(researcher: YoastResearcher): number {\n const raw = getResearch<number | { count?: number }>(researcher, \"wordCountInText\");\n\n return typeof raw === \"number\" ? raw : (raw?.count ?? 0);\n}\n\nexport function countSentences(researcher: YoastResearcher): number {\n const fromArray = (getResearch<unknown[]>(researcher, \"countSentencesFromText\") ?? []).length;\n\n if (fromArray > 0) return fromArray;\n\n return getResearch<number>(researcher, \"countSentencesFromText\") ?? 0;\n}\n\nexport function countParagraphs(researcher: YoastResearcher): number {\n return (getResearch<unknown[]>(researcher, \"getParagraphs\") ?? []).length;\n}\n\nexport function countImages(researcher: YoastResearcher): number {\n return getResearch<number>(researcher, \"imageCount\") ?? 0;\n}\n\nexport function countVideos(researcher: YoastResearcher): number {\n return getResearch<number>(researcher, \"videoCount\") ?? 0;\n}\n\ninterface EstimateReadingTimeArgs {\n researcher: YoastResearcher;\n words: number;\n}\n\nexport function estimateReadingTime({ researcher, words }: EstimateReadingTimeArgs): number {\n return getResearch<number>(researcher, \"readingTime\")
|
|
1
|
+
{"version":3,"sources":["../../../../../src/engine/runAnalysis/services/derive-vitals/researches.ts"],"sourcesContent":["import { getResearch } from \"../../../researcherAdapter\";\nimport type { YoastResearcher } from \"../../../researcherAdapter\";\nimport type { ProminentWord } from \"../../../types/analysis\";\n\nconst WORDS_PER_MINUTE = 200;\nconst MAX_PROMINENT_WORDS = 5;\n\nexport function countWords(researcher: YoastResearcher): number {\n const raw = getResearch<number | { count?: number }>(researcher, \"wordCountInText\");\n\n return typeof raw === \"number\" ? raw : (raw?.count ?? 0);\n}\n\nexport function countSentences(researcher: YoastResearcher): number {\n const fromArray = (getResearch<unknown[]>(researcher, \"countSentencesFromText\") ?? []).length;\n\n if (fromArray > 0) return fromArray;\n\n return getResearch<number>(researcher, \"countSentencesFromText\") ?? 0;\n}\n\nexport function countParagraphs(researcher: YoastResearcher): number {\n return (getResearch<unknown[]>(researcher, \"getParagraphs\") ?? []).length;\n}\n\nexport function countImages(researcher: YoastResearcher): number {\n return getResearch<number>(researcher, \"imageCount\") ?? 0;\n}\n\nexport function countVideos(researcher: YoastResearcher): number {\n return getResearch<number>(researcher, \"videoCount\") ?? 0;\n}\n\ninterface EstimateReadingTimeArgs {\n researcher: YoastResearcher;\n words: number;\n}\n\nexport function estimateReadingTime({ researcher, words }: EstimateReadingTimeArgs): number {\n return (\n getResearch<number>(researcher, \"readingTime\") ??\n Math.max(1, Math.round(words / WORDS_PER_MINUTE))\n );\n}\n\ninterface FindProminentWordsArgs {\n researcher: YoastResearcher;\n keyphrase: string;\n}\n\nexport function findProminentWords({\n researcher,\n keyphrase,\n}: FindProminentWordsArgs): ProminentWord[] {\n const keyphraseWords = new Set(keyphrase.toLowerCase().split(/\\s+/u).filter(Boolean));\n\n const insights =\n getResearch<{ getWord?: () => string; getOccurrences?: () => number }[]>(\n researcher,\n \"getProminentWordsForInsights\"\n ) ?? [];\n\n return insights.slice(0, MAX_PROMINENT_WORDS).map((entry) => {\n const word = entry.getWord?.() ?? String(entry);\n\n return {\n word,\n count: entry.getOccurrences?.() ?? 0,\n isKeyphrase: keyphraseWords.has(word.toLowerCase()),\n };\n });\n}\n"],"mappings":"AAAA,SAAS,mBAAmB;AAI5B,MAAM,mBAAmB;AACzB,MAAM,sBAAsB;AAErB,SAAS,WAAW,YAAqC;AAC9D,QAAM,MAAM,YAAyC,YAAY,iBAAiB;AAElF,SAAO,OAAO,QAAQ,WAAW,MAAO,KAAK,SAAS;AACxD;AAEO,SAAS,eAAe,YAAqC;AAClE,QAAM,aAAa,YAAuB,YAAY,wBAAwB,KAAK,CAAC,GAAG;AAEvF,MAAI,YAAY;AAAG,WAAO;AAE1B,SAAO,YAAoB,YAAY,wBAAwB,KAAK;AACtE;AAEO,SAAS,gBAAgB,YAAqC;AACnE,UAAQ,YAAuB,YAAY,eAAe,KAAK,CAAC,GAAG;AACrE;AAEO,SAAS,YAAY,YAAqC;AAC/D,SAAO,YAAoB,YAAY,YAAY,KAAK;AAC1D;AAEO,SAAS,YAAY,YAAqC;AAC/D,SAAO,YAAoB,YAAY,YAAY,KAAK;AAC1D;AAOO,SAAS,oBAAoB,EAAE,YAAY,MAAM,GAAoC;AAC1F,SACE,YAAoB,YAAY,aAAa,KAC7C,KAAK,IAAI,GAAG,KAAK,MAAM,QAAQ,gBAAgB,CAAC;AAEpD;AAOO,SAAS,mBAAmB;AAAA,EACjC;AAAA,EACA;AACF,GAA4C;AAC1C,QAAM,iBAAiB,IAAI,IAAI,UAAU,YAAY,EAAE,MAAM,MAAM,EAAE,OAAO,OAAO,CAAC;AAEpF,QAAM,WACJ;AAAA,IACE;AAAA,IACA;AAAA,EACF,KAAK,CAAC;AAER,SAAO,SAAS,MAAM,GAAG,mBAAmB,EAAE,IAAI,CAAC,UAAU;AAC3D,UAAM,OAAO,MAAM,UAAU,KAAK,OAAO,KAAK;AAE9C,WAAO;AAAA,MACL;AAAA,MACA,OAAO,MAAM,iBAAiB,KAAK;AAAA,MACnC,aAAa,eAAe,IAAI,KAAK,YAAY,CAAC;AAAA,IACpD;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enrich.d.ts","sourceRoot":"","sources":["../../../../src/engine/runAnalysis/utils/enrich.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAKnD,wBAAgB,MAAM,
|
|
1
|
+
{"version":3,"file":"enrich.d.ts","sourceRoot":"","sources":["../../../../src/engine/runAnalysis/utils/enrich.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAKnD,wBAAgB,MAAM,CACpB,MAAM,EAAE,WAAW,EAAE,EACrB,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,eAAe,GAC1B,WAAW,EAAE,CAUf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/engine/runAnalysis/utils/enrich.ts"],"sourcesContent":["import type { YoastResearcher } from \"../../researcherAdapter\";\nimport type { CheckResult } from \"../../types/analysis\";\nimport type { PaperLike } from \"../../types/paper\";\n\nimport { extractCheckData } from \"../../extractCheckData\";\nimport { resolveVisualization } from \"../../visualization/resolveVisualization\";\n\nexport function enrich(checks: CheckResult[]
|
|
1
|
+
{"version":3,"sources":["../../../../src/engine/runAnalysis/utils/enrich.ts"],"sourcesContent":["import type { YoastResearcher } from \"../../researcherAdapter\";\nimport type { CheckResult } from \"../../types/analysis\";\nimport type { PaperLike } from \"../../types/paper\";\n\nimport { extractCheckData } from \"../../extractCheckData\";\nimport { resolveVisualization } from \"../../visualization/resolveVisualization\";\n\nexport function enrich(\n checks: CheckResult[],\n paper: PaperLike,\n researcher: YoastResearcher\n): CheckResult[] {\n return checks.map((check) => {\n const data = extractCheckData(check.id, paper, researcher);\n\n return {\n ...check,\n data,\n viz: resolveVisualization(check, data),\n };\n });\n}\n"],"mappings":"AAIA,SAAS,wBAAwB;AACjC,SAAS,4BAA4B;AAE9B,SAAS,OACd,QACA,OACA,YACe;AACf,SAAO,OAAO,IAAI,CAAC,UAAU;AAC3B,UAAM,OAAO,iBAAiB,MAAM,IAAI,OAAO,UAAU;AAEzD,WAAO;AAAA,MACL,GAAG;AAAA,MACH;AAAA,MACA,KAAK,qBAAqB,OAAO,IAAI;AAAA,IACvC;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/engine/visualization/resolveVisualization/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAE3D,eAAO,MAAM,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAU5D,CAAC;AAEF,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/engine/visualization/resolveVisualization/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAE3D,eAAO,MAAM,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAU5D,CAAC;AAEF,eAAO,MAAM,eAAe,ihBAQ1B,CAAC"}
|
|
@@ -9,7 +9,15 @@ const gaugeKeyByCheck = {
|
|
|
9
9
|
passiveVoice: "pct",
|
|
10
10
|
fleschReadingEase: "score"
|
|
11
11
|
};
|
|
12
|
-
const PRESENCE_CHECKS = /* @__PURE__ */ new Set([
|
|
12
|
+
const PRESENCE_CHECKS = /* @__PURE__ */ new Set([
|
|
13
|
+
"introductionKeyword",
|
|
14
|
+
"metaDescriptionKeyword",
|
|
15
|
+
"keyphraseInSEOTitle",
|
|
16
|
+
"slugKeyword",
|
|
17
|
+
"functionWordsInKeyphrase",
|
|
18
|
+
"images",
|
|
19
|
+
"singleH1"
|
|
20
|
+
]);
|
|
13
21
|
export {
|
|
14
22
|
PRESENCE_CHECKS,
|
|
15
23
|
gaugeKeyByCheck
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/engine/visualization/resolveVisualization/constants.ts"],"sourcesContent":["import type { CheckId } from \"../../../constants/checkIds\";\n\nexport const gaugeKeyByCheck: Partial<Record<CheckId, string>> = {\n keyphraseLength: \"words\",\n keyphraseDensity: \"densityPct\",\n metaDescriptionLength: \"chars\",\n titleWidth: \"px\",\n textLength: \"words\",\n textSentenceLength: \"pct\",\n textTransitionWords: \"pct\",\n passiveVoice: \"pct\",\n fleschReadingEase: \"score\",\n};\n\nexport const PRESENCE_CHECKS = new Set<CheckId>([\"introductionKeyword\"
|
|
1
|
+
{"version":3,"sources":["../../../../src/engine/visualization/resolveVisualization/constants.ts"],"sourcesContent":["import type { CheckId } from \"../../../constants/checkIds\";\n\nexport const gaugeKeyByCheck: Partial<Record<CheckId, string>> = {\n keyphraseLength: \"words\",\n keyphraseDensity: \"densityPct\",\n metaDescriptionLength: \"chars\",\n titleWidth: \"px\",\n textLength: \"words\",\n textSentenceLength: \"pct\",\n textTransitionWords: \"pct\",\n passiveVoice: \"pct\",\n fleschReadingEase: \"score\",\n};\n\nexport const PRESENCE_CHECKS = new Set<CheckId>([\n \"introductionKeyword\",\n \"metaDescriptionKeyword\",\n \"keyphraseInSEOTitle\",\n \"slugKeyword\",\n \"functionWordsInKeyphrase\",\n \"images\",\n \"singleH1\",\n]);\n"],"mappings":"AAEO,MAAM,kBAAoD;AAAA,EAC/D,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,EAClB,uBAAuB;AAAA,EACvB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,oBAAoB;AAAA,EACpB,qBAAqB;AAAA,EACrB,cAAc;AAAA,EACd,mBAAmB;AACrB;AAEO,MAAM,kBAAkB,oBAAI,IAAa;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/engine/visualization/resolveVisualization/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAS/D,wBAAgB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/engine/visualization/resolveVisualization/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAS/D,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACxC,aAAa,CA+Bf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/engine/visualization/resolveVisualization/index.ts"],"sourcesContent":["import type { CheckId } from \"../../../constants/checkIds\";\nimport type { CheckResult } from \"../../types/analysis\";\nimport type { Visualization } from \"../../types/visualization\";\nimport { gaugeKeyByCheck, PRESENCE_CHECKS } from \"./constants\";\nimport { resolveDrilldown } from \"./resolves/resolveDrilldown\";\nimport { resolveLinks } from \"./resolves/resolveLinks\";\nimport { resolvePresence } from \"./resolves/resolvePresence\";\nimport { resolveProportionCount } from \"./resolves/resolveProportionCount\";\nimport { resolveValueRange } from \"./resolves/resolveValueRange\";\nimport { readPositions } from \"./utils/readPositions\";\n\nexport function resolveVisualization(check: CheckResult
|
|
1
|
+
{"version":3,"sources":["../../../../src/engine/visualization/resolveVisualization/index.ts"],"sourcesContent":["import type { CheckId } from \"../../../constants/checkIds\";\nimport type { CheckResult } from \"../../types/analysis\";\nimport type { Visualization } from \"../../types/visualization\";\nimport { gaugeKeyByCheck, PRESENCE_CHECKS } from \"./constants\";\nimport { resolveDrilldown } from \"./resolves/resolveDrilldown\";\nimport { resolveLinks } from \"./resolves/resolveLinks\";\nimport { resolvePresence } from \"./resolves/resolvePresence\";\nimport { resolveProportionCount } from \"./resolves/resolveProportionCount\";\nimport { resolveValueRange } from \"./resolves/resolveValueRange\";\nimport { readPositions } from \"./utils/readPositions\";\n\nexport function resolveVisualization(\n check: CheckResult,\n data: Record<string, unknown> | undefined\n): Visualization {\n const id = check.id as CheckId;\n\n if (PRESENCE_CHECKS.has(id)) return resolvePresence();\n if (gaugeKeyByCheck[id]) return resolveValueRange(check, data);\n\n switch (id) {\n case \"subheadingsKeyword\":\n return resolveProportionCount(check, data, false);\n case \"imageKeyphrase\":\n return resolveProportionCount(check, data, true);\n case \"externalLinks\":\n case \"internalLinks\":\n return resolveLinks(check, data);\n case \"textCompetingLinks\":\n return resolveDrilldown(data, \"items\", \"link\", \"links\");\n case \"subheadingsTooLong\":\n return resolveDrilldown(data, \"items\", \"section\", \"sections\");\n case \"textParagraphTooLong\":\n return resolveDrilldown(data, \"paragraphs\", \"paragraph\", \"paragraphs\");\n case \"sentenceBeginnings\":\n return resolveDrilldown(data, \"items\", \"group\", \"groups\");\n case \"keyphraseDistribution\": {\n const positions = readPositions(data);\n if (!positions?.length) return resolvePresence();\n\n return { type: \"distribution\", distribution: { positions } };\n }\n default:\n return resolvePresence();\n }\n}\n"],"mappings":"AAGA,SAAS,iBAAiB,uBAAuB;AACjD,SAAS,wBAAwB;AACjC,SAAS,oBAAoB;AAC7B,SAAS,uBAAuB;AAChC,SAAS,8BAA8B;AACvC,SAAS,yBAAyB;AAClC,SAAS,qBAAqB;AAEvB,SAAS,qBACd,OACA,MACe;AACf,QAAM,KAAK,MAAM;AAEjB,MAAI,gBAAgB,IAAI,EAAE;AAAG,WAAO,gBAAgB;AACpD,MAAI,gBAAgB,EAAE;AAAG,WAAO,kBAAkB,OAAO,IAAI;AAE7D,UAAQ,IAAI;AAAA,IACV,KAAK;AACH,aAAO,uBAAuB,OAAO,MAAM,KAAK;AAAA,IAClD,KAAK;AACH,aAAO,uBAAuB,OAAO,MAAM,IAAI;AAAA,IACjD,KAAK;AAAA,IACL,KAAK;AACH,aAAO,aAAa,OAAO,IAAI;AAAA,IACjC,KAAK;AACH,aAAO,iBAAiB,MAAM,SAAS,QAAQ,OAAO;AAAA,IACxD,KAAK;AACH,aAAO,iBAAiB,MAAM,SAAS,WAAW,UAAU;AAAA,IAC9D,KAAK;AACH,aAAO,iBAAiB,MAAM,cAAc,aAAa,YAAY;AAAA,IACvE,KAAK;AACH,aAAO,iBAAiB,MAAM,SAAS,SAAS,QAAQ;AAAA,IAC1D,KAAK,yBAAyB;AAC5B,YAAM,YAAY,cAAc,IAAI;AACpC,UAAI,CAAC,WAAW;AAAQ,eAAO,gBAAgB;AAE/C,aAAO,EAAE,MAAM,gBAAgB,cAAc,EAAE,UAAU,EAAE;AAAA,IAC7D;AAAA,IACA;AACE,aAAO,gBAAgB;AAAA,EAC3B;AACF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveDrilldown.d.ts","sourceRoot":"","sources":["../../../../../src/engine/visualization/resolveVisualization/resolves/resolveDrilldown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAKlE,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"resolveDrilldown.d.ts","sourceRoot":"","sources":["../../../../../src/engine/visualization/resolveVisualization/resolves/resolveDrilldown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAKlE,eAAO,MAAM,gBAAgB,SACrB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,OACpC,MAAM,OACN,MAAM,QACL,MAAM,KACX,aAWF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/engine/visualization/resolveVisualization/resolves/resolveDrilldown.ts"],"sourcesContent":["import type { Visualization } from \"../../../types/visualization\";\nimport { pluralize } from \"../utils/pluralize\";\nimport { readDrilldownItems } from \"../utils/readDrilldownItems\";\nimport { PRESENCE } from \"./resolvePresence\";\n\nexport const resolveDrilldown = (data: Record<string, unknown> | undefined
|
|
1
|
+
{"version":3,"sources":["../../../../../src/engine/visualization/resolveVisualization/resolves/resolveDrilldown.ts"],"sourcesContent":["import type { Visualization } from \"../../../types/visualization\";\nimport { pluralize } from \"../utils/pluralize\";\nimport { readDrilldownItems } from \"../utils/readDrilldownItems\";\nimport { PRESENCE } from \"./resolvePresence\";\n\nexport const resolveDrilldown = (\n data: Record<string, unknown> | undefined,\n key: string,\n one: string,\n many: string\n): Visualization => {\n const items = readDrilldownItems(data, key);\n if (!items?.length) return PRESENCE;\n\n return {\n type: \"count-drilldown\",\n drilldown: {\n items,\n label: `Show ${pluralize(items.length, one, many)}`,\n },\n };\n};\n"],"mappings":"AACA,SAAS,iBAAiB;AAC1B,SAAS,0BAA0B;AACnC,SAAS,gBAAgB;AAElB,MAAM,mBAAmB,CAC9B,MACA,KACA,KACA,SACkB;AAClB,QAAM,QAAQ,mBAAmB,MAAM,GAAG;AAC1C,MAAI,CAAC,OAAO;AAAQ,WAAO;AAE3B,SAAO;AAAA,IACL,MAAM;AAAA,IACN,WAAW;AAAA,MACT;AAAA,MACA,OAAO,QAAQ,UAAU,MAAM,QAAQ,KAAK,IAAI,CAAC;AAAA,IACnD;AAAA,EACF;AACF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveLinks.d.ts","sourceRoot":"","sources":["../../../../../src/engine/visualization/resolveVisualization/resolves/resolveLinks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAIlE,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"resolveLinks.d.ts","sourceRoot":"","sources":["../../../../../src/engine/visualization/resolveVisualization/resolves/resolveLinks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAIlE,eAAO,MAAM,YAAY,UAChB,WAAW,QACZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,KACxC,aAkBF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/engine/visualization/resolveVisualization/resolves/resolveLinks.ts"],"sourcesContent":["import type { CheckResult } from \"../../../types/analysis\";\nimport type { Visualization } from \"../../../types/visualization\";\nimport { readNumber } from \"../utils/readNumber\";\nimport { PRESENCE } from \"./resolvePresence\";\n\nexport const resolveLinks = (check: CheckResult
|
|
1
|
+
{"version":3,"sources":["../../../../../src/engine/visualization/resolveVisualization/resolves/resolveLinks.ts"],"sourcesContent":["import type { CheckResult } from \"../../../types/analysis\";\nimport type { Visualization } from \"../../../types/visualization\";\nimport { readNumber } from \"../utils/readNumber\";\nimport { PRESENCE } from \"./resolvePresence\";\n\nexport const resolveLinks = (\n check: CheckResult,\n data: Record<string, unknown> | undefined\n): Visualization => {\n const total = readNumber(data, \"total\");\n if (total == null) return PRESENCE;\n\n const follow = readNumber(data, \"follow\") ?? 0;\n\n return {\n type: \"proportion\",\n segment: {\n countLabel: `${follow} / ${total}`,\n filledPct: total ? (follow / total) * 100 : 0,\n filledStatus: check.status === \"good\" ? \"good\" : \"warn\",\n legend: [\n { tone: \"good\", label: `${follow} dofollow` },\n { tone: \"muted\", label: `${total - follow} nofollow` },\n ],\n },\n };\n};\n"],"mappings":"AAEA,SAAS,kBAAkB;AAC3B,SAAS,gBAAgB;AAElB,MAAM,eAAe,CAC1B,OACA,SACkB;AAClB,QAAM,QAAQ,WAAW,MAAM,OAAO;AACtC,MAAI,SAAS;AAAM,WAAO;AAE1B,QAAM,SAAS,WAAW,MAAM,QAAQ,KAAK;AAE7C,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,MACP,YAAY,GAAG,MAAM,MAAM,KAAK;AAAA,MAChC,WAAW,QAAS,SAAS,QAAS,MAAM;AAAA,MAC5C,cAAc,MAAM,WAAW,SAAS,SAAS;AAAA,MACjD,QAAQ;AAAA,QACN,EAAE,MAAM,QAAQ,OAAO,GAAG,MAAM,YAAY;AAAA,QAC5C,EAAE,MAAM,SAAS,OAAO,GAAG,QAAQ,MAAM,YAAY;AAAA,MACvD;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
|
package/dist/engine/visualization/resolveVisualization/resolves/resolveProportionCount.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveProportionCount.d.ts","sourceRoot":"","sources":["../../../../../src/engine/visualization/resolveVisualization/resolves/resolveProportionCount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAIlE,eAAO,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"resolveProportionCount.d.ts","sourceRoot":"","sources":["../../../../../src/engine/visualization/resolveVisualization/resolves/resolveProportionCount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAIlE,eAAO,MAAM,sBAAsB,UAC1B,WAAW,QACZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,aAC9B,OAAO,KACjB,aAcF,CAAC"}
|
package/dist/engine/visualization/resolveVisualization/resolves/resolveProportionCount.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/engine/visualization/resolveVisualization/resolves/resolveProportionCount.ts"],"sourcesContent":["import type { CheckResult } from \"../../../types/analysis\";\nimport type { Visualization } from \"../../../types/visualization\";\nimport { readNumber } from \"../utils/readNumber\";\nimport { PRESENCE } from \"./resolvePresence\";\n\nexport const resolveProportionCount = (check: CheckResult
|
|
1
|
+
{"version":3,"sources":["../../../../../src/engine/visualization/resolveVisualization/resolves/resolveProportionCount.ts"],"sourcesContent":["import type { CheckResult } from \"../../../types/analysis\";\nimport type { Visualization } from \"../../../types/visualization\";\nimport { readNumber } from \"../utils/readNumber\";\nimport { PRESENCE } from \"./resolvePresence\";\n\nexport const resolveProportionCount = (\n check: CheckResult,\n data: Record<string, unknown> | undefined,\n forceWarn: boolean\n): Visualization => {\n const total = readNumber(data, \"total\");\n if (total == null) return PRESENCE;\n\n const matched = readNumber(data, \"matched\") ?? 0;\n\n return {\n type: \"proportion\",\n segment: {\n countLabel: `${matched} / ${total}`,\n filledPct: total ? (matched / total) * 100 : 0,\n filledStatus: forceWarn ? \"warn\" : check.status === \"good\" ? \"good\" : \"warn\",\n },\n };\n};\n"],"mappings":"AAEA,SAAS,kBAAkB;AAC3B,SAAS,gBAAgB;AAElB,MAAM,yBAAyB,CACpC,OACA,MACA,cACkB;AAClB,QAAM,QAAQ,WAAW,MAAM,OAAO;AACtC,MAAI,SAAS;AAAM,WAAO;AAE1B,QAAM,UAAU,WAAW,MAAM,SAAS,KAAK;AAE/C,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,MACP,YAAY,GAAG,OAAO,MAAM,KAAK;AAAA,MACjC,WAAW,QAAS,UAAU,QAAS,MAAM;AAAA,MAC7C,cAAc,YAAY,SAAS,MAAM,WAAW,SAAS,SAAS;AAAA,IACxE;AAAA,EACF;AACF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveValueRange.d.ts","sourceRoot":"","sources":["../../../../../src/engine/visualization/resolveVisualization/resolves/resolveValueRange.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAa,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAQ7E,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"resolveValueRange.d.ts","sourceRoot":"","sources":["../../../../../src/engine/visualization/resolveVisualization/resolves/resolveValueRange.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAa,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAQ7E,eAAO,MAAM,iBAAiB,UACrB,WAAW,QACZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,KACxC,aAkBF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/engine/visualization/resolveVisualization/resolves/resolveValueRange.ts"],"sourcesContent":["import type { CheckId } from \"../../../../constants/checkIds\";\nimport type { CheckResult } from \"../../../types/analysis\";\nimport type { GaugeSpec, Visualization } from \"../../../types/visualization\";\nimport { buildGauge } from \"../../buildGauge\";\nimport { formatGaugeValue } from \"../../formatGaugeValue\";\nimport { GAUGE_SPECS } from \"../../gaugeSpecs\";\nimport { gaugeKeyByCheck } from \"../constants\";\nimport { readNumber } from \"../utils/readNumber\";\nimport { PRESENCE } from \"./resolvePresence\";\n\nexport const resolveValueRange = (check: CheckResult
|
|
1
|
+
{"version":3,"sources":["../../../../../src/engine/visualization/resolveVisualization/resolves/resolveValueRange.ts"],"sourcesContent":["import type { CheckId } from \"../../../../constants/checkIds\";\nimport type { CheckResult } from \"../../../types/analysis\";\nimport type { GaugeSpec, Visualization } from \"../../../types/visualization\";\nimport { buildGauge } from \"../../buildGauge\";\nimport { formatGaugeValue } from \"../../formatGaugeValue\";\nimport { GAUGE_SPECS } from \"../../gaugeSpecs\";\nimport { gaugeKeyByCheck } from \"../constants\";\nimport { readNumber } from \"../utils/readNumber\";\nimport { PRESENCE } from \"./resolvePresence\";\n\nexport const resolveValueRange = (\n check: CheckResult,\n data: Record<string, unknown> | undefined\n): Visualization => {\n const spec: GaugeSpec | undefined = GAUGE_SPECS[check.id as CheckId];\n const markerKey = gaugeKeyByCheck[check.id as CheckId];\n\n if (!spec || !markerKey) return PRESENCE;\n\n if (check.id === \"keyphraseDensity\") {\n const textLength = readNumber(data, \"textLength\");\n if (textLength != null && textLength < 100) return PRESENCE;\n }\n\n const markerValue = readNumber(data, markerKey);\n if (markerValue == null) return PRESENCE;\n\n return {\n type: \"value-range\",\n gauge: buildGauge(spec, markerValue, formatGaugeValue(markerValue, spec.unit)),\n };\n};\n"],"mappings":"AAGA,SAAS,kBAAkB;AAC3B,SAAS,wBAAwB;AACjC,SAAS,mBAAmB;AAC5B,SAAS,uBAAuB;AAChC,SAAS,kBAAkB;AAC3B,SAAS,gBAAgB;AAElB,MAAM,oBAAoB,CAC/B,OACA,SACkB;AAClB,QAAM,OAA8B,YAAY,MAAM,EAAa;AACnE,QAAM,YAAY,gBAAgB,MAAM,EAAa;AAErD,MAAI,CAAC,QAAQ,CAAC;AAAW,WAAO;AAEhC,MAAI,MAAM,OAAO,oBAAoB;AACnC,UAAM,aAAa,WAAW,MAAM,YAAY;AAChD,QAAI,cAAc,QAAQ,aAAa;AAAK,aAAO;AAAA,EACrD;AAEA,QAAM,cAAc,WAAW,MAAM,SAAS;AAC9C,MAAI,eAAe;AAAM,WAAO;AAEhC,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO,WAAW,MAAM,aAAa,iBAAiB,aAAa,KAAK,IAAI,CAAC;AAAA,EAC/E;AACF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pluralize.d.ts","sourceRoot":"","sources":["../../../../../src/engine/visualization/resolveVisualization/utils/pluralize.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,MAAO,MAAM,OAAO,MAAM,QAAQ,MAAM,KAAG,
|
|
1
|
+
{"version":3,"file":"pluralize.d.ts","sourceRoot":"","sources":["../../../../../src/engine/visualization/resolveVisualization/utils/pluralize.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,MAAO,MAAM,OAAO,MAAM,QAAQ,MAAM,KAAG,MACjC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/engine/visualization/resolveVisualization/utils/pluralize.ts"],"sourcesContent":["export const pluralize = (n: number, one: string, many: string): string
|
|
1
|
+
{"version":3,"sources":["../../../../../src/engine/visualization/resolveVisualization/utils/pluralize.ts"],"sourcesContent":["export const pluralize = (n: number, one: string, many: string): string =>\n `${n} ${n === 1 ? one : many}`;\n"],"mappings":"AAAO,MAAM,YAAY,CAAC,GAAW,KAAa,SAChD,GAAG,CAAC,IAAI,MAAM,IAAI,MAAM,IAAI;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readDrilldownItems.d.ts","sourceRoot":"","sources":["../../../../../src/engine/visualization/resolveVisualization/utils/readDrilldownItems.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"readDrilldownItems.d.ts","sourceRoot":"","sources":["../../../../../src/engine/visualization/resolveVisualization/utils/readDrilldownItems.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,SACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,OACpC,MAAM,KACV;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,SAItC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/engine/visualization/resolveVisualization/utils/readDrilldownItems.ts"],"sourcesContent":["export const readDrilldownItems = (data: Record<string, unknown> | undefined
|
|
1
|
+
{"version":3,"sources":["../../../../../src/engine/visualization/resolveVisualization/utils/readDrilldownItems.ts"],"sourcesContent":["export const readDrilldownItems = (\n data: Record<string, unknown> | undefined,\n key: string\n): { left: string; right: string }[] | undefined => {\n const value = data?.[key];\n\n return Array.isArray(value) ? (value as { left: string; right: string }[]) : undefined;\n};\n"],"mappings":"AAAO,MAAM,qBAAqB,CAChC,MACA,QACkD;AAClD,QAAM,QAAQ,OAAO,GAAG;AAExB,SAAO,MAAM,QAAQ,KAAK,IAAK,QAA8C;AAC/E;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readNumber.d.ts","sourceRoot":"","sources":["../../../../../src/engine/visualization/resolveVisualization/utils/readNumber.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"readNumber.d.ts","sourceRoot":"","sources":["../../../../../src/engine/visualization/resolveVisualization/utils/readNumber.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,SACf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,OACpC,MAAM,KACV,MAAM,GAAG,SAIX,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/engine/visualization/resolveVisualization/utils/readNumber.ts"],"sourcesContent":["export const readNumber = (data: Record<string, unknown> | undefined
|
|
1
|
+
{"version":3,"sources":["../../../../../src/engine/visualization/resolveVisualization/utils/readNumber.ts"],"sourcesContent":["export const readNumber = (\n data: Record<string, unknown> | undefined,\n key: string\n): number | undefined => {\n const value = data?.[key];\n\n return typeof value === \"number\" ? value : undefined;\n};\n"],"mappings":"AAAO,MAAM,aAAa,CACxB,MACA,QACuB;AACvB,QAAM,QAAQ,OAAO,GAAG;AAExB,SAAO,OAAO,UAAU,WAAW,QAAQ;AAC7C;","names":[]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { seoPlugin } from "./plugin";
|
|
2
|
-
export type {
|
|
2
|
+
export type { ContentExtractor, SeoPluginConfig, SeoCollectionConfig, SeoFieldPaths, SeoSiteConfig, ContentSelection } from "./types/config";
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export { seoPlugin } from \"./plugin\";\nexport type {
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export { seoPlugin } from \"./plugin\";\nexport type { ContentExtractor, SeoPluginConfig, SeoCollectionConfig, SeoFieldPaths, SeoSiteConfig, ContentSelection } from \"./types/config\";\n"],"mappings":"AAAA,SAAS,iBAAiB;","names":[]}
|
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,MAAM,EAAE,MAAM,SAAS,CAAC;AAG9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAOtD,eAAO,MAAM,SAAS,WACX,eAAe,KAAG,
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,MAAM,EAAE,MAAM,SAAS,CAAC;AAG9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAOtD,eAAO,MAAM,SAAS,WACX,eAAe,KAAG,MAwB1B,CAAC"}
|