$
This commit is contained in:
10
node_modules/htmlparser2/lib/CollectingHandler.d.ts
generated
vendored
Normal file
10
node_modules/htmlparser2/lib/CollectingHandler.d.ts
generated
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
import MultiplexHandler from "./MultiplexHandler";
|
||||
import { Handler } from "./Parser";
|
||||
export declare class CollectingHandler extends MultiplexHandler {
|
||||
private readonly cbs;
|
||||
events: [keyof Handler, ...unknown[]][];
|
||||
constructor(cbs?: Partial<Handler>);
|
||||
onreset(): void;
|
||||
restart(): void;
|
||||
}
|
||||
//# sourceMappingURL=CollectingHandler.d.ts.map
|
1
node_modules/htmlparser2/lib/CollectingHandler.d.ts.map
generated
vendored
Normal file
1
node_modules/htmlparser2/lib/CollectingHandler.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"CollectingHandler.d.ts","sourceRoot":"","sources":["../src/CollectingHandler.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAInC,qBAAa,iBAAkB,SAAQ,gBAAgB;IAGvC,OAAO,CAAC,QAAQ,CAAC,GAAG;IAFzB,MAAM,EAAE,CAAC,MAAM,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,EAAE,CAAM;gBAEvB,GAAG,GAAE,OAAO,CAAC,OAAO,CAAM;IAOvD,OAAO,IAAI,IAAI;IAKf,OAAO,IAAI,IAAI;CAOlB"}
|
60
node_modules/htmlparser2/lib/CollectingHandler.js
generated
vendored
Normal file
60
node_modules/htmlparser2/lib/CollectingHandler.js
generated
vendored
Normal file
@@ -0,0 +1,60 @@
|
||||
"use strict";
|
||||
var __extends = (this && this.__extends) || (function () {
|
||||
var extendStatics = function (d, b) {
|
||||
extendStatics = Object.setPrototypeOf ||
|
||||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
||||
return extendStatics(d, b);
|
||||
};
|
||||
return function (d, b) {
|
||||
if (typeof b !== "function" && b !== null)
|
||||
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
||||
extendStatics(d, b);
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
};
|
||||
})();
|
||||
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
|
||||
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
|
||||
to[j] = from[i];
|
||||
return to;
|
||||
};
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.CollectingHandler = void 0;
|
||||
var MultiplexHandler_1 = __importDefault(require("./MultiplexHandler"));
|
||||
var CollectingHandler = /** @class */ (function (_super) {
|
||||
__extends(CollectingHandler, _super);
|
||||
function CollectingHandler(cbs) {
|
||||
if (cbs === void 0) { cbs = {}; }
|
||||
var _this = _super.call(this, function (name) {
|
||||
var _a;
|
||||
var args = [];
|
||||
for (var _i = 1; _i < arguments.length; _i++) {
|
||||
args[_i - 1] = arguments[_i];
|
||||
}
|
||||
_this.events.push(__spreadArray([name], args));
|
||||
(_a = _this.cbs[name]) === null || _a === void 0 ? void 0 : _a.apply(void 0, args);
|
||||
}) || this;
|
||||
_this.cbs = cbs;
|
||||
_this.events = [];
|
||||
return _this;
|
||||
}
|
||||
CollectingHandler.prototype.onreset = function () {
|
||||
var _a, _b;
|
||||
this.events = [];
|
||||
(_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a);
|
||||
};
|
||||
CollectingHandler.prototype.restart = function () {
|
||||
var _a, _b, _c;
|
||||
(_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a);
|
||||
for (var _i = 0, _d = this.events; _i < _d.length; _i++) {
|
||||
var _e = _d[_i], name_1 = _e[0], args = _e.slice(1);
|
||||
(_c = this.cbs[name_1]) === null || _c === void 0 ? void 0 : _c.apply(void 0, args);
|
||||
}
|
||||
};
|
||||
return CollectingHandler;
|
||||
}(MultiplexHandler_1.default));
|
||||
exports.CollectingHandler = CollectingHandler;
|
67
node_modules/htmlparser2/lib/FeedHandler.d.ts
generated
vendored
Normal file
67
node_modules/htmlparser2/lib/FeedHandler.d.ts
generated
vendored
Normal file
@@ -0,0 +1,67 @@
|
||||
import DomHandler, { DomHandlerOptions } from "domhandler";
|
||||
import { ParserOptions } from "./Parser";
|
||||
declare enum FeedItemMediaMedium {
|
||||
image = 0,
|
||||
audio = 1,
|
||||
video = 2,
|
||||
document = 3,
|
||||
executable = 4
|
||||
}
|
||||
declare enum FeedItemMediaExpression {
|
||||
sample = 0,
|
||||
full = 1,
|
||||
nonstop = 2
|
||||
}
|
||||
interface FeedItemMedia {
|
||||
url?: string;
|
||||
fileSize?: number;
|
||||
type?: string;
|
||||
medium: FeedItemMediaMedium | undefined;
|
||||
isDefault: boolean;
|
||||
expression?: FeedItemMediaExpression;
|
||||
bitrate?: number;
|
||||
framerate?: number;
|
||||
samplingrate?: number;
|
||||
channels?: number;
|
||||
duration?: number;
|
||||
height?: number;
|
||||
width?: number;
|
||||
lang?: string;
|
||||
}
|
||||
interface FeedItem {
|
||||
id?: string;
|
||||
title?: string;
|
||||
link?: string;
|
||||
description?: string;
|
||||
pubDate?: Date;
|
||||
media?: FeedItemMedia[];
|
||||
}
|
||||
interface Feed {
|
||||
type?: string;
|
||||
id?: string;
|
||||
title?: string;
|
||||
link?: string;
|
||||
description?: string;
|
||||
updated?: Date;
|
||||
author?: string;
|
||||
items?: FeedItem[];
|
||||
}
|
||||
export declare class FeedHandler extends DomHandler {
|
||||
feed?: Feed;
|
||||
/**
|
||||
*
|
||||
* @param callback
|
||||
* @param options
|
||||
*/
|
||||
constructor(callback?: ((error: Error | null) => void) | DomHandlerOptions, options?: DomHandlerOptions);
|
||||
onend(): void;
|
||||
}
|
||||
/**
|
||||
* Parse a feed.
|
||||
*
|
||||
* @param feed The feed that should be parsed, as a string.
|
||||
* @param options Optionally, options for parsing. When using this option, you should set `xmlMode` to `true`.
|
||||
*/
|
||||
export declare function parseFeed(feed: string, options?: ParserOptions & DomHandlerOptions): Feed | undefined;
|
||||
export {};
|
||||
//# sourceMappingURL=FeedHandler.d.ts.map
|
1
node_modules/htmlparser2/lib/FeedHandler.d.ts.map
generated
vendored
Normal file
1
node_modules/htmlparser2/lib/FeedHandler.d.ts.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
235
node_modules/htmlparser2/lib/FeedHandler.js
generated
vendored
Normal file
235
node_modules/htmlparser2/lib/FeedHandler.js
generated
vendored
Normal file
@@ -0,0 +1,235 @@
|
||||
"use strict";
|
||||
var __extends = (this && this.__extends) || (function () {
|
||||
var extendStatics = function (d, b) {
|
||||
extendStatics = Object.setPrototypeOf ||
|
||||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
||||
return extendStatics(d, b);
|
||||
};
|
||||
return function (d, b) {
|
||||
if (typeof b !== "function" && b !== null)
|
||||
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
||||
extendStatics(d, b);
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
};
|
||||
})();
|
||||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||||
}) : (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
o[k2] = m[k];
|
||||
}));
|
||||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||||
}) : function(o, v) {
|
||||
o["default"] = v;
|
||||
});
|
||||
var __importStar = (this && this.__importStar) || function (mod) {
|
||||
if (mod && mod.__esModule) return mod;
|
||||
var result = {};
|
||||
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||
__setModuleDefault(result, mod);
|
||||
return result;
|
||||
};
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.parseFeed = exports.FeedHandler = void 0;
|
||||
var domhandler_1 = __importDefault(require("domhandler"));
|
||||
var DomUtils = __importStar(require("domutils"));
|
||||
var Parser_1 = require("./Parser");
|
||||
var FeedItemMediaMedium;
|
||||
(function (FeedItemMediaMedium) {
|
||||
FeedItemMediaMedium[FeedItemMediaMedium["image"] = 0] = "image";
|
||||
FeedItemMediaMedium[FeedItemMediaMedium["audio"] = 1] = "audio";
|
||||
FeedItemMediaMedium[FeedItemMediaMedium["video"] = 2] = "video";
|
||||
FeedItemMediaMedium[FeedItemMediaMedium["document"] = 3] = "document";
|
||||
FeedItemMediaMedium[FeedItemMediaMedium["executable"] = 4] = "executable";
|
||||
})(FeedItemMediaMedium || (FeedItemMediaMedium = {}));
|
||||
var FeedItemMediaExpression;
|
||||
(function (FeedItemMediaExpression) {
|
||||
FeedItemMediaExpression[FeedItemMediaExpression["sample"] = 0] = "sample";
|
||||
FeedItemMediaExpression[FeedItemMediaExpression["full"] = 1] = "full";
|
||||
FeedItemMediaExpression[FeedItemMediaExpression["nonstop"] = 2] = "nonstop";
|
||||
})(FeedItemMediaExpression || (FeedItemMediaExpression = {}));
|
||||
// TODO: Consume data as it is coming in
|
||||
var FeedHandler = /** @class */ (function (_super) {
|
||||
__extends(FeedHandler, _super);
|
||||
/**
|
||||
*
|
||||
* @param callback
|
||||
* @param options
|
||||
*/
|
||||
function FeedHandler(callback, options) {
|
||||
var _this = this;
|
||||
if (typeof callback === "object") {
|
||||
callback = undefined;
|
||||
options = callback;
|
||||
}
|
||||
_this = _super.call(this, callback, options) || this;
|
||||
return _this;
|
||||
}
|
||||
FeedHandler.prototype.onend = function () {
|
||||
var _a, _b;
|
||||
var feedRoot = getOneElement(isValidFeed, this.dom);
|
||||
if (!feedRoot) {
|
||||
this.handleCallback(new Error("couldn't find root of feed"));
|
||||
return;
|
||||
}
|
||||
var feed = {};
|
||||
if (feedRoot.name === "feed") {
|
||||
var childs = feedRoot.children;
|
||||
feed.type = "atom";
|
||||
addConditionally(feed, "id", "id", childs);
|
||||
addConditionally(feed, "title", "title", childs);
|
||||
var href = getAttribute("href", getOneElement("link", childs));
|
||||
if (href) {
|
||||
feed.link = href;
|
||||
}
|
||||
addConditionally(feed, "description", "subtitle", childs);
|
||||
var updated = fetch("updated", childs);
|
||||
if (updated) {
|
||||
feed.updated = new Date(updated);
|
||||
}
|
||||
addConditionally(feed, "author", "email", childs, true);
|
||||
feed.items = getElements("entry", childs).map(function (item) {
|
||||
var entry = {};
|
||||
var children = item.children;
|
||||
addConditionally(entry, "id", "id", children);
|
||||
addConditionally(entry, "title", "title", children);
|
||||
var href = getAttribute("href", getOneElement("link", children));
|
||||
if (href) {
|
||||
entry.link = href;
|
||||
}
|
||||
var description = fetch("summary", children) || fetch("content", children);
|
||||
if (description) {
|
||||
entry.description = description;
|
||||
}
|
||||
var pubDate = fetch("updated", children);
|
||||
if (pubDate) {
|
||||
entry.pubDate = new Date(pubDate);
|
||||
}
|
||||
entry.media = getMediaElements(children);
|
||||
return entry;
|
||||
});
|
||||
}
|
||||
else {
|
||||
var childs = (_b = (_a = getOneElement("channel", feedRoot.children)) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : [];
|
||||
feed.type = feedRoot.name.substr(0, 3);
|
||||
feed.id = "";
|
||||
addConditionally(feed, "title", "title", childs);
|
||||
addConditionally(feed, "link", "link", childs);
|
||||
addConditionally(feed, "description", "description", childs);
|
||||
var updated = fetch("lastBuildDate", childs);
|
||||
if (updated) {
|
||||
feed.updated = new Date(updated);
|
||||
}
|
||||
addConditionally(feed, "author", "managingEditor", childs, true);
|
||||
feed.items = getElements("item", feedRoot.children).map(function (item) {
|
||||
var entry = {};
|
||||
var children = item.children;
|
||||
addConditionally(entry, "id", "guid", children);
|
||||
addConditionally(entry, "title", "title", children);
|
||||
addConditionally(entry, "link", "link", children);
|
||||
addConditionally(entry, "description", "description", children);
|
||||
var pubDate = fetch("pubDate", children);
|
||||
if (pubDate)
|
||||
entry.pubDate = new Date(pubDate);
|
||||
entry.media = getMediaElements(children);
|
||||
return entry;
|
||||
});
|
||||
}
|
||||
this.feed = feed;
|
||||
this.handleCallback(null);
|
||||
};
|
||||
return FeedHandler;
|
||||
}(domhandler_1.default));
|
||||
exports.FeedHandler = FeedHandler;
|
||||
function getMediaElements(where) {
|
||||
return getElements("media:content", where).map(function (elem) {
|
||||
var media = {
|
||||
medium: elem.attribs.medium,
|
||||
isDefault: !!elem.attribs.isDefault,
|
||||
};
|
||||
if (elem.attribs.url) {
|
||||
media.url = elem.attribs.url;
|
||||
}
|
||||
if (elem.attribs.fileSize) {
|
||||
media.fileSize = parseInt(elem.attribs.fileSize, 10);
|
||||
}
|
||||
if (elem.attribs.type) {
|
||||
media.type = elem.attribs.type;
|
||||
}
|
||||
if (elem.attribs.expression) {
|
||||
media.expression = elem.attribs
|
||||
.expression;
|
||||
}
|
||||
if (elem.attribs.bitrate) {
|
||||
media.bitrate = parseInt(elem.attribs.bitrate, 10);
|
||||
}
|
||||
if (elem.attribs.framerate) {
|
||||
media.framerate = parseInt(elem.attribs.framerate, 10);
|
||||
}
|
||||
if (elem.attribs.samplingrate) {
|
||||
media.samplingrate = parseInt(elem.attribs.samplingrate, 10);
|
||||
}
|
||||
if (elem.attribs.channels) {
|
||||
media.channels = parseInt(elem.attribs.channels, 10);
|
||||
}
|
||||
if (elem.attribs.duration) {
|
||||
media.duration = parseInt(elem.attribs.duration, 10);
|
||||
}
|
||||
if (elem.attribs.height) {
|
||||
media.height = parseInt(elem.attribs.height, 10);
|
||||
}
|
||||
if (elem.attribs.width) {
|
||||
media.width = parseInt(elem.attribs.width, 10);
|
||||
}
|
||||
if (elem.attribs.lang) {
|
||||
media.lang = elem.attribs.lang;
|
||||
}
|
||||
return media;
|
||||
});
|
||||
}
|
||||
function getElements(tagName, where) {
|
||||
return DomUtils.getElementsByTagName(tagName, where, true);
|
||||
}
|
||||
function getOneElement(tagName, node) {
|
||||
return DomUtils.getElementsByTagName(tagName, node, true, 1)[0];
|
||||
}
|
||||
function fetch(tagName, where, recurse) {
|
||||
if (recurse === void 0) { recurse = false; }
|
||||
return DomUtils.getText(DomUtils.getElementsByTagName(tagName, where, recurse, 1)).trim();
|
||||
}
|
||||
function getAttribute(name, elem) {
|
||||
if (!elem) {
|
||||
return null;
|
||||
}
|
||||
var attribs = elem.attribs;
|
||||
return attribs[name];
|
||||
}
|
||||
function addConditionally(obj, prop, what, where, recurse) {
|
||||
if (recurse === void 0) { recurse = false; }
|
||||
var tmp = fetch(what, where, recurse);
|
||||
if (tmp)
|
||||
obj[prop] = tmp;
|
||||
}
|
||||
function isValidFeed(value) {
|
||||
return value === "rss" || value === "feed" || value === "rdf:RDF";
|
||||
}
|
||||
/**
|
||||
* Parse a feed.
|
||||
*
|
||||
* @param feed The feed that should be parsed, as a string.
|
||||
* @param options Optionally, options for parsing. When using this option, you should set `xmlMode` to `true`.
|
||||
*/
|
||||
function parseFeed(feed, options) {
|
||||
if (options === void 0) { options = { xmlMode: true }; }
|
||||
var handler = new FeedHandler(options);
|
||||
new Parser_1.Parser(handler, options).end(feed);
|
||||
return handler.feed;
|
||||
}
|
||||
exports.parseFeed = parseFeed;
|
28
node_modules/htmlparser2/lib/MultiplexHandler.d.ts
generated
vendored
Normal file
28
node_modules/htmlparser2/lib/MultiplexHandler.d.ts
generated
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
import type { Parser, Handler } from "./Parser";
|
||||
/**
|
||||
* Calls a specific handler function for all events that are encountered.
|
||||
*/
|
||||
export default class MultiplexHandler implements Handler {
|
||||
private readonly func;
|
||||
/**
|
||||
* @param func The function to multiplex all events to.
|
||||
*/
|
||||
constructor(func: (event: keyof Handler, ...args: unknown[]) => void);
|
||||
onattribute(name: string, value: string, quote: string | null | undefined): void;
|
||||
oncdatastart(): void;
|
||||
oncdataend(): void;
|
||||
ontext(text: string): void;
|
||||
onprocessinginstruction(name: string, value: string): void;
|
||||
oncomment(comment: string): void;
|
||||
oncommentend(): void;
|
||||
onclosetag(name: string): void;
|
||||
onopentag(name: string, attribs: {
|
||||
[key: string]: string;
|
||||
}): void;
|
||||
onopentagname(name: string): void;
|
||||
onerror(error: Error): void;
|
||||
onend(): void;
|
||||
onparserinit(parser: Parser): void;
|
||||
onreset(): void;
|
||||
}
|
||||
//# sourceMappingURL=MultiplexHandler.d.ts.map
|
1
node_modules/htmlparser2/lib/MultiplexHandler.d.ts.map
generated
vendored
Normal file
1
node_modules/htmlparser2/lib/MultiplexHandler.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"MultiplexHandler.d.ts","sourceRoot":"","sources":["../src/MultiplexHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEhD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,gBAAiB,YAAW,OAAO;IAKhD,OAAO,CAAC,QAAQ,CAAC,IAAI;IAJzB;;OAEG;gBAEkB,IAAI,EAAE,CACnB,KAAK,EAAE,MAAM,OAAO,EACpB,GAAG,IAAI,EAAE,OAAO,EAAE,KACjB,IAAI;IAGb,WAAW,CACP,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACjC,IAAI;IAGP,YAAY,IAAI,IAAI;IAGpB,UAAU,IAAI,IAAI;IAGlB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAG1B,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAG1D,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAGhC,YAAY,IAAI,IAAI;IAGpB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAG9B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,IAAI;IAGjE,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAGjC,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAG3B,KAAK,IAAI,IAAI;IAGb,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAGlC,OAAO,IAAI,IAAI;CAGlB"}
|
57
node_modules/htmlparser2/lib/MultiplexHandler.js
generated
vendored
Normal file
57
node_modules/htmlparser2/lib/MultiplexHandler.js
generated
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
/**
|
||||
* Calls a specific handler function for all events that are encountered.
|
||||
*/
|
||||
var MultiplexHandler = /** @class */ (function () {
|
||||
/**
|
||||
* @param func The function to multiplex all events to.
|
||||
*/
|
||||
function MultiplexHandler(func) {
|
||||
this.func = func;
|
||||
}
|
||||
MultiplexHandler.prototype.onattribute = function (name, value, quote) {
|
||||
this.func("onattribute", name, value, quote);
|
||||
};
|
||||
MultiplexHandler.prototype.oncdatastart = function () {
|
||||
this.func("oncdatastart");
|
||||
};
|
||||
MultiplexHandler.prototype.oncdataend = function () {
|
||||
this.func("oncdataend");
|
||||
};
|
||||
MultiplexHandler.prototype.ontext = function (text) {
|
||||
this.func("ontext", text);
|
||||
};
|
||||
MultiplexHandler.prototype.onprocessinginstruction = function (name, value) {
|
||||
this.func("onprocessinginstruction", name, value);
|
||||
};
|
||||
MultiplexHandler.prototype.oncomment = function (comment) {
|
||||
this.func("oncomment", comment);
|
||||
};
|
||||
MultiplexHandler.prototype.oncommentend = function () {
|
||||
this.func("oncommentend");
|
||||
};
|
||||
MultiplexHandler.prototype.onclosetag = function (name) {
|
||||
this.func("onclosetag", name);
|
||||
};
|
||||
MultiplexHandler.prototype.onopentag = function (name, attribs) {
|
||||
this.func("onopentag", name, attribs);
|
||||
};
|
||||
MultiplexHandler.prototype.onopentagname = function (name) {
|
||||
this.func("onopentagname", name);
|
||||
};
|
||||
MultiplexHandler.prototype.onerror = function (error) {
|
||||
this.func("onerror", error);
|
||||
};
|
||||
MultiplexHandler.prototype.onend = function () {
|
||||
this.func("onend");
|
||||
};
|
||||
MultiplexHandler.prototype.onparserinit = function (parser) {
|
||||
this.func("onparserinit", parser);
|
||||
};
|
||||
MultiplexHandler.prototype.onreset = function () {
|
||||
this.func("onreset");
|
||||
};
|
||||
return MultiplexHandler;
|
||||
}());
|
||||
exports.default = MultiplexHandler;
|
159
node_modules/htmlparser2/lib/Parser.d.ts
generated
vendored
Normal file
159
node_modules/htmlparser2/lib/Parser.d.ts
generated
vendored
Normal file
@@ -0,0 +1,159 @@
|
||||
import Tokenizer from "./Tokenizer";
|
||||
export interface ParserOptions {
|
||||
/**
|
||||
* Indicates whether special tags (`<script>`, `<style>`, and `<title>`) should get special treatment
|
||||
* and if "empty" tags (eg. `<br>`) can have children. If `false`, the content of special tags
|
||||
* will be text only. For feeds and other XML content (documents that don't consist of HTML),
|
||||
* set this to `true`.
|
||||
*
|
||||
* @default false
|
||||
*/
|
||||
xmlMode?: boolean;
|
||||
/**
|
||||
* Decode entities within the document.
|
||||
*
|
||||
* @default true
|
||||
*/
|
||||
decodeEntities?: boolean;
|
||||
/**
|
||||
* If set to true, all tags will be lowercased.
|
||||
*
|
||||
* @default !xmlMode
|
||||
*/
|
||||
lowerCaseTags?: boolean;
|
||||
/**
|
||||
* If set to `true`, all attribute names will be lowercased. This has noticeable impact on speed.
|
||||
*
|
||||
* @default !xmlMode
|
||||
*/
|
||||
lowerCaseAttributeNames?: boolean;
|
||||
/**
|
||||
* If set to true, CDATA sections will be recognized as text even if the xmlMode option is not enabled.
|
||||
* NOTE: If xmlMode is set to `true` then CDATA sections will always be recognized as text.
|
||||
*
|
||||
* @default xmlMode
|
||||
*/
|
||||
recognizeCDATA?: boolean;
|
||||
/**
|
||||
* If set to `true`, self-closing tags will trigger the onclosetag event even if xmlMode is not set to `true`.
|
||||
* NOTE: If xmlMode is set to `true` then self-closing tags will always be recognized.
|
||||
*
|
||||
* @default xmlMode
|
||||
*/
|
||||
recognizeSelfClosing?: boolean;
|
||||
/**
|
||||
* Allows the default tokenizer to be overwritten.
|
||||
*/
|
||||
Tokenizer?: typeof Tokenizer;
|
||||
}
|
||||
export interface Handler {
|
||||
onparserinit(parser: Parser): void;
|
||||
/**
|
||||
* Resets the handler back to starting state
|
||||
*/
|
||||
onreset(): void;
|
||||
/**
|
||||
* Signals the handler that parsing is done
|
||||
*/
|
||||
onend(): void;
|
||||
onerror(error: Error): void;
|
||||
onclosetag(name: string): void;
|
||||
onopentagname(name: string): void;
|
||||
/**
|
||||
*
|
||||
* @param name Name of the attribute
|
||||
* @param value Value of the attribute.
|
||||
* @param quote Quotes used around the attribute. `null` if the attribute has no quotes around the value, `undefined` if the attribute has no value.
|
||||
*/
|
||||
onattribute(name: string, value: string, quote?: string | undefined | null): void;
|
||||
onopentag(name: string, attribs: {
|
||||
[s: string]: string;
|
||||
}): void;
|
||||
ontext(data: string): void;
|
||||
oncomment(data: string): void;
|
||||
oncdatastart(): void;
|
||||
oncdataend(): void;
|
||||
oncommentend(): void;
|
||||
onprocessinginstruction(name: string, data: string): void;
|
||||
}
|
||||
export declare class Parser {
|
||||
/** The start index of the last event. */
|
||||
startIndex: number;
|
||||
/** The end index of the last event. */
|
||||
endIndex: number | null;
|
||||
private tagname;
|
||||
private attribname;
|
||||
private attribvalue;
|
||||
private attribs;
|
||||
private stack;
|
||||
private readonly foreignContext;
|
||||
private readonly cbs;
|
||||
private readonly options;
|
||||
private readonly lowerCaseTagNames;
|
||||
private readonly lowerCaseAttributeNames;
|
||||
private readonly tokenizer;
|
||||
constructor(cbs: Partial<Handler> | null, options?: ParserOptions);
|
||||
private updatePosition;
|
||||
ontext(data: string): void;
|
||||
onopentagname(name: string): void;
|
||||
onopentagend(): void;
|
||||
onclosetag(name: string): void;
|
||||
onselfclosingtag(): void;
|
||||
private closeCurrentTag;
|
||||
onattribname(name: string): void;
|
||||
onattribdata(value: string): void;
|
||||
onattribend(quote: string | undefined | null): void;
|
||||
private getInstructionName;
|
||||
ondeclaration(value: string): void;
|
||||
onprocessinginstruction(value: string): void;
|
||||
oncomment(value: string): void;
|
||||
oncdata(value: string): void;
|
||||
onerror(err: Error): void;
|
||||
onend(): void;
|
||||
/**
|
||||
* Resets the parser to a blank state, ready to parse a new HTML document
|
||||
*/
|
||||
reset(): void;
|
||||
/**
|
||||
* Resets the parser, then parses a complete document and
|
||||
* pushes it to the handler.
|
||||
*
|
||||
* @param data Document to parse.
|
||||
*/
|
||||
parseComplete(data: string): void;
|
||||
/**
|
||||
* Parses a chunk of data and calls the corresponding callbacks.
|
||||
*
|
||||
* @param chunk Chunk to parse.
|
||||
*/
|
||||
write(chunk: string): void;
|
||||
/**
|
||||
* Parses the end of the buffer and clears the stack, calls onend.
|
||||
*
|
||||
* @param chunk Optional final chunk to parse.
|
||||
*/
|
||||
end(chunk?: string): void;
|
||||
/**
|
||||
* Pauses parsing. The parser won't emit events until `resume` is called.
|
||||
*/
|
||||
pause(): void;
|
||||
/**
|
||||
* Resumes parsing after `pause` was called.
|
||||
*/
|
||||
resume(): void;
|
||||
/**
|
||||
* Alias of `write`, for backwards compatibility.
|
||||
*
|
||||
* @param chunk Chunk to parse.
|
||||
* @deprecated
|
||||
*/
|
||||
parseChunk(chunk: string): void;
|
||||
/**
|
||||
* Alias of `end`, for backwards compatibility.
|
||||
*
|
||||
* @param chunk Optional final chunk to parse.
|
||||
* @deprecated
|
||||
*/
|
||||
done(chunk?: string): void;
|
||||
}
|
||||
//# sourceMappingURL=Parser.d.ts.map
|
1
node_modules/htmlparser2/lib/Parser.d.ts.map
generated
vendored
Normal file
1
node_modules/htmlparser2/lib/Parser.d.ts.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
381
node_modules/htmlparser2/lib/Parser.js
generated
vendored
Normal file
381
node_modules/htmlparser2/lib/Parser.js
generated
vendored
Normal file
@@ -0,0 +1,381 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.Parser = void 0;
|
||||
var Tokenizer_1 = __importDefault(require("./Tokenizer"));
|
||||
var formTags = new Set([
|
||||
"input",
|
||||
"option",
|
||||
"optgroup",
|
||||
"select",
|
||||
"button",
|
||||
"datalist",
|
||||
"textarea",
|
||||
]);
|
||||
var pTag = new Set(["p"]);
|
||||
var openImpliesClose = {
|
||||
tr: new Set(["tr", "th", "td"]),
|
||||
th: new Set(["th"]),
|
||||
td: new Set(["thead", "th", "td"]),
|
||||
body: new Set(["head", "link", "script"]),
|
||||
li: new Set(["li"]),
|
||||
p: pTag,
|
||||
h1: pTag,
|
||||
h2: pTag,
|
||||
h3: pTag,
|
||||
h4: pTag,
|
||||
h5: pTag,
|
||||
h6: pTag,
|
||||
select: formTags,
|
||||
input: formTags,
|
||||
output: formTags,
|
||||
button: formTags,
|
||||
datalist: formTags,
|
||||
textarea: formTags,
|
||||
option: new Set(["option"]),
|
||||
optgroup: new Set(["optgroup", "option"]),
|
||||
dd: new Set(["dt", "dd"]),
|
||||
dt: new Set(["dt", "dd"]),
|
||||
address: pTag,
|
||||
article: pTag,
|
||||
aside: pTag,
|
||||
blockquote: pTag,
|
||||
details: pTag,
|
||||
div: pTag,
|
||||
dl: pTag,
|
||||
fieldset: pTag,
|
||||
figcaption: pTag,
|
||||
figure: pTag,
|
||||
footer: pTag,
|
||||
form: pTag,
|
||||
header: pTag,
|
||||
hr: pTag,
|
||||
main: pTag,
|
||||
nav: pTag,
|
||||
ol: pTag,
|
||||
pre: pTag,
|
||||
section: pTag,
|
||||
table: pTag,
|
||||
ul: pTag,
|
||||
rt: new Set(["rt", "rp"]),
|
||||
rp: new Set(["rt", "rp"]),
|
||||
tbody: new Set(["thead", "tbody"]),
|
||||
tfoot: new Set(["thead", "tbody"]),
|
||||
};
|
||||
var voidElements = new Set([
|
||||
"area",
|
||||
"base",
|
||||
"basefont",
|
||||
"br",
|
||||
"col",
|
||||
"command",
|
||||
"embed",
|
||||
"frame",
|
||||
"hr",
|
||||
"img",
|
||||
"input",
|
||||
"isindex",
|
||||
"keygen",
|
||||
"link",
|
||||
"meta",
|
||||
"param",
|
||||
"source",
|
||||
"track",
|
||||
"wbr",
|
||||
]);
|
||||
var foreignContextElements = new Set(["math", "svg"]);
|
||||
var htmlIntegrationElements = new Set([
|
||||
"mi",
|
||||
"mo",
|
||||
"mn",
|
||||
"ms",
|
||||
"mtext",
|
||||
"annotation-xml",
|
||||
"foreignObject",
|
||||
"desc",
|
||||
"title",
|
||||
]);
|
||||
var reNameEnd = /\s|\//;
|
||||
var Parser = /** @class */ (function () {
|
||||
function Parser(cbs, options) {
|
||||
if (options === void 0) { options = {}; }
|
||||
var _a, _b, _c, _d, _e;
|
||||
/** The start index of the last event. */
|
||||
this.startIndex = 0;
|
||||
/** The end index of the last event. */
|
||||
this.endIndex = null;
|
||||
this.tagname = "";
|
||||
this.attribname = "";
|
||||
this.attribvalue = "";
|
||||
this.attribs = null;
|
||||
this.stack = [];
|
||||
this.foreignContext = [];
|
||||
this.options = options;
|
||||
this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};
|
||||
this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : !options.xmlMode;
|
||||
this.lowerCaseAttributeNames =
|
||||
(_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : !options.xmlMode;
|
||||
this.tokenizer = new ((_c = options.Tokenizer) !== null && _c !== void 0 ? _c : Tokenizer_1.default)(this.options, this);
|
||||
(_e = (_d = this.cbs).onparserinit) === null || _e === void 0 ? void 0 : _e.call(_d, this);
|
||||
}
|
||||
Parser.prototype.updatePosition = function (initialOffset) {
|
||||
if (this.endIndex === null) {
|
||||
if (this.tokenizer.sectionStart <= initialOffset) {
|
||||
this.startIndex = 0;
|
||||
}
|
||||
else {
|
||||
this.startIndex = this.tokenizer.sectionStart - initialOffset;
|
||||
}
|
||||
}
|
||||
else {
|
||||
this.startIndex = this.endIndex + 1;
|
||||
}
|
||||
this.endIndex = this.tokenizer.getAbsoluteIndex();
|
||||
};
|
||||
// Tokenizer event handlers
|
||||
Parser.prototype.ontext = function (data) {
|
||||
var _a, _b;
|
||||
this.updatePosition(1);
|
||||
this.endIndex--;
|
||||
(_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, data);
|
||||
};
|
||||
Parser.prototype.onopentagname = function (name) {
|
||||
var _a, _b;
|
||||
if (this.lowerCaseTagNames) {
|
||||
name = name.toLowerCase();
|
||||
}
|
||||
this.tagname = name;
|
||||
if (!this.options.xmlMode &&
|
||||
Object.prototype.hasOwnProperty.call(openImpliesClose, name)) {
|
||||
var el = void 0;
|
||||
while (this.stack.length > 0 &&
|
||||
openImpliesClose[name].has((el = this.stack[this.stack.length - 1]))) {
|
||||
this.onclosetag(el);
|
||||
}
|
||||
}
|
||||
if (this.options.xmlMode || !voidElements.has(name)) {
|
||||
this.stack.push(name);
|
||||
if (foreignContextElements.has(name)) {
|
||||
this.foreignContext.push(true);
|
||||
}
|
||||
else if (htmlIntegrationElements.has(name)) {
|
||||
this.foreignContext.push(false);
|
||||
}
|
||||
}
|
||||
(_b = (_a = this.cbs).onopentagname) === null || _b === void 0 ? void 0 : _b.call(_a, name);
|
||||
if (this.cbs.onopentag)
|
||||
this.attribs = {};
|
||||
};
|
||||
Parser.prototype.onopentagend = function () {
|
||||
var _a, _b;
|
||||
this.updatePosition(1);
|
||||
if (this.attribs) {
|
||||
(_b = (_a = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a, this.tagname, this.attribs);
|
||||
this.attribs = null;
|
||||
}
|
||||
if (!this.options.xmlMode &&
|
||||
this.cbs.onclosetag &&
|
||||
voidElements.has(this.tagname)) {
|
||||
this.cbs.onclosetag(this.tagname);
|
||||
}
|
||||
this.tagname = "";
|
||||
};
|
||||
Parser.prototype.onclosetag = function (name) {
|
||||
this.updatePosition(1);
|
||||
if (this.lowerCaseTagNames) {
|
||||
name = name.toLowerCase();
|
||||
}
|
||||
if (foreignContextElements.has(name) ||
|
||||
htmlIntegrationElements.has(name)) {
|
||||
this.foreignContext.pop();
|
||||
}
|
||||
if (this.stack.length &&
|
||||
(this.options.xmlMode || !voidElements.has(name))) {
|
||||
var pos = this.stack.lastIndexOf(name);
|
||||
if (pos !== -1) {
|
||||
if (this.cbs.onclosetag) {
|
||||
pos = this.stack.length - pos;
|
||||
while (pos--) {
|
||||
// We know the stack has sufficient elements.
|
||||
this.cbs.onclosetag(this.stack.pop());
|
||||
}
|
||||
}
|
||||
else
|
||||
this.stack.length = pos;
|
||||
}
|
||||
else if (name === "p" && !this.options.xmlMode) {
|
||||
this.onopentagname(name);
|
||||
this.closeCurrentTag();
|
||||
}
|
||||
}
|
||||
else if (!this.options.xmlMode && (name === "br" || name === "p")) {
|
||||
this.onopentagname(name);
|
||||
this.closeCurrentTag();
|
||||
}
|
||||
};
|
||||
Parser.prototype.onselfclosingtag = function () {
|
||||
if (this.options.xmlMode ||
|
||||
this.options.recognizeSelfClosing ||
|
||||
this.foreignContext[this.foreignContext.length - 1]) {
|
||||
this.closeCurrentTag();
|
||||
}
|
||||
else {
|
||||
this.onopentagend();
|
||||
}
|
||||
};
|
||||
Parser.prototype.closeCurrentTag = function () {
|
||||
var _a, _b;
|
||||
var name = this.tagname;
|
||||
this.onopentagend();
|
||||
/*
|
||||
* Self-closing tags will be on the top of the stack
|
||||
* (cheaper check than in onclosetag)
|
||||
*/
|
||||
if (this.stack[this.stack.length - 1] === name) {
|
||||
(_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, name);
|
||||
this.stack.pop();
|
||||
}
|
||||
};
|
||||
Parser.prototype.onattribname = function (name) {
|
||||
if (this.lowerCaseAttributeNames) {
|
||||
name = name.toLowerCase();
|
||||
}
|
||||
this.attribname = name;
|
||||
};
|
||||
Parser.prototype.onattribdata = function (value) {
|
||||
this.attribvalue += value;
|
||||
};
|
||||
Parser.prototype.onattribend = function (quote) {
|
||||
var _a, _b;
|
||||
(_b = (_a = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a, this.attribname, this.attribvalue, quote);
|
||||
if (this.attribs &&
|
||||
!Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) {
|
||||
this.attribs[this.attribname] = this.attribvalue;
|
||||
}
|
||||
this.attribname = "";
|
||||
this.attribvalue = "";
|
||||
};
|
||||
Parser.prototype.getInstructionName = function (value) {
|
||||
var idx = value.search(reNameEnd);
|
||||
var name = idx < 0 ? value : value.substr(0, idx);
|
||||
if (this.lowerCaseTagNames) {
|
||||
name = name.toLowerCase();
|
||||
}
|
||||
return name;
|
||||
};
|
||||
Parser.prototype.ondeclaration = function (value) {
|
||||
if (this.cbs.onprocessinginstruction) {
|
||||
var name_1 = this.getInstructionName(value);
|
||||
this.cbs.onprocessinginstruction("!" + name_1, "!" + value);
|
||||
}
|
||||
};
|
||||
Parser.prototype.onprocessinginstruction = function (value) {
|
||||
if (this.cbs.onprocessinginstruction) {
|
||||
var name_2 = this.getInstructionName(value);
|
||||
this.cbs.onprocessinginstruction("?" + name_2, "?" + value);
|
||||
}
|
||||
};
|
||||
Parser.prototype.oncomment = function (value) {
|
||||
var _a, _b, _c, _d;
|
||||
this.updatePosition(4);
|
||||
(_b = (_a = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a, value);
|
||||
(_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c);
|
||||
};
|
||||
Parser.prototype.oncdata = function (value) {
|
||||
var _a, _b, _c, _d, _e, _f;
|
||||
this.updatePosition(1);
|
||||
if (this.options.xmlMode || this.options.recognizeCDATA) {
|
||||
(_b = (_a = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a);
|
||||
(_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value);
|
||||
(_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e);
|
||||
}
|
||||
else {
|
||||
this.oncomment("[CDATA[" + value + "]]");
|
||||
}
|
||||
};
|
||||
Parser.prototype.onerror = function (err) {
|
||||
var _a, _b;
|
||||
(_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, err);
|
||||
};
|
||||
Parser.prototype.onend = function () {
|
||||
var _a, _b;
|
||||
if (this.cbs.onclosetag) {
|
||||
for (var i = this.stack.length; i > 0; this.cbs.onclosetag(this.stack[--i]))
|
||||
;
|
||||
}
|
||||
(_b = (_a = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a);
|
||||
};
|
||||
/**
|
||||
* Resets the parser to a blank state, ready to parse a new HTML document
|
||||
*/
|
||||
Parser.prototype.reset = function () {
|
||||
var _a, _b, _c, _d;
|
||||
(_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a);
|
||||
this.tokenizer.reset();
|
||||
this.tagname = "";
|
||||
this.attribname = "";
|
||||
this.attribs = null;
|
||||
this.stack = [];
|
||||
(_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this);
|
||||
};
|
||||
/**
|
||||
* Resets the parser, then parses a complete document and
|
||||
* pushes it to the handler.
|
||||
*
|
||||
* @param data Document to parse.
|
||||
*/
|
||||
Parser.prototype.parseComplete = function (data) {
|
||||
this.reset();
|
||||
this.end(data);
|
||||
};
|
||||
/**
|
||||
* Parses a chunk of data and calls the corresponding callbacks.
|
||||
*
|
||||
* @param chunk Chunk to parse.
|
||||
*/
|
||||
Parser.prototype.write = function (chunk) {
|
||||
this.tokenizer.write(chunk);
|
||||
};
|
||||
/**
|
||||
* Parses the end of the buffer and clears the stack, calls onend.
|
||||
*
|
||||
* @param chunk Optional final chunk to parse.
|
||||
*/
|
||||
Parser.prototype.end = function (chunk) {
|
||||
this.tokenizer.end(chunk);
|
||||
};
|
||||
/**
|
||||
* Pauses parsing. The parser won't emit events until `resume` is called.
|
||||
*/
|
||||
Parser.prototype.pause = function () {
|
||||
this.tokenizer.pause();
|
||||
};
|
||||
/**
|
||||
* Resumes parsing after `pause` was called.
|
||||
*/
|
||||
Parser.prototype.resume = function () {
|
||||
this.tokenizer.resume();
|
||||
};
|
||||
/**
|
||||
* Alias of `write`, for backwards compatibility.
|
||||
*
|
||||
* @param chunk Chunk to parse.
|
||||
* @deprecated
|
||||
*/
|
||||
Parser.prototype.parseChunk = function (chunk) {
|
||||
this.write(chunk);
|
||||
};
|
||||
/**
|
||||
* Alias of `end`, for backwards compatibility.
|
||||
*
|
||||
* @param chunk Optional final chunk to parse.
|
||||
* @deprecated
|
||||
*/
|
||||
Parser.prototype.done = function (chunk) {
|
||||
this.end(chunk);
|
||||
};
|
||||
return Parser;
|
||||
}());
|
||||
exports.Parser = Parser;
|
182
node_modules/htmlparser2/lib/Tokenizer.d.ts
generated
vendored
Normal file
182
node_modules/htmlparser2/lib/Tokenizer.d.ts
generated
vendored
Normal file
@@ -0,0 +1,182 @@
|
||||
/** All the states the tokenizer can be in. */
|
||||
declare const enum State {
|
||||
Text = 1,
|
||||
BeforeTagName = 2,
|
||||
InTagName = 3,
|
||||
InSelfClosingTag = 4,
|
||||
BeforeClosingTagName = 5,
|
||||
InClosingTagName = 6,
|
||||
AfterClosingTagName = 7,
|
||||
BeforeAttributeName = 8,
|
||||
InAttributeName = 9,
|
||||
AfterAttributeName = 10,
|
||||
BeforeAttributeValue = 11,
|
||||
InAttributeValueDq = 12,
|
||||
InAttributeValueSq = 13,
|
||||
InAttributeValueNq = 14,
|
||||
BeforeDeclaration = 15,
|
||||
InDeclaration = 16,
|
||||
InProcessingInstruction = 17,
|
||||
BeforeComment = 18,
|
||||
InComment = 19,
|
||||
InSpecialComment = 20,
|
||||
AfterComment1 = 21,
|
||||
AfterComment2 = 22,
|
||||
BeforeCdata1 = 23,
|
||||
BeforeCdata2 = 24,
|
||||
BeforeCdata3 = 25,
|
||||
BeforeCdata4 = 26,
|
||||
BeforeCdata5 = 27,
|
||||
BeforeCdata6 = 28,
|
||||
InCdata = 29,
|
||||
AfterCdata1 = 30,
|
||||
AfterCdata2 = 31,
|
||||
BeforeSpecialS = 32,
|
||||
BeforeSpecialSEnd = 33,
|
||||
BeforeScript1 = 34,
|
||||
BeforeScript2 = 35,
|
||||
BeforeScript3 = 36,
|
||||
BeforeScript4 = 37,
|
||||
BeforeScript5 = 38,
|
||||
AfterScript1 = 39,
|
||||
AfterScript2 = 40,
|
||||
AfterScript3 = 41,
|
||||
AfterScript4 = 42,
|
||||
AfterScript5 = 43,
|
||||
BeforeStyle1 = 44,
|
||||
BeforeStyle2 = 45,
|
||||
BeforeStyle3 = 46,
|
||||
BeforeStyle4 = 47,
|
||||
AfterStyle1 = 48,
|
||||
AfterStyle2 = 49,
|
||||
AfterStyle3 = 50,
|
||||
AfterStyle4 = 51,
|
||||
BeforeSpecialT = 52,
|
||||
BeforeSpecialTEnd = 53,
|
||||
BeforeTitle1 = 54,
|
||||
BeforeTitle2 = 55,
|
||||
BeforeTitle3 = 56,
|
||||
BeforeTitle4 = 57,
|
||||
AfterTitle1 = 58,
|
||||
AfterTitle2 = 59,
|
||||
AfterTitle3 = 60,
|
||||
AfterTitle4 = 61,
|
||||
BeforeEntity = 62,
|
||||
BeforeNumericEntity = 63,
|
||||
InNamedEntity = 64,
|
||||
InNumericEntity = 65,
|
||||
InHexEntity = 66
|
||||
}
|
||||
export interface Callbacks {
|
||||
onattribdata(value: string): void;
|
||||
onattribend(quote: string | undefined | null): void;
|
||||
onattribname(name: string): void;
|
||||
oncdata(data: string): void;
|
||||
onclosetag(name: string): void;
|
||||
oncomment(data: string): void;
|
||||
ondeclaration(content: string): void;
|
||||
onend(): void;
|
||||
onerror(error: Error, state?: State): void;
|
||||
onopentagend(): void;
|
||||
onopentagname(name: string): void;
|
||||
onprocessinginstruction(instruction: string): void;
|
||||
onselfclosingtag(): void;
|
||||
ontext(value: string): void;
|
||||
}
|
||||
export default class Tokenizer {
|
||||
/** The current state the tokenizer is in. */
|
||||
_state: State;
|
||||
/** The read buffer. */
|
||||
private buffer;
|
||||
/** The beginning of the section that is currently being read. */
|
||||
sectionStart: number;
|
||||
/** The index within the buffer that we are currently looking at. */
|
||||
_index: number;
|
||||
/**
|
||||
* Data that has already been processed will be removed from the buffer occasionally.
|
||||
* `_bufferOffset` keeps track of how many characters have been removed, to make sure position information is accurate.
|
||||
*/
|
||||
private bufferOffset;
|
||||
/** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */
|
||||
private baseState;
|
||||
/** For special parsing behavior inside of script and style tags. */
|
||||
private special;
|
||||
/** Indicates whether the tokenizer has been paused. */
|
||||
private running;
|
||||
/** Indicates whether the tokenizer has finished running / `.end` has been called. */
|
||||
private ended;
|
||||
private readonly cbs;
|
||||
private readonly xmlMode;
|
||||
private readonly decodeEntities;
|
||||
constructor(options: {
|
||||
xmlMode?: boolean;
|
||||
decodeEntities?: boolean;
|
||||
} | null, cbs: Callbacks);
|
||||
reset(): void;
|
||||
write(chunk: string): void;
|
||||
end(chunk?: string): void;
|
||||
pause(): void;
|
||||
resume(): void;
|
||||
/**
|
||||
* The current index within all of the written data.
|
||||
*/
|
||||
getAbsoluteIndex(): number;
|
||||
private stateText;
|
||||
/**
|
||||
* HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.
|
||||
*
|
||||
* XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).
|
||||
* We allow anything that wouldn't end the tag.
|
||||
*/
|
||||
private isTagStartChar;
|
||||
private stateBeforeTagName;
|
||||
private stateInTagName;
|
||||
private stateBeforeClosingTagName;
|
||||
private stateInClosingTagName;
|
||||
private stateAfterClosingTagName;
|
||||
private stateBeforeAttributeName;
|
||||
private stateInSelfClosingTag;
|
||||
private stateInAttributeName;
|
||||
private stateAfterAttributeName;
|
||||
private stateBeforeAttributeValue;
|
||||
private handleInAttributeValue;
|
||||
private stateInAttributeValueDoubleQuotes;
|
||||
private stateInAttributeValueSingleQuotes;
|
||||
private stateInAttributeValueNoQuotes;
|
||||
private stateBeforeDeclaration;
|
||||
private stateInDeclaration;
|
||||
private stateInProcessingInstruction;
|
||||
private stateBeforeComment;
|
||||
private stateInComment;
|
||||
private stateInSpecialComment;
|
||||
private stateAfterComment1;
|
||||
private stateAfterComment2;
|
||||
private stateBeforeCdata6;
|
||||
private stateInCdata;
|
||||
private stateAfterCdata1;
|
||||
private stateAfterCdata2;
|
||||
private stateBeforeSpecialS;
|
||||
private stateBeforeSpecialSEnd;
|
||||
private stateBeforeSpecialLast;
|
||||
private stateAfterSpecialLast;
|
||||
private parseFixedEntity;
|
||||
private parseLegacyEntity;
|
||||
private stateInNamedEntity;
|
||||
private decodeNumericEntity;
|
||||
private stateInNumericEntity;
|
||||
private stateInHexEntity;
|
||||
private cleanup;
|
||||
/**
|
||||
* Iterates through the buffer, calling the function corresponding to the current state.
|
||||
*
|
||||
* States that are more likely to be hit are higher up, as a performance improvement.
|
||||
*/
|
||||
private parse;
|
||||
private finish;
|
||||
private handleTrailingData;
|
||||
private getSection;
|
||||
private emitToken;
|
||||
private emitPartial;
|
||||
}
|
||||
export {};
|
||||
//# sourceMappingURL=Tokenizer.d.ts.map
|
1
node_modules/htmlparser2/lib/Tokenizer.d.ts.map
generated
vendored
Normal file
1
node_modules/htmlparser2/lib/Tokenizer.d.ts.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
909
node_modules/htmlparser2/lib/Tokenizer.js
generated
vendored
Normal file
909
node_modules/htmlparser2/lib/Tokenizer.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
16
node_modules/htmlparser2/lib/WritableStream.d.ts
generated
vendored
Normal file
16
node_modules/htmlparser2/lib/WritableStream.d.ts
generated
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
/// <reference types="node" />
|
||||
import { Handler, ParserOptions } from "./Parser";
|
||||
import { Writable } from "stream";
|
||||
/**
|
||||
* WritableStream makes the `Parser` interface available as a NodeJS stream.
|
||||
*
|
||||
* @see Parser
|
||||
*/
|
||||
export declare class WritableStream extends Writable {
|
||||
private readonly _parser;
|
||||
private readonly _decoder;
|
||||
constructor(cbs: Partial<Handler>, options?: ParserOptions);
|
||||
_write(chunk: string | Buffer, encoding: string, cb: () => void): void;
|
||||
_final(cb: () => void): void;
|
||||
}
|
||||
//# sourceMappingURL=WritableStream.d.ts.map
|
1
node_modules/htmlparser2/lib/WritableStream.d.ts.map
generated
vendored
Normal file
1
node_modules/htmlparser2/lib/WritableStream.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"WritableStream.d.ts","sourceRoot":"","sources":["../src/WritableStream.ts"],"names":[],"mappings":";AAAA,OAAO,EAAU,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAK1D,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAQlC;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;gBAEpC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa;IAK1D,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAOtE,MAAM,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;CAI/B"}
|
53
node_modules/htmlparser2/lib/WritableStream.js
generated
vendored
Normal file
53
node_modules/htmlparser2/lib/WritableStream.js
generated
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
"use strict";
|
||||
var __extends = (this && this.__extends) || (function () {
|
||||
var extendStatics = function (d, b) {
|
||||
extendStatics = Object.setPrototypeOf ||
|
||||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
||||
return extendStatics(d, b);
|
||||
};
|
||||
return function (d, b) {
|
||||
if (typeof b !== "function" && b !== null)
|
||||
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
||||
extendStatics(d, b);
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
};
|
||||
})();
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.WritableStream = void 0;
|
||||
var Parser_1 = require("./Parser");
|
||||
/*
|
||||
* NOTE: If either of these two imports produces a type error,
|
||||
* please update your @types/node dependency!
|
||||
*/
|
||||
var stream_1 = require("stream");
|
||||
var string_decoder_1 = require("string_decoder");
|
||||
// Following the example in https://nodejs.org/api/stream.html#stream_decoding_buffers_in_a_writable_stream
|
||||
function isBuffer(_chunk, encoding) {
|
||||
return encoding === "buffer";
|
||||
}
|
||||
/**
|
||||
* WritableStream makes the `Parser` interface available as a NodeJS stream.
|
||||
*
|
||||
* @see Parser
|
||||
*/
|
||||
var WritableStream = /** @class */ (function (_super) {
|
||||
__extends(WritableStream, _super);
|
||||
function WritableStream(cbs, options) {
|
||||
var _this = _super.call(this, { decodeStrings: false }) || this;
|
||||
_this._decoder = new string_decoder_1.StringDecoder();
|
||||
_this._parser = new Parser_1.Parser(cbs, options);
|
||||
return _this;
|
||||
}
|
||||
WritableStream.prototype._write = function (chunk, encoding, cb) {
|
||||
this._parser.write(isBuffer(chunk, encoding) ? this._decoder.write(chunk) : chunk);
|
||||
cb();
|
||||
};
|
||||
WritableStream.prototype._final = function (cb) {
|
||||
this._parser.end(this._decoder.end());
|
||||
cb();
|
||||
};
|
||||
return WritableStream;
|
||||
}(stream_1.Writable));
|
||||
exports.WritableStream = WritableStream;
|
39
node_modules/htmlparser2/lib/index.d.ts
generated
vendored
Normal file
39
node_modules/htmlparser2/lib/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
import { Parser, ParserOptions } from "./Parser";
|
||||
export { Parser, ParserOptions };
|
||||
import { DomHandler, DomHandlerOptions, Node, Element, Document } from "domhandler";
|
||||
export { DomHandler, DomHandlerOptions };
|
||||
declare type Options = ParserOptions & DomHandlerOptions;
|
||||
/**
|
||||
* Parses the data, returns the resulting document.
|
||||
*
|
||||
* @param data The data that should be parsed.
|
||||
* @param options Optional options for the parser and DOM builder.
|
||||
*/
|
||||
export declare function parseDocument(data: string, options?: Options): Document;
|
||||
/**
|
||||
* Parses data, returns an array of the root nodes.
|
||||
*
|
||||
* Note that the root nodes still have a `Document` node as their parent.
|
||||
* Use `parseDocument` to get the `Document` node instead.
|
||||
*
|
||||
* @param data The data that should be parsed.
|
||||
* @param options Optional options for the parser and DOM builder.
|
||||
* @deprecated Use `parseDocument` instead.
|
||||
*/
|
||||
export declare function parseDOM(data: string, options?: Options): Node[];
|
||||
/**
|
||||
* Creates a parser instance, with an attached DOM handler.
|
||||
*
|
||||
* @param cb A callback that will be called once parsing has been completed.
|
||||
* @param options Optional options for the parser and DOM builder.
|
||||
* @param elementCb An optional callback that will be called every time a tag has been completed inside of the DOM.
|
||||
*/
|
||||
export declare function createDomStream(cb: (error: Error | null, dom: Node[]) => void, options?: Options, elementCb?: (element: Element) => void): Parser;
|
||||
export { default as Tokenizer, Callbacks as TokenizerCallbacks, } from "./Tokenizer";
|
||||
import * as ElementType from "domelementtype";
|
||||
export { ElementType };
|
||||
export * from "./FeedHandler";
|
||||
export * as DomUtils from "domutils";
|
||||
export { DomHandler as DefaultHandler };
|
||||
export { FeedHandler as RssHandler } from "./FeedHandler";
|
||||
//# sourceMappingURL=index.d.ts.map
|
1
node_modules/htmlparser2/lib/index.d.ts.map
generated
vendored
Normal file
1
node_modules/htmlparser2/lib/index.d.ts.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
84
node_modules/htmlparser2/lib/index.js
generated
vendored
Normal file
84
node_modules/htmlparser2/lib/index.js
generated
vendored
Normal file
@@ -0,0 +1,84 @@
|
||||
"use strict";
|
||||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||||
}) : (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
o[k2] = m[k];
|
||||
}));
|
||||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||||
}) : function(o, v) {
|
||||
o["default"] = v;
|
||||
});
|
||||
var __importStar = (this && this.__importStar) || function (mod) {
|
||||
if (mod && mod.__esModule) return mod;
|
||||
var result = {};
|
||||
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||
__setModuleDefault(result, mod);
|
||||
return result;
|
||||
};
|
||||
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
||||
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
||||
};
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.RssHandler = exports.DefaultHandler = exports.DomUtils = exports.ElementType = exports.Tokenizer = exports.createDomStream = exports.parseDOM = exports.parseDocument = exports.DomHandler = exports.Parser = void 0;
|
||||
var Parser_1 = require("./Parser");
|
||||
Object.defineProperty(exports, "Parser", { enumerable: true, get: function () { return Parser_1.Parser; } });
|
||||
var domhandler_1 = require("domhandler");
|
||||
Object.defineProperty(exports, "DomHandler", { enumerable: true, get: function () { return domhandler_1.DomHandler; } });
|
||||
Object.defineProperty(exports, "DefaultHandler", { enumerable: true, get: function () { return domhandler_1.DomHandler; } });
|
||||
// Helper methods
|
||||
/**
|
||||
* Parses the data, returns the resulting document.
|
||||
*
|
||||
* @param data The data that should be parsed.
|
||||
* @param options Optional options for the parser and DOM builder.
|
||||
*/
|
||||
function parseDocument(data, options) {
|
||||
var handler = new domhandler_1.DomHandler(undefined, options);
|
||||
new Parser_1.Parser(handler, options).end(data);
|
||||
return handler.root;
|
||||
}
|
||||
exports.parseDocument = parseDocument;
|
||||
/**
|
||||
* Parses data, returns an array of the root nodes.
|
||||
*
|
||||
* Note that the root nodes still have a `Document` node as their parent.
|
||||
* Use `parseDocument` to get the `Document` node instead.
|
||||
*
|
||||
* @param data The data that should be parsed.
|
||||
* @param options Optional options for the parser and DOM builder.
|
||||
* @deprecated Use `parseDocument` instead.
|
||||
*/
|
||||
function parseDOM(data, options) {
|
||||
return parseDocument(data, options).children;
|
||||
}
|
||||
exports.parseDOM = parseDOM;
|
||||
/**
|
||||
* Creates a parser instance, with an attached DOM handler.
|
||||
*
|
||||
* @param cb A callback that will be called once parsing has been completed.
|
||||
* @param options Optional options for the parser and DOM builder.
|
||||
* @param elementCb An optional callback that will be called every time a tag has been completed inside of the DOM.
|
||||
*/
|
||||
function createDomStream(cb, options, elementCb) {
|
||||
var handler = new domhandler_1.DomHandler(cb, options, elementCb);
|
||||
return new Parser_1.Parser(handler, options);
|
||||
}
|
||||
exports.createDomStream = createDomStream;
|
||||
var Tokenizer_1 = require("./Tokenizer");
|
||||
Object.defineProperty(exports, "Tokenizer", { enumerable: true, get: function () { return __importDefault(Tokenizer_1).default; } });
|
||||
var ElementType = __importStar(require("domelementtype"));
|
||||
exports.ElementType = ElementType;
|
||||
/*
|
||||
* All of the following exports exist for backwards-compatibility.
|
||||
* They should probably be removed eventually.
|
||||
*/
|
||||
__exportStar(require("./FeedHandler"), exports);
|
||||
exports.DomUtils = __importStar(require("domutils"));
|
||||
var FeedHandler_1 = require("./FeedHandler");
|
||||
Object.defineProperty(exports, "RssHandler", { enumerable: true, get: function () { return FeedHandler_1.FeedHandler; } });
|
Reference in New Issue
Block a user