UNPKG

yoastseo

Version:

Yoast client-side content analysis

381 lines (350 loc) 10.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _lodash = require("lodash"); var _Mark = _interopRequireDefault(require("./Mark")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } /** * A function that only returns an empty that can be used as an empty marker * * @returns {Array} A list of empty marks. */ const emptyMarker = () => []; /** * Represents the assessment result. */ class AssessmentResult { /** * Constructs the AssessmentResult value object. * * @param {Object} [values] The values for this assessment result. * @param {number} [values.score] The score for this assessment result. * @param {string} [values.text] The text for this assessment result. This is the text that can be used as a feedback message associated with the score. * @param {array} [values.marks] The marks for this assessment result. * @param {boolean} [values._hasBetaBadge] Whether this result has a beta badge. * @param {boolean} [values._hasJumps] Whether this result causes a jump to a different field. * @param {string} [values.editFieldName] The edit field name for this assessment result. * @param {string} [values.editFieldAriaLabel] The edit field aria label for this assessment result. * @param {boolean} [values._hasAIFixes] Whether this result has AI fixes. * @constructor * @returns {void} */ constructor(values) { this._hasScore = false; this._identifier = ""; this._hasAIFixes = false; this._hasMarks = false; this._hasJumps = false; this._hasEditFieldName = false; this._hasEditFieldAriaLabel = false; this._marker = emptyMarker; this._hasBetaBadge = false; this.score = 0; this.text = ""; this.marks = []; this.editFieldName = ""; this.editFieldAriaLabel = ""; if ((0, _lodash.isUndefined)(values)) { values = {}; } if (!(0, _lodash.isUndefined)(values.score)) { this.setScore(values.score); } if (!(0, _lodash.isUndefined)(values.text)) { this.setText(values.text); } if (!(0, _lodash.isUndefined)(values.marks)) { this.setMarks(values.marks); } if (!(0, _lodash.isUndefined)(values._hasBetaBadge)) { this.setHasBetaBadge(values._hasBetaBadge); } if (!(0, _lodash.isUndefined)(values._hasJumps)) { this.setHasJumps(values._hasJumps); } if (!(0, _lodash.isUndefined)(values.editFieldName)) { this.setEditFieldName(values.editFieldName); } if (!(0, _lodash.isUndefined)(values.editFieldAriaLabel)) { this.setEditFieldAriaLabel(values.editFieldAriaLabel); } if (!(0, _lodash.isUndefined)(values._hasAIFixes)) { this.setHasAIFixes(values._hasAIFixes); } } /** * Checks if a score is available. * @returns {boolean} Whether or not a score is available. */ hasScore() { return this._hasScore; } /** * Gets the available score. * @returns {number} The score associated with the AssessmentResult. */ getScore() { return this.score; } /** * Sets the score for the assessment. * @param {number} score The score to be used for the score property. * @returns {void} */ setScore(score) { if ((0, _lodash.isNumber)(score)) { this.score = score; this._hasScore = true; } } /** * Checks if a text for the assessment result is available. * @returns {boolean} Whether or not a text is available. */ hasText() { return this.text !== ""; } /** * Gets the available text for the assessment result. * @returns {string} The text associated with the AssessmentResult. */ getText() { return this.text; } /** * Sets the text for the assessment. * @param {string} text The text to be used for the text property. * @returns {void} */ setText(text) { if ((0, _lodash.isUndefined)(text)) { text = ""; } this.text = text; } /** * Gets the available marks. * * @returns {array} The marks associated with the AssessmentResult. */ getMarks() { return this.marks; } /** * Sets the marks for the assessment. * * @param {array} marks The marks to be used for the marks property. * * @returns {void} */ setMarks(marks) { if ((0, _lodash.isArray)(marks)) { this.marks = marks; this._hasMarks = marks.length > 0; } } /** * Sets the identifier. * * @param {string} identifier An alphanumeric identifier for this result. * @returns {void} */ setIdentifier(identifier) { this._identifier = identifier; } /** * Gets the identifier. * * @returns {string} An alphanumeric identifier for this result. */ getIdentifier() { return this._identifier; } /** * Sets the marker, a pure function that can return the marks for a given Paper. * * @param {Function} marker The marker to set. * @returns {void} */ setMarker(marker) { this._marker = marker; } /** * Returns whether this result has a marker that can be used to mark for a given Paper. * * @returns {boolean} Whether this result has a marker. */ hasMarker() { return this._hasMarks && this._marker !== emptyMarker; } /** * Gets the marker, a pure function that can return the marks for a given Paper. * * @returns {Function} The marker. */ getMarker() { return this._marker; } /** * Sets the value of _hasMarks to determine if there is something to mark. * * @param {boolean} hasMarks Is there something to mark. * @returns {void} */ setHasMarks(hasMarks) { this._hasMarks = hasMarks; } /** * Returns the value of _hasMarks to determine if there is something to mark. * * @returns {boolean} Is there something to mark. */ hasMarks() { return this._hasMarks; } /** * Sets the value of _hasBetaBadge to determine if the result has a beta badge. * * @param {boolean} hasBetaBadge Whether this result has a beta badge. * @returns {void} */ setHasBetaBadge(hasBetaBadge) { this._hasBetaBadge = hasBetaBadge; } /** * Returns the value of _hasBetaBadge to determine if the result has a beta badge. * * @returns {bool} Whether this result has a beta badge. */ hasBetaBadge() { return this._hasBetaBadge; } /** * Sets the value of _hasJumps to determine whether it's needed to jump to a different field. * * @param {boolean} hasJumps Whether this result causes a jump to a different field. * @returns {void} */ setHasJumps(hasJumps) { this._hasJumps = hasJumps; } /** * Returns the value of _hasJumps to determine whether it's needed to jump to a different field. * * @returns {bool} Whether this result causes a jump to a different field. */ hasJumps() { return this._hasJumps; } /** * Check if an edit field name is available. * @returns {boolean} Whether or not an edit field name is available. */ hasEditFieldName() { return this._hasEditFieldName; } /** * Gets the edit field name. * @returns {string} The edit field name associated with the AssessmentResult. */ getEditFieldName() { return this.editFieldName; } /** * Sets the edit field name used to determine where an edit button should jump to when clicked. * @param {string} editFieldName The string to be used for the string property * @returns {void} */ setEditFieldName(editFieldName) { if (editFieldName !== "") { this.editFieldName = editFieldName; this._hasEditFieldName = true; } } /** * Check if an edit field aria label is available. * @returns {boolean} Whether or not an edit field aria label is available. */ hasEditFieldAriaLabel() { return this._hasEditFieldAriaLabel; } /** * Gets the edit field aria label. * @returns {string} The edit field aria label associated with the AssessmentResult. */ getEditFieldAriaLabel() { return this.editFieldAriaLabel; } /** * Sets the edit field aria label for the edit button. * @param {string} editFieldAriaLabel The string to be used for the string property * @returns {void} */ setEditFieldAriaLabel(editFieldAriaLabel) { if (editFieldAriaLabel !== "") { this.editFieldAriaLabel = editFieldAriaLabel; this._hasEditFieldAriaLabel = true; } } /** * Sets the value of _hasAIFixes to determine if the result has AI fixes. * * @param {boolean} hasAIFixes Whether this result has AI fixes. * @returns {void} */ setHasAIFixes(hasAIFixes) { this._hasAIFixes = hasAIFixes; } /** * Returns the value of _hasAIFixes to determine if the result has AI fixes. * * @returns {bool} Whether this result has AI fixes. */ hasAIFixes() { return this._hasAIFixes; } /** * Serializes the AssessmentResult instance to an object. * * @returns {Object} The serialized AssessmentResult. */ serialize() { return { _parseClass: "AssessmentResult", identifier: this._identifier, score: this.score, text: this.text, marks: this.marks.map(mark => mark.serialize()), _hasBetaBadge: this._hasBetaBadge, _hasJumps: this._hasJumps, _hasAIFixes: this._hasAIFixes, editFieldName: this.editFieldName, editFieldAriaLabel: this.editFieldAriaLabel }; } /** * Parses the object to an AssessmentResult. * * @param {Object} serialized The serialized object. * * @returns {AssessmentResult} The parsed AssessmentResult. */ static parse(serialized) { const result = new AssessmentResult({ text: serialized.text, score: serialized.score, marks: serialized.marks.map(mark => _Mark.default.parse(mark)), _hasBetaBadge: serialized._hasBetaBadge, _hasJumps: serialized._hasJumps, _hasAIFixes: serialized._hasAIFixes, editFieldName: serialized.editFieldName, editFieldAriaLabel: serialized.editFieldAriaLabel }); result.setIdentifier(serialized.identifier); return result; } } var _default = exports.default = AssessmentResult; //# sourceMappingURL=AssessmentResult.js.map