summaryrefslogtreecommitdiff
path: root/includes/external/addressbook/node_modules/cheerio/lib/esm/load.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/external/addressbook/node_modules/cheerio/lib/esm/load.js')
-rw-r--r--includes/external/addressbook/node_modules/cheerio/lib/esm/load.js122
1 files changed, 122 insertions, 0 deletions
diff --git a/includes/external/addressbook/node_modules/cheerio/lib/esm/load.js b/includes/external/addressbook/node_modules/cheerio/lib/esm/load.js
new file mode 100644
index 0000000..96a2db7
--- /dev/null
+++ b/includes/external/addressbook/node_modules/cheerio/lib/esm/load.js
@@ -0,0 +1,122 @@
+import { default as defaultOptions, flatten as flattenOptions, } from './options.js';
+import * as staticMethods from './static.js';
+import { Cheerio } from './cheerio.js';
+import { isHtml, isCheerio } from './utils.js';
+export function getLoad(parse, render) {
+ /**
+ * Create a querying function, bound to a document created from the provided markup.
+ *
+ * Note that similar to web browser contexts, this operation may introduce
+ * `<html>`, `<head>`, and `<body>` elements; set `isDocument` to `false` to
+ * switch to fragment mode and disable this.
+ *
+ * @param content - Markup to be loaded.
+ * @param options - Options for the created instance.
+ * @param isDocument - Allows parser to be switched to fragment mode.
+ * @returns The loaded document.
+ * @see {@link https://cheerio.js.org#loading} for additional usage information.
+ */
+ return function load(content, options, isDocument = true) {
+ if (content == null) {
+ throw new Error('cheerio.load() expects a string');
+ }
+ const internalOpts = { ...defaultOptions, ...flattenOptions(options) };
+ const initialRoot = parse(content, internalOpts, isDocument, null);
+ /** Create an extended class here, so that extensions only live on one instance. */
+ class LoadedCheerio extends Cheerio {
+ _make(selector, context) {
+ const cheerio = initialize(selector, context);
+ cheerio.prevObject = this;
+ return cheerio;
+ }
+ _parse(content, options, isDocument, context) {
+ return parse(content, options, isDocument, context);
+ }
+ _render(dom) {
+ return render(dom, this.options);
+ }
+ }
+ function initialize(selector, context, root = initialRoot, opts) {
+ // $($)
+ if (selector && isCheerio(selector))
+ return selector;
+ const options = {
+ ...internalOpts,
+ ...flattenOptions(opts),
+ };
+ const r = typeof root === 'string'
+ ? [parse(root, options, false, null)]
+ : 'length' in root
+ ? root
+ : [root];
+ const rootInstance = isCheerio(r)
+ ? r
+ : new LoadedCheerio(r, null, options);
+ // Add a cyclic reference, so that calling methods on `_root` never fails.
+ rootInstance._root = rootInstance;
+ // $(), $(null), $(undefined), $(false)
+ if (!selector) {
+ return new LoadedCheerio(undefined, rootInstance, options);
+ }
+ const elements = typeof selector === 'string' && isHtml(selector)
+ ? // $(<html>)
+ parse(selector, options, false, null).children
+ : isNode(selector)
+ ? // $(dom)
+ [selector]
+ : Array.isArray(selector)
+ ? // $([dom])
+ selector
+ : undefined;
+ const instance = new LoadedCheerio(elements, rootInstance, options);
+ if (elements) {
+ return instance;
+ }
+ if (typeof selector !== 'string') {
+ throw new Error('Unexpected type of selector');
+ }
+ // We know that our selector is a string now.
+ let search = selector;
+ const searchContext = !context
+ ? // If we don't have a context, maybe we have a root, from loading
+ rootInstance
+ : typeof context === 'string'
+ ? isHtml(context)
+ ? // $('li', '<ul>...</ul>')
+ new LoadedCheerio([parse(context, options, false, null)], rootInstance, options)
+ : // $('li', 'ul')
+ ((search = `${context} ${search}`), rootInstance)
+ : isCheerio(context)
+ ? // $('li', $)
+ context
+ : // $('li', node), $('li', [nodes])
+ new LoadedCheerio(Array.isArray(context) ? context : [context], rootInstance, options);
+ // If we still don't have a context, return
+ if (!searchContext)
+ return instance;
+ /*
+ * #id, .class, tag
+ */
+ return searchContext.find(search);
+ }
+ // Add in static methods & properties
+ Object.assign(initialize, staticMethods, {
+ load,
+ // `_root` and `_options` are used in static methods.
+ _root: initialRoot,
+ _options: internalOpts,
+ // Add `fn` for plugins
+ fn: LoadedCheerio.prototype,
+ // Add the prototype here to maintain `instanceof` behavior.
+ prototype: LoadedCheerio.prototype,
+ });
+ return initialize;
+ };
+}
+function isNode(obj) {
+ return (!!obj.name ||
+ obj.type === 'root' ||
+ obj.type === 'text' ||
+ obj.type === 'comment');
+}
+//# sourceMappingURL=load.js.map \ No newline at end of file