sanity-plugin-seo-tools
Version:
> Upgrading from V2 to V3 is a breaking change. The `seo-tools` input has been replaced by a SEO pane which needs to be set-up using a custom desk structure as per the installation guide. Secondly, the previously automatically provided fields (focus keywo
189 lines (188 loc) • 7.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "getYoastInsightsForContent", {
enumerable: true,
get: function() {
return getYoastInsightsForContent;
}
});
var _jed = /*#__PURE__*/ _interopRequireDefault(require("jed"));
var _justSafeGet = /*#__PURE__*/ _interopRequireDefault(require("just-safe-get"));
var _stringPixelWidth = /*#__PURE__*/ _interopRequireDefault(require("string-pixel-width"));
var _defaultJs = /*#__PURE__*/ _interopRequireDefault(require("yoastseo/src/config/content/default.js"));
var _constants = require("../constants");
function _arrayLikeToArray(arr, len) {
if (len == null || len > arr.length) len = arr.length;
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
return arr2;
}
function _arrayWithHoles(arr) {
if (Array.isArray(arr)) return arr;
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
function _iterableToArrayLimit(arr, i) {
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
if (_i == null) return;
var _arr = [];
var _n = true;
var _d = false;
var _s, _e;
try {
for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
_arr.push(_s.value);
if (i && _arr.length === i) break;
}
} catch (err) {
_d = true;
_e = err;
} finally{
try {
if (!_n && _i["return"] != null) _i["return"]();
} finally{
if (_d) throw _e;
}
}
return _arr;
}
function _nonIterableRest() {
throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _objectSpread(target) {
for(var i = 1; i < arguments.length; i++){
var source = arguments[i] != null ? arguments[i] : {};
var ownKeys = Object.keys(source);
if (typeof Object.getOwnPropertySymbols === "function") {
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
}));
}
ownKeys.forEach(function(key) {
_defineProperty(target, key, source[key]);
});
}
return target;
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function(sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpreadProps(target, source) {
source = source != null ? source : {};
if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function(key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
function _slicedToArray(arr, i) {
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
}
function _unsupportedIterableToArray(o, minLen) {
if (!o) return;
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
var n = Object.prototype.toString.call(o).slice(8, -1);
if (n === "Object" && o.constructor) n = o.constructor.name;
if (n === "Map" || n === "Set") return Array.from(n);
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
}
var IgnoredAssessments = [
"UrlLengthAssessment",
"TaxonomyTextLengthAssessment"
];
var AssessmentClassConfigKeyMap = {
FleschReadingEaseAssessment: "fleschReading",
SentenceLengthInTextAssessment: "sentenceLength"
};
var getYoastInsightsForContent = function(YoastSEO, html, options) {
var paper = new YoastSEO.Paper(html, _objectSpreadProps(_objectSpread({
keyword: options.keyword,
url: options.url,
permalink: options.permalink,
title: options.title
}, options.title && {
titleWidth: (0, _stringPixelWidth.default)(options.title, {
font: "arial",
size: 20
})
}), {
synonyms: options.synonyms.join(","),
description: options.description,
locale: options.langCulture.replace("-", "_")
}));
var researcher = new YoastSEO.Researcher(paper);
var i18n = new _jed.default({
domain: "js-text-analysis",
locale_data: {
"js-text-analysis": {
"": {}
}
}
});
console.debug("YoastSEO.assessments", YoastSEO.assessments);
var _obj;
return Object.entries(YoastSEO.assessments).reduce(function(acc, param) {
var _param = _slicedToArray(param, 2), category = _param[0], assessments = _param[1];
Object.entries(assessments).forEach(function(param) {
var _param = _slicedToArray(param, 2), name = _param[0], value = _param[1];
if (!IgnoredAssessments.includes(name)) {
if (typeof value === "object" && (value === null || value === void 0 ? void 0 : value.hasOwnProperty("getResult"))) {
var result = value.getResult(paper, researcher, i18n);
if (result === null || result === void 0 ? void 0 : result.text) {
acc[category].push(_objectSpreadProps(_objectSpread({}, result), {
rating: YoastSEO.helpers.scoreToRating(result.score)
}));
}
} else if (typeof value === "function") {
var configKey = (0, _justSafeGet.default)(AssessmentClassConfigKeyMap, name, null);
var config = configKey ? (0, _justSafeGet.default)(_defaultJs.default, configKey, {}) : {};
var result1 = new value(config).getResult(paper, researcher, i18n);
if (result1 === null || result1 === void 0 ? void 0 : result1.text) {
acc[category].push(_objectSpreadProps(_objectSpread({}, result1), {
rating: YoastSEO.helpers.scoreToRating(result1.score)
}));
}
}
}
});
if (Object.prototype.hasOwnProperty.call(acc, category)) {
acc[category].sort(function(a, b) {
if (a.rating === "feedback") return -1;
if (b.rating === "feedback") return 1;
return a.score < b.score ? -1 : 1;
});
}
return acc;
}, (_obj = {}, _defineProperty(_obj, _constants.AssessmentCategory.SEO, []), _defineProperty(_obj, _constants.AssessmentCategory.READABILITY, []), _obj));
};
//# sourceMappingURL=getYoastInsightsForContent.js.map