axyseo 2.1.21 → 2.1.23
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/scoring/assessments/index.js +0 -2
- package/build/cjs/scoring/assessments/index.js.map +1 -1
- package/build/cjs/scoring/assessments/readability/SentenceLengthInTextAssessment.js +1 -1
- package/build/cjs/scoring/assessments/readability/SentenceLengthInTextAssessment.js.map +1 -1
- package/build/cjs/scoring/assessments/seo/TextLengthAssessment.js +0 -1
- package/build/cjs/scoring/assessments/seo/TextLengthAssessment.js.map +1 -1
- package/build/cjs/scoring/assessors/seoAssessor.js +1 -2
- package/build/cjs/scoring/assessors/seoAssessor.js.map +1 -1
- package/build/esm/scoring/assessments/index.js +0 -2
- package/build/esm/scoring/assessments/index.js.map +1 -1
- package/build/esm/scoring/assessments/readability/SentenceLengthInTextAssessment.js +1 -1
- package/build/esm/scoring/assessments/readability/SentenceLengthInTextAssessment.js.map +1 -1
- package/build/esm/scoring/assessments/seo/TextLengthAssessment.js +0 -1
- package/build/esm/scoring/assessments/seo/TextLengthAssessment.js.map +1 -1
- package/build/esm/scoring/assessors/seoAssessor.js +1 -2
- package/build/esm/scoring/assessors/seoAssessor.js.map +1 -1
- package/package.json +1 -1
|
@@ -12,7 +12,6 @@ var _TransitionWordsAssessment = _interopRequireDefault(require("./readability/T
|
|
|
12
12
|
var _RelatedKeywordsAssessment = _interopRequireDefault(require("./readability/RelatedKeywordsAssessment"));
|
|
13
13
|
var _InternalLinksAssessment = _interopRequireDefault(require("./seo/InternalLinksAssessment"));
|
|
14
14
|
var _IntroductionKeywordAssessment = _interopRequireDefault(require("./seo/IntroductionKeywordAssessment"));
|
|
15
|
-
var _KeyphraseLengthAssessment = _interopRequireDefault(require("./seo/KeyphraseLengthAssessment"));
|
|
16
15
|
var _KeywordDensityAssessment = _interopRequireDefault(require("./seo/KeywordDensityAssessment"));
|
|
17
16
|
var _MetaDescriptionKeywordAssessment = _interopRequireDefault(require("./seo/MetaDescriptionKeywordAssessment"));
|
|
18
17
|
var _MetaDescriptionLengthAssessment = _interopRequireDefault(require("./seo/MetaDescriptionLengthAssessment"));
|
|
@@ -56,7 +55,6 @@ const seo = exports.seo = {
|
|
|
56
55
|
MetaTitleKeywordAssessment: _MetaTitleKeywordAssessment.default,
|
|
57
56
|
IntroductionKeywordAssessment: _IntroductionKeywordAssessment.default,
|
|
58
57
|
SingleTitleAssessment: _SingleTitleAssessment.default,
|
|
59
|
-
KeyphraseLengthAssessment: _KeyphraseLengthAssessment.default,
|
|
60
58
|
UrlLengthAssessment: _UrlLengthAssessment.default,
|
|
61
59
|
KeyphraseDensityAssessment: _KeywordDensityAssessment.default,
|
|
62
60
|
MetaDescriptionKeywordAssessment: _MetaDescriptionKeywordAssessment.default,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_TextLengthAssessment","_interopRequireDefault","require","_ParagraphTooLongAssessment","_SentenceBeginningsAssessment","_SentenceLengthInTextAssessment","_TransitionWordsAssessment","_RelatedKeywordsAssessment","_InternalLinksAssessment","_IntroductionKeywordAssessment","
|
|
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":"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","ignoreList":[]}
|
|
@@ -124,7 +124,7 @@ class SentenceLengthInTextAssessment extends _assessment.default {
|
|
|
124
124
|
*/
|
|
125
125
|
calculateResult(percentage, hasDescription) {
|
|
126
126
|
let status = 'bad';
|
|
127
|
-
if (percentage
|
|
127
|
+
if (percentage <= 0 && hasDescription && percentage <= this._config.recommendedLength) {
|
|
128
128
|
status = 'good';
|
|
129
129
|
}
|
|
130
130
|
const score = this.getScore(_analysis.MAIN_CONTENT_POINTS, status);
|
|
@@ -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","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
|
|
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":[]}
|
|
@@ -8,7 +8,6 @@ var _lodash = require("lodash");
|
|
|
8
8
|
var _assessment = _interopRequireDefault(require("../assessment"));
|
|
9
9
|
var _AssessmentResult = _interopRequireDefault(require("../../../values/AssessmentResult"));
|
|
10
10
|
var _wordCountInText = _interopRequireDefault(require("../../../languageProcessing/researches/wordCountInText"));
|
|
11
|
-
var _countCharacters = _interopRequireDefault(require("../../../languageProcessing/languages/ja/helpers/countCharacters"));
|
|
12
11
|
var _analysis = require("../../../const/analysis");
|
|
13
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
13
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextLengthAssessment.js","names":["_lodash","require","_assessment","_interopRequireDefault","_AssessmentResult","_wordCountInText","
|
|
1
|
+
{"version":3,"file":"TextLengthAssessment.js","names":["_lodash","require","_assessment","_interopRequireDefault","_AssessmentResult","_wordCountInText","_analysis","e","__esModule","default","TextLengthAssessment","Assessment","constructor","config","defaultConfig","id","TEXT_LENGTH_ID","ctaType","docUrl","priority","fixPosition","title","content","good","bad","identifier","_config","merge","getResult","paper","researcher","calculatedResult","calculateResult","assessmentResult","AssessmentResult","setScore","score","setStatus","status","pageType","getPageType","count","wordCount","wordCountInText","rules","product","min","max","badMessage","collection","article","page","rule","getScore","MAIN_CONTENT_POINTS","isApplicable","_default","exports"],"sources":["../../../../../src/scoring/assessments/seo/TextLengthAssessment.js"],"sourcesContent":["import {merge} from 'lodash';\nimport Assessment from '../assessment';\nimport AssessmentResult from '../../../values/AssessmentResult';\nimport wordCountInText from '@axyseo/languageProcessing/researches/wordCountInText';\nimport {MAIN_CONTENT_POINTS, TEXT_LENGTH_ID} from '@axyseo/const/analysis';\n\n/**\n * Represents an assessment that checks the length of the text and gives feedback accordingly.\n */\n class TextLengthAssessment 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: TEXT_LENGTH_ID,\n ctaType: 'fix',\n docUrl:\n 'https://docs.avada.io/seo-suite-help-center/seo-audit/on-page-seo/checklist#text-length',\n priority: 'high',\n fixPosition: 'description',\n title: 'Content length ',\n content: {\n good: 'Content length on target',\n bad:\n 'Write 300 to 500 words. Cover features, specs, sizing, use, and care. '\n }\n };\n\n this.identifier = TEXT_LENGTH_ID;\n this._config = merge(defaultConfig, config);\n }\n\n /**\n * Executes the Assessment and returns a result.\n *\n * @param {Paper} paper The Paper object to assess.\n * @param {Researcher} researcher The Researcher object containing all available researches.\n *\n * @returns {AssessmentResult} The result of the assessment, containing both a score and a descriptive text.\n */\n getResult({paper, researcher}) {\n const calculatedResult = this.calculateResult(paper);\n const assessmentResult = new AssessmentResult({config: this._config});\n assessmentResult.setScore(calculatedResult.score);\n assessmentResult.setStatus(calculatedResult.status);\n\n return assessmentResult;\n }\n\n /**\n *\n * @param paper\n * @returns {{score: number, status: string}}\n */\n calculateResult(paper) {\n const pageType = paper.getPageType();\n const { count: wordCount } = wordCountInText(paper);\n\n const rules = {\n product: {\n min: 300,\n max: 500,\n badMessage:\n 'Write 300 to 500 words. Cover features, specs, sizing, use, and care.'\n },\n collection: {\n min: 150,\n max: 300,\n badMessage:\n 'Write 150 to 300 words. Present the range and give quick buying guidance.'\n },\n article: {\n min: 600,\n max: 1000,\n badMessage:\n 'Write 600 to 1000 words. Explain the topic with clear sections and examples.'\n },\n page: {\n min: 600,\n max: 1000,\n badMessage:\n 'Write 600 to 1000 words. Provide clear, well-structured info for the page’s purpose.'\n }\n };\n\n let status = 'good';\n const rule = rules[pageType];\n\n if (rule && (wordCount < rule.min || wordCount > rule.max)) {\n status = 'bad';\n this._config = merge(this._config, {\n content: {\n good: 'Content length on target',\n bad: rule.badMessage\n }\n });\n }\n\n return {\n score: this.getScore(MAIN_CONTENT_POINTS, status),\n status\n };\n }\n\n /**\n * Checks whether the paper has a keyword and a slug.\n *\n * @param {Paper} paper The paper to use for the assessment.\n * @param {Researcher} researcher The researcher object.\n *\n * @returns {boolean} True if the paper contains a keyword and a slug, and if the keywordCountInSlug research is available on the researcher.\n */\n isApplicable(paper, researcher) {\n return true;\n }\n}\n\nexport default TextLengthAssessment;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _assessor = _interopRequireDefault(require("./assessor"));
|
|
8
8
|
var _IntroductionKeywordAssessment = _interopRequireDefault(require("../assessments/seo/IntroductionKeywordAssessment"));
|
|
9
|
-
var _KeyphraseLengthAssessment = _interopRequireDefault(require("../assessments/seo/KeyphraseLengthAssessment"));
|
|
10
9
|
var _MetaDescriptionKeywordAssessment = _interopRequireDefault(require("../assessments/seo/MetaDescriptionKeywordAssessment"));
|
|
11
10
|
var _MetaDescriptionLengthAssessment = _interopRequireDefault(require("../assessments/seo/MetaDescriptionLengthAssessment"));
|
|
12
11
|
var _SubHeadingsKeywordAssessment = _interopRequireDefault(require("../assessments/seo/SubHeadingsKeywordAssessment"));
|
|
@@ -43,7 +42,7 @@ class SEOAssessor extends _assessor.default {
|
|
|
43
42
|
constructor(researcher, config) {
|
|
44
43
|
super(researcher, config);
|
|
45
44
|
this.type = 'SEOAssessor';
|
|
46
|
-
this._assessments = [new _MetaTitleKeywordAssessment.default(config?.titleKeyword), new _TextImagesAssessment.default(config?.textImages), new _NumberInMetaTitleAssessment.default(config?.numberTitle), new _IntroductionKeywordAssessment.default(config?.introductionKeyword), new
|
|
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)];
|
|
47
46
|
}
|
|
48
47
|
}
|
|
49
48
|
exports.default = SEOAssessor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seoAssessor.js","names":["_assessor","_interopRequireDefault","require","_IntroductionKeywordAssessment","
|
|
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,yBAAA,GAAAX,sBAAA,CAAAC,OAAA;AACA,IAAAW,mBAAA,GAAAZ,sBAAA,CAAAC,OAAA;AACA,IAAAY,oBAAA,GAAAb,sBAAA,CAAAC,OAAA;AACA,IAAAa,sBAAA,GAAAd,sBAAA,CAAAC,OAAA;AACA,IAAAc,oBAAA,GAAAf,sBAAA,CAAAC,OAAA;AACA,IAAAe,4BAAA,GAAAhB,sBAAA,CAAAC,OAAA;AACA,IAAAgB,qBAAA,GAAAjB,sBAAA,CAAAC,OAAA;AACA,IAAAiB,qBAAA,GAAAlB,sBAAA,CAAAC,OAAA;AACA,IAAAkB,2BAAA,GAAAnB,sBAAA,CAAAC,OAAA;AACA,IAAAmB,iBAAA,GAAApB,sBAAA,CAAAC,OAAA;AACA,IAAAoB,eAAA,GAAArB,sBAAA,CAAAC,OAAA;AACA,IAAAqB,sBAAA,GAAAtB,sBAAA,CAAAC,OAAA;AACA,IAAAsB,uBAAA,GAAAvB,sBAAA,CAAAC,OAAA;AACA,IAAAuB,4BAAA,GAAAxB,sBAAA,CAAAC,OAAA;AACA,IAAAwB,iCAAA,GAAAzB,sBAAA,CAAAC,OAAA;AAAgH,SAAAD,uBAAA0B,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEhH;AACA;AACA;AACe,MAAMG,WAAW,SAASC,iBAAQ,CAAC;EAChD;AACF;AACA;AACA;AACA;EACEC,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,IAAIC,mCAA0B,CAACH,MAAM,EAAEI,YAAY,CAAC,EACpD,IAAIC,6BAAoB,CAACL,MAAM,EAAEM,UAAU,CAAC,EAC5C,IAAIC,oCAA2B,CAACP,MAAM,EAAEQ,WAAW,CAAC,EACpD,IAAIC,sCAA6B,CAACT,MAAM,EAAEU,mBAAmB,CAAC,EAC9D,IAAIC,yCAAgC,CAACX,MAAM,EAAEY,sBAAsB,CAAC,EACpE,IAAIC,wCAAqB,CAACb,MAAM,EAAEc,qBAAqB,CAAC,EACxD,IAAIC,qCAAkB,CAACf,MAAM,EAAEgB,kBAAkB,CAAC,EAClD,IAAIC,gCAAa,CAACjB,MAAM,EAAEkB,aAAa,CAAC,EACxC,IAAIC,iCAA0B,CAACnB,MAAM,EAAEoB,gBAAgB,CAAC,EACxD,IAAIC,6BAAU,CAACrB,MAAM,EAAEsB,KAAK,CAAC,EAC7B,IAAIC,4BAAmB,CAACvB,MAAM,EAAEwB,SAAS,CAAC,EAC1C,IAAIC,8BAAqB,CAACzB,MAAM,EAAE0B,WAAW,CAAC,EAC9C,IAAIC,4BAAmB,CAAC3B,MAAM,EAAE4B,SAAS,CAAC,EAC1C,IAAIC,gCAAuB,CAAC7B,MAAM,EAAE8B,aAAa,CAAC,EAClD,IAAIC,iCAAU,CAAC/B,MAAM,EAAEgC,UAAU,CAAC,EAClC,IAAIC,6BAAqB,CAACjC,MAAM,EAAEkC,WAAW,CAAC,EAC9C,IAAIC,2BAAkB,CAACnC,MAAM,EAAEoC,QAAQ,CAAC,EACxC,IAAIC,yBAAgB,CAACrC,MAAM,EAAEsC,MAAM,CAAC,EACpC,IAAIC,uBAAc,CAACvC,MAAM,EAAEwC,IAAI,CAAC,EAChC,IAAIC,8BAAqB,CAACzC,MAAM,EAAE0C,WAAW,CAAC,EAC9C,IAAIC,oCAA2B,CAAC3C,MAAM,EAAE4C,kBAAkB,CAAC,EAC3D,IAAIC,+BAAsB,CAAC7C,MAAM,EAAE8C,aAAa,CAAC,EACjD,IAAIC,yCAAgC,CAAC/C,MAAM,EAAEgD,sBAAsB,CAAC,EACpE,IAAIC,6BAAoB,CAACjD,MAAM,EAAEkD,UAAU,CAAC,CAC7C;EACH;AACF;AAACC,OAAA,CAAAxD,OAAA,GAAAC,WAAA","ignoreList":[]}
|
|
@@ -11,7 +11,6 @@ import RelatedKeywordsAssessment from "./readability/RelatedKeywordsAssessment";
|
|
|
11
11
|
// SEO assessments.
|
|
12
12
|
import InternalLinksAssessment from "./seo/InternalLinksAssessment";
|
|
13
13
|
import IntroductionKeywordAssessment from "./seo/IntroductionKeywordAssessment";
|
|
14
|
-
import KeyphraseLengthAssessment from "./seo/KeyphraseLengthAssessment";
|
|
15
14
|
import KeyphraseDensityAssessment from "./seo/KeywordDensityAssessment";
|
|
16
15
|
import MetaDescriptionKeywordAssessment from "./seo/MetaDescriptionKeywordAssessment";
|
|
17
16
|
import MetaDescriptionLengthAssessment from "./seo/MetaDescriptionLengthAssessment";
|
|
@@ -48,7 +47,6 @@ const seo = {
|
|
|
48
47
|
MetaTitleKeywordAssessment,
|
|
49
48
|
IntroductionKeywordAssessment,
|
|
50
49
|
SingleTitleAssessment,
|
|
51
|
-
KeyphraseLengthAssessment,
|
|
52
50
|
UrlLengthAssessment,
|
|
53
51
|
KeyphraseDensityAssessment,
|
|
54
52
|
MetaDescriptionKeywordAssessment,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["TextLengthAssessment","ParagraphTooLongAssessment","SentenceBeginningsAssessment","SentenceLengthInTextAssessment","TransitionWordsAssessment","RelatedKeywordsAssessment","InternalLinksAssessment","IntroductionKeywordAssessment","
|
|
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;EAClB1B,0BAA0B;EAC1BC,4BAA4B;EAC5BC,8BAA8B;EAC9BC,yBAAyB;EACzBC;AACF,CAAC;;AAED;AACA,MAAMuB,GAAG,GAAG;EACVZ,oBAAoB;EACpBI,2BAA2B;EAC3Bd,uBAAuB;EACvBe,oBAAoB;EACpBC,0BAA0B;EAC1Bf,6BAA6B;EAC7BW,qBAAqB;EACrBC,mBAAmB;EACnBX,0BAA0B;EAC1BC,gCAAgC;EAChCC,+BAA+B;EAC/BC,uBAAuB;EACvBC,wBAAwB;EACxBC,kBAAkB;EAClBC,4BAA4B;EAC5Bd,oBAAoB;EACpBe,qBAAqB;EACrBE,mBAAmB;EACnBM,gBAAgB;EAChBC,gCAAgC;EAChCC,sBAAsB;EACtBC;AACF,CAAC;AAED,SAAQC,WAAW,EAAEC,GAAG","ignoreList":[]}
|
|
@@ -118,7 +118,7 @@ class SentenceLengthInTextAssessment extends Assessment {
|
|
|
118
118
|
*/
|
|
119
119
|
calculateResult(percentage, hasDescription) {
|
|
120
120
|
let status = 'bad';
|
|
121
|
-
if (percentage
|
|
121
|
+
if (percentage <= 0 && hasDescription && percentage <= this._config.recommendedLength) {
|
|
122
122
|
status = 'good';
|
|
123
123
|
}
|
|
124
124
|
const score = this.getScore(MAIN_CONTENT_POINTS, status);
|
|
@@ -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","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
|
|
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":[]}
|
|
@@ -2,7 +2,6 @@ import { merge } from 'lodash';
|
|
|
2
2
|
import Assessment from "../assessment";
|
|
3
3
|
import AssessmentResult from "../../../values/AssessmentResult";
|
|
4
4
|
import wordCountInText from "../../../languageProcessing/researches/wordCountInText";
|
|
5
|
-
import countCharacters from "../../../languageProcessing/languages/ja/helpers/countCharacters";
|
|
6
5
|
import { MAIN_CONTENT_POINTS, TEXT_LENGTH_ID } from "../../../const/analysis";
|
|
7
6
|
|
|
8
7
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextLengthAssessment.js","names":["merge","Assessment","AssessmentResult","wordCountInText","
|
|
1
|
+
{"version":3,"file":"TextLengthAssessment.js","names":["merge","Assessment","AssessmentResult","wordCountInText","MAIN_CONTENT_POINTS","TEXT_LENGTH_ID","TextLengthAssessment","constructor","config","defaultConfig","id","ctaType","docUrl","priority","fixPosition","title","content","good","bad","identifier","_config","getResult","paper","researcher","calculatedResult","calculateResult","assessmentResult","setScore","score","setStatus","status","pageType","getPageType","count","wordCount","rules","product","min","max","badMessage","collection","article","page","rule","getScore","isApplicable"],"sources":["../../../../../src/scoring/assessments/seo/TextLengthAssessment.js"],"sourcesContent":["import {merge} from 'lodash';\nimport Assessment from '../assessment';\nimport AssessmentResult from '../../../values/AssessmentResult';\nimport wordCountInText from '@axyseo/languageProcessing/researches/wordCountInText';\nimport {MAIN_CONTENT_POINTS, TEXT_LENGTH_ID} from '@axyseo/const/analysis';\n\n/**\n * Represents an assessment that checks the length of the text and gives feedback accordingly.\n */\n class TextLengthAssessment 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: TEXT_LENGTH_ID,\n ctaType: 'fix',\n docUrl:\n 'https://docs.avada.io/seo-suite-help-center/seo-audit/on-page-seo/checklist#text-length',\n priority: 'high',\n fixPosition: 'description',\n title: 'Content length ',\n content: {\n good: 'Content length on target',\n bad:\n 'Write 300 to 500 words. Cover features, specs, sizing, use, and care. '\n }\n };\n\n this.identifier = TEXT_LENGTH_ID;\n this._config = merge(defaultConfig, config);\n }\n\n /**\n * Executes the Assessment and returns a result.\n *\n * @param {Paper} paper The Paper object to assess.\n * @param {Researcher} researcher The Researcher object containing all available researches.\n *\n * @returns {AssessmentResult} The result of the assessment, containing both a score and a descriptive text.\n */\n getResult({paper, researcher}) {\n const calculatedResult = this.calculateResult(paper);\n const assessmentResult = new AssessmentResult({config: this._config});\n assessmentResult.setScore(calculatedResult.score);\n assessmentResult.setStatus(calculatedResult.status);\n\n return assessmentResult;\n }\n\n /**\n *\n * @param paper\n * @returns {{score: number, status: string}}\n */\n calculateResult(paper) {\n const pageType = paper.getPageType();\n const { count: wordCount } = wordCountInText(paper);\n\n const rules = {\n product: {\n min: 300,\n max: 500,\n badMessage:\n 'Write 300 to 500 words. Cover features, specs, sizing, use, and care.'\n },\n collection: {\n min: 150,\n max: 300,\n badMessage:\n 'Write 150 to 300 words. Present the range and give quick buying guidance.'\n },\n article: {\n min: 600,\n max: 1000,\n badMessage:\n 'Write 600 to 1000 words. Explain the topic with clear sections and examples.'\n },\n page: {\n min: 600,\n max: 1000,\n badMessage:\n 'Write 600 to 1000 words. Provide clear, well-structured info for the page’s purpose.'\n }\n };\n\n let status = 'good';\n const rule = rules[pageType];\n\n if (rule && (wordCount < rule.min || wordCount > rule.max)) {\n status = 'bad';\n this._config = merge(this._config, {\n content: {\n good: 'Content length on target',\n bad: rule.badMessage\n }\n });\n }\n\n return {\n score: this.getScore(MAIN_CONTENT_POINTS, status),\n status\n };\n }\n\n /**\n * Checks whether the paper has a keyword and a slug.\n *\n * @param {Paper} paper The paper to use for the assessment.\n * @param {Researcher} researcher The researcher object.\n *\n * @returns {boolean} True if the paper contains a keyword and a slug, and if the keywordCountInSlug research is available on the researcher.\n */\n isApplicable(paper, researcher) {\n return true;\n }\n}\n\nexport default TextLengthAssessment;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import Assessor from "./assessor";
|
|
2
2
|
import IntroductionKeywordAssessment from "../assessments/seo/IntroductionKeywordAssessment";
|
|
3
|
-
import KeyphraseLengthAssessment from "../assessments/seo/KeyphraseLengthAssessment";
|
|
4
3
|
import MetaDescriptionKeywordAssessment from "../assessments/seo/MetaDescriptionKeywordAssessment";
|
|
5
4
|
import MetaDescriptionLength from "../assessments/seo/MetaDescriptionLengthAssessment";
|
|
6
5
|
import SubheadingsKeyword from "../assessments/seo/SubHeadingsKeywordAssessment";
|
|
@@ -37,7 +36,7 @@ export default class SEOAssessor extends Assessor {
|
|
|
37
36
|
constructor(researcher, config) {
|
|
38
37
|
super(researcher, config);
|
|
39
38
|
this.type = 'SEOAssessor';
|
|
40
|
-
this._assessments = [new MetaTitleKeywordAssessment(config?.titleKeyword), new TextImagesAssessment(config?.textImages), new NumberInMetaTitleAssessment(config?.numberTitle), new IntroductionKeywordAssessment(config?.introductionKeyword), new
|
|
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)];
|
|
41
40
|
}
|
|
42
41
|
}
|
|
43
42
|
//# sourceMappingURL=seoAssessor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seoAssessor.js","names":["Assessor","IntroductionKeywordAssessment","
|
|
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,SAASzB,QAAQ,CAAC;EAChD;AACF;AACA;AACA;AACA;EACE0B,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,IAAIhC,6BAA6B,CAAC2B,MAAM,EAAEM,mBAAmB,CAAC,EAC9D,IAAIhC,gCAAgC,CAAC0B,MAAM,EAAEO,sBAAsB,CAAC,EACpE,IAAIhC,qBAAqB,CAACyB,MAAM,EAAEQ,qBAAqB,CAAC,EACxD,IAAIhC,kBAAkB,CAACwB,MAAM,EAAES,kBAAkB,CAAC,EAClD,IAAIhC,aAAa,CAACuB,MAAM,EAAEU,aAAa,CAAC,EACxC,IAAIhC,0BAA0B,CAACsB,MAAM,EAAEW,gBAAgB,CAAC,EACxD,IAAI9B,UAAU,CAACmB,MAAM,EAAEY,KAAK,CAAC,EAC7B,IAAI1B,mBAAmB,CAACc,MAAM,EAAEa,SAAS,CAAC,EAC1C,IAAI5B,qBAAqB,CAACe,MAAM,EAAEc,WAAW,CAAC,EAC9C,IAAI9B,mBAAmB,CAACgB,MAAM,EAAEe,SAAS,CAAC,EAC1C,IAAIpC,uBAAuB,CAACqB,MAAM,EAAEgB,aAAa,CAAC,EAClD,IAAIlC,UAAU,CAACkB,MAAM,EAAEiB,UAAU,CAAC,EAClC,IAAIrC,qBAAqB,CAACoB,MAAM,EAAEkB,WAAW,CAAC,EAC9C,IAAInC,kBAAkB,CAACiB,MAAM,EAAEmB,QAAQ,CAAC,EACxC,IAAI5B,gBAAgB,CAACS,MAAM,EAAEoB,MAAM,CAAC,EACpC,IAAI5B,cAAc,CAACQ,MAAM,EAAEqB,IAAI,CAAC,EAChC,IAAI5B,qBAAqB,CAACO,MAAM,EAAEsB,WAAW,CAAC,EAC9C,IAAI3B,2BAA2B,CAACK,MAAM,EAAEuB,kBAAkB,CAAC,EAC3D,IAAI7B,sBAAsB,CAACM,MAAM,EAAEwB,aAAa,CAAC,EACjD,IAAI5B,gCAAgC,CAACI,MAAM,EAAEyB,sBAAsB,CAAC,EACpE,IAAIpC,oBAAoB,CAACW,MAAM,EAAE0B,UAAU,CAAC,CAC7C;EACH;AACF","ignoreList":[]}
|