You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
3.9 KiB
122 lines
3.9 KiB
2 years ago
|
"use strict";
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
exports.isHtml = exports.cloneDom = exports.domEach = exports.cssCase = exports.camelCase = exports.isCheerio = exports.isTag = void 0;
|
||
|
var domhandler_1 = require("domhandler");
|
||
|
/**
|
||
|
* Check if the DOM element is a tag.
|
||
|
*
|
||
|
* `isTag(type)` includes `<script>` and `<style>` tags.
|
||
|
*
|
||
|
* @private
|
||
|
* @category Utils
|
||
|
* @param type - The DOM node to check.
|
||
|
* @returns Whether the node is a tag.
|
||
|
*/
|
||
|
var domhandler_2 = require("domhandler");
|
||
|
Object.defineProperty(exports, "isTag", { enumerable: true, get: function () { return domhandler_2.isTag; } });
|
||
|
/**
|
||
|
* Checks if an object is a Cheerio instance.
|
||
|
*
|
||
|
* @category Utils
|
||
|
* @param maybeCheerio - The object to check.
|
||
|
* @returns Whether the object is a Cheerio instance.
|
||
|
*/
|
||
|
function isCheerio(maybeCheerio) {
|
||
|
return maybeCheerio.cheerio != null;
|
||
|
}
|
||
|
exports.isCheerio = isCheerio;
|
||
|
/**
|
||
|
* Convert a string to camel case notation.
|
||
|
*
|
||
|
* @private
|
||
|
* @category Utils
|
||
|
* @param str - The string to be converted.
|
||
|
* @returns String in camel case notation.
|
||
|
*/
|
||
|
function camelCase(str) {
|
||
|
return str.replace(/[_.-](\w|$)/g, function (_, x) { return x.toUpperCase(); });
|
||
|
}
|
||
|
exports.camelCase = camelCase;
|
||
|
/**
|
||
|
* Convert a string from camel case to "CSS case", where word boundaries are
|
||
|
* described by hyphens ("-") and all characters are lower-case.
|
||
|
*
|
||
|
* @private
|
||
|
* @category Utils
|
||
|
* @param str - The string to be converted.
|
||
|
* @returns String in "CSS case".
|
||
|
*/
|
||
|
function cssCase(str) {
|
||
|
return str.replace(/[A-Z]/g, '-$&').toLowerCase();
|
||
|
}
|
||
|
exports.cssCase = cssCase;
|
||
|
/**
|
||
|
* Iterate over each DOM element without creating intermediary Cheerio instances.
|
||
|
*
|
||
|
* This is indented for use internally to avoid otherwise unnecessary memory
|
||
|
* pressure introduced by _make.
|
||
|
*
|
||
|
* @category Utils
|
||
|
* @param array - The array to iterate over.
|
||
|
* @param fn - Function to call.
|
||
|
* @returns The original instance.
|
||
|
*/
|
||
|
function domEach(array, fn) {
|
||
|
var len = array.length;
|
||
|
for (var i = 0; i < len; i++)
|
||
|
fn(array[i], i);
|
||
|
return array;
|
||
|
}
|
||
|
exports.domEach = domEach;
|
||
|
/**
|
||
|
* Create a deep copy of the given DOM structure. Sets the parents of the copies
|
||
|
* of the passed nodes to `null`.
|
||
|
*
|
||
|
* @private
|
||
|
* @category Utils
|
||
|
* @param dom - The domhandler-compliant DOM structure.
|
||
|
* @returns - The cloned DOM.
|
||
|
*/
|
||
|
function cloneDom(dom) {
|
||
|
var clone = 'length' in dom
|
||
|
? Array.prototype.map.call(dom, function (el) { return (0, domhandler_1.cloneNode)(el, true); })
|
||
|
: [(0, domhandler_1.cloneNode)(dom, true)];
|
||
|
// Add a root node around the cloned nodes
|
||
|
var root = new domhandler_1.Document(clone);
|
||
|
clone.forEach(function (node) {
|
||
|
node.parent = root;
|
||
|
});
|
||
|
return clone;
|
||
|
}
|
||
|
exports.cloneDom = cloneDom;
|
||
|
var CharacterCodes;
|
||
|
(function (CharacterCodes) {
|
||
|
CharacterCodes[CharacterCodes["LowerA"] = 97] = "LowerA";
|
||
|
CharacterCodes[CharacterCodes["LowerZ"] = 122] = "LowerZ";
|
||
|
CharacterCodes[CharacterCodes["UpperA"] = 65] = "UpperA";
|
||
|
CharacterCodes[CharacterCodes["UpperZ"] = 90] = "UpperZ";
|
||
|
CharacterCodes[CharacterCodes["Exclamation"] = 33] = "Exclamation";
|
||
|
})(CharacterCodes || (CharacterCodes = {}));
|
||
|
/**
|
||
|
* Check if string is HTML.
|
||
|
*
|
||
|
* Tests for a `<` within a string, immediate followed by a letter and
|
||
|
* eventually followed by a `>`.
|
||
|
*
|
||
|
* @private
|
||
|
* @category Utils
|
||
|
* @param str - The string to check.
|
||
|
* @returns Indicates if `str` is HTML.
|
||
|
*/
|
||
|
function isHtml(str) {
|
||
|
var tagStart = str.indexOf('<');
|
||
|
if (tagStart < 0 || tagStart > str.length - 3)
|
||
|
return false;
|
||
|
var tagChar = str.charCodeAt(tagStart + 1);
|
||
|
return (((tagChar >= CharacterCodes.LowerA && tagChar <= CharacterCodes.LowerZ) ||
|
||
|
(tagChar >= CharacterCodes.UpperA && tagChar <= CharacterCodes.UpperZ) ||
|
||
|
tagChar === CharacterCodes.Exclamation) &&
|
||
|
str.includes('>', tagStart + 2));
|
||
|
}
|
||
|
exports.isHtml = isHtml;
|
||
|
//# sourceMappingURL=utils.js.map
|