UNPKG

yoastseo

Version:

Yoast client-side content analysis

79 lines (74 loc) 2.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; /** * Shortlinker to handle appending parameters to a link. */ class Shortlinker { /** * Initialize the Shortlinker class. * * @param {Object} [config={}] Optional configuration. */ constructor(config = {}) { this.configure(config); } /** * Saves the passed configuration. * * @param {Object} config The configuration. * @param {Object} [config.params={}] The default params to create the query string with. * * @returns {void} */ configure(config) { this._config = { params: {}, ...config }; } /** * Creates a query string from a params object. * * @param {Object} params Params for in the query string. * * @returns {string} URI encoded query string. */ static createQueryString(params) { return Object.keys(params).map(key => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`).join("&"); } /** * Creates a link by combining the params from the config and appending them to the url. * * @param {string} url The base url. * @param {Object} [params={}] Optional params for in the url. * * @returns {string} The url with query string. */ append(url, params = {}) { let link = encodeURI(url); const queryString = Shortlinker.createQueryString({ ...this._config.params, ...params }); if (queryString !== "") { link += "?" + queryString; } return link; } /** * Creates an anchor opening tag; uses the append function to create the url. * * @param {string} url The base url. * @param {Object} [params={}] Optional params for in the url. * * @returns {string} The anchor opening tag. */ createAnchorOpeningTag(url, params = {}) { return `<a href='${this.append(url, params)}' target='_blank'>`; } } exports.default = Shortlinker; //# sourceMappingURL=Shortlinker.js.map