axyseo 2.1.22 → 2025.1.0-blog.11
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/build/cjs/const/analysis.js +3 -2
- package/build/cjs/const/analysis.js.map +1 -1
- package/build/cjs/scoring/assessments/assessment.js +2 -1
- package/build/cjs/scoring/assessments/assessment.js.map +1 -1
- package/build/cjs/scoring/assessments/index.js +2 -0
- package/build/cjs/scoring/assessments/index.js.map +1 -1
- package/build/cjs/scoring/assessments/readability/SentenceLengthInTextAssessment.js +0 -2
- package/build/cjs/scoring/assessments/readability/SentenceLengthInTextAssessment.js.map +1 -1
- package/build/cjs/scoring/assessments/seo/ImagesInContentAssessment.js +98 -0
- package/build/cjs/scoring/assessments/seo/ImagesInContentAssessment.js.map +1 -0
- package/build/cjs/scoring/assessors/seoAssessor.js +2 -1
- package/build/cjs/scoring/assessors/seoAssessor.js.map +1 -1
- package/build/esm/const/analysis.js +2 -1
- package/build/esm/const/analysis.js.map +1 -1
- package/build/esm/scoring/assessments/assessment.js +2 -1
- package/build/esm/scoring/assessments/assessment.js.map +1 -1
- package/build/esm/scoring/assessments/index.js +2 -0
- package/build/esm/scoring/assessments/index.js.map +1 -1
- package/build/esm/scoring/assessments/readability/SentenceLengthInTextAssessment.js +0 -2
- package/build/esm/scoring/assessments/readability/SentenceLengthInTextAssessment.js.map +1 -1
- package/build/esm/scoring/assessments/seo/ImagesInContentAssessment.js +90 -0
- package/build/esm/scoring/assessments/seo/ImagesInContentAssessment.js.map +1 -0
- package/build/esm/scoring/assessors/seoAssessor.js +2 -1
- package/build/esm/scoring/assessors/seoAssessor.js.map +1 -1
- package/package.json +5 -3
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.urlsRate = exports.technicalSeoRate = exports.technicalSEOCategory = exports.statusRate = exports.priorityRate = exports.metaTagRate = exports.mainContentRate = exports.linkRecommendRate = exports.keywordRate = exports.faqsRate = exports.contentSEOCategory = exports.URL_LENGTH_ID = exports.URLS_POINTS = exports.TITLE_WIDTH_ID = exports.TITLE_KEYWORD_ID = exports.TEXT_TRANSITION_WORDS_ID = exports.TEXT_SENTENCE_LENGTH_ID = exports.TEXT_PARAGRAPH_TOO_LONG_ID = exports.TEXT_LENGTH_ID = exports.TEXT_IMAGES_ID = exports.TECHNICAL_SEO_POINTS = exports.SUBHEADINGS_KEYWORD_ID = exports.SLUG_KEYWORD_ID = exports.SINGLE_TITLE_ID = exports.SINGLE_H1_ID = exports.SENTENCE_BEGINNINGS_ID = exports.SCHEMA_ID = exports.RELATED_KEYWORDS_ID = exports.RELATED_KEYWORDS_DENSITY_ID = exports.POINT = exports.NUMBER_TITLE_ID = exports.META_TAG_POINTS = exports.META_DESCRIPTION_LENGTH_ID = exports.META_DESCRIPTION_KEYWORD_ID = exports.MEDIA_ID = exports.MAIN_CONTENT_POINTS = exports.LINK_RECOMMEND_POINTS = exports.KEYWORD_POINTS = exports.KEYWORD_FAQs_ASSESSMENT_ID = exports.KEYPHRASE_LENGTH_ID = exports.KEYPHRASE_ID = exports.KEYPHRASE_DENSITY_ID = exports.INTRODUCTION_KEYWORD_ID = exports.INTERNAL_LINKS_ID = exports.IMAGES_ID = exports.FAQs_STRUCTURE_DATA_ID = exports.FAQs_ASSESSMENT_ID = exports.FAQS_POINTS = exports.EXTERNAL_LINKS_ID = exports.CHARACTERS_URL = void 0;
|
|
6
|
+
exports.urlsRate = exports.technicalSeoRate = exports.technicalSEOCategory = exports.statusRate = exports.priorityRate = exports.metaTagRate = exports.mainContentRate = exports.linkRecommendRate = exports.keywordRate = exports.faqsRate = exports.contentSEOCategory = exports.URL_LENGTH_ID = exports.URLS_POINTS = exports.TITLE_WIDTH_ID = exports.TITLE_KEYWORD_ID = exports.TEXT_TRANSITION_WORDS_ID = exports.TEXT_SENTENCE_LENGTH_ID = exports.TEXT_PARAGRAPH_TOO_LONG_ID = exports.TEXT_LENGTH_ID = exports.TEXT_IMAGES_ID = exports.TECHNICAL_SEO_POINTS = exports.SUBHEADINGS_KEYWORD_ID = exports.SLUG_KEYWORD_ID = exports.SINGLE_TITLE_ID = exports.SINGLE_H1_ID = exports.SENTENCE_BEGINNINGS_ID = exports.SCHEMA_ID = exports.RELATED_KEYWORDS_ID = exports.RELATED_KEYWORDS_DENSITY_ID = exports.POINT = exports.NUMBER_TITLE_ID = exports.META_TAG_POINTS = exports.META_DESCRIPTION_LENGTH_ID = exports.META_DESCRIPTION_KEYWORD_ID = exports.MEDIA_ID = exports.MAIN_CONTENT_POINTS = exports.LINK_RECOMMEND_POINTS = exports.KEYWORD_POINTS = exports.KEYWORD_FAQs_ASSESSMENT_ID = exports.KEYPHRASE_LENGTH_ID = exports.KEYPHRASE_ID = exports.KEYPHRASE_DENSITY_ID = exports.INTRODUCTION_KEYWORD_ID = exports.INTERNAL_LINKS_ID = exports.IMAGES_IN_CONTENT_ID = exports.IMAGES_ID = exports.FAQs_STRUCTURE_DATA_ID = exports.FAQs_ASSESSMENT_ID = exports.FAQS_POINTS = exports.EXTERNAL_LINKS_ID = exports.CHARACTERS_URL = void 0;
|
|
7
7
|
const POINT = exports.POINT = 100;
|
|
8
8
|
const keywordRate = exports.keywordRate = {
|
|
9
9
|
rate: 15,
|
|
@@ -76,10 +76,11 @@ const KEYPHRASE_ID = exports.KEYPHRASE_ID = 'keyphrase';
|
|
|
76
76
|
const TEXT_PARAGRAPH_TOO_LONG_ID = exports.TEXT_PARAGRAPH_TOO_LONG_ID = 'textParagraphTooLong';
|
|
77
77
|
const SUBHEADINGS_KEYWORD_ID = exports.SUBHEADINGS_KEYWORD_ID = 'subheadingsKeyword';
|
|
78
78
|
const IMAGES_ID = exports.IMAGES_ID = 'images';
|
|
79
|
+
const IMAGES_IN_CONTENT_ID = exports.IMAGES_IN_CONTENT_ID = 'imagesInContent';
|
|
79
80
|
const NUMBER_TITLE_ID = exports.NUMBER_TITLE_ID = 'numberTitle';
|
|
80
81
|
const META_DESCRIPTION_KEYWORD_ID = exports.META_DESCRIPTION_KEYWORD_ID = 'metaDescriptionKeyword';
|
|
81
82
|
const RELATED_KEYWORDS_ID = exports.RELATED_KEYWORDS_ID = 'relatedKeywords';
|
|
82
83
|
const RELATED_KEYWORDS_DENSITY_ID = exports.RELATED_KEYWORDS_DENSITY_ID = 'relatedKeywordsDensity';
|
|
83
84
|
const MEDIA_ID = exports.MEDIA_ID = 'media';
|
|
84
|
-
const contentSEOCategory = exports.contentSEOCategory = [INTRODUCTION_KEYWORD_ID, FAQs_ASSESSMENT_ID, SENTENCE_BEGINNINGS_ID, TEXT_SENTENCE_LENGTH_ID, TEXT_LENGTH_ID, TITLE_KEYWORD_ID, KEYPHRASE_LENGTH_ID, TEXT_TRANSITION_WORDS_ID, KEYPHRASE_DENSITY_ID, SLUG_KEYWORD_ID, KEYPHRASE_ID, TEXT_PARAGRAPH_TOO_LONG_ID, SUBHEADINGS_KEYWORD_ID, IMAGES_ID, NUMBER_TITLE_ID, META_DESCRIPTION_KEYWORD_ID, KEYWORD_FAQs_ASSESSMENT_ID, RELATED_KEYWORDS_ID, RELATED_KEYWORDS_DENSITY_ID, MEDIA_ID, CHARACTERS_URL, FAQs_STRUCTURE_DATA_ID];
|
|
85
|
+
const contentSEOCategory = exports.contentSEOCategory = [INTRODUCTION_KEYWORD_ID, FAQs_ASSESSMENT_ID, SENTENCE_BEGINNINGS_ID, TEXT_SENTENCE_LENGTH_ID, TEXT_LENGTH_ID, TITLE_KEYWORD_ID, KEYPHRASE_LENGTH_ID, TEXT_TRANSITION_WORDS_ID, KEYPHRASE_DENSITY_ID, SLUG_KEYWORD_ID, KEYPHRASE_ID, TEXT_PARAGRAPH_TOO_LONG_ID, SUBHEADINGS_KEYWORD_ID, IMAGES_ID, IMAGES_IN_CONTENT_ID, NUMBER_TITLE_ID, META_DESCRIPTION_KEYWORD_ID, KEYWORD_FAQs_ASSESSMENT_ID, RELATED_KEYWORDS_ID, RELATED_KEYWORDS_DENSITY_ID, MEDIA_ID, CHARACTERS_URL, FAQs_STRUCTURE_DATA_ID];
|
|
85
86
|
//# sourceMappingURL=analysis.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysis.js","names":["POINT","exports","keywordRate","rate","items","technicalSeoRate","mainContentRate","metaTagRate","linkRecommendRate","faqsRate","urlsRate","priorityRate","high","medium","low","statusRate","good","bad","KEYWORD_POINTS","TECHNICAL_SEO_POINTS","MAIN_CONTENT_POINTS","META_TAG_POINTS","LINK_RECOMMEND_POINTS","FAQS_POINTS","URLS_POINTS","SINGLE_H1_ID","META_DESCRIPTION_LENGTH_ID","URL_LENGTH_ID","INTERNAL_LINKS_ID","EXTERNAL_LINKS_ID","TITLE_WIDTH_ID","TEXT_IMAGES_ID","SCHEMA_ID","SINGLE_TITLE_ID","technicalSEOCategory","INTRODUCTION_KEYWORD_ID","SENTENCE_BEGINNINGS_ID","TEXT_SENTENCE_LENGTH_ID","TEXT_LENGTH_ID","FAQs_ASSESSMENT_ID","FAQs_STRUCTURE_DATA_ID","KEYWORD_FAQs_ASSESSMENT_ID","TITLE_KEYWORD_ID","KEYPHRASE_LENGTH_ID","TEXT_TRANSITION_WORDS_ID","KEYPHRASE_DENSITY_ID","SLUG_KEYWORD_ID","CHARACTERS_URL","KEYPHRASE_ID","TEXT_PARAGRAPH_TOO_LONG_ID","SUBHEADINGS_KEYWORD_ID","IMAGES_ID","NUMBER_TITLE_ID","META_DESCRIPTION_KEYWORD_ID","RELATED_KEYWORDS_ID","RELATED_KEYWORDS_DENSITY_ID","MEDIA_ID","contentSEOCategory"],"sources":["../../../src/const/analysis.js"],"sourcesContent":["export const POINT = 100;\nexport const keywordRate = {\n rate: 15,\n items: 2\n}\nexport const technicalSeoRate = {\n rate: 20,\n items: 3\n}\nexport const mainContentRate = {\n rate: 25,\n items: 7\n}\nexport const metaTagRate = {\n rate: 15,\n items: 4\n}\nexport const linkRecommendRate = {\n rate: 10,\n items: 2\n}\nexport const faqsRate = {\n rate: 10,\n items: 3\n}\nexport const urlsRate = {\n rate: 5,\n items: 3\n}\n\nexport const priorityRate = {\n high: 1,\n medium: 0.75,\n low: 0.5\n};\nexport const statusRate = {\n good: 1,\n bad: 0\n};\nexport const KEYWORD_POINTS = (keywordRate.rate / keywordRate.items);\nexport const TECHNICAL_SEO_POINTS = (technicalSeoRate.rate / technicalSeoRate.items);\nexport const MAIN_CONTENT_POINTS = (mainContentRate.rate / mainContentRate.items);\nexport const META_TAG_POINTS = (metaTagRate.rate / metaTagRate.items);\nexport const LINK_RECOMMEND_POINTS = (linkRecommendRate.rate / linkRecommendRate.items);\nexport const FAQS_POINTS = (faqsRate .rate / faqsRate .items);\nexport const URLS_POINTS = (urlsRate.rate / urlsRate.items);\n\n\n\nexport const SINGLE_H1_ID = 'singleH1';\nexport const META_DESCRIPTION_LENGTH_ID = 'metaDescriptionLength';\nexport const URL_LENGTH_ID = 'urlLength';\nexport const INTERNAL_LINKS_ID = 'internalLinks';\nexport const EXTERNAL_LINKS_ID = 'externalLinks';\nexport const TITLE_WIDTH_ID = 'titleWidth';\nexport const TEXT_IMAGES_ID = 'textImages';\nexport const SCHEMA_ID = 'schema';\nexport const SINGLE_TITLE_ID = 'singleTitle';\n\nexport const technicalSEOCategory = [\n SINGLE_H1_ID,\n META_DESCRIPTION_LENGTH_ID,\n URL_LENGTH_ID,\n INTERNAL_LINKS_ID,\n EXTERNAL_LINKS_ID,\n TITLE_WIDTH_ID,\n TEXT_IMAGES_ID,\n SCHEMA_ID,\n SINGLE_TITLE_ID\n];\n\nexport const INTRODUCTION_KEYWORD_ID = 'introductionKeyword';\nexport const SENTENCE_BEGINNINGS_ID = 'sentenceBeginnings';\nexport const TEXT_SENTENCE_LENGTH_ID = 'textSentenceLength';\nexport const TEXT_LENGTH_ID = 'textLength';\nexport const FAQs_ASSESSMENT_ID = 'faqs';\nexport const FAQs_STRUCTURE_DATA_ID = 'faqsStructuredData';\nexport const KEYWORD_FAQs_ASSESSMENT_ID = 'keywordFaqs';\nexport const TITLE_KEYWORD_ID = 'titleKeyword';\nexport const KEYPHRASE_LENGTH_ID = 'keyphraseLength';\nexport const TEXT_TRANSITION_WORDS_ID = 'textTransitionWords';\nexport const KEYPHRASE_DENSITY_ID = 'keyphraseDensity';\nexport const SLUG_KEYWORD_ID = 'slugKeyword';\nexport const CHARACTERS_URL = 'charactersUrl';\nexport const KEYPHRASE_ID = 'keyphrase';\nexport const TEXT_PARAGRAPH_TOO_LONG_ID = 'textParagraphTooLong';\nexport const SUBHEADINGS_KEYWORD_ID = 'subheadingsKeyword';\nexport const IMAGES_ID = 'images';\nexport const NUMBER_TITLE_ID = 'numberTitle';\nexport const META_DESCRIPTION_KEYWORD_ID = 'metaDescriptionKeyword';\nexport const RELATED_KEYWORDS_ID = 'relatedKeywords';\nexport const RELATED_KEYWORDS_DENSITY_ID = 'relatedKeywordsDensity';\nexport const MEDIA_ID = 'media';\n\nexport const contentSEOCategory = [\n INTRODUCTION_KEYWORD_ID,\n FAQs_ASSESSMENT_ID,\n SENTENCE_BEGINNINGS_ID,\n TEXT_SENTENCE_LENGTH_ID,\n TEXT_LENGTH_ID,\n TITLE_KEYWORD_ID,\n KEYPHRASE_LENGTH_ID,\n TEXT_TRANSITION_WORDS_ID,\n KEYPHRASE_DENSITY_ID,\n SLUG_KEYWORD_ID,\n KEYPHRASE_ID,\n TEXT_PARAGRAPH_TOO_LONG_ID,\n SUBHEADINGS_KEYWORD_ID,\n IMAGES_ID,\n NUMBER_TITLE_ID,\n META_DESCRIPTION_KEYWORD_ID,\n KEYWORD_FAQs_ASSESSMENT_ID,\n RELATED_KEYWORDS_ID,\n RELATED_KEYWORDS_DENSITY_ID,\n MEDIA_ID,\n CHARACTERS_URL,\n FAQs_STRUCTURE_DATA_ID,\n];\n"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"analysis.js","names":["POINT","exports","keywordRate","rate","items","technicalSeoRate","mainContentRate","metaTagRate","linkRecommendRate","faqsRate","urlsRate","priorityRate","high","medium","low","statusRate","good","bad","KEYWORD_POINTS","TECHNICAL_SEO_POINTS","MAIN_CONTENT_POINTS","META_TAG_POINTS","LINK_RECOMMEND_POINTS","FAQS_POINTS","URLS_POINTS","SINGLE_H1_ID","META_DESCRIPTION_LENGTH_ID","URL_LENGTH_ID","INTERNAL_LINKS_ID","EXTERNAL_LINKS_ID","TITLE_WIDTH_ID","TEXT_IMAGES_ID","SCHEMA_ID","SINGLE_TITLE_ID","technicalSEOCategory","INTRODUCTION_KEYWORD_ID","SENTENCE_BEGINNINGS_ID","TEXT_SENTENCE_LENGTH_ID","TEXT_LENGTH_ID","FAQs_ASSESSMENT_ID","FAQs_STRUCTURE_DATA_ID","KEYWORD_FAQs_ASSESSMENT_ID","TITLE_KEYWORD_ID","KEYPHRASE_LENGTH_ID","TEXT_TRANSITION_WORDS_ID","KEYPHRASE_DENSITY_ID","SLUG_KEYWORD_ID","CHARACTERS_URL","KEYPHRASE_ID","TEXT_PARAGRAPH_TOO_LONG_ID","SUBHEADINGS_KEYWORD_ID","IMAGES_ID","IMAGES_IN_CONTENT_ID","NUMBER_TITLE_ID","META_DESCRIPTION_KEYWORD_ID","RELATED_KEYWORDS_ID","RELATED_KEYWORDS_DENSITY_ID","MEDIA_ID","contentSEOCategory"],"sources":["../../../src/const/analysis.js"],"sourcesContent":["export const POINT = 100;\nexport const keywordRate = {\n rate: 15,\n items: 2\n}\nexport const technicalSeoRate = {\n rate: 20,\n items: 3\n}\nexport const mainContentRate = {\n rate: 25,\n items: 7\n}\nexport const metaTagRate = {\n rate: 15,\n items: 4\n}\nexport const linkRecommendRate = {\n rate: 10,\n items: 2\n}\nexport const faqsRate = {\n rate: 10,\n items: 3\n}\nexport const urlsRate = {\n rate: 5,\n items: 3\n}\n\nexport const priorityRate = {\n high: 1,\n medium: 0.75,\n low: 0.5\n};\nexport const statusRate = {\n good: 1,\n bad: 0\n};\nexport const KEYWORD_POINTS = (keywordRate.rate / keywordRate.items);\nexport const TECHNICAL_SEO_POINTS = (technicalSeoRate.rate / technicalSeoRate.items);\nexport const MAIN_CONTENT_POINTS = (mainContentRate.rate / mainContentRate.items);\nexport const META_TAG_POINTS = (metaTagRate.rate / metaTagRate.items);\nexport const LINK_RECOMMEND_POINTS = (linkRecommendRate.rate / linkRecommendRate.items);\nexport const FAQS_POINTS = (faqsRate .rate / faqsRate .items);\nexport const URLS_POINTS = (urlsRate.rate / urlsRate.items);\n\n\n\nexport const SINGLE_H1_ID = 'singleH1';\nexport const META_DESCRIPTION_LENGTH_ID = 'metaDescriptionLength';\nexport const URL_LENGTH_ID = 'urlLength';\nexport const INTERNAL_LINKS_ID = 'internalLinks';\nexport const EXTERNAL_LINKS_ID = 'externalLinks';\nexport const TITLE_WIDTH_ID = 'titleWidth';\nexport const TEXT_IMAGES_ID = 'textImages';\nexport const SCHEMA_ID = 'schema';\nexport const SINGLE_TITLE_ID = 'singleTitle';\n\nexport const technicalSEOCategory = [\n SINGLE_H1_ID,\n META_DESCRIPTION_LENGTH_ID,\n URL_LENGTH_ID,\n INTERNAL_LINKS_ID,\n EXTERNAL_LINKS_ID,\n TITLE_WIDTH_ID,\n TEXT_IMAGES_ID,\n SCHEMA_ID,\n SINGLE_TITLE_ID\n];\n\nexport const INTRODUCTION_KEYWORD_ID = 'introductionKeyword';\nexport const SENTENCE_BEGINNINGS_ID = 'sentenceBeginnings';\nexport const TEXT_SENTENCE_LENGTH_ID = 'textSentenceLength';\nexport const TEXT_LENGTH_ID = 'textLength';\nexport const FAQs_ASSESSMENT_ID = 'faqs';\nexport const FAQs_STRUCTURE_DATA_ID = 'faqsStructuredData';\nexport const KEYWORD_FAQs_ASSESSMENT_ID = 'keywordFaqs';\nexport const TITLE_KEYWORD_ID = 'titleKeyword';\nexport const KEYPHRASE_LENGTH_ID = 'keyphraseLength';\nexport const TEXT_TRANSITION_WORDS_ID = 'textTransitionWords';\nexport const KEYPHRASE_DENSITY_ID = 'keyphraseDensity';\nexport const SLUG_KEYWORD_ID = 'slugKeyword';\nexport const CHARACTERS_URL = 'charactersUrl';\nexport const KEYPHRASE_ID = 'keyphrase';\nexport const TEXT_PARAGRAPH_TOO_LONG_ID = 'textParagraphTooLong';\nexport const SUBHEADINGS_KEYWORD_ID = 'subheadingsKeyword';\nexport const IMAGES_ID = 'images';\nexport const IMAGES_IN_CONTENT_ID = 'imagesInContent';\nexport const NUMBER_TITLE_ID = 'numberTitle';\nexport const META_DESCRIPTION_KEYWORD_ID = 'metaDescriptionKeyword';\nexport const RELATED_KEYWORDS_ID = 'relatedKeywords';\nexport const RELATED_KEYWORDS_DENSITY_ID = 'relatedKeywordsDensity';\nexport const MEDIA_ID = 'media';\n\nexport const contentSEOCategory = [\n INTRODUCTION_KEYWORD_ID,\n FAQs_ASSESSMENT_ID,\n SENTENCE_BEGINNINGS_ID,\n TEXT_SENTENCE_LENGTH_ID,\n TEXT_LENGTH_ID,\n TITLE_KEYWORD_ID,\n KEYPHRASE_LENGTH_ID,\n TEXT_TRANSITION_WORDS_ID,\n KEYPHRASE_DENSITY_ID,\n SLUG_KEYWORD_ID,\n KEYPHRASE_ID,\n TEXT_PARAGRAPH_TOO_LONG_ID,\n SUBHEADINGS_KEYWORD_ID,\n IMAGES_ID,\n IMAGES_IN_CONTENT_ID,\n NUMBER_TITLE_ID,\n META_DESCRIPTION_KEYWORD_ID,\n KEYWORD_FAQs_ASSESSMENT_ID,\n RELATED_KEYWORDS_ID,\n RELATED_KEYWORDS_DENSITY_ID,\n MEDIA_ID,\n CHARACTERS_URL,\n FAQs_STRUCTURE_DATA_ID,\n];\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assessment.js","names":["_languageProcessing","require","_helpers","_analysis","Assessment","getResult","paper","researcher","i18n","isApplicable","hasEnoughContentForAssessment","contentNeededForAssessment","text","getText","removeHtmlBlocks","filterShortcodesFromHTML","_attributes","shortcodes","sanitizeString","length","checkCanSkip","getScore","points","status","statusRate","_default","exports","default"],"sources":["../../../../src/scoring/assessments/assessment.js"],"sourcesContent":["/* eslint-disable no-unused-vars */\nimport {sanitizeString} from '../../languageProcessing';\nimport {filterShortcodesFromHTML, removeHtmlBlocks} from '../../languageProcessing/helpers';\nimport {statusRate} from '../../const/analysis';\n\n/**\n * The base class for an Assessment.\n */\nclass Assessment {\n /**\n * Executes the assessment and return its result.\n *\n * @param {Paper} paper The paper to run this assessment on.\n * @param {Researcher} researcher The researcher used for the assessment.\n * @param i18n\n * @returns {AssessmentResult} The result of the assessment.\n */\n getResult({paper, researcher, i18n}) {\n throw 'The method getResult is not implemented';\n }\n\n /**\n * Checks whether the assessment is applicable.\n *\n * @param {Paper} paper The paper to run this assessment on.\n * @param {Researcher} researcher The researcher used for the assessment.\n *\n * @returns {boolean} Whether the assessment is applicable, defaults to `true`.\n */\n isApplicable(paper, researcher) {\n return true;\n }\n\n /**\n * Tests whether a `Paper` has enough content for assessments to be displayed.\n *\n * @param {Paper} paper The paper to run this assessment on.\n * @param {number} contentNeededForAssessment The minimum length in characters a text must have for assessments to be displayed.\n *\n * @returns {boolean} `true` if the text is of the required length, `false` otherwise.\n */\n hasEnoughContentForAssessment(paper, contentNeededForAssessment = 50) {\n let text = paper.getText();\n text = removeHtmlBlocks(text);\n text = filterShortcodesFromHTML(text, paper._attributes && paper._attributes.shortcodes);\n\n return sanitizeString(text).length >= contentNeededForAssessment;\n }\n\n checkCanSkip(paper) {\n return !this.hasEnoughContentForAssessment;\n }\n\n /**\n *\n * @param points\n * @param status\n * @returns {number}\n */\n getScore(points, status) {\n
|
|
1
|
+
{"version":3,"file":"assessment.js","names":["_languageProcessing","require","_helpers","_analysis","Assessment","getResult","paper","researcher","i18n","isApplicable","hasEnoughContentForAssessment","contentNeededForAssessment","text","getText","removeHtmlBlocks","filterShortcodesFromHTML","_attributes","shortcodes","sanitizeString","length","checkCanSkip","getScore","points","status","rate","statusRate","_default","exports","default"],"sources":["../../../../src/scoring/assessments/assessment.js"],"sourcesContent":["/* eslint-disable no-unused-vars */\nimport {sanitizeString} from '../../languageProcessing';\nimport {filterShortcodesFromHTML, removeHtmlBlocks} from '../../languageProcessing/helpers';\nimport {statusRate} from '../../const/analysis';\n\n/**\n * The base class for an Assessment.\n */\nclass Assessment {\n /**\n * Executes the assessment and return its result.\n *\n * @param {Paper} paper The paper to run this assessment on.\n * @param {Researcher} researcher The researcher used for the assessment.\n * @param i18n\n * @returns {AssessmentResult} The result of the assessment.\n */\n getResult({paper, researcher, i18n}) {\n throw 'The method getResult is not implemented';\n }\n\n /**\n * Checks whether the assessment is applicable.\n *\n * @param {Paper} paper The paper to run this assessment on.\n * @param {Researcher} researcher The researcher used for the assessment.\n *\n * @returns {boolean} Whether the assessment is applicable, defaults to `true`.\n */\n isApplicable(paper, researcher) {\n return true;\n }\n\n /**\n * Tests whether a `Paper` has enough content for assessments to be displayed.\n *\n * @param {Paper} paper The paper to run this assessment on.\n * @param {number} contentNeededForAssessment The minimum length in characters a text must have for assessments to be displayed.\n *\n * @returns {boolean} `true` if the text is of the required length, `false` otherwise.\n */\n hasEnoughContentForAssessment(paper, contentNeededForAssessment = 50) {\n let text = paper.getText();\n text = removeHtmlBlocks(text);\n text = filterShortcodesFromHTML(text, paper._attributes && paper._attributes.shortcodes);\n\n return sanitizeString(text).length >= contentNeededForAssessment;\n }\n\n checkCanSkip(paper) {\n return !this.hasEnoughContentForAssessment;\n }\n\n /**\n *\n * @param points\n * @param status\n * @returns {number}\n */\n getScore(points, status) {\n const rate = statusRate[status] ?? 0;\n return points * rate;\n }\n}\n\n/* eslint-enable no-unused-vars */\n\nexport default Assessment;\n"],"mappings":";;;;;;AACA,IAAAA,mBAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAHA;;AAKA;AACA;AACA;AACA,MAAMG,UAAU,CAAC;EACf;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,SAASA,CAAC;IAACC,KAAK;IAAEC,UAAU;IAAEC;EAAI,CAAC,EAAE;IACnC,MAAM,yCAAyC;EACjD;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,YAAYA,CAACH,KAAK,EAAEC,UAAU,EAAE;IAC9B,OAAO,IAAI;EACb;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEG,6BAA6BA,CAACJ,KAAK,EAAEK,0BAA0B,GAAG,EAAE,EAAE;IACpE,IAAIC,IAAI,GAAGN,KAAK,CAACO,OAAO,CAAC,CAAC;IAC1BD,IAAI,GAAG,IAAAE,yBAAgB,EAACF,IAAI,CAAC;IAC7BA,IAAI,GAAG,IAAAG,iCAAwB,EAACH,IAAI,EAAEN,KAAK,CAACU,WAAW,IAAIV,KAAK,CAACU,WAAW,CAACC,UAAU,CAAC;IAExF,OAAO,IAAAC,kCAAc,EAACN,IAAI,CAAC,CAACO,MAAM,IAAIR,0BAA0B;EAClE;EAEAS,YAAYA,CAACd,KAAK,EAAE;IAClB,OAAO,CAAC,IAAI,CAACI,6BAA6B;EAC5C;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEW,QAAQA,CAACC,MAAM,EAAEC,MAAM,EAAE;IACvB,MAAMC,IAAI,GAAGC,oBAAU,CAACF,MAAM,CAAC,IAAI,CAAC;IACpC,OAAOD,MAAM,GAAGE,IAAI;EACtB;AACF;;AAEA;AAAA,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEexB,UAAU","ignoreList":[]}
|
|
@@ -21,6 +21,7 @@ var _SingleH1Assessment = _interopRequireDefault(require("./seo/SingleH1Assessme
|
|
|
21
21
|
var _SubHeadingsKeywordAssessment = _interopRequireDefault(require("./seo/SubHeadingsKeywordAssessment"));
|
|
22
22
|
var _UrlKeywordAssessment = _interopRequireDefault(require("./seo/UrlKeywordAssessment"));
|
|
23
23
|
var _ImageCountAssessment = _interopRequireDefault(require("./seo/ImageCountAssessment"));
|
|
24
|
+
var _ImagesInContentAssessment = _interopRequireDefault(require("./seo/ImagesInContentAssessment"));
|
|
24
25
|
var _KeyphraseAssessment = _interopRequireDefault(require("./seo/KeyphraseAssessment"));
|
|
25
26
|
var _SingleTitleAssessment = _interopRequireDefault(require("./seo/SingleTitleAssessment"));
|
|
26
27
|
var _UrlLengthAssessment = _interopRequireDefault(require("./seo/UrlLengthAssessment"));
|
|
@@ -49,6 +50,7 @@ const readability = exports.readability = {
|
|
|
49
50
|
// We expose the deprecated assessments for backwards compatibility.
|
|
50
51
|
const seo = exports.seo = {
|
|
51
52
|
ImageCountAssessment: _ImageCountAssessment.default,
|
|
53
|
+
ImagesInContentAssessment: _ImagesInContentAssessment.default,
|
|
52
54
|
NumberInMetaTitleAssessment: _NumberInMetaTitleAssessment.default,
|
|
53
55
|
InternalLinksAssessment: _InternalLinksAssessment.default,
|
|
54
56
|
TextImagesAssessment: _TextImagesAssessment.default,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_TextLengthAssessment","_interopRequireDefault","require","_ParagraphTooLongAssessment","_SentenceBeginningsAssessment","_SentenceLengthInTextAssessment","_TransitionWordsAssessment","_RelatedKeywordsAssessment","_InternalLinksAssessment","_IntroductionKeywordAssessment","_KeywordDensityAssessment","_MetaDescriptionKeywordAssessment","_MetaDescriptionLengthAssessment","_OutboundLinksAssessment","_PageTitleWidthAssessment","_SingleH1Assessment","_SubHeadingsKeywordAssessment","_UrlKeywordAssessment","_ImageCountAssessment","_KeyphraseAssessment","_SingleTitleAssessment","_UrlLengthAssessment","_NumberInMetaTitleAssessment","_TextImagesAssessment","_MetaTitleKeywordAssessment","_SchemaAssessment","_RelatedKeywordsDensityAssessment","_InvalidCharactersInUrl","_FAQsStructureDataAssessment","e","__esModule","default","readability","exports","ParagraphTooLongAssessment","SentenceBeginningsAssessment","SentenceLengthInTextAssessment","TransitionWordsAssessment","RelatedKeywordsAssessment","seo","ImageCountAssessment","NumberInMetaTitleAssessment","InternalLinksAssessment","TextImagesAssessment","MetaTitleKeywordAssessment","IntroductionKeywordAssessment","SingleTitleAssessment","UrlLengthAssessment","KeyphraseDensityAssessment","MetaDescriptionKeywordAssessment","MetaDescriptionLengthAssessment","OutboundLinksAssessment","PageTitleWidthAssessment","SingleH1Assessment","SubheadingsKeywordAssessment","TextLengthAssessment","SlugKeywordAssessment","KeyphraseAssessment","SchemaAssessment","RelatedKeywordsDensityAssessment","InvalidCharactersInUrl","FAQsStructureDataAssessment"],"sources":["../../../../src/scoring/assessments/index.js"],"sourcesContent":["// SEO assessments - import TextLengthAssessment first to avoid initialization errors.\nimport TextLengthAssessment from './seo/TextLengthAssessment';\n\n// Readability assessments.\nimport ParagraphTooLongAssessment from './readability/ParagraphTooLongAssessment';\nimport SentenceBeginningsAssessment from './readability/SentenceBeginningsAssessment';\nimport SentenceLengthInTextAssessment from './readability/SentenceLengthInTextAssessment';\nimport TransitionWordsAssessment from './readability/TransitionWordsAssessment';\nimport RelatedKeywordsAssessment from './readability/RelatedKeywordsAssessment';\n\n// SEO assessments.\nimport InternalLinksAssessment from './seo/InternalLinksAssessment';\nimport IntroductionKeywordAssessment from './seo/IntroductionKeywordAssessment';\nimport KeyphraseDensityAssessment from './seo/KeywordDensityAssessment';\nimport MetaDescriptionKeywordAssessment from './seo/MetaDescriptionKeywordAssessment';\nimport MetaDescriptionLengthAssessment from './seo/MetaDescriptionLengthAssessment';\nimport OutboundLinksAssessment from './seo/OutboundLinksAssessment';\nimport PageTitleWidthAssessment from './seo/PageTitleWidthAssessment';\nimport SingleH1Assessment from './seo/SingleH1Assessment';\nimport SubheadingsKeywordAssessment from './seo/SubHeadingsKeywordAssessment';\nimport SlugKeywordAssessment from './seo/UrlKeywordAssessment';\nimport ImageCountAssessment from './seo/ImageCountAssessment';\nimport KeyphraseAssessment from './seo/KeyphraseAssessment';\nimport SingleTitleAssessment from './seo/SingleTitleAssessment';\nimport UrlLengthAssessment from './seo/UrlLengthAssessment';\nimport NumberInMetaTitleAssessment from './seo/NumberInMetaTitleAssessment';\nimport TextImagesAssessment from './seo/TextImagesAssessment';\nimport MetaTitleKeywordAssessment from './seo/MetaTitleKeywordAssessment';\nimport SchemaAssessment from './seo/SchemaAssessment';\nimport RelatedKeywordsDensityAssessment from './seo/RelatedKeywordsDensityAssessment';\nimport InvalidCharactersInUrl from './seo/InvalidCharactersInUrl';\nimport FAQsStructureDataAssessment from './seo/FAQsStructureDataAssessment';\n\nconst readability = {\n ParagraphTooLongAssessment,\n SentenceBeginningsAssessment,\n SentenceLengthInTextAssessment,\n TransitionWordsAssessment,\n RelatedKeywordsAssessment\n};\n\n// We expose the deprecated assessments for backwards compatibility.\nconst seo = {\n ImageCountAssessment,\n NumberInMetaTitleAssessment,\n InternalLinksAssessment,\n TextImagesAssessment,\n MetaTitleKeywordAssessment,\n IntroductionKeywordAssessment,\n SingleTitleAssessment,\n UrlLengthAssessment,\n KeyphraseDensityAssessment,\n MetaDescriptionKeywordAssessment,\n MetaDescriptionLengthAssessment,\n OutboundLinksAssessment,\n PageTitleWidthAssessment,\n SingleH1Assessment,\n SubheadingsKeywordAssessment,\n TextLengthAssessment,\n SlugKeywordAssessment,\n KeyphraseAssessment,\n SchemaAssessment,\n RelatedKeywordsDensityAssessment,\n InvalidCharactersInUrl,\n FAQsStructureDataAssessment\n};\n\nexport {readability, seo};\n"],"mappings":";;;;;;AACA,IAAAA,qBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAGA,IAAAC,2BAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,6BAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,+BAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,0BAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,0BAAA,GAAAN,sBAAA,CAAAC,OAAA;AAGA,IAAAM,wBAAA,GAAAP,sBAAA,CAAAC,OAAA;AACA,IAAAO,8BAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,yBAAA,GAAAT,sBAAA,CAAAC,OAAA;AACA,IAAAS,iCAAA,GAAAV,sBAAA,CAAAC,OAAA;AACA,IAAAU,gCAAA,GAAAX,sBAAA,CAAAC,OAAA;AACA,IAAAW,wBAAA,GAAAZ,sBAAA,CAAAC,OAAA;AACA,IAAAY,yBAAA,GAAAb,sBAAA,CAAAC,OAAA;AACA,IAAAa,mBAAA,GAAAd,sBAAA,CAAAC,OAAA;AACA,IAAAc,6BAAA,GAAAf,sBAAA,CAAAC,OAAA;AACA,IAAAe,qBAAA,GAAAhB,sBAAA,CAAAC,OAAA;AACA,IAAAgB,qBAAA,GAAAjB,sBAAA,CAAAC,OAAA;AACA,IAAAiB,
|
|
1
|
+
{"version":3,"file":"index.js","names":["_TextLengthAssessment","_interopRequireDefault","require","_ParagraphTooLongAssessment","_SentenceBeginningsAssessment","_SentenceLengthInTextAssessment","_TransitionWordsAssessment","_RelatedKeywordsAssessment","_InternalLinksAssessment","_IntroductionKeywordAssessment","_KeywordDensityAssessment","_MetaDescriptionKeywordAssessment","_MetaDescriptionLengthAssessment","_OutboundLinksAssessment","_PageTitleWidthAssessment","_SingleH1Assessment","_SubHeadingsKeywordAssessment","_UrlKeywordAssessment","_ImageCountAssessment","_ImagesInContentAssessment","_KeyphraseAssessment","_SingleTitleAssessment","_UrlLengthAssessment","_NumberInMetaTitleAssessment","_TextImagesAssessment","_MetaTitleKeywordAssessment","_SchemaAssessment","_RelatedKeywordsDensityAssessment","_InvalidCharactersInUrl","_FAQsStructureDataAssessment","e","__esModule","default","readability","exports","ParagraphTooLongAssessment","SentenceBeginningsAssessment","SentenceLengthInTextAssessment","TransitionWordsAssessment","RelatedKeywordsAssessment","seo","ImageCountAssessment","ImagesInContentAssessment","NumberInMetaTitleAssessment","InternalLinksAssessment","TextImagesAssessment","MetaTitleKeywordAssessment","IntroductionKeywordAssessment","SingleTitleAssessment","UrlLengthAssessment","KeyphraseDensityAssessment","MetaDescriptionKeywordAssessment","MetaDescriptionLengthAssessment","OutboundLinksAssessment","PageTitleWidthAssessment","SingleH1Assessment","SubheadingsKeywordAssessment","TextLengthAssessment","SlugKeywordAssessment","KeyphraseAssessment","SchemaAssessment","RelatedKeywordsDensityAssessment","InvalidCharactersInUrl","FAQsStructureDataAssessment"],"sources":["../../../../src/scoring/assessments/index.js"],"sourcesContent":["// SEO assessments - import TextLengthAssessment first to avoid initialization errors.\nimport TextLengthAssessment from './seo/TextLengthAssessment';\n\n// Readability assessments.\nimport ParagraphTooLongAssessment from './readability/ParagraphTooLongAssessment';\nimport SentenceBeginningsAssessment from './readability/SentenceBeginningsAssessment';\nimport SentenceLengthInTextAssessment from './readability/SentenceLengthInTextAssessment';\nimport TransitionWordsAssessment from './readability/TransitionWordsAssessment';\nimport RelatedKeywordsAssessment from './readability/RelatedKeywordsAssessment';\n\n// SEO assessments.\nimport InternalLinksAssessment from './seo/InternalLinksAssessment';\nimport IntroductionKeywordAssessment from './seo/IntroductionKeywordAssessment';\nimport KeyphraseDensityAssessment from './seo/KeywordDensityAssessment';\nimport MetaDescriptionKeywordAssessment from './seo/MetaDescriptionKeywordAssessment';\nimport MetaDescriptionLengthAssessment from './seo/MetaDescriptionLengthAssessment';\nimport OutboundLinksAssessment from './seo/OutboundLinksAssessment';\nimport PageTitleWidthAssessment from './seo/PageTitleWidthAssessment';\nimport SingleH1Assessment from './seo/SingleH1Assessment';\nimport SubheadingsKeywordAssessment from './seo/SubHeadingsKeywordAssessment';\nimport SlugKeywordAssessment from './seo/UrlKeywordAssessment';\nimport ImageCountAssessment from './seo/ImageCountAssessment';\nimport ImagesInContentAssessment from './seo/ImagesInContentAssessment';\nimport KeyphraseAssessment from './seo/KeyphraseAssessment';\nimport SingleTitleAssessment from './seo/SingleTitleAssessment';\nimport UrlLengthAssessment from './seo/UrlLengthAssessment';\nimport NumberInMetaTitleAssessment from './seo/NumberInMetaTitleAssessment';\nimport TextImagesAssessment from './seo/TextImagesAssessment';\nimport MetaTitleKeywordAssessment from './seo/MetaTitleKeywordAssessment';\nimport SchemaAssessment from './seo/SchemaAssessment';\nimport RelatedKeywordsDensityAssessment from './seo/RelatedKeywordsDensityAssessment';\nimport InvalidCharactersInUrl from './seo/InvalidCharactersInUrl';\nimport FAQsStructureDataAssessment from './seo/FAQsStructureDataAssessment';\n\nconst readability = {\n ParagraphTooLongAssessment,\n SentenceBeginningsAssessment,\n SentenceLengthInTextAssessment,\n TransitionWordsAssessment,\n RelatedKeywordsAssessment\n};\n\n// We expose the deprecated assessments for backwards compatibility.\nconst seo = {\n ImageCountAssessment,\n ImagesInContentAssessment,\n NumberInMetaTitleAssessment,\n InternalLinksAssessment,\n TextImagesAssessment,\n MetaTitleKeywordAssessment,\n IntroductionKeywordAssessment,\n SingleTitleAssessment,\n UrlLengthAssessment,\n KeyphraseDensityAssessment,\n MetaDescriptionKeywordAssessment,\n MetaDescriptionLengthAssessment,\n OutboundLinksAssessment,\n PageTitleWidthAssessment,\n SingleH1Assessment,\n SubheadingsKeywordAssessment,\n TextLengthAssessment,\n SlugKeywordAssessment,\n KeyphraseAssessment,\n SchemaAssessment,\n RelatedKeywordsDensityAssessment,\n InvalidCharactersInUrl,\n FAQsStructureDataAssessment\n};\n\nexport {readability, seo};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -64,7 +64,6 @@ class SentenceLengthInTextAssessment extends _assessment.default {
|
|
|
64
64
|
if (researcher.getConfig('sentenceLength')) {
|
|
65
65
|
this._config = this.getLanguageSpecificConfig(researcher);
|
|
66
66
|
}
|
|
67
|
-
console.log('sentences', sentences);
|
|
68
67
|
const percentage = this.calculatePercentage(sentences);
|
|
69
68
|
const result = this.calculateResult(percentage, hasDescription);
|
|
70
69
|
const assessmentResult = new _AssessmentResult.default({
|
|
@@ -112,7 +111,6 @@ class SentenceLengthInTextAssessment extends _assessment.default {
|
|
|
112
111
|
let percentage = 0;
|
|
113
112
|
if (sentences.length !== 0) {
|
|
114
113
|
const tooLongTotal = this.countTooLongSentences(sentences);
|
|
115
|
-
console.log('tooLongTotal', tooLongTotal);
|
|
116
114
|
percentage = (0, _formatNumber.default)(tooLongTotal / sentences.length * 100);
|
|
117
115
|
}
|
|
118
116
|
return percentage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SentenceLengthInTextAssessment.js","names":["_lodash","require","_assessment","_interopRequireDefault","_checkForTooLongSentences","_formatNumber","_AssessmentResult","_polarisIcons","_analysis","e","__esModule","default","SentenceLengthInTextAssessment","Assessment","constructor","config","isCornerstone","isProduct","defaultConfig","id","TEXT_SENTENCE_LENGTH_ID","priority","docUrl","ctaType","fixPosition","icon","TextBlockIcon","recommendedLength","slightlyTooMany","farTooMany","title","content","improve","bad","good","_config","merge","identifier","getResult","paper","researcher","sentences","getResearch","hasDescription","getConfig","getLanguageSpecificConfig","console","log","percentage","calculatePercentage","result","calculateResult","assessmentResult","AssessmentResult","setScore","score","setStatus","status","isApplicable","currentConfig","languageSpecificConfig","hasOwnProperty","length","tooLongTotal","countTooLongSentences","formatNumber","getScore","MAIN_CONTENT_POINTS","getTooLongSentences","_default","exports"],"sources":["../../../../../src/scoring/assessments/readability/SentenceLengthInTextAssessment.js"],"sourcesContent":["import {merge} from 'lodash';\nimport Assessment from '../assessment';\nimport getTooLongSentences from '../../helpers/assessments/checkForTooLongSentences';\nimport formatNumber from '../../../helpers/formatNumber';\nimport AssessmentResult from '../../../values/AssessmentResult';\nimport {TextBlockIcon} from '@shopify/polaris-icons';\nimport {MAIN_CONTENT_POINTS, TEXT_SENTENCE_LENGTH_ID} from '@axyseo/const/analysis';\n\n/**\n * Represents the assessment that will calculate the length of sentences in the text.\n */\nclass SentenceLengthInTextAssessment extends Assessment {\n /**\n\t * Sets the identifier and the config.\n\t *\n\t * @param {object} config\t\t\tThe scoring configuration that should be used.\n\t * @param {boolean} isCornerstone\tWhether cornerstone configuration should be used.\n\t * @param {boolean} isProduct\t\tWhether product configuration should be used.\n\n\t * @returns {void}\n\t */\n constructor(config = {}, isCornerstone = false, isProduct = false) {\n super();\n\n const defaultConfig = {\n id: TEXT_SENTENCE_LENGTH_ID,\n priority: 'high',\n docUrl:\n 'https://docs.avada.io/seo-suite-help-center/seo-audit/on-page-seo/checklist#sentence-length',\n ctaType: 'fix',\n fixPosition: 'sentenceLength',\n icon: TextBlockIcon,\n recommendedLength: 20,\n slightlyTooMany: 25,\n farTooMany: 30,\n title: 'Text Sentence Length',\n content: {\n improve: '',\n bad:\n 'Sentence too long. Keep sentence length less than 20 words to improve readability and flow.',\n good: 'Sentence length is optimized for readability, less than 20 words.'\n }\n };\n\n this._config = merge(defaultConfig, config);\n this.identifier = TEXT_SENTENCE_LENGTH_ID;\n }\n\n /**\n * Scores the percentage of sentences including more than the recommended number of words.\n *\n * @param {Paper} paper The paper to use for the assessment.\n * @param {Researcher} researcher The researcher used for calling research.\n *\n * @returns {AssessmentResult} The Assessment result.\n */\n getResult({paper, researcher}) {\n const sentences = researcher.getResearch('countSentencesFromText');\n const hasDescription = paper.hasDescription();\n if (researcher.getConfig('sentenceLength')) {\n this._config = this.getLanguageSpecificConfig(researcher);\n }\n console.log('sentences', sentences);\n const percentage = this.calculatePercentage(sentences);\n const result = this.calculateResult(percentage, hasDescription);\n\n const assessmentResult = new AssessmentResult({config: this._config});\n\n assessmentResult.setScore(result.score);\n assessmentResult.setStatus(result.status);\n\n return assessmentResult;\n }\n\n /**\n * Checks whether the paper has text.\n *\n * @param {Paper} paper The paper to use for the assessment.\n *\n * @returns {boolean} True when there is text.\n */\n isApplicable(paper) {\n return true;\n }\n\n /**\n * Check if there is language-specific config, and if so, overwrite the current config with it.\n *\n * @param {Researcher} researcher The researcher to use.\n *\n * @returns {Object} The config that should be used.\n */\n getLanguageSpecificConfig(researcher) {\n const currentConfig = this._config;\n const languageSpecificConfig = researcher.getConfig('sentenceLength');\n\n if (languageSpecificConfig.hasOwnProperty('recommendedLength')) {\n currentConfig.recommendedLength = languageSpecificConfig.recommendedLength;\n }\n\n return currentConfig;\n }\n\n /**\n * Calculates the percentage of sentences that are too long.\n *\n * @param {Array} sentences The sentences to calculate the percentage for.\n * @returns {number} The calculates percentage of too long sentences.\n */\n calculatePercentage(sentences) {\n let percentage = 0;\n\n if (sentences.length !== 0) {\n const tooLongTotal = this.countTooLongSentences(sentences);\n console.log('tooLongTotal', tooLongTotal);\n percentage = formatNumber((tooLongTotal / sentences.length) * 100);\n }\n\n return percentage;\n }\n\n /**\n *\n * @param percentage\n * @param hasDescription\n * @returns {{score: number, status: string}}\n */\n calculateResult(percentage, hasDescription) {\n let status = 'bad';\n if (percentage <= 0 && hasDescription && percentage <= this._config.recommendedLength) {\n status = 'good';\n }\n const score = this.getScore(MAIN_CONTENT_POINTS, status);\n\n this._config.content = {\n improve: '',\n bad: `Sentence too long. Keep sentence length less than ${this._config.recommendedLength} words to improve readability and flow.`,\n good: `Sentences optimized`\n };\n\n return {\n score,\n status\n };\n }\n\n /**\n * Gets the sentences that are qualified as being too long.\n *\n * @param {array} sentences The sentences to filter through.\n * @returns {array} Array with all the sentences considered to be too long.\n */\n getTooLongSentences(sentences) {\n return getTooLongSentences(sentences, this._config.recommendedLength);\n }\n\n /**\n * Get the total amount of sentences that are qualified as being too long.\n *\n * @param {Array} sentences The sentences to filter through.\n * @returns {Number} The amount of sentences that are considered too long.\n */\n countTooLongSentences(sentences) {\n return this.getTooLongSentences(sentences).length;\n }\n}\n\nexport default SentenceLengthInTextAssessment;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"SentenceLengthInTextAssessment.js","names":["_lodash","require","_assessment","_interopRequireDefault","_checkForTooLongSentences","_formatNumber","_AssessmentResult","_polarisIcons","_analysis","e","__esModule","default","SentenceLengthInTextAssessment","Assessment","constructor","config","isCornerstone","isProduct","defaultConfig","id","TEXT_SENTENCE_LENGTH_ID","priority","docUrl","ctaType","fixPosition","icon","TextBlockIcon","recommendedLength","slightlyTooMany","farTooMany","title","content","improve","bad","good","_config","merge","identifier","getResult","paper","researcher","sentences","getResearch","hasDescription","getConfig","getLanguageSpecificConfig","percentage","calculatePercentage","result","calculateResult","assessmentResult","AssessmentResult","setScore","score","setStatus","status","isApplicable","currentConfig","languageSpecificConfig","hasOwnProperty","length","tooLongTotal","countTooLongSentences","formatNumber","getScore","MAIN_CONTENT_POINTS","getTooLongSentences","_default","exports"],"sources":["../../../../../src/scoring/assessments/readability/SentenceLengthInTextAssessment.js"],"sourcesContent":["import {merge} from 'lodash';\nimport Assessment from '../assessment';\nimport getTooLongSentences from '../../helpers/assessments/checkForTooLongSentences';\nimport formatNumber from '../../../helpers/formatNumber';\nimport AssessmentResult from '../../../values/AssessmentResult';\nimport {TextBlockIcon} from '@shopify/polaris-icons';\nimport {MAIN_CONTENT_POINTS, TEXT_SENTENCE_LENGTH_ID} from '@axyseo/const/analysis';\n\n/**\n * Represents the assessment that will calculate the length of sentences in the text.\n */\nclass SentenceLengthInTextAssessment extends Assessment {\n /**\n\t * Sets the identifier and the config.\n\t *\n\t * @param {object} config\t\t\tThe scoring configuration that should be used.\n\t * @param {boolean} isCornerstone\tWhether cornerstone configuration should be used.\n\t * @param {boolean} isProduct\t\tWhether product configuration should be used.\n\n\t * @returns {void}\n\t */\n constructor(config = {}, isCornerstone = false, isProduct = false) {\n super();\n\n const defaultConfig = {\n id: TEXT_SENTENCE_LENGTH_ID,\n priority: 'high',\n docUrl:\n 'https://docs.avada.io/seo-suite-help-center/seo-audit/on-page-seo/checklist#sentence-length',\n ctaType: 'fix',\n fixPosition: 'sentenceLength',\n icon: TextBlockIcon,\n recommendedLength: 20,\n slightlyTooMany: 25,\n farTooMany: 30,\n title: 'Text Sentence Length',\n content: {\n improve: '',\n bad:\n 'Sentence too long. Keep sentence length less than 20 words to improve readability and flow.',\n good: 'Sentence length is optimized for readability, less than 20 words.'\n }\n };\n\n this._config = merge(defaultConfig, config);\n this.identifier = TEXT_SENTENCE_LENGTH_ID;\n }\n\n /**\n * Scores the percentage of sentences including more than the recommended number of words.\n *\n * @param {Paper} paper The paper to use for the assessment.\n * @param {Researcher} researcher The researcher used for calling research.\n *\n * @returns {AssessmentResult} The Assessment result.\n */\n getResult({paper, researcher}) {\n const sentences = researcher.getResearch('countSentencesFromText');\n const hasDescription = paper.hasDescription();\n if (researcher.getConfig('sentenceLength')) {\n this._config = this.getLanguageSpecificConfig(researcher);\n }\n const percentage = this.calculatePercentage(sentences);\n const result = this.calculateResult(percentage, hasDescription);\n\n const assessmentResult = new AssessmentResult({config: this._config});\n\n assessmentResult.setScore(result.score);\n assessmentResult.setStatus(result.status);\n\n return assessmentResult;\n }\n\n /**\n * Checks whether the paper has text.\n *\n * @param {Paper} paper The paper to use for the assessment.\n *\n * @returns {boolean} True when there is text.\n */\n isApplicable(paper) {\n return true;\n }\n\n /**\n * Check if there is language-specific config, and if so, overwrite the current config with it.\n *\n * @param {Researcher} researcher The researcher to use.\n *\n * @returns {Object} The config that should be used.\n */\n getLanguageSpecificConfig(researcher) {\n const currentConfig = this._config;\n const languageSpecificConfig = researcher.getConfig('sentenceLength');\n\n if (languageSpecificConfig.hasOwnProperty('recommendedLength')) {\n currentConfig.recommendedLength = languageSpecificConfig.recommendedLength;\n }\n\n return currentConfig;\n }\n\n /**\n * Calculates the percentage of sentences that are too long.\n *\n * @param {Array} sentences The sentences to calculate the percentage for.\n * @returns {number} The calculates percentage of too long sentences.\n */\n calculatePercentage(sentences) {\n let percentage = 0;\n\n if (sentences.length !== 0) {\n const tooLongTotal = this.countTooLongSentences(sentences);\n percentage = formatNumber((tooLongTotal / sentences.length) * 100);\n }\n\n return percentage;\n }\n\n /**\n *\n * @param percentage\n * @param hasDescription\n * @returns {{score: number, status: string}}\n */\n calculateResult(percentage, hasDescription) {\n let status = 'bad';\n if (percentage <= 0 && hasDescription && percentage <= this._config.recommendedLength) {\n status = 'good';\n }\n const score = this.getScore(MAIN_CONTENT_POINTS, status);\n\n this._config.content = {\n improve: '',\n bad: `Sentence too long. Keep sentence length less than ${this._config.recommendedLength} words to improve readability and flow.`,\n good: `Sentences optimized`\n };\n\n return {\n score,\n status\n };\n }\n\n /**\n * Gets the sentences that are qualified as being too long.\n *\n * @param {array} sentences The sentences to filter through.\n * @returns {array} Array with all the sentences considered to be too long.\n */\n getTooLongSentences(sentences) {\n return getTooLongSentences(sentences, this._config.recommendedLength);\n }\n\n /**\n * Get the total amount of sentences that are qualified as being too long.\n *\n * @param {Array} sentences The sentences to filter through.\n * @returns {Number} The amount of sentences that are considered too long.\n */\n countTooLongSentences(sentences) {\n return this.getTooLongSentences(sentences).length;\n }\n}\n\nexport default SentenceLengthInTextAssessment;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _lodash = require("lodash");
|
|
8
|
+
var _assessment = _interopRequireDefault(require("../assessment"));
|
|
9
|
+
var _AssessmentResult = _interopRequireDefault(require("../../../values/AssessmentResult"));
|
|
10
|
+
var _analysis = require("../../../const/analysis");
|
|
11
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
+
const DEFAULT_TITLE = 'Images in content';
|
|
13
|
+
const DEFAULT_GOOD_TITLE = 'Images included';
|
|
14
|
+
const DEFAULT_GOOD_CONTENT = 'Images are included and well placed.';
|
|
15
|
+
const DEFAULT_BAD_CONTENT = 'This post is text heavy. Add images to break up sections and improve reading experience.';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Represents the assessment that checks if the text has any images present.
|
|
19
|
+
*/
|
|
20
|
+
class ImagesInContentAssessment extends _assessment.default {
|
|
21
|
+
/**
|
|
22
|
+
* Sets the identifier and the config.
|
|
23
|
+
*
|
|
24
|
+
* @param {object} config The configuration to use.
|
|
25
|
+
*
|
|
26
|
+
* @returns {void}
|
|
27
|
+
*/
|
|
28
|
+
constructor(config = {}) {
|
|
29
|
+
super();
|
|
30
|
+
const defaultConfig = {
|
|
31
|
+
id: _analysis.IMAGES_IN_CONTENT_ID,
|
|
32
|
+
docUrl: 'https://docs.avada.io/seo-suite-help-center/seo-audit/on-page-seo/checklist',
|
|
33
|
+
ctaType: 'fix',
|
|
34
|
+
priority: 'high',
|
|
35
|
+
fixPosition: 'description',
|
|
36
|
+
title: DEFAULT_TITLE,
|
|
37
|
+
goodTitle: DEFAULT_GOOD_TITLE,
|
|
38
|
+
content: {
|
|
39
|
+
good: DEFAULT_GOOD_CONTENT,
|
|
40
|
+
improve: '',
|
|
41
|
+
bad: DEFAULT_BAD_CONTENT
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
this.identifier = _analysis.IMAGES_IN_CONTENT_ID;
|
|
45
|
+
this._config = (0, _lodash.merge)(defaultConfig, config);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Execute the Assessment and return a result.
|
|
50
|
+
*
|
|
51
|
+
* @param {Paper} paper The Paper object to assess.
|
|
52
|
+
* @param {Researcher} researcher The Researcher object containing all available researches.
|
|
53
|
+
* @returns {AssessmentResult} The result of the assessment, containing both a score and a descriptive text.
|
|
54
|
+
*/
|
|
55
|
+
getResult({
|
|
56
|
+
paper,
|
|
57
|
+
researcher
|
|
58
|
+
}) {
|
|
59
|
+
this.imageCount = researcher.getResearch('imageCount');
|
|
60
|
+
const assessmentResult = new _AssessmentResult.default({
|
|
61
|
+
config: this._config
|
|
62
|
+
});
|
|
63
|
+
const calculatedResult = this.calculateResult();
|
|
64
|
+
assessmentResult.setScore(calculatedResult.score);
|
|
65
|
+
assessmentResult.setStatus(calculatedResult.status);
|
|
66
|
+
assessmentResult.setTitle(calculatedResult.title);
|
|
67
|
+
return assessmentResult;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Checks whether the paper has text.
|
|
72
|
+
*
|
|
73
|
+
* @param {Paper} paper The paper to use for the assessment.
|
|
74
|
+
*
|
|
75
|
+
* @returns {boolean} True when there is text.
|
|
76
|
+
*/
|
|
77
|
+
isApplicable(paper) {
|
|
78
|
+
return paper.hasText();
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
*
|
|
83
|
+
* @returns {{score: number, status: string, title: string}}
|
|
84
|
+
*/
|
|
85
|
+
calculateResult() {
|
|
86
|
+
let status = !this.imageCount || this.imageCount === 0 ? 'improve' : 'good';
|
|
87
|
+
const score = this.getScore(_analysis.MAIN_CONTENT_POINTS, status);
|
|
88
|
+
const shouldUseTitleForGood = this._config.title !== DEFAULT_TITLE && this._config.goodTitle === DEFAULT_GOOD_TITLE;
|
|
89
|
+
const title = status === 'good' ? shouldUseTitleForGood ? this._config.title : this._config.goodTitle || this._config.title : this._config.title;
|
|
90
|
+
return {
|
|
91
|
+
score,
|
|
92
|
+
status,
|
|
93
|
+
title
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
exports.default = ImagesInContentAssessment;
|
|
98
|
+
//# sourceMappingURL=ImagesInContentAssessment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImagesInContentAssessment.js","names":["_lodash","require","_assessment","_interopRequireDefault","_AssessmentResult","_analysis","e","__esModule","default","DEFAULT_TITLE","DEFAULT_GOOD_TITLE","DEFAULT_GOOD_CONTENT","DEFAULT_BAD_CONTENT","ImagesInContentAssessment","Assessment","constructor","config","defaultConfig","id","IMAGES_IN_CONTENT_ID","docUrl","ctaType","priority","fixPosition","title","goodTitle","content","good","improve","bad","identifier","_config","merge","getResult","paper","researcher","imageCount","getResearch","assessmentResult","AssessmentResult","calculatedResult","calculateResult","setScore","score","setStatus","status","setTitle","isApplicable","hasText","getScore","MAIN_CONTENT_POINTS","shouldUseTitleForGood","exports"],"sources":["../../../../../src/scoring/assessments/seo/ImagesInContentAssessment.js"],"sourcesContent":["import {merge} from 'lodash';\nimport Assessment from '../assessment';\nimport AssessmentResult from '../../../values/AssessmentResult';\nimport {IMAGES_IN_CONTENT_ID, MAIN_CONTENT_POINTS} from '@axyseo/const/analysis';\n\nconst DEFAULT_TITLE = 'Images in content';\nconst DEFAULT_GOOD_TITLE = 'Images included';\nconst DEFAULT_GOOD_CONTENT = 'Images are included and well placed.';\nconst DEFAULT_BAD_CONTENT =\n 'This post is text heavy. Add images to break up sections and improve reading experience.';\n\n/**\n * Represents the assessment that checks if the text has any images present.\n */\nexport default class ImagesInContentAssessment extends Assessment {\n /**\n * Sets the identifier and the config.\n *\n * @param {object} config The configuration to use.\n *\n * @returns {void}\n */\n constructor(config = {}) {\n super();\n\n const defaultConfig = {\n id: IMAGES_IN_CONTENT_ID,\n docUrl: 'https://docs.avada.io/seo-suite-help-center/seo-audit/on-page-seo/checklist',\n ctaType: 'fix',\n priority: 'high',\n fixPosition: 'description',\n title: DEFAULT_TITLE,\n goodTitle: DEFAULT_GOOD_TITLE,\n content: {\n good: DEFAULT_GOOD_CONTENT,\n improve: '',\n bad: DEFAULT_BAD_CONTENT\n }\n };\n\n this.identifier = IMAGES_IN_CONTENT_ID;\n this._config = merge(defaultConfig, config);\n }\n\n /**\n * Execute the Assessment and return a result.\n *\n * @param {Paper} paper The Paper object to assess.\n * @param {Researcher} researcher The Researcher object containing all available researches.\n * @returns {AssessmentResult} The result of the assessment, containing both a score and a descriptive text.\n */\n getResult({paper, researcher}) {\n this.imageCount = researcher.getResearch('imageCount');\n\n const assessmentResult = new AssessmentResult({config: this._config});\n\n const calculatedResult = this.calculateResult();\n\n assessmentResult.setScore(calculatedResult.score);\n assessmentResult.setStatus(calculatedResult.status);\n assessmentResult.setTitle(calculatedResult.title);\n\n return assessmentResult;\n }\n\n /**\n * Checks whether the paper has text.\n *\n * @param {Paper} paper The paper to use for the assessment.\n *\n * @returns {boolean} True when there is text.\n */\n isApplicable(paper) {\n return paper.hasText();\n }\n\n /**\n *\n * @returns {{score: number, status: string, title: string}}\n */\n calculateResult() {\n let status = (!this.imageCount || this.imageCount === 0) ? 'improve' : 'good'\n\n const score = this.getScore(MAIN_CONTENT_POINTS, status);\n const shouldUseTitleForGood =\n this._config.title !== DEFAULT_TITLE && this._config.goodTitle === DEFAULT_GOOD_TITLE;\n const title =\n status === 'good'\n ? shouldUseTitleForGood\n ? this._config.title\n : this._config.goodTitle || this._config.title\n : this._config.title;\n\n return {\n score,\n status,\n title\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -14,6 +14,7 @@ var _KeywordDensityAssessment = _interopRequireDefault(require("../assessments/s
|
|
|
14
14
|
var _InternalLinksAssessment = _interopRequireDefault(require("../assessments/seo/InternalLinksAssessment"));
|
|
15
15
|
var _UrlKeywordAssessment = _interopRequireDefault(require("../assessments/seo/UrlKeywordAssessment"));
|
|
16
16
|
var _ImageCountAssessment = _interopRequireDefault(require("../assessments/seo/ImageCountAssessment"));
|
|
17
|
+
var _ImagesInContentAssessment = _interopRequireDefault(require("../assessments/seo/ImagesInContentAssessment"));
|
|
17
18
|
var _PageTitleWidthAssessment = _interopRequireDefault(require("../assessments/seo/PageTitleWidthAssessment"));
|
|
18
19
|
var _SingleH1Assessment = _interopRequireDefault(require("../assessments/seo/SingleH1Assessment"));
|
|
19
20
|
var _KeyphraseAssessment = _interopRequireDefault(require("../assessments/seo/KeyphraseAssessment"));
|
|
@@ -42,7 +43,7 @@ class SEOAssessor extends _assessor.default {
|
|
|
42
43
|
constructor(researcher, config) {
|
|
43
44
|
super(researcher, config);
|
|
44
45
|
this.type = 'SEOAssessor';
|
|
45
|
-
this._assessments = [new _MetaTitleKeywordAssessment.default(config?.titleKeyword), new _TextImagesAssessment.default(config?.textImages), new _NumberInMetaTitleAssessment.default(config?.numberTitle), new _IntroductionKeywordAssessment.default(config?.introductionKeyword), new _MetaDescriptionKeywordAssessment.default(config?.metaDescriptionKeyword), new _MetaDescriptionLengthAssessment.default(config?.metaDescriptionLength), new _SubHeadingsKeywordAssessment.default(config?.subheadingsKeyword), new _OutboundLinksAssessment.default(config?.externalLinks), new _KeywordDensityAssessment.default(config?.keyphraseDensity), new _ImageCountAssessment.default(config?.media), new _UrlLengthAssessment.default(config?.urlLength), new _SingleTitleAssessment.default(config?.singleTitle), new _KeyphraseAssessment.default(config?.keyphrase), new _InternalLinksAssessment.default(config?.internalLinks), new _PageTitleWidthAssessment.default(config?.titleWidth), new _UrlKeywordAssessment.default(config?.slugKeyword), new _SingleH1Assessment.default(config?.singleH1), new _SchemaAssessment.default(config?.schema), new _FAQsAssessment.default(config?.faqs), new _KeywordFAQsAssessment.default(config?.keywordFaqs), new _FAQsStructureDataAssessment.default(config?.faqsStructuredData), new _InvalidCharactersInUrl.default(config?.charactersUrl), new _RelatedKeywordsDensityAssessment.default(config?.relatedKeywordsDensity), new _TextLengthAssessment.default(config?.textLength)];
|
|
46
|
+
this._assessments = [new _MetaTitleKeywordAssessment.default(config?.titleKeyword), new _TextImagesAssessment.default(config?.textImages), new _NumberInMetaTitleAssessment.default(config?.numberTitle), new _IntroductionKeywordAssessment.default(config?.introductionKeyword), new _MetaDescriptionKeywordAssessment.default(config?.metaDescriptionKeyword), new _MetaDescriptionLengthAssessment.default(config?.metaDescriptionLength), new _SubHeadingsKeywordAssessment.default(config?.subheadingsKeyword), new _OutboundLinksAssessment.default(config?.externalLinks), new _KeywordDensityAssessment.default(config?.keyphraseDensity), new _ImageCountAssessment.default(config?.media), new _ImagesInContentAssessment.default(config?.imagesInContent), new _UrlLengthAssessment.default(config?.urlLength), new _SingleTitleAssessment.default(config?.singleTitle), new _KeyphraseAssessment.default(config?.keyphrase), new _InternalLinksAssessment.default(config?.internalLinks), new _PageTitleWidthAssessment.default(config?.titleWidth), new _UrlKeywordAssessment.default(config?.slugKeyword), new _SingleH1Assessment.default(config?.singleH1), new _SchemaAssessment.default(config?.schema), new _FAQsAssessment.default(config?.faqs), new _KeywordFAQsAssessment.default(config?.keywordFaqs), new _FAQsStructureDataAssessment.default(config?.faqsStructuredData), new _InvalidCharactersInUrl.default(config?.charactersUrl), new _RelatedKeywordsDensityAssessment.default(config?.relatedKeywordsDensity), new _TextLengthAssessment.default(config?.textLength)];
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
49
|
exports.default = SEOAssessor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seoAssessor.js","names":["_assessor","_interopRequireDefault","require","_IntroductionKeywordAssessment","_MetaDescriptionKeywordAssessment","_MetaDescriptionLengthAssessment","_SubHeadingsKeywordAssessment","_OutboundLinksAssessment","_KeywordDensityAssessment","_InternalLinksAssessment","_UrlKeywordAssessment","_ImageCountAssessment","_PageTitleWidthAssessment","_SingleH1Assessment","_KeyphraseAssessment","_SingleTitleAssessment","_UrlLengthAssessment","_NumberInMetaTitleAssessment","_TextImagesAssessment","_TextLengthAssessment","_MetaTitleKeywordAssessment","_SchemaAssessment","_FAQsAssessment","_KeywordFAQsAssessment","_InvalidCharactersInUrl","_FAQsStructureDataAssessment","_RelatedKeywordsDensityAssessment","e","__esModule","default","SEOAssessor","Assessor","constructor","researcher","config","type","_assessments","MetaTitleKeywordAssessment","titleKeyword","TextImagesAssessment","textImages","NumberInMetaTitleAssessment","numberTitle","IntroductionKeywordAssessment","introductionKeyword","MetaDescriptionKeywordAssessment","metaDescriptionKeyword","MetaDescriptionLength","metaDescriptionLength","SubheadingsKeyword","subheadingsKeyword","OutboundLinks","externalLinks","KeyphraseDensityAssessment","keyphraseDensity","ImageCount","media","UrlLengthAssessment","urlLength","SingleTitleAssessment","singleTitle","KeyphraseAssessment","keyphrase","InternalLinksAssessment","internalLinks","TitleWidth","titleWidth","SlugKeywordAssessment","slugKeyword","SingleH1Assessment","singleH1","SchemaAssessment","schema","FAQsAssessment","faqs","KeywordFAQsAssessment","keywordFaqs","FAQsStructureDataAssessment","faqsStructuredData","InvalidCharactersInUrl","charactersUrl","RelatedKeywordsDensityAssessment","relatedKeywordsDensity","TextLengthAssessment","textLength","exports"],"sources":["../../../../src/scoring/assessors/seoAssessor.js"],"sourcesContent":["import Assessor from './assessor';\nimport IntroductionKeywordAssessment from '../assessments/seo/IntroductionKeywordAssessment';\nimport MetaDescriptionKeywordAssessment from '../assessments/seo/MetaDescriptionKeywordAssessment';\nimport MetaDescriptionLength from '../assessments/seo/MetaDescriptionLengthAssessment';\nimport SubheadingsKeyword from '../assessments/seo/SubHeadingsKeywordAssessment';\nimport OutboundLinks from '../assessments/seo/OutboundLinksAssessment';\nimport KeyphraseDensityAssessment from '../assessments/seo/KeywordDensityAssessment';\nimport InternalLinksAssessment from '../assessments/seo/InternalLinksAssessment';\nimport SlugKeywordAssessment from '../assessments/seo/UrlKeywordAssessment';\nimport ImageCount from '../assessments/seo/ImageCountAssessment';\nimport TitleWidth from '../assessments/seo/PageTitleWidthAssessment';\nimport SingleH1Assessment from '../assessments/seo/SingleH1Assessment';\nimport KeyphraseAssessment from '../assessments/seo/KeyphraseAssessment';\nimport SingleTitleAssessment from '../assessments/seo/SingleTitleAssessment';\nimport UrlLengthAssessment from '../assessments/seo/UrlLengthAssessment';\nimport NumberInMetaTitleAssessment from '../assessments/seo/NumberInMetaTitleAssessment';\nimport TextImagesAssessment from '../assessments/seo/TextImagesAssessment';\nimport TextLengthAssessment from '../assessments/seo/TextLengthAssessment';\nimport MetaTitleKeywordAssessment from '../assessments/seo/MetaTitleKeywordAssessment';\nimport SchemaAssessment from '@axyseo/scoring/assessments/seo/SchemaAssessment';\nimport FAQsAssessment from '../assessments/seo/FAQsAssessment';\nimport KeywordFAQsAssessment from '../assessments/seo/KeywordFAQsAssessment';\nimport InvalidCharactersInUrl from '../assessments/seo/InvalidCharactersInUrl';\nimport FAQsStructureDataAssessment from '@axyseo/scoring/assessments/seo/FAQsStructureDataAssessment';\nimport RelatedKeywordsDensityAssessment from '@axyseo/scoring/assessments/seo/RelatedKeywordsDensityAssessment';\n\n/**\n * The SEOAssessor class is used for the general SEO analysis.\n */\nexport default class SEOAssessor extends Assessor {\n /**\n * Creates a new SEOAssessor instance.\n * @param {Researcher}\tresearcher\tThe researcher to use.\n * @param {Object}\t\t[config]\tThe assessor config.\n */\n constructor(researcher, config) {\n super(researcher, config);\n this.type = 'SEOAssessor';\n\n this._assessments = [\n new MetaTitleKeywordAssessment(config?.titleKeyword),\n new TextImagesAssessment(config?.textImages),\n new NumberInMetaTitleAssessment(config?.numberTitle),\n new IntroductionKeywordAssessment(config?.introductionKeyword),\n new MetaDescriptionKeywordAssessment(config?.metaDescriptionKeyword),\n new MetaDescriptionLength(config?.metaDescriptionLength),\n new SubheadingsKeyword(config?.subheadingsKeyword),\n new OutboundLinks(config?.externalLinks),\n new KeyphraseDensityAssessment(config?.keyphraseDensity),\n new ImageCount(config?.media),\n new UrlLengthAssessment(config?.urlLength),\n new SingleTitleAssessment(config?.singleTitle),\n new KeyphraseAssessment(config?.keyphrase),\n new InternalLinksAssessment(config?.internalLinks),\n new TitleWidth(config?.titleWidth),\n new SlugKeywordAssessment(config?.slugKeyword),\n new SingleH1Assessment(config?.singleH1),\n new SchemaAssessment(config?.schema),\n new FAQsAssessment(config?.faqs),\n new KeywordFAQsAssessment(config?.keywordFaqs),\n new FAQsStructureDataAssessment(config?.faqsStructuredData),\n new InvalidCharactersInUrl(config?.charactersUrl),\n new RelatedKeywordsDensityAssessment(config?.relatedKeywordsDensity),\n new TextLengthAssessment(config?.textLength),\n ];\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,8BAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,iCAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,gCAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,6BAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,wBAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,yBAAA,GAAAP,sBAAA,CAAAC,OAAA;AACA,IAAAO,wBAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,qBAAA,GAAAT,sBAAA,CAAAC,OAAA;AACA,IAAAS,qBAAA,GAAAV,sBAAA,CAAAC,OAAA;AACA,IAAAU,
|
|
1
|
+
{"version":3,"file":"seoAssessor.js","names":["_assessor","_interopRequireDefault","require","_IntroductionKeywordAssessment","_MetaDescriptionKeywordAssessment","_MetaDescriptionLengthAssessment","_SubHeadingsKeywordAssessment","_OutboundLinksAssessment","_KeywordDensityAssessment","_InternalLinksAssessment","_UrlKeywordAssessment","_ImageCountAssessment","_ImagesInContentAssessment","_PageTitleWidthAssessment","_SingleH1Assessment","_KeyphraseAssessment","_SingleTitleAssessment","_UrlLengthAssessment","_NumberInMetaTitleAssessment","_TextImagesAssessment","_TextLengthAssessment","_MetaTitleKeywordAssessment","_SchemaAssessment","_FAQsAssessment","_KeywordFAQsAssessment","_InvalidCharactersInUrl","_FAQsStructureDataAssessment","_RelatedKeywordsDensityAssessment","e","__esModule","default","SEOAssessor","Assessor","constructor","researcher","config","type","_assessments","MetaTitleKeywordAssessment","titleKeyword","TextImagesAssessment","textImages","NumberInMetaTitleAssessment","numberTitle","IntroductionKeywordAssessment","introductionKeyword","MetaDescriptionKeywordAssessment","metaDescriptionKeyword","MetaDescriptionLength","metaDescriptionLength","SubheadingsKeyword","subheadingsKeyword","OutboundLinks","externalLinks","KeyphraseDensityAssessment","keyphraseDensity","ImageCount","media","ImagesInContentAssessment","imagesInContent","UrlLengthAssessment","urlLength","SingleTitleAssessment","singleTitle","KeyphraseAssessment","keyphrase","InternalLinksAssessment","internalLinks","TitleWidth","titleWidth","SlugKeywordAssessment","slugKeyword","SingleH1Assessment","singleH1","SchemaAssessment","schema","FAQsAssessment","faqs","KeywordFAQsAssessment","keywordFaqs","FAQsStructureDataAssessment","faqsStructuredData","InvalidCharactersInUrl","charactersUrl","RelatedKeywordsDensityAssessment","relatedKeywordsDensity","TextLengthAssessment","textLength","exports"],"sources":["../../../../src/scoring/assessors/seoAssessor.js"],"sourcesContent":["import Assessor from './assessor';\nimport IntroductionKeywordAssessment from '../assessments/seo/IntroductionKeywordAssessment';\nimport MetaDescriptionKeywordAssessment from '../assessments/seo/MetaDescriptionKeywordAssessment';\nimport MetaDescriptionLength from '../assessments/seo/MetaDescriptionLengthAssessment';\nimport SubheadingsKeyword from '../assessments/seo/SubHeadingsKeywordAssessment';\nimport OutboundLinks from '../assessments/seo/OutboundLinksAssessment';\nimport KeyphraseDensityAssessment from '../assessments/seo/KeywordDensityAssessment';\nimport InternalLinksAssessment from '../assessments/seo/InternalLinksAssessment';\nimport SlugKeywordAssessment from '../assessments/seo/UrlKeywordAssessment';\nimport ImageCount from '../assessments/seo/ImageCountAssessment';\nimport ImagesInContentAssessment from '../assessments/seo/ImagesInContentAssessment';\nimport TitleWidth from '../assessments/seo/PageTitleWidthAssessment';\nimport SingleH1Assessment from '../assessments/seo/SingleH1Assessment';\nimport KeyphraseAssessment from '../assessments/seo/KeyphraseAssessment';\nimport SingleTitleAssessment from '../assessments/seo/SingleTitleAssessment';\nimport UrlLengthAssessment from '../assessments/seo/UrlLengthAssessment';\nimport NumberInMetaTitleAssessment from '../assessments/seo/NumberInMetaTitleAssessment';\nimport TextImagesAssessment from '../assessments/seo/TextImagesAssessment';\nimport TextLengthAssessment from '../assessments/seo/TextLengthAssessment';\nimport MetaTitleKeywordAssessment from '../assessments/seo/MetaTitleKeywordAssessment';\nimport SchemaAssessment from '@axyseo/scoring/assessments/seo/SchemaAssessment';\nimport FAQsAssessment from '../assessments/seo/FAQsAssessment';\nimport KeywordFAQsAssessment from '../assessments/seo/KeywordFAQsAssessment';\nimport InvalidCharactersInUrl from '../assessments/seo/InvalidCharactersInUrl';\nimport FAQsStructureDataAssessment from '@axyseo/scoring/assessments/seo/FAQsStructureDataAssessment';\nimport RelatedKeywordsDensityAssessment from '@axyseo/scoring/assessments/seo/RelatedKeywordsDensityAssessment';\n\n/**\n * The SEOAssessor class is used for the general SEO analysis.\n */\nexport default class SEOAssessor extends Assessor {\n /**\n * Creates a new SEOAssessor instance.\n * @param {Researcher}\tresearcher\tThe researcher to use.\n * @param {Object}\t\t[config]\tThe assessor config.\n */\n constructor(researcher, config) {\n super(researcher, config);\n this.type = 'SEOAssessor';\n\n this._assessments = [\n new MetaTitleKeywordAssessment(config?.titleKeyword),\n new TextImagesAssessment(config?.textImages),\n new NumberInMetaTitleAssessment(config?.numberTitle),\n new IntroductionKeywordAssessment(config?.introductionKeyword),\n new MetaDescriptionKeywordAssessment(config?.metaDescriptionKeyword),\n new MetaDescriptionLength(config?.metaDescriptionLength),\n new SubheadingsKeyword(config?.subheadingsKeyword),\n new OutboundLinks(config?.externalLinks),\n new KeyphraseDensityAssessment(config?.keyphraseDensity),\n new ImageCount(config?.media),\n new ImagesInContentAssessment(config?.imagesInContent),\n new UrlLengthAssessment(config?.urlLength),\n new SingleTitleAssessment(config?.singleTitle),\n new KeyphraseAssessment(config?.keyphrase),\n new InternalLinksAssessment(config?.internalLinks),\n new TitleWidth(config?.titleWidth),\n new SlugKeywordAssessment(config?.slugKeyword),\n new SingleH1Assessment(config?.singleH1),\n new SchemaAssessment(config?.schema),\n new FAQsAssessment(config?.faqs),\n new KeywordFAQsAssessment(config?.keywordFaqs),\n new FAQsStructureDataAssessment(config?.faqsStructuredData),\n new InvalidCharactersInUrl(config?.charactersUrl),\n new RelatedKeywordsDensityAssessment(config?.relatedKeywordsDensity),\n new TextLengthAssessment(config?.textLength),\n ];\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -70,10 +70,11 @@ export const KEYPHRASE_ID = 'keyphrase';
|
|
|
70
70
|
export const TEXT_PARAGRAPH_TOO_LONG_ID = 'textParagraphTooLong';
|
|
71
71
|
export const SUBHEADINGS_KEYWORD_ID = 'subheadingsKeyword';
|
|
72
72
|
export const IMAGES_ID = 'images';
|
|
73
|
+
export const IMAGES_IN_CONTENT_ID = 'imagesInContent';
|
|
73
74
|
export const NUMBER_TITLE_ID = 'numberTitle';
|
|
74
75
|
export const META_DESCRIPTION_KEYWORD_ID = 'metaDescriptionKeyword';
|
|
75
76
|
export const RELATED_KEYWORDS_ID = 'relatedKeywords';
|
|
76
77
|
export const RELATED_KEYWORDS_DENSITY_ID = 'relatedKeywordsDensity';
|
|
77
78
|
export const MEDIA_ID = 'media';
|
|
78
|
-
export const contentSEOCategory = [INTRODUCTION_KEYWORD_ID, FAQs_ASSESSMENT_ID, SENTENCE_BEGINNINGS_ID, TEXT_SENTENCE_LENGTH_ID, TEXT_LENGTH_ID, TITLE_KEYWORD_ID, KEYPHRASE_LENGTH_ID, TEXT_TRANSITION_WORDS_ID, KEYPHRASE_DENSITY_ID, SLUG_KEYWORD_ID, KEYPHRASE_ID, TEXT_PARAGRAPH_TOO_LONG_ID, SUBHEADINGS_KEYWORD_ID, IMAGES_ID, NUMBER_TITLE_ID, META_DESCRIPTION_KEYWORD_ID, KEYWORD_FAQs_ASSESSMENT_ID, RELATED_KEYWORDS_ID, RELATED_KEYWORDS_DENSITY_ID, MEDIA_ID, CHARACTERS_URL, FAQs_STRUCTURE_DATA_ID];
|
|
79
|
+
export const contentSEOCategory = [INTRODUCTION_KEYWORD_ID, FAQs_ASSESSMENT_ID, SENTENCE_BEGINNINGS_ID, TEXT_SENTENCE_LENGTH_ID, TEXT_LENGTH_ID, TITLE_KEYWORD_ID, KEYPHRASE_LENGTH_ID, TEXT_TRANSITION_WORDS_ID, KEYPHRASE_DENSITY_ID, SLUG_KEYWORD_ID, KEYPHRASE_ID, TEXT_PARAGRAPH_TOO_LONG_ID, SUBHEADINGS_KEYWORD_ID, IMAGES_ID, IMAGES_IN_CONTENT_ID, NUMBER_TITLE_ID, META_DESCRIPTION_KEYWORD_ID, KEYWORD_FAQs_ASSESSMENT_ID, RELATED_KEYWORDS_ID, RELATED_KEYWORDS_DENSITY_ID, MEDIA_ID, CHARACTERS_URL, FAQs_STRUCTURE_DATA_ID];
|
|
79
80
|
//# sourceMappingURL=analysis.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysis.js","names":["POINT","keywordRate","rate","items","technicalSeoRate","mainContentRate","metaTagRate","linkRecommendRate","faqsRate","urlsRate","priorityRate","high","medium","low","statusRate","good","bad","KEYWORD_POINTS","TECHNICAL_SEO_POINTS","MAIN_CONTENT_POINTS","META_TAG_POINTS","LINK_RECOMMEND_POINTS","FAQS_POINTS","URLS_POINTS","SINGLE_H1_ID","META_DESCRIPTION_LENGTH_ID","URL_LENGTH_ID","INTERNAL_LINKS_ID","EXTERNAL_LINKS_ID","TITLE_WIDTH_ID","TEXT_IMAGES_ID","SCHEMA_ID","SINGLE_TITLE_ID","technicalSEOCategory","INTRODUCTION_KEYWORD_ID","SENTENCE_BEGINNINGS_ID","TEXT_SENTENCE_LENGTH_ID","TEXT_LENGTH_ID","FAQs_ASSESSMENT_ID","FAQs_STRUCTURE_DATA_ID","KEYWORD_FAQs_ASSESSMENT_ID","TITLE_KEYWORD_ID","KEYPHRASE_LENGTH_ID","TEXT_TRANSITION_WORDS_ID","KEYPHRASE_DENSITY_ID","SLUG_KEYWORD_ID","CHARACTERS_URL","KEYPHRASE_ID","TEXT_PARAGRAPH_TOO_LONG_ID","SUBHEADINGS_KEYWORD_ID","IMAGES_ID","NUMBER_TITLE_ID","META_DESCRIPTION_KEYWORD_ID","RELATED_KEYWORDS_ID","RELATED_KEYWORDS_DENSITY_ID","MEDIA_ID","contentSEOCategory"],"sources":["../../../src/const/analysis.js"],"sourcesContent":["export const POINT = 100;\nexport const keywordRate = {\n rate: 15,\n items: 2\n}\nexport const technicalSeoRate = {\n rate: 20,\n items: 3\n}\nexport const mainContentRate = {\n rate: 25,\n items: 7\n}\nexport const metaTagRate = {\n rate: 15,\n items: 4\n}\nexport const linkRecommendRate = {\n rate: 10,\n items: 2\n}\nexport const faqsRate = {\n rate: 10,\n items: 3\n}\nexport const urlsRate = {\n rate: 5,\n items: 3\n}\n\nexport const priorityRate = {\n high: 1,\n medium: 0.75,\n low: 0.5\n};\nexport const statusRate = {\n good: 1,\n bad: 0\n};\nexport const KEYWORD_POINTS = (keywordRate.rate / keywordRate.items);\nexport const TECHNICAL_SEO_POINTS = (technicalSeoRate.rate / technicalSeoRate.items);\nexport const MAIN_CONTENT_POINTS = (mainContentRate.rate / mainContentRate.items);\nexport const META_TAG_POINTS = (metaTagRate.rate / metaTagRate.items);\nexport const LINK_RECOMMEND_POINTS = (linkRecommendRate.rate / linkRecommendRate.items);\nexport const FAQS_POINTS = (faqsRate .rate / faqsRate .items);\nexport const URLS_POINTS = (urlsRate.rate / urlsRate.items);\n\n\n\nexport const SINGLE_H1_ID = 'singleH1';\nexport const META_DESCRIPTION_LENGTH_ID = 'metaDescriptionLength';\nexport const URL_LENGTH_ID = 'urlLength';\nexport const INTERNAL_LINKS_ID = 'internalLinks';\nexport const EXTERNAL_LINKS_ID = 'externalLinks';\nexport const TITLE_WIDTH_ID = 'titleWidth';\nexport const TEXT_IMAGES_ID = 'textImages';\nexport const SCHEMA_ID = 'schema';\nexport const SINGLE_TITLE_ID = 'singleTitle';\n\nexport const technicalSEOCategory = [\n SINGLE_H1_ID,\n META_DESCRIPTION_LENGTH_ID,\n URL_LENGTH_ID,\n INTERNAL_LINKS_ID,\n EXTERNAL_LINKS_ID,\n TITLE_WIDTH_ID,\n TEXT_IMAGES_ID,\n SCHEMA_ID,\n SINGLE_TITLE_ID\n];\n\nexport const INTRODUCTION_KEYWORD_ID = 'introductionKeyword';\nexport const SENTENCE_BEGINNINGS_ID = 'sentenceBeginnings';\nexport const TEXT_SENTENCE_LENGTH_ID = 'textSentenceLength';\nexport const TEXT_LENGTH_ID = 'textLength';\nexport const FAQs_ASSESSMENT_ID = 'faqs';\nexport const FAQs_STRUCTURE_DATA_ID = 'faqsStructuredData';\nexport const KEYWORD_FAQs_ASSESSMENT_ID = 'keywordFaqs';\nexport const TITLE_KEYWORD_ID = 'titleKeyword';\nexport const KEYPHRASE_LENGTH_ID = 'keyphraseLength';\nexport const TEXT_TRANSITION_WORDS_ID = 'textTransitionWords';\nexport const KEYPHRASE_DENSITY_ID = 'keyphraseDensity';\nexport const SLUG_KEYWORD_ID = 'slugKeyword';\nexport const CHARACTERS_URL = 'charactersUrl';\nexport const KEYPHRASE_ID = 'keyphrase';\nexport const TEXT_PARAGRAPH_TOO_LONG_ID = 'textParagraphTooLong';\nexport const SUBHEADINGS_KEYWORD_ID = 'subheadingsKeyword';\nexport const IMAGES_ID = 'images';\nexport const NUMBER_TITLE_ID = 'numberTitle';\nexport const META_DESCRIPTION_KEYWORD_ID = 'metaDescriptionKeyword';\nexport const RELATED_KEYWORDS_ID = 'relatedKeywords';\nexport const RELATED_KEYWORDS_DENSITY_ID = 'relatedKeywordsDensity';\nexport const MEDIA_ID = 'media';\n\nexport const contentSEOCategory = [\n INTRODUCTION_KEYWORD_ID,\n FAQs_ASSESSMENT_ID,\n SENTENCE_BEGINNINGS_ID,\n TEXT_SENTENCE_LENGTH_ID,\n TEXT_LENGTH_ID,\n TITLE_KEYWORD_ID,\n KEYPHRASE_LENGTH_ID,\n TEXT_TRANSITION_WORDS_ID,\n KEYPHRASE_DENSITY_ID,\n SLUG_KEYWORD_ID,\n KEYPHRASE_ID,\n TEXT_PARAGRAPH_TOO_LONG_ID,\n SUBHEADINGS_KEYWORD_ID,\n IMAGES_ID,\n NUMBER_TITLE_ID,\n META_DESCRIPTION_KEYWORD_ID,\n KEYWORD_FAQs_ASSESSMENT_ID,\n RELATED_KEYWORDS_ID,\n RELATED_KEYWORDS_DENSITY_ID,\n MEDIA_ID,\n CHARACTERS_URL,\n FAQs_STRUCTURE_DATA_ID,\n];\n"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"analysis.js","names":["POINT","keywordRate","rate","items","technicalSeoRate","mainContentRate","metaTagRate","linkRecommendRate","faqsRate","urlsRate","priorityRate","high","medium","low","statusRate","good","bad","KEYWORD_POINTS","TECHNICAL_SEO_POINTS","MAIN_CONTENT_POINTS","META_TAG_POINTS","LINK_RECOMMEND_POINTS","FAQS_POINTS","URLS_POINTS","SINGLE_H1_ID","META_DESCRIPTION_LENGTH_ID","URL_LENGTH_ID","INTERNAL_LINKS_ID","EXTERNAL_LINKS_ID","TITLE_WIDTH_ID","TEXT_IMAGES_ID","SCHEMA_ID","SINGLE_TITLE_ID","technicalSEOCategory","INTRODUCTION_KEYWORD_ID","SENTENCE_BEGINNINGS_ID","TEXT_SENTENCE_LENGTH_ID","TEXT_LENGTH_ID","FAQs_ASSESSMENT_ID","FAQs_STRUCTURE_DATA_ID","KEYWORD_FAQs_ASSESSMENT_ID","TITLE_KEYWORD_ID","KEYPHRASE_LENGTH_ID","TEXT_TRANSITION_WORDS_ID","KEYPHRASE_DENSITY_ID","SLUG_KEYWORD_ID","CHARACTERS_URL","KEYPHRASE_ID","TEXT_PARAGRAPH_TOO_LONG_ID","SUBHEADINGS_KEYWORD_ID","IMAGES_ID","IMAGES_IN_CONTENT_ID","NUMBER_TITLE_ID","META_DESCRIPTION_KEYWORD_ID","RELATED_KEYWORDS_ID","RELATED_KEYWORDS_DENSITY_ID","MEDIA_ID","contentSEOCategory"],"sources":["../../../src/const/analysis.js"],"sourcesContent":["export const POINT = 100;\nexport const keywordRate = {\n rate: 15,\n items: 2\n}\nexport const technicalSeoRate = {\n rate: 20,\n items: 3\n}\nexport const mainContentRate = {\n rate: 25,\n items: 7\n}\nexport const metaTagRate = {\n rate: 15,\n items: 4\n}\nexport const linkRecommendRate = {\n rate: 10,\n items: 2\n}\nexport const faqsRate = {\n rate: 10,\n items: 3\n}\nexport const urlsRate = {\n rate: 5,\n items: 3\n}\n\nexport const priorityRate = {\n high: 1,\n medium: 0.75,\n low: 0.5\n};\nexport const statusRate = {\n good: 1,\n bad: 0\n};\nexport const KEYWORD_POINTS = (keywordRate.rate / keywordRate.items);\nexport const TECHNICAL_SEO_POINTS = (technicalSeoRate.rate / technicalSeoRate.items);\nexport const MAIN_CONTENT_POINTS = (mainContentRate.rate / mainContentRate.items);\nexport const META_TAG_POINTS = (metaTagRate.rate / metaTagRate.items);\nexport const LINK_RECOMMEND_POINTS = (linkRecommendRate.rate / linkRecommendRate.items);\nexport const FAQS_POINTS = (faqsRate .rate / faqsRate .items);\nexport const URLS_POINTS = (urlsRate.rate / urlsRate.items);\n\n\n\nexport const SINGLE_H1_ID = 'singleH1';\nexport const META_DESCRIPTION_LENGTH_ID = 'metaDescriptionLength';\nexport const URL_LENGTH_ID = 'urlLength';\nexport const INTERNAL_LINKS_ID = 'internalLinks';\nexport const EXTERNAL_LINKS_ID = 'externalLinks';\nexport const TITLE_WIDTH_ID = 'titleWidth';\nexport const TEXT_IMAGES_ID = 'textImages';\nexport const SCHEMA_ID = 'schema';\nexport const SINGLE_TITLE_ID = 'singleTitle';\n\nexport const technicalSEOCategory = [\n SINGLE_H1_ID,\n META_DESCRIPTION_LENGTH_ID,\n URL_LENGTH_ID,\n INTERNAL_LINKS_ID,\n EXTERNAL_LINKS_ID,\n TITLE_WIDTH_ID,\n TEXT_IMAGES_ID,\n SCHEMA_ID,\n SINGLE_TITLE_ID\n];\n\nexport const INTRODUCTION_KEYWORD_ID = 'introductionKeyword';\nexport const SENTENCE_BEGINNINGS_ID = 'sentenceBeginnings';\nexport const TEXT_SENTENCE_LENGTH_ID = 'textSentenceLength';\nexport const TEXT_LENGTH_ID = 'textLength';\nexport const FAQs_ASSESSMENT_ID = 'faqs';\nexport const FAQs_STRUCTURE_DATA_ID = 'faqsStructuredData';\nexport const KEYWORD_FAQs_ASSESSMENT_ID = 'keywordFaqs';\nexport const TITLE_KEYWORD_ID = 'titleKeyword';\nexport const KEYPHRASE_LENGTH_ID = 'keyphraseLength';\nexport const TEXT_TRANSITION_WORDS_ID = 'textTransitionWords';\nexport const KEYPHRASE_DENSITY_ID = 'keyphraseDensity';\nexport const SLUG_KEYWORD_ID = 'slugKeyword';\nexport const CHARACTERS_URL = 'charactersUrl';\nexport const KEYPHRASE_ID = 'keyphrase';\nexport const TEXT_PARAGRAPH_TOO_LONG_ID = 'textParagraphTooLong';\nexport const SUBHEADINGS_KEYWORD_ID = 'subheadingsKeyword';\nexport const IMAGES_ID = 'images';\nexport const IMAGES_IN_CONTENT_ID = 'imagesInContent';\nexport const NUMBER_TITLE_ID = 'numberTitle';\nexport const META_DESCRIPTION_KEYWORD_ID = 'metaDescriptionKeyword';\nexport const RELATED_KEYWORDS_ID = 'relatedKeywords';\nexport const RELATED_KEYWORDS_DENSITY_ID = 'relatedKeywordsDensity';\nexport const MEDIA_ID = 'media';\n\nexport const contentSEOCategory = [\n INTRODUCTION_KEYWORD_ID,\n FAQs_ASSESSMENT_ID,\n SENTENCE_BEGINNINGS_ID,\n TEXT_SENTENCE_LENGTH_ID,\n TEXT_LENGTH_ID,\n TITLE_KEYWORD_ID,\n KEYPHRASE_LENGTH_ID,\n TEXT_TRANSITION_WORDS_ID,\n KEYPHRASE_DENSITY_ID,\n SLUG_KEYWORD_ID,\n KEYPHRASE_ID,\n TEXT_PARAGRAPH_TOO_LONG_ID,\n SUBHEADINGS_KEYWORD_ID,\n IMAGES_ID,\n IMAGES_IN_CONTENT_ID,\n NUMBER_TITLE_ID,\n META_DESCRIPTION_KEYWORD_ID,\n KEYWORD_FAQs_ASSESSMENT_ID,\n RELATED_KEYWORDS_ID,\n RELATED_KEYWORDS_DENSITY_ID,\n MEDIA_ID,\n CHARACTERS_URL,\n FAQs_STRUCTURE_DATA_ID,\n];\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assessment.js","names":["sanitizeString","filterShortcodesFromHTML","removeHtmlBlocks","statusRate","Assessment","getResult","paper","researcher","i18n","isApplicable","hasEnoughContentForAssessment","contentNeededForAssessment","text","getText","_attributes","shortcodes","length","checkCanSkip","getScore","points","status"],"sources":["../../../../src/scoring/assessments/assessment.js"],"sourcesContent":["/* eslint-disable no-unused-vars */\nimport {sanitizeString} from '../../languageProcessing';\nimport {filterShortcodesFromHTML, removeHtmlBlocks} from '../../languageProcessing/helpers';\nimport {statusRate} from '../../const/analysis';\n\n/**\n * The base class for an Assessment.\n */\nclass Assessment {\n /**\n * Executes the assessment and return its result.\n *\n * @param {Paper} paper The paper to run this assessment on.\n * @param {Researcher} researcher The researcher used for the assessment.\n * @param i18n\n * @returns {AssessmentResult} The result of the assessment.\n */\n getResult({paper, researcher, i18n}) {\n throw 'The method getResult is not implemented';\n }\n\n /**\n * Checks whether the assessment is applicable.\n *\n * @param {Paper} paper The paper to run this assessment on.\n * @param {Researcher} researcher The researcher used for the assessment.\n *\n * @returns {boolean} Whether the assessment is applicable, defaults to `true`.\n */\n isApplicable(paper, researcher) {\n return true;\n }\n\n /**\n * Tests whether a `Paper` has enough content for assessments to be displayed.\n *\n * @param {Paper} paper The paper to run this assessment on.\n * @param {number} contentNeededForAssessment The minimum length in characters a text must have for assessments to be displayed.\n *\n * @returns {boolean} `true` if the text is of the required length, `false` otherwise.\n */\n hasEnoughContentForAssessment(paper, contentNeededForAssessment = 50) {\n let text = paper.getText();\n text = removeHtmlBlocks(text);\n text = filterShortcodesFromHTML(text, paper._attributes && paper._attributes.shortcodes);\n\n return sanitizeString(text).length >= contentNeededForAssessment;\n }\n\n checkCanSkip(paper) {\n return !this.hasEnoughContentForAssessment;\n }\n\n /**\n *\n * @param points\n * @param status\n * @returns {number}\n */\n getScore(points, status) {\n
|
|
1
|
+
{"version":3,"file":"assessment.js","names":["sanitizeString","filterShortcodesFromHTML","removeHtmlBlocks","statusRate","Assessment","getResult","paper","researcher","i18n","isApplicable","hasEnoughContentForAssessment","contentNeededForAssessment","text","getText","_attributes","shortcodes","length","checkCanSkip","getScore","points","status","rate"],"sources":["../../../../src/scoring/assessments/assessment.js"],"sourcesContent":["/* eslint-disable no-unused-vars */\nimport {sanitizeString} from '../../languageProcessing';\nimport {filterShortcodesFromHTML, removeHtmlBlocks} from '../../languageProcessing/helpers';\nimport {statusRate} from '../../const/analysis';\n\n/**\n * The base class for an Assessment.\n */\nclass Assessment {\n /**\n * Executes the assessment and return its result.\n *\n * @param {Paper} paper The paper to run this assessment on.\n * @param {Researcher} researcher The researcher used for the assessment.\n * @param i18n\n * @returns {AssessmentResult} The result of the assessment.\n */\n getResult({paper, researcher, i18n}) {\n throw 'The method getResult is not implemented';\n }\n\n /**\n * Checks whether the assessment is applicable.\n *\n * @param {Paper} paper The paper to run this assessment on.\n * @param {Researcher} researcher The researcher used for the assessment.\n *\n * @returns {boolean} Whether the assessment is applicable, defaults to `true`.\n */\n isApplicable(paper, researcher) {\n return true;\n }\n\n /**\n * Tests whether a `Paper` has enough content for assessments to be displayed.\n *\n * @param {Paper} paper The paper to run this assessment on.\n * @param {number} contentNeededForAssessment The minimum length in characters a text must have for assessments to be displayed.\n *\n * @returns {boolean} `true` if the text is of the required length, `false` otherwise.\n */\n hasEnoughContentForAssessment(paper, contentNeededForAssessment = 50) {\n let text = paper.getText();\n text = removeHtmlBlocks(text);\n text = filterShortcodesFromHTML(text, paper._attributes && paper._attributes.shortcodes);\n\n return sanitizeString(text).length >= contentNeededForAssessment;\n }\n\n checkCanSkip(paper) {\n return !this.hasEnoughContentForAssessment;\n }\n\n /**\n *\n * @param points\n * @param status\n * @returns {number}\n */\n getScore(points, status) {\n const rate = statusRate[status] ?? 0;\n return points * rate;\n }\n}\n\n/* eslint-enable no-unused-vars */\n\nexport default Assessment;\n"],"mappings":"AAAA;AACA,SAAQA,cAAc;AACtB,SAAQC,wBAAwB,EAAEC,gBAAgB;AAClD,SAAQC,UAAU;;AAElB;AACA;AACA;AACA,MAAMC,UAAU,CAAC;EACf;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,SAASA,CAAC;IAACC,KAAK;IAAEC,UAAU;IAAEC;EAAI,CAAC,EAAE;IACnC,MAAM,yCAAyC;EACjD;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,YAAYA,CAACH,KAAK,EAAEC,UAAU,EAAE;IAC9B,OAAO,IAAI;EACb;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEG,6BAA6BA,CAACJ,KAAK,EAAEK,0BAA0B,GAAG,EAAE,EAAE;IACpE,IAAIC,IAAI,GAAGN,KAAK,CAACO,OAAO,CAAC,CAAC;IAC1BD,IAAI,GAAGV,gBAAgB,CAACU,IAAI,CAAC;IAC7BA,IAAI,GAAGX,wBAAwB,CAACW,IAAI,EAAEN,KAAK,CAACQ,WAAW,IAAIR,KAAK,CAACQ,WAAW,CAACC,UAAU,CAAC;IAExF,OAAOf,cAAc,CAACY,IAAI,CAAC,CAACI,MAAM,IAAIL,0BAA0B;EAClE;EAEAM,YAAYA,CAACX,KAAK,EAAE;IAClB,OAAO,CAAC,IAAI,CAACI,6BAA6B;EAC5C;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEQ,QAAQA,CAACC,MAAM,EAAEC,MAAM,EAAE;IACvB,MAAMC,IAAI,GAAGlB,UAAU,CAACiB,MAAM,CAAC,IAAI,CAAC;IACpC,OAAOD,MAAM,GAAGE,IAAI;EACtB;AACF;;AAEA;;AAEA,eAAejB,UAAU","ignoreList":[]}
|
|
@@ -20,6 +20,7 @@ import SingleH1Assessment from "./seo/SingleH1Assessment";
|
|
|
20
20
|
import SubheadingsKeywordAssessment from "./seo/SubHeadingsKeywordAssessment";
|
|
21
21
|
import SlugKeywordAssessment from "./seo/UrlKeywordAssessment";
|
|
22
22
|
import ImageCountAssessment from "./seo/ImageCountAssessment";
|
|
23
|
+
import ImagesInContentAssessment from "./seo/ImagesInContentAssessment";
|
|
23
24
|
import KeyphraseAssessment from "./seo/KeyphraseAssessment";
|
|
24
25
|
import SingleTitleAssessment from "./seo/SingleTitleAssessment";
|
|
25
26
|
import UrlLengthAssessment from "./seo/UrlLengthAssessment";
|
|
@@ -41,6 +42,7 @@ const readability = {
|
|
|
41
42
|
// We expose the deprecated assessments for backwards compatibility.
|
|
42
43
|
const seo = {
|
|
43
44
|
ImageCountAssessment,
|
|
45
|
+
ImagesInContentAssessment,
|
|
44
46
|
NumberInMetaTitleAssessment,
|
|
45
47
|
InternalLinksAssessment,
|
|
46
48
|
TextImagesAssessment,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["TextLengthAssessment","ParagraphTooLongAssessment","SentenceBeginningsAssessment","SentenceLengthInTextAssessment","TransitionWordsAssessment","RelatedKeywordsAssessment","InternalLinksAssessment","IntroductionKeywordAssessment","KeyphraseDensityAssessment","MetaDescriptionKeywordAssessment","MetaDescriptionLengthAssessment","OutboundLinksAssessment","PageTitleWidthAssessment","SingleH1Assessment","SubheadingsKeywordAssessment","SlugKeywordAssessment","ImageCountAssessment","KeyphraseAssessment","SingleTitleAssessment","UrlLengthAssessment","NumberInMetaTitleAssessment","TextImagesAssessment","MetaTitleKeywordAssessment","SchemaAssessment","RelatedKeywordsDensityAssessment","InvalidCharactersInUrl","FAQsStructureDataAssessment","readability","seo"],"sources":["../../../../src/scoring/assessments/index.js"],"sourcesContent":["// SEO assessments - import TextLengthAssessment first to avoid initialization errors.\nimport TextLengthAssessment from './seo/TextLengthAssessment';\n\n// Readability assessments.\nimport ParagraphTooLongAssessment from './readability/ParagraphTooLongAssessment';\nimport SentenceBeginningsAssessment from './readability/SentenceBeginningsAssessment';\nimport SentenceLengthInTextAssessment from './readability/SentenceLengthInTextAssessment';\nimport TransitionWordsAssessment from './readability/TransitionWordsAssessment';\nimport RelatedKeywordsAssessment from './readability/RelatedKeywordsAssessment';\n\n// SEO assessments.\nimport InternalLinksAssessment from './seo/InternalLinksAssessment';\nimport IntroductionKeywordAssessment from './seo/IntroductionKeywordAssessment';\nimport KeyphraseDensityAssessment from './seo/KeywordDensityAssessment';\nimport MetaDescriptionKeywordAssessment from './seo/MetaDescriptionKeywordAssessment';\nimport MetaDescriptionLengthAssessment from './seo/MetaDescriptionLengthAssessment';\nimport OutboundLinksAssessment from './seo/OutboundLinksAssessment';\nimport PageTitleWidthAssessment from './seo/PageTitleWidthAssessment';\nimport SingleH1Assessment from './seo/SingleH1Assessment';\nimport SubheadingsKeywordAssessment from './seo/SubHeadingsKeywordAssessment';\nimport SlugKeywordAssessment from './seo/UrlKeywordAssessment';\nimport ImageCountAssessment from './seo/ImageCountAssessment';\nimport KeyphraseAssessment from './seo/KeyphraseAssessment';\nimport SingleTitleAssessment from './seo/SingleTitleAssessment';\nimport UrlLengthAssessment from './seo/UrlLengthAssessment';\nimport NumberInMetaTitleAssessment from './seo/NumberInMetaTitleAssessment';\nimport TextImagesAssessment from './seo/TextImagesAssessment';\nimport MetaTitleKeywordAssessment from './seo/MetaTitleKeywordAssessment';\nimport SchemaAssessment from './seo/SchemaAssessment';\nimport RelatedKeywordsDensityAssessment from './seo/RelatedKeywordsDensityAssessment';\nimport InvalidCharactersInUrl from './seo/InvalidCharactersInUrl';\nimport FAQsStructureDataAssessment from './seo/FAQsStructureDataAssessment';\n\nconst readability = {\n ParagraphTooLongAssessment,\n SentenceBeginningsAssessment,\n SentenceLengthInTextAssessment,\n TransitionWordsAssessment,\n RelatedKeywordsAssessment\n};\n\n// We expose the deprecated assessments for backwards compatibility.\nconst seo = {\n ImageCountAssessment,\n NumberInMetaTitleAssessment,\n InternalLinksAssessment,\n TextImagesAssessment,\n MetaTitleKeywordAssessment,\n IntroductionKeywordAssessment,\n SingleTitleAssessment,\n UrlLengthAssessment,\n KeyphraseDensityAssessment,\n MetaDescriptionKeywordAssessment,\n MetaDescriptionLengthAssessment,\n OutboundLinksAssessment,\n PageTitleWidthAssessment,\n SingleH1Assessment,\n SubheadingsKeywordAssessment,\n TextLengthAssessment,\n SlugKeywordAssessment,\n KeyphraseAssessment,\n SchemaAssessment,\n RelatedKeywordsDensityAssessment,\n InvalidCharactersInUrl,\n FAQsStructureDataAssessment\n};\n\nexport {readability, seo};\n"],"mappings":"AAAA;AACA,OAAOA,oBAAoB;;AAE3B;AACA,OAAOC,0BAA0B;AACjC,OAAOC,4BAA4B;AACnC,OAAOC,8BAA8B;AACrC,OAAOC,yBAAyB;AAChC,OAAOC,yBAAyB;;AAEhC;AACA,OAAOC,uBAAuB;AAC9B,OAAOC,6BAA6B;AACpC,OAAOC,0BAA0B;AACjC,OAAOC,gCAAgC;AACvC,OAAOC,+BAA+B;AACtC,OAAOC,uBAAuB;AAC9B,OAAOC,wBAAwB;AAC/B,OAAOC,kBAAkB;AACzB,OAAOC,4BAA4B;AACnC,OAAOC,qBAAqB;AAC5B,OAAOC,oBAAoB;AAC3B,OAAOC,mBAAmB;AAC1B,OAAOC,qBAAqB;AAC5B,OAAOC,mBAAmB;AAC1B,OAAOC,2BAA2B;AAClC,OAAOC,oBAAoB;AAC3B,OAAOC,0BAA0B;AACjC,OAAOC,gBAAgB;AACvB,OAAOC,gCAAgC;AACvC,OAAOC,sBAAsB;AAC7B,OAAOC,2BAA2B;AAElC,MAAMC,WAAW,GAAG;
|
|
1
|
+
{"version":3,"file":"index.js","names":["TextLengthAssessment","ParagraphTooLongAssessment","SentenceBeginningsAssessment","SentenceLengthInTextAssessment","TransitionWordsAssessment","RelatedKeywordsAssessment","InternalLinksAssessment","IntroductionKeywordAssessment","KeyphraseDensityAssessment","MetaDescriptionKeywordAssessment","MetaDescriptionLengthAssessment","OutboundLinksAssessment","PageTitleWidthAssessment","SingleH1Assessment","SubheadingsKeywordAssessment","SlugKeywordAssessment","ImageCountAssessment","ImagesInContentAssessment","KeyphraseAssessment","SingleTitleAssessment","UrlLengthAssessment","NumberInMetaTitleAssessment","TextImagesAssessment","MetaTitleKeywordAssessment","SchemaAssessment","RelatedKeywordsDensityAssessment","InvalidCharactersInUrl","FAQsStructureDataAssessment","readability","seo"],"sources":["../../../../src/scoring/assessments/index.js"],"sourcesContent":["// SEO assessments - import TextLengthAssessment first to avoid initialization errors.\nimport TextLengthAssessment from './seo/TextLengthAssessment';\n\n// Readability assessments.\nimport ParagraphTooLongAssessment from './readability/ParagraphTooLongAssessment';\nimport SentenceBeginningsAssessment from './readability/SentenceBeginningsAssessment';\nimport SentenceLengthInTextAssessment from './readability/SentenceLengthInTextAssessment';\nimport TransitionWordsAssessment from './readability/TransitionWordsAssessment';\nimport RelatedKeywordsAssessment from './readability/RelatedKeywordsAssessment';\n\n// SEO assessments.\nimport InternalLinksAssessment from './seo/InternalLinksAssessment';\nimport IntroductionKeywordAssessment from './seo/IntroductionKeywordAssessment';\nimport KeyphraseDensityAssessment from './seo/KeywordDensityAssessment';\nimport MetaDescriptionKeywordAssessment from './seo/MetaDescriptionKeywordAssessment';\nimport MetaDescriptionLengthAssessment from './seo/MetaDescriptionLengthAssessment';\nimport OutboundLinksAssessment from './seo/OutboundLinksAssessment';\nimport PageTitleWidthAssessment from './seo/PageTitleWidthAssessment';\nimport SingleH1Assessment from './seo/SingleH1Assessment';\nimport SubheadingsKeywordAssessment from './seo/SubHeadingsKeywordAssessment';\nimport SlugKeywordAssessment from './seo/UrlKeywordAssessment';\nimport ImageCountAssessment from './seo/ImageCountAssessment';\nimport ImagesInContentAssessment from './seo/ImagesInContentAssessment';\nimport KeyphraseAssessment from './seo/KeyphraseAssessment';\nimport SingleTitleAssessment from './seo/SingleTitleAssessment';\nimport UrlLengthAssessment from './seo/UrlLengthAssessment';\nimport NumberInMetaTitleAssessment from './seo/NumberInMetaTitleAssessment';\nimport TextImagesAssessment from './seo/TextImagesAssessment';\nimport MetaTitleKeywordAssessment from './seo/MetaTitleKeywordAssessment';\nimport SchemaAssessment from './seo/SchemaAssessment';\nimport RelatedKeywordsDensityAssessment from './seo/RelatedKeywordsDensityAssessment';\nimport InvalidCharactersInUrl from './seo/InvalidCharactersInUrl';\nimport FAQsStructureDataAssessment from './seo/FAQsStructureDataAssessment';\n\nconst readability = {\n ParagraphTooLongAssessment,\n SentenceBeginningsAssessment,\n SentenceLengthInTextAssessment,\n TransitionWordsAssessment,\n RelatedKeywordsAssessment\n};\n\n// We expose the deprecated assessments for backwards compatibility.\nconst seo = {\n ImageCountAssessment,\n ImagesInContentAssessment,\n NumberInMetaTitleAssessment,\n InternalLinksAssessment,\n TextImagesAssessment,\n MetaTitleKeywordAssessment,\n IntroductionKeywordAssessment,\n SingleTitleAssessment,\n UrlLengthAssessment,\n KeyphraseDensityAssessment,\n MetaDescriptionKeywordAssessment,\n MetaDescriptionLengthAssessment,\n OutboundLinksAssessment,\n PageTitleWidthAssessment,\n SingleH1Assessment,\n SubheadingsKeywordAssessment,\n TextLengthAssessment,\n SlugKeywordAssessment,\n KeyphraseAssessment,\n SchemaAssessment,\n RelatedKeywordsDensityAssessment,\n InvalidCharactersInUrl,\n FAQsStructureDataAssessment\n};\n\nexport {readability, seo};\n"],"mappings":"AAAA;AACA,OAAOA,oBAAoB;;AAE3B;AACA,OAAOC,0BAA0B;AACjC,OAAOC,4BAA4B;AACnC,OAAOC,8BAA8B;AACrC,OAAOC,yBAAyB;AAChC,OAAOC,yBAAyB;;AAEhC;AACA,OAAOC,uBAAuB;AAC9B,OAAOC,6BAA6B;AACpC,OAAOC,0BAA0B;AACjC,OAAOC,gCAAgC;AACvC,OAAOC,+BAA+B;AACtC,OAAOC,uBAAuB;AAC9B,OAAOC,wBAAwB;AAC/B,OAAOC,kBAAkB;AACzB,OAAOC,4BAA4B;AACnC,OAAOC,qBAAqB;AAC5B,OAAOC,oBAAoB;AAC3B,OAAOC,yBAAyB;AAChC,OAAOC,mBAAmB;AAC1B,OAAOC,qBAAqB;AAC5B,OAAOC,mBAAmB;AAC1B,OAAOC,2BAA2B;AAClC,OAAOC,oBAAoB;AAC3B,OAAOC,0BAA0B;AACjC,OAAOC,gBAAgB;AACvB,OAAOC,gCAAgC;AACvC,OAAOC,sBAAsB;AAC7B,OAAOC,2BAA2B;AAElC,MAAMC,WAAW,GAAG;EAClB3B,0BAA0B;EAC1BC,4BAA4B;EAC5BC,8BAA8B;EAC9BC,yBAAyB;EACzBC;AACF,CAAC;;AAED;AACA,MAAMwB,GAAG,GAAG;EACVb,oBAAoB;EACpBC,yBAAyB;EACzBI,2BAA2B;EAC3Bf,uBAAuB;EACvBgB,oBAAoB;EACpBC,0BAA0B;EAC1BhB,6BAA6B;EAC7BY,qBAAqB;EACrBC,mBAAmB;EACnBZ,0BAA0B;EAC1BC,gCAAgC;EAChCC,+BAA+B;EAC/BC,uBAAuB;EACvBC,wBAAwB;EACxBC,kBAAkB;EAClBC,4BAA4B;EAC5Bd,oBAAoB;EACpBe,qBAAqB;EACrBG,mBAAmB;EACnBM,gBAAgB;EAChBC,gCAAgC;EAChCC,sBAAsB;EACtBC;AACF,CAAC;AAED,SAAQC,WAAW,EAAEC,GAAG","ignoreList":[]}
|
|
@@ -58,7 +58,6 @@ class SentenceLengthInTextAssessment extends Assessment {
|
|
|
58
58
|
if (researcher.getConfig('sentenceLength')) {
|
|
59
59
|
this._config = this.getLanguageSpecificConfig(researcher);
|
|
60
60
|
}
|
|
61
|
-
console.log('sentences', sentences);
|
|
62
61
|
const percentage = this.calculatePercentage(sentences);
|
|
63
62
|
const result = this.calculateResult(percentage, hasDescription);
|
|
64
63
|
const assessmentResult = new AssessmentResult({
|
|
@@ -106,7 +105,6 @@ class SentenceLengthInTextAssessment extends Assessment {
|
|
|
106
105
|
let percentage = 0;
|
|
107
106
|
if (sentences.length !== 0) {
|
|
108
107
|
const tooLongTotal = this.countTooLongSentences(sentences);
|
|
109
|
-
console.log('tooLongTotal', tooLongTotal);
|
|
110
108
|
percentage = formatNumber(tooLongTotal / sentences.length * 100);
|
|
111
109
|
}
|
|
112
110
|
return percentage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SentenceLengthInTextAssessment.js","names":["merge","Assessment","getTooLongSentences","formatNumber","AssessmentResult","TextBlockIcon","MAIN_CONTENT_POINTS","TEXT_SENTENCE_LENGTH_ID","SentenceLengthInTextAssessment","constructor","config","isCornerstone","isProduct","defaultConfig","id","priority","docUrl","ctaType","fixPosition","icon","recommendedLength","slightlyTooMany","farTooMany","title","content","improve","bad","good","_config","identifier","getResult","paper","researcher","sentences","getResearch","hasDescription","getConfig","getLanguageSpecificConfig","
|
|
1
|
+
{"version":3,"file":"SentenceLengthInTextAssessment.js","names":["merge","Assessment","getTooLongSentences","formatNumber","AssessmentResult","TextBlockIcon","MAIN_CONTENT_POINTS","TEXT_SENTENCE_LENGTH_ID","SentenceLengthInTextAssessment","constructor","config","isCornerstone","isProduct","defaultConfig","id","priority","docUrl","ctaType","fixPosition","icon","recommendedLength","slightlyTooMany","farTooMany","title","content","improve","bad","good","_config","identifier","getResult","paper","researcher","sentences","getResearch","hasDescription","getConfig","getLanguageSpecificConfig","percentage","calculatePercentage","result","calculateResult","assessmentResult","setScore","score","setStatus","status","isApplicable","currentConfig","languageSpecificConfig","hasOwnProperty","length","tooLongTotal","countTooLongSentences","getScore"],"sources":["../../../../../src/scoring/assessments/readability/SentenceLengthInTextAssessment.js"],"sourcesContent":["import {merge} from 'lodash';\nimport Assessment from '../assessment';\nimport getTooLongSentences from '../../helpers/assessments/checkForTooLongSentences';\nimport formatNumber from '../../../helpers/formatNumber';\nimport AssessmentResult from '../../../values/AssessmentResult';\nimport {TextBlockIcon} from '@shopify/polaris-icons';\nimport {MAIN_CONTENT_POINTS, TEXT_SENTENCE_LENGTH_ID} from '@axyseo/const/analysis';\n\n/**\n * Represents the assessment that will calculate the length of sentences in the text.\n */\nclass SentenceLengthInTextAssessment extends Assessment {\n /**\n\t * Sets the identifier and the config.\n\t *\n\t * @param {object} config\t\t\tThe scoring configuration that should be used.\n\t * @param {boolean} isCornerstone\tWhether cornerstone configuration should be used.\n\t * @param {boolean} isProduct\t\tWhether product configuration should be used.\n\n\t * @returns {void}\n\t */\n constructor(config = {}, isCornerstone = false, isProduct = false) {\n super();\n\n const defaultConfig = {\n id: TEXT_SENTENCE_LENGTH_ID,\n priority: 'high',\n docUrl:\n 'https://docs.avada.io/seo-suite-help-center/seo-audit/on-page-seo/checklist#sentence-length',\n ctaType: 'fix',\n fixPosition: 'sentenceLength',\n icon: TextBlockIcon,\n recommendedLength: 20,\n slightlyTooMany: 25,\n farTooMany: 30,\n title: 'Text Sentence Length',\n content: {\n improve: '',\n bad:\n 'Sentence too long. Keep sentence length less than 20 words to improve readability and flow.',\n good: 'Sentence length is optimized for readability, less than 20 words.'\n }\n };\n\n this._config = merge(defaultConfig, config);\n this.identifier = TEXT_SENTENCE_LENGTH_ID;\n }\n\n /**\n * Scores the percentage of sentences including more than the recommended number of words.\n *\n * @param {Paper} paper The paper to use for the assessment.\n * @param {Researcher} researcher The researcher used for calling research.\n *\n * @returns {AssessmentResult} The Assessment result.\n */\n getResult({paper, researcher}) {\n const sentences = researcher.getResearch('countSentencesFromText');\n const hasDescription = paper.hasDescription();\n if (researcher.getConfig('sentenceLength')) {\n this._config = this.getLanguageSpecificConfig(researcher);\n }\n const percentage = this.calculatePercentage(sentences);\n const result = this.calculateResult(percentage, hasDescription);\n\n const assessmentResult = new AssessmentResult({config: this._config});\n\n assessmentResult.setScore(result.score);\n assessmentResult.setStatus(result.status);\n\n return assessmentResult;\n }\n\n /**\n * Checks whether the paper has text.\n *\n * @param {Paper} paper The paper to use for the assessment.\n *\n * @returns {boolean} True when there is text.\n */\n isApplicable(paper) {\n return true;\n }\n\n /**\n * Check if there is language-specific config, and if so, overwrite the current config with it.\n *\n * @param {Researcher} researcher The researcher to use.\n *\n * @returns {Object} The config that should be used.\n */\n getLanguageSpecificConfig(researcher) {\n const currentConfig = this._config;\n const languageSpecificConfig = researcher.getConfig('sentenceLength');\n\n if (languageSpecificConfig.hasOwnProperty('recommendedLength')) {\n currentConfig.recommendedLength = languageSpecificConfig.recommendedLength;\n }\n\n return currentConfig;\n }\n\n /**\n * Calculates the percentage of sentences that are too long.\n *\n * @param {Array} sentences The sentences to calculate the percentage for.\n * @returns {number} The calculates percentage of too long sentences.\n */\n calculatePercentage(sentences) {\n let percentage = 0;\n\n if (sentences.length !== 0) {\n const tooLongTotal = this.countTooLongSentences(sentences);\n percentage = formatNumber((tooLongTotal / sentences.length) * 100);\n }\n\n return percentage;\n }\n\n /**\n *\n * @param percentage\n * @param hasDescription\n * @returns {{score: number, status: string}}\n */\n calculateResult(percentage, hasDescription) {\n let status = 'bad';\n if (percentage <= 0 && hasDescription && percentage <= this._config.recommendedLength) {\n status = 'good';\n }\n const score = this.getScore(MAIN_CONTENT_POINTS, status);\n\n this._config.content = {\n improve: '',\n bad: `Sentence too long. Keep sentence length less than ${this._config.recommendedLength} words to improve readability and flow.`,\n good: `Sentences optimized`\n };\n\n return {\n score,\n status\n };\n }\n\n /**\n * Gets the sentences that are qualified as being too long.\n *\n * @param {array} sentences The sentences to filter through.\n * @returns {array} Array with all the sentences considered to be too long.\n */\n getTooLongSentences(sentences) {\n return getTooLongSentences(sentences, this._config.recommendedLength);\n }\n\n /**\n * Get the total amount of sentences that are qualified as being too long.\n *\n * @param {Array} sentences The sentences to filter through.\n * @returns {Number} The amount of sentences that are considered too long.\n */\n countTooLongSentences(sentences) {\n return this.getTooLongSentences(sentences).length;\n }\n}\n\nexport default SentenceLengthInTextAssessment;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { merge } from 'lodash';
|
|
2
|
+
import Assessment from "../assessment";
|
|
3
|
+
import AssessmentResult from "../../../values/AssessmentResult";
|
|
4
|
+
import { IMAGES_IN_CONTENT_ID, MAIN_CONTENT_POINTS } from "../../../const/analysis";
|
|
5
|
+
const DEFAULT_TITLE = 'Images in content';
|
|
6
|
+
const DEFAULT_GOOD_TITLE = 'Images included';
|
|
7
|
+
const DEFAULT_GOOD_CONTENT = 'Images are included and well placed.';
|
|
8
|
+
const DEFAULT_BAD_CONTENT = 'This post is text heavy. Add images to break up sections and improve reading experience.';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Represents the assessment that checks if the text has any images present.
|
|
12
|
+
*/
|
|
13
|
+
export default class ImagesInContentAssessment extends Assessment {
|
|
14
|
+
/**
|
|
15
|
+
* Sets the identifier and the config.
|
|
16
|
+
*
|
|
17
|
+
* @param {object} config The configuration to use.
|
|
18
|
+
*
|
|
19
|
+
* @returns {void}
|
|
20
|
+
*/
|
|
21
|
+
constructor(config = {}) {
|
|
22
|
+
super();
|
|
23
|
+
const defaultConfig = {
|
|
24
|
+
id: IMAGES_IN_CONTENT_ID,
|
|
25
|
+
docUrl: 'https://docs.avada.io/seo-suite-help-center/seo-audit/on-page-seo/checklist',
|
|
26
|
+
ctaType: 'fix',
|
|
27
|
+
priority: 'high',
|
|
28
|
+
fixPosition: 'description',
|
|
29
|
+
title: DEFAULT_TITLE,
|
|
30
|
+
goodTitle: DEFAULT_GOOD_TITLE,
|
|
31
|
+
content: {
|
|
32
|
+
good: DEFAULT_GOOD_CONTENT,
|
|
33
|
+
improve: '',
|
|
34
|
+
bad: DEFAULT_BAD_CONTENT
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
this.identifier = IMAGES_IN_CONTENT_ID;
|
|
38
|
+
this._config = merge(defaultConfig, config);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Execute the Assessment and return a result.
|
|
43
|
+
*
|
|
44
|
+
* @param {Paper} paper The Paper object to assess.
|
|
45
|
+
* @param {Researcher} researcher The Researcher object containing all available researches.
|
|
46
|
+
* @returns {AssessmentResult} The result of the assessment, containing both a score and a descriptive text.
|
|
47
|
+
*/
|
|
48
|
+
getResult({
|
|
49
|
+
paper,
|
|
50
|
+
researcher
|
|
51
|
+
}) {
|
|
52
|
+
this.imageCount = researcher.getResearch('imageCount');
|
|
53
|
+
const assessmentResult = new AssessmentResult({
|
|
54
|
+
config: this._config
|
|
55
|
+
});
|
|
56
|
+
const calculatedResult = this.calculateResult();
|
|
57
|
+
assessmentResult.setScore(calculatedResult.score);
|
|
58
|
+
assessmentResult.setStatus(calculatedResult.status);
|
|
59
|
+
assessmentResult.setTitle(calculatedResult.title);
|
|
60
|
+
return assessmentResult;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Checks whether the paper has text.
|
|
65
|
+
*
|
|
66
|
+
* @param {Paper} paper The paper to use for the assessment.
|
|
67
|
+
*
|
|
68
|
+
* @returns {boolean} True when there is text.
|
|
69
|
+
*/
|
|
70
|
+
isApplicable(paper) {
|
|
71
|
+
return paper.hasText();
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
*
|
|
76
|
+
* @returns {{score: number, status: string, title: string}}
|
|
77
|
+
*/
|
|
78
|
+
calculateResult() {
|
|
79
|
+
let status = !this.imageCount || this.imageCount === 0 ? 'improve' : 'good';
|
|
80
|
+
const score = this.getScore(MAIN_CONTENT_POINTS, status);
|
|
81
|
+
const shouldUseTitleForGood = this._config.title !== DEFAULT_TITLE && this._config.goodTitle === DEFAULT_GOOD_TITLE;
|
|
82
|
+
const title = status === 'good' ? shouldUseTitleForGood ? this._config.title : this._config.goodTitle || this._config.title : this._config.title;
|
|
83
|
+
return {
|
|
84
|
+
score,
|
|
85
|
+
status,
|
|
86
|
+
title
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=ImagesInContentAssessment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImagesInContentAssessment.js","names":["merge","Assessment","AssessmentResult","IMAGES_IN_CONTENT_ID","MAIN_CONTENT_POINTS","DEFAULT_TITLE","DEFAULT_GOOD_TITLE","DEFAULT_GOOD_CONTENT","DEFAULT_BAD_CONTENT","ImagesInContentAssessment","constructor","config","defaultConfig","id","docUrl","ctaType","priority","fixPosition","title","goodTitle","content","good","improve","bad","identifier","_config","getResult","paper","researcher","imageCount","getResearch","assessmentResult","calculatedResult","calculateResult","setScore","score","setStatus","status","setTitle","isApplicable","hasText","getScore","shouldUseTitleForGood"],"sources":["../../../../../src/scoring/assessments/seo/ImagesInContentAssessment.js"],"sourcesContent":["import {merge} from 'lodash';\nimport Assessment from '../assessment';\nimport AssessmentResult from '../../../values/AssessmentResult';\nimport {IMAGES_IN_CONTENT_ID, MAIN_CONTENT_POINTS} from '@axyseo/const/analysis';\n\nconst DEFAULT_TITLE = 'Images in content';\nconst DEFAULT_GOOD_TITLE = 'Images included';\nconst DEFAULT_GOOD_CONTENT = 'Images are included and well placed.';\nconst DEFAULT_BAD_CONTENT =\n 'This post is text heavy. Add images to break up sections and improve reading experience.';\n\n/**\n * Represents the assessment that checks if the text has any images present.\n */\nexport default class ImagesInContentAssessment extends Assessment {\n /**\n * Sets the identifier and the config.\n *\n * @param {object} config The configuration to use.\n *\n * @returns {void}\n */\n constructor(config = {}) {\n super();\n\n const defaultConfig = {\n id: IMAGES_IN_CONTENT_ID,\n docUrl: 'https://docs.avada.io/seo-suite-help-center/seo-audit/on-page-seo/checklist',\n ctaType: 'fix',\n priority: 'high',\n fixPosition: 'description',\n title: DEFAULT_TITLE,\n goodTitle: DEFAULT_GOOD_TITLE,\n content: {\n good: DEFAULT_GOOD_CONTENT,\n improve: '',\n bad: DEFAULT_BAD_CONTENT\n }\n };\n\n this.identifier = IMAGES_IN_CONTENT_ID;\n this._config = merge(defaultConfig, config);\n }\n\n /**\n * Execute the Assessment and return a result.\n *\n * @param {Paper} paper The Paper object to assess.\n * @param {Researcher} researcher The Researcher object containing all available researches.\n * @returns {AssessmentResult} The result of the assessment, containing both a score and a descriptive text.\n */\n getResult({paper, researcher}) {\n this.imageCount = researcher.getResearch('imageCount');\n\n const assessmentResult = new AssessmentResult({config: this._config});\n\n const calculatedResult = this.calculateResult();\n\n assessmentResult.setScore(calculatedResult.score);\n assessmentResult.setStatus(calculatedResult.status);\n assessmentResult.setTitle(calculatedResult.title);\n\n return assessmentResult;\n }\n\n /**\n * Checks whether the paper has text.\n *\n * @param {Paper} paper The paper to use for the assessment.\n *\n * @returns {boolean} True when there is text.\n */\n isApplicable(paper) {\n return paper.hasText();\n }\n\n /**\n *\n * @returns {{score: number, status: string, title: string}}\n */\n calculateResult() {\n let status = (!this.imageCount || this.imageCount === 0) ? 'improve' : 'good'\n\n const score = this.getScore(MAIN_CONTENT_POINTS, status);\n const shouldUseTitleForGood =\n this._config.title !== DEFAULT_TITLE && this._config.goodTitle === DEFAULT_GOOD_TITLE;\n const title =\n status === 'good'\n ? shouldUseTitleForGood\n ? this._config.title\n : this._config.goodTitle || this._config.title\n : this._config.title;\n\n return {\n score,\n status,\n title\n };\n }\n}\n"],"mappings":"AAAA,SAAQA,KAAK,QAAO,QAAQ;AAC5B,OAAOC,UAAU;AACjB,OAAOC,gBAAgB;AACvB,SAAQC,oBAAoB,EAAEC,mBAAmB;AAEjD,MAAMC,aAAa,GAAG,mBAAmB;AACzC,MAAMC,kBAAkB,GAAG,iBAAiB;AAC5C,MAAMC,oBAAoB,GAAG,sCAAsC;AACnE,MAAMC,mBAAmB,GACvB,0FAA0F;;AAE5F;AACA;AACA;AACA,eAAe,MAAMC,yBAAyB,SAASR,UAAU,CAAC;EAChE;AACF;AACA;AACA;AACA;AACA;AACA;EACES,WAAWA,CAACC,MAAM,GAAG,CAAC,CAAC,EAAE;IACvB,KAAK,CAAC,CAAC;IAEP,MAAMC,aAAa,GAAG;MACpBC,EAAE,EAAEV,oBAAoB;MACxBW,MAAM,EAAE,6EAA6E;MACrFC,OAAO,EAAE,KAAK;MACdC,QAAQ,EAAE,MAAM;MAChBC,WAAW,EAAE,aAAa;MAC1BC,KAAK,EAAEb,aAAa;MACpBc,SAAS,EAAEb,kBAAkB;MAC7Bc,OAAO,EAAE;QACPC,IAAI,EAAEd,oBAAoB;QAC1Be,OAAO,EAAE,EAAE;QACXC,GAAG,EAAEf;MACP;IACF,CAAC;IAED,IAAI,CAACgB,UAAU,GAAGrB,oBAAoB;IACtC,IAAI,CAACsB,OAAO,GAAGzB,KAAK,CAACY,aAAa,EAAED,MAAM,CAAC;EAC7C;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEe,SAASA,CAAC;IAACC,KAAK;IAAEC;EAAU,CAAC,EAAE;IAC7B,IAAI,CAACC,UAAU,GAAGD,UAAU,CAACE,WAAW,CAAC,YAAY,CAAC;IAEtD,MAAMC,gBAAgB,GAAG,IAAI7B,gBAAgB,CAAC;MAACS,MAAM,EAAE,IAAI,CAACc;IAAO,CAAC,CAAC;IAErE,MAAMO,gBAAgB,GAAG,IAAI,CAACC,eAAe,CAAC,CAAC;IAE/CF,gBAAgB,CAACG,QAAQ,CAACF,gBAAgB,CAACG,KAAK,CAAC;IACjDJ,gBAAgB,CAACK,SAAS,CAACJ,gBAAgB,CAACK,MAAM,CAAC;IACnDN,gBAAgB,CAACO,QAAQ,CAACN,gBAAgB,CAACd,KAAK,CAAC;IAEjD,OAAOa,gBAAgB;EACzB;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEQ,YAAYA,CAACZ,KAAK,EAAE;IAClB,OAAOA,KAAK,CAACa,OAAO,CAAC,CAAC;EACxB;;EAEA;AACF;AACA;AACA;EACEP,eAAeA,CAAA,EAAG;IAChB,IAAII,MAAM,GAAI,CAAC,IAAI,CAACR,UAAU,IAAI,IAAI,CAACA,UAAU,KAAK,CAAC,GAAI,SAAS,GAAG,MAAM;IAE7E,MAAMM,KAAK,GAAG,IAAI,CAACM,QAAQ,CAACrC,mBAAmB,EAAEiC,MAAM,CAAC;IACxD,MAAMK,qBAAqB,GACzB,IAAI,CAACjB,OAAO,CAACP,KAAK,KAAKb,aAAa,IAAI,IAAI,CAACoB,OAAO,CAACN,SAAS,KAAKb,kBAAkB;IACvF,MAAMY,KAAK,GACTmB,MAAM,KAAK,MAAM,GACbK,qBAAqB,GACnB,IAAI,CAACjB,OAAO,CAACP,KAAK,GAClB,IAAI,CAACO,OAAO,CAACN,SAAS,IAAI,IAAI,CAACM,OAAO,CAACP,KAAK,GAC9C,IAAI,CAACO,OAAO,CAACP,KAAK;IAExB,OAAO;MACLiB,KAAK;MACLE,MAAM;MACNnB;IACF,CAAC;EACH;AACF","ignoreList":[]}
|
|
@@ -8,6 +8,7 @@ import KeyphraseDensityAssessment from "../assessments/seo/KeywordDensityAssessm
|
|
|
8
8
|
import InternalLinksAssessment from "../assessments/seo/InternalLinksAssessment";
|
|
9
9
|
import SlugKeywordAssessment from "../assessments/seo/UrlKeywordAssessment";
|
|
10
10
|
import ImageCount from "../assessments/seo/ImageCountAssessment";
|
|
11
|
+
import ImagesInContentAssessment from "../assessments/seo/ImagesInContentAssessment";
|
|
11
12
|
import TitleWidth from "../assessments/seo/PageTitleWidthAssessment";
|
|
12
13
|
import SingleH1Assessment from "../assessments/seo/SingleH1Assessment";
|
|
13
14
|
import KeyphraseAssessment from "../assessments/seo/KeyphraseAssessment";
|
|
@@ -36,7 +37,7 @@ export default class SEOAssessor extends Assessor {
|
|
|
36
37
|
constructor(researcher, config) {
|
|
37
38
|
super(researcher, config);
|
|
38
39
|
this.type = 'SEOAssessor';
|
|
39
|
-
this._assessments = [new MetaTitleKeywordAssessment(config?.titleKeyword), new TextImagesAssessment(config?.textImages), new NumberInMetaTitleAssessment(config?.numberTitle), new IntroductionKeywordAssessment(config?.introductionKeyword), new MetaDescriptionKeywordAssessment(config?.metaDescriptionKeyword), new MetaDescriptionLength(config?.metaDescriptionLength), new SubheadingsKeyword(config?.subheadingsKeyword), new OutboundLinks(config?.externalLinks), new KeyphraseDensityAssessment(config?.keyphraseDensity), new ImageCount(config?.media), new UrlLengthAssessment(config?.urlLength), new SingleTitleAssessment(config?.singleTitle), new KeyphraseAssessment(config?.keyphrase), new InternalLinksAssessment(config?.internalLinks), new TitleWidth(config?.titleWidth), new SlugKeywordAssessment(config?.slugKeyword), new SingleH1Assessment(config?.singleH1), new SchemaAssessment(config?.schema), new FAQsAssessment(config?.faqs), new KeywordFAQsAssessment(config?.keywordFaqs), new FAQsStructureDataAssessment(config?.faqsStructuredData), new InvalidCharactersInUrl(config?.charactersUrl), new RelatedKeywordsDensityAssessment(config?.relatedKeywordsDensity), new TextLengthAssessment(config?.textLength)];
|
|
40
|
+
this._assessments = [new MetaTitleKeywordAssessment(config?.titleKeyword), new TextImagesAssessment(config?.textImages), new NumberInMetaTitleAssessment(config?.numberTitle), new IntroductionKeywordAssessment(config?.introductionKeyword), new MetaDescriptionKeywordAssessment(config?.metaDescriptionKeyword), new MetaDescriptionLength(config?.metaDescriptionLength), new SubheadingsKeyword(config?.subheadingsKeyword), new OutboundLinks(config?.externalLinks), new KeyphraseDensityAssessment(config?.keyphraseDensity), new ImageCount(config?.media), new ImagesInContentAssessment(config?.imagesInContent), new UrlLengthAssessment(config?.urlLength), new SingleTitleAssessment(config?.singleTitle), new KeyphraseAssessment(config?.keyphrase), new InternalLinksAssessment(config?.internalLinks), new TitleWidth(config?.titleWidth), new SlugKeywordAssessment(config?.slugKeyword), new SingleH1Assessment(config?.singleH1), new SchemaAssessment(config?.schema), new FAQsAssessment(config?.faqs), new KeywordFAQsAssessment(config?.keywordFaqs), new FAQsStructureDataAssessment(config?.faqsStructuredData), new InvalidCharactersInUrl(config?.charactersUrl), new RelatedKeywordsDensityAssessment(config?.relatedKeywordsDensity), new TextLengthAssessment(config?.textLength)];
|
|
40
41
|
}
|
|
41
42
|
}
|
|
42
43
|
//# sourceMappingURL=seoAssessor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seoAssessor.js","names":["Assessor","IntroductionKeywordAssessment","MetaDescriptionKeywordAssessment","MetaDescriptionLength","SubheadingsKeyword","OutboundLinks","KeyphraseDensityAssessment","InternalLinksAssessment","SlugKeywordAssessment","ImageCount","TitleWidth","SingleH1Assessment","KeyphraseAssessment","SingleTitleAssessment","UrlLengthAssessment","NumberInMetaTitleAssessment","TextImagesAssessment","TextLengthAssessment","MetaTitleKeywordAssessment","SchemaAssessment","FAQsAssessment","KeywordFAQsAssessment","InvalidCharactersInUrl","FAQsStructureDataAssessment","RelatedKeywordsDensityAssessment","SEOAssessor","constructor","researcher","config","type","_assessments","titleKeyword","textImages","numberTitle","introductionKeyword","metaDescriptionKeyword","metaDescriptionLength","subheadingsKeyword","externalLinks","keyphraseDensity","media","urlLength","singleTitle","keyphrase","internalLinks","titleWidth","slugKeyword","singleH1","schema","faqs","keywordFaqs","faqsStructuredData","charactersUrl","relatedKeywordsDensity","textLength"],"sources":["../../../../src/scoring/assessors/seoAssessor.js"],"sourcesContent":["import Assessor from './assessor';\nimport IntroductionKeywordAssessment from '../assessments/seo/IntroductionKeywordAssessment';\nimport MetaDescriptionKeywordAssessment from '../assessments/seo/MetaDescriptionKeywordAssessment';\nimport MetaDescriptionLength from '../assessments/seo/MetaDescriptionLengthAssessment';\nimport SubheadingsKeyword from '../assessments/seo/SubHeadingsKeywordAssessment';\nimport OutboundLinks from '../assessments/seo/OutboundLinksAssessment';\nimport KeyphraseDensityAssessment from '../assessments/seo/KeywordDensityAssessment';\nimport InternalLinksAssessment from '../assessments/seo/InternalLinksAssessment';\nimport SlugKeywordAssessment from '../assessments/seo/UrlKeywordAssessment';\nimport ImageCount from '../assessments/seo/ImageCountAssessment';\nimport TitleWidth from '../assessments/seo/PageTitleWidthAssessment';\nimport SingleH1Assessment from '../assessments/seo/SingleH1Assessment';\nimport KeyphraseAssessment from '../assessments/seo/KeyphraseAssessment';\nimport SingleTitleAssessment from '../assessments/seo/SingleTitleAssessment';\nimport UrlLengthAssessment from '../assessments/seo/UrlLengthAssessment';\nimport NumberInMetaTitleAssessment from '../assessments/seo/NumberInMetaTitleAssessment';\nimport TextImagesAssessment from '../assessments/seo/TextImagesAssessment';\nimport TextLengthAssessment from '../assessments/seo/TextLengthAssessment';\nimport MetaTitleKeywordAssessment from '../assessments/seo/MetaTitleKeywordAssessment';\nimport SchemaAssessment from '@axyseo/scoring/assessments/seo/SchemaAssessment';\nimport FAQsAssessment from '../assessments/seo/FAQsAssessment';\nimport KeywordFAQsAssessment from '../assessments/seo/KeywordFAQsAssessment';\nimport InvalidCharactersInUrl from '../assessments/seo/InvalidCharactersInUrl';\nimport FAQsStructureDataAssessment from '@axyseo/scoring/assessments/seo/FAQsStructureDataAssessment';\nimport RelatedKeywordsDensityAssessment from '@axyseo/scoring/assessments/seo/RelatedKeywordsDensityAssessment';\n\n/**\n * The SEOAssessor class is used for the general SEO analysis.\n */\nexport default class SEOAssessor extends Assessor {\n /**\n * Creates a new SEOAssessor instance.\n * @param {Researcher}\tresearcher\tThe researcher to use.\n * @param {Object}\t\t[config]\tThe assessor config.\n */\n constructor(researcher, config) {\n super(researcher, config);\n this.type = 'SEOAssessor';\n\n this._assessments = [\n new MetaTitleKeywordAssessment(config?.titleKeyword),\n new TextImagesAssessment(config?.textImages),\n new NumberInMetaTitleAssessment(config?.numberTitle),\n new IntroductionKeywordAssessment(config?.introductionKeyword),\n new MetaDescriptionKeywordAssessment(config?.metaDescriptionKeyword),\n new MetaDescriptionLength(config?.metaDescriptionLength),\n new SubheadingsKeyword(config?.subheadingsKeyword),\n new OutboundLinks(config?.externalLinks),\n new KeyphraseDensityAssessment(config?.keyphraseDensity),\n new ImageCount(config?.media),\n new UrlLengthAssessment(config?.urlLength),\n new SingleTitleAssessment(config?.singleTitle),\n new KeyphraseAssessment(config?.keyphrase),\n new InternalLinksAssessment(config?.internalLinks),\n new TitleWidth(config?.titleWidth),\n new SlugKeywordAssessment(config?.slugKeyword),\n new SingleH1Assessment(config?.singleH1),\n new SchemaAssessment(config?.schema),\n new FAQsAssessment(config?.faqs),\n new KeywordFAQsAssessment(config?.keywordFaqs),\n new FAQsStructureDataAssessment(config?.faqsStructuredData),\n new InvalidCharactersInUrl(config?.charactersUrl),\n new RelatedKeywordsDensityAssessment(config?.relatedKeywordsDensity),\n new TextLengthAssessment(config?.textLength),\n ];\n }\n}\n"],"mappings":"AAAA,OAAOA,QAAQ;AACf,OAAOC,6BAA6B;AACpC,OAAOC,gCAAgC;AACvC,OAAOC,qBAAqB;AAC5B,OAAOC,kBAAkB;AACzB,OAAOC,aAAa;AACpB,OAAOC,0BAA0B;AACjC,OAAOC,uBAAuB;AAC9B,OAAOC,qBAAqB;AAC5B,OAAOC,UAAU;AACjB,OAAOC,UAAU;AACjB,OAAOC,kBAAkB;AACzB,OAAOC,mBAAmB;AAC1B,OAAOC,qBAAqB;AAC5B,OAAOC,mBAAmB;AAC1B,OAAOC,2BAA2B;AAClC,OAAOC,oBAAoB;AAC3B,OAAOC,oBAAoB;AAC3B,OAAOC,0BAA0B;AACjC,OAAOC,gBAAgB;AACvB,OAAOC,cAAc;AACrB,OAAOC,qBAAqB;AAC5B,OAAOC,sBAAsB;AAC7B,OAAOC,2BAA2B;AAClC,OAAOC,gCAAgC;;AAEvC;AACA;AACA;AACA,eAAe,MAAMC,WAAW,
|
|
1
|
+
{"version":3,"file":"seoAssessor.js","names":["Assessor","IntroductionKeywordAssessment","MetaDescriptionKeywordAssessment","MetaDescriptionLength","SubheadingsKeyword","OutboundLinks","KeyphraseDensityAssessment","InternalLinksAssessment","SlugKeywordAssessment","ImageCount","ImagesInContentAssessment","TitleWidth","SingleH1Assessment","KeyphraseAssessment","SingleTitleAssessment","UrlLengthAssessment","NumberInMetaTitleAssessment","TextImagesAssessment","TextLengthAssessment","MetaTitleKeywordAssessment","SchemaAssessment","FAQsAssessment","KeywordFAQsAssessment","InvalidCharactersInUrl","FAQsStructureDataAssessment","RelatedKeywordsDensityAssessment","SEOAssessor","constructor","researcher","config","type","_assessments","titleKeyword","textImages","numberTitle","introductionKeyword","metaDescriptionKeyword","metaDescriptionLength","subheadingsKeyword","externalLinks","keyphraseDensity","media","imagesInContent","urlLength","singleTitle","keyphrase","internalLinks","titleWidth","slugKeyword","singleH1","schema","faqs","keywordFaqs","faqsStructuredData","charactersUrl","relatedKeywordsDensity","textLength"],"sources":["../../../../src/scoring/assessors/seoAssessor.js"],"sourcesContent":["import Assessor from './assessor';\nimport IntroductionKeywordAssessment from '../assessments/seo/IntroductionKeywordAssessment';\nimport MetaDescriptionKeywordAssessment from '../assessments/seo/MetaDescriptionKeywordAssessment';\nimport MetaDescriptionLength from '../assessments/seo/MetaDescriptionLengthAssessment';\nimport SubheadingsKeyword from '../assessments/seo/SubHeadingsKeywordAssessment';\nimport OutboundLinks from '../assessments/seo/OutboundLinksAssessment';\nimport KeyphraseDensityAssessment from '../assessments/seo/KeywordDensityAssessment';\nimport InternalLinksAssessment from '../assessments/seo/InternalLinksAssessment';\nimport SlugKeywordAssessment from '../assessments/seo/UrlKeywordAssessment';\nimport ImageCount from '../assessments/seo/ImageCountAssessment';\nimport ImagesInContentAssessment from '../assessments/seo/ImagesInContentAssessment';\nimport TitleWidth from '../assessments/seo/PageTitleWidthAssessment';\nimport SingleH1Assessment from '../assessments/seo/SingleH1Assessment';\nimport KeyphraseAssessment from '../assessments/seo/KeyphraseAssessment';\nimport SingleTitleAssessment from '../assessments/seo/SingleTitleAssessment';\nimport UrlLengthAssessment from '../assessments/seo/UrlLengthAssessment';\nimport NumberInMetaTitleAssessment from '../assessments/seo/NumberInMetaTitleAssessment';\nimport TextImagesAssessment from '../assessments/seo/TextImagesAssessment';\nimport TextLengthAssessment from '../assessments/seo/TextLengthAssessment';\nimport MetaTitleKeywordAssessment from '../assessments/seo/MetaTitleKeywordAssessment';\nimport SchemaAssessment from '@axyseo/scoring/assessments/seo/SchemaAssessment';\nimport FAQsAssessment from '../assessments/seo/FAQsAssessment';\nimport KeywordFAQsAssessment from '../assessments/seo/KeywordFAQsAssessment';\nimport InvalidCharactersInUrl from '../assessments/seo/InvalidCharactersInUrl';\nimport FAQsStructureDataAssessment from '@axyseo/scoring/assessments/seo/FAQsStructureDataAssessment';\nimport RelatedKeywordsDensityAssessment from '@axyseo/scoring/assessments/seo/RelatedKeywordsDensityAssessment';\n\n/**\n * The SEOAssessor class is used for the general SEO analysis.\n */\nexport default class SEOAssessor extends Assessor {\n /**\n * Creates a new SEOAssessor instance.\n * @param {Researcher}\tresearcher\tThe researcher to use.\n * @param {Object}\t\t[config]\tThe assessor config.\n */\n constructor(researcher, config) {\n super(researcher, config);\n this.type = 'SEOAssessor';\n\n this._assessments = [\n new MetaTitleKeywordAssessment(config?.titleKeyword),\n new TextImagesAssessment(config?.textImages),\n new NumberInMetaTitleAssessment(config?.numberTitle),\n new IntroductionKeywordAssessment(config?.introductionKeyword),\n new MetaDescriptionKeywordAssessment(config?.metaDescriptionKeyword),\n new MetaDescriptionLength(config?.metaDescriptionLength),\n new SubheadingsKeyword(config?.subheadingsKeyword),\n new OutboundLinks(config?.externalLinks),\n new KeyphraseDensityAssessment(config?.keyphraseDensity),\n new ImageCount(config?.media),\n new ImagesInContentAssessment(config?.imagesInContent),\n new UrlLengthAssessment(config?.urlLength),\n new SingleTitleAssessment(config?.singleTitle),\n new KeyphraseAssessment(config?.keyphrase),\n new InternalLinksAssessment(config?.internalLinks),\n new TitleWidth(config?.titleWidth),\n new SlugKeywordAssessment(config?.slugKeyword),\n new SingleH1Assessment(config?.singleH1),\n new SchemaAssessment(config?.schema),\n new FAQsAssessment(config?.faqs),\n new KeywordFAQsAssessment(config?.keywordFaqs),\n new FAQsStructureDataAssessment(config?.faqsStructuredData),\n new InvalidCharactersInUrl(config?.charactersUrl),\n new RelatedKeywordsDensityAssessment(config?.relatedKeywordsDensity),\n new TextLengthAssessment(config?.textLength),\n ];\n }\n}\n"],"mappings":"AAAA,OAAOA,QAAQ;AACf,OAAOC,6BAA6B;AACpC,OAAOC,gCAAgC;AACvC,OAAOC,qBAAqB;AAC5B,OAAOC,kBAAkB;AACzB,OAAOC,aAAa;AACpB,OAAOC,0BAA0B;AACjC,OAAOC,uBAAuB;AAC9B,OAAOC,qBAAqB;AAC5B,OAAOC,UAAU;AACjB,OAAOC,yBAAyB;AAChC,OAAOC,UAAU;AACjB,OAAOC,kBAAkB;AACzB,OAAOC,mBAAmB;AAC1B,OAAOC,qBAAqB;AAC5B,OAAOC,mBAAmB;AAC1B,OAAOC,2BAA2B;AAClC,OAAOC,oBAAoB;AAC3B,OAAOC,oBAAoB;AAC3B,OAAOC,0BAA0B;AACjC,OAAOC,gBAAgB;AACvB,OAAOC,cAAc;AACrB,OAAOC,qBAAqB;AAC5B,OAAOC,sBAAsB;AAC7B,OAAOC,2BAA2B;AAClC,OAAOC,gCAAgC;;AAEvC;AACA;AACA;AACA,eAAe,MAAMC,WAAW,SAAS1B,QAAQ,CAAC;EAChD;AACF;AACA;AACA;AACA;EACE2B,WAAWA,CAACC,UAAU,EAAEC,MAAM,EAAE;IAC9B,KAAK,CAACD,UAAU,EAAEC,MAAM,CAAC;IACzB,IAAI,CAACC,IAAI,GAAG,aAAa;IAEzB,IAAI,CAACC,YAAY,GAAG,CAClB,IAAIZ,0BAA0B,CAACU,MAAM,EAAEG,YAAY,CAAC,EACpD,IAAIf,oBAAoB,CAACY,MAAM,EAAEI,UAAU,CAAC,EAC5C,IAAIjB,2BAA2B,CAACa,MAAM,EAAEK,WAAW,CAAC,EACpD,IAAIjC,6BAA6B,CAAC4B,MAAM,EAAEM,mBAAmB,CAAC,EAC9D,IAAIjC,gCAAgC,CAAC2B,MAAM,EAAEO,sBAAsB,CAAC,EACpE,IAAIjC,qBAAqB,CAAC0B,MAAM,EAAEQ,qBAAqB,CAAC,EACxD,IAAIjC,kBAAkB,CAACyB,MAAM,EAAES,kBAAkB,CAAC,EAClD,IAAIjC,aAAa,CAACwB,MAAM,EAAEU,aAAa,CAAC,EACxC,IAAIjC,0BAA0B,CAACuB,MAAM,EAAEW,gBAAgB,CAAC,EACxD,IAAI/B,UAAU,CAACoB,MAAM,EAAEY,KAAK,CAAC,EAC7B,IAAI/B,yBAAyB,CAACmB,MAAM,EAAEa,eAAe,CAAC,EACtD,IAAI3B,mBAAmB,CAACc,MAAM,EAAEc,SAAS,CAAC,EAC1C,IAAI7B,qBAAqB,CAACe,MAAM,EAAEe,WAAW,CAAC,EAC9C,IAAI/B,mBAAmB,CAACgB,MAAM,EAAEgB,SAAS,CAAC,EAC1C,IAAItC,uBAAuB,CAACsB,MAAM,EAAEiB,aAAa,CAAC,EAClD,IAAInC,UAAU,CAACkB,MAAM,EAAEkB,UAAU,CAAC,EAClC,IAAIvC,qBAAqB,CAACqB,MAAM,EAAEmB,WAAW,CAAC,EAC9C,IAAIpC,kBAAkB,CAACiB,MAAM,EAAEoB,QAAQ,CAAC,EACxC,IAAI7B,gBAAgB,CAACS,MAAM,EAAEqB,MAAM,CAAC,EACpC,IAAI7B,cAAc,CAACQ,MAAM,EAAEsB,IAAI,CAAC,EAChC,IAAI7B,qBAAqB,CAACO,MAAM,EAAEuB,WAAW,CAAC,EAC9C,IAAI5B,2BAA2B,CAACK,MAAM,EAAEwB,kBAAkB,CAAC,EAC3D,IAAI9B,sBAAsB,CAACM,MAAM,EAAEyB,aAAa,CAAC,EACjD,IAAI7B,gCAAgC,CAACI,MAAM,EAAE0B,sBAAsB,CAAC,EACpE,IAAIrC,oBAAoB,CAACW,MAAM,EAAE2B,UAAU,CAAC,CAC7C;EACH;AACF","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "axyseo",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2025.1.0-blog.11",
|
|
4
4
|
"main": "build/cjs/index.js",
|
|
5
5
|
"module": "build/esm/index.js",
|
|
6
6
|
"exports": {
|
|
@@ -16,8 +16,10 @@
|
|
|
16
16
|
"build:esm": "npx babel src --copy-files --source-maps --out-dir build/esm",
|
|
17
17
|
"build:cjs": "npx babel src --config-file ./babel.config.cjs.js --copy-files --source-maps --out-dir build/cjs",
|
|
18
18
|
"build:types": "tsc",
|
|
19
|
-
"clean": "
|
|
20
|
-
"lint": "eslint src spec --max-warnings 10"
|
|
19
|
+
"clean": "rm -rf build",
|
|
20
|
+
"lint": "eslint src spec --max-warnings 10",
|
|
21
|
+
"version:patch": "npm version prerelease --preid blog --no-git-tag-version",
|
|
22
|
+
"publish:patch": "yarn version:patch && yarn build && npm publish"
|
|
21
23
|
},
|
|
22
24
|
"files": [
|
|
23
25
|
"build/"
|