setup-java/dist/setup/index.js

44722 lines
1.5 MiB
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

module.exports =
/******/ (function(modules, runtime) { // webpackBootstrap
/******/ "use strict";
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ __webpack_require__.ab = __dirname + "/";
/******/
/******/ // the startup function
/******/ function startup() {
/******/ // Load entry module and return exports
/******/ return __webpack_require__(811);
/******/ };
/******/
/******/ // run startup
/******/ return startup();
/******/ })
/************************************************************************/
/******/ ([
/* 0 */,
/* 1 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const childProcess = __webpack_require__(129);
const path = __webpack_require__(622);
const util_1 = __webpack_require__(669);
const ioUtil = __webpack_require__(672);
const exec = util_1.promisify(childProcess.exec);
/**
* Copies a file or folder.
* Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js
*
* @param source source path
* @param dest destination path
* @param options optional. See CopyOptions.
*/
function cp(source, dest, options = {}) {
return __awaiter(this, void 0, void 0, function* () {
const { force, recursive } = readCopyOptions(options);
const destStat = (yield ioUtil.exists(dest)) ? yield ioUtil.stat(dest) : null;
// Dest is an existing file, but not forcing
if (destStat && destStat.isFile() && !force) {
return;
}
// If dest is an existing directory, should copy inside.
const newDest = destStat && destStat.isDirectory()
? path.join(dest, path.basename(source))
: dest;
if (!(yield ioUtil.exists(source))) {
throw new Error(`no such file or directory: ${source}`);
}
const sourceStat = yield ioUtil.stat(source);
if (sourceStat.isDirectory()) {
if (!recursive) {
throw new Error(`Failed to copy. ${source} is a directory, but tried to copy without recursive flag.`);
}
else {
yield cpDirRecursive(source, newDest, 0, force);
}
}
else {
if (path.relative(source, newDest) === '') {
// a file cannot be copied to itself
throw new Error(`'${newDest}' and '${source}' are the same file`);
}
yield copyFile(source, newDest, force);
}
});
}
exports.cp = cp;
/**
* Moves a path.
*
* @param source source path
* @param dest destination path
* @param options optional. See MoveOptions.
*/
function mv(source, dest, options = {}) {
return __awaiter(this, void 0, void 0, function* () {
if (yield ioUtil.exists(dest)) {
let destExists = true;
if (yield ioUtil.isDirectory(dest)) {
// If dest is directory copy src into dest
dest = path.join(dest, path.basename(source));
destExists = yield ioUtil.exists(dest);
}
if (destExists) {
if (options.force == null || options.force) {
yield rmRF(dest);
}
else {
throw new Error('Destination already exists');
}
}
}
yield mkdirP(path.dirname(dest));
yield ioUtil.rename(source, dest);
});
}
exports.mv = mv;
/**
* Remove a path recursively with force
*
* @param inputPath path to remove
*/
function rmRF(inputPath) {
return __awaiter(this, void 0, void 0, function* () {
if (ioUtil.IS_WINDOWS) {
// Node doesn't provide a delete operation, only an unlink function. This means that if the file is being used by another
// program (e.g. antivirus), it won't be deleted. To address this, we shell out the work to rd/del.
try {
if (yield ioUtil.isDirectory(inputPath, true)) {
yield exec(`rd /s /q "${inputPath}"`);
}
else {
yield exec(`del /f /a "${inputPath}"`);
}
}
catch (err) {
// if you try to delete a file that doesn't exist, desired result is achieved
// other errors are valid
if (err.code !== 'ENOENT')
throw err;
}
// Shelling out fails to remove a symlink folder with missing source, this unlink catches that
try {
yield ioUtil.unlink(inputPath);
}
catch (err) {
// if you try to delete a file that doesn't exist, desired result is achieved
// other errors are valid
if (err.code !== 'ENOENT')
throw err;
}
}
else {
let isDir = false;
try {
isDir = yield ioUtil.isDirectory(inputPath);
}
catch (err) {
// if you try to delete a file that doesn't exist, desired result is achieved
// other errors are valid
if (err.code !== 'ENOENT')
throw err;
return;
}
if (isDir) {
yield exec(`rm -rf "${inputPath}"`);
}
else {
yield ioUtil.unlink(inputPath);
}
}
});
}
exports.rmRF = rmRF;
/**
* Make a directory. Creates the full path with folders in between
* Will throw if it fails
*
* @param fsPath path to create
* @returns Promise<void>
*/
function mkdirP(fsPath) {
return __awaiter(this, void 0, void 0, function* () {
yield ioUtil.mkdirP(fsPath);
});
}
exports.mkdirP = mkdirP;
/**
* Returns path of a tool had the tool actually been invoked. Resolves via paths.
* If you check and the tool does not exist, it will throw.
*
* @param tool name of the tool
* @param check whether to check if tool exists
* @returns Promise<string> path to tool
*/
function which(tool, check) {
return __awaiter(this, void 0, void 0, function* () {
if (!tool) {
throw new Error("parameter 'tool' is required");
}
// recursive when check=true
if (check) {
const result = yield which(tool, false);
if (!result) {
if (ioUtil.IS_WINDOWS) {
throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`);
}
else {
throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`);
}
}
}
try {
// build the list of extensions to try
const extensions = [];
if (ioUtil.IS_WINDOWS && process.env.PATHEXT) {
for (const extension of process.env.PATHEXT.split(path.delimiter)) {
if (extension) {
extensions.push(extension);
}
}
}
// if it's rooted, return it if exists. otherwise return empty.
if (ioUtil.isRooted(tool)) {
const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions);
if (filePath) {
return filePath;
}
return '';
}
// if any path separators, return empty
if (tool.includes('/') || (ioUtil.IS_WINDOWS && tool.includes('\\'))) {
return '';
}
// build the list of directories
//
// Note, technically "where" checks the current directory on Windows. From a toolkit perspective,
// it feels like we should not do this. Checking the current directory seems like more of a use
// case of a shell, and the which() function exposed by the toolkit should strive for consistency
// across platforms.
const directories = [];
if (process.env.PATH) {
for (const p of process.env.PATH.split(path.delimiter)) {
if (p) {
directories.push(p);
}
}
}
// return the first match
for (const directory of directories) {
const filePath = yield ioUtil.tryGetExecutablePath(directory + path.sep + tool, extensions);
if (filePath) {
return filePath;
}
}
return '';
}
catch (err) {
throw new Error(`which failed with message ${err.message}`);
}
});
}
exports.which = which;
function readCopyOptions(options) {
const force = options.force == null ? true : options.force;
const recursive = Boolean(options.recursive);
return { force, recursive };
}
function cpDirRecursive(sourceDir, destDir, currentDepth, force) {
return __awaiter(this, void 0, void 0, function* () {
// Ensure there is not a run away recursive copy
if (currentDepth >= 255)
return;
currentDepth++;
yield mkdirP(destDir);
const files = yield ioUtil.readdir(sourceDir);
for (const fileName of files) {
const srcFile = `${sourceDir}/${fileName}`;
const destFile = `${destDir}/${fileName}`;
const srcFileStat = yield ioUtil.lstat(srcFile);
if (srcFileStat.isDirectory()) {
// Recurse
yield cpDirRecursive(srcFile, destFile, currentDepth, force);
}
else {
yield copyFile(srcFile, destFile, force);
}
}
// Change the mode for the newly created directory
yield ioUtil.chmod(destDir, (yield ioUtil.stat(sourceDir)).mode);
});
}
// Buffered file copy
function copyFile(srcFile, destFile, force) {
return __awaiter(this, void 0, void 0, function* () {
if ((yield ioUtil.lstat(srcFile)).isSymbolicLink()) {
// unlink/re-link it
try {
yield ioUtil.lstat(destFile);
yield ioUtil.unlink(destFile);
}
catch (e) {
// Try to override file permission
if (e.code === 'EPERM') {
yield ioUtil.chmod(destFile, '0666');
yield ioUtil.unlink(destFile);
}
// other errors = it doesn't exist, no work to do
}
// Copy over symlink
const symlinkFull = yield ioUtil.readlink(srcFile);
yield ioUtil.symlink(symlinkFull, destFile, ioUtil.IS_WINDOWS ? 'junction' : null);
}
else if (!(yield ioUtil.exists(destFile)) || force) {
yield ioUtil.copyFile(srcFile, destFile);
}
});
}
//# sourceMappingURL=io.js.map
/***/ }),
/* 2 */,
/* 3 */,
/* 4 */,
/* 5 */,
/* 6 */,
/* 7 */,
/* 8 */,
/* 9 */
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
var loader = __webpack_require__(457);
var dumper = __webpack_require__(685);
function deprecated(name) {
return function () {
throw new Error('Function ' + name + ' is deprecated and cannot be used.');
};
}
module.exports.Type = __webpack_require__(945);
module.exports.Schema = __webpack_require__(733);
module.exports.FAILSAFE_SCHEMA = __webpack_require__(265);
module.exports.JSON_SCHEMA = __webpack_require__(720);
module.exports.CORE_SCHEMA = __webpack_require__(611);
module.exports.DEFAULT_SAFE_SCHEMA = __webpack_require__(723);
module.exports.DEFAULT_FULL_SCHEMA = __webpack_require__(910);
module.exports.load = loader.load;
module.exports.loadAll = loader.loadAll;
module.exports.safeLoad = loader.safeLoad;
module.exports.safeLoadAll = loader.safeLoadAll;
module.exports.dump = dumper.dump;
module.exports.safeDump = dumper.safeDump;
module.exports.YAMLException = __webpack_require__(556);
// Deprecated schema names from JS-YAML 2.0.x
module.exports.MINIMAL_SCHEMA = __webpack_require__(265);
module.exports.SAFE_SCHEMA = __webpack_require__(723);
module.exports.DEFAULT_SCHEMA = __webpack_require__(910);
// Deprecated functions from JS-YAML 1.x.x
module.exports.scan = deprecated('scan');
module.exports.parse = deprecated('parse');
module.exports.compose = deprecated('compose');
module.exports.addConstructor = deprecated('addConstructor');
/***/ }),
/* 10 */,
/* 11 */
/***/ (function(__unusedmodule, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* A surrogate is a code point that is in the range U+D800 to U+DFFF, inclusive.
*/
exports.Surrogate = /[\uD800-\uDFFF]/;
/**
* A scalar value is a code point that is not a surrogate.
*/
exports.ScalarValue = /[\uD800-\uDFFF]/;
/**
* A noncharacter is a code point that is in the range U+FDD0 to U+FDEF,
* inclusive, or U+FFFE, U+FFFF, U+1FFFE, U+1FFFF, U+2FFFE, U+2FFFF, U+3FFFE,
* U+3FFFF, U+4FFFE, U+4FFFF, U+5FFFE, U+5FFFF, U+6FFFE, U+6FFFF, U+7FFFE,
* U+7FFFF, U+8FFFE, U+8FFFF, U+9FFFE, U+9FFFF, U+AFFFE, U+AFFFF, U+BFFFE,
* U+BFFFF, U+CFFFE, U+CFFFF, U+DFFFE, U+DFFFF, U+EFFFE, U+EFFFF, U+FFFFE,
* U+FFFFF, U+10FFFE, or U+10FFFF.
*/
exports.NonCharacter = /[\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]/;
/**
* An ASCII code point is a code point in the range U+0000 NULL to U+007F
* DELETE, inclusive.
*/
exports.ASCIICodePoint = /[\u0000-\u007F]/;
/**
* An ASCII tab or newline is U+0009 TAB, U+000A LF, or U+000D CR.
*/
exports.ASCIITabOrNewLine = /[\t\n\r]/;
/**
* ASCII whitespace is U+0009 TAB, U+000A LF, U+000C FF, U+000D CR, or
* U+0020 SPACE.
*/
exports.ASCIIWhiteSpace = /[\t\n\f\r ]/;
/**
* A C0 control is a code point in the range U+0000 NULL to U+001F
* INFORMATION SEPARATOR ONE, inclusive.
*/
exports.C0Control = /[\u0000-\u001F]/;
/**
* A C0 control or space is a C0 control or U+0020 SPACE.
*/
exports.C0ControlOrSpace = /[\u0000-\u001F ]/;
/**
* A control is a C0 control or a code point in the range U+007F DELETE to
* U+009F APPLICATION PROGRAM COMMAND, inclusive.
*/
exports.Control = /[\u0000-\u001F\u007F-\u009F]/;
/**
* An ASCII digit is a code point in the range U+0030 (0) to U+0039 (9),
* inclusive.
*/
exports.ASCIIDigit = /[0-9]/;
/**
* An ASCII upper hex digit is an ASCII digit or a code point in the range
* U+0041 (A) to U+0046 (F), inclusive.
*/
exports.ASCIIUpperHexDigit = /[0-9A-F]/;
/**
* An ASCII lower hex digit is an ASCII digit or a code point in the range
* U+0061 (a) to U+0066 (f), inclusive.
*/
exports.ASCIILowerHexDigit = /[0-9a-f]/;
/**
* An ASCII hex digit is an ASCII upper hex digit or ASCII lower hex digit.
*/
exports.ASCIIHexDigit = /[0-9A-Fa-f]/;
/**
* An ASCII upper alpha is a code point in the range U+0041 (A) to U+005A (Z),
* inclusive.
*/
exports.ASCIIUpperAlpha = /[A-Z]/;
/**
* An ASCII lower alpha is a code point in the range U+0061 (a) to U+007A (z),
* inclusive.
*/
exports.ASCIILowerAlpha = /[a-z]/;
/**
* An ASCII alpha is an ASCII upper alpha or ASCII lower alpha.
*/
exports.ASCIIAlpha = /[A-Za-z]/;
/**
* An ASCII alphanumeric is an ASCII digit or ASCII alpha.
*/
exports.ASCIIAlphanumeric = /[0-9A-Za-z]/;
//# sourceMappingURL=CodePoints.js.map
/***/ }),
/* 12 */,
/* 13 */,
/* 14 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const SemVer = __webpack_require__(65)
const Range = __webpack_require__(124)
const maxSatisfying = (versions, range, options) => {
let max = null
let maxSV = null
let rangeObj = null
try {
rangeObj = new Range(range, options)
} catch (er) {
return null
}
versions.forEach((v) => {
if (rangeObj.test(v)) {
// satisfies(v, range, options)
if (!max || maxSV.compare(v) === -1) {
// compare(max, v, true)
max = v
maxSV = new SemVer(max, options)
}
}
})
return max
}
module.exports = maxSatisfying
/***/ }),
/* 15 */,
/* 16 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const SemVer = __webpack_require__(65)
const compareBuild = (a, b, loose) => {
const versionA = new SemVer(a, loose)
const versionB = new SemVer(b, loose)
return versionA.compare(versionB) || versionA.compareBuild(versionB)
}
module.exports = compareBuild
/***/ }),
/* 17 */,
/* 18 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var util_1 = __webpack_require__(918);
/**
* Represents a mixin that extends child nodes that can have siblings
* other than doctypes. This mixin is implemented by {@link Element} and
* {@link CharacterData}.
*/
var NonDocumentTypeChildNodeImpl = /** @class */ (function () {
function NonDocumentTypeChildNodeImpl() {
}
Object.defineProperty(NonDocumentTypeChildNodeImpl.prototype, "previousElementSibling", {
/** @inheritdoc */
get: function () {
/**
* The previousElementSibling attributes getter must return the first
* preceding sibling that is an element, and null otherwise.
*/
var node = util_1.Cast.asNode(this)._previousSibling;
while (node) {
if (util_1.Guard.isElementNode(node))
return node;
else
node = node._previousSibling;
}
return null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NonDocumentTypeChildNodeImpl.prototype, "nextElementSibling", {
/** @inheritdoc */
get: function () {
/**
* The nextElementSibling attributes getter must return the first
* following sibling that is an element, and null otherwise.
*/
var node = util_1.Cast.asNode(this)._nextSibling;
while (node) {
if (util_1.Guard.isElementNode(node))
return node;
else
node = node._nextSibling;
}
return null;
},
enumerable: true,
configurable: true
});
return NonDocumentTypeChildNodeImpl;
}());
exports.NonDocumentTypeChildNodeImpl = NonDocumentTypeChildNodeImpl;
//# sourceMappingURL=NonDocumentTypeChildNodeImpl.js.map
/***/ }),
/* 19 */,
/* 20 */,
/* 21 */,
/* 22 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __spread = (this && this.__spread) || function () {
for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
var interfaces_1 = __webpack_require__(970);
var DOMException_1 = __webpack_require__(35);
var util_1 = __webpack_require__(918);
var CreateAlgorithm_1 = __webpack_require__(86);
var TreeAlgorithm_1 = __webpack_require__(873);
var BoundaryPointAlgorithm_1 = __webpack_require__(350);
var CharacterDataAlgorithm_1 = __webpack_require__(27);
var NodeAlgorithm_1 = __webpack_require__(541);
var MutationAlgorithm_1 = __webpack_require__(479);
var TextAlgorithm_1 = __webpack_require__(154);
/**
* Determines if the node's start boundary point is at its end boundary
* point.
*
* @param range - a range
*/
function range_collapsed(range) {
/**
* A range is collapsed if its start node is its end node and its start offset is its end offset.
*/
return (range._startNode === range._endNode && range._startOffset === range._endOffset);
}
exports.range_collapsed = range_collapsed;
/**
* Gets the root node of a range.
*
* @param range - a range
*/
function range_root(range) {
/**
* The root of a live range is the root of its start node.
*/
return TreeAlgorithm_1.tree_rootNode(range._startNode);
}
exports.range_root = range_root;
/**
* Determines if a node is fully contained in a range.
*
* @param node - a node
* @param range - a range
*/
function range_isContained(node, range) {
/**
* A node node is contained in a live range range if nodes root is ranges
* root, and (node, 0) is after ranges start, and (node, nodes length) is
* before ranges end.
*/
return (TreeAlgorithm_1.tree_rootNode(node) === range_root(range) &&
BoundaryPointAlgorithm_1.boundaryPoint_position([node, 0], range._start) === interfaces_1.BoundaryPosition.After &&
BoundaryPointAlgorithm_1.boundaryPoint_position([node, TreeAlgorithm_1.tree_nodeLength(node)], range._end) === interfaces_1.BoundaryPosition.Before);
}
exports.range_isContained = range_isContained;
/**
* Determines if a node is partially contained in a range.
*
* @param node - a node
* @param range - a range
*/
function range_isPartiallyContained(node, range) {
/**
* A node is partially contained in a live range if its an inclusive
* ancestor of the live ranges start node but not its end node,
* or vice versa.
*/
var startCheck = TreeAlgorithm_1.tree_isAncestorOf(range._startNode, node, true);
var endCheck = TreeAlgorithm_1.tree_isAncestorOf(range._endNode, node, true);
return (startCheck && !endCheck) || (!startCheck && endCheck);
}
exports.range_isPartiallyContained = range_isPartiallyContained;
/**
* Sets the start boundary point of a range.
*
* @param range - a range
* @param node - a node
* @param offset - an offset into node
*/
function range_setTheStart(range, node, offset) {
/**
* 1. If node is a doctype, then throw an "InvalidNodeTypeError" DOMException.
* 2. If offset is greater than nodes length, then throw an "IndexSizeError"
* DOMException.
* 3. Let bp be the boundary point (node, offset).
* 4. If these steps were invoked as "set the start"
* 4.1. If bp is after the ranges end, or if ranges root is not equal to
* nodes root, set ranges end to bp.
* 4.2. Set ranges start to bp.
*/
if (util_1.Guard.isDocumentTypeNode(node)) {
throw new DOMException_1.InvalidNodeTypeError();
}
if (offset > TreeAlgorithm_1.tree_nodeLength(node)) {
throw new DOMException_1.IndexSizeError();
}
var bp = [node, offset];
if (range_root(range) !== TreeAlgorithm_1.tree_rootNode(node) ||
BoundaryPointAlgorithm_1.boundaryPoint_position(bp, range._end) === interfaces_1.BoundaryPosition.After) {
range._end = bp;
}
range._start = bp;
}
exports.range_setTheStart = range_setTheStart;
/**
* Sets the end boundary point of a range.
*
* @param range - a range
* @param node - a node
* @param offset - an offset into node
*/
function range_setTheEnd(range, node, offset) {
/**
* 1. If node is a doctype, then throw an "InvalidNodeTypeError" DOMException.
* 2. If offset is greater than nodes length, then throw an "IndexSizeError"
* DOMException.
* 3. Let bp be the boundary point (node, offset).
* 4. If these steps were invoked as "set the end"
* 4.1. If bp is before the ranges start, or if ranges root is not equal
* to nodes root, set ranges start to bp.
* 4.2. Set ranges end to bp.
*/
if (util_1.Guard.isDocumentTypeNode(node)) {
throw new DOMException_1.InvalidNodeTypeError();
}
if (offset > TreeAlgorithm_1.tree_nodeLength(node)) {
throw new DOMException_1.IndexSizeError();
}
var bp = [node, offset];
if (range_root(range) !== TreeAlgorithm_1.tree_rootNode(node) ||
BoundaryPointAlgorithm_1.boundaryPoint_position(bp, range._start) === interfaces_1.BoundaryPosition.Before) {
range._start = bp;
}
range._end = bp;
}
exports.range_setTheEnd = range_setTheEnd;
/**
* Selects a node.
*
* @param range - a range
* @param node - a node
*/
function range_select(node, range) {
/**
* 1. Let parent be nodes parent.
* 2. If parent is null, then throw an "InvalidNodeTypeError" DOMException.
*/
var parent = node._parent;
if (parent === null)
throw new DOMException_1.InvalidNodeTypeError();
/**
* 3. Let index be nodes index.
* 4. Set ranges start to boundary point (parent, index).
* 5. Set ranges end to boundary point (parent, index plus 1).
*/
var index = TreeAlgorithm_1.tree_index(node);
range._start = [parent, index];
range._end = [parent, index + 1];
}
exports.range_select = range_select;
/**
* EXtracts the contents of range as a document fragment.
*
* @param range - a range
*/
function range_extract(range) {
var e_1, _a, e_2, _b, e_3, _c;
/**
* 1. Let fragment be a new DocumentFragment node whose node document is
* ranges start nodes node document.
* 2. If range is collapsed, then return fragment.
*/
var fragment = CreateAlgorithm_1.create_documentFragment(range._startNode._nodeDocument);
if (range_collapsed(range))
return fragment;
/**
* 3. Let original start node, original start offset, original end node,
* and original end offset be ranges start node, start offset, end node,
* and end offset, respectively.
*/
var originalStartNode = range._startNode;
var originalStartOffset = range._startOffset;
var originalEndNode = range._endNode;
var originalEndOffset = range._endOffset;
/**
* 4. If original start node is original end node, and they are a Text,
* ProcessingInstruction, or Comment node:
* 4.1. Let clone be a clone of original start node.
* 4.2. Set the data of clone to the result of substringing data with node
* original start node, offset original start offset, and count original end
* offset minus original start offset.
* 4.3. Append clone to fragment.
* 4.4. Replace data with node original start node, offset original start
* offset, count original end offset minus original start offset, and data
* the empty string.
* 4.5. Return fragment.
*/
if (originalStartNode === originalEndNode &&
util_1.Guard.isCharacterDataNode(originalStartNode)) {
var clone = NodeAlgorithm_1.node_clone(originalStartNode);
clone._data = CharacterDataAlgorithm_1.characterData_substringData(originalStartNode, originalStartOffset, originalEndOffset - originalStartOffset);
MutationAlgorithm_1.mutation_append(clone, fragment);
CharacterDataAlgorithm_1.characterData_replaceData(originalStartNode, originalStartOffset, originalEndOffset - originalStartOffset, '');
return fragment;
}
/**
* 5. Let common ancestor be original start node.
* 6. While common ancestor is not an inclusive ancestor of original end
* node, set common ancestor to its own parent.
*/
var commonAncestor = originalStartNode;
while (!TreeAlgorithm_1.tree_isAncestorOf(originalEndNode, commonAncestor, true)) {
if (commonAncestor._parent === null) {
throw new Error("Parent node is null.");
}
commonAncestor = commonAncestor._parent;
}
/**
* 7. Let first partially contained child be null.
* 8. If original start node is not an inclusive ancestor of original end
* node, set first partially contained child to the first child of common
* ancestor that is partially contained in range.
*/
var firstPartiallyContainedChild = null;
if (!TreeAlgorithm_1.tree_isAncestorOf(originalEndNode, originalStartNode, true)) {
try {
for (var _d = __values(commonAncestor._children), _e = _d.next(); !_e.done; _e = _d.next()) {
var node = _e.value;
if (range_isPartiallyContained(node, range)) {
firstPartiallyContainedChild = node;
break;
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
}
finally { if (e_1) throw e_1.error; }
}
}
/**
* 9. Let last partially contained child be null.
* 10. If original end node is not an inclusive ancestor of original start
* node, set last partially contained child to the last child of common
* ancestor that is partially contained in range.
*/
var lastPartiallyContainedChild = null;
if (!TreeAlgorithm_1.tree_isAncestorOf(originalStartNode, originalEndNode, true)) {
var children = __spread(commonAncestor._children);
for (var i = children.length - 1; i > 0; i--) {
var node = children[i];
if (range_isPartiallyContained(node, range)) {
lastPartiallyContainedChild = node;
break;
}
}
}
/**
* 11. Let contained children be a list of all children of common ancestor
* that are contained in range, in tree order.
* 12. If any member of contained children is a doctype, then throw a
* "HierarchyRequestError" DOMException.
*/
var containedChildren = [];
try {
for (var _f = __values(commonAncestor._children), _g = _f.next(); !_g.done; _g = _f.next()) {
var child = _g.value;
if (range_isContained(child, range)) {
if (util_1.Guard.isDocumentTypeNode(child)) {
throw new DOMException_1.HierarchyRequestError();
}
containedChildren.push(child);
}
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
}
finally { if (e_2) throw e_2.error; }
}
var newNode;
var newOffset;
if (TreeAlgorithm_1.tree_isAncestorOf(originalEndNode, originalStartNode, true)) {
/**
* 13. If original start node is an inclusive ancestor of original end node,
* set new node to original start node and new offset to original start
* offset.
*/
newNode = originalStartNode;
newOffset = originalStartOffset;
}
else {
/**
* 14. Otherwise:
* 14.1. Let reference node equal original start node.
* 14.2. While reference nodes parent is not null and is not an inclusive
* ancestor of original end node, set reference node to its parent.
* 14.3. Set new node to the parent of reference node, and new offset to
* one plus reference nodes index.
*/
var referenceNode = originalStartNode;
while (referenceNode._parent !== null &&
!TreeAlgorithm_1.tree_isAncestorOf(originalEndNode, referenceNode._parent)) {
referenceNode = referenceNode._parent;
}
/* istanbul ignore next */
if (referenceNode._parent === null) {
/**
* If reference nodes parent is null, it would be the root of range,
* so would be an inclusive ancestor of original end node, and we could
* not reach this point.
*/
throw new Error("Parent node is null.");
}
newNode = referenceNode._parent;
newOffset = 1 + TreeAlgorithm_1.tree_index(referenceNode);
}
if (util_1.Guard.isCharacterDataNode(firstPartiallyContainedChild)) {
/**
* 15. If first partially contained child is a Text, ProcessingInstruction,
* or Comment node:
* 15.1. Let clone be a clone of original start node.
* 15.2. Set the data of clone to the result of substringing data with
* node original start node, offset original start offset, and count
* original start nodes length minus original start offset.
* 15.3. Append clone to fragment.
* 15.4. Replace data with node original start node, offset original
* start offset, count original start nodes length minus original start
* offset, and data the empty string.
*/
var clone = NodeAlgorithm_1.node_clone(originalStartNode);
clone._data = CharacterDataAlgorithm_1.characterData_substringData(originalStartNode, originalStartOffset, TreeAlgorithm_1.tree_nodeLength(originalStartNode) - originalStartOffset);
MutationAlgorithm_1.mutation_append(clone, fragment);
CharacterDataAlgorithm_1.characterData_replaceData(originalStartNode, originalStartOffset, TreeAlgorithm_1.tree_nodeLength(originalStartNode) - originalStartOffset, '');
}
else if (firstPartiallyContainedChild !== null) {
/**
* 16. Otherwise, if first partially contained child is not null:
* 16.1. Let clone be a clone of first partially contained child.
* 16.2. Append clone to fragment.
* 16.3. Let subrange be a new live range whose start is (original start
* node, original start offset) and whose end is (first partially
* contained child, first partially contained childs length).
* 16.4. Let subfragment be the result of extracting subrange.
* 16.5. Append subfragment to clone.
*/
var clone = NodeAlgorithm_1.node_clone(firstPartiallyContainedChild);
MutationAlgorithm_1.mutation_append(clone, fragment);
var subrange = CreateAlgorithm_1.create_range([originalStartNode, originalStartOffset], [firstPartiallyContainedChild, TreeAlgorithm_1.tree_nodeLength(firstPartiallyContainedChild)]);
var subfragment = range_extract(subrange);
MutationAlgorithm_1.mutation_append(subfragment, clone);
}
try {
/**
* 17. For each contained child in contained children, append contained
* child to fragment.
*/
for (var containedChildren_1 = __values(containedChildren), containedChildren_1_1 = containedChildren_1.next(); !containedChildren_1_1.done; containedChildren_1_1 = containedChildren_1.next()) {
var child = containedChildren_1_1.value;
MutationAlgorithm_1.mutation_append(child, fragment);
}
}
catch (e_3_1) { e_3 = { error: e_3_1 }; }
finally {
try {
if (containedChildren_1_1 && !containedChildren_1_1.done && (_c = containedChildren_1.return)) _c.call(containedChildren_1);
}
finally { if (e_3) throw e_3.error; }
}
if (util_1.Guard.isCharacterDataNode(lastPartiallyContainedChild)) {
/**
* 18. If last partially contained child is a Text, ProcessingInstruction,
* or Comment node:
* 18.1. Let clone be a clone of original end node.
* 18.2. Set the data of clone to the result of substringing data with
* node original end node, offset 0, and count original end offset.
* 18.3. Append clone to fragment.
* 18.4. Replace data with node original end node, offset 0, count
* original end offset, and data the empty string.
*/
var clone = NodeAlgorithm_1.node_clone(originalEndNode);
clone._data = CharacterDataAlgorithm_1.characterData_substringData(originalEndNode, 0, originalEndOffset);
MutationAlgorithm_1.mutation_append(clone, fragment);
CharacterDataAlgorithm_1.characterData_replaceData(originalEndNode, 0, originalEndOffset, '');
}
else if (lastPartiallyContainedChild !== null) {
/**
* 19. Otherwise, if last partially contained child is not null:
* 19.1. Let clone be a clone of last partially contained child.
* 19.2. Append clone to fragment.
* 19.3. Let subrange be a new live range whose start is (last partially
* contained child, 0) and whose end is (original end node, original
* end offset).
* 19.4. Let subfragment be the result of extracting subrange.
* 19.5. Append subfragment to clone.
*/
var clone = NodeAlgorithm_1.node_clone(lastPartiallyContainedChild);
MutationAlgorithm_1.mutation_append(clone, fragment);
var subrange = CreateAlgorithm_1.create_range([lastPartiallyContainedChild, 0], [originalEndNode, originalEndOffset]);
var subfragment = range_extract(subrange);
MutationAlgorithm_1.mutation_append(subfragment, clone);
}
/**
* 20. Set ranges start and end to (new node, new offset).
*/
range._start = [newNode, newOffset];
range._end = [newNode, newOffset];
/**
* 21. Return fragment.
*/
return fragment;
}
exports.range_extract = range_extract;
/**
* Clones the contents of range as a document fragment.
*
* @param range - a range
*/
function range_cloneTheContents(range) {
var e_4, _a, e_5, _b, e_6, _c;
/**
* 1. Let fragment be a new DocumentFragment node whose node document
* is ranges start nodes node document.
* 2. If range is collapsed, then return fragment.
*/
var fragment = CreateAlgorithm_1.create_documentFragment(range._startNode._nodeDocument);
if (range_collapsed(range))
return fragment;
/**
* 3. Let original start node, original start offset, original end node,
* and original end offset be ranges start node, start offset, end node,
* and end offset, respectively.
* 4. If original start node is original end node, and they are a Text,
* ProcessingInstruction, or Comment node:
* 4.1. Let clone be a clone of original start node.
* 4.2. Set the data of clone to the result of substringing data with node
* original start node, offset original start offset, and count original end
* offset minus original start offset.
* 4.3. Append clone to fragment.
* 4.5. Return fragment.
*/
var originalStartNode = range._startNode;
var originalStartOffset = range._startOffset;
var originalEndNode = range._endNode;
var originalEndOffset = range._endOffset;
if (originalStartNode === originalEndNode &&
util_1.Guard.isCharacterDataNode(originalStartNode)) {
var clone = NodeAlgorithm_1.node_clone(originalStartNode);
clone._data = CharacterDataAlgorithm_1.characterData_substringData(originalStartNode, originalStartOffset, originalEndOffset - originalStartOffset);
MutationAlgorithm_1.mutation_append(clone, fragment);
}
/**
* 5. Let common ancestor be original start node.
* 6. While common ancestor is not an inclusive ancestor of original end
* node, set common ancestor to its own parent.
*/
var commonAncestor = originalStartNode;
while (!TreeAlgorithm_1.tree_isAncestorOf(originalEndNode, commonAncestor, true)) {
if (commonAncestor._parent === null) {
throw new Error("Parent node is null.");
}
commonAncestor = commonAncestor._parent;
}
/**
* 7. Let first partially contained child be null.
* 8. If original start node is not an inclusive ancestor of original end
* node, set first partially contained child to the first child of common
* ancestor that is partially contained in range.
*/
var firstPartiallyContainedChild = null;
if (!TreeAlgorithm_1.tree_isAncestorOf(originalEndNode, originalStartNode, true)) {
try {
for (var _d = __values(commonAncestor._children), _e = _d.next(); !_e.done; _e = _d.next()) {
var node = _e.value;
if (range_isPartiallyContained(node, range)) {
firstPartiallyContainedChild = node;
break;
}
}
}
catch (e_4_1) { e_4 = { error: e_4_1 }; }
finally {
try {
if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
}
finally { if (e_4) throw e_4.error; }
}
}
/**
* 9. Let last partially contained child be null.
* 10. If original end node is not an inclusive ancestor of original start
* node, set last partially contained child to the last child of common
* ancestor that is partially contained in range.
*/
var lastPartiallyContainedChild = null;
if (!TreeAlgorithm_1.tree_isAncestorOf(originalStartNode, originalEndNode, true)) {
var children = __spread(commonAncestor._children);
for (var i = children.length - 1; i > 0; i--) {
var node = children[i];
if (range_isPartiallyContained(node, range)) {
lastPartiallyContainedChild = node;
break;
}
}
}
/**
* 11. Let contained children be a list of all children of common ancestor
* that are contained in range, in tree order.
* 12. If any member of contained children is a doctype, then throw a
* "HierarchyRequestError" DOMException.
*/
var containedChildren = [];
try {
for (var _f = __values(commonAncestor._children), _g = _f.next(); !_g.done; _g = _f.next()) {
var child = _g.value;
if (range_isContained(child, range)) {
if (util_1.Guard.isDocumentTypeNode(child)) {
throw new DOMException_1.HierarchyRequestError();
}
containedChildren.push(child);
}
}
}
catch (e_5_1) { e_5 = { error: e_5_1 }; }
finally {
try {
if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
}
finally { if (e_5) throw e_5.error; }
}
if (util_1.Guard.isCharacterDataNode(firstPartiallyContainedChild)) {
/**
* 13. If first partially contained child is a Text, ProcessingInstruction,
* or Comment node:
* 13.1. Let clone be a clone of original start node.
* 13.2. Set the data of clone to the result of substringing data with
* node original start node, offset original start offset, and count
* original start nodes length minus original start offset.
* 13.3. Append clone to fragment.
*/
var clone = NodeAlgorithm_1.node_clone(originalStartNode);
clone._data = CharacterDataAlgorithm_1.characterData_substringData(originalStartNode, originalStartOffset, TreeAlgorithm_1.tree_nodeLength(originalStartNode) - originalStartOffset);
MutationAlgorithm_1.mutation_append(clone, fragment);
}
else if (firstPartiallyContainedChild !== null) {
/**
* 14. Otherwise, if first partially contained child is not null:
* 14.1. Let clone be a clone of first partially contained child.
* 14.2. Append clone to fragment.
* 14.3. Let subrange be a new live range whose start is (original start
* node, original start offset) and whose end is (first partially
* contained child, first partially contained childs length).
* 14.4. Let subfragment be the result of cloning the contents of
* subrange.
* 14.5. Append subfragment to clone.
*/
var clone = NodeAlgorithm_1.node_clone(firstPartiallyContainedChild);
MutationAlgorithm_1.mutation_append(clone, fragment);
var subrange = CreateAlgorithm_1.create_range([originalStartNode, originalStartOffset], [firstPartiallyContainedChild, TreeAlgorithm_1.tree_nodeLength(firstPartiallyContainedChild)]);
var subfragment = range_cloneTheContents(subrange);
MutationAlgorithm_1.mutation_append(subfragment, clone);
}
try {
/**
* 15. For each contained child in contained children, append contained
* child to fragment.
* 15.1. Let clone be a clone of contained child with the clone children
* flag set.
* 15.2. Append clone to fragment.
*/
for (var containedChildren_2 = __values(containedChildren), containedChildren_2_1 = containedChildren_2.next(); !containedChildren_2_1.done; containedChildren_2_1 = containedChildren_2.next()) {
var child = containedChildren_2_1.value;
var clone = NodeAlgorithm_1.node_clone(child);
MutationAlgorithm_1.mutation_append(clone, fragment);
}
}
catch (e_6_1) { e_6 = { error: e_6_1 }; }
finally {
try {
if (containedChildren_2_1 && !containedChildren_2_1.done && (_c = containedChildren_2.return)) _c.call(containedChildren_2);
}
finally { if (e_6) throw e_6.error; }
}
if (util_1.Guard.isCharacterDataNode(lastPartiallyContainedChild)) {
/**
* 16. If last partially contained child is a Text, ProcessingInstruction,
* or Comment node:
* 16.1. Let clone be a clone of original end node.
* 16.2. Set the data of clone to the result of substringing data with
* node original end node, offset 0, and count original end offset.
* 16.3. Append clone to fragment.
*/
var clone = NodeAlgorithm_1.node_clone(originalEndNode);
clone._data = CharacterDataAlgorithm_1.characterData_substringData(originalEndNode, 0, originalEndOffset);
MutationAlgorithm_1.mutation_append(clone, fragment);
}
else if (lastPartiallyContainedChild !== null) {
/**
* 17. Otherwise, if last partially contained child is not null:
* 17.1. Let clone be a clone of last partially contained child.
* 17.2. Append clone to fragment.
* 17.3. Let subrange be a new live range whose start is (last partially
* contained child, 0) and whose end is (original end node, original
* end offset).
* 17.4. Let subfragment be the result of cloning the contents of subrange.
* 17.5. Append subfragment to clone.
*/
var clone = NodeAlgorithm_1.node_clone(lastPartiallyContainedChild);
fragment.append(clone);
var subrange = CreateAlgorithm_1.create_range([lastPartiallyContainedChild, 0], [originalEndNode, originalEndOffset]);
var subfragment = range_extract(subrange);
MutationAlgorithm_1.mutation_append(subfragment, clone);
}
/**
* 18. Return fragment.
*/
return fragment;
}
exports.range_cloneTheContents = range_cloneTheContents;
/**
* Inserts a node into a range at the start boundary point.
*
* @param node - node to insert
* @param range - a range
*/
function range_insert(node, range) {
var e_7, _a;
/**
* 1. If ranges start node is a ProcessingInstruction or Comment node, is a
* Text node whose parent is null, or is node, then throw a
* "HierarchyRequestError" DOMException.
*/
if (util_1.Guard.isProcessingInstructionNode(range._startNode) ||
util_1.Guard.isCommentNode(range._startNode) ||
(util_1.Guard.isTextNode(range._startNode) && range._startNode._parent === null) ||
range._startNode === node) {
throw new DOMException_1.HierarchyRequestError();
}
/**
* 2. Let referenceNode be null.
* 3. If ranges start node is a Text node, set referenceNode to that Text
* node.
* 4. Otherwise, set referenceNode to the child of start node whose index is
* start offset, and null if there is no such child.
*/
var referenceNode = null;
if (util_1.Guard.isTextNode(range._startNode)) {
referenceNode = range._startNode;
}
else {
var index = 0;
try {
for (var _b = __values(range._startNode._children), _c = _b.next(); !_c.done; _c = _b.next()) {
var child = _c.value;
if (index === range._startOffset) {
referenceNode = child;
break;
}
index++;
}
}
catch (e_7_1) { e_7 = { error: e_7_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_7) throw e_7.error; }
}
}
/**
* 5. Let parent be ranges start node if referenceNode is null, and
* referenceNodes parent otherwise.
*/
var parent;
if (referenceNode === null) {
parent = range._startNode;
}
else {
if (referenceNode._parent === null) {
throw new Error("Parent node is null.");
}
parent = referenceNode._parent;
}
/**
* 6. Ensure pre-insertion validity of node into parent before referenceNode.
*/
MutationAlgorithm_1.mutation_ensurePreInsertionValidity(node, parent, referenceNode);
/**
* 7. If ranges start node is a Text node, set referenceNode to the result
* of splitting it with offset ranges start offset.
*/
if (util_1.Guard.isTextNode(range._startNode)) {
referenceNode = TextAlgorithm_1.text_split(range._startNode, range._startOffset);
}
/**
* 8. If node is referenceNode, set referenceNode to its next sibling.
*/
if (node === referenceNode) {
referenceNode = node._nextSibling;
}
/**
* 9. If nodes parent is not null, remove node from its parent.
*/
if (node._parent !== null) {
MutationAlgorithm_1.mutation_remove(node, node._parent);
}
/**
* 10. Let newOffset be parents length if referenceNode is null, and
* referenceNodes index otherwise.
*/
var newOffset = (referenceNode === null ?
TreeAlgorithm_1.tree_nodeLength(parent) : TreeAlgorithm_1.tree_index(referenceNode));
/**
* 11. Increase newOffset by nodes length if node is a DocumentFragment
* node, and one otherwise.
*/
if (util_1.Guard.isDocumentFragmentNode(node)) {
newOffset += TreeAlgorithm_1.tree_nodeLength(node);
}
else {
newOffset++;
}
/**
* 12. Pre-insert node into parent before referenceNode.
*/
MutationAlgorithm_1.mutation_preInsert(node, parent, referenceNode);
/**
* 13. If range is collapsed, then set ranges end to (parent, newOffset).
*/
if (range_collapsed(range)) {
range._end = [parent, newOffset];
}
}
exports.range_insert = range_insert;
/**
* Traverses through all contained nodes of a range.
*
* @param range - a range
*/
function range_getContainedNodes(range) {
var _a;
return _a = {},
_a[Symbol.iterator] = function () {
var container = range.commonAncestorContainer;
var currentNode = TreeAlgorithm_1.tree_getFirstDescendantNode(container);
return {
next: function () {
while (currentNode && !range_isContained(currentNode, range)) {
currentNode = TreeAlgorithm_1.tree_getNextDescendantNode(container, currentNode);
}
if (currentNode === null) {
return { done: true, value: null };
}
else {
var result = { done: false, value: currentNode };
currentNode = TreeAlgorithm_1.tree_getNextDescendantNode(container, currentNode);
return result;
}
}
};
},
_a;
}
exports.range_getContainedNodes = range_getContainedNodes;
/**
* Traverses through all partially contained nodes of a range.
*
* @param range - a range
*/
function range_getPartiallyContainedNodes(range) {
var _a;
return _a = {},
_a[Symbol.iterator] = function () {
var container = range.commonAncestorContainer;
var currentNode = TreeAlgorithm_1.tree_getFirstDescendantNode(container);
return {
next: function () {
while (currentNode && !range_isPartiallyContained(currentNode, range)) {
currentNode = TreeAlgorithm_1.tree_getNextDescendantNode(container, currentNode);
}
if (currentNode === null) {
return { done: true, value: null };
}
else {
var result = { done: false, value: currentNode };
currentNode = TreeAlgorithm_1.tree_getNextDescendantNode(container, currentNode);
return result;
}
}
};
},
_a;
}
exports.range_getPartiallyContainedNodes = range_getPartiallyContainedNodes;
//# sourceMappingURL=RangeAlgorithm.js.map
/***/ }),
/* 23 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
var base64 = __importStar(__webpack_require__(763));
exports.base64 = base64;
var byte = __importStar(__webpack_require__(782));
exports.byte = byte;
var byteSequence = __importStar(__webpack_require__(263));
exports.byteSequence = byteSequence;
var codePoint = __importStar(__webpack_require__(11));
exports.codePoint = codePoint;
var json = __importStar(__webpack_require__(522));
exports.json = json;
var list = __importStar(__webpack_require__(657));
exports.list = list;
var map = __importStar(__webpack_require__(279));
exports.map = map;
var namespace = __importStar(__webpack_require__(916));
exports.namespace = namespace;
var queue = __importStar(__webpack_require__(501));
exports.queue = queue;
var set = __importStar(__webpack_require__(496));
exports.set = set;
var stack = __importStar(__webpack_require__(134));
exports.stack = stack;
var string = __importStar(__webpack_require__(97));
exports.string = string;
//# sourceMappingURL=index.js.map
/***/ }),
/* 24 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getJavaDistribution = void 0;
const installer_1 = __webpack_require__(144);
const installer_2 = __webpack_require__(393);
const installer_3 = __webpack_require__(584);
var JavaDistribution;
(function (JavaDistribution) {
JavaDistribution["Adopt"] = "adopt";
JavaDistribution["AdoptHotspot"] = "adopt-hotspot";
JavaDistribution["AdoptOpenJ9"] = "adopt-openj9";
JavaDistribution["Zulu"] = "zulu";
JavaDistribution["JdkFile"] = "jdkfile";
})(JavaDistribution || (JavaDistribution = {}));
function getJavaDistribution(distributionName, installerOptions, jdkFile) {
switch (distributionName) {
case JavaDistribution.JdkFile:
return new installer_1.LocalDistribution(installerOptions, jdkFile);
case JavaDistribution.Adopt:
case JavaDistribution.AdoptHotspot:
return new installer_3.AdoptDistribution(installerOptions, installer_3.AdoptImplementation.Hotspot);
case JavaDistribution.AdoptOpenJ9:
return new installer_3.AdoptDistribution(installerOptions, installer_3.AdoptImplementation.OpenJ9);
case JavaDistribution.Zulu:
return new installer_2.ZuluDistribution(installerOptions);
default:
return null;
}
}
exports.getJavaDistribution = getJavaDistribution;
/***/ }),
/* 25 */,
/* 26 */,
/* 27 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
var DOMImpl_1 = __webpack_require__(648);
var util_1 = __webpack_require__(918);
var DOMException_1 = __webpack_require__(35);
var TreeAlgorithm_1 = __webpack_require__(873);
var MutationObserverAlgorithm_1 = __webpack_require__(151);
var DOMAlgorithm_1 = __webpack_require__(304);
/**
* Replaces character data.
*
* @param node - a character data node
* @param offset - start offset
* @param count - count of characters to replace
* @param data - new data
*/
function characterData_replaceData(node, offset, count, data) {
var e_1, _a;
/**
* 1. Let length be nodes length.
* 2. If offset is greater than length, then throw an "IndexSizeError"
* DOMException.
* 3. If offset plus count is greater than length, then set count to length
* minus offset.
*/
var length = TreeAlgorithm_1.tree_nodeLength(node);
if (offset > length) {
throw new DOMException_1.IndexSizeError("Offset exceeds character data length. Offset: " + offset + ", Length: " + length + ", Node is " + node.nodeName + ".");
}
if (offset + count > length) {
count = length - offset;
}
/**
* 4. Queue a mutation record of "characterData" for node with null, null,
* nodes data, « », « », null, and null.
*/
if (DOMImpl_1.dom.features.mutationObservers) {
MutationObserverAlgorithm_1.observer_queueMutationRecord("characterData", node, null, null, node._data, [], [], null, null);
}
/**
* 5. Insert data into nodes data after offset code units.
* 6. Let delete offset be offset + datas length.
* 7. Starting from delete offset code units, remove count code units from
* nodes data.
*/
var newData = node._data.substring(0, offset) + data +
node._data.substring(offset + count);
node._data = newData;
try {
/**
* 8. For each live range whose start node is node and start offset is
* greater than offset but less than or equal to offset plus count, set its
* start offset to offset.
* 9. For each live range whose end node is node and end offset is greater
* than offset but less than or equal to offset plus count, set its end
* offset to offset.
* 10. For each live range whose start node is node and start offset is
* greater than offset plus count, increase its start offset by datas
* length and decrease it by count.
* 11. For each live range whose end node is node and end offset is greater
* than offset plus count, increase its end offset by datas length and
* decrease it by count.
*/
for (var _b = __values(DOMImpl_1.dom.rangeList), _c = _b.next(); !_c.done; _c = _b.next()) {
var range = _c.value;
if (range._start[0] === node && range._start[1] > offset && range._start[1] <= offset + count) {
range._start[1] = offset;
}
if (range._end[0] === node && range._end[1] > offset && range._end[1] <= offset + count) {
range._end[1] = offset;
}
if (range._start[0] === node && range._start[1] > offset + count) {
range._start[1] += data.length - count;
}
if (range._end[0] === node && range._end[1] > offset + count) {
range._end[1] += data.length - count;
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
/**
* 12. If node is a Text node and its parent is not null, run the child
* text content change steps for nodes parent.
*/
if (DOMImpl_1.dom.features.steps) {
if (util_1.Guard.isTextNode(node) && node._parent !== null) {
DOMAlgorithm_1.dom_runChildTextContentChangeSteps(node._parent);
}
}
}
exports.characterData_replaceData = characterData_replaceData;
/**
* Returns `count` number of characters from `node`'s data starting at
* the given `offset`.
*
* @param node - a character data node
* @param offset - start offset
* @param count - count of characters to return
*/
function characterData_substringData(node, offset, count) {
/**
* 1. Let length be nodes length.
* 2. If offset is greater than length, then throw an "IndexSizeError"
* DOMException.
* 3. If offset plus count is greater than length, return a string whose
* value is the code units from the offsetth code unit to the end of nodes
* data, and then return.
* 4. Return a string whose value is the code units from the offsetth code
* unit to the offset+countth code unit in nodes data.
*/
var length = TreeAlgorithm_1.tree_nodeLength(node);
if (offset > length) {
throw new DOMException_1.IndexSizeError("Offset exceeds character data length. Offset: " + offset + ", Length: " + length + ", Node is " + node.nodeName + ".");
}
if (offset + count > length) {
return node._data.substr(offset);
}
else {
return node._data.substr(offset, count);
}
}
exports.characterData_substringData = characterData_substringData;
//# sourceMappingURL=CharacterDataAlgorithm.js.map
/***/ }),
/* 28 */,
/* 29 */,
/* 30 */,
/* 31 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const semver = __importStar(__webpack_require__(550));
const core_1 = __webpack_require__(470);
// needs to be require for core node modules to be mocked
/* eslint @typescript-eslint/no-require-imports: 0 */
const os = __webpack_require__(87);
const cp = __webpack_require__(129);
const fs = __webpack_require__(747);
function _findMatch(versionSpec, stable, candidates, archFilter) {
return __awaiter(this, void 0, void 0, function* () {
const platFilter = os.platform();
let result;
let match;
let file;
for (const candidate of candidates) {
const version = candidate.version;
core_1.debug(`check ${version} satisfies ${versionSpec}`);
if (semver.satisfies(version, versionSpec) &&
(!stable || candidate.stable === stable)) {
file = candidate.files.find(item => {
core_1.debug(`${item.arch}===${archFilter} && ${item.platform}===${platFilter}`);
let chk = item.arch === archFilter && item.platform === platFilter;
if (chk && item.platform_version) {
const osVersion = module.exports._getOsVersion();
if (osVersion === item.platform_version) {
chk = true;
}
else {
chk = semver.satisfies(osVersion, item.platform_version);
}
}
return chk;
});
if (file) {
core_1.debug(`matched ${candidate.version}`);
match = candidate;
break;
}
}
}
if (match && file) {
// clone since we're mutating the file list to be only the file that matches
result = Object.assign({}, match);
result.files = [file];
}
return result;
});
}
exports._findMatch = _findMatch;
function _getOsVersion() {
// TODO: add windows and other linux, arm variants
// right now filtering on version is only an ubuntu and macos scenario for tools we build for hosted (python)
const plat = os.platform();
let version = '';
if (plat === 'darwin') {
version = cp.execSync('sw_vers -productVersion').toString();
}
else if (plat === 'linux') {
// lsb_release process not in some containers, readfile
// Run cat /etc/lsb-release
// DISTRIB_ID=Ubuntu
// DISTRIB_RELEASE=18.04
// DISTRIB_CODENAME=bionic
// DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS"
const lsbContents = module.exports._readLinuxVersionFile();
if (lsbContents) {
const lines = lsbContents.split('\n');
for (const line of lines) {
const parts = line.split('=');
if (parts.length === 2 && parts[0].trim() === 'DISTRIB_RELEASE') {
version = parts[1].trim();
break;
}
}
}
}
return version;
}
exports._getOsVersion = _getOsVersion;
function _readLinuxVersionFile() {
const lsbFile = '/etc/lsb-release';
let contents = '';
if (fs.existsSync(lsbFile)) {
contents = fs.readFileSync(lsbFile).toString();
}
return contents;
}
exports._readLinuxVersionFile = _readLinuxVersionFile;
//# sourceMappingURL=manifest.js.map
/***/ }),
/* 32 */,
/* 33 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var DOMImpl_1 = __webpack_require__(648);
var infra_1 = __webpack_require__(23);
var util_1 = __webpack_require__(918);
var DOMException_1 = __webpack_require__(35);
var CreateAlgorithm_1 = __webpack_require__(86);
var CustomElementAlgorithm_1 = __webpack_require__(344);
var MutationObserverAlgorithm_1 = __webpack_require__(151);
var DOMAlgorithm_1 = __webpack_require__(304);
var MutationAlgorithm_1 = __webpack_require__(479);
var DocumentAlgorithm_1 = __webpack_require__(493);
/**
* Determines whether the element's attribute list contains the given
* attribute.
*
* @param attribute - an attribute node
* @param element - an element node
*/
function element_has(attribute, element) {
/**
* An element has an attribute A if its attribute list contains A.
*/
return element._attributeList._asArray().indexOf(attribute) !== -1;
}
exports.element_has = element_has;
/**
* Changes the value of an attribute node.
*
* @param attribute - an attribute node
* @param element - an element node
* @param value - attribute value
*/
function element_change(attribute, element, value) {
/**
* 1. Queue an attribute mutation record for element with attributes
* local name, attributes namespace, and attributes value.
*/
if (DOMImpl_1.dom.features.mutationObservers) {
MutationObserverAlgorithm_1.observer_queueAttributeMutationRecord(element, attribute._localName, attribute._namespace, attribute._value);
}
/**
* 2. If element is custom, then enqueue a custom element callback reaction
* with element, callback name "attributeChangedCallback", and an argument
* list containing attributes local name, attributes value, value, and
* attributes namespace.
*/
if (DOMImpl_1.dom.features.customElements) {
if (util_1.Guard.isCustomElementNode(element)) {
CustomElementAlgorithm_1.customElement_enqueueACustomElementCallbackReaction(element, "attributeChangedCallback", [attribute._localName, attribute._value, value, attribute._namespace]);
}
}
/**
* 3. Run the attribute change steps with element, attributes local name,
* attributes value, value, and attributes namespace.
* 4. Set attributes value to value.
*/
if (DOMImpl_1.dom.features.steps) {
DOMAlgorithm_1.dom_runAttributeChangeSteps(element, attribute._localName, attribute._value, value, attribute._namespace);
}
attribute._value = value;
}
exports.element_change = element_change;
/**
* Appends an attribute to an element node.
*
* @param attribute - an attribute
* @param element - an element to receive the attribute
*/
function element_append(attribute, element) {
/**
* 1. Queue an attribute mutation record for element with attributes
* local name, attributes namespace, and null.
*/
if (DOMImpl_1.dom.features.mutationObservers) {
MutationObserverAlgorithm_1.observer_queueAttributeMutationRecord(element, attribute._localName, attribute._namespace, null);
}
/**
* 2. If element is custom, then enqueue a custom element callback reaction
* with element, callback name "attributeChangedCallback", and an argument
* list containing attributes local name, null, attributes value, and
* attributes namespace.
*/
if (DOMImpl_1.dom.features.customElements) {
if (util_1.Guard.isCustomElementNode(element)) {
CustomElementAlgorithm_1.customElement_enqueueACustomElementCallbackReaction(element, "attributeChangedCallback", [attribute._localName, null, attribute._value, attribute._namespace]);
}
}
/**
* 3. Run the attribute change steps with element, attributes local name,
* null, attributes value, and attributes namespace.
*/
if (DOMImpl_1.dom.features.steps) {
DOMAlgorithm_1.dom_runAttributeChangeSteps(element, attribute._localName, null, attribute._value, attribute._namespace);
}
/**
* 4. Append attribute to elements attribute list.
* 5. Set attributes element to element.
*/
element._attributeList._asArray().push(attribute);
attribute._element = element;
// mark that the document has namespaces
if (!element._nodeDocument._hasNamespaces && (attribute._namespace !== null ||
attribute._namespacePrefix !== null || attribute._localName === "xmlns")) {
element._nodeDocument._hasNamespaces = true;
}
}
exports.element_append = element_append;
/**
* Removes an attribute from an element node.
*
* @param attribute - an attribute
* @param element - an element to receive the attribute
*/
function element_remove(attribute, element) {
/**
* 1. Queue an attribute mutation record for element with attributes
* local name, attributes namespace, and attributes value.
*/
if (DOMImpl_1.dom.features.mutationObservers) {
MutationObserverAlgorithm_1.observer_queueAttributeMutationRecord(element, attribute._localName, attribute._namespace, attribute._value);
}
/**
* 2. If element is custom, then enqueue a custom element callback reaction
* with element, callback name "attributeChangedCallback", and an argument
* list containing attributes local name, attributes value, null,
* and attributes namespace.
*/
if (DOMImpl_1.dom.features.customElements) {
if (util_1.Guard.isCustomElementNode(element)) {
CustomElementAlgorithm_1.customElement_enqueueACustomElementCallbackReaction(element, "attributeChangedCallback", [attribute._localName, attribute._value, null, attribute._namespace]);
}
}
/**
* 3. Run the attribute change steps with element, attributes local name,
* attributes value, null, and attributes namespace.
*/
if (DOMImpl_1.dom.features.steps) {
DOMAlgorithm_1.dom_runAttributeChangeSteps(element, attribute._localName, attribute._value, null, attribute._namespace);
}
/**
* 3. Remove attribute from elements attribute list.
* 5. Set attributes element to null.
*/
var index = element._attributeList._asArray().indexOf(attribute);
element._attributeList._asArray().splice(index, 1);
attribute._element = null;
}
exports.element_remove = element_remove;
/**
* Replaces an attribute with another of an element node.
*
* @param oldAttr - old attribute
* @param newAttr - new attribute
* @param element - an element to receive the attribute
*/
function element_replace(oldAttr, newAttr, element) {
/**
* 1. Queue an attribute mutation record for element with oldAttrs
* local name, oldAttrs namespace, and oldAttrs value.
*/
if (DOMImpl_1.dom.features.mutationObservers) {
MutationObserverAlgorithm_1.observer_queueAttributeMutationRecord(element, oldAttr._localName, oldAttr._namespace, oldAttr._value);
}
/**
* 2. If element is custom, then enqueue a custom element callback reaction
* with element, callback name "attributeChangedCallback", and an argument
* list containing oldAttrs local name, oldAttrs value, newAttrs value,
* and oldAttrs namespace.
*/
if (DOMImpl_1.dom.features.customElements) {
if (util_1.Guard.isCustomElementNode(element)) {
CustomElementAlgorithm_1.customElement_enqueueACustomElementCallbackReaction(element, "attributeChangedCallback", [oldAttr._localName, oldAttr._value, newAttr._value, oldAttr._namespace]);
}
}
/**
* 3. Run the attribute change steps with element, oldAttrs local name,
* oldAttrs value, newAttrs value, and oldAttrs namespace.
*/
if (DOMImpl_1.dom.features.steps) {
DOMAlgorithm_1.dom_runAttributeChangeSteps(element, oldAttr._localName, oldAttr._value, newAttr._value, oldAttr._namespace);
}
/**
* 4. Replace oldAttr by newAttr in elements attribute list.
* 5. Set oldAttrs element to null.
* 6. Set newAttrs element to element.
*/
var index = element._attributeList._asArray().indexOf(oldAttr);
if (index !== -1) {
element._attributeList._asArray()[index] = newAttr;
}
oldAttr._element = null;
newAttr._element = element;
// mark that the document has namespaces
if (!element._nodeDocument._hasNamespaces && (newAttr._namespace !== null ||
newAttr._namespacePrefix !== null || newAttr._localName === "xmlns")) {
element._nodeDocument._hasNamespaces = true;
}
}
exports.element_replace = element_replace;
/**
* Retrieves an attribute with the given name from an element node.
*
* @param qualifiedName - an attribute name
* @param element - an element to receive the attribute
*/
function element_getAnAttributeByName(qualifiedName, element) {
/**
* 1. If element is in the HTML namespace and its node document is an HTML
* document, then set qualifiedName to qualifiedName in ASCII lowercase.
* 2. Return the first attribute in elements attribute list whose qualified
* name is qualifiedName, and null otherwise.
*/
if (element._namespace === infra_1.namespace.HTML && element._nodeDocument._type === "html") {
qualifiedName = qualifiedName.toLowerCase();
}
return element._attributeList._asArray().find(function (attr) { return attr._qualifiedName === qualifiedName; }) || null;
}
exports.element_getAnAttributeByName = element_getAnAttributeByName;
/**
* Retrieves an attribute with the given namespace and local name from an
* element node.
*
* @param namespace - an attribute namespace
* @param localName - an attribute local name
* @param element - an element to receive the attribute
*/
function element_getAnAttributeByNamespaceAndLocalName(namespace, localName, element) {
/**
* 1. If namespace is the empty string, set it to null.
* 2. Return the attribute in elements attribute list whose namespace is
* namespace and local name is localName, if any, and null otherwise.
*/
var ns = namespace || null;
return element._attributeList._asArray().find(function (attr) { return attr._namespace === ns && attr._localName === localName; }) || null;
}
exports.element_getAnAttributeByNamespaceAndLocalName = element_getAnAttributeByNamespaceAndLocalName;
/**
* Retrieves an attribute's value with the given name namespace and local
* name from an element node.
*
* @param element - an element to receive the attribute
* @param localName - an attribute local name
* @param namespace - an attribute namespace
*/
function element_getAnAttributeValue(element, localName, namespace) {
if (namespace === void 0) { namespace = ''; }
/**
* 1. Let attr be the result of getting an attribute given namespace,
* localName, and element.
* 2. If attr is null, then return the empty string.
* 3. Return attrs value.
*/
var attr = element_getAnAttributeByNamespaceAndLocalName(namespace, localName, element);
if (attr === null)
return '';
else
return attr._value;
}
exports.element_getAnAttributeValue = element_getAnAttributeValue;
/**
* Sets an attribute of an element node.
*
* @param attr - an attribute
* @param element - an element to receive the attribute
*/
function element_setAnAttribute(attr, element) {
/**
* 1. If attrs element is neither null nor element, throw an
* "InUseAttributeError" DOMException.
* 2. Let oldAttr be the result of getting an attribute given attrs
* namespace, attrs local name, and element.
* 3. If oldAttr is attr, return attr.
* 4. If oldAttr is non-null, replace it by attr in element.
* 5. Otherwise, append attr to element.
* 6. Return oldAttr.
*/
if (attr._element !== null && attr._element !== element)
throw new DOMException_1.InUseAttributeError("This attribute already exists in the document: " + attr._qualifiedName + " as a child of " + attr._element._qualifiedName + ".");
var oldAttr = element_getAnAttributeByNamespaceAndLocalName(attr._namespace || '', attr._localName, element);
if (oldAttr === attr)
return attr;
if (oldAttr !== null) {
element_replace(oldAttr, attr, element);
}
else {
element_append(attr, element);
}
return oldAttr;
}
exports.element_setAnAttribute = element_setAnAttribute;
/**
* Sets an attribute's value of an element node.
*
* @param element - an element to receive the attribute
* @param localName - an attribute local name
* @param value - an attribute value
* @param prefix - an attribute prefix
* @param namespace - an attribute namespace
*/
function element_setAnAttributeValue(element, localName, value, prefix, namespace) {
if (prefix === void 0) { prefix = null; }
if (namespace === void 0) { namespace = null; }
/**
* 1. If prefix is not given, set it to null.
* 2. If namespace is not given, set it to null.
* 3. Let attribute be the result of getting an attribute given namespace,
* localName, and element.
* 4. If attribute is null, create an attribute whose namespace is
* namespace, namespace prefix is prefix, local name is localName, value
* is value, and node document is elements node document, then append this
* attribute to element, and then return.
* 5. Change attribute from element to value.
*/
var attribute = element_getAnAttributeByNamespaceAndLocalName(namespace || '', localName, element);
if (attribute === null) {
var newAttr = CreateAlgorithm_1.create_attr(element._nodeDocument, localName);
newAttr._namespace = namespace;
newAttr._namespacePrefix = prefix;
newAttr._value = value;
element_append(newAttr, element);
return;
}
element_change(attribute, element, value);
}
exports.element_setAnAttributeValue = element_setAnAttributeValue;
/**
* Removes an attribute with the given name from an element node.
*
* @param qualifiedName - an attribute name
* @param element - an element to receive the attribute
*/
function element_removeAnAttributeByName(qualifiedName, element) {
/**
* 1. Let attr be the result of getting an attribute given qualifiedName
* and element.
* 2. If attr is non-null, remove it from element.
* 3. Return attr.
*/
var attr = element_getAnAttributeByName(qualifiedName, element);
if (attr !== null) {
element_remove(attr, element);
}
return attr;
}
exports.element_removeAnAttributeByName = element_removeAnAttributeByName;
/**
* Removes an attribute with the given namespace and local name from an
* element node.
*
* @param namespace - an attribute namespace
* @param localName - an attribute local name
* @param element - an element to receive the attribute
*/
function element_removeAnAttributeByNamespaceAndLocalName(namespace, localName, element) {
/**
* 1. Let attr be the result of getting an attribute given namespace, localName, and element.
* 2. If attr is non-null, remove it from element.
* 3. Return attr.
*/
var attr = element_getAnAttributeByNamespaceAndLocalName(namespace, localName, element);
if (attr !== null) {
element_remove(attr, element);
}
return attr;
}
exports.element_removeAnAttributeByNamespaceAndLocalName = element_removeAnAttributeByNamespaceAndLocalName;
/**
* Creates an element node.
* See: https://dom.spec.whatwg.org/#concept-create-element.
*
* @param document - the document owning the element
* @param localName - local name
* @param namespace - element namespace
* @param prefix - namespace prefix
* @param is - the "is" value
* @param synchronousCustomElementsFlag - synchronous custom elements flag
*/
function element_createAnElement(document, localName, namespace, prefix, is, synchronousCustomElementsFlag) {
if (prefix === void 0) { prefix = null; }
if (is === void 0) { is = null; }
if (synchronousCustomElementsFlag === void 0) { synchronousCustomElementsFlag = false; }
/**
* 1. If prefix was not given, let prefix be null.
* 2. If is was not given, let is be null.
* 3. Let result be null.
*/
var result = null;
if (!DOMImpl_1.dom.features.customElements) {
result = CreateAlgorithm_1.create_element(document, localName, namespace, prefix);
result._customElementState = "uncustomized";
result._customElementDefinition = null;
result._is = is;
return result;
}
/**
* 4. Let definition be the result of looking up a custom element definition
* given document, namespace, localName, and is.
*/
var definition = CustomElementAlgorithm_1.customElement_lookUpACustomElementDefinition(document, namespace, localName, is);
if (definition !== null && definition.name !== definition.localName) {
/**
* 5. If definition is non-null, and definitions name is not equal to
* its local name (i.e., definition represents a customized built-in
* element), then:
* 5.1. Let interface be the element interface for localName and the HTML
* namespace.
* 5.2. Set result to a new element that implements interface, with no
* attributes, namespace set to the HTML namespace, namespace prefix
* set to prefix, local name set to localName, custom element state set
* to "undefined", custom element definition set to null, is value set
* to is, and node document set to document.
* 5.3. If the synchronous custom elements flag is set, upgrade element
* using definition.
* 5.4. Otherwise, enqueue a custom element upgrade reaction given result
* and definition.
*/
var elemenInterface = DocumentAlgorithm_1.document_elementInterface(localName, infra_1.namespace.HTML);
result = new elemenInterface();
result._localName = localName;
result._namespace = infra_1.namespace.HTML;
result._namespacePrefix = prefix;
result._customElementState = "undefined";
result._customElementDefinition = null;
result._is = is;
result._nodeDocument = document;
if (synchronousCustomElementsFlag) {
CustomElementAlgorithm_1.customElement_upgrade(definition, result);
}
else {
CustomElementAlgorithm_1.customElement_enqueueACustomElementUpgradeReaction(result, definition);
}
}
else if (definition !== null) {
/**
* 6. Otherwise, if definition is non-null, then:
*/
if (synchronousCustomElementsFlag) {
/**
* 6.1. If the synchronous custom elements flag is set, then run these
* steps while catching any exceptions:
*/
try {
/**
* 6.1.1. Let C be definitions constructor.
* 6.1.2. Set result to the result of constructing C, with no arguments.
* 6.1.3. Assert: results custom element state and custom element definition
* are initialized.
* 6.1.4. Assert: results namespace is the HTML namespace.
* _Note:_ IDL enforces that result is an HTMLElement object, which all
* use the HTML namespace.
*/
var C = definition.constructor;
var result_1 = new C();
console.assert(result_1._customElementState !== undefined);
console.assert(result_1._customElementDefinition !== undefined);
console.assert(result_1._namespace === infra_1.namespace.HTML);
/**
* 6.1.5. If results attribute list is not empty, then throw a
* "NotSupportedError" DOMException.
* 6.1.6. If result has children, then throw a "NotSupportedError"
* DOMException.
* 6.1.7. If results parent is not null, then throw a
* "NotSupportedError" DOMException.
* 6.1.8. If results node document is not document, then throw a
* "NotSupportedError" DOMException.
* 6.1.9. If results local name is not equal to localName, then throw
* a "NotSupportedError" DOMException.
*/
if (result_1._attributeList.length !== 0)
throw new DOMException_1.NotSupportedError("Custom element already has attributes.");
if (result_1._children.size !== 0)
throw new DOMException_1.NotSupportedError("Custom element already has child nodes.");
if (result_1._parent !== null)
throw new DOMException_1.NotSupportedError("Custom element already has a parent node.");
if (result_1._nodeDocument !== document)
throw new DOMException_1.NotSupportedError("Custom element is already in a document.");
if (result_1._localName !== localName)
throw new DOMException_1.NotSupportedError("Custom element has a different local name.");
/**
* 6.1.10. Set results namespace prefix to prefix.
* 6.1.11. Set results is value to null.
*/
result_1._namespacePrefix = prefix;
result_1._is = null;
}
catch (e) {
/**
* If any of these steps threw an exception, then:
* - Report the exception.
* - Set result to a new element that implements the HTMLUnknownElement
* interface, with no attributes, namespace set to the HTML namespace,
* namespace prefix set to prefix, local name set to localName, custom
* element state set to "failed", custom element definition set to null,
* is value set to null, and node document set to document.
*/
// TODO: Report the exception
result = CreateAlgorithm_1.create_htmlUnknownElement(document, localName, infra_1.namespace.HTML, prefix);
result._customElementState = "failed";
result._customElementDefinition = null;
result._is = null;
}
}
else {
/**
* 6.2. Otherwise:
* 6.2.1. Set result to a new element that implements the HTMLElement
* interface, with no attributes, namespace set to the HTML namespace,
* namespace prefix set to prefix, local name set to localName, custom
* element state set to "undefined", custom element definition set to
* null, is value set to null, and node document set to document.
* 6.2.2. Enqueue a custom element upgrade reaction given result and
* definition.
*/
result = CreateAlgorithm_1.create_htmlElement(document, localName, infra_1.namespace.HTML, prefix);
result._customElementState = "undefined";
result._customElementDefinition = null;
result._is = null;
CustomElementAlgorithm_1.customElement_enqueueACustomElementUpgradeReaction(result, definition);
}
}
else {
/**
* 7. Otherwise:
* 7.1. Let interface be the element interface for localName and
* namespace.
* 7.2. Set result to a new element that implements interface, with no
* attributes, namespace set to namespace, namespace prefix set to prefix,
* local name set to localName, custom element state set to
* "uncustomized", custom element definition set to null, is value set to
* is, and node document set to document.
*/
var elementInterface = DocumentAlgorithm_1.document_elementInterface(localName, namespace);
result = new elementInterface();
result._localName = localName;
result._namespace = namespace;
result._namespacePrefix = prefix;
result._customElementState = "uncustomized";
result._customElementDefinition = null;
result._is = is;
result._nodeDocument = document;
/**
* 7.3. If namespace is the HTML namespace, and either localName is a
* valid custom element name or is is non-null, then set results
* custom element state to "undefined".
*/
if (namespace === infra_1.namespace.HTML && (is !== null ||
CustomElementAlgorithm_1.customElement_isValidCustomElementName(localName))) {
result._customElementState = "undefined";
}
}
/* istanbul ignore next */
if (result === null) {
throw new Error("Unable to create element.");
}
/**
* 8. Returns result
*/
return result;
}
exports.element_createAnElement = element_createAnElement;
/**
* Inserts a new node adjacent to this element.
*
* @param element - a reference element
* @param where - a string defining where to insert the element node.
* - `beforebegin` before this element itself.
* - `afterbegin` before the first child.
* - `beforeend` after the last child.
* - `afterend` after this element itself.
* @param node - node to insert
*/
function element_insertAdjacent(element, where, node) {
/**
* - "beforebegin"
* If elements parent is null, return null.
* Return the result of pre-inserting node into elements parent before
* element.
* - "afterbegin"
* Return the result of pre-inserting node into element before elements
* first child.
* - "beforeend"
* Return the result of pre-inserting node into element before null.
* - "afterend"
* If elements parent is null, return null.
* Return the result of pre-inserting node into elements parent before elements next sibling.
* - Otherwise
* Throw a "SyntaxError" DOMException.
*/
switch (where.toLowerCase()) {
case 'beforebegin':
if (element._parent === null)
return null;
return MutationAlgorithm_1.mutation_preInsert(node, element._parent, element);
case 'afterbegin':
return MutationAlgorithm_1.mutation_preInsert(node, element, element._firstChild);
case 'beforeend':
return MutationAlgorithm_1.mutation_preInsert(node, element, null);
case 'afterend':
if (element._parent === null)
return null;
return MutationAlgorithm_1.mutation_preInsert(node, element._parent, element._nextSibling);
default:
throw new DOMException_1.SyntaxError("Invalid 'where' argument. \"beforebegin\", \"afterbegin\", \"beforeend\" or \"afterend\" expected");
}
}
exports.element_insertAdjacent = element_insertAdjacent;
//# sourceMappingURL=ElementAlgorithm.js.map
/***/ }),
/* 34 */
/***/ (function(module) {
module.exports = require("https");
/***/ }),
/* 35 */
/***/ (function(__unusedmodule, exports) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Represents the base class of `Error` objects used by this module.
*/
var DOMException = /** @class */ (function (_super) {
__extends(DOMException, _super);
/**
*
* @param name - message name
* @param message - error message
*/
function DOMException(name, message) {
if (message === void 0) { message = ""; }
var _this = _super.call(this, message) || this;
_this.name = name;
return _this;
}
return DOMException;
}(Error));
exports.DOMException = DOMException;
var DOMStringSizeError = /** @class */ (function (_super) {
__extends(DOMStringSizeError, _super);
/**
* @param message - error message
*/
function DOMStringSizeError(message) {
if (message === void 0) { message = ""; }
return _super.call(this, "DOMStringSizeError", message) || this;
}
return DOMStringSizeError;
}(DOMException));
exports.DOMStringSizeError = DOMStringSizeError;
var WrongDocumentError = /** @class */ (function (_super) {
__extends(WrongDocumentError, _super);
/**
* @param message - error message
*/
function WrongDocumentError(message) {
if (message === void 0) { message = ""; }
return _super.call(this, "WrongDocumentError", "The object is in the wrong document. " + message) || this;
}
return WrongDocumentError;
}(DOMException));
exports.WrongDocumentError = WrongDocumentError;
var NoDataAllowedError = /** @class */ (function (_super) {
__extends(NoDataAllowedError, _super);
/**
* @param message - error message
*/
function NoDataAllowedError(message) {
if (message === void 0) { message = ""; }
return _super.call(this, "NoDataAllowedError", message) || this;
}
return NoDataAllowedError;
}(DOMException));
exports.NoDataAllowedError = NoDataAllowedError;
var NoModificationAllowedError = /** @class */ (function (_super) {
__extends(NoModificationAllowedError, _super);
/**
* @param message - error message
*/
function NoModificationAllowedError(message) {
if (message === void 0) { message = ""; }
return _super.call(this, "NoModificationAllowedError", "The object can not be modified. " + message) || this;
}
return NoModificationAllowedError;
}(DOMException));
exports.NoModificationAllowedError = NoModificationAllowedError;
var NotSupportedError = /** @class */ (function (_super) {
__extends(NotSupportedError, _super);
/**
* @param message - error message
*/
function NotSupportedError(message) {
if (message === void 0) { message = ""; }
return _super.call(this, "NotSupportedError", "The operation is not supported. " + message) || this;
}
return NotSupportedError;
}(DOMException));
exports.NotSupportedError = NotSupportedError;
var InUseAttributeError = /** @class */ (function (_super) {
__extends(InUseAttributeError, _super);
/**
* @param message - error message
*/
function InUseAttributeError(message) {
if (message === void 0) { message = ""; }
return _super.call(this, "InUseAttributeError", message) || this;
}
return InUseAttributeError;
}(DOMException));
exports.InUseAttributeError = InUseAttributeError;
var InvalidStateError = /** @class */ (function (_super) {
__extends(InvalidStateError, _super);
/**
* @param message - error message
*/
function InvalidStateError(message) {
if (message === void 0) { message = ""; }
return _super.call(this, "InvalidStateError", "The object is in an invalid state. " + message) || this;
}
return InvalidStateError;
}(DOMException));
exports.InvalidStateError = InvalidStateError;
var InvalidModificationError = /** @class */ (function (_super) {
__extends(InvalidModificationError, _super);
/**
* @param message - error message
*/
function InvalidModificationError(message) {
if (message === void 0) { message = ""; }
return _super.call(this, "InvalidModificationError", "The object can not be modified in this way. " + message) || this;
}
return InvalidModificationError;
}(DOMException));
exports.InvalidModificationError = InvalidModificationError;
var NamespaceError = /** @class */ (function (_super) {
__extends(NamespaceError, _super);
/**
* @param message - error message
*/
function NamespaceError(message) {
if (message === void 0) { message = ""; }
return _super.call(this, "NamespaceError", "The operation is not allowed by Namespaces in XML. [XMLNS] " + message) || this;
}
return NamespaceError;
}(DOMException));
exports.NamespaceError = NamespaceError;
var InvalidAccessError = /** @class */ (function (_super) {
__extends(InvalidAccessError, _super);
/**
* @param message - error message
*/
function InvalidAccessError(message) {
if (message === void 0) { message = ""; }
return _super.call(this, "InvalidAccessError", "The object does not support the operation or argument. " + message) || this;
}
return InvalidAccessError;
}(DOMException));
exports.InvalidAccessError = InvalidAccessError;
var ValidationError = /** @class */ (function (_super) {
__extends(ValidationError, _super);
/**
* @param message - error message
*/
function ValidationError(message) {
if (message === void 0) { message = ""; }
return _super.call(this, "ValidationError", message) || this;
}
return ValidationError;
}(DOMException));
exports.ValidationError = ValidationError;
var TypeMismatchError = /** @class */ (function (_super) {
__extends(TypeMismatchError, _super);
/**
* @param message - error message
*/
function TypeMismatchError(message) {
if (message === void 0) { message = ""; }
return _super.call(this, "TypeMismatchError", message) || this;
}
return TypeMismatchError;
}(DOMException));
exports.TypeMismatchError = TypeMismatchError;
var SecurityError = /** @class */ (function (_super) {
__extends(SecurityError, _super);
/**
* @param message - error message
*/
function SecurityError(message) {
if (message === void 0) { message = ""; }
return _super.call(this, "SecurityError", "The operation is insecure. " + message) || this;
}
return SecurityError;
}(DOMException));
exports.SecurityError = SecurityError;
var NetworkError = /** @class */ (function (_super) {
__extends(NetworkError, _super);
/**
* @param message - error message
*/
function NetworkError(message) {
if (message === void 0) { message = ""; }
return _super.call(this, "NetworkError", "A network error occurred. " + message) || this;
}
return NetworkError;
}(DOMException));
exports.NetworkError = NetworkError;
var AbortError = /** @class */ (function (_super) {
__extends(AbortError, _super);
/**
* @param message - error message
*/
function AbortError(message) {
if (message === void 0) { message = ""; }
return _super.call(this, "AbortError", "The operation was aborted. " + message) || this;
}
return AbortError;
}(DOMException));
exports.AbortError = AbortError;
var URLMismatchError = /** @class */ (function (_super) {
__extends(URLMismatchError, _super);
/**
* @param message - error message
*/
function URLMismatchError(message) {
if (message === void 0) { message = ""; }
return _super.call(this, "URLMismatchError", "The given URL does not match another URL. " + message) || this;
}
return URLMismatchError;
}(DOMException));
exports.URLMismatchError = URLMismatchError;
var QuotaExceededError = /** @class */ (function (_super) {
__extends(QuotaExceededError, _super);
/**
* @param message - error message
*/
function QuotaExceededError(message) {
if (message === void 0) { message = ""; }
return _super.call(this, "QuotaExceededError", "The quota has been exceeded. " + message) || this;
}
return QuotaExceededError;
}(DOMException));
exports.QuotaExceededError = QuotaExceededError;
var TimeoutError = /** @class */ (function (_super) {
__extends(TimeoutError, _super);
/**
* @param message - error message
*/
function TimeoutError(message) {
if (message === void 0) { message = ""; }
return _super.call(this, "TimeoutError", "The operation timed out. " + message) || this;
}
return TimeoutError;
}(DOMException));
exports.TimeoutError = TimeoutError;
var InvalidNodeTypeError = /** @class */ (function (_super) {
__extends(InvalidNodeTypeError, _super);
/**
* @param message - error message
*/
function InvalidNodeTypeError(message) {
if (message === void 0) { message = ""; }
return _super.call(this, "InvalidNodeTypeError", "The supplied node is incorrect or has an incorrect ancestor for this operation. " + message) || this;
}
return InvalidNodeTypeError;
}(DOMException));
exports.InvalidNodeTypeError = InvalidNodeTypeError;
var DataCloneError = /** @class */ (function (_super) {
__extends(DataCloneError, _super);
/**
* @param message - error message
*/
function DataCloneError(message) {
if (message === void 0) { message = ""; }
return _super.call(this, "DataCloneError", "The object can not be cloned. " + message) || this;
}
return DataCloneError;
}(DOMException));
exports.DataCloneError = DataCloneError;
var NotImplementedError = /** @class */ (function (_super) {
__extends(NotImplementedError, _super);
/**
* @param message - error message
*/
function NotImplementedError(message) {
if (message === void 0) { message = ""; }
return _super.call(this, "NotImplementedError", "The DOM method is not implemented by this module. " + message) || this;
}
return NotImplementedError;
}(DOMException));
exports.NotImplementedError = NotImplementedError;
var HierarchyRequestError = /** @class */ (function (_super) {
__extends(HierarchyRequestError, _super);
/**
* @param message - error message
*/
function HierarchyRequestError(message) {
if (message === void 0) { message = ""; }
return _super.call(this, "HierarchyRequestError", "The operation would yield an incorrect node tree. " + message) || this;
}
return HierarchyRequestError;
}(DOMException));
exports.HierarchyRequestError = HierarchyRequestError;
var NotFoundError = /** @class */ (function (_super) {
__extends(NotFoundError, _super);
/**
* @param message - error message
*/
function NotFoundError(message) {
if (message === void 0) { message = ""; }
return _super.call(this, "NotFoundError", "The object can not be found here. " + message) || this;
}
return NotFoundError;
}(DOMException));
exports.NotFoundError = NotFoundError;
var IndexSizeError = /** @class */ (function (_super) {
__extends(IndexSizeError, _super);
/**
* @param message - error message
*/
function IndexSizeError(message) {
if (message === void 0) { message = ""; }
return _super.call(this, "IndexSizeError", "The index is not in the allowed range. " + message) || this;
}
return IndexSizeError;
}(DOMException));
exports.IndexSizeError = IndexSizeError;
var SyntaxError = /** @class */ (function (_super) {
__extends(SyntaxError, _super);
/**
* @param message - error message
*/
function SyntaxError(message) {
if (message === void 0) { message = ""; }
return _super.call(this, "SyntaxError", "The string did not match the expected pattern. " + message) || this;
}
return SyntaxError;
}(DOMException));
exports.SyntaxError = SyntaxError;
var InvalidCharacterError = /** @class */ (function (_super) {
__extends(InvalidCharacterError, _super);
/**
* @param message - error message
*/
function InvalidCharacterError(message) {
if (message === void 0) { message = ""; }
return _super.call(this, "InvalidCharacterError", "The string contains invalid characters. " + message) || this;
}
return InvalidCharacterError;
}(DOMException));
exports.InvalidCharacterError = InvalidCharacterError;
//# sourceMappingURL=DOMException.js.map
/***/ }),
/* 36 */,
/* 37 */,
/* 38 */,
/* 39 */,
/* 40 */,
/* 41 */,
/* 42 */,
/* 43 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var NodeImpl_1 = __webpack_require__(935);
var algorithm_1 = __webpack_require__(163);
/**
* Represents a generic text node.
*/
var CharacterDataImpl = /** @class */ (function (_super) {
__extends(CharacterDataImpl, _super);
/**
* Initializes a new instance of `CharacterData`.
*
* @param data - the text content
*/
function CharacterDataImpl(data) {
var _this = _super.call(this) || this;
_this._data = data;
return _this;
}
Object.defineProperty(CharacterDataImpl.prototype, "data", {
/** @inheritdoc */
get: function () { return this._data; },
set: function (value) {
algorithm_1.characterData_replaceData(this, 0, this._data.length, value);
},
enumerable: true,
configurable: true
});
Object.defineProperty(CharacterDataImpl.prototype, "length", {
/** @inheritdoc */
get: function () { return this._data.length; },
enumerable: true,
configurable: true
});
/** @inheritdoc */
CharacterDataImpl.prototype.substringData = function (offset, count) {
/**
* The substringData(offset, count) method, when invoked, must return the
* result of running substring data with node context object, offset offset, and count count.
*/
return algorithm_1.characterData_substringData(this, offset, count);
};
/** @inheritdoc */
CharacterDataImpl.prototype.appendData = function (data) {
/**
* The appendData(data) method, when invoked, must replace data with node
* context object, offset context objects length, count 0, and data data.
*/
return algorithm_1.characterData_replaceData(this, this._data.length, 0, data);
};
/** @inheritdoc */
CharacterDataImpl.prototype.insertData = function (offset, data) {
/**
* The insertData(offset, data) method, when invoked, must replace data with
* node context object, offset offset, count 0, and data data.
*/
algorithm_1.characterData_replaceData(this, offset, 0, data);
};
/** @inheritdoc */
CharacterDataImpl.prototype.deleteData = function (offset, count) {
/**
* The deleteData(offset, count) method, when invoked, must replace data
* with node context object, offset offset, count count, and data the
* empty string.
*/
algorithm_1.characterData_replaceData(this, offset, count, '');
};
/** @inheritdoc */
CharacterDataImpl.prototype.replaceData = function (offset, count, data) {
/**
* The replaceData(offset, count, data) method, when invoked, must replace
* data with node context object, offset offset, count count, and data data.
*/
algorithm_1.characterData_replaceData(this, offset, count, data);
};
Object.defineProperty(CharacterDataImpl.prototype, "previousElementSibling", {
// MIXIN: NonDocumentTypeChildNode
/* istanbul ignore next */
get: function () { throw new Error("Mixin: NonDocumentTypeChildNode not implemented."); },
enumerable: true,
configurable: true
});
Object.defineProperty(CharacterDataImpl.prototype, "nextElementSibling", {
/* istanbul ignore next */
get: function () { throw new Error("Mixin: NonDocumentTypeChildNode not implemented."); },
enumerable: true,
configurable: true
});
// MIXIN: ChildNode
/* istanbul ignore next */
CharacterDataImpl.prototype.before = function () {
var nodes = [];
for (var _i = 0; _i < arguments.length; _i++) {
nodes[_i] = arguments[_i];
}
throw new Error("Mixin: ChildNode not implemented.");
};
/* istanbul ignore next */
CharacterDataImpl.prototype.after = function () {
var nodes = [];
for (var _i = 0; _i < arguments.length; _i++) {
nodes[_i] = arguments[_i];
}
throw new Error("Mixin: ChildNode not implemented.");
};
/* istanbul ignore next */
CharacterDataImpl.prototype.replaceWith = function () {
var nodes = [];
for (var _i = 0; _i < arguments.length; _i++) {
nodes[_i] = arguments[_i];
}
throw new Error("Mixin: ChildNode not implemented.");
};
/* istanbul ignore next */
CharacterDataImpl.prototype.remove = function () { throw new Error("Mixin: ChildNode not implemented."); };
return CharacterDataImpl;
}(NodeImpl_1.NodeImpl));
exports.CharacterDataImpl = CharacterDataImpl;
//# sourceMappingURL=CharacterDataImpl.js.map
/***/ }),
/* 44 */
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
var common = __webpack_require__(740);
var Type = __webpack_require__(945);
function isHexCode(c) {
return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||
((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||
((0x61/* a */ <= c) && (c <= 0x66/* f */));
}
function isOctCode(c) {
return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));
}
function isDecCode(c) {
return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));
}
function resolveYamlInteger(data) {
if (data === null) return false;
var max = data.length,
index = 0,
hasDigits = false,
ch;
if (!max) return false;
ch = data[index];
// sign
if (ch === '-' || ch === '+') {
ch = data[++index];
}
if (ch === '0') {
// 0
if (index + 1 === max) return true;
ch = data[++index];
// base 2, base 8, base 16
if (ch === 'b') {
// base 2
index++;
for (; index < max; index++) {
ch = data[index];
if (ch === '_') continue;
if (ch !== '0' && ch !== '1') return false;
hasDigits = true;
}
return hasDigits && ch !== '_';
}
if (ch === 'x') {
// base 16
index++;
for (; index < max; index++) {
ch = data[index];
if (ch === '_') continue;
if (!isHexCode(data.charCodeAt(index))) return false;
hasDigits = true;
}
return hasDigits && ch !== '_';
}
// base 8
for (; index < max; index++) {
ch = data[index];
if (ch === '_') continue;
if (!isOctCode(data.charCodeAt(index))) return false;
hasDigits = true;
}
return hasDigits && ch !== '_';
}
// base 10 (except 0) or base 60
// value should not start with `_`;
if (ch === '_') return false;
for (; index < max; index++) {
ch = data[index];
if (ch === '_') continue;
if (ch === ':') break;
if (!isDecCode(data.charCodeAt(index))) {
return false;
}
hasDigits = true;
}
// Should have digits and should not end with `_`
if (!hasDigits || ch === '_') return false;
// if !base60 - done;
if (ch !== ':') return true;
// base60 almost not used, no needs to optimize
return /^(:[0-5]?[0-9])+$/.test(data.slice(index));
}
function constructYamlInteger(data) {
var value = data, sign = 1, ch, base, digits = [];
if (value.indexOf('_') !== -1) {
value = value.replace(/_/g, '');
}
ch = value[0];
if (ch === '-' || ch === '+') {
if (ch === '-') sign = -1;
value = value.slice(1);
ch = value[0];
}
if (value === '0') return 0;
if (ch === '0') {
if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);
if (value[1] === 'x') return sign * parseInt(value, 16);
return sign * parseInt(value, 8);
}
if (value.indexOf(':') !== -1) {
value.split(':').forEach(function (v) {
digits.unshift(parseInt(v, 10));
});
value = 0;
base = 1;
digits.forEach(function (d) {
value += (d * base);
base *= 60;
});
return sign * value;
}
return sign * parseInt(value, 10);
}
function isInteger(object) {
return (Object.prototype.toString.call(object)) === '[object Number]' &&
(object % 1 === 0 && !common.isNegativeZero(object));
}
module.exports = new Type('tag:yaml.org,2002:int', {
kind: 'scalar',
resolve: resolveYamlInteger,
construct: constructYamlInteger,
predicate: isInteger,
represent: {
binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); },
octal: function (obj) { return obj >= 0 ? '0' + obj.toString(8) : '-0' + obj.toString(8).slice(1); },
decimal: function (obj) { return obj.toString(10); },
/* eslint-disable max-len */
hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); }
},
defaultStyle: 'decimal',
styleAliases: {
binary: [ 2, 'bin' ],
octal: [ 8, 'oct' ],
decimal: [ 10, 'dec' ],
hexadecimal: [ 16, 'hex' ]
}
});
/***/ }),
/* 45 */,
/* 46 */,
/* 47 */
/***/ (function(__unusedmodule, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Walks through the code points of a string.
*/
var StringWalker = /** @class */ (function () {
/**
* Initializes a new `StringWalker`.
*
* @param input - input string
*/
function StringWalker(input) {
this._pointer = 0;
this._chars = Array.from(input);
this._length = this._chars.length;
}
Object.defineProperty(StringWalker.prototype, "eof", {
/**
* Determines if the current position is beyond the end of string.
*/
get: function () { return this._pointer >= this._length; },
enumerable: true,
configurable: true
});
Object.defineProperty(StringWalker.prototype, "length", {
/**
* Returns the number of code points in the input string.
*/
get: function () { return this._length; },
enumerable: true,
configurable: true
});
/**
* Returns the current code point. Returns `-1` if the position is beyond
* the end of string.
*/
StringWalker.prototype.codePoint = function () {
if (this._codePoint === undefined) {
if (this.eof) {
this._codePoint = -1;
}
else {
var cp = this._chars[this._pointer].codePointAt(0);
/* istanbul ignore else */
if (cp !== undefined) {
this._codePoint = cp;
}
else {
this._codePoint = -1;
}
}
}
return this._codePoint;
};
/**
* Returns the current character. Returns an empty string if the position is
* beyond the end of string.
*/
StringWalker.prototype.c = function () {
if (this._c === undefined) {
this._c = (this.eof ? "" : this._chars[this._pointer]);
}
return this._c;
};
/**
* Returns the remaining string.
*/
StringWalker.prototype.remaining = function () {
if (this._remaining === undefined) {
this._remaining = (this.eof ?
"" : this._chars.slice(this._pointer + 1).join(''));
}
return this._remaining;
};
/**
* Returns the substring from the current character to the end of string.
*/
StringWalker.prototype.substring = function () {
if (this._substring === undefined) {
this._substring = (this.eof ?
"" : this._chars.slice(this._pointer).join(''));
}
return this._substring;
};
Object.defineProperty(StringWalker.prototype, "pointer", {
/**
* Gets or sets the current position.
*/
get: function () { return this._pointer; },
set: function (val) {
if (val === this._pointer)
return;
this._pointer = val;
this._codePoint = undefined;
this._c = undefined;
this._remaining = undefined;
this._substring = undefined;
},
enumerable: true,
configurable: true
});
return StringWalker;
}());
exports.StringWalker = StringWalker;
//# sourceMappingURL=StringWalker.js.map
/***/ }),
/* 48 */,
/* 49 */,
/* 50 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var util_1 = __webpack_require__(592);
var BaseReader_1 = __webpack_require__(305);
var dom_1 = __webpack_require__(743);
/**
* Parses XML nodes from objects and arrays.
* ES6 maps and sets are also supoorted.
*/
var ObjectReader = /** @class */ (function (_super) {
__extends(ObjectReader, _super);
function ObjectReader() {
return _super !== null && _super.apply(this, arguments) || this;
}
/**
* Parses the given document representation.
*
* @param node - node receive parsed XML nodes
* @param obj - object to parse
*/
ObjectReader.prototype._parse = function (node, obj) {
var _this = this;
var options = this._builderOptions;
// sanitizes input characters
var invalidCharReplacement = options.invalidCharReplacement;
var s = function (str) {
return dom_1.sanitizeInput(str, invalidCharReplacement);
};
var lastChild = null;
if (util_1.isFunction(obj)) {
// evaluate if function
lastChild = this.parse(node, obj.apply(this));
}
else if (util_1.isArray(obj) || util_1.isSet(obj)) {
util_1.forEachArray(obj, function (item) { return lastChild = _this.parse(node, item); }, this);
}
else /* if (isMap(obj) || isObject(obj)) */ {
// expand if object
util_1.forEachObject(obj, function (key, val) {
if (util_1.isFunction(val)) {
// evaluate if function
val = val.apply(_this);
}
if (!options.ignoreConverters && key.indexOf(options.convert.att) === 0) {
// assign attributes
if (key === options.convert.att) {
if (util_1.isArray(val) || util_1.isSet(val)) {
throw new Error("Invalid attribute: " + val.toString() + ". " + node._debugInfo());
}
else /* if (isMap(val) || isObject(val)) */ {
util_1.forEachObject(val, function (attrKey, attrVal) {
lastChild = _this.attribute(node, undefined, s(attrKey), s(attrVal)) || lastChild;
});
}
}
else {
lastChild = _this.attribute(node, undefined, s(key.substr(options.convert.att.length)), s(val)) || lastChild;
}
}
else if (!options.ignoreConverters && key.indexOf(options.convert.text) === 0) {
// text node
if (util_1.isMap(val) || util_1.isObject(val)) {
// if the key is #text expand child nodes under this node to support mixed content
lastChild = _this.parse(node, val);
}
else {
lastChild = _this.text(node, s(val)) || lastChild;
}
}
else if (!options.ignoreConverters && key.indexOf(options.convert.cdata) === 0) {
// cdata node
if (util_1.isArray(val) || util_1.isSet(val)) {
util_1.forEachArray(val, function (item) { return lastChild = _this.cdata(node, s(item)) || lastChild; }, _this);
}
else {
lastChild = _this.cdata(node, s(val)) || lastChild;
}
}
else if (!options.ignoreConverters && key.indexOf(options.convert.comment) === 0) {
// comment node
if (util_1.isArray(val) || util_1.isSet(val)) {
util_1.forEachArray(val, function (item) { return lastChild = _this.comment(node, s(item)) || lastChild; }, _this);
}
else {
lastChild = _this.comment(node, s(val)) || lastChild;
}
}
else if (!options.ignoreConverters && key.indexOf(options.convert.ins) === 0) {
// processing instruction
if (util_1.isString(val)) {
var insIndex = val.indexOf(' ');
var insTarget = (insIndex === -1 ? val : val.substr(0, insIndex));
var insValue = (insIndex === -1 ? '' : val.substr(insIndex + 1));
lastChild = _this.instruction(node, s(insTarget), s(insValue)) || lastChild;
}
else if (util_1.isArray(val) || util_1.isSet(val)) {
util_1.forEachArray(val, function (item) {
var insIndex = item.indexOf(' ');
var insTarget = (insIndex === -1 ? item : item.substr(0, insIndex));
var insValue = (insIndex === -1 ? '' : item.substr(insIndex + 1));
lastChild = _this.instruction(node, s(insTarget), s(insValue)) || lastChild;
}, _this);
}
else /* if (isMap(target) || isObject(target)) */ {
util_1.forEachObject(val, function (insTarget, insValue) { return lastChild = _this.instruction(node, s(insTarget), s(insValue)) || lastChild; }, _this);
}
}
else if ((util_1.isArray(val) || util_1.isSet(val)) && util_1.isEmpty(val)) {
// skip empty arrays
}
else if ((util_1.isMap(val) || util_1.isObject(val)) && util_1.isEmpty(val)) {
// empty objects produce one node
lastChild = _this.element(node, undefined, s(key)) || lastChild;
}
else if (!options.keepNullNodes && (val == null)) {
// skip null and undefined nodes
}
else if (util_1.isArray(val) || util_1.isSet(val)) {
// expand list by creating child nodes
util_1.forEachArray(val, function (item) {
var childNode = {};
childNode[key] = item;
lastChild = _this.parse(node, childNode);
}, _this);
}
else if (util_1.isMap(val) || util_1.isObject(val)) {
// create a parent node
var parent = _this.element(node, undefined, key);
if (parent) {
lastChild = parent;
// expand child nodes under parent
_this.parse(parent, val);
}
}
else if (val != null && val !== '') {
// leaf element node with a single text node
var parent = _this.element(node, undefined, key);
if (parent) {
lastChild = parent;
_this.text(parent, s(val));
}
}
else {
// leaf element node
lastChild = _this.element(node, undefined, s(key)) || lastChild;
}
}, this);
}
return lastChild || node;
};
return ObjectReader;
}(BaseReader_1.BaseReader));
exports.ObjectReader = ObjectReader;
//# sourceMappingURL=ObjectReader.js.map
/***/ }),
/* 51 */,
/* 52 */,
/* 53 */,
/* 54 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var OrderedSetAlgorithm_1 = __webpack_require__(146);
var DOMAlgorithm_1 = __webpack_require__(304);
var ElementAlgorithm_1 = __webpack_require__(33);
/**
* Validates a given token against the supported tokens defined for the given
* token lists' associated attribute.
*
* @param tokenList - a token list
* @param token - a token
*/
function tokenList_validationSteps(tokenList, token) {
/**
* 1. If the associated attributes local name does not define supported
* tokens, throw a TypeError.
* 2. Let lowercase token be a copy of token, in ASCII lowercase.
* 3. If lowercase token is present in supported tokens, return true.
* 4. Return false.
*/
if (!DOMAlgorithm_1.dom_hasSupportedTokens(tokenList._attribute._localName)) {
throw new TypeError("There are no supported tokens defined for attribute name: '" + tokenList._attribute._localName + "'.");
}
return DOMAlgorithm_1.dom_getSupportedTokens(tokenList._attribute._localName).has(token.toLowerCase());
}
exports.tokenList_validationSteps = tokenList_validationSteps;
/**
* Updates the value of the token lists' associated attribute.
*
* @param tokenList - a token list
*/
function tokenList_updateSteps(tokenList) {
/**
* 1. If the associated element does not have an associated attribute and
* token set is empty, then return.
* 2. Set an attribute value for the associated element using associated
* attributes local name and the result of running the ordered set
* serializer for token set.
*/
if (!tokenList._element.hasAttribute(tokenList._attribute._localName) &&
tokenList._tokenSet.size === 0) {
return;
}
ElementAlgorithm_1.element_setAnAttributeValue(tokenList._element, tokenList._attribute._localName, OrderedSetAlgorithm_1.orderedSet_serialize(tokenList._tokenSet));
}
exports.tokenList_updateSteps = tokenList_updateSteps;
/**
* Gets the value of the token lists' associated attribute.
*
* @param tokenList - a token list
*/
function tokenList_serializeSteps(tokenList) {
/**
* A DOMTokenList objects serialize steps are to return the result of
* running get an attribute value given the associated element and the
* associated attributes local name.
*/
return ElementAlgorithm_1.element_getAnAttributeValue(tokenList._element, tokenList._attribute._localName);
}
exports.tokenList_serializeSteps = tokenList_serializeSteps;
//# sourceMappingURL=DOMTokenListAlgorithm.js.map
/***/ }),
/* 55 */,
/* 56 */,
/* 57 */,
/* 58 */
/***/ (function(module, __unusedexports, __webpack_require__) {
// Unique ID creation requires a high quality random # generator. In node.js
// this is pretty straight-forward - we use the crypto API.
var crypto = __webpack_require__(373);
module.exports = function nodeRNG() {
return crypto.randomBytes(16);
};
/***/ }),
/* 59 */,
/* 60 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
var util_1 = __webpack_require__(592);
var CreateAlgorithm_1 = __webpack_require__(86);
/**
* Converts the given nodes or strings into a node (if `nodes` has
* only one element) or a document fragment.
*
* @param nodes - the array of nodes or strings,
* @param document - owner document
*/
function parentNode_convertNodesIntoANode(nodes, document) {
var e_1, _a;
/**
* 1. Let node be null.
* 2. Replace each string in nodes with a new Text node whose data is the
* string and node document is document.
*/
var node = null;
for (var i = 0; i < nodes.length; i++) {
var item = nodes[i];
if (util_1.isString(item)) {
var text = CreateAlgorithm_1.create_text(document, item);
nodes[i] = text;
}
}
/**
* 3. If nodes contains one node, set node to that node.
* 4. Otherwise, set node to a new DocumentFragment whose node document is
* document, and then append each node in nodes, if any, to it.
*/
if (nodes.length === 1) {
node = nodes[0];
}
else {
node = CreateAlgorithm_1.create_documentFragment(document);
var ns = node;
try {
for (var nodes_1 = __values(nodes), nodes_1_1 = nodes_1.next(); !nodes_1_1.done; nodes_1_1 = nodes_1.next()) {
var item = nodes_1_1.value;
ns.appendChild(item);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (nodes_1_1 && !nodes_1_1.done && (_a = nodes_1.return)) _a.call(nodes_1);
}
finally { if (e_1) throw e_1.error; }
}
}
/**
* 5. Return node.
*/
return node;
}
exports.parentNode_convertNodesIntoANode = parentNode_convertNodesIntoANode;
//# sourceMappingURL=ParentNodeAlgorithm.js.map
/***/ }),
/* 61 */,
/* 62 */,
/* 63 */,
/* 64 */,
/* 65 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const debug = __webpack_require__(548)
const { MAX_LENGTH, MAX_SAFE_INTEGER } = __webpack_require__(181)
const { re, t } = __webpack_require__(976)
const parseOptions = __webpack_require__(143)
const { compareIdentifiers } = __webpack_require__(954)
class SemVer {
constructor (version, options) {
options = parseOptions(options)
if (version instanceof SemVer) {
if (version.loose === !!options.loose &&
version.includePrerelease === !!options.includePrerelease) {
return version
} else {
version = version.version
}
} else if (typeof version !== 'string') {
throw new TypeError(`Invalid Version: ${version}`)
}
if (version.length > MAX_LENGTH) {
throw new TypeError(
`version is longer than ${MAX_LENGTH} characters`
)
}
debug('SemVer', version, options)
this.options = options
this.loose = !!options.loose
// this isn't actually relevant for versions, but keep it so that we
// don't run into trouble passing this.options around.
this.includePrerelease = !!options.includePrerelease
const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])
if (!m) {
throw new TypeError(`Invalid Version: ${version}`)
}
this.raw = version
// these are actually numbers
this.major = +m[1]
this.minor = +m[2]
this.patch = +m[3]
if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
throw new TypeError('Invalid major version')
}
if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
throw new TypeError('Invalid minor version')
}
if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
throw new TypeError('Invalid patch version')
}
// numberify any prerelease numeric ids
if (!m[4]) {
this.prerelease = []
} else {
this.prerelease = m[4].split('.').map((id) => {
if (/^[0-9]+$/.test(id)) {
const num = +id
if (num >= 0 && num < MAX_SAFE_INTEGER) {
return num
}
}
return id
})
}
this.build = m[5] ? m[5].split('.') : []
this.format()
}
format () {
this.version = `${this.major}.${this.minor}.${this.patch}`
if (this.prerelease.length) {
this.version += `-${this.prerelease.join('.')}`
}
return this.version
}
toString () {
return this.version
}
compare (other) {
debug('SemVer.compare', this.version, this.options, other)
if (!(other instanceof SemVer)) {
if (typeof other === 'string' && other === this.version) {
return 0
}
other = new SemVer(other, this.options)
}
if (other.version === this.version) {
return 0
}
return this.compareMain(other) || this.comparePre(other)
}
compareMain (other) {
if (!(other instanceof SemVer)) {
other = new SemVer(other, this.options)
}
return (
compareIdentifiers(this.major, other.major) ||
compareIdentifiers(this.minor, other.minor) ||
compareIdentifiers(this.patch, other.patch)
)
}
comparePre (other) {
if (!(other instanceof SemVer)) {
other = new SemVer(other, this.options)
}
// NOT having a prerelease is > having one
if (this.prerelease.length && !other.prerelease.length) {
return -1
} else if (!this.prerelease.length && other.prerelease.length) {
return 1
} else if (!this.prerelease.length && !other.prerelease.length) {
return 0
}
let i = 0
do {
const a = this.prerelease[i]
const b = other.prerelease[i]
debug('prerelease compare', i, a, b)
if (a === undefined && b === undefined) {
return 0
} else if (b === undefined) {
return 1
} else if (a === undefined) {
return -1
} else if (a === b) {
continue
} else {
return compareIdentifiers(a, b)
}
} while (++i)
}
compareBuild (other) {
if (!(other instanceof SemVer)) {
other = new SemVer(other, this.options)
}
let i = 0
do {
const a = this.build[i]
const b = other.build[i]
debug('prerelease compare', i, a, b)
if (a === undefined && b === undefined) {
return 0
} else if (b === undefined) {
return 1
} else if (a === undefined) {
return -1
} else if (a === b) {
continue
} else {
return compareIdentifiers(a, b)
}
} while (++i)
}
// preminor will bump the version up to the next minor release, and immediately
// down to pre-release. premajor and prepatch work the same way.
inc (release, identifier) {
switch (release) {
case 'premajor':
this.prerelease.length = 0
this.patch = 0
this.minor = 0
this.major++
this.inc('pre', identifier)
break
case 'preminor':
this.prerelease.length = 0
this.patch = 0
this.minor++
this.inc('pre', identifier)
break
case 'prepatch':
// If this is already a prerelease, it will bump to the next version
// drop any prereleases that might already exist, since they are not
// relevant at this point.
this.prerelease.length = 0
this.inc('patch', identifier)
this.inc('pre', identifier)
break
// If the input is a non-prerelease version, this acts the same as
// prepatch.
case 'prerelease':
if (this.prerelease.length === 0) {
this.inc('patch', identifier)
}
this.inc('pre', identifier)
break
case 'major':
// If this is a pre-major version, bump up to the same major version.
// Otherwise increment major.
// 1.0.0-5 bumps to 1.0.0
// 1.1.0 bumps to 2.0.0
if (
this.minor !== 0 ||
this.patch !== 0 ||
this.prerelease.length === 0
) {
this.major++
}
this.minor = 0
this.patch = 0
this.prerelease = []
break
case 'minor':
// If this is a pre-minor version, bump up to the same minor version.
// Otherwise increment minor.
// 1.2.0-5 bumps to 1.2.0
// 1.2.1 bumps to 1.3.0
if (this.patch !== 0 || this.prerelease.length === 0) {
this.minor++
}
this.patch = 0
this.prerelease = []
break
case 'patch':
// If this is not a pre-release version, it will increment the patch.
// If it is a pre-release it will bump up to the same patch version.
// 1.2.0-5 patches to 1.2.0
// 1.2.0 patches to 1.2.1
if (this.prerelease.length === 0) {
this.patch++
}
this.prerelease = []
break
// This probably shouldn't be used publicly.
// 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.
case 'pre':
if (this.prerelease.length === 0) {
this.prerelease = [0]
} else {
let i = this.prerelease.length
while (--i >= 0) {
if (typeof this.prerelease[i] === 'number') {
this.prerelease[i]++
i = -2
}
}
if (i === -1) {
// didn't increment anything
this.prerelease.push(0)
}
}
if (identifier) {
// 1.2.0-beta.1 bumps to 1.2.0-beta.2,
// 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
if (this.prerelease[0] === identifier) {
if (isNaN(this.prerelease[1])) {
this.prerelease = [identifier, 0]
}
} else {
this.prerelease = [identifier, 0]
}
}
break
default:
throw new Error(`invalid increment argument: ${release}`)
}
this.format()
this.raw = this.version
return this
}
}
module.exports = SemVer
/***/ }),
/* 66 */,
/* 67 */,
/* 68 */,
/* 69 */,
/* 70 */,
/* 71 */,
/* 72 */,
/* 73 */,
/* 74 */,
/* 75 */
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
var Type = __webpack_require__(945);
var _toString = Object.prototype.toString;
function resolveYamlPairs(data) {
if (data === null) return true;
var index, length, pair, keys, result,
object = data;
result = new Array(object.length);
for (index = 0, length = object.length; index < length; index += 1) {
pair = object[index];
if (_toString.call(pair) !== '[object Object]') return false;
keys = Object.keys(pair);
if (keys.length !== 1) return false;
result[index] = [ keys[0], pair[keys[0]] ];
}
return true;
}
function constructYamlPairs(data) {
if (data === null) return [];
var index, length, pair, keys, result,
object = data;
result = new Array(object.length);
for (index = 0, length = object.length; index < length; index += 1) {
pair = object[index];
keys = Object.keys(pair);
result[index] = [ keys[0], pair[keys[0]] ];
}
return result;
}
module.exports = new Type('tag:yaml.org,2002:pairs', {
kind: 'sequence',
resolve: resolveYamlPairs,
construct: constructYamlPairs
});
/***/ }),
/* 76 */,
/* 77 */,
/* 78 */,
/* 79 */,
/* 80 */,
/* 81 */,
/* 82 */
/***/ (function(__unusedmodule, exports) {
"use strict";
// We use any as a valid input type
/* eslint-disable @typescript-eslint/no-explicit-any */
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Sanitizes an input into a string so it can be passed into issueCommand safely
* @param input input to sanitize into a string
*/
function toCommandValue(input) {
if (input === null || input === undefined) {
return '';
}
else if (typeof input === 'string' || input instanceof String) {
return input;
}
return JSON.stringify(input);
}
exports.toCommandValue = toCommandValue;
//# sourceMappingURL=utils.js.map
/***/ }),
/* 83 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.JavaBase = void 0;
const tc = __importStar(__webpack_require__(139));
const core = __importStar(__webpack_require__(470));
const fs = __importStar(__webpack_require__(747));
const semver_1 = __importDefault(__webpack_require__(876));
const path_1 = __importDefault(__webpack_require__(622));
const httpm = __importStar(__webpack_require__(539));
const util_1 = __webpack_require__(322);
const constants_1 = __webpack_require__(211);
class JavaBase {
constructor(distribution, installerOptions) {
this.distribution = distribution;
this.http = new httpm.HttpClient('actions/setup-java', undefined, {
allowRetries: true,
maxRetries: 3
});
({ version: this.version, stable: this.stable } = this.normalizeVersion(installerOptions.version));
this.architecture = installerOptions.architecture;
this.packageType = installerOptions.packageType;
this.checkLatest = installerOptions.checkLatest;
}
setupJava() {
return __awaiter(this, void 0, void 0, function* () {
let foundJava = this.findInToolcache();
if (foundJava && !this.checkLatest) {
core.info(`Resolved Java ${foundJava.version} from tool-cache`);
}
else {
core.info('Trying to resolve the latest version from remote');
const javaRelease = yield this.findPackageForDownload(this.version);
core.info(`Resolved latest version as ${javaRelease.version}`);
if ((foundJava === null || foundJava === void 0 ? void 0 : foundJava.version) === javaRelease.version) {
core.info(`Resolved Java ${foundJava.version} from tool-cache`);
}
else {
core.info('Trying to download...');
foundJava = yield this.downloadTool(javaRelease);
core.info(`Java ${foundJava.version} was downloaded`);
}
}
// JDK folder may contain postfix "Contents/Home" on macOS
const macOSPostfixPath = path_1.default.join(foundJava.path, constants_1.MACOS_JAVA_CONTENT_POSTFIX);
if (process.platform === 'darwin' && fs.existsSync(macOSPostfixPath)) {
foundJava.path = macOSPostfixPath;
}
core.info(`Setting Java ${foundJava.version} as the default`);
this.setJavaDefault(foundJava.version, foundJava.path);
return foundJava;
});
}
get toolcacheFolderName() {
return `Java_${this.distribution}_${this.packageType}`;
}
getToolcacheVersionName(version) {
if (!this.stable) {
if (version.includes('+')) {
return version.replace('+', '-ea.');
}
else {
return `${version}-ea`;
}
}
// Kotlin and some Java dependencies don't work properly when Java path contains "+" sign
// so replace "/hostedtoolcache/Java/11.0.3+4/x64" to "/hostedtoolcache/Java/11.0.3-4/x64" when saves to cache
// related issue: https://github.com/actions/virtual-environments/issues/3014
return version.replace('+', '-');
}
findInToolcache() {
// we can't use tc.find directly because firstly, we need to filter versions by stability flag
// if *-ea is provided, take only ea versions from toolcache, otherwise - only stable versions
const availableVersions = tc
.findAllVersions(this.toolcacheFolderName, this.architecture)
.map(item => {
return {
version: item
.replace('-ea.', '+')
.replace(/-ea$/, '')
// Kotlin and some Java dependencies don't work properly when Java path contains "+" sign
// so replace "/hostedtoolcache/Java/11.0.3-4/x64" to "/hostedtoolcache/Java/11.0.3+4/x64" when retrieves to cache
// related issue: https://github.com/actions/virtual-environments/issues/3014
.replace('-', '+'),
path: util_1.getToolcachePath(this.toolcacheFolderName, item, this.architecture) || '',
stable: !item.includes('-ea')
};
})
.filter(item => item.stable === this.stable);
const satisfiedVersions = availableVersions
.filter(item => util_1.isVersionSatisfies(this.version, item.version))
.filter(item => item.path)
.sort((a, b) => {
return -semver_1.default.compareBuild(a.version, b.version);
});
if (!satisfiedVersions || satisfiedVersions.length === 0) {
return null;
}
return {
version: satisfiedVersions[0].version,
path: satisfiedVersions[0].path
};
}
normalizeVersion(version) {
let stable = true;
if (version.endsWith('-ea')) {
version = version.replace(/-ea$/, '');
stable = false;
}
else if (version.includes('-ea.')) {
// transform '11.0.3-ea.2' -> '11.0.3+2'
version = version.replace('-ea.', '+');
stable = false;
}
if (!semver_1.default.validRange(version)) {
throw new Error(`The string '${version}' is not valid SemVer notation for a Java version. Please check README file for code snippets and more detailed information`);
}
return {
version,
stable
};
}
setJavaDefault(version, toolPath) {
core.exportVariable('JAVA_HOME', toolPath);
core.addPath(path_1.default.join(toolPath, 'bin'));
core.setOutput('distribution', this.distribution);
core.setOutput('path', toolPath);
core.setOutput('version', version);
}
}
exports.JavaBase = JavaBase;
/***/ }),
/* 84 */,
/* 85 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const compare = __webpack_require__(874)
const neq = (a, b, loose) => compare(a, b, loose) !== 0
module.exports = neq
/***/ }),
/* 86 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var DOMImplementationImpl_1 = __webpack_require__(174);
var WindowImpl_1 = __webpack_require__(932);
var XMLDocumentImpl_1 = __webpack_require__(661);
var DocumentImpl_1 = __webpack_require__(488);
var AbortControllerImpl_1 = __webpack_require__(990);
var AbortSignalImpl_1 = __webpack_require__(784);
var DocumentTypeImpl_1 = __webpack_require__(558);
var ElementImpl_1 = __webpack_require__(695);
var DocumentFragmentImpl_1 = __webpack_require__(796);
var ShadowRootImpl_1 = __webpack_require__(581);
var AttrImpl_1 = __webpack_require__(866);
var TextImpl_1 = __webpack_require__(820);
var CDATASectionImpl_1 = __webpack_require__(920);
var CommentImpl_1 = __webpack_require__(760);
var ProcessingInstructionImpl_1 = __webpack_require__(619);
var HTMLCollectionImpl_1 = __webpack_require__(204);
var NodeListImpl_1 = __webpack_require__(636);
var NodeListStaticImpl_1 = __webpack_require__(266);
var NamedNodeMapImpl_1 = __webpack_require__(88);
var RangeImpl_1 = __webpack_require__(90);
var NodeIteratorImpl_1 = __webpack_require__(800);
var TreeWalkerImpl_1 = __webpack_require__(646);
var NodeFilterImpl_1 = __webpack_require__(774);
var MutationRecordImpl_1 = __webpack_require__(730);
var DOMTokenListImpl_1 = __webpack_require__(425);
/**
* Creates a `DOMImplementation`.
*
* @param document - associated document
*/
function create_domImplementation(document) {
return DOMImplementationImpl_1.DOMImplementationImpl._create(document);
}
exports.create_domImplementation = create_domImplementation;
/**
* Creates a `Window` node.
*/
function create_window() {
return WindowImpl_1.WindowImpl._create();
}
exports.create_window = create_window;
/**
* Creates an `XMLDocument` node.
*/
function create_xmlDocument() {
return new XMLDocumentImpl_1.XMLDocumentImpl();
}
exports.create_xmlDocument = create_xmlDocument;
/**
* Creates a `Document` node.
*/
function create_document() {
return new DocumentImpl_1.DocumentImpl();
}
exports.create_document = create_document;
/**
* Creates an `AbortController`.
*/
function create_abortController() {
return new AbortControllerImpl_1.AbortControllerImpl();
}
exports.create_abortController = create_abortController;
/**
* Creates an `AbortSignal`.
*/
function create_abortSignal() {
return AbortSignalImpl_1.AbortSignalImpl._create();
}
exports.create_abortSignal = create_abortSignal;
/**
* Creates a `DocumentType` node.
*
* @param document - owner document
* @param name - name of the node
* @param publicId - `PUBLIC` identifier
* @param systemId - `SYSTEM` identifier
*/
function create_documentType(document, name, publicId, systemId) {
return DocumentTypeImpl_1.DocumentTypeImpl._create(document, name, publicId, systemId);
}
exports.create_documentType = create_documentType;
/**
* Creates a new `Element` node.
*
* @param document - owner document
* @param localName - local name
* @param namespace - namespace
* @param prefix - namespace prefix
*/
function create_element(document, localName, namespace, prefix) {
return ElementImpl_1.ElementImpl._create(document, localName, namespace, prefix);
}
exports.create_element = create_element;
/**
* Creates a new `HTMLElement` node.
*
* @param document - owner document
* @param localName - local name
* @param namespace - namespace
* @param prefix - namespace prefix
*/
function create_htmlElement(document, localName, namespace, prefix) {
// TODO: Implement in HTML DOM
return ElementImpl_1.ElementImpl._create(document, localName, namespace, prefix);
}
exports.create_htmlElement = create_htmlElement;
/**
* Creates a new `HTMLUnknownElement` node.
*
* @param document - owner document
* @param localName - local name
* @param namespace - namespace
* @param prefix - namespace prefix
*/
function create_htmlUnknownElement(document, localName, namespace, prefix) {
// TODO: Implement in HTML DOM
return ElementImpl_1.ElementImpl._create(document, localName, namespace, prefix);
}
exports.create_htmlUnknownElement = create_htmlUnknownElement;
/**
* Creates a new `DocumentFragment` node.
*
* @param document - owner document
*/
function create_documentFragment(document) {
return DocumentFragmentImpl_1.DocumentFragmentImpl._create(document);
}
exports.create_documentFragment = create_documentFragment;
/**
* Creates a new `ShadowRoot` node.
*
* @param document - owner document
* @param host - shadow root's host element node
*/
function create_shadowRoot(document, host) {
return ShadowRootImpl_1.ShadowRootImpl._create(document, host);
}
exports.create_shadowRoot = create_shadowRoot;
/**
* Creates a new `Attr` node.
*
* @param document - owner document
* @param localName - local name
*/
function create_attr(document, localName) {
return AttrImpl_1.AttrImpl._create(document, localName);
}
exports.create_attr = create_attr;
/**
* Creates a new `Text` node.
*
* @param document - owner document
* @param data - node contents
*/
function create_text(document, data) {
return TextImpl_1.TextImpl._create(document, data);
}
exports.create_text = create_text;
/**
* Creates a new `CDATASection` node.
*
* @param document - owner document
* @param data - node contents
*/
function create_cdataSection(document, data) {
return CDATASectionImpl_1.CDATASectionImpl._create(document, data);
}
exports.create_cdataSection = create_cdataSection;
/**
* Creates a new `Comment` node.
*
* @param document - owner document
* @param data - node contents
*/
function create_comment(document, data) {
return CommentImpl_1.CommentImpl._create(document, data);
}
exports.create_comment = create_comment;
/**
* Creates a new `ProcessingInstruction` node.
*
* @param document - owner document
* @param target - instruction target
* @param data - node contents
*/
function create_processingInstruction(document, target, data) {
return ProcessingInstructionImpl_1.ProcessingInstructionImpl._create(document, target, data);
}
exports.create_processingInstruction = create_processingInstruction;
/**
* Creates a new `HTMLCollection`.
*
* @param root - root node
* @param filter - node filter
*/
function create_htmlCollection(root, filter) {
if (filter === void 0) { filter = (function () { return true; }); }
return HTMLCollectionImpl_1.HTMLCollectionImpl._create(root, filter);
}
exports.create_htmlCollection = create_htmlCollection;
/**
* Creates a new live `NodeList`.
*
* @param root - root node
*/
function create_nodeList(root) {
return NodeListImpl_1.NodeListImpl._create(root);
}
exports.create_nodeList = create_nodeList;
/**
* Creates a new static `NodeList`.
*
* @param root - root node
* @param items - a list of items to initialize the list
*/
function create_nodeListStatic(root, items) {
return NodeListStaticImpl_1.NodeListStaticImpl._create(root, items);
}
exports.create_nodeListStatic = create_nodeListStatic;
/**
* Creates a new `NamedNodeMap`.
*
* @param element - parent element
*/
function create_namedNodeMap(element) {
return NamedNodeMapImpl_1.NamedNodeMapImpl._create(element);
}
exports.create_namedNodeMap = create_namedNodeMap;
/**
* Creates a new `Range`.
*
* @param start - start point
* @param end - end point
*/
function create_range(start, end) {
return RangeImpl_1.RangeImpl._create(start, end);
}
exports.create_range = create_range;
/**
* Creates a new `NodeIterator`.
*
* @param root - iterator's root node
* @param reference - reference node
* @param pointerBeforeReference - whether the iterator is before or after the
* reference node
*/
function create_nodeIterator(root, reference, pointerBeforeReference) {
return NodeIteratorImpl_1.NodeIteratorImpl._create(root, reference, pointerBeforeReference);
}
exports.create_nodeIterator = create_nodeIterator;
/**
* Creates a new `TreeWalker`.
*
* @param root - iterator's root node
* @param current - current node
*/
function create_treeWalker(root, current) {
return TreeWalkerImpl_1.TreeWalkerImpl._create(root, current);
}
exports.create_treeWalker = create_treeWalker;
/**
* Creates a new `NodeFilter`.
*/
function create_nodeFilter() {
return NodeFilterImpl_1.NodeFilterImpl._create();
}
exports.create_nodeFilter = create_nodeFilter;
/**
* Creates a new `MutationRecord`.
*
* @param type - type of mutation: `"attributes"` for an attribute
* mutation, `"characterData"` for a mutation to a CharacterData node
* and `"childList"` for a mutation to the tree of nodes.
* @param target - node affected by the mutation.
* @param addedNodes - list of added nodes.
* @param removedNodes - list of removed nodes.
* @param previousSibling - previous sibling of added or removed nodes.
* @param nextSibling - next sibling of added or removed nodes.
* @param attributeName - local name of the changed attribute,
* and `null` otherwise.
* @param attributeNamespace - namespace of the changed attribute,
* and `null` otherwise.
* @param oldValue - value before mutation: attribute value for an attribute
* mutation, node `data` for a mutation to a CharacterData node and `null`
* for a mutation to the tree of nodes.
*/
function create_mutationRecord(type, target, addedNodes, removedNodes, previousSibling, nextSibling, attributeName, attributeNamespace, oldValue) {
return MutationRecordImpl_1.MutationRecordImpl._create(type, target, addedNodes, removedNodes, previousSibling, nextSibling, attributeName, attributeNamespace, oldValue);
}
exports.create_mutationRecord = create_mutationRecord;
/**
* Creates a new `DOMTokenList`.
*
* @param element - associated element
* @param attribute - associated attribute
*/
function create_domTokenList(element, attribute) {
return DOMTokenListImpl_1.DOMTokenListImpl._create(element, attribute);
}
exports.create_domTokenList = create_domTokenList;
//# sourceMappingURL=CreateAlgorithm.js.map
/***/ }),
/* 87 */
/***/ (function(module) {
module.exports = require("os");
/***/ }),
/* 88 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var DOMException_1 = __webpack_require__(35);
var algorithm_1 = __webpack_require__(163);
/**
* Represents a collection of attributes.
*/
var NamedNodeMapImpl = /** @class */ (function (_super) {
__extends(NamedNodeMapImpl, _super);
/**
* Initializes a new instance of `NamedNodeMap`.
*
* @param element - parent element
*/
function NamedNodeMapImpl(element) {
var _this = _super.call(this) || this;
_this._element = element;
// TODO: This workaround is needed to extend Array in ES5
Object.setPrototypeOf(_this, NamedNodeMapImpl.prototype);
return _this;
}
NamedNodeMapImpl.prototype._asArray = function () { return this; };
/** @inheritdoc */
NamedNodeMapImpl.prototype.item = function (index) {
/**
* 1. If index is equal to or greater than context objects attribute lists
* size, then return null.
* 2. Otherwise, return context objects attribute list[index].
*
*/
return this[index] || null;
};
/** @inheritdoc */
NamedNodeMapImpl.prototype.getNamedItem = function (qualifiedName) {
/**
* The getNamedItem(qualifiedName) method, when invoked, must return the
* result of getting an attribute given qualifiedName and element.
*/
return algorithm_1.element_getAnAttributeByName(qualifiedName, this._element);
};
/** @inheritdoc */
NamedNodeMapImpl.prototype.getNamedItemNS = function (namespace, localName) {
/**
* The getNamedItemNS(namespace, localName) method, when invoked, must
* return the result of getting an attribute given namespace, localName,
* and element.
*/
return algorithm_1.element_getAnAttributeByNamespaceAndLocalName(namespace || '', localName, this._element);
};
/** @inheritdoc */
NamedNodeMapImpl.prototype.setNamedItem = function (attr) {
/**
* The setNamedItem(attr) and setNamedItemNS(attr) methods, when invoked,
* must return the result of setting an attribute given attr and element.
*/
return algorithm_1.element_setAnAttribute(attr, this._element);
};
/** @inheritdoc */
NamedNodeMapImpl.prototype.setNamedItemNS = function (attr) {
return algorithm_1.element_setAnAttribute(attr, this._element);
};
/** @inheritdoc */
NamedNodeMapImpl.prototype.removeNamedItem = function (qualifiedName) {
/**
* 1. Let attr be the result of removing an attribute given qualifiedName
* and element.
* 2. If attr is null, then throw a "NotFoundError" DOMException.
* 3. Return attr.
*/
var attr = algorithm_1.element_removeAnAttributeByName(qualifiedName, this._element);
if (attr === null)
throw new DOMException_1.NotFoundError();
return attr;
};
/** @inheritdoc */
NamedNodeMapImpl.prototype.removeNamedItemNS = function (namespace, localName) {
/**
* 1. Let attr be the result of removing an attribute given namespace,
* localName, and element.
* 2. If attr is null, then throw a "NotFoundError" DOMException.
* 3. Return attr.
*/
var attr = algorithm_1.element_removeAnAttributeByNamespaceAndLocalName(namespace || '', localName, this._element);
if (attr === null)
throw new DOMException_1.NotFoundError();
return attr;
};
/**
* Creates a new `NamedNodeMap`.
*
* @param element - parent element
*/
NamedNodeMapImpl._create = function (element) {
return new NamedNodeMapImpl(element);
};
return NamedNodeMapImpl;
}(Array));
exports.NamedNodeMapImpl = NamedNodeMapImpl;
//# sourceMappingURL=NamedNodeMapImpl.js.map
/***/ }),
/* 89 */,
/* 90 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
var DOMImpl_1 = __webpack_require__(648);
var interfaces_1 = __webpack_require__(970);
var AbstractRangeImpl_1 = __webpack_require__(413);
var DOMException_1 = __webpack_require__(35);
var algorithm_1 = __webpack_require__(163);
var WebIDLAlgorithm_1 = __webpack_require__(495);
var util_1 = __webpack_require__(918);
/**
* Represents a live range.
*/
var RangeImpl = /** @class */ (function (_super) {
__extends(RangeImpl, _super);
/**
* Initializes a new instance of `Range`.
*/
function RangeImpl() {
var _this = _super.call(this) || this;
/**
* The Range() constructor, when invoked, must return a new live range with
* (current global objects associated Document, 0) as its start and end.
*/
var doc = DOMImpl_1.dom.window._associatedDocument;
_this._start = [doc, 0];
_this._end = [doc, 0];
DOMImpl_1.dom.rangeList.add(_this);
return _this;
}
Object.defineProperty(RangeImpl.prototype, "commonAncestorContainer", {
/** @inheritdoc */
get: function () {
/**
* 1. Let container be start node.
* 2. While container is not an inclusive ancestor of end node, let
* container be containers parent.
* 3. Return container.
*/
var container = this._start[0];
while (!algorithm_1.tree_isAncestorOf(this._end[0], container, true)) {
if (container._parent === null) {
throw new Error("Parent node is null.");
}
container = container._parent;
}
return container;
},
enumerable: true,
configurable: true
});
/** @inheritdoc */
RangeImpl.prototype.setStart = function (node, offset) {
/**
* The setStart(node, offset) method, when invoked, must set the start of
* context object to boundary point (node, offset).
*/
algorithm_1.range_setTheStart(this, node, offset);
};
/** @inheritdoc */
RangeImpl.prototype.setEnd = function (node, offset) {
/**
* The setEnd(node, offset) method, when invoked, must set the end of
* context object to boundary point (node, offset).
*/
algorithm_1.range_setTheEnd(this, node, offset);
};
/** @inheritdoc */
RangeImpl.prototype.setStartBefore = function (node) {
/**
* 1. Let parent be nodes parent.
* 2. If parent is null, then throw an "InvalidNodeTypeError" DOMException.
* 3. Set the start of the context object to boundary point
* (parent, nodes index).
*/
var parent = node._parent;
if (parent === null)
throw new DOMException_1.InvalidNodeTypeError();
algorithm_1.range_setTheStart(this, parent, algorithm_1.tree_index(node));
};
/** @inheritdoc */
RangeImpl.prototype.setStartAfter = function (node) {
/**
* 1. Let parent be nodes parent.
* 2. If parent is null, then throw an "InvalidNodeTypeError" DOMException.
* 3. Set the start of the context object to boundary point
* (parent, nodes index plus 1).
*/
var parent = node._parent;
if (parent === null)
throw new DOMException_1.InvalidNodeTypeError();
algorithm_1.range_setTheStart(this, parent, algorithm_1.tree_index(node) + 1);
};
/** @inheritdoc */
RangeImpl.prototype.setEndBefore = function (node) {
/**
* 1. Let parent be nodes parent.
* 2. If parent is null, then throw an "InvalidNodeTypeError" DOMException.
* 3. Set the end of the context object to boundary point
* (parent, nodes index).
*/
var parent = node._parent;
if (parent === null)
throw new DOMException_1.InvalidNodeTypeError();
algorithm_1.range_setTheEnd(this, parent, algorithm_1.tree_index(node));
};
/** @inheritdoc */
RangeImpl.prototype.setEndAfter = function (node) {
/**
* 1. Let parent be nodes parent.
* 2. If parent is null, then throw an "InvalidNodeTypeError" DOMException.
* 3. Set the end of the context object to boundary point
* (parent, nodes index plus 1).
*/
var parent = node._parent;
if (parent === null)
throw new DOMException_1.InvalidNodeTypeError();
algorithm_1.range_setTheEnd(this, parent, algorithm_1.tree_index(node) + 1);
};
/** @inheritdoc */
RangeImpl.prototype.collapse = function (toStart) {
/**
* The collapse(toStart) method, when invoked, must if toStart is true,
* set end to start, and set start to end otherwise.
*/
if (toStart) {
this._end = this._start;
}
else {
this._start = this._end;
}
};
/** @inheritdoc */
RangeImpl.prototype.selectNode = function (node) {
/**
* The selectNode(node) method, when invoked, must select node within
* context object.
*/
algorithm_1.range_select(node, this);
};
/** @inheritdoc */
RangeImpl.prototype.selectNodeContents = function (node) {
/**
* 1. If node is a doctype, throw an "InvalidNodeTypeError" DOMException.
* 2. Let length be the length of node.
* 3. Set start to the boundary point (node, 0).
* 4. Set end to the boundary point (node, length).
*/
if (util_1.Guard.isDocumentTypeNode(node))
throw new DOMException_1.InvalidNodeTypeError();
var length = algorithm_1.tree_nodeLength(node);
this._start = [node, 0];
this._end = [node, length];
};
/** @inheritdoc */
RangeImpl.prototype.compareBoundaryPoints = function (how, sourceRange) {
/**
* 1. If how is not one of
* - START_TO_START,
* - START_TO_END,
* - END_TO_END, and
* - END_TO_START,
* then throw a "NotSupportedError" DOMException.
*/
if (how !== interfaces_1.HowToCompare.StartToStart && how !== interfaces_1.HowToCompare.StartToEnd &&
how !== interfaces_1.HowToCompare.EndToEnd && how !== interfaces_1.HowToCompare.EndToStart)
throw new DOMException_1.NotSupportedError();
/**
* 2. If context objects root is not the same as sourceRanges root,
* then throw a "WrongDocumentError" DOMException.
*/
if (algorithm_1.range_root(this) !== algorithm_1.range_root(sourceRange))
throw new DOMException_1.WrongDocumentError();
/**
* 3. If how is:
* - START_TO_START:
* Let this point be the context objects start. Let other point be
* sourceRanges start.
* - START_TO_END:
* Let this point be the context objects end. Let other point be
* sourceRanges start.
* - END_TO_END:
* Let this point be the context objects end. Let other point be
* sourceRanges end.
* - END_TO_START:
* Let this point be the context objects start. Let other point be
* sourceRanges end.
*/
var thisPoint;
var otherPoint;
switch (how) {
case interfaces_1.HowToCompare.StartToStart:
thisPoint = this._start;
otherPoint = sourceRange._start;
break;
case interfaces_1.HowToCompare.StartToEnd:
thisPoint = this._end;
otherPoint = sourceRange._start;
break;
case interfaces_1.HowToCompare.EndToEnd:
thisPoint = this._end;
otherPoint = sourceRange._end;
break;
case interfaces_1.HowToCompare.EndToStart:
thisPoint = this._start;
otherPoint = sourceRange._end;
break;
/* istanbul ignore next */
default:
throw new DOMException_1.NotSupportedError();
}
/**
* 4. If the position of this point relative to other point is
* - before
* Return 1.
* - equal
* Return 0.
* - after
* Return 1.
*/
var position = algorithm_1.boundaryPoint_position(thisPoint, otherPoint);
if (position === interfaces_1.BoundaryPosition.Before) {
return -1;
}
else if (position === interfaces_1.BoundaryPosition.After) {
return 1;
}
else {
return 0;
}
};
/** @inheritdoc */
RangeImpl.prototype.deleteContents = function () {
var e_1, _a, e_2, _b;
/**
* 1. If the context object is collapsed, then return.
* 2. Let original start node, original start offset, original end node,
* and original end offset be the context objects start node,
* start offset, end node, and end offset, respectively.
*/
if (algorithm_1.range_collapsed(this))
return;
var originalStartNode = this._startNode;
var originalStartOffset = this._startOffset;
var originalEndNode = this._endNode;
var originalEndOffset = this._endOffset;
/**
* 3. If original start node and original end node are the same, and they
* are a Text, ProcessingInstruction, or Comment node, replace data with
* node original start node, offset original start offset, count original
* end offset minus original start offset, and data the empty string,
* and then return.
*/
if (originalStartNode === originalEndNode &&
util_1.Guard.isCharacterDataNode(originalStartNode)) {
algorithm_1.characterData_replaceData(originalStartNode, originalStartOffset, originalEndOffset - originalStartOffset, '');
return;
}
/**
* 4. Let nodes to remove be a list of all the nodes that are contained in
* the context object, in tree order, omitting any node whose parent is also
* contained in the context object.
*/
var nodesToRemove = [];
try {
for (var _c = __values(algorithm_1.range_getContainedNodes(this)), _d = _c.next(); !_d.done; _d = _c.next()) {
var node = _d.value;
var parent = node._parent;
if (parent !== null && algorithm_1.range_isContained(parent, this)) {
continue;
}
nodesToRemove.push(node);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
}
finally { if (e_1) throw e_1.error; }
}
var newNode;
var newOffset;
if (algorithm_1.tree_isAncestorOf(originalEndNode, originalStartNode, true)) {
/**
* 5. If original start node is an inclusive ancestor of original end
* node, set new node to original start node and new offset to original
* start offset.
*/
newNode = originalStartNode;
newOffset = originalStartOffset;
}
else {
/**
* 6. Otherwise:
* 6.1. Let reference node equal original start node.
* 6.2. While reference nodes parent is not null and is not an inclusive
* ancestor of original end node, set reference node to its parent.
* 6.3. Set new node to the parent of reference node, and new offset to
* one plus the index of reference node.
*/
var referenceNode = originalStartNode;
while (referenceNode._parent !== null &&
!algorithm_1.tree_isAncestorOf(originalEndNode, referenceNode._parent, true)) {
referenceNode = referenceNode._parent;
}
/* istanbul ignore next */
if (referenceNode._parent === null) {
throw new Error("Parent node is null.");
}
newNode = referenceNode._parent;
newOffset = algorithm_1.tree_index(referenceNode) + 1;
}
/**
* 7. If original start node is a Text, ProcessingInstruction, or Comment
* node, replace data with node original start node, offset original start
* offset, count original start nodes length minus original start offset,
* data the empty string.
*/
if (util_1.Guard.isCharacterDataNode(originalStartNode)) {
algorithm_1.characterData_replaceData(originalStartNode, originalStartOffset, algorithm_1.tree_nodeLength(originalStartNode) - originalStartOffset, '');
}
try {
/**
* 8. For each node in nodes to remove, in tree order, remove node from its
* parent.
*/
for (var nodesToRemove_1 = __values(nodesToRemove), nodesToRemove_1_1 = nodesToRemove_1.next(); !nodesToRemove_1_1.done; nodesToRemove_1_1 = nodesToRemove_1.next()) {
var node = nodesToRemove_1_1.value;
/* istanbul ignore else */
if (node._parent) {
algorithm_1.mutation_remove(node, node._parent);
}
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (nodesToRemove_1_1 && !nodesToRemove_1_1.done && (_b = nodesToRemove_1.return)) _b.call(nodesToRemove_1);
}
finally { if (e_2) throw e_2.error; }
}
/**
* 9. If original end node is a Text, ProcessingInstruction, or Comment
* node, replace data with node original end node, offset 0, count original
* end offset and data the empty string.
*/
if (util_1.Guard.isCharacterDataNode(originalEndNode)) {
algorithm_1.characterData_replaceData(originalEndNode, 0, originalEndOffset, '');
}
/**
* 10. Set start and end to (new node, new offset).
*/
this._start = [newNode, newOffset];
this._end = [newNode, newOffset];
};
/** @inheritdoc */
RangeImpl.prototype.extractContents = function () {
/**
* The extractContents() method, when invoked, must return the result of
* extracting the context object.
*/
return algorithm_1.range_extract(this);
};
/** @inheritdoc */
RangeImpl.prototype.cloneContents = function () {
/**
* The cloneContents() method, when invoked, must return the result of
* cloning the contents of the context object.
*/
return algorithm_1.range_cloneTheContents(this);
};
/** @inheritdoc */
RangeImpl.prototype.insertNode = function (node) {
/**
* The insertNode(node) method, when invoked, must insert node into the
* context object.
*/
return algorithm_1.range_insert(node, this);
};
/** @inheritdoc */
RangeImpl.prototype.surroundContents = function (newParent) {
var e_3, _a;
try {
/**
* 1. If a non-Text node is partially contained in the context object, then
* throw an "InvalidStateError" DOMException.
*/
for (var _b = __values(algorithm_1.range_getPartiallyContainedNodes(this)), _c = _b.next(); !_c.done; _c = _b.next()) {
var node = _c.value;
if (!util_1.Guard.isTextNode(node)) {
throw new DOMException_1.InvalidStateError();
}
}
}
catch (e_3_1) { e_3 = { error: e_3_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_3) throw e_3.error; }
}
/**
* 2. If newParent is a Document, DocumentType, or DocumentFragment node,
* then throw an "InvalidNodeTypeError" DOMException.
*/
if (util_1.Guard.isDocumentNode(newParent) ||
util_1.Guard.isDocumentTypeNode(newParent) ||
util_1.Guard.isDocumentFragmentNode(newParent)) {
throw new DOMException_1.InvalidNodeTypeError();
}
/**
* 3. Let fragment be the result of extracting the context object.
*/
var fragment = algorithm_1.range_extract(this);
/**
* 4. If newParent has children, then replace all with null within newParent.
*/
if ((newParent)._children.size !== 0) {
algorithm_1.mutation_replaceAll(null, newParent);
}
/**
* 5. Insert newParent into the context object.
* 6. Append fragment to newParent.
*/
algorithm_1.range_insert(newParent, this);
algorithm_1.mutation_append(fragment, newParent);
/**
* 7. Select newParent within the context object.
*/
algorithm_1.range_select(newParent, this);
};
/** @inheritdoc */
RangeImpl.prototype.cloneRange = function () {
/**
* The cloneRange() method, when invoked, must return a new live range with
* the same start and end as the context object.
*/
return algorithm_1.create_range(this._start, this._end);
};
/** @inheritdoc */
RangeImpl.prototype.detach = function () {
/**
* The detach() method, when invoked, must do nothing.
*
* since JS lacks weak references, we still use detach
*/
DOMImpl_1.dom.rangeList.delete(this);
};
/** @inheritdoc */
RangeImpl.prototype.isPointInRange = function (node, offset) {
/**
* 1. If nodes root is different from the context objects root, return false.
*/
if (algorithm_1.tree_rootNode(node) !== algorithm_1.range_root(this)) {
return false;
}
/**
* 2. If node is a doctype, then throw an "InvalidNodeTypeError" DOMException.
* 3. If offset is greater than nodes length, then throw an
* "IndexSizeError" DOMException.
*/
if (util_1.Guard.isDocumentTypeNode(node))
throw new DOMException_1.InvalidNodeTypeError();
if (offset > algorithm_1.tree_nodeLength(node))
throw new DOMException_1.IndexSizeError();
/**
* 4. If (node, offset) is before start or after end, return false.
*/
var bp = [node, offset];
if (algorithm_1.boundaryPoint_position(bp, this._start) === interfaces_1.BoundaryPosition.Before ||
algorithm_1.boundaryPoint_position(bp, this._end) === interfaces_1.BoundaryPosition.After) {
return false;
}
/**
* 5. Return true.
*/
return true;
};
/** @inheritdoc */
RangeImpl.prototype.comparePoint = function (node, offset) {
/**
* 1. If nodes root is different from the context objects root, then throw
* a "WrongDocumentError" DOMException.
* 2. If node is a doctype, then throw an "InvalidNodeTypeError" DOMException.
* 3. If offset is greater than nodes length, then throw an
* "IndexSizeError" DOMException.
*/
if (algorithm_1.tree_rootNode(node) !== algorithm_1.range_root(this))
throw new DOMException_1.WrongDocumentError();
if (util_1.Guard.isDocumentTypeNode(node))
throw new DOMException_1.InvalidNodeTypeError();
if (offset > algorithm_1.tree_nodeLength(node))
throw new DOMException_1.IndexSizeError();
/**
* 4. If (node, offset) is before start, return 1.
* 5. If (node, offset) is after end, return 1.
* 6. Return 0.
*/
var bp = [node, offset];
if (algorithm_1.boundaryPoint_position(bp, this._start) === interfaces_1.BoundaryPosition.Before) {
return -1;
}
else if (algorithm_1.boundaryPoint_position(bp, this._end) === interfaces_1.BoundaryPosition.After) {
return 1;
}
else {
return 0;
}
};
/** @inheritdoc */
RangeImpl.prototype.intersectsNode = function (node) {
/**
* 1. If nodes root is different from the context objects root, return false.
*/
if (algorithm_1.tree_rootNode(node) !== algorithm_1.range_root(this)) {
return false;
}
/**
* 2. Let parent be nodes parent.
* 3. If parent is null, return true.
*/
var parent = node._parent;
if (parent === null)
return true;
/**
* 4. Let offset be nodes index.
*/
var offset = algorithm_1.tree_index(node);
/**
* 5. If (parent, offset) is before end and (parent, offset plus 1) is
* after start, return true.
*/
if (algorithm_1.boundaryPoint_position([parent, offset], this._end) === interfaces_1.BoundaryPosition.Before &&
algorithm_1.boundaryPoint_position([parent, offset + 1], this._start) === interfaces_1.BoundaryPosition.After) {
return true;
}
/**
* 6. Return false.
*/
return false;
};
RangeImpl.prototype.toString = function () {
var e_4, _a;
/**
* 1. Let s be the empty string.
*/
var s = '';
/**
* 2. If the context objects start node is the context objects end node
* and it is a Text node, then return the substring of that Text nodes data
* beginning at the context objects start offset and ending at the context
* objects end offset.
*/
if (this._startNode === this._endNode && util_1.Guard.isTextNode(this._startNode)) {
return this._startNode._data.substring(this._startOffset, this._endOffset);
}
/**
* 3. If the context objects start node is a Text node, then append the
* substring of that nodes data from the context objects start offset
* until the end to s.
*/
if (util_1.Guard.isTextNode(this._startNode)) {
s += this._startNode._data.substring(this._startOffset);
}
try {
/**
* 4. Append the concatenation of the data of all Text nodes that are
* contained in the context object, in tree order, to s.
*/
for (var _b = __values(algorithm_1.range_getContainedNodes(this)), _c = _b.next(); !_c.done; _c = _b.next()) {
var child = _c.value;
if (util_1.Guard.isTextNode(child)) {
s += child._data;
}
}
}
catch (e_4_1) { e_4 = { error: e_4_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_4) throw e_4.error; }
}
/**
* 5. If the context objects end node is a Text node, then append the
* substring of that nodes data from its start until the context objects
* end offset to s.
*/
if (util_1.Guard.isTextNode(this._endNode)) {
s += this._endNode._data.substring(0, this._endOffset);
}
/**
* 6. Return s.
*/
return s;
};
/**
* Creates a new `Range`.
*
* @param start - start point
* @param end - end point
*/
RangeImpl._create = function (start, end) {
var range = new RangeImpl();
if (start)
range._start = start;
if (end)
range._end = end;
return range;
};
RangeImpl.START_TO_START = 0;
RangeImpl.START_TO_END = 1;
RangeImpl.END_TO_END = 2;
RangeImpl.END_TO_START = 3;
return RangeImpl;
}(AbstractRangeImpl_1.AbstractRangeImpl));
exports.RangeImpl = RangeImpl;
/**
* Define constants on prototype.
*/
WebIDLAlgorithm_1.idl_defineConst(RangeImpl.prototype, "START_TO_START", 0);
WebIDLAlgorithm_1.idl_defineConst(RangeImpl.prototype, "START_TO_END", 1);
WebIDLAlgorithm_1.idl_defineConst(RangeImpl.prototype, "END_TO_END", 2);
WebIDLAlgorithm_1.idl_defineConst(RangeImpl.prototype, "END_TO_START", 3);
//# sourceMappingURL=RangeImpl.js.map
/***/ }),
/* 91 */,
/* 92 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
var ObjectWriter_1 = __webpack_require__(419);
var util_1 = __webpack_require__(592);
var BaseWriter_1 = __webpack_require__(462);
/**
* Serializes XML nodes into a JSON string.
*/
var JSONWriter = /** @class */ (function (_super) {
__extends(JSONWriter, _super);
/**
* Initializes a new instance of `JSONWriter`.
*
* @param builderOptions - XML builder options
* @param writerOptions - serialization options
*/
function JSONWriter(builderOptions, writerOptions) {
var _this = _super.call(this, builderOptions) || this;
// provide default options
_this._writerOptions = util_1.applyDefaults(writerOptions, {
wellFormed: false,
noDoubleEncoding: false,
prettyPrint: false,
indent: ' ',
newline: '\n',
offset: 0,
group: false,
verbose: false
});
return _this;
}
/**
* Produces an XML serialization of the given node.
*
* @param node - node to serialize
* @param writerOptions - serialization options
*/
JSONWriter.prototype.serialize = function (node) {
// convert to object
var objectWriterOptions = util_1.applyDefaults(this._writerOptions, {
format: "object",
wellFormed: false,
noDoubleEncoding: false,
});
var objectWriter = new ObjectWriter_1.ObjectWriter(this._builderOptions, objectWriterOptions);
var val = objectWriter.serialize(node);
// recursively convert object into JSON string
return this._beginLine(this._writerOptions, 0) + this._convertObject(val, this._writerOptions);
};
/**
* Produces an XML serialization of the given object.
*
* @param obj - object to serialize
* @param options - serialization options
* @param level - depth of the XML tree
*/
JSONWriter.prototype._convertObject = function (obj, options, level) {
var e_1, _a;
var _this = this;
if (level === void 0) { level = 0; }
var markup = '';
var isLeaf = this._isLeafNode(obj);
if (util_1.isArray(obj)) {
markup += '[';
var len = obj.length;
var i = 0;
try {
for (var obj_1 = __values(obj), obj_1_1 = obj_1.next(); !obj_1_1.done; obj_1_1 = obj_1.next()) {
var val = obj_1_1.value;
markup += this._endLine(options, level + 1) +
this._beginLine(options, level + 1) +
this._convertObject(val, options, level + 1);
if (i < len - 1) {
markup += ',';
}
i++;
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (obj_1_1 && !obj_1_1.done && (_a = obj_1.return)) _a.call(obj_1);
}
finally { if (e_1) throw e_1.error; }
}
markup += this._endLine(options, level) + this._beginLine(options, level);
markup += ']';
}
else if (util_1.isObject(obj)) {
markup += '{';
var len_1 = util_1.objectLength(obj);
var i_1 = 0;
util_1.forEachObject(obj, function (key, val) {
if (isLeaf && options.prettyPrint) {
markup += ' ';
}
else {
markup += _this._endLine(options, level + 1) + _this._beginLine(options, level + 1);
}
markup += _this._key(key);
if (options.prettyPrint) {
markup += ' ';
}
markup += _this._convertObject(val, options, level + 1);
if (i_1 < len_1 - 1) {
markup += ',';
}
i_1++;
}, this);
if (isLeaf && options.prettyPrint) {
markup += ' ';
}
else {
markup += this._endLine(options, level) + this._beginLine(options, level);
}
markup += '}';
}
else {
markup += this._val(obj);
}
return markup;
};
/**
* Produces characters to be prepended to a line of string in pretty-print
* mode.
*
* @param options - serialization options
* @param level - current depth of the XML tree
*/
JSONWriter.prototype._beginLine = function (options, level) {
if (!options.prettyPrint) {
return '';
}
else {
var indentLevel = options.offset + level + 1;
if (indentLevel > 0) {
return new Array(indentLevel).join(options.indent);
}
}
return '';
};
/**
* Produces characters to be appended to a line of string in pretty-print
* mode.
*
* @param options - serialization options
* @param level - current depth of the XML tree
*/
JSONWriter.prototype._endLine = function (options, level) {
if (!options.prettyPrint) {
return '';
}
else {
return options.newline;
}
};
/**
* Produces a JSON key string delimited with double quotes.
*/
JSONWriter.prototype._key = function (key) {
return "\"" + key + "\":";
};
/**
* Produces a JSON value string delimited with double quotes.
*/
JSONWriter.prototype._val = function (val) {
return JSON.stringify(val);
};
/**
* Determines if an object is a leaf node.
*
* @param obj
*/
JSONWriter.prototype._isLeafNode = function (obj) {
return this._descendantCount(obj) <= 1;
};
/**
* Counts the number of descendants of the given object.
*
* @param obj
* @param count
*/
JSONWriter.prototype._descendantCount = function (obj, count) {
var _this = this;
if (count === void 0) { count = 0; }
if (util_1.isArray(obj)) {
util_1.forEachArray(obj, function (val) { return count += _this._descendantCount(val, count); }, this);
}
else if (util_1.isObject(obj)) {
util_1.forEachObject(obj, function (key, val) { return count += _this._descendantCount(val, count); }, this);
}
else {
count++;
}
return count;
};
return JSONWriter;
}(BaseWriter_1.BaseWriter));
exports.JSONWriter = JSONWriter;
//# sourceMappingURL=JSONWriter.js.map
/***/ }),
/* 93 */
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
var common = __webpack_require__(740);
function Mark(name, buffer, position, line, column) {
this.name = name;
this.buffer = buffer;
this.position = position;
this.line = line;
this.column = column;
}
Mark.prototype.getSnippet = function getSnippet(indent, maxLength) {
var head, start, tail, end, snippet;
if (!this.buffer) return null;
indent = indent || 4;
maxLength = maxLength || 75;
head = '';
start = this.position;
while (start > 0 && '\x00\r\n\x85\u2028\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {
start -= 1;
if (this.position - start > (maxLength / 2 - 1)) {
head = ' ... ';
start += 5;
break;
}
}
tail = '';
end = this.position;
while (end < this.buffer.length && '\x00\r\n\x85\u2028\u2029'.indexOf(this.buffer.charAt(end)) === -1) {
end += 1;
if (end - this.position > (maxLength / 2 - 1)) {
tail = ' ... ';
end -= 5;
break;
}
}
snippet = this.buffer.slice(start, end);
return common.repeat(' ', indent) + head + snippet + tail + '\n' +
common.repeat(' ', indent + this.position - start + head.length) + '^';
};
Mark.prototype.toString = function toString(compact) {
var snippet, where = '';
if (this.name) {
where += 'in "' + this.name + '" ';
}
where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);
if (!compact) {
snippet = this.getSnippet();
if (snippet) {
where += ':\n' + snippet;
}
}
return where;
};
module.exports = Mark;
/***/ }),
/* 94 */,
/* 95 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var MapWriter_1 = __webpack_require__(750);
exports.MapWriter = MapWriter_1.MapWriter;
var XMLWriter_1 = __webpack_require__(764);
exports.XMLWriter = XMLWriter_1.XMLWriter;
var ObjectWriter_1 = __webpack_require__(419);
exports.ObjectWriter = ObjectWriter_1.ObjectWriter;
var JSONWriter_1 = __webpack_require__(92);
exports.JSONWriter = JSONWriter_1.JSONWriter;
var YAMLWriter_1 = __webpack_require__(325);
exports.YAMLWriter = YAMLWriter_1.YAMLWriter;
//# sourceMappingURL=index.js.map
/***/ }),
/* 96 */,
/* 97 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
var CodePoints_1 = __webpack_require__(11);
var ByteSequence_1 = __webpack_require__(263);
var Byte_1 = __webpack_require__(782);
var util_1 = __webpack_require__(592);
/**
* Determines if the string `a` is a code unit prefix of string `b`.
*
* @param a - a string
* @param b - a string
*/
function isCodeUnitPrefix(a, b) {
/**
* 1. Let i be 0.
* 2. While true:
* 2.1. Let aCodeUnit be the ith code unit of a if i is less than as length;
* otherwise null.
* 2.2. Let bCodeUnit be the ith code unit of b if i is less than bs length;
* otherwise null.
* 2.3. If bCodeUnit is null, then return true.
* 2.4. Return false if aCodeUnit is different from bCodeUnit.
* 2.5. Set i to i + 1.
*/
var i = 0;
while (true) {
var aCodeUnit = i < a.length ? a.charCodeAt(i) : null;
var bCodeUnit = i < b.length ? b.charCodeAt(i) : null;
if (aCodeUnit === null)
return true;
if (aCodeUnit !== bCodeUnit)
return false;
i++;
}
}
exports.isCodeUnitPrefix = isCodeUnitPrefix;
/**
* Determines if the string `a` is a code unit less than string `b`.
*
* @param a - a string
* @param b - a string
*/
function isCodeUnitLessThan(a, b) {
/**
* 1. If b is a code unit prefix of a, then return false.
* 2. If a is a code unit prefix of b, then return true.
* 3. Let n be the smallest index such that the nth code unit of a is
* different from the nth code unit of b. (There has to be such an index,
* since neither string is a prefix of the other.)
* 4. If the nth code unit of a is less than the nth code unit of b, then
* return true.
* 5. Return false.
*/
if (isCodeUnitPrefix(b, a))
return false;
if (isCodeUnitPrefix(a, b))
return true;
for (var i = 0; i < Math.min(a.length, b.length); i++) {
var aCodeUnit = a.charCodeAt(i);
var bCodeUnit = b.charCodeAt(i);
if (aCodeUnit === bCodeUnit)
continue;
return (aCodeUnit < bCodeUnit);
}
/* istanbul ignore next */
return false;
}
exports.isCodeUnitLessThan = isCodeUnitLessThan;
/**
* Isomorphic encodes the given string.
*
* @param str - a string
*/
function isomorphicEncode(str) {
var e_1, _a;
/**
* 1. Assert: input contains no code points greater than U+00FF.
* 2. Return a byte sequence whose length is equal to inputs length and whose
* bytes have the same values as inputs code points, in the same order.
*/
var codePoints = Array.from(str);
var bytes = new Uint8Array(codePoints.length);
var i = 0;
try {
for (var str_1 = __values(str), str_1_1 = str_1.next(); !str_1_1.done; str_1_1 = str_1.next()) {
var codePoint = str_1_1.value;
var byte = codePoint.codePointAt(0);
console.assert(byte !== undefined && byte <= 0x00FF, "isomorphicEncode requires string bytes to be less than or equal to 0x00FF.");
if (byte !== undefined && byte <= 0x00FF) {
bytes[i++] = byte;
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (str_1_1 && !str_1_1.done && (_a = str_1.return)) _a.call(str_1);
}
finally { if (e_1) throw e_1.error; }
}
return bytes;
}
exports.isomorphicEncode = isomorphicEncode;
/**
* Determines if the given string is An ASCII string.
*
* @param str - a string
*/
function isASCIIString(str) {
/**
* An ASCII string is a string whose code points are all ASCII code points.
*/
return /^[\u0000-\u007F]*$/.test(str);
}
exports.isASCIIString = isASCIIString;
/**
* Converts all uppercase ASCII code points to lowercase.
*
* @param str - a string
*/
function asciiLowercase(str) {
var e_2, _a;
/**
* To ASCII lowercase a string, replace all ASCII upper alphas in the string
* with their corresponding code point in ASCII lower alpha.
*/
var result = "";
try {
for (var str_2 = __values(str), str_2_1 = str_2.next(); !str_2_1.done; str_2_1 = str_2.next()) {
var c = str_2_1.value;
var code = c.codePointAt(0);
if (code !== undefined && code >= 0x41 && code <= 0x5A) {
result += String.fromCodePoint(code + 0x20);
}
else {
result += c;
}
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (str_2_1 && !str_2_1.done && (_a = str_2.return)) _a.call(str_2);
}
finally { if (e_2) throw e_2.error; }
}
return result;
}
exports.asciiLowercase = asciiLowercase;
/**
* Converts all uppercase ASCII code points to uppercase.
*
* @param str - a string
*/
function asciiUppercase(str) {
var e_3, _a;
/**
* To ASCII uppercase a string, replace all ASCII lower alphas in the string
* with their corresponding code point in ASCII upper alpha.
*/
var result = "";
try {
for (var str_3 = __values(str), str_3_1 = str_3.next(); !str_3_1.done; str_3_1 = str_3.next()) {
var c = str_3_1.value;
var code = c.codePointAt(0);
if (code !== undefined && code >= 0x61 && code <= 0x7A) {
result += String.fromCodePoint(code - 0x20);
}
else {
result += c;
}
}
}
catch (e_3_1) { e_3 = { error: e_3_1 }; }
finally {
try {
if (str_3_1 && !str_3_1.done && (_a = str_3.return)) _a.call(str_3);
}
finally { if (e_3) throw e_3.error; }
}
return result;
}
exports.asciiUppercase = asciiUppercase;
/**
* Compares two ASCII strings case-insensitively.
*
* @param a - a string
* @param b - a string
*/
function asciiCaseInsensitiveMatch(a, b) {
/**
* A string A is an ASCII case-insensitive match for a string B, if the ASCII
* lowercase of A is the ASCII lowercase of B.
*/
return asciiLowercase(a) === asciiLowercase(b);
}
exports.asciiCaseInsensitiveMatch = asciiCaseInsensitiveMatch;
/**
* ASCII encodes a string.
*
* @param str - a string
*/
function asciiEncode(str) {
/**
* 1. Assert: input is an ASCII string.
* 2. Return the isomorphic encoding of input.
*/
console.assert(isASCIIString(str), "asciiEncode requires an ASCII string.");
return isomorphicEncode(str);
}
exports.asciiEncode = asciiEncode;
/**
* ASCII decodes a byte sequence.
*
* @param bytes - a byte sequence
*/
function asciiDecode(bytes) {
var e_4, _a;
try {
/**
* 1. Assert: All bytes in input are ASCII bytes.
* 2. Return the isomorphic decoding of input.
*/
for (var bytes_1 = __values(bytes), bytes_1_1 = bytes_1.next(); !bytes_1_1.done; bytes_1_1 = bytes_1.next()) {
var byte = bytes_1_1.value;
console.assert(Byte_1.isASCIIByte(byte), "asciiDecode requires an ASCII byte sequence.");
}
}
catch (e_4_1) { e_4 = { error: e_4_1 }; }
finally {
try {
if (bytes_1_1 && !bytes_1_1.done && (_a = bytes_1.return)) _a.call(bytes_1);
}
finally { if (e_4) throw e_4.error; }
}
return ByteSequence_1.isomorphicDecode(bytes);
}
exports.asciiDecode = asciiDecode;
/**
* Strips newline characters from a string.
*
* @param str - a string
*/
function stripNewlines(str) {
/**
* To strip newlines from a string, remove any U+000A LF and U+000D CR code
* points from the string.
*/
return str.replace(/[\n\r]/g, "");
}
exports.stripNewlines = stripNewlines;
/**
* Normalizes newline characters in a string by converting consecutive
* carriage-return newline characters and also single carriage return characters
* into a single newline.
*
* @param str - a string
*/
function normalizeNewlines(str) {
/**
* To normalize newlines in a string, replace every U+000D CR U+000A LF code
* point pair with a single U+000A LF code point, and then replace every
* remaining U+000D CR code point with a U+000A LF code point.
*/
return str.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
}
exports.normalizeNewlines = normalizeNewlines;
/**
* Removes leading and trailing whitespace characters from a string.
*
* @param str - a string
*/
function stripLeadingAndTrailingASCIIWhitespace(str) {
/**
* To strip leading and trailing ASCII whitespace from a string, remove all
* ASCII whitespace that are at the start or the end of the string.
*/
return str.replace(/^[\t\n\f\r ]+/, "").replace(/[\t\n\f\r ]+$/, "");
}
exports.stripLeadingAndTrailingASCIIWhitespace = stripLeadingAndTrailingASCIIWhitespace;
/**
* Removes consecutive newline characters from a string.
*
* @param str - a string
*/
function stripAndCollapseASCIIWhitespace(str) {
/**
* To strip and collapse ASCII whitespace in a string, replace any sequence of
* one or more consecutive code points that are ASCII whitespace in the string
* with a single U+0020 SPACE code point, and then remove any leading and
* trailing ASCII whitespace from that string.
*/
return stripLeadingAndTrailingASCIIWhitespace(str.replace(/[\t\n\f\r ]{2,}/g, " "));
}
exports.stripAndCollapseASCIIWhitespace = stripAndCollapseASCIIWhitespace;
/**
* Collects a sequence of code points matching a given condition from the input
* string.
*
* @param condition - a condition to match
* @param input - a string
* @param options - starting position
*/
function collectASequenceOfCodePoints(condition, input, options) {
/**
* 1. Let result be the empty string.
* 2. While position doesnt point past the end of input and the code point at
* position within input meets the condition condition:
* 2.1. Append that code point to the end of result.
* 2.2. Advance position by 1.
* 3. Return result.
*/
if (!util_1.isArray(input))
return collectASequenceOfCodePoints(condition, Array.from(input), options);
var result = "";
while (options.position < input.length && !!condition.call(null, input[options.position])) {
result += input[options.position];
options.position++;
}
return result;
}
exports.collectASequenceOfCodePoints = collectASequenceOfCodePoints;
/**
* Skips over ASCII whitespace.
*
* @param input - input string
* @param options - starting position
*/
function skipASCIIWhitespace(input, options) {
/**
* To skip ASCII whitespace within a string input given a position variable
* position, collect a sequence of code points that are ASCII whitespace from
* input given position. The collected code points are not used, but position
* is still updated.
*/
collectASequenceOfCodePoints(function (str) { return CodePoints_1.ASCIIWhiteSpace.test(str); }, input, options);
}
exports.skipASCIIWhitespace = skipASCIIWhitespace;
/**
* Solits a string at the given delimiter.
*
* @param input - input string
* @param delimiter - a delimiter string
*/
function strictlySplit(input, delimiter) {
/**
* 1. Let position be a position variable for input, initially pointing at the
* start of input.
* 2. Let tokens be a list of strings, initially empty.
* 3. Let token be the result of collecting a sequence of code points that are
* not equal to delimiter from input, given position.
* 4. Append token to tokens.
* 5. While position is not past the end of input:
* 5.1. Assert: the code point at position within input is delimiter.
* 5.2. Advance position by 1.
* 5.3. Let token be the result of collecting a sequence of code points that
* are not equal to delimiter from input, given position.
* 5.4. Append token to tokens.
* 6. Return tokens.
*/
if (!util_1.isArray(input))
return strictlySplit(Array.from(input), delimiter);
var options = { position: 0 };
var tokens = [];
var token = collectASequenceOfCodePoints(function (str) { return delimiter !== str; }, input, options);
tokens.push(token);
while (options.position < input.length) {
console.assert(input[options.position] === delimiter, "strictlySplit found no delimiter in input string.");
options.position++;
token = collectASequenceOfCodePoints(function (str) { return delimiter !== str; }, input, options);
tokens.push(token);
}
return tokens;
}
exports.strictlySplit = strictlySplit;
/**
* Splits a string on ASCII whitespace.
*
* @param input - a string
*/
function splitAStringOnASCIIWhitespace(input) {
/**
* 1. Let position be a position variable for input, initially pointing at the
* start of input.
* 2. Let tokens be a list of strings, initially empty.
* 3. Skip ASCII whitespace within input given position.
* 4. While position is not past the end of input:
* 4.1. Let token be the result of collecting a sequence of code points that
* are not ASCII whitespace from input, given position.
* 4.2. Append token to tokens.
* 4.3. Skip ASCII whitespace within input given position.
* 5. Return tokens.
*/
if (!util_1.isArray(input))
return splitAStringOnASCIIWhitespace(Array.from(input));
var options = { position: 0 };
var tokens = [];
skipASCIIWhitespace(input, options);
while (options.position < input.length) {
var token = collectASequenceOfCodePoints(function (str) { return !CodePoints_1.ASCIIWhiteSpace.test(str); }, input, options);
tokens.push(token);
skipASCIIWhitespace(input, options);
}
return tokens;
}
exports.splitAStringOnASCIIWhitespace = splitAStringOnASCIIWhitespace;
/**
* Splits a string on commas.
*
* @param input - a string
*/
function splitAStringOnCommas(input) {
/**
* 1. Let position be a position variable for input, initially pointing at the
* start of input.
* 2. Let tokens be a list of strings, initially empty.
* 3. While position is not past the end of input:
* 3.1. Let token be the result of collecting a sequence of code points that
* are not U+002C (,) from input, given position.
* 3.2. Strip leading and trailing ASCII whitespace from token.
* 3.3. Append token to tokens.
* 3.4. If position is not past the end of input, then:
* 3.4.1. Assert: the code point at position within input is U+002C (,).
* 3.4.2. Advance position by 1.
* 4. Return tokens.
*/
if (!util_1.isArray(input))
return splitAStringOnCommas(Array.from(input));
var options = { position: 0 };
var tokens = [];
while (options.position < input.length) {
var token = collectASequenceOfCodePoints(function (str) { return str !== ','; }, input, options);
tokens.push(stripLeadingAndTrailingASCIIWhitespace(token));
if (options.position < input.length) {
console.assert(input[options.position] === ',', "splitAStringOnCommas found no delimiter in input string.");
options.position++;
}
}
return tokens;
}
exports.splitAStringOnCommas = splitAStringOnCommas;
/**
* Concatenates a list of strings with the given separator.
*
* @param list - a list of strings
* @param separator - a separator string
*/
function concatenate(list, separator) {
if (separator === void 0) { separator = ""; }
/**
* 1. If list is empty, then return the empty string.
* 2. If separator is not given, then set separator to the empty string.
* 3. Return a string whose contents are lists items, in order, separated
* from each other by separator.
*/
if (list.length === 0)
return "";
return list.join(separator);
}
exports.concatenate = concatenate;
//# sourceMappingURL=String.js.map
/***/ }),
/* 98 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
var interfaces_1 = __webpack_require__(970);
var LocalNameSet_1 = __webpack_require__(575);
var NamespacePrefixMap_1 = __webpack_require__(392);
var DOMException_1 = __webpack_require__(35);
var infra_1 = __webpack_require__(23);
var algorithm_1 = __webpack_require__(163);
/**
* Represents an XML serializer.
*
* Implements: https://www.w3.org/TR/DOM-Parsing/#serializing
*/
var XMLSerializerImpl = /** @class */ (function () {
function XMLSerializerImpl() {
}
/** @inheritdoc */
XMLSerializerImpl.prototype.serializeToString = function (root) {
/**
* The serializeToString(root) method must produce an XML serialization
* of root passing a value of false for the require well-formed parameter,
* and return the result.
*/
return this._xmlSerialization(root, false);
};
/**
* Produces an XML serialization of the given node.
*
* @param node - node to serialize
* @param requireWellFormed - whether to check conformance
*/
XMLSerializerImpl.prototype._xmlSerialization = function (node, requireWellFormed) {
// To increase performance, use a namespace-aware serializer only if the
// document has namespaced elements
if (node._nodeDocument === undefined || node._nodeDocument._hasNamespaces) {
/** From: https://w3c.github.io/DOM-Parsing/#xml-serialization
*
* 1. Let namespace be a context namespace with value null.
* The context namespace tracks the XML serialization algorithm's current
* default namespace. The context namespace is changed when either an Element
* Node has a default namespace declaration, or the algorithm generates a
* default namespace declaration for the Element Node to match its own
* namespace. The algorithm assumes no namespace (null) to start.
* 2. Let prefix map be a new namespace prefix map.
* 3. Add the XML namespace with prefix value "xml" to prefix map.
* 4. Let prefix index be a generated namespace prefix index with value 1.
* The generated namespace prefix index is used to generate a new unique
* prefix value when no suitable existing namespace prefix is available to
* serialize a node's namespaceURI (or the namespaceURI of one of node's
* attributes). See the generate a prefix algorithm.
*/
var namespace = null;
var prefixMap = new NamespacePrefixMap_1.NamespacePrefixMap();
prefixMap.set("xml", infra_1.namespace.XML);
var prefixIndex = { value: 1 };
/**
* 5. Return the result of running the XML serialization algorithm on node
* passing the context namespace namespace, namespace prefix map prefix map,
* generated namespace prefix index reference to prefix index, and the
* flag require well-formed. If an exception occurs during the execution
* of the algorithm, then catch that exception and throw an
* "InvalidStateError" DOMException.
*/
try {
return this._serializeNodeNS(node, namespace, prefixMap, prefixIndex, requireWellFormed);
}
catch (_a) {
throw new DOMException_1.InvalidStateError();
}
}
else {
try {
return this._serializeNode(node, requireWellFormed);
}
catch (_b) {
throw new DOMException_1.InvalidStateError();
}
}
};
/**
* Produces an XML serialization of a node.
*
* @param node - node to serialize
* @param namespace - context namespace
* @param prefixMap - namespace prefix map
* @param prefixIndex - generated namespace prefix index
* @param requireWellFormed - whether to check conformance
*/
XMLSerializerImpl.prototype._serializeNodeNS = function (node, namespace, prefixMap, prefixIndex, requireWellFormed) {
switch (node.nodeType) {
case interfaces_1.NodeType.Element:
return this._serializeElementNS(node, namespace, prefixMap, prefixIndex, requireWellFormed);
case interfaces_1.NodeType.Document:
return this._serializeDocumentNS(node, namespace, prefixMap, prefixIndex, requireWellFormed);
case interfaces_1.NodeType.Comment:
return this._serializeComment(node, requireWellFormed);
case interfaces_1.NodeType.Text:
return this._serializeText(node, requireWellFormed);
case interfaces_1.NodeType.DocumentFragment:
return this._serializeDocumentFragmentNS(node, namespace, prefixMap, prefixIndex, requireWellFormed);
case interfaces_1.NodeType.DocumentType:
return this._serializeDocumentType(node, requireWellFormed);
case interfaces_1.NodeType.ProcessingInstruction:
return this._serializeProcessingInstruction(node, requireWellFormed);
case interfaces_1.NodeType.CData:
return this._serializeCData(node, requireWellFormed);
default:
throw new Error("Unknown node type: " + node.nodeType);
}
};
/**
* Produces an XML serialization of a node.
*
* @param node - node to serialize
* @param requireWellFormed - whether to check conformance
*/
XMLSerializerImpl.prototype._serializeNode = function (node, requireWellFormed) {
switch (node.nodeType) {
case interfaces_1.NodeType.Element:
return this._serializeElement(node, requireWellFormed);
case interfaces_1.NodeType.Document:
return this._serializeDocument(node, requireWellFormed);
case interfaces_1.NodeType.Comment:
return this._serializeComment(node, requireWellFormed);
case interfaces_1.NodeType.Text:
return this._serializeText(node, requireWellFormed);
case interfaces_1.NodeType.DocumentFragment:
return this._serializeDocumentFragment(node, requireWellFormed);
case interfaces_1.NodeType.DocumentType:
return this._serializeDocumentType(node, requireWellFormed);
case interfaces_1.NodeType.ProcessingInstruction:
return this._serializeProcessingInstruction(node, requireWellFormed);
case interfaces_1.NodeType.CData:
return this._serializeCData(node, requireWellFormed);
default:
throw new Error("Unknown node type: " + node.nodeType);
}
};
/**
* Produces an XML serialization of an element node.
*
* @param node - node to serialize
* @param namespace - context namespace
* @param prefixMap - namespace prefix map
* @param prefixIndex - generated namespace prefix index
* @param requireWellFormed - whether to check conformance
*/
XMLSerializerImpl.prototype._serializeElementNS = function (node, namespace, prefixMap, prefixIndex, requireWellFormed) {
var e_1, _a;
/**
* From: https://w3c.github.io/DOM-Parsing/#xml-serializing-an-element-node
*
* 1. If the require well-formed flag is set (its value is true), and this
* node's localName attribute contains the character ":" (U+003A COLON) or
* does not match the XML Name production, then throw an exception; the
* serialization of this node would not be a well-formed element.
*/
if (requireWellFormed && (node.localName.indexOf(":") !== -1 ||
!algorithm_1.xml_isName(node.localName))) {
throw new Error("Node local name contains invalid characters (well-formed required).");
}
/**
* 2. Let markup be the string "<" (U+003C LESS-THAN SIGN).
* 3. Let qualified name be an empty string.
* 4. Let skip end tag be a boolean flag with value false.
* 5. Let ignore namespace definition attribute be a boolean flag with value
* false.
* 6. Given prefix map, copy a namespace prefix map and let map be the
* result.
* 7. Let local prefixes map be an empty map. The map has unique Node prefix
* strings as its keys, with corresponding namespaceURI Node values as the
* map's key values (in this map, the null namespace is represented by the
* empty string).
*
* _Note:_ This map is local to each element. It is used to ensure there
* are no conflicting prefixes should a new namespace prefix attribute need
* to be generated. It is also used to enable skipping of duplicate prefix
* definitions when writing an element's attributes: the map allows the
* algorithm to distinguish between a prefix in the namespace prefix map
* that might be locally-defined (to the current Element) and one that is
* not.
* 8. Let local default namespace be the result of recording the namespace
* information for node given map and local prefixes map.
*
* _Note:_ The above step will update map with any found namespace prefix
* definitions, add the found prefix definitions to the local prefixes map
* and return a local default namespace value defined by a default namespace
* attribute if one exists. Otherwise it returns null.
* 9. Let inherited ns be a copy of namespace.
* 10. Let ns be the value of node's namespaceURI attribute.
*/
var markup = "<";
var qualifiedName = '';
var skipEndTag = false;
var ignoreNamespaceDefinitionAttribute = false;
var map = prefixMap.copy();
var localPrefixesMap = {};
var localDefaultNamespace = this._recordNamespaceInformation(node, map, localPrefixesMap);
var inheritedNS = namespace;
var ns = node.namespaceURI;
/** 11. If inherited ns is equal to ns, then: */
if (inheritedNS === ns) {
/**
* 11.1. If local default namespace is not null, then set ignore
* namespace definition attribute to true.
*/
if (localDefaultNamespace !== null) {
ignoreNamespaceDefinitionAttribute = true;
}
/**
* 11.2. If ns is the XML namespace, then append to qualified name the
* concatenation of the string "xml:" and the value of node's localName.
* 11.3. Otherwise, append to qualified name the value of node's
* localName. The node's prefix if it exists, is dropped.
*/
if (ns === infra_1.namespace.XML) {
qualifiedName = 'xml:' + node.localName;
}
else {
qualifiedName = node.localName;
}
/** 11.4. Append the value of qualified name to markup. */
markup += qualifiedName;
}
else {
/**
* 12. Otherwise, inherited ns is not equal to ns (the node's own
* namespace is different from the context namespace of its parent).
* Run these sub-steps:
*
* 12.1. Let prefix be the value of node's prefix attribute.
* 12.2. Let candidate prefix be the result of retrieving a preferred
* prefix string prefix from map given namespace ns. The above may return
* null if no namespace key ns exists in map.
*/
var prefix = node.prefix;
/**
* We don't need to run "retrieving a preferred prefix string" algorithm if
* the element has no prefix and its namespace matches to the default
* namespace.
* See: https://github.com/web-platform-tests/wpt/pull/16703
*/
var candidatePrefix = null;
if (prefix !== null || ns !== localDefaultNamespace) {
candidatePrefix = map.get(prefix, ns);
}
/**
* 12.3. If the value of prefix matches "xmlns", then run the following
* steps:
*/
if (prefix === "xmlns") {
/**
* 12.3.1. If the require well-formed flag is set, then throw an error.
* An Element with prefix "xmlns" will not legally round-trip in a
* conforming XML parser.
*/
if (requireWellFormed) {
throw new Error("An element cannot have the 'xmlns' prefix (well-formed required).");
}
/**
* 12.3.2. Let candidate prefix be the value of prefix.
*/
candidatePrefix = prefix;
}
/**
* 12.4.Found a suitable namespace prefix: if candidate prefix is not
* null (a namespace prefix is defined which maps to ns), then:
*/
if (candidatePrefix !== null) {
/**
* The following may serialize a different prefix than the Element's
* existing prefix if it already had one. However, the retrieving a
* preferred prefix string algorithm already tried to match the
* existing prefix if possible.
*
* 12.4.1. Append to qualified name the concatenation of candidate
* prefix, ":" (U+003A COLON), and node's localName. There exists on
* this node or the node's ancestry a namespace prefix definition that
* defines the node's namespace.
* 12.4.2. If the local default namespace is not null (there exists a
* locally-defined default namespace declaration attribute) and its
* value is not the XML namespace, then let inherited ns get the value
* of local default namespace unless the local default namespace is the
* empty string in which case let it get null (the context namespace
* is changed to the declared default, rather than this node's own
* namespace).
*
* _Note:_ Any default namespace definitions or namespace prefixes that
* define the XML namespace are omitted when serializing this node's
* attributes.
*/
qualifiedName = candidatePrefix + ':' + node.localName;
if (localDefaultNamespace !== null && localDefaultNamespace !== infra_1.namespace.XML) {
inheritedNS = localDefaultNamespace || null;
}
/**
* 12.4.3. Append the value of qualified name to markup.
*/
markup += qualifiedName;
/** 12.5. Otherwise, if prefix is not null, then: */
}
else if (prefix !== null) {
/**
* _Note:_ By this step, there is no namespace or prefix mapping
* declaration in this node (or any parent node visited by this
* algorithm) that defines prefix otherwise the step labelled Found
* a suitable namespace prefix would have been followed. The sub-steps
* that follow will create a new namespace prefix declaration for prefix
* and ensure that prefix does not conflict with an existing namespace
* prefix declaration of the same localName in node's attribute list.
*
* 12.5.1. If the local prefixes map contains a key matching prefix,
* then let prefix be the result of generating a prefix providing as
* input map, ns, and prefix index.
*/
if (prefix in localPrefixesMap) {
prefix = this._generatePrefix(ns, map, prefixIndex);
}
/**
* 12.5.2. Add prefix to map given namespace ns.
* 12.5.3. Append to qualified name the concatenation of prefix, ":"
* (U+003A COLON), and node's localName.
* 12.5.4. Append the value of qualified name to markup.
*/
map.set(prefix, ns);
qualifiedName += prefix + ':' + node.localName;
markup += qualifiedName;
/**
* 12.5.5. Append the following to markup, in the order listed:
*
* _Note:_ The following serializes a namespace prefix declaration for
* prefix which was just added to the map.
*
* 12.5.5.1. " " (U+0020 SPACE);
* 12.5.5.2. The string "xmlns:";
* 12.5.5.3. The value of prefix;
* 12.5.5.4. "="" (U+003D EQUALS SIGN, U+0022 QUOTATION MARK);
* 12.5.5.5. The result of serializing an attribute value given ns and
* the require well-formed flag as input;
* 12.5.5.6. """ (U+0022 QUOTATION MARK).
*/
markup += " xmlns:" + prefix + "=\"" +
this._serializeAttributeValue(ns, requireWellFormed) + "\"";
/**
* 12.5.5.7. If local default namespace is not null (there exists a
* locally-defined default namespace declaration attribute), then
* let inherited ns get the value of local default namespace unless the
* local default namespace is the empty string in which case let it get
* null.
*/
if (localDefaultNamespace !== null) {
inheritedNS = localDefaultNamespace || null;
}
/**
* 12.6. Otherwise, if local default namespace is null, or local
* default namespace is not null and its value is not equal to ns, then:
*/
}
else if (localDefaultNamespace === null ||
(localDefaultNamespace !== null && localDefaultNamespace !== ns)) {
/**
* _Note:_ At this point, the namespace for this node still needs to be
* serialized, but there's no prefix (or candidate prefix) available; the
* following uses the default namespace declaration to define the
* namespace--optionally replacing an existing default declaration
* if present.
*
* 12.6.1. Set the ignore namespace definition attribute flag to true.
* 12.6.2. Append to qualified name the value of node's localName.
* 12.6.3. Let the value of inherited ns be ns.
*
* _Note:_ The new default namespace will be used in the serialization
* to define this node's namespace and act as the context namespace for
* its children.
*/
ignoreNamespaceDefinitionAttribute = true;
qualifiedName += node.localName;
inheritedNS = ns;
/**
* 12.6.4. Append the value of qualified name to markup.
*/
markup += qualifiedName;
/**
* 12.6.5. Append the following to markup, in the order listed:
*
* _Note:_ The following serializes the new (or replacement) default
* namespace definition.
*
* 12.6.5.1. " " (U+0020 SPACE);
* 12.6.5.2. The string "xmlns";
* 12.6.5.3. "="" (U+003D EQUALS SIGN, U+0022 QUOTATION MARK);
* 12.6.5.4. The result of serializing an attribute value given ns
* and the require well-formed flag as input;
* 12.6.5.5. """ (U+0022 QUOTATION MARK).
*/
markup += " xmlns" + "=\"" +
this._serializeAttributeValue(ns, requireWellFormed) + "\"";
/**
* 12.7. Otherwise, the node has a local default namespace that matches
* ns. Append to qualified name the value of node's localName, let the
* value of inherited ns be ns, and append the value of qualified name
* to markup.
*/
}
else {
qualifiedName += node.localName;
inheritedNS = ns;
markup += qualifiedName;
}
}
/**
* 13. Append to markup the result of the XML serialization of node's
* attributes given map, prefix index, local prefixes map, ignore namespace
* definition attribute flag, and require well-formed flag.
*/
markup += this._serializeAttributesNS(node, map, prefixIndex, localPrefixesMap, ignoreNamespaceDefinitionAttribute, requireWellFormed);
/**
* 14. If ns is the HTML namespace, and the node's list of children is
* empty, and the node's localName matches any one of the following void
* elements: "area", "base", "basefont", "bgsound", "br", "col", "embed",
* "frame", "hr", "img", "input", "keygen", "link", "menuitem", "meta",
* "param", "source", "track", "wbr"; then append the following to markup,
* in the order listed:
* 14.1. " " (U+0020 SPACE);
* 14.2. "/" (U+002F SOLIDUS).
* and set the skip end tag flag to true.
* 15. If ns is not the HTML namespace, and the node's list of children is
* empty, then append "/" (U+002F SOLIDUS) to markup and set the skip end
* tag flag to true.
* 16. Append ">" (U+003E GREATER-THAN SIGN) to markup.
*/
var isHTML = (ns === infra_1.namespace.HTML);
if (isHTML && node.childNodes.length === 0 &&
XMLSerializerImpl._VoidElementNames.has(node.localName)) {
markup += " /";
skipEndTag = true;
}
else if (!isHTML && node.childNodes.length === 0) {
markup += "/";
skipEndTag = true;
}
markup += ">";
/**
* 17. If the value of skip end tag is true, then return the value of markup
* and skip the remaining steps. The node is a leaf-node.
*/
if (skipEndTag)
return markup;
/**
* 18. If ns is the HTML namespace, and the node's localName matches the
* string "template", then this is a template element. Append to markup the
* result of XML serializing a DocumentFragment node given the template
* element's template contents (a DocumentFragment), providing inherited
* ns, map, prefix index, and the require well-formed flag.
*
* _Note:_ This allows template content to round-trip, given the rules for
* parsing XHTML documents.
*
* 19. Otherwise, append to markup the result of running the XML
* serialization algorithm on each of node's children, in tree order,
* providing inherited ns, map, prefix index, and the require well-formed
* flag.
*/
if (isHTML && node.localName === "template") {
// TODO: serialize template contents
}
else {
try {
for (var _b = __values(node._children || node.childNodes), _c = _b.next(); !_c.done; _c = _b.next()) {
var childNode = _c.value;
markup += this._serializeNodeNS(childNode, inheritedNS, map, prefixIndex, requireWellFormed);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
}
/**
* 20. Append the following to markup, in the order listed:
* 20.1. "</" (U+003C LESS-THAN SIGN, U+002F SOLIDUS);
* 20.2. The value of qualified name;
* 20.3. ">" (U+003E GREATER-THAN SIGN).
*/
markup += "</" + qualifiedName + ">";
/**
* 21. Return the value of markup.
*/
return markup;
};
/**
* Produces an XML serialization of a document node.
*
* @param node - node to serialize
* @param namespace - context namespace
* @param prefixMap - namespace prefix map
* @param prefixIndex - generated namespace prefix index
* @param requireWellFormed - whether to check conformance
*/
XMLSerializerImpl.prototype._serializeDocumentNS = function (node, namespace, prefixMap, prefixIndex, requireWellFormed) {
var e_2, _a;
/**
* If the require well-formed flag is set (its value is true), and this node
* has no documentElement (the documentElement attribute's value is null),
* then throw an exception; the serialization of this node would not be a
* well-formed document.
*/
if (requireWellFormed && node.documentElement === null) {
throw new Error("Missing document element (well-formed required).");
}
/**
* Otherwise, run the following steps:
* 1. Let serialized document be an empty string.
* 2. For each child child of node, in tree order, run the XML
* serialization algorithm on the child passing along the provided
* arguments, and append the result to serialized document.
*
* _Note:_ This will serialize any number of ProcessingInstruction and
* Comment nodes both before and after the Document's documentElement node,
* including at most one DocumentType node. (Text nodes are not allowed as
* children of the Document.)
*
* 3. Return the value of serialized document.
*/
var serializedDocument = "";
try {
for (var _b = __values(node._children || node.childNodes), _c = _b.next(); !_c.done; _c = _b.next()) {
var childNode = _c.value;
serializedDocument += this._serializeNodeNS(childNode, namespace, prefixMap, prefixIndex, requireWellFormed);
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_2) throw e_2.error; }
}
return serializedDocument;
};
/**
* Produces an XML serialization of a comment node.
*
* @param node - node to serialize
* @param requireWellFormed - whether to check conformance
*/
XMLSerializerImpl.prototype._serializeComment = function (node, requireWellFormed) {
/**
* If the require well-formed flag is set (its value is true), and node's
* data contains characters that are not matched by the XML Char production
* or contains "--" (two adjacent U+002D HYPHEN-MINUS characters) or that
* ends with a "-" (U+002D HYPHEN-MINUS) character, then throw an exception;
* the serialization of this node's data would not be well-formed.
*/
if (requireWellFormed && (!algorithm_1.xml_isLegalChar(node.data) ||
node.data.indexOf("--") !== -1 || node.data.endsWith("-"))) {
throw new Error("Comment data contains invalid characters (well-formed required).");
}
/**
* Otherwise, return the concatenation of "<!--", node's data, and "-->".
*/
return "<!--" + node.data + "-->";
};
/**
* Produces an XML serialization of a text node.
*
* @param node - node to serialize
* @param requireWellFormed - whether to check conformance
* @param level - current depth of the XML tree
*/
XMLSerializerImpl.prototype._serializeText = function (node, requireWellFormed) {
/**
* 1. If the require well-formed flag is set (its value is true), and
* node's data contains characters that are not matched by the XML Char
* production, then throw an exception; the serialization of this node's
* data would not be well-formed.
*/
if (requireWellFormed && !algorithm_1.xml_isLegalChar(node.data)) {
throw new Error("Text data contains invalid characters (well-formed required).");
}
/**
* 2. Let markup be the value of node's data.
* 3. Replace any occurrences of "&" in markup by "&amp;".
* 4. Replace any occurrences of "<" in markup by "&lt;".
* 5. Replace any occurrences of ">" in markup by "&gt;".
* 6. Return the value of markup.
*/
var result = "";
for (var i = 0; i < node.data.length; i++) {
var c = node.data[i];
if (c === "&")
result += "&amp;";
else if (c === "<")
result += "&lt;";
else if (c === ">")
result += "&gt;";
else
result += c;
}
return result;
};
/**
* Produces an XML serialization of a document fragment node.
*
* @param node - node to serialize
* @param namespace - context namespace
* @param prefixMap - namespace prefix map
* @param prefixIndex - generated namespace prefix index
* @param requireWellFormed - whether to check conformance
*/
XMLSerializerImpl.prototype._serializeDocumentFragmentNS = function (node, namespace, prefixMap, prefixIndex, requireWellFormed) {
var e_3, _a;
/**
* 1. Let markup the empty string.
* 2. For each child child of node, in tree order, run the XML serialization
* algorithm on the child given namespace, prefix map, a reference to prefix
* index, and flag require well-formed. Concatenate the result to markup.
* 3. Return the value of markup.
*/
var markup = "";
try {
for (var _b = __values(node._children || node.childNodes), _c = _b.next(); !_c.done; _c = _b.next()) {
var childNode = _c.value;
markup += this._serializeNodeNS(childNode, namespace, prefixMap, prefixIndex, requireWellFormed);
}
}
catch (e_3_1) { e_3 = { error: e_3_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_3) throw e_3.error; }
}
return markup;
};
/**
* Produces an XML serialization of a document type node.
*
* @param node - node to serialize
* @param requireWellFormed - whether to check conformance
*/
XMLSerializerImpl.prototype._serializeDocumentType = function (node, requireWellFormed) {
/**
* 1. If the require well-formed flag is true and the node's publicId
* attribute contains characters that are not matched by the XML PubidChar
* production, then throw an exception; the serialization of this node
* would not be a well-formed document type declaration.
*/
if (requireWellFormed && !algorithm_1.xml_isPubidChar(node.publicId)) {
throw new Error("DocType public identifier does not match PubidChar construct (well-formed required).");
}
/**
* 2. If the require well-formed flag is true and the node's systemId
* attribute contains characters that are not matched by the XML Char
* production or that contains both a """ (U+0022 QUOTATION MARK) and a
* "'" (U+0027 APOSTROPHE), then throw an exception; the serialization
* of this node would not be a well-formed document type declaration.
*/
if (requireWellFormed &&
(!algorithm_1.xml_isLegalChar(node.systemId) ||
(node.systemId.indexOf('"') !== -1 && node.systemId.indexOf("'") !== -1))) {
throw new Error("DocType system identifier contains invalid characters (well-formed required).");
}
/**
* 3. Let markup be an empty string.
* 4. Append the string "<!DOCTYPE" to markup.
* 5. Append " " (U+0020 SPACE) to markup.
* 6. Append the value of the node's name attribute to markup. For a node
* belonging to an HTML document, the value will be all lowercase.
* 7. If the node's publicId is not the empty string then append the
* following, in the order listed, to markup:
* 7.1. " " (U+0020 SPACE);
* 7.2. The string "PUBLIC";
* 7.3. " " (U+0020 SPACE);
* 7.4. """ (U+0022 QUOTATION MARK);
* 7.5. The value of the node's publicId attribute;
* 7.6. """ (U+0022 QUOTATION MARK).
* 8. If the node's systemId is not the empty string and the node's publicId
* is set to the empty string, then append the following, in the order
* listed, to markup:
* 8.1. " " (U+0020 SPACE);
* 8.2. The string "SYSTEM".
* 9. If the node's systemId is not the empty string then append the
* following, in the order listed, to markup:
* 9.2. " " (U+0020 SPACE);
* 9.3. """ (U+0022 QUOTATION MARK);
* 9.3. The value of the node's systemId attribute;
* 9.4. """ (U+0022 QUOTATION MARK).
* 10. Append ">" (U+003E GREATER-THAN SIGN) to markup.
* 11. Return the value of markup.
*/
return node.publicId && node.systemId ?
"<!DOCTYPE " + node.name + " PUBLIC \"" + node.publicId + "\" \"" + node.systemId + "\">"
: node.publicId ?
"<!DOCTYPE " + node.name + " PUBLIC \"" + node.publicId + "\">"
: node.systemId ?
"<!DOCTYPE " + node.name + " SYSTEM \"" + node.systemId + "\">"
:
"<!DOCTYPE " + node.name + ">";
};
/**
* Produces an XML serialization of a processing instruction node.
*
* @param node - node to serialize
* @param requireWellFormed - whether to check conformance
*/
XMLSerializerImpl.prototype._serializeProcessingInstruction = function (node, requireWellFormed) {
/**
* 1. If the require well-formed flag is set (its value is true), and node's
* target contains a ":" (U+003A COLON) character or is an ASCII
* case-insensitive match for the string "xml", then throw an exception;
* the serialization of this node's target would not be well-formed.
*/
if (requireWellFormed && (node.target.indexOf(":") !== -1 || (/^xml$/i).test(node.target))) {
throw new Error("Processing instruction target contains invalid characters (well-formed required).");
}
/**
* 2. If the require well-formed flag is set (its value is true), and node's
* data contains characters that are not matched by the XML Char production
* or contains the string "?>" (U+003F QUESTION MARK,
* U+003E GREATER-THAN SIGN), then throw an exception; the serialization of
* this node's data would not be well-formed.
*/
if (requireWellFormed && (!algorithm_1.xml_isLegalChar(node.data) ||
node.data.indexOf("?>") !== -1)) {
throw new Error("Processing instruction data contains invalid characters (well-formed required).");
}
/**
* 3. Let markup be the concatenation of the following, in the order listed:
* 3.1. "<?" (U+003C LESS-THAN SIGN, U+003F QUESTION MARK);
* 3.2. The value of node's target;
* 3.3. " " (U+0020 SPACE);
* 3.4. The value of node's data;
* 3.5. "?>" (U+003F QUESTION MARK, U+003E GREATER-THAN SIGN).
* 4. Return the value of markup.
*/
return "<?" + (node.data === "" ? node.target : node.target + " " + node.data) + "?>";
};
/**
* Produces an XML serialization of a CDATA node.
*
* @param node - node to serialize
* @param requireWellFormed - whether to check conformance
*/
XMLSerializerImpl.prototype._serializeCData = function (node, requireWellFormed) {
if (requireWellFormed && (node.data.indexOf("]]>") !== -1)) {
throw new Error("CDATA contains invalid characters (well-formed required).");
}
return "<![CDATA[" + node.data + "]]>";
};
/**
* Produces an XML serialization of the attributes of an element node.
*
* @param node - node to serialize
* @param map - namespace prefix map
* @param prefixIndex - generated namespace prefix index
* @param localPrefixesMap - local prefixes map
* @param ignoreNamespaceDefinitionAttribute - whether to ignore namespace
* attributes
* @param requireWellFormed - whether to check conformance
*/
XMLSerializerImpl.prototype._serializeAttributesNS = function (node, map, prefixIndex, localPrefixesMap, ignoreNamespaceDefinitionAttribute, requireWellFormed) {
var e_4, _a;
/**
* 1. Let result be the empty string.
* 2. Let localname set be a new empty namespace localname set. This
* localname set will contain tuples of unique attribute namespaceURI and
* localName pairs, and is populated as each attr is processed. This set is
* used to [optionally] enforce the well-formed constraint that an element
* cannot have two attributes with the same namespaceURI and localName.
* This can occur when two otherwise identical attributes on the same
* element differ only by their prefix values.
*/
var result = "";
var localNameSet = requireWellFormed ? new LocalNameSet_1.LocalNameSet() : undefined;
try {
/**
* 3. Loop: For each attribute attr in element's attributes, in the order
* they are specified in the element's attribute list:
*/
for (var _b = __values(node.attributes), _c = _b.next(); !_c.done; _c = _b.next()) {
var attr = _c.value;
// Optimize common case
if (!ignoreNamespaceDefinitionAttribute && !requireWellFormed && attr.namespaceURI === null) {
result += " " + attr.localName + "=\"" +
this._serializeAttributeValue(attr.value, requireWellFormed) + "\"";
continue;
}
/**
* 3.1. If the require well-formed flag is set (its value is true), and the
* localname set contains a tuple whose values match those of a new tuple
* consisting of attr's namespaceURI attribute and localName attribute,
* then throw an exception; the serialization of this attr would fail to
* produce a well-formed element serialization.
*/
if (requireWellFormed && localNameSet && localNameSet.has(attr.namespaceURI, attr.localName)) {
throw new Error("Element contains duplicate attributes (well-formed required).");
}
/**
* 3.2. Create a new tuple consisting of attr's namespaceURI attribute and
* localName attribute, and add it to the localname set.
* 3.3. Let attribute namespace be the value of attr's namespaceURI value.
* 3.4. Let candidate prefix be null.
*/
if (requireWellFormed && localNameSet)
localNameSet.set(attr.namespaceURI, attr.localName);
var attributeNamespace = attr.namespaceURI;
var candidatePrefix = null;
/** 3.5. If attribute namespace is not null, then run these sub-steps: */
if (attributeNamespace !== null) {
/**
* 3.5.1. Let candidate prefix be the result of retrieving a preferred
* prefix string from map given namespace attribute namespace with
* preferred prefix being attr's prefix value.
*/
candidatePrefix = map.get(attr.prefix, attributeNamespace);
/**
* 3.5.2. If the value of attribute namespace is the XMLNS namespace,
* then run these steps:
*/
if (attributeNamespace === infra_1.namespace.XMLNS) {
/**
* 3.5.2.1. If any of the following are true, then stop running these
* steps and goto Loop to visit the next attribute:
* - the attr's value is the XML namespace;
* _Note:_ The XML namespace cannot be redeclared and survive
* round-tripping (unless it defines the prefix "xml"). To avoid this
* problem, this algorithm always prefixes elements in the XML
* namespace with "xml" and drops any related definitions as seen
* in the above condition.
* - the attr's prefix is null and the ignore namespace definition
* attribute flag is true (the Element's default namespace attribute
* should be skipped);
* - the attr's prefix is not null and either
* * the attr's localName is not a key contained in the local
* prefixes map, or
* * the attr's localName is present in the local prefixes map but
* the value of the key does not match attr's value
* and furthermore that the attr's localName (as the prefix to find)
* is found in the namespace prefix map given the namespace consisting
* of the attr's value (the current namespace prefix definition was
* exactly defined previously--on an ancestor element not the current
* element whose attributes are being processed).
*/
if (attr.value === infra_1.namespace.XML ||
(attr.prefix === null && ignoreNamespaceDefinitionAttribute) ||
(attr.prefix !== null && (!(attr.localName in localPrefixesMap) ||
localPrefixesMap[attr.localName] !== attr.value) &&
map.has(attr.localName, attr.value)))
continue;
/**
* 3.5.2.2. If the require well-formed flag is set (its value is true),
* and the value of attr's value attribute matches the XMLNS
* namespace, then throw an exception; the serialization of this
* attribute would produce invalid XML because the XMLNS namespace
* is reserved and cannot be applied as an element's namespace via
* XML parsing.
*
* _Note:_ DOM APIs do allow creation of elements in the XMLNS
* namespace but with strict qualifications.
*/
if (requireWellFormed && attr.value === infra_1.namespace.XMLNS) {
throw new Error("XMLNS namespace is reserved (well-formed required).");
}
/**
* 3.5.2.3. If the require well-formed flag is set (its value is true),
* and the value of attr's value attribute is the empty string, then
* throw an exception; namespace prefix declarations cannot be used
* to undeclare a namespace (use a default namespace declaration
* instead).
*/
if (requireWellFormed && attr.value === '') {
throw new Error("Namespace prefix declarations cannot be used to undeclare a namespace (well-formed required).");
}
/**
* 3.5.2.4. the attr's prefix matches the string "xmlns", then let
* candidate prefix be the string "xmlns".
*/
if (attr.prefix === 'xmlns')
candidatePrefix = 'xmlns';
/**
* 3.5.3. Otherwise, the attribute namespace is not the XMLNS namespace.
* Run these steps:
*
* _Note:_ The (candidatePrefix === null) check is not in the spec.
* We deviate from the spec here. Otherwise a prefix is generated for
* all attributes with namespaces.
*/
}
else if (candidatePrefix === null) {
if (attr.prefix !== null &&
(!map.hasPrefix(attr.prefix) ||
map.has(attr.prefix, attributeNamespace))) {
/**
* Check if we can use the attribute's own prefix.
* We deviate from the spec here.
* TODO: This is not an efficient way of searching for prefixes.
* Follow developments to the spec.
*/
candidatePrefix = attr.prefix;
}
else {
/**
* 3.5.3.1. Let candidate prefix be the result of generating a prefix
* providing map, attribute namespace, and prefix index as input.
*/
candidatePrefix = this._generatePrefix(attributeNamespace, map, prefixIndex);
}
/**
* 3.5.3.2. Append the following to result, in the order listed:
* 3.5.3.2.1. " " (U+0020 SPACE);
* 3.5.3.2.2. The string "xmlns:";
* 3.5.3.2.3. The value of candidate prefix;
* 3.5.3.2.4. "="" (U+003D EQUALS SIGN, U+0022 QUOTATION MARK);
* 3.5.3.2.5. The result of serializing an attribute value given
* attribute namespace and the require well-formed flag as input;
* 3.5.3.2.6. """ (U+0022 QUOTATION MARK).
*/
result += " xmlns:" + candidatePrefix + "=\"" +
this._serializeAttributeValue(attributeNamespace, requireWellFormed) + "\"";
}
}
/**
* 3.6. Append a " " (U+0020 SPACE) to result.
* 3.7. If candidate prefix is not null, then append to result the
* concatenation of candidate prefix with ":" (U+003A COLON).
*/
result += " ";
if (candidatePrefix !== null) {
result += candidatePrefix + ':';
}
/**
* 3.8. If the require well-formed flag is set (its value is true), and
* this attr's localName attribute contains the character
* ":" (U+003A COLON) or does not match the XML Name production or
* equals "xmlns" and attribute namespace is null, then throw an
* exception; the serialization of this attr would not be a
* well-formed attribute.
*/
if (requireWellFormed && (attr.localName.indexOf(":") !== -1 ||
!algorithm_1.xml_isName(attr.localName) ||
(attr.localName === "xmlns" && attributeNamespace === null))) {
throw new Error("Attribute local name contains invalid characters (well-formed required).");
}
/**
* 3.9. Append the following strings to result, in the order listed:
* 3.9.1. The value of attr's localName;
* 3.9.2. "="" (U+003D EQUALS SIGN, U+0022 QUOTATION MARK);
* 3.9.3. The result of serializing an attribute value given attr's value
* attribute and the require well-formed flag as input;
* 3.9.4. """ (U+0022 QUOTATION MARK).
*/
result += attr.localName + "=\"" +
this._serializeAttributeValue(attr.value, requireWellFormed) + "\"";
}
}
catch (e_4_1) { e_4 = { error: e_4_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_4) throw e_4.error; }
}
/**
* 4. Return the value of result.
*/
return result;
};
/**
* Records namespace information for the given element and returns the
* default namespace attribute value.
*
* @param node - element node to process
* @param map - namespace prefix map
* @param localPrefixesMap - local prefixes map
*/
XMLSerializerImpl.prototype._recordNamespaceInformation = function (node, map, localPrefixesMap) {
var e_5, _a;
/**
* 1. Let default namespace attr value be null.
*/
var defaultNamespaceAttrValue = null;
try {
/**
* 2. Main: For each attribute attr in element's attributes, in the order
* they are specified in the element's attribute list:
*/
for (var _b = __values(node.attributes), _c = _b.next(); !_c.done; _c = _b.next()) {
var attr = _c.value;
/**
* _Note:_ The following conditional steps find namespace prefixes. Only
* attributes in the XMLNS namespace are considered (e.g., attributes made
* to look like namespace declarations via
* setAttribute("xmlns:pretend-prefix", "pretend-namespace") are not
* included).
*/
/** 2.1. Let attribute namespace be the value of attr's namespaceURI value. */
var attributeNamespace = attr.namespaceURI;
/** 2.2. Let attribute prefix be the value of attr's prefix. */
var attributePrefix = attr.prefix;
/** 2.3. If the attribute namespace is the XMLNS namespace, then: */
if (attributeNamespace === infra_1.namespace.XMLNS) {
/**
* 2.3.1. If attribute prefix is null, then attr is a default namespace
* declaration. Set the default namespace attr value to attr's value and
* stop running these steps, returning to Main to visit the next
* attribute.
*/
if (attributePrefix === null) {
defaultNamespaceAttrValue = attr.value;
continue;
/**
* 2.3.2. Otherwise, the attribute prefix is not null and attr is a
* namespace prefix definition. Run the following steps:
*/
}
else {
/** 2.3.2.1. Let prefix definition be the value of attr's localName. */
var prefixDefinition = attr.localName;
/** 2.3.2.2. Let namespace definition be the value of attr's value. */
var namespaceDefinition = attr.value;
/**
* 2.3.2.3. If namespace definition is the XML namespace, then stop
* running these steps, and return to Main to visit the next
* attribute.
*
* _Note:_ XML namespace definitions in prefixes are completely
* ignored (in order to avoid unnecessary work when there might be
* prefix conflicts). XML namespaced elements are always handled
* uniformly by prefixing (and overriding if necessary) the element's
* localname with the reserved "xml" prefix.
*/
if (namespaceDefinition === infra_1.namespace.XML) {
continue;
}
/**
* 2.3.2.4. If namespace definition is the empty string (the
* declarative form of having no namespace), then let namespace
* definition be null instead.
*/
if (namespaceDefinition === '') {
namespaceDefinition = null;
}
/**
* 2.3.2.5. If prefix definition is found in map given the namespace
* namespace definition, then stop running these steps, and return to
* Main to visit the next attribute.
*
* _Note:_ This step avoids adding duplicate prefix definitions for
* the same namespace in the map. This has the side-effect of avoiding
* later serialization of duplicate namespace prefix declarations in
* any descendant nodes.
*/
if (map.has(prefixDefinition, namespaceDefinition)) {
continue;
}
/**
* 2.3.2.6. Add the prefix prefix definition to map given namespace
* namespace definition.
*/
map.set(prefixDefinition, namespaceDefinition);
/**
* 2.3.2.7. Add the value of prefix definition as a new key to the
* local prefixes map, with the namespace definition as the key's
* value replacing the value of null with the empty string if
* applicable.
*/
localPrefixesMap[prefixDefinition] = namespaceDefinition || '';
}
}
}
}
catch (e_5_1) { e_5 = { error: e_5_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_5) throw e_5.error; }
}
/**
* 3. Return the value of default namespace attr value.
*
* _Note:_ The empty string is a legitimate return value and is not
* converted to null.
*/
return defaultNamespaceAttrValue;
};
/**
* Generates a new prefix for the given namespace.
*
* @param newNamespace - a namespace to generate prefix for
* @param prefixMap - namespace prefix map
* @param prefixIndex - generated namespace prefix index
*/
XMLSerializerImpl.prototype._generatePrefix = function (newNamespace, prefixMap, prefixIndex) {
/**
* 1. Let generated prefix be the concatenation of the string "ns" and the
* current numerical value of prefix index.
* 2. Let the value of prefix index be incremented by one.
* 3. Add to map the generated prefix given the new namespace namespace.
* 4. Return the value of generated prefix.
*/
var generatedPrefix = "ns" + prefixIndex.value;
prefixIndex.value++;
prefixMap.set(generatedPrefix, newNamespace);
return generatedPrefix;
};
/**
* Produces an XML serialization of an attribute value.
*
* @param value - attribute value
* @param requireWellFormed - whether to check conformance
*/
XMLSerializerImpl.prototype._serializeAttributeValue = function (value, requireWellFormed) {
/**
* From: https://w3c.github.io/DOM-Parsing/#dfn-serializing-an-attribute-value
*
* 1. If the require well-formed flag is set (its value is true), and
* attribute value contains characters that are not matched by the XML Char
* production, then throw an exception; the serialization of this attribute
* value would fail to produce a well-formed element serialization.
*/
if (requireWellFormed && value !== null && !algorithm_1.xml_isLegalChar(value)) {
throw new Error("Invalid characters in attribute value.");
}
/**
* 2. If attribute value is null, then return the empty string.
*/
if (value === null)
return "";
/**
* 3. Otherwise, attribute value is a string. Return the value of attribute
* value, first replacing any occurrences of the following:
* - "&" with "&amp;"
* - """ with "&quot;"
* - "<" with "&lt;"
* - ">" with "&gt;"
* NOTE
* This matches behavior present in browsers, and goes above and beyond the
* grammar requirement in the XML specification's AttValue production by
* also replacing ">" characters.
*/
var result = "";
for (var i = 0; i < value.length; i++) {
var c = value[i];
if (c === "\"")
result += "&quot;";
else if (c === "&")
result += "&amp;";
else if (c === "<")
result += "&lt;";
else if (c === ">")
result += "&gt;";
else
result += c;
}
return result;
};
/**
* Produces an XML serialization of an element node.
*
* @param node - node to serialize
* @param requireWellFormed - whether to check conformance
*/
XMLSerializerImpl.prototype._serializeElement = function (node, requireWellFormed) {
var e_6, _a;
/**
* From: https://w3c.github.io/DOM-Parsing/#xml-serializing-an-element-node
*
* 1. If the require well-formed flag is set (its value is true), and this
* node's localName attribute contains the character ":" (U+003A COLON) or
* does not match the XML Name production, then throw an exception; the
* serialization of this node would not be a well-formed element.
*/
if (requireWellFormed && (node.localName.indexOf(":") !== -1 ||
!algorithm_1.xml_isName(node.localName))) {
throw new Error("Node local name contains invalid characters (well-formed required).");
}
/**
* 2. Let markup be the string "<" (U+003C LESS-THAN SIGN).
* 3. Let qualified name be an empty string.
* 4. Let skip end tag be a boolean flag with value false.
* 5. Let ignore namespace definition attribute be a boolean flag with value
* false.
* 6. Given prefix map, copy a namespace prefix map and let map be the
* result.
* 7. Let local prefixes map be an empty map. The map has unique Node prefix
* strings as its keys, with corresponding namespaceURI Node values as the
* map's key values (in this map, the null namespace is represented by the
* empty string).
*
* _Note:_ This map is local to each element. It is used to ensure there
* are no conflicting prefixes should a new namespace prefix attribute need
* to be generated. It is also used to enable skipping of duplicate prefix
* definitions when writing an element's attributes: the map allows the
* algorithm to distinguish between a prefix in the namespace prefix map
* that might be locally-defined (to the current Element) and one that is
* not.
* 8. Let local default namespace be the result of recording the namespace
* information for node given map and local prefixes map.
*
* _Note:_ The above step will update map with any found namespace prefix
* definitions, add the found prefix definitions to the local prefixes map
* and return a local default namespace value defined by a default namespace
* attribute if one exists. Otherwise it returns null.
* 9. Let inherited ns be a copy of namespace.
* 10. Let ns be the value of node's namespaceURI attribute.
*/
var skipEndTag = false;
/** 11. If inherited ns is equal to ns, then: */
/**
* 11.1. If local default namespace is not null, then set ignore
* namespace definition attribute to true.
* 11.2. If ns is the XML namespace, then append to qualified name the
* concatenation of the string "xml:" and the value of node's localName.
* 11.3. Otherwise, append to qualified name the value of node's
* localName. The node's prefix if it exists, is dropped.
*/
var qualifiedName = node.localName;
/** 11.4. Append the value of qualified name to markup. */
var markup = "<" + qualifiedName;
/**
* 13. Append to markup the result of the XML serialization of node's
* attributes given map, prefix index, local prefixes map, ignore namespace
* definition attribute flag, and require well-formed flag.
*/
markup += this._serializeAttributes(node, requireWellFormed);
/**
* 14. If ns is the HTML namespace, and the node's list of children is
* empty, and the node's localName matches any one of the following void
* elements: "area", "base", "basefont", "bgsound", "br", "col", "embed",
* "frame", "hr", "img", "input", "keygen", "link", "menuitem", "meta",
* "param", "source", "track", "wbr"; then append the following to markup,
* in the order listed:
* 14.1. " " (U+0020 SPACE);
* 14.2. "/" (U+002F SOLIDUS).
* and set the skip end tag flag to true.
* 15. If ns is not the HTML namespace, and the node's list of children is
* empty, then append "/" (U+002F SOLIDUS) to markup and set the skip end
* tag flag to true.
* 16. Append ">" (U+003E GREATER-THAN SIGN) to markup.
*/
if (node._children.size === 0) {
markup += "/";
skipEndTag = true;
}
markup += ">";
/**
* 17. If the value of skip end tag is true, then return the value of markup
* and skip the remaining steps. The node is a leaf-node.
*/
if (skipEndTag)
return markup;
try {
/**
* 18. If ns is the HTML namespace, and the node's localName matches the
* string "template", then this is a template element. Append to markup the
* result of XML serializing a DocumentFragment node given the template
* element's template contents (a DocumentFragment), providing inherited
* ns, map, prefix index, and the require well-formed flag.
*
* _Note:_ This allows template content to round-trip, given the rules for
* parsing XHTML documents.
*
* 19. Otherwise, append to markup the result of running the XML
* serialization algorithm on each of node's children, in tree order,
* providing inherited ns, map, prefix index, and the require well-formed
* flag.
*/
for (var _b = __values(node._children), _c = _b.next(); !_c.done; _c = _b.next()) {
var childNode = _c.value;
markup += this._serializeNode(childNode, requireWellFormed);
}
}
catch (e_6_1) { e_6 = { error: e_6_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_6) throw e_6.error; }
}
/**
* 20. Append the following to markup, in the order listed:
* 20.1. "</" (U+003C LESS-THAN SIGN, U+002F SOLIDUS);
* 20.2. The value of qualified name;
* 20.3. ">" (U+003E GREATER-THAN SIGN).
*/
markup += "</" + qualifiedName + ">";
/**
* 21. Return the value of markup.
*/
return markup;
};
/**
* Produces an XML serialization of a document node.
*
* @param node - node to serialize
* @param requireWellFormed - whether to check conformance
*/
XMLSerializerImpl.prototype._serializeDocument = function (node, requireWellFormed) {
var e_7, _a;
/**
* If the require well-formed flag is set (its value is true), and this node
* has no documentElement (the documentElement attribute's value is null),
* then throw an exception; the serialization of this node would not be a
* well-formed document.
*/
if (requireWellFormed && node.documentElement === null) {
throw new Error("Missing document element (well-formed required).");
}
/**
* Otherwise, run the following steps:
* 1. Let serialized document be an empty string.
* 2. For each child child of node, in tree order, run the XML
* serialization algorithm on the child passing along the provided
* arguments, and append the result to serialized document.
*
* _Note:_ This will serialize any number of ProcessingInstruction and
* Comment nodes both before and after the Document's documentElement node,
* including at most one DocumentType node. (Text nodes are not allowed as
* children of the Document.)
*
* 3. Return the value of serialized document.
*/
var serializedDocument = "";
try {
for (var _b = __values(node._children), _c = _b.next(); !_c.done; _c = _b.next()) {
var childNode = _c.value;
serializedDocument += this._serializeNode(childNode, requireWellFormed);
}
}
catch (e_7_1) { e_7 = { error: e_7_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_7) throw e_7.error; }
}
return serializedDocument;
};
/**
* Produces an XML serialization of a document fragment node.
*
* @param node - node to serialize
* @param requireWellFormed - whether to check conformance
*/
XMLSerializerImpl.prototype._serializeDocumentFragment = function (node, requireWellFormed) {
var e_8, _a;
/**
* 1. Let markup the empty string.
* 2. For each child child of node, in tree order, run the XML serialization
* algorithm on the child given namespace, prefix map, a reference to prefix
* index, and flag require well-formed. Concatenate the result to markup.
* 3. Return the value of markup.
*/
var markup = "";
try {
for (var _b = __values(node._children), _c = _b.next(); !_c.done; _c = _b.next()) {
var childNode = _c.value;
markup += this._serializeNode(childNode, requireWellFormed);
}
}
catch (e_8_1) { e_8 = { error: e_8_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_8) throw e_8.error; }
}
return markup;
};
/**
* Produces an XML serialization of the attributes of an element node.
*
* @param node - node to serialize
* @param requireWellFormed - whether to check conformance
*/
XMLSerializerImpl.prototype._serializeAttributes = function (node, requireWellFormed) {
var e_9, _a;
/**
* 1. Let result be the empty string.
* 2. Let localname set be a new empty namespace localname set. This
* localname set will contain tuples of unique attribute namespaceURI and
* localName pairs, and is populated as each attr is processed. This set is
* used to [optionally] enforce the well-formed constraint that an element
* cannot have two attributes with the same namespaceURI and localName.
* This can occur when two otherwise identical attributes on the same
* element differ only by their prefix values.
*/
var result = "";
var localNameSet = requireWellFormed ? {} : undefined;
try {
/**
* 3. Loop: For each attribute attr in element's attributes, in the order
* they are specified in the element's attribute list:
*/
for (var _b = __values(node.attributes), _c = _b.next(); !_c.done; _c = _b.next()) {
var attr = _c.value;
/**
* 3.1. If the require well-formed flag is set (its value is true), and the
* localname set contains a tuple whose values match those of a new tuple
* consisting of attr's namespaceURI attribute and localName attribute,
* then throw an exception; the serialization of this attr would fail to
* produce a well-formed element serialization.
*/
if (requireWellFormed && localNameSet && (attr.localName in localNameSet)) {
throw new Error("Element contains duplicate attributes (well-formed required).");
}
/**
* 3.2. Create a new tuple consisting of attr's namespaceURI attribute and
* localName attribute, and add it to the localname set.
* 3.3. Let attribute namespace be the value of attr's namespaceURI value.
* 3.4. Let candidate prefix be null.
*/
if (requireWellFormed && localNameSet)
localNameSet[attr.localName] = true;
/** 3.5. If attribute namespace is not null, then run these sub-steps: */
/**
* 3.6. Append a " " (U+0020 SPACE) to result.
* 3.7. If candidate prefix is not null, then append to result the
* concatenation of candidate prefix with ":" (U+003A COLON).
*/
/**
* 3.8. If the require well-formed flag is set (its value is true), and
* this attr's localName attribute contains the character
* ":" (U+003A COLON) or does not match the XML Name production or
* equals "xmlns" and attribute namespace is null, then throw an
* exception; the serialization of this attr would not be a
* well-formed attribute.
*/
if (requireWellFormed && (attr.localName.indexOf(":") !== -1 ||
!algorithm_1.xml_isName(attr.localName))) {
throw new Error("Attribute local name contains invalid characters (well-formed required).");
}
/**
* 3.9. Append the following strings to result, in the order listed:
* 3.9.1. The value of attr's localName;
* 3.9.2. "="" (U+003D EQUALS SIGN, U+0022 QUOTATION MARK);
* 3.9.3. The result of serializing an attribute value given attr's value
* attribute and the require well-formed flag as input;
* 3.9.4. """ (U+0022 QUOTATION MARK).
*/
result += " " + attr.localName + "=\"" +
this._serializeAttributeValue(attr.value, requireWellFormed) + "\"";
}
}
catch (e_9_1) { e_9 = { error: e_9_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_9) throw e_9.error; }
}
/**
* 4. Return the value of result.
*/
return result;
};
XMLSerializerImpl._VoidElementNames = new Set(['area', 'base', 'basefont',
'bgsound', 'br', 'col', 'embed', 'frame', 'hr', 'img', 'input', 'keygen',
'link', 'menuitem', 'meta', 'param', 'source', 'track', 'wbr']);
return XMLSerializerImpl;
}());
exports.XMLSerializerImpl = XMLSerializerImpl;
//# sourceMappingURL=XMLSerializerImpl.js.map
/***/ }),
/* 99 */,
/* 100 */
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
var Type = __webpack_require__(945);
var _hasOwnProperty = Object.prototype.hasOwnProperty;
function resolveYamlSet(data) {
if (data === null) return true;
var key, object = data;
for (key in object) {
if (_hasOwnProperty.call(object, key)) {
if (object[key] !== null) return false;
}
}
return true;
}
function constructYamlSet(data) {
return data !== null ? data : {};
}
module.exports = new Type('tag:yaml.org,2002:set', {
kind: 'mapping',
resolve: resolveYamlSet,
construct: constructYamlSet
});
/***/ }),
/* 101 */,
/* 102 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
// For internal use, subject to change.
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
// We use any as a valid input type
/* eslint-disable @typescript-eslint/no-explicit-any */
const fs = __importStar(__webpack_require__(747));
const os = __importStar(__webpack_require__(87));
const utils_1 = __webpack_require__(82);
function issueCommand(command, message) {
const filePath = process.env[`GITHUB_${command}`];
if (!filePath) {
throw new Error(`Unable to find environment variable for file command ${command}`);
}
if (!fs.existsSync(filePath)) {
throw new Error(`Missing file at path: ${filePath}`);
}
fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, {
encoding: 'utf8'
});
}
exports.issueCommand = issueCommand;
//# sourceMappingURL=file-command.js.map
/***/ }),
/* 103 */,
/* 104 */,
/* 105 */,
/* 106 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
var util_1 = __webpack_require__(592);
/**
* Flattens the given options argument.
*
* @param options - options argument
*/
function eventTarget_flatten(options) {
/**
* 1. If options is a boolean, then return options.
* 2. Return optionss capture.
*/
if (util_1.isBoolean(options)) {
return options;
}
else {
return options.capture || false;
}
}
exports.eventTarget_flatten = eventTarget_flatten;
/**
* Flattens the given options argument.
*
* @param options - options argument
*/
function eventTarget_flattenMore(options) {
/**
* 1. Let capture be the result of flattening options.
* 2. Let once and passive be false.
* 3. If options is a dictionary, then set passive to optionss passive and
* once to optionss once.
* 4. Return capture, passive, and once.
*/
var capture = eventTarget_flatten(options);
var once = false;
var passive = false;
if (!util_1.isBoolean(options)) {
once = options.once || false;
passive = options.passive || false;
}
return [capture, passive, once];
}
exports.eventTarget_flattenMore = eventTarget_flattenMore;
/**
* Adds a new event listener.
*
* @param eventTarget - event target
* @param listener - event listener
*/
function eventTarget_addEventListener(eventTarget, listener) {
/**
* 1. If eventTarget is a ServiceWorkerGlobalScope object, its service
* workers script resources has ever been evaluated flag is set, and
* listeners type matches the type attribute value of any of the service
* worker events, then report a warning to the console that this might not
* give the expected results. [SERVICE-WORKERS]
*/
// TODO: service worker
/**
* 2. If listeners callback is null, then return.
*/
if (listener.callback === null)
return;
/**
* 3. If eventTargets event listener list does not contain an event listener
* whose type is listeners type, callback is listeners callback, and capture
* is listeners capture, then append listener to eventTargets event listener
* list.
*/
for (var i = 0; i < eventTarget._eventListenerList.length; i++) {
var entry = eventTarget._eventListenerList[i];
if (entry.type === listener.type && entry.callback.handleEvent === listener.callback.handleEvent
&& entry.capture === listener.capture) {
return;
}
}
eventTarget._eventListenerList.push(listener);
}
exports.eventTarget_addEventListener = eventTarget_addEventListener;
/**
* Removes an event listener.
*
* @param eventTarget - event target
* @param listener - event listener
*/
function eventTarget_removeEventListener(eventTarget, listener, index) {
/**
* 1. If eventTarget is a ServiceWorkerGlobalScope object and its service
* workers set of event types to handle contains type, then report a
* warning to the console that this might not give the expected results.
* [SERVICE-WORKERS]
*/
// TODO: service worker
/**
* 2. Set listeners removed to true and remove listener from eventTargets
* event listener list.
*/
listener.removed = true;
eventTarget._eventListenerList.splice(index, 1);
}
exports.eventTarget_removeEventListener = eventTarget_removeEventListener;
/**
* Removes all event listeners.
*
* @param eventTarget - event target
*/
function eventTarget_removeAllEventListeners(eventTarget) {
/**
* To remove all event listeners, given an EventTarget object eventTarget,
* for each listener of eventTargets event listener list, remove an event
* listener with eventTarget and listener.
*/
var e_1, _a;
try {
for (var _b = __values(eventTarget._eventListenerList), _c = _b.next(); !_c.done; _c = _b.next()) {
var e = _c.value;
e.removed = true;
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
eventTarget._eventListenerList.length = 0;
}
exports.eventTarget_removeAllEventListeners = eventTarget_removeAllEventListeners;
//# sourceMappingURL=EventTargetAlgorithm.js.map
/***/ }),
/* 107 */,
/* 108 */,
/* 109 */,
/* 110 */,
/* 111 */,
/* 112 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var ObjectReader_1 = __webpack_require__(50);
var BaseReader_1 = __webpack_require__(305);
/**
* Parses XML nodes from a JSON string.
*/
var JSONReader = /** @class */ (function (_super) {
__extends(JSONReader, _super);
function JSONReader() {
return _super !== null && _super.apply(this, arguments) || this;
}
/**
* Parses the given document representation.
*
* @param node - node receive parsed XML nodes
* @param str - JSON string to parse
*/
JSONReader.prototype._parse = function (node, str) {
return new ObjectReader_1.ObjectReader(this._builderOptions).parse(node, JSON.parse(str));
};
return JSONReader;
}(BaseReader_1.BaseReader));
exports.JSONReader = JSONReader;
//# sourceMappingURL=JSONReader.js.map
/***/ }),
/* 113 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var util_1 = __webpack_require__(592);
// Import implementation classes
var AbortControllerImpl_1 = __webpack_require__(990);
exports.AbortController = AbortControllerImpl_1.AbortControllerImpl;
var AbortSignalImpl_1 = __webpack_require__(784);
exports.AbortSignal = AbortSignalImpl_1.AbortSignalImpl;
var AbstractRangeImpl_1 = __webpack_require__(413);
exports.AbstractRange = AbstractRangeImpl_1.AbstractRangeImpl;
var AttrImpl_1 = __webpack_require__(866);
exports.Attr = AttrImpl_1.AttrImpl;
var CDATASectionImpl_1 = __webpack_require__(920);
exports.CDATASection = CDATASectionImpl_1.CDATASectionImpl;
var CharacterDataImpl_1 = __webpack_require__(43);
exports.CharacterData = CharacterDataImpl_1.CharacterDataImpl;
var ChildNodeImpl_1 = __webpack_require__(983);
var CommentImpl_1 = __webpack_require__(760);
exports.Comment = CommentImpl_1.CommentImpl;
var CustomEventImpl_1 = __webpack_require__(164);
exports.CustomEvent = CustomEventImpl_1.CustomEventImpl;
var DocumentFragmentImpl_1 = __webpack_require__(796);
exports.DocumentFragment = DocumentFragmentImpl_1.DocumentFragmentImpl;
var DocumentImpl_1 = __webpack_require__(488);
exports.Document = DocumentImpl_1.DocumentImpl;
var DocumentOrShadowRootImpl_1 = __webpack_require__(247);
var DocumentTypeImpl_1 = __webpack_require__(558);
exports.DocumentType = DocumentTypeImpl_1.DocumentTypeImpl;
var DOMImpl_1 = __webpack_require__(648);
exports.dom = DOMImpl_1.dom;
var DOMImplementationImpl_1 = __webpack_require__(174);
exports.DOMImplementation = DOMImplementationImpl_1.DOMImplementationImpl;
var DOMTokenListImpl_1 = __webpack_require__(425);
exports.DOMTokenList = DOMTokenListImpl_1.DOMTokenListImpl;
var ElementImpl_1 = __webpack_require__(695);
exports.Element = ElementImpl_1.ElementImpl;
var EventImpl_1 = __webpack_require__(427);
exports.Event = EventImpl_1.EventImpl;
var EventTargetImpl_1 = __webpack_require__(597);
exports.EventTarget = EventTargetImpl_1.EventTargetImpl;
var HTMLCollectionImpl_1 = __webpack_require__(204);
exports.HTMLCollection = HTMLCollectionImpl_1.HTMLCollectionImpl;
var MutationObserverImpl_1 = __webpack_require__(175);
exports.MutationObserver = MutationObserverImpl_1.MutationObserverImpl;
var MutationRecordImpl_1 = __webpack_require__(730);
exports.MutationRecord = MutationRecordImpl_1.MutationRecordImpl;
var NamedNodeMapImpl_1 = __webpack_require__(88);
exports.NamedNodeMap = NamedNodeMapImpl_1.NamedNodeMapImpl;
var NodeFilterImpl_1 = __webpack_require__(774);
exports.NodeFilter = NodeFilterImpl_1.NodeFilterImpl;
var NodeImpl_1 = __webpack_require__(935);
exports.Node = NodeImpl_1.NodeImpl;
var NodeIteratorImpl_1 = __webpack_require__(800);
exports.NodeIterator = NodeIteratorImpl_1.NodeIteratorImpl;
var NodeListImpl_1 = __webpack_require__(636);
exports.NodeList = NodeListImpl_1.NodeListImpl;
var NodeListStaticImpl_1 = __webpack_require__(266);
exports.NodeListStatic = NodeListStaticImpl_1.NodeListStaticImpl;
var NonDocumentTypeChildNodeImpl_1 = __webpack_require__(18);
var NonElementParentNodeImpl_1 = __webpack_require__(574);
var ParentNodeImpl_1 = __webpack_require__(934);
var ProcessingInstructionImpl_1 = __webpack_require__(619);
exports.ProcessingInstruction = ProcessingInstructionImpl_1.ProcessingInstructionImpl;
var RangeImpl_1 = __webpack_require__(90);
exports.Range = RangeImpl_1.RangeImpl;
var ShadowRootImpl_1 = __webpack_require__(581);
exports.ShadowRoot = ShadowRootImpl_1.ShadowRootImpl;
var SlotableImpl_1 = __webpack_require__(429);
var StaticRangeImpl_1 = __webpack_require__(688);
exports.StaticRange = StaticRangeImpl_1.StaticRangeImpl;
var TextImpl_1 = __webpack_require__(820);
exports.Text = TextImpl_1.TextImpl;
var TraverserImpl_1 = __webpack_require__(487);
exports.Traverser = TraverserImpl_1.TraverserImpl;
var TreeWalkerImpl_1 = __webpack_require__(646);
exports.TreeWalker = TreeWalkerImpl_1.TreeWalkerImpl;
var WindowImpl_1 = __webpack_require__(932);
exports.Window = WindowImpl_1.WindowImpl;
var XMLDocumentImpl_1 = __webpack_require__(661);
exports.XMLDocument = XMLDocumentImpl_1.XMLDocumentImpl;
// Apply mixins
// ChildNode
util_1.applyMixin(ElementImpl_1.ElementImpl, ChildNodeImpl_1.ChildNodeImpl);
util_1.applyMixin(CharacterDataImpl_1.CharacterDataImpl, ChildNodeImpl_1.ChildNodeImpl);
util_1.applyMixin(DocumentTypeImpl_1.DocumentTypeImpl, ChildNodeImpl_1.ChildNodeImpl);
// DocumentOrShadowRoot
util_1.applyMixin(DocumentImpl_1.DocumentImpl, DocumentOrShadowRootImpl_1.DocumentOrShadowRootImpl);
util_1.applyMixin(ShadowRootImpl_1.ShadowRootImpl, DocumentOrShadowRootImpl_1.DocumentOrShadowRootImpl);
// NonDocumentTypeChildNode
util_1.applyMixin(ElementImpl_1.ElementImpl, NonDocumentTypeChildNodeImpl_1.NonDocumentTypeChildNodeImpl);
util_1.applyMixin(CharacterDataImpl_1.CharacterDataImpl, NonDocumentTypeChildNodeImpl_1.NonDocumentTypeChildNodeImpl);
// NonElementParentNode
util_1.applyMixin(DocumentImpl_1.DocumentImpl, NonElementParentNodeImpl_1.NonElementParentNodeImpl);
util_1.applyMixin(DocumentFragmentImpl_1.DocumentFragmentImpl, NonElementParentNodeImpl_1.NonElementParentNodeImpl);
// ParentNode
util_1.applyMixin(DocumentImpl_1.DocumentImpl, ParentNodeImpl_1.ParentNodeImpl);
util_1.applyMixin(DocumentFragmentImpl_1.DocumentFragmentImpl, ParentNodeImpl_1.ParentNodeImpl);
util_1.applyMixin(ElementImpl_1.ElementImpl, ParentNodeImpl_1.ParentNodeImpl);
// Slotable
util_1.applyMixin(TextImpl_1.TextImpl, SlotableImpl_1.SlotableImpl);
util_1.applyMixin(ElementImpl_1.ElementImpl, SlotableImpl_1.SlotableImpl);
//# sourceMappingURL=index.js.map
/***/ }),
/* 114 */,
/* 115 */,
/* 116 */,
/* 117 */,
/* 118 */,
/* 119 */,
/* 120 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const compareBuild = __webpack_require__(16)
const sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))
module.exports = sort
/***/ }),
/* 121 */,
/* 122 */,
/* 123 */,
/* 124 */
/***/ (function(module, __unusedexports, __webpack_require__) {
// hoisted class for cyclic dependency
class Range {
constructor (range, options) {
options = parseOptions(options)
if (range instanceof Range) {
if (
range.loose === !!options.loose &&
range.includePrerelease === !!options.includePrerelease
) {
return range
} else {
return new Range(range.raw, options)
}
}
if (range instanceof Comparator) {
// just put it in the set and return
this.raw = range.value
this.set = [[range]]
this.format()
return this
}
this.options = options
this.loose = !!options.loose
this.includePrerelease = !!options.includePrerelease
// First, split based on boolean or ||
this.raw = range
this.set = range
.split(/\s*\|\|\s*/)
// map the range to a 2d array of comparators
.map(range => this.parseRange(range.trim()))
// throw out any comparator lists that are empty
// this generally means that it was not a valid range, which is allowed
// in loose mode, but will still throw if the WHOLE range is invalid.
.filter(c => c.length)
if (!this.set.length) {
throw new TypeError(`Invalid SemVer Range: ${range}`)
}
// if we have any that are not the null set, throw out null sets.
if (this.set.length > 1) {
// keep the first one, in case they're all null sets
const first = this.set[0]
this.set = this.set.filter(c => !isNullSet(c[0]))
if (this.set.length === 0)
this.set = [first]
else if (this.set.length > 1) {
// if we have any that are *, then the range is just *
for (const c of this.set) {
if (c.length === 1 && isAny(c[0])) {
this.set = [c]
break
}
}
}
}
this.format()
}
format () {
this.range = this.set
.map((comps) => {
return comps.join(' ').trim()
})
.join('||')
.trim()
return this.range
}
toString () {
return this.range
}
parseRange (range) {
range = range.trim()
// memoize range parsing for performance.
// this is a very hot path, and fully deterministic.
const memoOpts = Object.keys(this.options).join(',')
const memoKey = `parseRange:${memoOpts}:${range}`
const cached = cache.get(memoKey)
if (cached)
return cached
const loose = this.options.loose
// `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]
range = range.replace(hr, hyphenReplace(this.options.includePrerelease))
debug('hyphen replace', range)
// `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)
debug('comparator trim', range, re[t.COMPARATORTRIM])
// `~ 1.2.3` => `~1.2.3`
range = range.replace(re[t.TILDETRIM], tildeTrimReplace)
// `^ 1.2.3` => `^1.2.3`
range = range.replace(re[t.CARETTRIM], caretTrimReplace)
// normalize spaces
range = range.split(/\s+/).join(' ')
// At this point, the range is completely trimmed and
// ready to be split into comparators.
const compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]
const rangeList = range
.split(' ')
.map(comp => parseComparator(comp, this.options))
.join(' ')
.split(/\s+/)
// >=0.0.0 is equivalent to *
.map(comp => replaceGTE0(comp, this.options))
// in loose mode, throw out any that are not valid comparators
.filter(this.options.loose ? comp => !!comp.match(compRe) : () => true)
.map(comp => new Comparator(comp, this.options))
// if any comparators are the null set, then replace with JUST null set
// if more than one comparator, remove any * comparators
// also, don't include the same comparator more than once
const l = rangeList.length
const rangeMap = new Map()
for (const comp of rangeList) {
if (isNullSet(comp))
return [comp]
rangeMap.set(comp.value, comp)
}
if (rangeMap.size > 1 && rangeMap.has(''))
rangeMap.delete('')
const result = [...rangeMap.values()]
cache.set(memoKey, result)
return result
}
intersects (range, options) {
if (!(range instanceof Range)) {
throw new TypeError('a Range is required')
}
return this.set.some((thisComparators) => {
return (
isSatisfiable(thisComparators, options) &&
range.set.some((rangeComparators) => {
return (
isSatisfiable(rangeComparators, options) &&
thisComparators.every((thisComparator) => {
return rangeComparators.every((rangeComparator) => {
return thisComparator.intersects(rangeComparator, options)
})
})
)
})
)
})
}
// if ANY of the sets match ALL of its comparators, then pass
test (version) {
if (!version) {
return false
}
if (typeof version === 'string') {
try {
version = new SemVer(version, this.options)
} catch (er) {
return false
}
}
for (let i = 0; i < this.set.length; i++) {
if (testSet(this.set[i], version, this.options)) {
return true
}
}
return false
}
}
module.exports = Range
const LRU = __webpack_require__(702)
const cache = new LRU({ max: 1000 })
const parseOptions = __webpack_require__(143)
const Comparator = __webpack_require__(536)
const debug = __webpack_require__(548)
const SemVer = __webpack_require__(65)
const {
re,
t,
comparatorTrimReplace,
tildeTrimReplace,
caretTrimReplace
} = __webpack_require__(976)
const isNullSet = c => c.value === '<0.0.0-0'
const isAny = c => c.value === ''
// take a set of comparators and determine whether there
// exists a version which can satisfy it
const isSatisfiable = (comparators, options) => {
let result = true
const remainingComparators = comparators.slice()
let testComparator = remainingComparators.pop()
while (result && remainingComparators.length) {
result = remainingComparators.every((otherComparator) => {
return testComparator.intersects(otherComparator, options)
})
testComparator = remainingComparators.pop()
}
return result
}
// comprised of xranges, tildes, stars, and gtlt's at this point.
// already replaced the hyphen ranges
// turn into a set of JUST comparators.
const parseComparator = (comp, options) => {
debug('comp', comp, options)
comp = replaceCarets(comp, options)
debug('caret', comp)
comp = replaceTildes(comp, options)
debug('tildes', comp)
comp = replaceXRanges(comp, options)
debug('xrange', comp)
comp = replaceStars(comp, options)
debug('stars', comp)
return comp
}
const isX = id => !id || id.toLowerCase() === 'x' || id === '*'
// ~, ~> --> * (any, kinda silly)
// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0
// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0
// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0
// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0
// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0
const replaceTildes = (comp, options) =>
comp.trim().split(/\s+/).map((comp) => {
return replaceTilde(comp, options)
}).join(' ')
const replaceTilde = (comp, options) => {
const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]
return comp.replace(r, (_, M, m, p, pr) => {
debug('tilde', comp, _, M, m, p, pr)
let ret
if (isX(M)) {
ret = ''
} else if (isX(m)) {
ret = `>=${M}.0.0 <${+M + 1}.0.0-0`
} else if (isX(p)) {
// ~1.2 == >=1.2.0 <1.3.0-0
ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`
} else if (pr) {
debug('replaceTilde pr', pr)
ret = `>=${M}.${m}.${p}-${pr
} <${M}.${+m + 1}.0-0`
} else {
// ~1.2.3 == >=1.2.3 <1.3.0-0
ret = `>=${M}.${m}.${p
} <${M}.${+m + 1}.0-0`
}
debug('tilde return', ret)
return ret
})
}
// ^ --> * (any, kinda silly)
// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0
// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0
// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0
// ^1.2.3 --> >=1.2.3 <2.0.0-0
// ^1.2.0 --> >=1.2.0 <2.0.0-0
const replaceCarets = (comp, options) =>
comp.trim().split(/\s+/).map((comp) => {
return replaceCaret(comp, options)
}).join(' ')
const replaceCaret = (comp, options) => {
debug('caret', comp, options)
const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]
const z = options.includePrerelease ? '-0' : ''
return comp.replace(r, (_, M, m, p, pr) => {
debug('caret', comp, _, M, m, p, pr)
let ret
if (isX(M)) {
ret = ''
} else if (isX(m)) {
ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`
} else if (isX(p)) {
if (M === '0') {
ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`
} else {
ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`
}
} else if (pr) {
debug('replaceCaret pr', pr)
if (M === '0') {
if (m === '0') {
ret = `>=${M}.${m}.${p}-${pr
} <${M}.${m}.${+p + 1}-0`
} else {
ret = `>=${M}.${m}.${p}-${pr
} <${M}.${+m + 1}.0-0`
}
} else {
ret = `>=${M}.${m}.${p}-${pr
} <${+M + 1}.0.0-0`
}
} else {
debug('no pr')
if (M === '0') {
if (m === '0') {
ret = `>=${M}.${m}.${p
}${z} <${M}.${m}.${+p + 1}-0`
} else {
ret = `>=${M}.${m}.${p
}${z} <${M}.${+m + 1}.0-0`
}
} else {
ret = `>=${M}.${m}.${p
} <${+M + 1}.0.0-0`
}
}
debug('caret return', ret)
return ret
})
}
const replaceXRanges = (comp, options) => {
debug('replaceXRanges', comp, options)
return comp.split(/\s+/).map((comp) => {
return replaceXRange(comp, options)
}).join(' ')
}
const replaceXRange = (comp, options) => {
comp = comp.trim()
const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]
return comp.replace(r, (ret, gtlt, M, m, p, pr) => {
debug('xRange', comp, ret, gtlt, M, m, p, pr)
const xM = isX(M)
const xm = xM || isX(m)
const xp = xm || isX(p)
const anyX = xp
if (gtlt === '=' && anyX) {
gtlt = ''
}
// if we're including prereleases in the match, then we need
// to fix this to -0, the lowest possible prerelease value
pr = options.includePrerelease ? '-0' : ''
if (xM) {
if (gtlt === '>' || gtlt === '<') {
// nothing is allowed
ret = '<0.0.0-0'
} else {
// nothing is forbidden
ret = '*'
}
} else if (gtlt && anyX) {
// we know patch is an x, because we have any x at all.
// replace X with 0
if (xm) {
m = 0
}
p = 0
if (gtlt === '>') {
// >1 => >=2.0.0
// >1.2 => >=1.3.0
gtlt = '>='
if (xm) {
M = +M + 1
m = 0
p = 0
} else {
m = +m + 1
p = 0
}
} else if (gtlt === '<=') {
// <=0.7.x is actually <0.8.0, since any 0.7.x should
// pass. Similarly, <=7.x is actually <8.0.0, etc.
gtlt = '<'
if (xm) {
M = +M + 1
} else {
m = +m + 1
}
}
if (gtlt === '<')
pr = '-0'
ret = `${gtlt + M}.${m}.${p}${pr}`
} else if (xm) {
ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`
} else if (xp) {
ret = `>=${M}.${m}.0${pr
} <${M}.${+m + 1}.0-0`
}
debug('xRange return', ret)
return ret
})
}
// Because * is AND-ed with everything else in the comparator,
// and '' means "any version", just remove the *s entirely.
const replaceStars = (comp, options) => {
debug('replaceStars', comp, options)
// Looseness is ignored here. star is always as loose as it gets!
return comp.trim().replace(re[t.STAR], '')
}
const replaceGTE0 = (comp, options) => {
debug('replaceGTE0', comp, options)
return comp.trim()
.replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')
}
// This function is passed to string.replace(re[t.HYPHENRANGE])
// M, m, patch, prerelease, build
// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do
// 1.2 - 3.4 => >=1.2.0 <3.5.0-0
const hyphenReplace = incPr => ($0,
from, fM, fm, fp, fpr, fb,
to, tM, tm, tp, tpr, tb) => {
if (isX(fM)) {
from = ''
} else if (isX(fm)) {
from = `>=${fM}.0.0${incPr ? '-0' : ''}`
} else if (isX(fp)) {
from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`
} else if (fpr) {
from = `>=${from}`
} else {
from = `>=${from}${incPr ? '-0' : ''}`
}
if (isX(tM)) {
to = ''
} else if (isX(tm)) {
to = `<${+tM + 1}.0.0-0`
} else if (isX(tp)) {
to = `<${tM}.${+tm + 1}.0-0`
} else if (tpr) {
to = `<=${tM}.${tm}.${tp}-${tpr}`
} else if (incPr) {
to = `<${tM}.${tm}.${+tp + 1}-0`
} else {
to = `<=${to}`
}
return (`${from} ${to}`).trim()
}
const testSet = (set, version, options) => {
for (let i = 0; i < set.length; i++) {
if (!set[i].test(version)) {
return false
}
}
if (version.prerelease.length && !options.includePrerelease) {
// Find the set of versions that are allowed to have prereleases
// For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
// That should allow `1.2.3-pr.2` to pass.
// However, `1.2.4-alpha.notready` should NOT be allowed,
// even though it's within the range set by the comparators.
for (let i = 0; i < set.length; i++) {
debug(set[i].semver)
if (set[i].semver === Comparator.ANY) {
continue
}
if (set[i].semver.prerelease.length > 0) {
const allowed = set[i].semver
if (allowed.major === version.major &&
allowed.minor === version.minor &&
allowed.patch === version.patch) {
return true
}
}
}
// Version has a -pre, but it's not one of the ones we like.
return false
}
return true
}
/***/ }),
/* 125 */,
/* 126 */,
/* 127 */,
/* 128 */,
/* 129 */
/***/ (function(module) {
module.exports = require("child_process");
/***/ }),
/* 130 */,
/* 131 */,
/* 132 */,
/* 133 */,
/* 134 */
/***/ (function(__unusedmodule, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Pushes the given item to the stack.
*
* @param list - a list
* @param item - an item
*/
function push(list, item) {
list.push(item);
}
exports.push = push;
/**
* Pops and returns an item from the stack.
*
* @param list - a list
*/
function pop(list) {
return list.pop() || null;
}
exports.pop = pop;
//# sourceMappingURL=Stack.js.map
/***/ }),
/* 135 */,
/* 136 */,
/* 137 */,
/* 138 */,
/* 139 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const core = __importStar(__webpack_require__(470));
const io = __importStar(__webpack_require__(1));
const fs = __importStar(__webpack_require__(747));
const mm = __importStar(__webpack_require__(31));
const os = __importStar(__webpack_require__(87));
const path = __importStar(__webpack_require__(622));
const httpm = __importStar(__webpack_require__(539));
const semver = __importStar(__webpack_require__(550));
const stream = __importStar(__webpack_require__(794));
const util = __importStar(__webpack_require__(669));
const v4_1 = __importDefault(__webpack_require__(494));
const exec_1 = __webpack_require__(986);
const assert_1 = __webpack_require__(357);
const retry_helper_1 = __webpack_require__(979);
class HTTPError extends Error {
constructor(httpStatusCode) {
super(`Unexpected HTTP response: ${httpStatusCode}`);
this.httpStatusCode = httpStatusCode;
Object.setPrototypeOf(this, new.target.prototype);
}
}
exports.HTTPError = HTTPError;
const IS_WINDOWS = process.platform === 'win32';
const IS_MAC = process.platform === 'darwin';
const userAgent = 'actions/tool-cache';
/**
* Download a tool from an url and stream it into a file
*
* @param url url of tool to download
* @param dest path to download tool
* @param auth authorization header
* @returns path to downloaded tool
*/
function downloadTool(url, dest, auth) {
return __awaiter(this, void 0, void 0, function* () {
dest = dest || path.join(_getTempDirectory(), v4_1.default());
yield io.mkdirP(path.dirname(dest));
core.debug(`Downloading ${url}`);
core.debug(`Destination ${dest}`);
const maxAttempts = 3;
const minSeconds = _getGlobal('TEST_DOWNLOAD_TOOL_RETRY_MIN_SECONDS', 10);
const maxSeconds = _getGlobal('TEST_DOWNLOAD_TOOL_RETRY_MAX_SECONDS', 20);
const retryHelper = new retry_helper_1.RetryHelper(maxAttempts, minSeconds, maxSeconds);
return yield retryHelper.execute(() => __awaiter(this, void 0, void 0, function* () {
return yield downloadToolAttempt(url, dest || '', auth);
}), (err) => {
if (err instanceof HTTPError && err.httpStatusCode) {
// Don't retry anything less than 500, except 408 Request Timeout and 429 Too Many Requests
if (err.httpStatusCode < 500 &&
err.httpStatusCode !== 408 &&
err.httpStatusCode !== 429) {
return false;
}
}
// Otherwise retry
return true;
});
});
}
exports.downloadTool = downloadTool;
function downloadToolAttempt(url, dest, auth) {
return __awaiter(this, void 0, void 0, function* () {
if (fs.existsSync(dest)) {
throw new Error(`Destination file path ${dest} already exists`);
}
// Get the response headers
const http = new httpm.HttpClient(userAgent, [], {
allowRetries: false
});
let headers;
if (auth) {
core.debug('set auth');
headers = {
authorization: auth
};
}
const response = yield http.get(url, headers);
if (response.message.statusCode !== 200) {
const err = new HTTPError(response.message.statusCode);
core.debug(`Failed to download from "${url}". Code(${response.message.statusCode}) Message(${response.message.statusMessage})`);
throw err;
}
// Download the response body
const pipeline = util.promisify(stream.pipeline);
const responseMessageFactory = _getGlobal('TEST_DOWNLOAD_TOOL_RESPONSE_MESSAGE_FACTORY', () => response.message);
const readStream = responseMessageFactory();
let succeeded = false;
try {
yield pipeline(readStream, fs.createWriteStream(dest));
core.debug('download complete');
succeeded = true;
return dest;
}
finally {
// Error, delete dest before retry
if (!succeeded) {
core.debug('download failed');
try {
yield io.rmRF(dest);
}
catch (err) {
core.debug(`Failed to delete '${dest}'. ${err.message}`);
}
}
}
});
}
/**
* Extract a .7z file
*
* @param file path to the .7z file
* @param dest destination directory. Optional.
* @param _7zPath path to 7zr.exe. Optional, for long path support. Most .7z archives do not have this
* problem. If your .7z archive contains very long paths, you can pass the path to 7zr.exe which will
* gracefully handle long paths. By default 7zdec.exe is used because it is a very small program and is
* bundled with the tool lib. However it does not support long paths. 7zr.exe is the reduced command line
* interface, it is smaller than the full command line interface, and it does support long paths. At the
* time of this writing, it is freely available from the LZMA SDK that is available on the 7zip website.
* Be sure to check the current license agreement. If 7zr.exe is bundled with your action, then the path
* to 7zr.exe can be pass to this function.
* @returns path to the destination directory
*/
function extract7z(file, dest, _7zPath) {
return __awaiter(this, void 0, void 0, function* () {
assert_1.ok(IS_WINDOWS, 'extract7z() not supported on current OS');
assert_1.ok(file, 'parameter "file" is required');
dest = yield _createExtractFolder(dest);
const originalCwd = process.cwd();
process.chdir(dest);
if (_7zPath) {
try {
const logLevel = core.isDebug() ? '-bb1' : '-bb0';
const args = [
'x',
logLevel,
'-bd',
'-sccUTF-8',
file
];
const options = {
silent: true
};
yield exec_1.exec(`"${_7zPath}"`, args, options);
}
finally {
process.chdir(originalCwd);
}
}
else {
const escapedScript = path
.join(__dirname, '..', 'scripts', 'Invoke-7zdec.ps1')
.replace(/'/g, "''")
.replace(/"|\n|\r/g, ''); // double-up single quotes, remove double quotes and newlines
const escapedFile = file.replace(/'/g, "''").replace(/"|\n|\r/g, '');
const escapedTarget = dest.replace(/'/g, "''").replace(/"|\n|\r/g, '');
const command = `& '${escapedScript}' -Source '${escapedFile}' -Target '${escapedTarget}'`;
const args = [
'-NoLogo',
'-Sta',
'-NoProfile',
'-NonInteractive',
'-ExecutionPolicy',
'Unrestricted',
'-Command',
command
];
const options = {
silent: true
};
try {
const powershellPath = yield io.which('powershell', true);
yield exec_1.exec(`"${powershellPath}"`, args, options);
}
finally {
process.chdir(originalCwd);
}
}
return dest;
});
}
exports.extract7z = extract7z;
/**
* Extract a compressed tar archive
*
* @param file path to the tar
* @param dest destination directory. Optional.
* @param flags flags for the tar command to use for extraction. Defaults to 'xz' (extracting gzipped tars). Optional.
* @returns path to the destination directory
*/
function extractTar(file, dest, flags = 'xz') {
return __awaiter(this, void 0, void 0, function* () {
if (!file) {
throw new Error("parameter 'file' is required");
}
// Create dest
dest = yield _createExtractFolder(dest);
// Determine whether GNU tar
core.debug('Checking tar --version');
let versionOutput = '';
yield exec_1.exec('tar --version', [], {
ignoreReturnCode: true,
silent: true,
listeners: {
stdout: (data) => (versionOutput += data.toString()),
stderr: (data) => (versionOutput += data.toString())
}
});
core.debug(versionOutput.trim());
const isGnuTar = versionOutput.toUpperCase().includes('GNU TAR');
// Initialize args
let args;
if (flags instanceof Array) {
args = flags;
}
else {
args = [flags];
}
if (core.isDebug() && !flags.includes('v')) {
args.push('-v');
}
let destArg = dest;
let fileArg = file;
if (IS_WINDOWS && isGnuTar) {
args.push('--force-local');
destArg = dest.replace(/\\/g, '/');
// Technically only the dest needs to have `/` but for aesthetic consistency
// convert slashes in the file arg too.
fileArg = file.replace(/\\/g, '/');
}
if (isGnuTar) {
// Suppress warnings when using GNU tar to extract archives created by BSD tar
args.push('--warning=no-unknown-keyword');
}
args.push('-C', destArg, '-f', fileArg);
yield exec_1.exec(`tar`, args);
return dest;
});
}
exports.extractTar = extractTar;
/**
* Extract a xar compatible archive
*
* @param file path to the archive
* @param dest destination directory. Optional.
* @param flags flags for the xar. Optional.
* @returns path to the destination directory
*/
function extractXar(file, dest, flags = []) {
return __awaiter(this, void 0, void 0, function* () {
assert_1.ok(IS_MAC, 'extractXar() not supported on current OS');
assert_1.ok(file, 'parameter "file" is required');
dest = yield _createExtractFolder(dest);
let args;
if (flags instanceof Array) {
args = flags;
}
else {
args = [flags];
}
args.push('-x', '-C', dest, '-f', file);
if (core.isDebug()) {
args.push('-v');
}
const xarPath = yield io.which('xar', true);
yield exec_1.exec(`"${xarPath}"`, _unique(args));
return dest;
});
}
exports.extractXar = extractXar;
/**
* Extract a zip
*
* @param file path to the zip
* @param dest destination directory. Optional.
* @returns path to the destination directory
*/
function extractZip(file, dest) {
return __awaiter(this, void 0, void 0, function* () {
if (!file) {
throw new Error("parameter 'file' is required");
}
dest = yield _createExtractFolder(dest);
if (IS_WINDOWS) {
yield extractZipWin(file, dest);
}
else {
yield extractZipNix(file, dest);
}
return dest;
});
}
exports.extractZip = extractZip;
function extractZipWin(file, dest) {
return __awaiter(this, void 0, void 0, function* () {
// build the powershell command
const escapedFile = file.replace(/'/g, "''").replace(/"|\n|\r/g, ''); // double-up single quotes, remove double quotes and newlines
const escapedDest = dest.replace(/'/g, "''").replace(/"|\n|\r/g, '');
const command = `$ErrorActionPreference = 'Stop' ; try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { } ; [System.IO.Compression.ZipFile]::ExtractToDirectory('${escapedFile}', '${escapedDest}')`;
// run powershell
const powershellPath = yield io.which('powershell', true);
const args = [
'-NoLogo',
'-Sta',
'-NoProfile',
'-NonInteractive',
'-ExecutionPolicy',
'Unrestricted',
'-Command',
command
];
yield exec_1.exec(`"${powershellPath}"`, args);
});
}
function extractZipNix(file, dest) {
return __awaiter(this, void 0, void 0, function* () {
const unzipPath = yield io.which('unzip', true);
const args = [file];
if (!core.isDebug()) {
args.unshift('-q');
}
yield exec_1.exec(`"${unzipPath}"`, args, { cwd: dest });
});
}
/**
* Caches a directory and installs it into the tool cacheDir
*
* @param sourceDir the directory to cache into tools
* @param tool tool name
* @param version version of the tool. semver format
* @param arch architecture of the tool. Optional. Defaults to machine architecture
*/
function cacheDir(sourceDir, tool, version, arch) {
return __awaiter(this, void 0, void 0, function* () {
version = semver.clean(version) || version;
arch = arch || os.arch();
core.debug(`Caching tool ${tool} ${version} ${arch}`);
core.debug(`source dir: ${sourceDir}`);
if (!fs.statSync(sourceDir).isDirectory()) {
throw new Error('sourceDir is not a directory');
}
// Create the tool dir
const destPath = yield _createToolPath(tool, version, arch);
// copy each child item. do not move. move can fail on Windows
// due to anti-virus software having an open handle on a file.
for (const itemName of fs.readdirSync(sourceDir)) {
const s = path.join(sourceDir, itemName);
yield io.cp(s, destPath, { recursive: true });
}
// write .complete
_completeToolPath(tool, version, arch);
return destPath;
});
}
exports.cacheDir = cacheDir;
/**
* Caches a downloaded file (GUID) and installs it
* into the tool cache with a given targetName
*
* @param sourceFile the file to cache into tools. Typically a result of downloadTool which is a guid.
* @param targetFile the name of the file name in the tools directory
* @param tool tool name
* @param version version of the tool. semver format
* @param arch architecture of the tool. Optional. Defaults to machine architecture
*/
function cacheFile(sourceFile, targetFile, tool, version, arch) {
return __awaiter(this, void 0, void 0, function* () {
version = semver.clean(version) || version;
arch = arch || os.arch();
core.debug(`Caching tool ${tool} ${version} ${arch}`);
core.debug(`source file: ${sourceFile}`);
if (!fs.statSync(sourceFile).isFile()) {
throw new Error('sourceFile is not a file');
}
// create the tool dir
const destFolder = yield _createToolPath(tool, version, arch);
// copy instead of move. move can fail on Windows due to
// anti-virus software having an open handle on a file.
const destPath = path.join(destFolder, targetFile);
core.debug(`destination file ${destPath}`);
yield io.cp(sourceFile, destPath);
// write .complete
_completeToolPath(tool, version, arch);
return destFolder;
});
}
exports.cacheFile = cacheFile;
/**
* Finds the path to a tool version in the local installed tool cache
*
* @param toolName name of the tool
* @param versionSpec version of the tool
* @param arch optional arch. defaults to arch of computer
*/
function find(toolName, versionSpec, arch) {
if (!toolName) {
throw new Error('toolName parameter is required');
}
if (!versionSpec) {
throw new Error('versionSpec parameter is required');
}
arch = arch || os.arch();
// attempt to resolve an explicit version
if (!_isExplicitVersion(versionSpec)) {
const localVersions = findAllVersions(toolName, arch);
const match = _evaluateVersions(localVersions, versionSpec);
versionSpec = match;
}
// check for the explicit version in the cache
let toolPath = '';
if (versionSpec) {
versionSpec = semver.clean(versionSpec) || '';
const cachePath = path.join(_getCacheDirectory(), toolName, versionSpec, arch);
core.debug(`checking cache: ${cachePath}`);
if (fs.existsSync(cachePath) && fs.existsSync(`${cachePath}.complete`)) {
core.debug(`Found tool in cache ${toolName} ${versionSpec} ${arch}`);
toolPath = cachePath;
}
else {
core.debug('not found');
}
}
return toolPath;
}
exports.find = find;
/**
* Finds the paths to all versions of a tool that are installed in the local tool cache
*
* @param toolName name of the tool
* @param arch optional arch. defaults to arch of computer
*/
function findAllVersions(toolName, arch) {
const versions = [];
arch = arch || os.arch();
const toolPath = path.join(_getCacheDirectory(), toolName);
if (fs.existsSync(toolPath)) {
const children = fs.readdirSync(toolPath);
for (const child of children) {
if (_isExplicitVersion(child)) {
const fullPath = path.join(toolPath, child, arch || '');
if (fs.existsSync(fullPath) && fs.existsSync(`${fullPath}.complete`)) {
versions.push(child);
}
}
}
}
return versions;
}
exports.findAllVersions = findAllVersions;
function getManifestFromRepo(owner, repo, auth, branch = 'master') {
return __awaiter(this, void 0, void 0, function* () {
let releases = [];
const treeUrl = `https://api.github.com/repos/${owner}/${repo}/git/trees/${branch}`;
const http = new httpm.HttpClient('tool-cache');
const headers = {};
if (auth) {
core.debug('set auth');
headers.authorization = auth;
}
const response = yield http.getJson(treeUrl, headers);
if (!response.result) {
return releases;
}
let manifestUrl = '';
for (const item of response.result.tree) {
if (item.path === 'versions-manifest.json') {
manifestUrl = item.url;
break;
}
}
headers['accept'] = 'application/vnd.github.VERSION.raw';
let versionsRaw = yield (yield http.get(manifestUrl, headers)).readBody();
if (versionsRaw) {
// shouldn't be needed but protects against invalid json saved with BOM
versionsRaw = versionsRaw.replace(/^\uFEFF/, '');
try {
releases = JSON.parse(versionsRaw);
}
catch (_a) {
core.debug('Invalid json');
}
}
return releases;
});
}
exports.getManifestFromRepo = getManifestFromRepo;
function findFromManifest(versionSpec, stable, manifest, archFilter = os.arch()) {
return __awaiter(this, void 0, void 0, function* () {
// wrap the internal impl
const match = yield mm._findMatch(versionSpec, stable, manifest, archFilter);
return match;
});
}
exports.findFromManifest = findFromManifest;
function _createExtractFolder(dest) {
return __awaiter(this, void 0, void 0, function* () {
if (!dest) {
// create a temp dir
dest = path.join(_getTempDirectory(), v4_1.default());
}
yield io.mkdirP(dest);
return dest;
});
}
function _createToolPath(tool, version, arch) {
return __awaiter(this, void 0, void 0, function* () {
const folderPath = path.join(_getCacheDirectory(), tool, semver.clean(version) || version, arch || '');
core.debug(`destination ${folderPath}`);
const markerPath = `${folderPath}.complete`;
yield io.rmRF(folderPath);
yield io.rmRF(markerPath);
yield io.mkdirP(folderPath);
return folderPath;
});
}
function _completeToolPath(tool, version, arch) {
const folderPath = path.join(_getCacheDirectory(), tool, semver.clean(version) || version, arch || '');
const markerPath = `${folderPath}.complete`;
fs.writeFileSync(markerPath, '');
core.debug('finished caching tool');
}
function _isExplicitVersion(versionSpec) {
const c = semver.clean(versionSpec) || '';
core.debug(`isExplicit: ${c}`);
const valid = semver.valid(c) != null;
core.debug(`explicit? ${valid}`);
return valid;
}
function _evaluateVersions(versions, versionSpec) {
let version = '';
core.debug(`evaluating ${versions.length} versions`);
versions = versions.sort((a, b) => {
if (semver.gt(a, b)) {
return 1;
}
return -1;
});
for (let i = versions.length - 1; i >= 0; i--) {
const potential = versions[i];
const satisfied = semver.satisfies(potential, versionSpec);
if (satisfied) {
version = potential;
break;
}
}
if (version) {
core.debug(`matched: ${version}`);
}
else {
core.debug('match not found');
}
return version;
}
/**
* Gets RUNNER_TOOL_CACHE
*/
function _getCacheDirectory() {
const cacheDirectory = process.env['RUNNER_TOOL_CACHE'] || '';
assert_1.ok(cacheDirectory, 'Expected RUNNER_TOOL_CACHE to be defined');
return cacheDirectory;
}
/**
* Gets RUNNER_TEMP
*/
function _getTempDirectory() {
const tempDirectory = process.env['RUNNER_TEMP'] || '';
assert_1.ok(tempDirectory, 'Expected RUNNER_TEMP to be defined');
return tempDirectory;
}
/**
* Gets a global variable
*/
function _getGlobal(key, defaultValue) {
/* eslint-disable @typescript-eslint/no-explicit-any */
const value = global[key];
/* eslint-enable @typescript-eslint/no-explicit-any */
return value !== undefined ? value : defaultValue;
}
/**
* Returns an array of unique values.
* @param values Values to make unique.
*/
function _unique(values) {
return Array.from(new Set(values));
}
//# sourceMappingURL=tool-cache.js.map
/***/ }),
/* 140 */,
/* 141 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var net = __webpack_require__(631);
var tls = __webpack_require__(818);
var http = __webpack_require__(605);
var https = __webpack_require__(34);
var events = __webpack_require__(614);
var assert = __webpack_require__(357);
var util = __webpack_require__(669);
exports.httpOverHttp = httpOverHttp;
exports.httpsOverHttp = httpsOverHttp;
exports.httpOverHttps = httpOverHttps;
exports.httpsOverHttps = httpsOverHttps;
function httpOverHttp(options) {
var agent = new TunnelingAgent(options);
agent.request = http.request;
return agent;
}
function httpsOverHttp(options) {
var agent = new TunnelingAgent(options);
agent.request = http.request;
agent.createSocket = createSecureSocket;
agent.defaultPort = 443;
return agent;
}
function httpOverHttps(options) {
var agent = new TunnelingAgent(options);
agent.request = https.request;
return agent;
}
function httpsOverHttps(options) {
var agent = new TunnelingAgent(options);
agent.request = https.request;
agent.createSocket = createSecureSocket;
agent.defaultPort = 443;
return agent;
}
function TunnelingAgent(options) {
var self = this;
self.options = options || {};
self.proxyOptions = self.options.proxy || {};
self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets;
self.requests = [];
self.sockets = [];
self.on('free', function onFree(socket, host, port, localAddress) {
var options = toOptions(host, port, localAddress);
for (var i = 0, len = self.requests.length; i < len; ++i) {
var pending = self.requests[i];
if (pending.host === options.host && pending.port === options.port) {
// Detect the request to connect same origin server,
// reuse the connection.
self.requests.splice(i, 1);
pending.request.onSocket(socket);
return;
}
}
socket.destroy();
self.removeSocket(socket);
});
}
util.inherits(TunnelingAgent, events.EventEmitter);
TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) {
var self = this;
var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress));
if (self.sockets.length >= this.maxSockets) {
// We are over limit so we'll add it to the queue.
self.requests.push(options);
return;
}
// If we are under maxSockets create a new one.
self.createSocket(options, function(socket) {
socket.on('free', onFree);
socket.on('close', onCloseOrRemove);
socket.on('agentRemove', onCloseOrRemove);
req.onSocket(socket);
function onFree() {
self.emit('free', socket, options);
}
function onCloseOrRemove(err) {
self.removeSocket(socket);
socket.removeListener('free', onFree);
socket.removeListener('close', onCloseOrRemove);
socket.removeListener('agentRemove', onCloseOrRemove);
}
});
};
TunnelingAgent.prototype.createSocket = function createSocket(options, cb) {
var self = this;
var placeholder = {};
self.sockets.push(placeholder);
var connectOptions = mergeOptions({}, self.proxyOptions, {
method: 'CONNECT',
path: options.host + ':' + options.port,
agent: false,
headers: {
host: options.host + ':' + options.port
}
});
if (options.localAddress) {
connectOptions.localAddress = options.localAddress;
}
if (connectOptions.proxyAuth) {
connectOptions.headers = connectOptions.headers || {};
connectOptions.headers['Proxy-Authorization'] = 'Basic ' +
new Buffer(connectOptions.proxyAuth).toString('base64');
}
debug('making CONNECT request');
var connectReq = self.request(connectOptions);
connectReq.useChunkedEncodingByDefault = false; // for v0.6
connectReq.once('response', onResponse); // for v0.6
connectReq.once('upgrade', onUpgrade); // for v0.6
connectReq.once('connect', onConnect); // for v0.7 or later
connectReq.once('error', onError);
connectReq.end();
function onResponse(res) {
// Very hacky. This is necessary to avoid http-parser leaks.
res.upgrade = true;
}
function onUpgrade(res, socket, head) {
// Hacky.
process.nextTick(function() {
onConnect(res, socket, head);
});
}
function onConnect(res, socket, head) {
connectReq.removeAllListeners();
socket.removeAllListeners();
if (res.statusCode !== 200) {
debug('tunneling socket could not be established, statusCode=%d',
res.statusCode);
socket.destroy();
var error = new Error('tunneling socket could not be established, ' +
'statusCode=' + res.statusCode);
error.code = 'ECONNRESET';
options.request.emit('error', error);
self.removeSocket(placeholder);
return;
}
if (head.length > 0) {
debug('got illegal response body from proxy');
socket.destroy();
var error = new Error('got illegal response body from proxy');
error.code = 'ECONNRESET';
options.request.emit('error', error);
self.removeSocket(placeholder);
return;
}
debug('tunneling connection has established');
self.sockets[self.sockets.indexOf(placeholder)] = socket;
return cb(socket);
}
function onError(cause) {
connectReq.removeAllListeners();
debug('tunneling socket could not be established, cause=%s\n',
cause.message, cause.stack);
var error = new Error('tunneling socket could not be established, ' +
'cause=' + cause.message);
error.code = 'ECONNRESET';
options.request.emit('error', error);
self.removeSocket(placeholder);
}
};
TunnelingAgent.prototype.removeSocket = function removeSocket(socket) {
var pos = this.sockets.indexOf(socket)
if (pos === -1) {
return;
}
this.sockets.splice(pos, 1);
var pending = this.requests.shift();
if (pending) {
// If we have pending requests and a socket gets closed a new one
// needs to be created to take over in the pool for the one that closed.
this.createSocket(pending, function(socket) {
pending.request.onSocket(socket);
});
}
};
function createSecureSocket(options, cb) {
var self = this;
TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {
var hostHeader = options.request.getHeader('host');
var tlsOptions = mergeOptions({}, self.options, {
socket: socket,
servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host
});
// 0 is dummy port for v0.6
var secureSocket = tls.connect(0, tlsOptions);
self.sockets[self.sockets.indexOf(socket)] = secureSocket;
cb(secureSocket);
});
}
function toOptions(host, port, localAddress) {
if (typeof host === 'string') { // since v0.10
return {
host: host,
port: port,
localAddress: localAddress
};
}
return host; // for v0.11 or later
}
function mergeOptions(target) {
for (var i = 1, len = arguments.length; i < len; ++i) {
var overrides = arguments[i];
if (typeof overrides === 'object') {
var keys = Object.keys(overrides);
for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {
var k = keys[j];
if (overrides[k] !== undefined) {
target[k] = overrides[k];
}
}
}
}
return target;
}
var debug;
if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) {
debug = function() {
var args = Array.prototype.slice.call(arguments);
if (typeof args[0] === 'string') {
args[0] = 'TUNNEL: ' + args[0];
} else {
args.unshift('TUNNEL:');
}
console.error.apply(console, args);
}
} else {
debug = function() {};
}
exports.debug = debug; // for test
/***/ }),
/* 142 */,
/* 143 */
/***/ (function(module) {
// parse out just the options we care about so we always get a consistent
// obj with keys in a consistent order.
const opts = ['includePrerelease', 'loose', 'rtl']
const parseOptions = options =>
!options ? {}
: typeof options !== 'object' ? { loose: true }
: opts.filter(k => options[k]).reduce((options, k) => {
options[k] = true
return options
}, {})
module.exports = parseOptions
/***/ }),
/* 144 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.LocalDistribution = void 0;
const tc = __importStar(__webpack_require__(139));
const core = __importStar(__webpack_require__(470));
const fs_1 = __importDefault(__webpack_require__(747));
const path_1 = __importDefault(__webpack_require__(622));
const base_installer_1 = __webpack_require__(83);
const util_1 = __webpack_require__(322);
const constants_1 = __webpack_require__(211);
class LocalDistribution extends base_installer_1.JavaBase {
constructor(installerOptions, jdkFile) {
super('jdkfile', installerOptions);
this.jdkFile = jdkFile;
}
setupJava() {
return __awaiter(this, void 0, void 0, function* () {
let foundJava = this.findInToolcache();
if (foundJava) {
core.info(`Resolved Java ${foundJava.version} from tool-cache`);
}
else {
core.info(`Java ${this.version} was not found in tool-cache. Trying to unpack JDK file...`);
if (!this.jdkFile) {
throw new Error("'jdkFile' is not specified");
}
const jdkFilePath = path_1.default.resolve(this.jdkFile);
const stats = fs_1.default.statSync(jdkFilePath);
if (!stats.isFile()) {
throw new Error(`JDK file was not found in path '${jdkFilePath}'`);
}
core.info(`Extracting Java from '${jdkFilePath}'`);
const extractedJavaPath = yield util_1.extractJdkFile(jdkFilePath);
const archiveName = fs_1.default.readdirSync(extractedJavaPath)[0];
const archivePath = path_1.default.join(extractedJavaPath, archiveName);
const javaVersion = this.version;
let javaPath = yield tc.cacheDir(archivePath, this.toolcacheFolderName, this.getToolcacheVersionName(javaVersion), this.architecture);
// for different Java distributions, postfix can exist or not so need to check both cases
if (process.platform === 'darwin' &&
fs_1.default.existsSync(path_1.default.join(javaPath, constants_1.MACOS_JAVA_CONTENT_POSTFIX))) {
javaPath = path_1.default.join(javaPath, constants_1.MACOS_JAVA_CONTENT_POSTFIX);
}
foundJava = {
version: javaVersion,
path: javaPath
};
}
core.info(`Setting Java ${foundJava.version} as default`);
this.setJavaDefault(foundJava.version, foundJava.path);
return foundJava;
});
}
findPackageForDownload(version) {
return __awaiter(this, void 0, void 0, function* () {
throw new Error('This method should not be implemented in local file provider');
});
}
downloadTool(javaRelease) {
return __awaiter(this, void 0, void 0, function* () {
throw new Error('This method should not be implemented in local file provider');
});
}
}
exports.LocalDistribution = LocalDistribution;
/***/ }),
/* 145 */,
/* 146 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __spread = (this && this.__spread) || function () {
for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
return ar;
};
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
var infra_1 = __webpack_require__(23);
/**
* Converts a whitespace separated string into an array of tokens.
*
* @param value - a string of whitespace separated tokens
*/
function orderedSet_parse(value) {
/**
* 1. Let inputTokens be the result of splitting input on ASCII whitespace.
* 2. Let tokens be a new ordered set.
* 3. For each token in inputTokens, append token to tokens.
* 4. Return tokens.
*/
var inputTokens = infra_1.string.splitAStringOnASCIIWhitespace(value);
return new Set(inputTokens);
}
exports.orderedSet_parse = orderedSet_parse;
/**
* Converts an array of tokens into a space separated string.
*
* @param tokens - an array of token strings
*/
function orderedSet_serialize(tokens) {
/**
* The ordered set serializer takes a set and returns the concatenation of
* set using U+0020 SPACE.
*/
return __spread(tokens).join(' ');
}
exports.orderedSet_serialize = orderedSet_serialize;
/**
* Removes duplicate tokens and convert all whitespace characters
* to space.
*
* @param value - a string of whitespace separated tokens
*/
function orderedSet_sanitize(value) {
return orderedSet_serialize(orderedSet_parse(value));
}
exports.orderedSet_sanitize = orderedSet_sanitize;
/**
* Determines whether a set contains the other.
*
* @param set1 - a set
* @param set1 - a set that is contained in set1
* @param caseSensitive - whether matches are case-sensitive
*/
function orderedSet_contains(set1, set2, caseSensitive) {
var e_1, _a, e_2, _b;
try {
for (var set2_1 = __values(set2), set2_1_1 = set2_1.next(); !set2_1_1.done; set2_1_1 = set2_1.next()) {
var val2 = set2_1_1.value;
var found = false;
try {
for (var set1_1 = (e_2 = void 0, __values(set1)), set1_1_1 = set1_1.next(); !set1_1_1.done; set1_1_1 = set1_1.next()) {
var val1 = set1_1_1.value;
if (caseSensitive) {
if (val1 === val2) {
found = true;
break;
}
}
else {
if (val1.toUpperCase() === val2.toUpperCase()) {
found = true;
break;
}
}
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (set1_1_1 && !set1_1_1.done && (_b = set1_1.return)) _b.call(set1_1);
}
finally { if (e_2) throw e_2.error; }
}
if (!found)
return false;
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (set2_1_1 && !set2_1_1.done && (_a = set2_1.return)) _a.call(set2_1);
}
finally { if (e_1) throw e_1.error; }
}
return true;
}
exports.orderedSet_contains = orderedSet_contains;
//# sourceMappingURL=OrderedSetAlgorithm.js.map
/***/ }),
/* 147 */,
/* 148 */,
/* 149 */,
/* 150 */,
/* 151 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
var DOMImpl_1 = __webpack_require__(648);
var util_1 = __webpack_require__(918);
var infra_1 = __webpack_require__(23);
var CreateAlgorithm_1 = __webpack_require__(86);
var TreeAlgorithm_1 = __webpack_require__(873);
var EventAlgorithm_1 = __webpack_require__(826);
/**
* Queues a mutation observer microtask to the surrounding agents mutation
* observers.
*/
function observer_queueAMutationObserverMicrotask() {
/**
* 1. If the surrounding agents mutation observer microtask queued is true,
* then return.
* 2. Set the surrounding agents mutation observer microtask queued to true.
* 3. Queue a microtask to notify mutation observers.
*/
var window = DOMImpl_1.dom.window;
if (window._mutationObserverMicrotaskQueued)
return;
window._mutationObserverMicrotaskQueued = true;
Promise.resolve().then(function () { observer_notifyMutationObservers(); });
}
exports.observer_queueAMutationObserverMicrotask = observer_queueAMutationObserverMicrotask;
/**
* Notifies the surrounding agents mutation observers.
*/
function observer_notifyMutationObservers() {
var e_1, _a, e_2, _b;
/**
* 1. Set the surrounding agents mutation observer microtask queued to false.
* 2. Let notifySet be a clone of the surrounding agents mutation observers.
* 3. Let signalSet be a clone of the surrounding agents signal slots.
* 4. Empty the surrounding agents signal slots.
*/
var window = DOMImpl_1.dom.window;
window._mutationObserverMicrotaskQueued = false;
var notifySet = infra_1.set.clone(window._mutationObservers);
var signalSet = infra_1.set.clone(window._signalSlots);
infra_1.set.empty(window._signalSlots);
var _loop_1 = function (mo) {
/**
* 5.1. Let records be a clone of mos record queue.
* 5.2. Empty mos record queue.
*/
var records = infra_1.list.clone(mo._recordQueue);
infra_1.list.empty(mo._recordQueue);
/**
* 5.3. For each node of mos node list, remove all transient registered
* observers whose observer is mo from nodes registered observer list.
*/
for (var i = 0; i < mo._nodeList.length; i++) {
var node = mo._nodeList[i];
infra_1.list.remove(node._registeredObserverList, function (observer) {
return util_1.Guard.isTransientRegisteredObserver(observer) && observer.observer === mo;
});
}
/**
* 5.4. If records is not empty, then invoke mos callback with « records,
* mo », and mo. If this throws an exception, then report the exception.
*/
if (!infra_1.list.isEmpty(records)) {
try {
mo._callback.call(mo, records, mo);
}
catch (err) {
// TODO: Report the exception
}
}
};
try {
/**
* 5. For each mo of notifySet:
*/
for (var notifySet_1 = __values(notifySet), notifySet_1_1 = notifySet_1.next(); !notifySet_1_1.done; notifySet_1_1 = notifySet_1.next()) {
var mo = notifySet_1_1.value;
_loop_1(mo);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (notifySet_1_1 && !notifySet_1_1.done && (_a = notifySet_1.return)) _a.call(notifySet_1);
}
finally { if (e_1) throw e_1.error; }
}
/**
* 6. For each slot of signalSet, fire an event named slotchange, with its
* bubbles attribute set to true, at slot.
*/
if (DOMImpl_1.dom.features.slots) {
try {
for (var signalSet_1 = __values(signalSet), signalSet_1_1 = signalSet_1.next(); !signalSet_1_1.done; signalSet_1_1 = signalSet_1.next()) {
var slot = signalSet_1_1.value;
EventAlgorithm_1.event_fireAnEvent("slotchange", slot, undefined, { bubbles: true });
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (signalSet_1_1 && !signalSet_1_1.done && (_b = signalSet_1.return)) _b.call(signalSet_1);
}
finally { if (e_2) throw e_2.error; }
}
}
}
exports.observer_notifyMutationObservers = observer_notifyMutationObservers;
/**
* Queues a mutation record of the given type for target.
*
* @param type - mutation record type
* @param target - target node
* @param name - name before mutation
* @param namespace - namespace before mutation
* @param oldValue - attribute value before mutation
* @param addedNodes - a list od added nodes
* @param removedNodes - a list of removed nodes
* @param previousSibling - previous sibling of target before mutation
* @param nextSibling - next sibling of target before mutation
*/
function observer_queueMutationRecord(type, target, name, namespace, oldValue, addedNodes, removedNodes, previousSibling, nextSibling) {
var e_3, _a;
/**
* 1. Let interestedObservers be an empty map.
* 2. Let nodes be the inclusive ancestors of target.
* 3. For each node in nodes, and then for each registered of nodes
* registered observer list:
*/
var interestedObservers = new Map();
var node = TreeAlgorithm_1.tree_getFirstAncestorNode(target, true);
while (node !== null) {
for (var i = 0; i < node._registeredObserverList.length; i++) {
var registered = node._registeredObserverList[i];
/**
* 3.1. Let options be registereds options.
* 3.2. If none of the following are true
* - node is not target and optionss subtree is false
* - type is "attributes" and optionss attributes is not true
* - type is "attributes", optionss attributeFilter is present, and
* optionss attributeFilter does not contain name or namespace is
* non-null
* - type is "characterData" and optionss characterData is not true
* - type is "childList" and optionss childList is false
*/
var options = registered.options;
if (node !== target && !options.subtree)
continue;
if (type === "attributes" && !options.attributes)
continue;
if (type === "attributes" && options.attributeFilter &&
(!options.attributeFilter.indexOf(name || '') || namespace !== null))
continue;
if (type === "characterData" && !options.characterData)
continue;
if (type === "childList" && !options.childList)
continue;
/**
* then:
* 3.2.1. Let mo be registereds observer.
* 3.2.2. If interestedObservers[mo] does not exist, then set
* interestedObservers[mo] to null.
* 3.2.3. If either type is "attributes" and optionss attributeOldValue
* is true, or type is "characterData" and optionss
* characterDataOldValue is true, then set interestedObservers[mo]
* to oldValue.
*/
var mo = registered.observer;
if (!interestedObservers.has(mo)) {
interestedObservers.set(mo, null);
}
if ((type === "attributes" && options.attributeOldValue) ||
(type === "characterData" && options.characterDataOldValue)) {
interestedObservers.set(mo, oldValue);
}
}
node = TreeAlgorithm_1.tree_getNextAncestorNode(target, node, true);
}
try {
/**
* 4. For each observer → mappedOldValue of interestedObservers:
*/
for (var interestedObservers_1 = __values(interestedObservers), interestedObservers_1_1 = interestedObservers_1.next(); !interestedObservers_1_1.done; interestedObservers_1_1 = interestedObservers_1.next()) {
var _b = __read(interestedObservers_1_1.value, 2), observer = _b[0], mappedOldValue = _b[1];
/**
* 4.1. Let record be a new MutationRecord object with its type set to
* type, target set to target, attributeName set to name,
* attributeNamespace set to namespace, oldValue set to mappedOldValue,
* addedNodes set to addedNodes, removedNodes set to removedNodes,
* previousSibling set to previousSibling, and nextSibling set to
* nextSibling.
* 4.2. Enqueue record to observers record queue.
*/
var record = CreateAlgorithm_1.create_mutationRecord(type, target, CreateAlgorithm_1.create_nodeListStatic(target, addedNodes), CreateAlgorithm_1.create_nodeListStatic(target, removedNodes), previousSibling, nextSibling, name, namespace, mappedOldValue);
var queue = observer._recordQueue;
queue.push(record);
}
}
catch (e_3_1) { e_3 = { error: e_3_1 }; }
finally {
try {
if (interestedObservers_1_1 && !interestedObservers_1_1.done && (_a = interestedObservers_1.return)) _a.call(interestedObservers_1);
}
finally { if (e_3) throw e_3.error; }
}
/**
* 5. Queue a mutation observer microtask.
*/
observer_queueAMutationObserverMicrotask();
}
exports.observer_queueMutationRecord = observer_queueMutationRecord;
/**
* Queues a tree mutation record for target.
*
* @param target - target node
* @param addedNodes - a list od added nodes
* @param removedNodes - a list of removed nodes
* @param previousSibling - previous sibling of target before mutation
* @param nextSibling - next sibling of target before mutation
*/
function observer_queueTreeMutationRecord(target, addedNodes, removedNodes, previousSibling, nextSibling) {
/**
* To queue a tree mutation record for target with addedNodes, removedNodes,
* previousSibling, and nextSibling, queue a mutation record of "childList"
* for target with null, null, null, addedNodes, removedNodes,
* previousSibling, and nextSibling.
*/
observer_queueMutationRecord("childList", target, null, null, null, addedNodes, removedNodes, previousSibling, nextSibling);
}
exports.observer_queueTreeMutationRecord = observer_queueTreeMutationRecord;
/**
* Queues an attribute mutation record for target.
*
* @param target - target node
* @param name - name before mutation
* @param namespace - namespace before mutation
* @param oldValue - attribute value before mutation
*/
function observer_queueAttributeMutationRecord(target, name, namespace, oldValue) {
/**
* To queue an attribute mutation record for target with name, namespace,
* and oldValue, queue a mutation record of "attributes" for target with
* name, namespace, oldValue, « », « », null, and null.
*/
observer_queueMutationRecord("attributes", target, name, namespace, oldValue, [], [], null, null);
}
exports.observer_queueAttributeMutationRecord = observer_queueAttributeMutationRecord;
//# sourceMappingURL=MutationObserverAlgorithm.js.map
/***/ }),
/* 152 */,
/* 153 */,
/* 154 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
var DOMImpl_1 = __webpack_require__(648);
var util_1 = __webpack_require__(918);
var DOMException_1 = __webpack_require__(35);
var CreateAlgorithm_1 = __webpack_require__(86);
var TreeAlgorithm_1 = __webpack_require__(873);
var CharacterDataAlgorithm_1 = __webpack_require__(27);
var MutationAlgorithm_1 = __webpack_require__(479);
/**
* Returns node with its adjacent text and cdata node siblings.
*
* @param node - a node
* @param self - whether to include node itself
*/
function text_contiguousTextNodes(node, self) {
var _a;
if (self === void 0) { self = false; }
/**
* The contiguous Text nodes of a node node are node, nodes previous
* sibling Text node, if any, and its contiguous Text nodes, and nodes next
* sibling Text node, if any, and its contiguous Text nodes, avoiding any
* duplicates.
*/
return _a = {},
_a[Symbol.iterator] = function () {
var currentNode = node;
while (currentNode && util_1.Guard.isTextNode(currentNode._previousSibling)) {
currentNode = currentNode._previousSibling;
}
return {
next: function () {
if (currentNode && (!self && currentNode === node)) {
if (util_1.Guard.isTextNode(currentNode._nextSibling)) {
currentNode = currentNode._nextSibling;
}
else {
currentNode = null;
}
}
if (currentNode === null) {
return { done: true, value: null };
}
else {
var result = { done: false, value: currentNode };
if (util_1.Guard.isTextNode(currentNode._nextSibling)) {
currentNode = currentNode._nextSibling;
}
else {
currentNode = null;
}
return result;
}
}
};
},
_a;
}
exports.text_contiguousTextNodes = text_contiguousTextNodes;
/**
* Returns node with its adjacent text node siblings.
*
* @param node - a node
* @param self - whether to include node itself
*/
function text_contiguousExclusiveTextNodes(node, self) {
var _a;
if (self === void 0) { self = false; }
/**
* The contiguous exclusive Text nodes of a node node are node, nodes
* previous sibling exclusive Text node, if any, and its contiguous
* exclusive Text nodes, and nodes next sibling exclusive Text node,
* if any, and its contiguous exclusive Text nodes, avoiding any duplicates.
*/
return _a = {},
_a[Symbol.iterator] = function () {
var currentNode = node;
while (currentNode && util_1.Guard.isExclusiveTextNode(currentNode._previousSibling)) {
currentNode = currentNode._previousSibling;
}
return {
next: function () {
if (currentNode && (!self && currentNode === node)) {
if (util_1.Guard.isExclusiveTextNode(currentNode._nextSibling)) {
currentNode = currentNode._nextSibling;
}
else {
currentNode = null;
}
}
if (currentNode === null) {
return { done: true, value: null };
}
else {
var result = { done: false, value: currentNode };
if (util_1.Guard.isExclusiveTextNode(currentNode._nextSibling)) {
currentNode = currentNode._nextSibling;
}
else {
currentNode = null;
}
return result;
}
}
};
},
_a;
}
exports.text_contiguousExclusiveTextNodes = text_contiguousExclusiveTextNodes;
/**
* Returns the concatenation of the data of all the Text node descendants of
* node, in tree order.
*
* @param node - a node
*/
function text_descendantTextContent(node) {
/**
* The descendant text content of a node node is the concatenation of the
* data of all the Text node descendants of node, in tree order.
*/
var contents = '';
var text = TreeAlgorithm_1.tree_getFirstDescendantNode(node, false, false, function (e) { return util_1.Guard.isTextNode(e); });
while (text !== null) {
contents += text._data;
text = TreeAlgorithm_1.tree_getNextDescendantNode(node, text, false, false, function (e) { return util_1.Guard.isTextNode(e); });
}
return contents;
}
exports.text_descendantTextContent = text_descendantTextContent;
/**
* Splits data at the given offset and returns the remainder as a text
* node.
*
* @param node - a text node
* @param offset - the offset at which to split the nodes.
*/
function text_split(node, offset) {
var e_1, _a;
/**
* 1. Let length be nodes length.
* 2. If offset is greater than length, then throw an "IndexSizeError"
* DOMException.
*/
var length = node._data.length;
if (offset > length) {
throw new DOMException_1.IndexSizeError();
}
/**
* 3. Let count be length minus offset.
* 4. Let new data be the result of substringing data with node node,
* offset offset, and count count.
* 5. Let new node be a new Text node, with the same node document as node.
* Set new nodes data to new data.
* 6. Let parent be nodes parent.
* 7. If parent is not null, then:
*/
var count = length - offset;
var newData = CharacterDataAlgorithm_1.characterData_substringData(node, offset, count);
var newNode = CreateAlgorithm_1.create_text(node._nodeDocument, newData);
var parent = node._parent;
if (parent !== null) {
/**
* 7.1. Insert new node into parent before nodes next sibling.
*/
MutationAlgorithm_1.mutation_insert(newNode, parent, node._nextSibling);
try {
/**
* 7.2. For each live range whose start node is node and start offset is
* greater than offset, set its start node to new node and decrease its
* start offset by offset.
* 7.3. For each live range whose end node is node and end offset is greater
* than offset, set its end node to new node and decrease its end offset
* by offset.
* 7.4. For each live range whose start node is parent and start offset is
* equal to the index of node plus 1, increase its start offset by 1.
* 7.5. For each live range whose end node is parent and end offset is equal
* to the index of node plus 1, increase its end offset by 1.
*/
for (var _b = __values(DOMImpl_1.dom.rangeList), _c = _b.next(); !_c.done; _c = _b.next()) {
var range = _c.value;
if (range._start[0] === node && range._start[1] > offset) {
range._start[0] = newNode;
range._start[1] -= offset;
}
if (range._end[0] === node && range._end[1] > offset) {
range._end[0] = newNode;
range._end[1] -= offset;
}
var index = TreeAlgorithm_1.tree_index(node);
if (range._start[0] === parent && range._start[1] === index + 1) {
range._start[1]++;
}
if (range._end[0] === parent && range._end[1] === index + 1) {
range._end[1]++;
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
}
/**
* 8. Replace data with node node, offset offset, count count, and data
* the empty string.
* 9. Return new node.
*/
CharacterDataAlgorithm_1.characterData_replaceData(node, offset, count, '');
return newNode;
}
exports.text_split = text_split;
//# sourceMappingURL=TextAlgorithm.js.map
/***/ }),
/* 155 */,
/* 156 */,
/* 157 */,
/* 158 */,
/* 159 */,
/* 160 */,
/* 161 */,
/* 162 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var ElementAlgorithm_1 = __webpack_require__(33);
/**
* Changes the value of an existing attribute.
*
* @param attribute - an attribute node
* @param value - attribute value
*/
function attr_setAnExistingAttributeValue(attribute, value) {
/**
* 1. If attributes element is null, then set attributes value to value.
* 2. Otherwise, change attribute from attributes element to value.
*/
if (attribute._element === null) {
attribute._value = value;
}
else {
ElementAlgorithm_1.element_change(attribute, attribute._element, value);
}
}
exports.attr_setAnExistingAttributeValue = attr_setAnExistingAttributeValue;
//# sourceMappingURL=AttrAlgorithm.js.map
/***/ }),
/* 163 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
Object.defineProperty(exports, "__esModule", { value: true });
__export(__webpack_require__(710));
__export(__webpack_require__(162));
__export(__webpack_require__(350));
__export(__webpack_require__(27));
__export(__webpack_require__(86));
__export(__webpack_require__(344));
__export(__webpack_require__(493));
__export(__webpack_require__(304));
__export(__webpack_require__(54));
__export(__webpack_require__(33));
__export(__webpack_require__(826));
__export(__webpack_require__(106));
__export(__webpack_require__(479));
__export(__webpack_require__(151));
__export(__webpack_require__(664));
__export(__webpack_require__(541));
__export(__webpack_require__(272));
__export(__webpack_require__(146));
__export(__webpack_require__(60));
__export(__webpack_require__(22));
__export(__webpack_require__(483));
__export(__webpack_require__(180));
__export(__webpack_require__(154));
__export(__webpack_require__(464));
__export(__webpack_require__(873));
__export(__webpack_require__(705));
__export(__webpack_require__(495));
__export(__webpack_require__(442));
//# sourceMappingURL=index.js.map
/***/ }),
/* 164 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var EventImpl_1 = __webpack_require__(427);
var algorithm_1 = __webpack_require__(163);
/**
* Represents and event that carries custom data.
*/
var CustomEventImpl = /** @class */ (function (_super) {
__extends(CustomEventImpl, _super);
/**
* Initializes a new instance of `CustomEvent`.
*/
function CustomEventImpl(type, eventInit) {
var _this = _super.call(this, type, eventInit) || this;
_this._detail = null;
_this._detail = (eventInit && eventInit.detail) || null;
return _this;
}
Object.defineProperty(CustomEventImpl.prototype, "detail", {
/** @inheritdoc */
get: function () { return this._detail; },
enumerable: true,
configurable: true
});
/** @inheritdoc */
CustomEventImpl.prototype.initCustomEvent = function (type, bubbles, cancelable, detail) {
if (bubbles === void 0) { bubbles = false; }
if (cancelable === void 0) { cancelable = false; }
if (detail === void 0) { detail = null; }
/**
* 1. If the context objects dispatch flag is set, then return.
*/
if (this._dispatchFlag)
return;
/**
* 2. Initialize the context object with type, bubbles, and cancelable.
*/
algorithm_1.event_initialize(this, type, bubbles, cancelable);
/**
* 3. Set the context objects detail attribute to detail.
*/
this._detail = detail;
};
return CustomEventImpl;
}(EventImpl_1.EventImpl));
exports.CustomEventImpl = CustomEventImpl;
//# sourceMappingURL=CustomEventImpl.js.map
/***/ }),
/* 165 */,
/* 166 */,
/* 167 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const compare = __webpack_require__(874)
const gte = (a, b, loose) => compare(a, b, loose) >= 0
module.exports = gte
/***/ }),
/* 168 */,
/* 169 */,
/* 170 */,
/* 171 */,
/* 172 */
/***/ (function(__unusedmodule, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Defines the type of a token.
*/
var TokenType;
(function (TokenType) {
TokenType[TokenType["EOF"] = 0] = "EOF";
TokenType[TokenType["Declaration"] = 1] = "Declaration";
TokenType[TokenType["DocType"] = 2] = "DocType";
TokenType[TokenType["Element"] = 3] = "Element";
TokenType[TokenType["Text"] = 4] = "Text";
TokenType[TokenType["CDATA"] = 5] = "CDATA";
TokenType[TokenType["PI"] = 6] = "PI";
TokenType[TokenType["Comment"] = 7] = "Comment";
TokenType[TokenType["ClosingTag"] = 8] = "ClosingTag";
})(TokenType = exports.TokenType || (exports.TokenType = {}));
//# sourceMappingURL=interfaces.js.map
/***/ }),
/* 173 */,
/* 174 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var DOMImpl_1 = __webpack_require__(648);
var infra_1 = __webpack_require__(23);
var algorithm_1 = __webpack_require__(163);
var WebIDLAlgorithm_1 = __webpack_require__(495);
/**
* Represents an object providing methods which are not dependent on
* any particular document.
*/
var DOMImplementationImpl = /** @class */ (function () {
/**
* Initializes a new instance of `DOMImplementation`.
*
* @param document - the associated document
*/
function DOMImplementationImpl(document) {
this._associatedDocument = document || DOMImpl_1.dom.window.document;
}
/** @inheritdoc */
DOMImplementationImpl.prototype.createDocumentType = function (qualifiedName, publicId, systemId) {
/**
* 1. Validate qualifiedName.
* 2. Return a new doctype, with qualifiedName as its name, publicId as its
* public ID, and systemId as its system ID, and with its node document set
* to the associated document of the context object.
*/
algorithm_1.namespace_validate(qualifiedName);
return algorithm_1.create_documentType(this._associatedDocument, qualifiedName, publicId, systemId);
};
/** @inheritdoc */
DOMImplementationImpl.prototype.createDocument = function (namespace, qualifiedName, doctype) {
if (doctype === void 0) { doctype = null; }
/**
* 1. Let document be a new XMLDocument.
*/
var document = algorithm_1.create_xmlDocument();
/**
* 2. Let element be null.
* 3. If qualifiedName is not the empty string, then set element to
* the result of running the internal createElementNS steps, given document,
* namespace, qualifiedName, and an empty dictionary.
*/
var element = null;
if (qualifiedName) {
element = algorithm_1.document_internalCreateElementNS(document, namespace, qualifiedName);
}
/**
* 4. If doctype is non-null, append doctype to document.
* 5. If element is non-null, append element to document.
*/
if (doctype)
document.appendChild(doctype);
if (element)
document.appendChild(element);
/**
* 6. documents origin is context objects associated documents origin.
*/
document._origin = this._associatedDocument._origin;
/**
* 7. documents content type is determined by namespace:
* - HTML namespace
* application/xhtml+xml
* - SVG namespace
* image/svg+xml
* - Any other namespace
* application/xml
*/
if (namespace === infra_1.namespace.HTML)
document._contentType = "application/xhtml+xml";
else if (namespace === infra_1.namespace.SVG)
document._contentType = "image/svg+xml";
else
document._contentType = "application/xml";
/**
* 8. Return document.
*/
return document;
};
/** @inheritdoc */
DOMImplementationImpl.prototype.createHTMLDocument = function (title) {
/**
* 1. Let doc be a new document that is an HTML document.
* 2. Set docs content type to "text/html".
*/
var doc = algorithm_1.create_document();
doc._type = "html";
doc._contentType = "text/html";
/**
* 3. Append a new doctype, with "html" as its name and with its node
* document set to doc, to doc.
*/
doc.appendChild(algorithm_1.create_documentType(doc, "html", "", ""));
/**
* 4. Append the result of creating an element given doc, html, and the
* HTML namespace, to doc.
*/
var htmlElement = algorithm_1.element_createAnElement(doc, "html", infra_1.namespace.HTML);
doc.appendChild(htmlElement);
/**
* 5. Append the result of creating an element given doc, head, and the
* HTML namespace, to the html element created earlier.
*/
var headElement = algorithm_1.element_createAnElement(doc, "head", infra_1.namespace.HTML);
htmlElement.appendChild(headElement);
/**
* 6. If title is given:
* 6.1. Append the result of creating an element given doc, title, and
* the HTML namespace, to the head element created earlier.
* 6.2. Append a new Text node, with its data set to title (which could
* be the empty string) and its node document set to doc, to the title
* element created earlier.
*/
if (title !== undefined) {
var titleElement = algorithm_1.element_createAnElement(doc, "title", infra_1.namespace.HTML);
headElement.appendChild(titleElement);
var textElement = algorithm_1.create_text(doc, title);
titleElement.appendChild(textElement);
}
/**
* 7. Append the result of creating an element given doc, body, and the
* HTML namespace, to the html element created earlier.
*/
var bodyElement = algorithm_1.element_createAnElement(doc, "body", infra_1.namespace.HTML);
htmlElement.appendChild(bodyElement);
/**
* 8. docs origin is context objects associated documents origin.
*/
doc._origin = this._associatedDocument._origin;
/**
* 9. Return doc.
*/
return doc;
};
/** @inheritdoc */
DOMImplementationImpl.prototype.hasFeature = function () { return true; };
/**
* Creates a new `DOMImplementation`.
*
* @param document - owner document
*/
DOMImplementationImpl._create = function (document) {
return new DOMImplementationImpl(document);
};
return DOMImplementationImpl;
}());
exports.DOMImplementationImpl = DOMImplementationImpl;
WebIDLAlgorithm_1.idl_defineConst(DOMImplementationImpl.prototype, "_ID", "@oozcitak/dom");
//# sourceMappingURL=DOMImplementationImpl.js.map
/***/ }),
/* 175 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
var DOMImpl_1 = __webpack_require__(648);
var util_1 = __webpack_require__(918);
var infra_1 = __webpack_require__(23);
/**
* Represents an object that can be used to observe mutations to the tree of
* nodes.
*/
var MutationObserverImpl = /** @class */ (function () {
/**
* Initializes a new instance of `MutationObserver`.
*
* @param callback - the callback function
*/
function MutationObserverImpl(callback) {
this._nodeList = [];
this._recordQueue = [];
/**
* 1. Let mo be a new MutationObserver object whose callback is callback.
* 2. Append mo to mos relevant agents mutation observers.
* 3. Return mo.
*/
this._callback = callback;
var window = DOMImpl_1.dom.window;
infra_1.set.append(window._mutationObservers, this);
}
/** @inheritdoc */
MutationObserverImpl.prototype.observe = function (target, options) {
var e_1, _a;
options = options || {
childList: false,
subtree: false
};
/**
* 1. If either optionss attributeOldValue or attributeFilter is present
* and optionss attributes is omitted, then set optionss attributes
* to true.
* 2. If optionss characterDataOldValue is present and optionss
* characterData is omitted, then set optionss characterData to true.
* 3. If none of optionss childList, attributes, and characterData is
* true, then throw a TypeError.
* 4. If optionss attributeOldValue is true and optionss attributes is
* false, then throw a TypeError.
* 5. If optionss attributeFilter is present and optionss attributes is
* false, then throw a TypeError.
* 6. If optionss characterDataOldValue is true and optionss characterData
* is false, then throw a TypeError.
*/
if ((options.attributeOldValue !== undefined || options.attributeFilter !== undefined) &&
options.attributes === undefined) {
options.attributes = true;
}
if (options.characterDataOldValue !== undefined && options.characterData === undefined) {
options.characterData = true;
}
if (!options.childList && !options.attributes && !options.characterData) {
throw new TypeError();
}
if (options.attributeOldValue && !options.attributes) {
throw new TypeError();
}
if (options.attributeFilter !== undefined && !options.attributes) {
throw new TypeError();
}
if (options.characterDataOldValue && !options.characterData) {
throw new TypeError();
}
/**
* 7. For each registered of targets registered observer list, if
* registereds observer is the context object:
*/
var isRegistered = false;
var coptions = options;
var _loop_1 = function (registered) {
var e_2, _a;
if (registered.observer === this_1) {
isRegistered = true;
try {
/**
* 7.1. For each node of the context objects node list, remove all
* transient registered observers whose source is registered from nodes
* registered observer list.
*/
for (var _b = (e_2 = void 0, __values(this_1._nodeList)), _c = _b.next(); !_c.done; _c = _b.next()) {
var node = _c.value;
infra_1.list.remove(node._registeredObserverList, function (ob) {
return util_1.Guard.isTransientRegisteredObserver(ob) && ob.source === registered;
});
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_2) throw e_2.error; }
}
/**
* 7.2. Set registereds options to options.
*/
registered.options = coptions;
}
};
var this_1 = this;
try {
for (var _b = __values(target._registeredObserverList), _c = _b.next(); !_c.done; _c = _b.next()) {
var registered = _c.value;
_loop_1(registered);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
/**
* 8. Otherwise:
* 8.1. Append a new registered observer whose observer is the context
* object and options is options to targets registered observer list.
* 8.2. Append target to the context objects node list.
*/
if (!isRegistered) {
target._registeredObserverList.push({ observer: this, options: options });
this._nodeList.push(target);
}
};
/** @inheritdoc */
MutationObserverImpl.prototype.disconnect = function () {
var e_3, _a;
var _this = this;
try {
/**
* 1. For each node of the context objects node list, remove any
* registered observer from nodes registered observer list for which the
* context object is the observer.
*/
for (var _b = __values(this._nodeList), _c = _b.next(); !_c.done; _c = _b.next()) {
var node = _c.value;
infra_1.list.remove((node)._registeredObserverList, function (ob) {
return ob.observer === _this;
});
}
}
catch (e_3_1) { e_3 = { error: e_3_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_3) throw e_3.error; }
}
/**
* 2. Empty the context objects record queue.
*/
this._recordQueue = [];
};
/** @inheritdoc */
MutationObserverImpl.prototype.takeRecords = function () {
/**
* 1. Let records be a clone of the context objects record queue.
* 2. Empty the context objects record queue.
* 3. Return records.
*/
var records = this._recordQueue;
this._recordQueue = [];
return records;
};
return MutationObserverImpl;
}());
exports.MutationObserverImpl = MutationObserverImpl;
//# sourceMappingURL=MutationObserverImpl.js.map
/***/ }),
/* 176 */,
/* 177 */,
/* 178 */,
/* 179 */,
/* 180 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __spread = (this && this.__spread) || function () {
for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
var DOMImpl_1 = __webpack_require__(648);
var util_1 = __webpack_require__(918);
var util_2 = __webpack_require__(592);
var TreeAlgorithm_1 = __webpack_require__(873);
var MutationObserverAlgorithm_1 = __webpack_require__(151);
/**
* Signals a slot change to the given slot.
*
* @param slot - a slot
*/
function shadowTree_signalASlotChange(slot) {
/**
* 1. Append slot to slots relevant agents signal slots.
* 2. Queue a mutation observer microtask.
*/
var window = DOMImpl_1.dom.window;
window._signalSlots.add(slot);
MutationObserverAlgorithm_1.observer_queueAMutationObserverMicrotask();
}
exports.shadowTree_signalASlotChange = shadowTree_signalASlotChange;
/**
* Determines whether a the shadow tree of the given element node is
* connected to a document node.
*
* @param element - an element node of the shadow tree
*/
function shadowTree_isConnected(element) {
/**
* An element is connected if its shadow-including root is a document.
*/
return util_1.Guard.isDocumentNode(TreeAlgorithm_1.tree_rootNode(element, true));
}
exports.shadowTree_isConnected = shadowTree_isConnected;
/**
* Determines whether a slotable is assigned.
*
* @param slotable - a slotable
*/
function shadowTree_isAssigned(slotable) {
/**
* A slotable is assigned if its assigned slot is non-null.
*/
return (slotable._assignedSlot !== null);
}
exports.shadowTree_isAssigned = shadowTree_isAssigned;
/**
* Finds a slot for the given slotable.
*
* @param slotable - a slotable
* @param openFlag - `true` to search open shadow tree's only
*/
function shadowTree_findASlot(slotable, openFlag) {
if (openFlag === void 0) { openFlag = false; }
/**
* 1. If slotables parent is null, then return null.
* 2. Let shadow be slotables parents shadow root.
* 3. If shadow is null, then return null.
* 4. If the open flag is set and shadows mode is not "open", then
* return null.
* 5. Return the first slot in tree order in shadows descendants whose name
* is slotables name, if any, and null otherwise.
*/
var node = util_1.Cast.asNode(slotable);
var parent = node._parent;
if (parent === null)
return null;
var shadow = parent._shadowRoot || null;
if (shadow === null)
return null;
if (openFlag && shadow._mode !== "open")
return null;
var child = TreeAlgorithm_1.tree_getFirstDescendantNode(shadow, false, true, function (e) { return util_1.Guard.isSlot(e); });
while (child !== null) {
if (child._name === slotable._name)
return child;
child = TreeAlgorithm_1.tree_getNextDescendantNode(shadow, child, false, true, function (e) { return util_1.Guard.isSlot(e); });
}
return null;
}
exports.shadowTree_findASlot = shadowTree_findASlot;
/**
* Finds slotables for the given slot.
*
* @param slot - a slot
*/
function shadowTree_findSlotables(slot) {
var e_1, _a;
/**
* 1. Let result be an empty list.
* 2. If slots root is not a shadow root, then return result.
*/
var result = [];
var root = TreeAlgorithm_1.tree_rootNode(slot);
if (!util_1.Guard.isShadowRoot(root))
return result;
/**
* 3. Let host be slots roots host.
* 4. For each slotable child of host, slotable, in tree order:
*/
var host = root._host;
try {
for (var _b = __values(host._children), _c = _b.next(); !_c.done; _c = _b.next()) {
var slotable = _c.value;
if (util_1.Guard.isSlotable(slotable)) {
/**
* 4.1. Let foundSlot be the result of finding a slot given slotable.
* 4.2. If foundSlot is slot, then append slotable to result.
*/
var foundSlot = shadowTree_findASlot(slotable);
if (foundSlot === slot) {
result.push(slotable);
}
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
/**
* 5. Return result.
*/
return result;
}
exports.shadowTree_findSlotables = shadowTree_findSlotables;
/**
* Finds slotables for the given slot.
*
* @param slot - a slot
*/
function shadowTree_findFlattenedSlotables(slot) {
var e_2, _a, e_3, _b;
/**
* 1. Let result be an empty list.
* 2. If slots root is not a shadow root, then return result.
*/
var result = [];
var root = TreeAlgorithm_1.tree_rootNode(slot);
if (!util_1.Guard.isShadowRoot(root))
return result;
/**
* 3. Let slotables be the result of finding slotables given slot.
* 4. If slotables is the empty list, then append each slotable child of
* slot, in tree order, to slotables.
*/
var slotables = shadowTree_findSlotables(slot);
if (util_2.isEmpty(slotables)) {
try {
for (var _c = __values(slot._children), _d = _c.next(); !_d.done; _d = _c.next()) {
var slotable = _d.value;
if (util_1.Guard.isSlotable(slotable)) {
slotables.push(slotable);
}
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
}
finally { if (e_2) throw e_2.error; }
}
}
try {
/**
* 5. For each node in slotables:
*/
for (var slotables_1 = __values(slotables), slotables_1_1 = slotables_1.next(); !slotables_1_1.done; slotables_1_1 = slotables_1.next()) {
var node = slotables_1_1.value;
/**
* 5.1. If node is a slot whose root is a shadow root, then:
*/
if (util_1.Guard.isSlot(node) && util_1.Guard.isShadowRoot(TreeAlgorithm_1.tree_rootNode(node))) {
/**
* 5.1.1. Let temporaryResult be the result of finding flattened slotables given node.
* 5.1.2. Append each slotable in temporaryResult, in order, to result.
*/
var temporaryResult = shadowTree_findFlattenedSlotables(node);
result.push.apply(result, __spread(temporaryResult));
}
else {
/**
* 5.2. Otherwise, append node to result.
*/
result.push(node);
}
}
}
catch (e_3_1) { e_3 = { error: e_3_1 }; }
finally {
try {
if (slotables_1_1 && !slotables_1_1.done && (_b = slotables_1.return)) _b.call(slotables_1);
}
finally { if (e_3) throw e_3.error; }
}
/**
* 6. Return result.
*/
return result;
}
exports.shadowTree_findFlattenedSlotables = shadowTree_findFlattenedSlotables;
/**
* Assigns slotables to the given slot.
*
* @param slot - a slot
*/
function shadowTree_assignSlotables(slot) {
var e_4, _a;
/**
* 1. Let slotables be the result of finding slotables for slot.
* 2. If slotables and slots assigned nodes are not identical, then run
* signal a slot change for slot.
*/
var slotables = shadowTree_findSlotables(slot);
if (slotables.length === slot._assignedNodes.length) {
var nodesIdentical = true;
for (var i = 0; i < slotables.length; i++) {
if (slotables[i] !== slot._assignedNodes[i]) {
nodesIdentical = false;
break;
}
}
if (!nodesIdentical) {
shadowTree_signalASlotChange(slot);
}
}
/**
* 3. Set slots assigned nodes to slotables.
* 4. For each slotable in slotables, set slotables assigned slot to slot.
*/
slot._assignedNodes = slotables;
try {
for (var slotables_2 = __values(slotables), slotables_2_1 = slotables_2.next(); !slotables_2_1.done; slotables_2_1 = slotables_2.next()) {
var slotable = slotables_2_1.value;
slotable._assignedSlot = slot;
}
}
catch (e_4_1) { e_4 = { error: e_4_1 }; }
finally {
try {
if (slotables_2_1 && !slotables_2_1.done && (_a = slotables_2.return)) _a.call(slotables_2);
}
finally { if (e_4) throw e_4.error; }
}
}
exports.shadowTree_assignSlotables = shadowTree_assignSlotables;
/**
* Assigns slotables to all nodes of a tree.
*
* @param root - root node
*/
function shadowTree_assignSlotablesForATree(root) {
/**
* To assign slotables for a tree, given a node root, run assign slotables
* for each slot slot in roots inclusive descendants, in tree order.
*/
var descendant = TreeAlgorithm_1.tree_getFirstDescendantNode(root, true, false, function (e) { return util_1.Guard.isSlot(e); });
while (descendant !== null) {
shadowTree_assignSlotables(descendant);
descendant = TreeAlgorithm_1.tree_getNextDescendantNode(root, descendant, true, false, function (e) { return util_1.Guard.isSlot(e); });
}
}
exports.shadowTree_assignSlotablesForATree = shadowTree_assignSlotablesForATree;
/**
* Assigns a slot to a slotables.
*
* @param slotable - a slotable
*/
function shadowTree_assignASlot(slotable) {
/**
* 1. Let slot be the result of finding a slot with slotable.
* 2. If slot is non-null, then run assign slotables for slot.
*/
var slot = shadowTree_findASlot(slotable);
if (slot !== null) {
shadowTree_assignSlotables(slot);
}
}
exports.shadowTree_assignASlot = shadowTree_assignASlot;
//# sourceMappingURL=ShadowTreeAlgorithm.js.map
/***/ }),
/* 181 */
/***/ (function(module) {
// Note: this is the semver.org version of the spec that it implements
// Not necessarily the package version of this code.
const SEMVER_SPEC_VERSION = '2.0.0'
const MAX_LENGTH = 256
const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
/* istanbul ignore next */ 9007199254740991
// Max safe segment length for coercion.
const MAX_SAFE_COMPONENT_LENGTH = 16
module.exports = {
SEMVER_SPEC_VERSION,
MAX_LENGTH,
MAX_SAFE_INTEGER,
MAX_SAFE_COMPONENT_LENGTH
}
/***/ }),
/* 182 */,
/* 183 */,
/* 184 */,
/* 185 */,
/* 186 */,
/* 187 */,
/* 188 */,
/* 189 */,
/* 190 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var BaseCBWriter_1 = __webpack_require__(512);
/**
* Serializes XML nodes.
*/
var XMLCBWriter = /** @class */ (function (_super) {
__extends(XMLCBWriter, _super);
/**
* Initializes a new instance of `XMLCBWriter`.
*
* @param builderOptions - XML builder options
*/
function XMLCBWriter(builderOptions) {
var _this = _super.call(this, builderOptions) || this;
_this._lineLength = 0;
return _this;
}
/** @inheritdoc */
XMLCBWriter.prototype.frontMatter = function () {
return "";
};
/** @inheritdoc */
XMLCBWriter.prototype.declaration = function (version, encoding, standalone) {
var markup = this._beginLine() + "<?xml";
markup += " version=\"" + version + "\"";
if (encoding !== undefined) {
markup += " encoding=\"" + encoding + "\"";
}
if (standalone !== undefined) {
markup += " standalone=\"" + (standalone ? "yes" : "no") + "\"";
}
markup += "?>";
return markup;
};
/** @inheritdoc */
XMLCBWriter.prototype.docType = function (name, publicId, systemId) {
var markup = this._beginLine();
if (publicId && systemId) {
markup += "<!DOCTYPE " + name + " PUBLIC \"" + publicId + "\" \"" + systemId + "\">";
}
else if (publicId) {
markup += "<!DOCTYPE " + name + " PUBLIC \"" + publicId + "\">";
}
else if (systemId) {
markup += "<!DOCTYPE " + name + " SYSTEM \"" + systemId + "\">";
}
else {
markup += "<!DOCTYPE " + name + ">";
}
return markup;
};
/** @inheritdoc */
XMLCBWriter.prototype.comment = function (data) {
return this._beginLine() + "<!--" + data + "-->";
};
/** @inheritdoc */
XMLCBWriter.prototype.text = function (data) {
return this._beginLine() + data;
};
/** @inheritdoc */
XMLCBWriter.prototype.instruction = function (target, data) {
if (data) {
return this._beginLine() + "<?" + target + " " + data + "?>";
}
else {
return this._beginLine() + "<?" + target + "?>";
}
};
/** @inheritdoc */
XMLCBWriter.prototype.cdata = function (data) {
return this._beginLine() + "<![CDATA[" + data + "]]>";
};
/** @inheritdoc */
XMLCBWriter.prototype.openTagBegin = function (name) {
this._lineLength += 1 + name.length;
return this._beginLine() + "<" + name;
};
/** @inheritdoc */
XMLCBWriter.prototype.openTagEnd = function (name, selfClosing, voidElement) {
if (voidElement) {
return " />";
}
else if (selfClosing) {
if (this._writerOptions.allowEmptyTags) {
return "></" + name + ">";
}
else if (this._writerOptions.spaceBeforeSlash) {
return " />";
}
else {
return "/>";
}
}
else {
return ">";
}
};
/** @inheritdoc */
XMLCBWriter.prototype.closeTag = function (name) {
return this._beginLine() + "</" + name + ">";
};
/** @inheritdoc */
XMLCBWriter.prototype.attribute = function (name, value) {
var str = name + "=\"" + value + "\"";
if (this._writerOptions.prettyPrint && this._writerOptions.width > 0 &&
this._lineLength + 1 + str.length > this._writerOptions.width) {
str = this._beginLine() + this._indent(1) + str;
this._lineLength = str.length;
return str;
}
else {
this._lineLength += 1 + str.length;
return " " + str;
}
};
/** @inheritdoc */
XMLCBWriter.prototype.beginElement = function (name) { };
/** @inheritdoc */
XMLCBWriter.prototype.endElement = function (name) { };
/**
* Produces characters to be prepended to a line of string in pretty-print
* mode.
*/
XMLCBWriter.prototype._beginLine = function () {
if (this._writerOptions.prettyPrint) {
var str = (this.hasData ? this._writerOptions.newline : "") +
this._indent(this._writerOptions.offset + this.level);
this._lineLength = str.length;
return str;
}
else {
return "";
}
};
/**
* Produces an indentation string.
*
* @param level - depth of the tree
*/
XMLCBWriter.prototype._indent = function (level) {
if (level <= 0) {
return "";
}
else {
return this._writerOptions.indent.repeat(level);
}
};
return XMLCBWriter;
}(BaseCBWriter_1.BaseCBWriter));
exports.XMLCBWriter = XMLCBWriter;
//# sourceMappingURL=XMLCBWriter.js.map
/***/ }),
/* 191 */,
/* 192 */,
/* 193 */,
/* 194 */,
/* 195 */,
/* 196 */,
/* 197 */,
/* 198 */,
/* 199 */,
/* 200 */,
/* 201 */,
/* 202 */,
/* 203 */,
/* 204 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var infra_1 = __webpack_require__(23);
var algorithm_1 = __webpack_require__(163);
var util_1 = __webpack_require__(918);
var util_2 = __webpack_require__(592);
/**
* Represents a collection of elements.
*/
var HTMLCollectionImpl = /** @class */ (function () {
/**
* Initializes a new instance of `HTMLCollection`.
*
* @param root - root node
* @param filter - node filter
*/
function HTMLCollectionImpl(root, filter) {
this._live = true;
this._root = root;
this._filter = filter;
return new Proxy(this, this);
}
Object.defineProperty(HTMLCollectionImpl.prototype, "length", {
/** @inheritdoc */
get: function () {
var _this = this;
/**
* The length attributes getter must return the number of nodes
* represented by the collection.
*/
var count = 0;
var node = algorithm_1.tree_getFirstDescendantNode(this._root, false, false, function (e) { return util_1.Guard.isElementNode(e) && _this._filter(e); });
while (node !== null) {
count++;
node = algorithm_1.tree_getNextDescendantNode(this._root, node, false, false, function (e) { return util_1.Guard.isElementNode(e) && _this._filter(e); });
}
return count;
},
enumerable: true,
configurable: true
});
/** @inheritdoc */
HTMLCollectionImpl.prototype.item = function (index) {
var _this = this;
/**
* The item(index) method, when invoked, must return the indexth element
* in the collection. If there is no indexth element in the collection,
* then the method must return null.
*/
var i = 0;
var node = algorithm_1.tree_getFirstDescendantNode(this._root, false, false, function (e) { return util_1.Guard.isElementNode(e) && _this._filter(e); });
while (node !== null) {
if (i === index)
return node;
else
i++;
node = algorithm_1.tree_getNextDescendantNode(this._root, node, false, false, function (e) { return util_1.Guard.isElementNode(e) && _this._filter(e); });
}
return null;
};
/** @inheritdoc */
HTMLCollectionImpl.prototype.namedItem = function (key) {
var _this = this;
/**
* 1. If key is the empty string, return null.
* 2. Return the first element in the collection for which at least one of
* the following is true:
* - it has an ID which is key;
* - it is in the HTML namespace and has a name attribute whose value is key;
* or null if there is no such element.
*/
if (key === '')
return null;
var ele = algorithm_1.tree_getFirstDescendantNode(this._root, false, false, function (e) { return util_1.Guard.isElementNode(e) && _this._filter(e); });
while (ele != null) {
if (ele._uniqueIdentifier === key) {
return ele;
}
else if (ele._namespace === infra_1.namespace.HTML) {
for (var i = 0; i < ele._attributeList.length; i++) {
var attr = ele._attributeList[i];
if (attr._localName === "name" && attr._namespace === null &&
attr._namespacePrefix === null && attr._value === key)
return ele;
}
}
ele = algorithm_1.tree_getNextDescendantNode(this._root, ele, false, false, function (e) { return util_1.Guard.isElementNode(e) && _this._filter(e); });
}
return null;
};
/** @inheritdoc */
HTMLCollectionImpl.prototype[Symbol.iterator] = function () {
var root = this._root;
var filter = this._filter;
var currentNode = algorithm_1.tree_getFirstDescendantNode(root, false, false, function (e) { return util_1.Guard.isElementNode(e) && filter(e); });
return {
next: function () {
if (currentNode === null) {
return { done: true, value: null };
}
else {
var result = { done: false, value: currentNode };
currentNode = algorithm_1.tree_getNextDescendantNode(root, currentNode, false, false, function (e) { return util_1.Guard.isElementNode(e) && filter(e); });
return result;
}
}
};
};
/**
* Implements a proxy get trap to provide array-like access.
*/
HTMLCollectionImpl.prototype.get = function (target, key, receiver) {
if (!util_2.isString(key) || HTMLCollectionImpl.reservedNames.indexOf(key) !== -1) {
return Reflect.get(target, key, receiver);
}
var index = Number(key);
if (isNaN(index)) {
return target.namedItem(key) || undefined;
}
else {
return target.item(index) || undefined;
}
};
/**
* Implements a proxy set trap to provide array-like access.
*/
HTMLCollectionImpl.prototype.set = function (target, key, value, receiver) {
if (!util_2.isString(key) || HTMLCollectionImpl.reservedNames.indexOf(key) !== -1) {
return Reflect.set(target, key, value, receiver);
}
var index = Number(key);
var node = isNaN(index) ?
target.namedItem(key) || undefined : target.item(index) || undefined;
if (node && node._parent) {
algorithm_1.mutation_replace(node, value, node._parent);
return true;
}
else {
return false;
}
};
/**
* Creates a new `HTMLCollection`.
*
* @param root - root node
* @param filter - node filter
*/
HTMLCollectionImpl._create = function (root, filter) {
if (filter === void 0) { filter = (function () { return true; }); }
return new HTMLCollectionImpl(root, filter);
};
HTMLCollectionImpl.reservedNames = ['_root', '_live', '_filter', 'length',
'item', 'namedItem', 'get', 'set'];
return HTMLCollectionImpl;
}());
exports.HTMLCollectionImpl = HTMLCollectionImpl;
//# sourceMappingURL=HTMLCollectionImpl.js.map
/***/ }),
/* 205 */,
/* 206 */,
/* 207 */,
/* 208 */,
/* 209 */,
/* 210 */,
/* 211 */
/***/ (function(__unusedmodule, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.STATE_GPG_PRIVATE_KEY_FINGERPRINT = exports.INPUT_DEFAULT_GPG_PASSPHRASE = exports.INPUT_DEFAULT_GPG_PRIVATE_KEY = exports.INPUT_GPG_PASSPHRASE = exports.INPUT_GPG_PRIVATE_KEY = exports.INPUT_OVERWRITE_SETTINGS = exports.INPUT_SETTINGS_PATH = exports.INPUT_SERVER_PASSWORD = exports.INPUT_SERVER_USERNAME = exports.INPUT_SERVER_ID = exports.INPUT_CHECK_LATEST = exports.INPUT_JDK_FILE = exports.INPUT_DISTRIBUTION = exports.INPUT_JAVA_PACKAGE = exports.INPUT_ARCHITECTURE = exports.INPUT_JAVA_VERSION = exports.MACOS_JAVA_CONTENT_POSTFIX = void 0;
exports.MACOS_JAVA_CONTENT_POSTFIX = 'Contents/Home';
exports.INPUT_JAVA_VERSION = 'java-version';
exports.INPUT_ARCHITECTURE = 'architecture';
exports.INPUT_JAVA_PACKAGE = 'java-package';
exports.INPUT_DISTRIBUTION = 'distribution';
exports.INPUT_JDK_FILE = 'jdkFile';
exports.INPUT_CHECK_LATEST = 'check-latest';
exports.INPUT_SERVER_ID = 'server-id';
exports.INPUT_SERVER_USERNAME = 'server-username';
exports.INPUT_SERVER_PASSWORD = 'server-password';
exports.INPUT_SETTINGS_PATH = 'settings-path';
exports.INPUT_OVERWRITE_SETTINGS = 'overwrite-settings';
exports.INPUT_GPG_PRIVATE_KEY = 'gpg-private-key';
exports.INPUT_GPG_PASSPHRASE = 'gpg-passphrase';
exports.INPUT_DEFAULT_GPG_PRIVATE_KEY = undefined;
exports.INPUT_DEFAULT_GPG_PASSPHRASE = 'GPG_PASSPHRASE';
exports.STATE_GPG_PRIVATE_KEY_FINGERPRINT = 'gpg-private-key-fingerprint';
/***/ }),
/* 212 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
// Export classes
var DOMParserImpl_1 = __webpack_require__(642);
exports.DOMParser = DOMParserImpl_1.DOMParserImpl;
//# sourceMappingURL=index.js.map
/***/ }),
/* 213 */,
/* 214 */,
/* 215 */,
/* 216 */,
/* 217 */,
/* 218 */,
/* 219 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const Range = __webpack_require__(124)
// Mostly just for testing and legacy API reasons
const toComparators = (range, options) =>
new Range(range, options).set
.map(comp => comp.map(c => c.value).join(' ').trim().split(' '))
module.exports = toComparators
/***/ }),
/* 220 */,
/* 221 */,
/* 222 */,
/* 223 */,
/* 224 */,
/* 225 */,
/* 226 */,
/* 227 */,
/* 228 */
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
var Type = __webpack_require__(945);
function resolveYamlBoolean(data) {
if (data === null) return false;
var max = data.length;
return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||
(max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));
}
function constructYamlBoolean(data) {
return data === 'true' ||
data === 'True' ||
data === 'TRUE';
}
function isBoolean(object) {
return Object.prototype.toString.call(object) === '[object Boolean]';
}
module.exports = new Type('tag:yaml.org,2002:bool', {
kind: 'scalar',
resolve: resolveYamlBoolean,
construct: constructYamlBoolean,
predicate: isBoolean,
represent: {
lowercase: function (object) { return object ? 'true' : 'false'; },
uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },
camelcase: function (object) { return object ? 'True' : 'False'; }
},
defaultStyle: 'lowercase'
});
/***/ }),
/* 229 */,
/* 230 */,
/* 231 */,
/* 232 */,
/* 233 */,
/* 234 */,
/* 235 */,
/* 236 */,
/* 237 */,
/* 238 */,
/* 239 */,
/* 240 */,
/* 241 */,
/* 242 */,
/* 243 */,
/* 244 */,
/* 245 */,
/* 246 */,
/* 247 */
/***/ (function(__unusedmodule, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Represents a mixin for an interface to be used to share APIs between
* documents and shadow roots. This mixin is implemented by
* {@link Document} and {@link ShadowRoot}.
*
* _Note:_ The DocumentOrShadowRoot mixin is expected to be used by other
* standards that want to define APIs shared between documents and shadow roots.
*/
var DocumentOrShadowRootImpl = /** @class */ (function () {
function DocumentOrShadowRootImpl() {
}
return DocumentOrShadowRootImpl;
}());
exports.DocumentOrShadowRootImpl = DocumentOrShadowRootImpl;
//# sourceMappingURL=DocumentOrShadowRootImpl.js.map
/***/ }),
/* 248 */,
/* 249 */,
/* 250 */,
/* 251 */,
/* 252 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var dom_1 = __webpack_require__(113);
dom_1.dom.setFeatures(true);
var dom_2 = __webpack_require__(113);
exports.DOMImplementation = dom_2.DOMImplementation;
var parser_1 = __webpack_require__(212);
exports.DOMParser = parser_1.DOMParser;
var serializer_1 = __webpack_require__(686);
exports.XMLSerializer = serializer_1.XMLSerializer;
//# sourceMappingURL=index.js.map
/***/ }),
/* 253 */,
/* 254 */,
/* 255 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var builder_1 = __webpack_require__(535);
exports.builder = builder_1.builder;
exports.create = builder_1.create;
exports.fragment = builder_1.fragment;
exports.convert = builder_1.convert;
exports.createCB = builder_1.createCB;
exports.fragmentCB = builder_1.fragmentCB;
//# sourceMappingURL=index.js.map
/***/ }),
/* 256 */,
/* 257 */,
/* 258 */,
/* 259 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const Range = __webpack_require__(124)
const intersects = (r1, r2, options) => {
r1 = new Range(r1, options)
r2 = new Range(r2, options)
return r1.intersects(r2)
}
module.exports = intersects
/***/ }),
/* 260 */,
/* 261 */,
/* 262 */,
/* 263 */
/***/ (function(__unusedmodule, exports) {
"use strict";
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __spread = (this && this.__spread) || function () {
for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Returns the count of bytes in a sequence.
*
* @param list - a byte sequence
*/
function length(list) {
/**
* A byte sequences length is the number of bytes it contains.
*/
return list.length;
}
exports.length = length;
/**
* Converts each byte to lowercase.
*
* @param list - a byte sequence
*/
function byteLowercase(list) {
/**
* To byte-lowercase a byte sequence, increase each byte it contains, in the
* range 0x41 (A) to 0x5A (Z), inclusive, by 0x20.
*/
for (var i = 0; i < list.length; i++) {
var c = list[i];
if (c >= 0x41 && c <= 0x5A) {
list[i] = c + 0x20;
}
}
}
exports.byteLowercase = byteLowercase;
/**
* Converts each byte to uppercase.
*
* @param list - a byte sequence
*/
function byteUppercase(list) {
/**
* To byte-uppercase a byte sequence, subtract each byte it contains, in the
* range 0x61 (a) to 0x7A (z), inclusive, by 0x20.
*/
for (var i = 0; i < list.length; i++) {
var c = list[i];
if (c >= 0x61 && c <= 0x7A) {
list[i] = c - 0x20;
}
}
}
exports.byteUppercase = byteUppercase;
/**
* Compares two byte sequences.
*
* @param listA - a byte sequence
* @param listB - a byte sequence
*/
function byteCaseInsensitiveMatch(listA, listB) {
/**
* A byte sequence A is a byte-case-insensitive match for a byte sequence B,
* if the byte-lowercase of A is the byte-lowercase of B.
*/
if (listA.length !== listB.length)
return false;
for (var i = 0; i < listA.length; i++) {
var a = listA[i];
var b = listB[i];
if (a >= 0x41 && a <= 0x5A)
a += 0x20;
if (b >= 0x41 && b <= 0x5A)
b += 0x20;
if (a !== b)
return false;
}
return true;
}
exports.byteCaseInsensitiveMatch = byteCaseInsensitiveMatch;
/**
* Determines if `listA` starts with `listB`.
*
* @param listA - a byte sequence
* @param listB - a byte sequence
*/
function startsWith(listA, listB) {
/**
* 1. Let i be 0.
* 2. While true:
* 2.1. Let aByte be the ith byte of a if i is less than as length; otherwise null.
* 2.3. Let bByte be the ith byte of b if i is less than bs length; otherwise null.
* 2.4. If bByte is null, then return true.
* 2.5. Return false if aByte is not bByte.
* 2.6. Set i to i + 1.
*/
var i = 0;
while (true) {
if (i >= listA.length)
return false;
if (i >= listB.length)
return true;
if (listA[i] !== listB[i])
return false;
i++;
}
}
exports.startsWith = startsWith;
/**
* Determines if `listA` is less than `listB`.
*
* @param listA - a byte sequence
* @param listB - a byte sequence
*/
function byteLessThan(listA, listB) {
/**
* 1. If b starts with a, then return false.
* 2. If a starts with b, then return true.
* 3. Let n be the smallest index such that the nth byte of a is different
* from the nth byte of b. (There has to be such an index, since neither byte
* sequence starts with the other.)
* 4. If the nth byte of a is less than the nth byte of b, then return true.
* 5. Return false.
*/
var i = 0;
while (true) {
if (i >= listA.length)
return false;
if (i >= listB.length)
return true;
var a = listA[i];
var b = listB[i];
if (a < b)
return true;
else if (a > b)
return false;
i++;
}
}
exports.byteLessThan = byteLessThan;
/**
* Decodes a byte sequence into a string.
*
* @param list - a byte sequence
*/
function isomorphicDecode(list) {
/**
* To isomorphic decode a byte sequence input, return a string whose length is
* equal to inputs length and whose code points have the same values as
* inputs bytes, in the same order.
*/
return String.fromCodePoint.apply(String, __spread(list));
}
exports.isomorphicDecode = isomorphicDecode;
//# sourceMappingURL=ByteSequence.js.map
/***/ }),
/* 264 */,
/* 265 */
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
// Standard YAML's Failsafe schema.
// http://www.yaml.org/spec/1.2/spec.html#id2802346
var Schema = __webpack_require__(733);
module.exports = new Schema({
explicit: [
__webpack_require__(450),
__webpack_require__(921),
__webpack_require__(988)
]
});
/***/ }),
/* 266 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
var DOMImpl_1 = __webpack_require__(648);
var util_1 = __webpack_require__(592);
/**
* Represents an ordered list of nodes.
* This is a static implementation of `NodeList`.
*/
var NodeListStaticImpl = /** @class */ (function () {
/**
* Initializes a new instance of `NodeList`.
*
* @param root - root node
*/
function NodeListStaticImpl(root) {
this._live = false;
this._items = [];
this._length = 0;
this._root = root;
this._items = [];
this._filter = function (node) { return true; };
return new Proxy(this, this);
}
Object.defineProperty(NodeListStaticImpl.prototype, "length", {
/** @inheritdoc */
get: function () {
/**
* The length attribute must return the number of nodes represented by
* the collection.
*/
return this._items.length;
},
enumerable: true,
configurable: true
});
/** @inheritdoc */
NodeListStaticImpl.prototype.item = function (index) {
/**
* The item(index) method must return the indexth node in the collection.
* If there is no indexth node in the collection, then the method must
* return null.
*/
if (index < 0 || index > this.length - 1)
return null;
return this._items[index];
};
/** @inheritdoc */
NodeListStaticImpl.prototype.keys = function () {
var _a;
return _a = {},
_a[Symbol.iterator] = function () {
var index = 0;
return {
next: function () {
if (index === this.length) {
return { done: true, value: null };
}
else {
return { done: false, value: index++ };
}
}.bind(this)
};
}.bind(this),
_a;
};
/** @inheritdoc */
NodeListStaticImpl.prototype.values = function () {
var _a;
return _a = {},
_a[Symbol.iterator] = function () {
var it = this[Symbol.iterator]();
return {
next: function () {
return it.next();
}
};
}.bind(this),
_a;
};
/** @inheritdoc */
NodeListStaticImpl.prototype.entries = function () {
var _a;
return _a = {},
_a[Symbol.iterator] = function () {
var it = this[Symbol.iterator]();
var index = 0;
return {
next: function () {
var itResult = it.next();
if (itResult.done) {
return { done: true, value: null };
}
else {
return { done: false, value: [index++, itResult.value] };
}
}
};
}.bind(this),
_a;
};
/** @inheritdoc */
NodeListStaticImpl.prototype[Symbol.iterator] = function () {
var it = this._items[Symbol.iterator]();
return {
next: function () {
return it.next();
}
};
};
/** @inheritdoc */
NodeListStaticImpl.prototype.forEach = function (callback, thisArg) {
var e_1, _a;
if (thisArg === undefined) {
thisArg = DOMImpl_1.dom.window;
}
var index = 0;
try {
for (var _b = __values(this._items), _c = _b.next(); !_c.done; _c = _b.next()) {
var node = _c.value;
callback.call(thisArg, node, index++, this);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
};
/**
* Implements a proxy get trap to provide array-like access.
*/
NodeListStaticImpl.prototype.get = function (target, key, receiver) {
if (!util_1.isString(key)) {
return Reflect.get(target, key, receiver);
}
var index = Number(key);
if (isNaN(index)) {
return Reflect.get(target, key, receiver);
}
return target._items[index] || undefined;
};
/**
* Implements a proxy set trap to provide array-like access.
*/
NodeListStaticImpl.prototype.set = function (target, key, value, receiver) {
if (!util_1.isString(key)) {
return Reflect.set(target, key, value, receiver);
}
var index = Number(key);
if (isNaN(index)) {
return Reflect.set(target, key, value, receiver);
}
if (index >= 0 && index < target._items.length) {
target._items[index] = value;
return true;
}
else {
return false;
}
};
/**
* Creates a new `NodeList`.
*
* @param root - root node
* @param items - a list of items to initialize the list
*/
NodeListStaticImpl._create = function (root, items) {
var list = new NodeListStaticImpl(root);
list._items = items;
return list;
};
return NodeListStaticImpl;
}());
exports.NodeListStaticImpl = NodeListStaticImpl;
//# sourceMappingURL=NodeListStaticImpl.js.map
/***/ }),
/* 267 */,
/* 268 */,
/* 269 */,
/* 270 */,
/* 271 */,
/* 272 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var DOMImpl_1 = __webpack_require__(648);
var interfaces_1 = __webpack_require__(970);
var TraversalAlgorithm_1 = __webpack_require__(464);
var TreeAlgorithm_1 = __webpack_require__(873);
/**
* Returns the next or previous node in the subtree, or `null` if
* there are none.
*
* @param iterator - the `NodeIterator` instance
* @param forward- `true` to return the next node, or `false` to
* return the previous node.
*/
function nodeIterator_traverse(iterator, forward) {
/**
* 1. Let node be iterators reference.
* 2. Let beforeNode be iterators pointer before reference.
*/
var node = iterator._reference;
var beforeNode = iterator._pointerBeforeReference;
/**
* 3. While true:
*/
while (true) {
/**
* 3.1. Branch on direction:
*/
if (forward) {
/**
* - next
*/
if (!beforeNode) {
/**
* If beforeNode is false, then set node to the first node following
* node in iterators iterator collection. If there is no such node,
* then return null.
*/
var nextNode = TreeAlgorithm_1.tree_getFollowingNode(iterator._root, node);
if (nextNode) {
node = nextNode;
}
else {
return null;
}
}
else {
/**
* If beforeNode is true, then set it to false.
*/
beforeNode = false;
}
}
else {
/**
* - previous
*/
if (beforeNode) {
/**
* If beforeNode is true, then set node to the first node preceding
* node in iterators iterator collection. If there is no such node,
* then return null.
*/
var prevNode = TreeAlgorithm_1.tree_getPrecedingNode(iterator.root, node);
if (prevNode) {
node = prevNode;
}
else {
return null;
}
}
else {
/**
* If beforeNode is false, then set it to true.
*/
beforeNode = true;
}
}
/**
* 3.2. Let result be the result of filtering node within iterator.
* 3.3. If result is FILTER_ACCEPT, then break.
*/
var result = TraversalAlgorithm_1.traversal_filter(iterator, node);
if (result === interfaces_1.FilterResult.Accept) {
break;
}
}
/**
* 4. Set iterators reference to node.
* 5. Set iterators pointer before reference to beforeNode.
* 6. Return node.
*/
iterator._reference = node;
iterator._pointerBeforeReference = beforeNode;
return node;
}
exports.nodeIterator_traverse = nodeIterator_traverse;
/**
* Gets the global iterator list.
*/
function nodeIterator_iteratorList() {
return DOMImpl_1.dom.window._iteratorList;
}
exports.nodeIterator_iteratorList = nodeIterator_iteratorList;
//# sourceMappingURL=NodeIteratorAlgorithm.js.map
/***/ }),
/* 273 */,
/* 274 */,
/* 275 */,
/* 276 */,
/* 277 */,
/* 278 */,
/* 279 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __spread = (this && this.__spread) || function () {
for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
var util_1 = __webpack_require__(592);
/**
* Gets the value corresponding to the given key.
*
* @param map - a map
* @param key - a key
*/
function get(map, key) {
return map.get(key);
}
exports.get = get;
/**
* Sets the value corresponding to the given key.
*
* @param map - a map
* @param key - a key
* @param val - a value
*/
function set(map, key, val) {
map.set(key, val);
}
exports.set = set;
/**
* Removes the item with the given key or all items matching condition.
*
* @param map - a map
* @param conditionOrItem - the key of an item to remove or a condition matching
* items to remove
*/
function remove(map, conditionOrItem) {
var e_1, _a, e_2, _b;
if (!util_1.isFunction(conditionOrItem)) {
map.delete(conditionOrItem);
}
else {
var toRemove = [];
try {
for (var map_1 = __values(map), map_1_1 = map_1.next(); !map_1_1.done; map_1_1 = map_1.next()) {
var item = map_1_1.value;
if (!!conditionOrItem.call(null, item)) {
toRemove.push(item[0]);
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (map_1_1 && !map_1_1.done && (_a = map_1.return)) _a.call(map_1);
}
finally { if (e_1) throw e_1.error; }
}
try {
for (var toRemove_1 = __values(toRemove), toRemove_1_1 = toRemove_1.next(); !toRemove_1_1.done; toRemove_1_1 = toRemove_1.next()) {
var key = toRemove_1_1.value;
map.delete(key);
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (toRemove_1_1 && !toRemove_1_1.done && (_b = toRemove_1.return)) _b.call(toRemove_1);
}
finally { if (e_2) throw e_2.error; }
}
}
}
exports.remove = remove;
/**
* Determines if the map contains a value with the given key.
*
* @param map - a map
* @param conditionOrItem - the key of an item to match or a condition matching
* items
*/
function contains(map, conditionOrItem) {
var e_3, _a;
if (!util_1.isFunction(conditionOrItem)) {
return map.has(conditionOrItem);
}
else {
try {
for (var map_2 = __values(map), map_2_1 = map_2.next(); !map_2_1.done; map_2_1 = map_2.next()) {
var item = map_2_1.value;
if (!!conditionOrItem.call(null, item)) {
return true;
}
}
}
catch (e_3_1) { e_3 = { error: e_3_1 }; }
finally {
try {
if (map_2_1 && !map_2_1.done && (_a = map_2.return)) _a.call(map_2);
}
finally { if (e_3) throw e_3.error; }
}
return false;
}
}
exports.contains = contains;
/**
* Gets the keys of the map.
*
* @param map - a map
*/
function keys(map) {
return new Set(map.keys());
}
exports.keys = keys;
/**
* Gets the values of the map.
*
* @param map - a map
*/
function values(map) {
return __spread(map.values());
}
exports.values = values;
/**
* Gets the size of the map.
*
* @param map - a map
* @param condition - an optional condition to match
*/
function size(map, condition) {
var e_4, _a;
if (condition === undefined) {
return map.size;
}
else {
var count = 0;
try {
for (var map_3 = __values(map), map_3_1 = map_3.next(); !map_3_1.done; map_3_1 = map_3.next()) {
var item = map_3_1.value;
if (!!condition.call(null, item)) {
count++;
}
}
}
catch (e_4_1) { e_4 = { error: e_4_1 }; }
finally {
try {
if (map_3_1 && !map_3_1.done && (_a = map_3.return)) _a.call(map_3);
}
finally { if (e_4) throw e_4.error; }
}
return count;
}
}
exports.size = size;
/**
* Determines if the map is empty.
*
* @param map - a map
*/
function isEmpty(map) {
return map.size === 0;
}
exports.isEmpty = isEmpty;
/**
* Returns an iterator for the items of the map.
*
* @param map - a map
* @param condition - an optional condition to match
*/
function forEach(map, condition) {
var map_4, map_4_1, item, e_5_1;
var e_5, _a;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
if (!(condition === undefined)) return [3 /*break*/, 2];
return [5 /*yield**/, __values(map)];
case 1:
_b.sent();
return [3 /*break*/, 9];
case 2:
_b.trys.push([2, 7, 8, 9]);
map_4 = __values(map), map_4_1 = map_4.next();
_b.label = 3;
case 3:
if (!!map_4_1.done) return [3 /*break*/, 6];
item = map_4_1.value;
if (!!!condition.call(null, item)) return [3 /*break*/, 5];
return [4 /*yield*/, item];
case 4:
_b.sent();
_b.label = 5;
case 5:
map_4_1 = map_4.next();
return [3 /*break*/, 3];
case 6: return [3 /*break*/, 9];
case 7:
e_5_1 = _b.sent();
e_5 = { error: e_5_1 };
return [3 /*break*/, 9];
case 8:
try {
if (map_4_1 && !map_4_1.done && (_a = map_4.return)) _a.call(map_4);
}
finally { if (e_5) throw e_5.error; }
return [7 /*endfinally*/];
case 9: return [2 /*return*/];
}
});
}
exports.forEach = forEach;
/**
* Creates and returns a shallow clone of map.
*
* @param map - a map
*/
function clone(map) {
return new Map(map);
}
exports.clone = clone;
/**
* Returns a new map containing items from the map sorted in ascending
* order.
*
* @param map - a map
* @param lessThanAlgo - a function that returns `true` if its first argument
* is less than its second argument, and `false` otherwise.
*/
function sortInAscendingOrder(map, lessThanAlgo) {
var list = new (Array.bind.apply(Array, __spread([void 0], map)))();
list.sort(function (itemA, itemB) {
return lessThanAlgo.call(null, itemA, itemB) ? -1 : 1;
});
return new Map(list);
}
exports.sortInAscendingOrder = sortInAscendingOrder;
/**
* Returns a new map containing items from the map sorted in descending
* order.
*
* @param map - a map
* @param lessThanAlgo - a function that returns `true` if its first argument
* is less than its second argument, and `false` otherwise.
*/
function sortInDescendingOrder(map, lessThanAlgo) {
var list = new (Array.bind.apply(Array, __spread([void 0], map)))();
list.sort(function (itemA, itemB) {
return lessThanAlgo.call(null, itemA, itemB) ? 1 : -1;
});
return new Map(list);
}
exports.sortInDescendingOrder = sortInDescendingOrder;
//# sourceMappingURL=Map.js.map
/***/ }),
/* 280 */,
/* 281 */,
/* 282 */,
/* 283 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const compare = __webpack_require__(874)
const compareLoose = (a, b) => compare(a, b, true)
module.exports = compareLoose
/***/ }),
/* 284 */,
/* 285 */,
/* 286 */
/***/ (function(__unusedmodule, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Represents the state of the URL parser.
*/
var ParserState;
(function (ParserState) {
ParserState[ParserState["SchemeStart"] = 0] = "SchemeStart";
ParserState[ParserState["Scheme"] = 1] = "Scheme";
ParserState[ParserState["NoScheme"] = 2] = "NoScheme";
ParserState[ParserState["SpecialRelativeOrAuthority"] = 3] = "SpecialRelativeOrAuthority";
ParserState[ParserState["PathOrAuthority"] = 4] = "PathOrAuthority";
ParserState[ParserState["Relative"] = 5] = "Relative";
ParserState[ParserState["RelativeSlash"] = 6] = "RelativeSlash";
ParserState[ParserState["SpecialAuthoritySlashes"] = 7] = "SpecialAuthoritySlashes";
ParserState[ParserState["SpecialAuthorityIgnoreSlashes"] = 8] = "SpecialAuthorityIgnoreSlashes";
ParserState[ParserState["Authority"] = 9] = "Authority";
ParserState[ParserState["Host"] = 10] = "Host";
ParserState[ParserState["Hostname"] = 11] = "Hostname";
ParserState[ParserState["Port"] = 12] = "Port";
ParserState[ParserState["File"] = 13] = "File";
ParserState[ParserState["FileSlash"] = 14] = "FileSlash";
ParserState[ParserState["FileHost"] = 15] = "FileHost";
ParserState[ParserState["PathStart"] = 16] = "PathStart";
ParserState[ParserState["Path"] = 17] = "Path";
ParserState[ParserState["CannotBeABaseURLPath"] = 18] = "CannotBeABaseURLPath";
ParserState[ParserState["Query"] = 19] = "Query";
ParserState[ParserState["Fragment"] = 20] = "Fragment";
})(ParserState = exports.ParserState || (exports.ParserState = {}));
exports.OpaqueOrigin = ["", "", null, null];
//# sourceMappingURL=interfaces.js.map
/***/ }),
/* 287 */,
/* 288 */,
/* 289 */,
/* 290 */,
/* 291 */,
/* 292 */,
/* 293 */,
/* 294 */,
/* 295 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var _1 = __webpack_require__(535);
/**
* Creates an XML builder which serializes the document in chunks.
*
* @param options - callback builder options
*
* @returns callback builder
*/
function createCB(options) {
return new _1.XMLBuilderCBImpl(options);
}
exports.createCB = createCB;
/**
* Creates an XML builder which serializes the fragment in chunks.
*
* @param options - callback builder options
*
* @returns callback builder
*/
function fragmentCB(options) {
return new _1.XMLBuilderCBImpl(options, true);
}
exports.fragmentCB = fragmentCB;
//# sourceMappingURL=BuilderFunctionsCB.js.map
/***/ }),
/* 296 */,
/* 297 */,
/* 298 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const compare = __webpack_require__(874)
const eq = (a, b, loose) => compare(a, b, loose) === 0
module.exports = eq
/***/ }),
/* 299 */,
/* 300 */,
/* 301 */,
/* 302 */,
/* 303 */,
/* 304 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
var DOMImpl_1 = __webpack_require__(648);
var TreeAlgorithm_1 = __webpack_require__(873);
var util_1 = __webpack_require__(918);
var ShadowTreeAlgorithm_1 = __webpack_require__(180);
var supportedTokens = new Map();
/**
* Runs removing steps for node.
*
* @param removedNode - removed node
* @param oldParent - old parent node
*/
function dom_runRemovingSteps(removedNode, oldParent) {
// No steps defined
}
exports.dom_runRemovingSteps = dom_runRemovingSteps;
/**
* Runs cloning steps for node.
*
* @param copy - node clone
* @param node - node
* @param document - document to own the cloned node
* @param cloneChildrenFlag - whether child nodes are cloned
*/
function dom_runCloningSteps(copy, node, document, cloneChildrenFlag) {
// No steps defined
}
exports.dom_runCloningSteps = dom_runCloningSteps;
/**
* Runs adopting steps for node.
*
* @param node - node
* @param oldDocument - old document
*/
function dom_runAdoptingSteps(node, oldDocument) {
// No steps defined
}
exports.dom_runAdoptingSteps = dom_runAdoptingSteps;
/**
* Runs attribute change steps for an element node.
*
* @param element - element node owning the attribute
* @param localName - attribute's local name
* @param oldValue - attribute's old value
* @param value - attribute's new value
* @param namespace - attribute's namespace
*/
function dom_runAttributeChangeSteps(element, localName, oldValue, value, namespace) {
var e_1, _a;
// run default steps
if (DOMImpl_1.dom.features.slots) {
updateASlotablesName.call(element, element, localName, oldValue, value, namespace);
updateASlotsName.call(element, element, localName, oldValue, value, namespace);
}
updateAnElementID.call(element, element, localName, value, namespace);
try {
// run custom steps
for (var _b = __values(element._attributeChangeSteps), _c = _b.next(); !_c.done; _c = _b.next()) {
var step = _c.value;
step.call(element, element, localName, oldValue, value, namespace);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
}
exports.dom_runAttributeChangeSteps = dom_runAttributeChangeSteps;
/**
* Runs insertion steps for a node.
*
* @param insertedNode - inserted node
*/
function dom_runInsertionSteps(insertedNode) {
// No steps defined
}
exports.dom_runInsertionSteps = dom_runInsertionSteps;
/**
* Runs pre-removing steps for a node iterator and node.
*
* @param nodeIterator - a node iterator
* @param toBeRemoved - node to be removed
*/
function dom_runNodeIteratorPreRemovingSteps(nodeIterator, toBeRemoved) {
removeNodeIterator.call(nodeIterator, nodeIterator, toBeRemoved);
}
exports.dom_runNodeIteratorPreRemovingSteps = dom_runNodeIteratorPreRemovingSteps;
/**
* Determines if there are any supported tokens defined for the given
* attribute name.
*
* @param attributeName - an attribute name
*/
function dom_hasSupportedTokens(attributeName) {
return supportedTokens.has(attributeName);
}
exports.dom_hasSupportedTokens = dom_hasSupportedTokens;
/**
* Returns the set of supported tokens defined for the given attribute name.
*
* @param attributeName - an attribute name
*/
function dom_getSupportedTokens(attributeName) {
return supportedTokens.get(attributeName) || new Set();
}
exports.dom_getSupportedTokens = dom_getSupportedTokens;
/**
* Runs event construction steps.
*
* @param event - an event
*/
function dom_runEventConstructingSteps(event) {
// No steps defined
}
exports.dom_runEventConstructingSteps = dom_runEventConstructingSteps;
/**
* Runs child text content change steps for a parent node.
*
* @param parent - parent node with text node child nodes
*/
function dom_runChildTextContentChangeSteps(parent) {
// No steps defined
}
exports.dom_runChildTextContentChangeSteps = dom_runChildTextContentChangeSteps;
/**
* Defines pre-removing steps for a node iterator.
*/
function removeNodeIterator(nodeIterator, toBeRemovedNode) {
/**
* 1. If toBeRemovedNode is not an inclusive ancestor of nodeIterators
* reference, or toBeRemovedNode is nodeIterators root, then return.
*/
if (toBeRemovedNode === nodeIterator._root ||
!TreeAlgorithm_1.tree_isAncestorOf(nodeIterator._reference, toBeRemovedNode, true)) {
return;
}
/**
* 2. If nodeIterators pointer before reference is true, then:
*/
if (nodeIterator._pointerBeforeReference) {
/**
* 2.1. Let next be toBeRemovedNodes first following node that is an
* inclusive descendant of nodeIterators root and is not an inclusive
* descendant of toBeRemovedNode, and null if there is no such node.
*/
while (true) {
var nextNode = TreeAlgorithm_1.tree_getFollowingNode(nodeIterator._root, toBeRemovedNode);
if (nextNode !== null &&
TreeAlgorithm_1.tree_isDescendantOf(nodeIterator._root, nextNode, true) &&
!TreeAlgorithm_1.tree_isDescendantOf(toBeRemovedNode, nextNode, true)) {
/**
* 2.2. If next is non-null, then set nodeIterators reference to next
* and return.
*/
nodeIterator._reference = nextNode;
return;
}
else if (nextNode === null) {
/**
* 2.3. Otherwise, set nodeIterators pointer before reference to false.
*/
nodeIterator._pointerBeforeReference = false;
return;
}
}
}
/**
* 3. Set nodeIterators reference to toBeRemovedNodes parent, if
* toBeRemovedNodes previous sibling is null, and to the inclusive
* descendant of toBeRemovedNodes previous sibling that appears last in
* tree order otherwise.
*/
if (toBeRemovedNode._previousSibling === null) {
if (toBeRemovedNode._parent !== null) {
nodeIterator._reference = toBeRemovedNode._parent;
}
}
else {
var referenceNode = toBeRemovedNode._previousSibling;
var childNode = TreeAlgorithm_1.tree_getFirstDescendantNode(toBeRemovedNode._previousSibling, true, false);
while (childNode !== null) {
if (childNode !== null) {
referenceNode = childNode;
}
// loop through to get the last descendant node
childNode = TreeAlgorithm_1.tree_getNextDescendantNode(toBeRemovedNode._previousSibling, childNode, true, false);
}
nodeIterator._reference = referenceNode;
}
}
/**
* Defines attribute change steps to update a slots name.
*/
function updateASlotsName(element, localName, oldValue, value, namespace) {
/**
* 1. If element is a slot, localName is name, and namespace is null, then:
* 1.1. If value is oldValue, then return.
* 1.2. If value is null and oldValue is the empty string, then return.
* 1.3. If value is the empty string and oldValue is null, then return.
* 1.4. If value is null or the empty string, then set elements name to the
* empty string.
* 1.5. Otherwise, set elements name to value.
* 1.6. Run assign slotables for a tree with elements root.
*/
if (util_1.Guard.isSlot(element) && localName === "name" && namespace === null) {
if (value === oldValue)
return;
if (value === null && oldValue === '')
return;
if (value === '' && oldValue === null)
return;
if ((value === null || value === '')) {
element._name = '';
}
else {
element._name = value;
}
ShadowTreeAlgorithm_1.shadowTree_assignSlotablesForATree(TreeAlgorithm_1.tree_rootNode(element));
}
}
/**
* Defines attribute change steps to update a slotables name.
*/
function updateASlotablesName(element, localName, oldValue, value, namespace) {
/**
* 1. If localName is slot and namespace is null, then:
* 1.1. If value is oldValue, then return.
* 1.2. If value is null and oldValue is the empty string, then return.
* 1.3. If value is the empty string and oldValue is null, then return.
* 1.4. If value is null or the empty string, then set elements name to
* the empty string.
* 1.5. Otherwise, set elements name to value.
* 1.6. If element is assigned, then run assign slotables for elements
* assigned slot.
* 1.7. Run assign a slot for element.
*/
if (util_1.Guard.isSlotable(element) && localName === "slot" && namespace === null) {
if (value === oldValue)
return;
if (value === null && oldValue === '')
return;
if (value === '' && oldValue === null)
return;
if ((value === null || value === '')) {
element._name = '';
}
else {
element._name = value;
}
if (ShadowTreeAlgorithm_1.shadowTree_isAssigned(element)) {
ShadowTreeAlgorithm_1.shadowTree_assignSlotables(element._assignedSlot);
}
ShadowTreeAlgorithm_1.shadowTree_assignASlot(element);
}
}
/**
* Defines attribute change steps to update an element's ID.
*/
function updateAnElementID(element, localName, value, namespace) {
/**
* 1. If localName is id, namespace is null, and value is null or the empty
* string, then unset elements ID.
* 2. Otherwise, if localName is id, namespace is null, then set elements
* ID to value.
*/
if (localName === "id" && namespace === null) {
if (!value)
element._uniqueIdentifier = undefined;
else
element._uniqueIdentifier = value;
}
}
//# sourceMappingURL=DOMAlgorithm.js.map
/***/ }),
/* 305 */
/***/ (function(__unusedmodule, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Pre-serializes XML nodes.
*/
var BaseReader = /** @class */ (function () {
/**
* Initializes a new instance of `BaseReader`.
*
* @param builderOptions - XML builder options
*/
function BaseReader(builderOptions) {
this._builderOptions = builderOptions;
if (builderOptions.parser) {
Object.assign(this, builderOptions.parser);
}
}
BaseReader.prototype._docType = function (parent, name, publicId, systemId) {
return parent.dtd({ name: name, pubID: publicId, sysID: systemId });
};
BaseReader.prototype._comment = function (parent, data) {
return parent.com(data);
};
BaseReader.prototype._text = function (parent, data) {
return parent.txt(data);
};
BaseReader.prototype._instruction = function (parent, target, data) {
return parent.ins(target, data);
};
BaseReader.prototype._cdata = function (parent, data) {
return parent.dat(data);
};
BaseReader.prototype._element = function (parent, namespace, name) {
return (namespace === undefined ? parent.ele(name) : parent.ele(namespace, name));
};
BaseReader.prototype._attribute = function (parent, namespace, name, value) {
return (namespace === undefined ? parent.att(name, value) : parent.att(namespace, name, value));
};
/**
* Main parser function which parses the given object and returns an XMLBuilder.
*
* @param node - node to recieve parsed content
* @param obj - object to parse
*/
BaseReader.prototype.parse = function (node, obj) {
return this._parse(node, obj);
};
/**
* Creates a DocType node.
* The node will be skipped if the function returns `undefined`.
*
* @param name - node name
* @param publicId - public identifier
* @param systemId - system identifier
*/
BaseReader.prototype.docType = function (parent, name, publicId, systemId) {
return this._docType(parent, name, publicId, systemId);
};
/**
* Creates a comment node.
* The node will be skipped if the function returns `undefined`.
*
* @param parent - parent node
* @param data - node data
*/
BaseReader.prototype.comment = function (parent, data) {
return this._comment(parent, data);
};
/**
* Creates a text node.
* The node will be skipped if the function returns `undefined`.
*
* @param parent - parent node
* @param data - node data
*/
BaseReader.prototype.text = function (parent, data) {
return this._text(parent, data);
};
/**
* Creates a processing instruction node.
* The node will be skipped if the function returns `undefined`.
*
* @param parent - parent node
* @param target - instruction target
* @param data - node data
*/
BaseReader.prototype.instruction = function (parent, target, data) {
return this._instruction(parent, target, data);
};
/**
* Creates a CData section node.
* The node will be skipped if the function returns `undefined`.
*
* @param parent - parent node
* @param data - node data
*/
BaseReader.prototype.cdata = function (parent, data) {
return this._cdata(parent, data);
};
/**
* Creates an element node.
* The node will be skipped if the function returns `undefined`.
*
* @param parent - parent node
* @param namespace - node namespace
* @param name - node name
*/
BaseReader.prototype.element = function (parent, namespace, name) {
return this._element(parent, namespace, name);
};
/**
* Creates an attribute or namespace declaration.
* The node will be skipped if the function returns `undefined`.
*
* @param parent - parent node
* @param namespace - node namespace
* @param name - node name
* @param value - node value
*/
BaseReader.prototype.attribute = function (parent, namespace, name, value) {
return this._attribute(parent, namespace, name, value);
};
return BaseReader;
}());
exports.BaseReader = BaseReader;
//# sourceMappingURL=BaseReader.js.map
/***/ }),
/* 306 */,
/* 307 */,
/* 308 */,
/* 309 */,
/* 310 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const Range = __webpack_require__(124)
const satisfies = (version, range, options) => {
try {
range = new Range(range, options)
} catch (er) {
return false
}
return range.test(version)
}
module.exports = satisfies
/***/ }),
/* 311 */,
/* 312 */,
/* 313 */,
/* 314 */,
/* 315 */,
/* 316 */,
/* 317 */,
/* 318 */,
/* 319 */,
/* 320 */,
/* 321 */,
/* 322 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getToolcachePath = exports.isVersionSatisfies = exports.getDownloadArchiveExtension = exports.extractJdkFile = exports.getVersionFromToolcachePath = exports.getBooleanInput = exports.getTempDir = void 0;
const os_1 = __importDefault(__webpack_require__(87));
const path_1 = __importDefault(__webpack_require__(622));
const fs = __importStar(__webpack_require__(747));
const semver = __importStar(__webpack_require__(876));
const core = __importStar(__webpack_require__(470));
const tc = __importStar(__webpack_require__(139));
function getTempDir() {
let tempDirectory = process.env['RUNNER_TEMP'] || os_1.default.tmpdir();
return tempDirectory;
}
exports.getTempDir = getTempDir;
function getBooleanInput(inputName, defaultValue = false) {
return (core.getInput(inputName) || String(defaultValue)).toUpperCase() === 'TRUE';
}
exports.getBooleanInput = getBooleanInput;
function getVersionFromToolcachePath(toolPath) {
if (toolPath) {
return path_1.default.basename(path_1.default.dirname(toolPath));
}
return toolPath;
}
exports.getVersionFromToolcachePath = getVersionFromToolcachePath;
function extractJdkFile(toolPath, extension) {
return __awaiter(this, void 0, void 0, function* () {
if (!extension) {
extension = toolPath.endsWith('.tar.gz') ? 'tar.gz' : path_1.default.extname(toolPath);
if (extension.startsWith('.')) {
extension = extension.substring(1);
}
}
switch (extension) {
case 'tar.gz':
case 'tar':
return yield tc.extractTar(toolPath);
case 'zip':
return yield tc.extractZip(toolPath);
default:
return yield tc.extract7z(toolPath);
}
});
}
exports.extractJdkFile = extractJdkFile;
function getDownloadArchiveExtension() {
return process.platform === 'win32' ? 'zip' : 'tar.gz';
}
exports.getDownloadArchiveExtension = getDownloadArchiveExtension;
function isVersionSatisfies(range, version) {
var _a;
if (semver.valid(range)) {
// if full version with build digit is provided as a range (such as '1.2.3+4')
// we should check for exact equal via compareBuild
// since semver.satisfies doesn't handle 4th digit
const semRange = semver.parse(range);
if (semRange && ((_a = semRange.build) === null || _a === void 0 ? void 0 : _a.length) > 0) {
return semver.compareBuild(range, version) === 0;
}
}
return semver.satisfies(version, range);
}
exports.isVersionSatisfies = isVersionSatisfies;
function getToolcachePath(toolName, version, architecture) {
var _a;
const toolcacheRoot = (_a = process.env['RUNNER_TOOL_CACHE']) !== null && _a !== void 0 ? _a : '';
const fullPath = path_1.default.join(toolcacheRoot, toolName, version, architecture);
if (fs.existsSync(fullPath)) {
return fullPath;
}
return null;
}
exports.getToolcachePath = getToolcachePath;
/***/ }),
/* 323 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const outside = __webpack_require__(881)
// Determine if version is less than all the versions possible in the range
const ltr = (version, range, options) => outside(version, range, '<', options)
module.exports = ltr
/***/ }),
/* 324 */,
/* 325 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
var ObjectWriter_1 = __webpack_require__(419);
var util_1 = __webpack_require__(592);
var BaseWriter_1 = __webpack_require__(462);
/**
* Serializes XML nodes into a YAML string.
*/
var YAMLWriter = /** @class */ (function (_super) {
__extends(YAMLWriter, _super);
/**
* Initializes a new instance of `YAMLWriter`.
*
* @param builderOptions - XML builder options
* @param writerOptions - serialization options
*/
function YAMLWriter(builderOptions, writerOptions) {
var _this = _super.call(this, builderOptions) || this;
// provide default options
_this._writerOptions = util_1.applyDefaults(writerOptions, {
wellFormed: false,
noDoubleEncoding: false,
indent: ' ',
newline: '\n',
offset: 0,
group: false,
verbose: false
});
if (_this._writerOptions.indent.length < 2) {
throw new Error("YAML indententation string must be at least two characters long.");
}
if (_this._writerOptions.offset < 0) {
throw new Error("YAML offset should be zero or a positive number.");
}
return _this;
}
/**
* Produces an XML serialization of the given node.
*
* @param node - node to serialize
* @param writerOptions - serialization options
*/
YAMLWriter.prototype.serialize = function (node) {
// convert to object
var objectWriterOptions = util_1.applyDefaults(this._writerOptions, {
format: "object",
wellFormed: false,
noDoubleEncoding: false,
});
var objectWriter = new ObjectWriter_1.ObjectWriter(this._builderOptions, objectWriterOptions);
var val = objectWriter.serialize(node);
var markup = this._beginLine(this._writerOptions, 0) + '---' + this._endLine(this._writerOptions) +
this._convertObject(val, this._writerOptions, 0);
// remove trailing newline
/* istanbul ignore else */
if (markup.slice(-this._writerOptions.newline.length) === this._writerOptions.newline) {
markup = markup.slice(0, -this._writerOptions.newline.length);
}
return markup;
};
/**
* Produces an XML serialization of the given object.
*
* @param obj - object to serialize
* @param options - serialization options
* @param level - depth of the XML tree
* @param indentLeaf - indents leaf nodes
*/
YAMLWriter.prototype._convertObject = function (obj, options, level, suppressIndent) {
var e_1, _a;
var _this = this;
if (suppressIndent === void 0) { suppressIndent = false; }
var markup = '';
if (util_1.isArray(obj)) {
try {
for (var obj_1 = __values(obj), obj_1_1 = obj_1.next(); !obj_1_1.done; obj_1_1 = obj_1.next()) {
var val = obj_1_1.value;
markup += this._beginLine(options, level, true);
if (!util_1.isObject(val)) {
markup += this._val(val) + this._endLine(options);
}
else if (util_1.isEmpty(val)) {
markup += '""' + this._endLine(options);
}
else {
markup += this._convertObject(val, options, level, true);
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (obj_1_1 && !obj_1_1.done && (_a = obj_1.return)) _a.call(obj_1);
}
finally { if (e_1) throw e_1.error; }
}
}
else /* if (isObject(obj)) */ {
util_1.forEachObject(obj, function (key, val) {
if (suppressIndent) {
markup += _this._key(key);
suppressIndent = false;
}
else {
markup += _this._beginLine(options, level) + _this._key(key);
}
if (!util_1.isObject(val)) {
markup += ' ' + _this._val(val) + _this._endLine(options);
}
else if (util_1.isEmpty(val)) {
markup += ' ""' + _this._endLine(options);
}
else {
markup += _this._endLine(options) +
_this._convertObject(val, options, level + 1);
}
}, this);
}
return markup;
};
/**
* Produces characters to be prepended to a line of string in pretty-print
* mode.
*
* @param options - serialization options
* @param level - current depth of the XML tree
* @param isArray - whether this line is an array item
*/
YAMLWriter.prototype._beginLine = function (options, level, isArray) {
if (isArray === void 0) { isArray = false; }
var indentLevel = options.offset + level + 1;
var chars = new Array(indentLevel).join(options.indent);
if (isArray) {
return chars.substr(0, chars.length - 2) + '-' + chars.substr(-1, 1);
}
else {
return chars;
}
};
/**
* Produces characters to be appended to a line of string in pretty-print
* mode.
*
* @param options - serialization options
*/
YAMLWriter.prototype._endLine = function (options) {
return options.newline;
};
/**
* Produces a YAML key string delimited with double quotes.
*/
YAMLWriter.prototype._key = function (key) {
return "\"" + key + "\":";
};
/**
* Produces a YAML value string delimited with double quotes.
*/
YAMLWriter.prototype._val = function (val) {
return JSON.stringify(val);
};
return YAMLWriter;
}(BaseWriter_1.BaseWriter));
exports.YAMLWriter = YAMLWriter;
//# sourceMappingURL=YAMLWriter.js.map
/***/ }),
/* 326 */,
/* 327 */,
/* 328 */,
/* 329 */,
/* 330 */,
/* 331 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generate = exports.createAuthenticationSettings = exports.configureAuthentication = exports.SETTINGS_FILE = exports.M2_DIR = void 0;
const path = __importStar(__webpack_require__(622));
const core = __importStar(__webpack_require__(470));
const io = __importStar(__webpack_require__(1));
const fs = __importStar(__webpack_require__(747));
const os = __importStar(__webpack_require__(87));
const xmlbuilder2_1 = __webpack_require__(255);
const constants = __importStar(__webpack_require__(211));
const gpg = __importStar(__webpack_require__(884));
const util_1 = __webpack_require__(322);
exports.M2_DIR = '.m2';
exports.SETTINGS_FILE = 'settings.xml';
function configureAuthentication() {
return __awaiter(this, void 0, void 0, function* () {
const id = core.getInput(constants.INPUT_SERVER_ID);
const username = core.getInput(constants.INPUT_SERVER_USERNAME);
const password = core.getInput(constants.INPUT_SERVER_PASSWORD);
const settingsDirectory = core.getInput(constants.INPUT_SETTINGS_PATH) || path.join(os.homedir(), exports.M2_DIR);
const overwriteSettings = util_1.getBooleanInput(constants.INPUT_OVERWRITE_SETTINGS, true);
const gpgPrivateKey = core.getInput(constants.INPUT_GPG_PRIVATE_KEY) || constants.INPUT_DEFAULT_GPG_PRIVATE_KEY;
const gpgPassphrase = core.getInput(constants.INPUT_GPG_PASSPHRASE) ||
(gpgPrivateKey ? constants.INPUT_DEFAULT_GPG_PASSPHRASE : undefined);
if (gpgPrivateKey) {
core.setSecret(gpgPrivateKey);
}
yield createAuthenticationSettings(id, username, password, settingsDirectory, overwriteSettings, gpgPassphrase);
if (gpgPrivateKey) {
core.info('Importing private gpg key');
const keyFingerprint = (yield gpg.importKey(gpgPrivateKey)) || '';
core.saveState(constants.STATE_GPG_PRIVATE_KEY_FINGERPRINT, keyFingerprint);
}
});
}
exports.configureAuthentication = configureAuthentication;
function createAuthenticationSettings(id, username, password, settingsDirectory, overwriteSettings, gpgPassphrase = undefined) {
return __awaiter(this, void 0, void 0, function* () {
core.info(`Creating ${exports.SETTINGS_FILE} with server-id: ${id}`);
// when an alternate m2 location is specified use only that location (no .m2 directory)
// otherwise use the home/.m2/ path
yield io.mkdirP(settingsDirectory);
yield write(settingsDirectory, generate(id, username, password, gpgPassphrase), overwriteSettings);
});
}
exports.createAuthenticationSettings = createAuthenticationSettings;
// only exported for testing purposes
function generate(id, username, password, gpgPassphrase) {
const xmlObj = {
settings: {
'@xmlns': 'http://maven.apache.org/SETTINGS/1.0.0',
'@xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance',
'@xsi:schemaLocation': 'http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd',
servers: {
server: [
{
id: id,
username: `\${env.${username}}`,
password: `\${env.${password}}`
}
]
}
}
};
if (gpgPassphrase) {
const gpgServer = {
id: 'gpg.passphrase',
passphrase: `\${env.${gpgPassphrase}}`
};
xmlObj.settings.servers.server.push(gpgServer);
}
return xmlbuilder2_1.create(xmlObj).end({
headless: true,
prettyPrint: true,
width: 80
});
}
exports.generate = generate;
function write(directory, settings, overwriteSettings) {
return __awaiter(this, void 0, void 0, function* () {
const location = path.join(directory, exports.SETTINGS_FILE);
const settingsExists = fs.existsSync(location);
if (settingsExists && overwriteSettings) {
core.info(`Overwriting existing file ${location}`);
}
else if (!settingsExists) {
core.info(`Writing to ${location}`);
}
else {
core.info(`Skipping generation ${location} because file already exists and overwriting is not required`);
return;
}
return fs.writeFileSync(location, settings, {
encoding: 'utf-8',
flag: 'w'
});
});
}
/***/ }),
/* 332 */,
/* 333 */,
/* 334 */,
/* 335 */,
/* 336 */,
/* 337 */,
/* 338 */,
/* 339 */,
/* 340 */,
/* 341 */,
/* 342 */,
/* 343 */,
/* 344 */
/***/ (function(__unusedmodule, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var PotentialCustomElementName = /[a-z]([\0-\t\x2D\._a-z\xB7\xC0-\xD6\xD8-\xF6\xF8-\u037D\u037F-\u1FFF\u200C\u200D\u203F\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])*-([\0-\t\x2D\._a-z\xB7\xC0-\xD6\xD8-\xF6\xF8-\u037D\u037F-\u1FFF\u200C\u200D\u203F\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])*/;
var NamesWithHyphen = new Set(['annotation-xml', 'color-profile',
'font-face', 'font-face-src', 'font-face-uri', 'font-face-format',
'font-face-name', 'missing-glyph']);
var ElementNames = new Set(['article', 'aside', 'blockquote',
'body', 'div', 'footer', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6',
'header', 'main', 'nav', 'p', 'section', 'span']);
var VoidElementNames = new Set(['area', 'base', 'basefont',
'bgsound', 'br', 'col', 'embed', 'frame', 'hr', 'img', 'input', 'keygen',
'link', 'menuitem', 'meta', 'param', 'source', 'track', 'wbr']);
var ShadowHostNames = new Set(['article', 'aside', 'blockquote', 'body',
'div', 'footer', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'main',
'nav', 'p', 'section', 'span']);
/**
* Determines if the given string is a valid custom element name.
*
* @param name - a name string
*/
function customElement_isValidCustomElementName(name) {
if (!PotentialCustomElementName.test(name))
return false;
if (NamesWithHyphen.has(name))
return false;
return true;
}
exports.customElement_isValidCustomElementName = customElement_isValidCustomElementName;
/**
* Determines if the given string is a valid element name.
*
* @param name - a name string
*/
function customElement_isValidElementName(name) {
return (ElementNames.has(name));
}
exports.customElement_isValidElementName = customElement_isValidElementName;
/**
* Determines if the given string is a void element name.
*
* @param name - a name string
*/
function customElement_isVoidElementName(name) {
return (VoidElementNames.has(name));
}
exports.customElement_isVoidElementName = customElement_isVoidElementName;
/**
* Determines if the given string is a valid shadow host element name.
*
* @param name - a name string
*/
function customElement_isValidShadowHostName(name) {
return (ShadowHostNames.has(name));
}
exports.customElement_isValidShadowHostName = customElement_isValidShadowHostName;
/**
* Enqueues an upgrade reaction for a custom element.
*
* @param element - a custom element
* @param definition - a custom element definition
*/
function customElement_enqueueACustomElementUpgradeReaction(element, definition) {
// TODO: Implement in HTML DOM
}
exports.customElement_enqueueACustomElementUpgradeReaction = customElement_enqueueACustomElementUpgradeReaction;
/**
* Enqueues a callback reaction for a custom element.
*
* @param element - a custom element
* @param callbackName - name of the callback
* @param args - callback arguments
*/
function customElement_enqueueACustomElementCallbackReaction(element, callbackName, args) {
// TODO: Implement in HTML DOM
}
exports.customElement_enqueueACustomElementCallbackReaction = customElement_enqueueACustomElementCallbackReaction;
/**
* Upgrade a custom element.
*
* @param element - a custom element
*/
function customElement_upgrade(definition, element) {
// TODO: Implement in HTML DOM
}
exports.customElement_upgrade = customElement_upgrade;
/**
* Tries to upgrade a custom element.
*
* @param element - a custom element
*/
function customElement_tryToUpgrade(element) {
// TODO: Implement in HTML DOM
}
exports.customElement_tryToUpgrade = customElement_tryToUpgrade;
/**
* Looks up a custom element definition.
*
* @param document - a document
* @param namespace - element namespace
* @param localName - element local name
* @param is - an `is` value
*/
function customElement_lookUpACustomElementDefinition(document, namespace, localName, is) {
// TODO: Implement in HTML DOM
return null;
}
exports.customElement_lookUpACustomElementDefinition = customElement_lookUpACustomElementDefinition;
//# sourceMappingURL=CustomElementAlgorithm.js.map
/***/ }),
/* 345 */,
/* 346 */,
/* 347 */,
/* 348 */,
/* 349 */,
/* 350 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var interfaces_1 = __webpack_require__(970);
var TreeAlgorithm_1 = __webpack_require__(873);
/**
* Defines the position of a boundary point relative to another.
*
* @param bp - a boundary point
* @param relativeTo - a boundary point to compare to
*/
function boundaryPoint_position(bp, relativeTo) {
var nodeA = bp[0];
var offsetA = bp[1];
var nodeB = relativeTo[0];
var offsetB = relativeTo[1];
/**
* 1. Assert: nodeA and nodeB have the same root.
*/
console.assert(TreeAlgorithm_1.tree_rootNode(nodeA) === TreeAlgorithm_1.tree_rootNode(nodeB), "Boundary points must share the same root node.");
/**
* 2. If nodeA is nodeB, then return equal if offsetA is offsetB, before
* if offsetA is less than offsetB, and after if offsetA is greater than
* offsetB.
*/
if (nodeA === nodeB) {
if (offsetA === offsetB) {
return interfaces_1.BoundaryPosition.Equal;
}
else if (offsetA < offsetB) {
return interfaces_1.BoundaryPosition.Before;
}
else {
return interfaces_1.BoundaryPosition.After;
}
}
/**
* 3. If nodeA is following nodeB, then if the position of (nodeB, offsetB)
* relative to (nodeA, offsetA) is before, return after, and if it is after,
* return before.
*/
if (TreeAlgorithm_1.tree_isFollowing(nodeB, nodeA)) {
var pos = boundaryPoint_position([nodeB, offsetB], [nodeA, offsetA]);
if (pos === interfaces_1.BoundaryPosition.Before) {
return interfaces_1.BoundaryPosition.After;
}
else if (pos === interfaces_1.BoundaryPosition.After) {
return interfaces_1.BoundaryPosition.Before;
}
}
/**
* 4. If nodeA is an ancestor of nodeB:
*/
if (TreeAlgorithm_1.tree_isAncestorOf(nodeB, nodeA)) {
/**
* 4.1. Let child be nodeB.
* 4.2. While child is not a child of nodeA, set child to its parent.
* 4.3. If childs index is less than offsetA, then return after.
*/
var child = nodeB;
while (!TreeAlgorithm_1.tree_isChildOf(nodeA, child)) {
/* istanbul ignore else */
if (child._parent !== null) {
child = child._parent;
}
}
if (TreeAlgorithm_1.tree_index(child) < offsetA) {
return interfaces_1.BoundaryPosition.After;
}
}
/**
* 5. Return before.
*/
return interfaces_1.BoundaryPosition.Before;
}
exports.boundaryPoint_position = boundaryPoint_position;
//# sourceMappingURL=BoundaryPointAlgorithm.js.map
/***/ }),
/* 351 */,
/* 352 */
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
var esprima;
// Browserified version does not have esprima
//
// 1. For node.js just require module as deps
// 2. For browser try to require mudule via external AMD system.
// If not found - try to fallback to window.esprima. If not
// found too - then fail to parse.
//
try {
// workaround to exclude package from browserify list.
var _require = require;
esprima = _require('esprima');
} catch (_) {
/* eslint-disable no-redeclare */
/* global window */
if (typeof window !== 'undefined') esprima = window.esprima;
}
var Type = __webpack_require__(945);
function resolveJavascriptFunction(data) {
if (data === null) return false;
try {
var source = '(' + data + ')',
ast = esprima.parse(source, { range: true });
if (ast.type !== 'Program' ||
ast.body.length !== 1 ||
ast.body[0].type !== 'ExpressionStatement' ||
(ast.body[0].expression.type !== 'ArrowFunctionExpression' &&
ast.body[0].expression.type !== 'FunctionExpression')) {
return false;
}
return true;
} catch (err) {
return false;
}
}
function constructJavascriptFunction(data) {
/*jslint evil:true*/
var source = '(' + data + ')',
ast = esprima.parse(source, { range: true }),
params = [],
body;
if (ast.type !== 'Program' ||
ast.body.length !== 1 ||
ast.body[0].type !== 'ExpressionStatement' ||
(ast.body[0].expression.type !== 'ArrowFunctionExpression' &&
ast.body[0].expression.type !== 'FunctionExpression')) {
throw new Error('Failed to resolve function');
}
ast.body[0].expression.params.forEach(function (param) {
params.push(param.name);
});
body = ast.body[0].expression.body.range;
// Esprima's ranges include the first '{' and the last '}' characters on
// function expressions. So cut them out.
if (ast.body[0].expression.body.type === 'BlockStatement') {
/*eslint-disable no-new-func*/
return new Function(params, source.slice(body[0] + 1, body[1] - 1));
}
// ES6 arrow functions can omit the BlockStatement. In that case, just return
// the body.
/*eslint-disable no-new-func*/
return new Function(params, 'return ' + source.slice(body[0], body[1]));
}
function representJavascriptFunction(object /*, style*/) {
return object.toString();
}
function isFunction(object) {
return Object.prototype.toString.call(object) === '[object Function]';
}
module.exports = new Type('tag:yaml.org,2002:js/function', {
kind: 'scalar',
resolve: resolveJavascriptFunction,
construct: constructJavascriptFunction,
predicate: isFunction,
represent: representJavascriptFunction
});
/***/ }),
/* 353 */,
/* 354 */,
/* 355 */,
/* 356 */,
/* 357 */
/***/ (function(module) {
module.exports = require("assert");
/***/ }),
/* 358 */,
/* 359 */,
/* 360 */,
/* 361 */,
/* 362 */,
/* 363 */,
/* 364 */,
/* 365 */,
/* 366 */,
/* 367 */,
/* 368 */,
/* 369 */,
/* 370 */,
/* 371 */,
/* 372 */,
/* 373 */
/***/ (function(module) {
module.exports = require("crypto");
/***/ }),
/* 374 */,
/* 375 */,
/* 376 */,
/* 377 */,
/* 378 */,
/* 379 */,
/* 380 */,
/* 381 */,
/* 382 */,
/* 383 */,
/* 384 */,
/* 385 */,
/* 386 */
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
var Type = __webpack_require__(945);
function resolveJavascriptUndefined() {
return true;
}
function constructJavascriptUndefined() {
/*eslint-disable no-undefined*/
return undefined;
}
function representJavascriptUndefined() {
return '';
}
function isUndefined(object) {
return typeof object === 'undefined';
}
module.exports = new Type('tag:yaml.org,2002:js/undefined', {
kind: 'scalar',
resolve: resolveJavascriptUndefined,
construct: constructJavascriptUndefined,
predicate: isUndefined,
represent: representJavascriptUndefined
});
/***/ }),
/* 387 */,
/* 388 */,
/* 389 */,
/* 390 */,
/* 391 */,
/* 392 */
/***/ (function(__unusedmodule, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* A namespace prefix map is a map that associates namespaceURI and namespace
* prefix lists, where namespaceURI values are the map's unique keys (which can
* include the null value representing no namespace), and ordered lists of
* associated prefix values are the map's key values. The namespace prefix map
* will be populated by previously seen namespaceURIs and all their previously
* encountered prefix associations for a given node and its ancestors.
*
* _Note:_ The last seen prefix for a given namespaceURI is at the end of its
* respective list. The list is searched to find potentially matching prefixes,
* and if no matches are found for the given namespaceURI, then the last prefix
* in the list is used. See copy a namespace prefix map and retrieve a preferred
* prefix string for additional details.
*
* See: https://w3c.github.io/DOM-Parsing/#the-namespace-prefix-map
*/
var NamespacePrefixMap = /** @class */ (function () {
function NamespacePrefixMap() {
this._items = {};
this._nullItems = [];
}
/**
* Creates a copy of the map.
*/
NamespacePrefixMap.prototype.copy = function () {
/**
* To copy a namespace prefix map map means to copy the map's keys into a
* new empty namespace prefix map, and to copy each of the values in the
* namespace prefix list associated with each keys' value into a new list
* which should be associated with the respective key in the new map.
*/
var mapCopy = new NamespacePrefixMap();
for (var key in this._items) {
mapCopy._items[key] = this._items[key].slice(0);
}
mapCopy._nullItems = this._nullItems.slice(0);
return mapCopy;
};
/**
* Retrieves a preferred prefix string from the namespace prefix map.
*
* @param preferredPrefix - preferred prefix string
* @param ns - namespace
*/
NamespacePrefixMap.prototype.get = function (preferredPrefix, ns) {
/**
* 1. Let candidates list be the result of retrieving a list from map where
* there exists a key in map that matches the value of ns or if there is no
* such key, then stop running these steps, and return the null value.
*/
var candidatesList = ns === null ? this._nullItems : (this._items[ns] || null);
if (candidatesList === null) {
return null;
}
/**
* 2. Otherwise, for each prefix value prefix in candidates list, iterating
* from beginning to end:
*
* _Note:_ There will always be at least one prefix value in the list.
*/
var prefix = null;
for (var i = 0; i < candidatesList.length; i++) {
prefix = candidatesList[i];
/**
* 2.1. If prefix matches preferred prefix, then stop running these steps
* and return prefix.
*/
if (prefix === preferredPrefix) {
return prefix;
}
}
/**
* 2.2. If prefix is the last item in the candidates list, then stop
* running these steps and return prefix.
*/
return prefix;
};
/**
* Checks if a prefix string is found in the namespace prefix map associated
* with the given namespace.
*
* @param prefix - prefix string
* @param ns - namespace
*/
NamespacePrefixMap.prototype.has = function (prefix, ns) {
/**
* 1. Let candidates list be the result of retrieving a list from map where
* there exists a key in map that matches the value of ns or if there is
* no such key, then stop running these steps, and return false.
*/
var candidatesList = ns === null ? this._nullItems : (this._items[ns] || null);
if (candidatesList === null) {
return false;
}
/**
* 2. If the value of prefix occurs at least once in candidates list,
* return true, otherwise return false.
*/
return (candidatesList.indexOf(prefix) !== -1);
};
/**
* Checks if a prefix string is found in the namespace prefix map.
*
* @param prefix - prefix string
*/
NamespacePrefixMap.prototype.hasPrefix = function (prefix) {
if (this._nullItems.indexOf(prefix) !== -1)
return true;
for (var key in this._items) {
if (this._items[key].indexOf(prefix) !== -1)
return true;
}
return false;
};
/**
* Adds a prefix string associated with a namespace to the prefix map.
*
* @param prefix - prefix string
* @param ns - namespace
*/
NamespacePrefixMap.prototype.set = function (prefix, ns) {
/**
* 1. Let candidates list be the result of retrieving a list from map where
* there exists a key in map that matches the value of ns or if there is
* no such key, then let candidates list be null.
*/
var candidatesList = ns === null ? this._nullItems : (this._items[ns] || null);
/**
* 2. If candidates list is null, then create a new list with prefix as the
* only item in the list, and associate that list with a new key ns in map.
* 3. Otherwise, append prefix to the end of candidates list.
*
* _Note:_ The steps in retrieve a preferred prefix string use the list to
* track the most recently used (MRU) prefix associated with a given
* namespace, which will be the prefix at the end of the list. This list
* may contain duplicates of the same prefix value seen earlier
* (and that's OK).
*/
if (ns !== null && candidatesList === null) {
this._items[ns] = [prefix];
}
else {
candidatesList.push(prefix);
}
};
return NamespacePrefixMap;
}());
exports.NamespacePrefixMap = NamespacePrefixMap;
//# sourceMappingURL=NamespacePrefixMap.js.map
/***/ }),
/* 393 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ZuluDistribution = void 0;
const core = __importStar(__webpack_require__(470));
const tc = __importStar(__webpack_require__(139));
const path_1 = __importDefault(__webpack_require__(622));
const fs_1 = __importDefault(__webpack_require__(747));
const semver_1 = __importDefault(__webpack_require__(876));
const base_installer_1 = __webpack_require__(83);
const util_1 = __webpack_require__(322);
class ZuluDistribution extends base_installer_1.JavaBase {
constructor(installerOptions) {
super('Zulu', installerOptions);
}
findPackageForDownload(version) {
return __awaiter(this, void 0, void 0, function* () {
const availableVersionsRaw = yield this.getAvailableVersions();
const availableVersions = availableVersionsRaw.map(item => {
return {
version: this.convertVersionToSemver(item.jdk_version),
url: item.url,
zuluVersion: this.convertVersionToSemver(item.zulu_version)
};
});
const satisfiedVersions = availableVersions
.filter(item => util_1.isVersionSatisfies(version, item.version))
.sort((a, b) => {
// Azul provides two versions: jdk_version and azul_version
// we should sort by both fields by descending
return (-semver_1.default.compareBuild(a.version, b.version) ||
-semver_1.default.compareBuild(a.zuluVersion, b.zuluVersion));
})
.map(item => {
return {
version: item.version,
url: item.url
};
});
const resolvedFullVersion = satisfiedVersions.length > 0 ? satisfiedVersions[0] : null;
if (!resolvedFullVersion) {
const availableOptions = availableVersions.map(item => item.version).join(', ');
const availableOptionsMessage = availableOptions
? `\nAvailable versions: ${availableOptions}`
: '';
throw new Error(`Could not find satisfied version for semver ${version}. ${availableOptionsMessage}`);
}
return resolvedFullVersion;
});
}
downloadTool(javaRelease) {
return __awaiter(this, void 0, void 0, function* () {
let extractedJavaPath;
core.info(`Downloading Java ${javaRelease.version} (${this.distribution}) from ${javaRelease.url} ...`);
const javaArchivePath = yield tc.downloadTool(javaRelease.url);
core.info(`Extracting Java archive...`);
let extension = util_1.getDownloadArchiveExtension();
extractedJavaPath = yield util_1.extractJdkFile(javaArchivePath, extension);
const archiveName = fs_1.default.readdirSync(extractedJavaPath)[0];
const archivePath = path_1.default.join(extractedJavaPath, archiveName);
const javaPath = yield tc.cacheDir(archivePath, this.toolcacheFolderName, this.getToolcacheVersionName(javaRelease.version), this.architecture);
return { version: javaRelease.version, path: javaPath };
});
}
getAvailableVersions() {
var _a, _b;
return __awaiter(this, void 0, void 0, function* () {
const { arch, hw_bitness, abi } = this.getArchitectureOptions();
const [bundleType, features] = this.packageType.split('+');
const platform = this.getPlatformOption();
const extension = util_1.getDownloadArchiveExtension();
const javafx = (_a = features === null || features === void 0 ? void 0 : features.includes('fx')) !== null && _a !== void 0 ? _a : false;
const releaseStatus = this.stable ? 'ga' : 'ea';
console.time('azul-retrieve-available-versions');
const requestArguments = [
`os=${platform}`,
`ext=${extension}`,
`bundle_type=${bundleType}`,
`javafx=${javafx}`,
`arch=${arch}`,
`hw_bitness=${hw_bitness}`,
`release_status=${releaseStatus}`,
abi ? `abi=${abi}` : null,
features ? `features=${features}` : null
]
.filter(Boolean)
.join('&');
const availableVersionsUrl = `https://api.azul.com/zulu/download/community/v1.0/bundles/?${requestArguments}`;
if (core.isDebug()) {
core.debug(`Gathering available versions from '${availableVersionsUrl}'`);
}
const availableVersions = (_b = (yield this.http.getJson(availableVersionsUrl)).result) !== null && _b !== void 0 ? _b : [];
if (core.isDebug()) {
core.startGroup('Print information about available versions');
console.timeEnd('azul-retrieve-available-versions');
console.log(`Available versions: [${availableVersions.length}]`);
console.log(availableVersions.map(item => item.jdk_version.join('.')).join(', '));
core.endGroup();
}
return availableVersions;
});
}
getArchitectureOptions() {
if (this.architecture == 'x64') {
return { arch: 'x86', hw_bitness: '64', abi: '' };
}
else if (this.architecture == 'x86') {
return { arch: 'x86', hw_bitness: '32', abi: '' };
}
else {
return { arch: this.architecture, hw_bitness: '', abi: '' };
}
}
getPlatformOption() {
// Azul has own platform names so need to map them
switch (process.platform) {
case 'darwin':
return 'macos';
case 'win32':
return 'windows';
default:
return process.platform;
}
}
// Azul API returns jdk_version as array of digits like [11, 0, 2, 1]
convertVersionToSemver(version_array) {
const mainVersion = version_array.slice(0, 3).join('.');
if (version_array.length > 3) {
// intentionally ignore more than 4 numbers because it is invalid semver
return `${mainVersion}+${version_array[3]}`;
}
return mainVersion;
}
}
exports.ZuluDistribution = ZuluDistribution;
/***/ }),
/* 394 */,
/* 395 */,
/* 396 */
/***/ (function(module) {
"use strict";
module.exports = function (Yallist) {
Yallist.prototype[Symbol.iterator] = function* () {
for (let walker = this.head; walker; walker = walker.next) {
yield walker.value
}
}
}
/***/ }),
/* 397 */,
/* 398 */,
/* 399 */,
/* 400 */,
/* 401 */,
/* 402 */,
/* 403 */,
/* 404 */,
/* 405 */,
/* 406 */,
/* 407 */,
/* 408 */,
/* 409 */,
/* 410 */,
/* 411 */,
/* 412 */,
/* 413 */
/***/ (function(__unusedmodule, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Represents an abstract range with a start and end boundary point.
*/
var AbstractRangeImpl = /** @class */ (function () {
function AbstractRangeImpl() {
}
Object.defineProperty(AbstractRangeImpl.prototype, "_startNode", {
get: function () { return this._start[0]; },
enumerable: true,
configurable: true
});
Object.defineProperty(AbstractRangeImpl.prototype, "_startOffset", {
get: function () { return this._start[1]; },
enumerable: true,
configurable: true
});
Object.defineProperty(AbstractRangeImpl.prototype, "_endNode", {
get: function () { return this._end[0]; },
enumerable: true,
configurable: true
});
Object.defineProperty(AbstractRangeImpl.prototype, "_endOffset", {
get: function () { return this._end[1]; },
enumerable: true,
configurable: true
});
Object.defineProperty(AbstractRangeImpl.prototype, "_collapsed", {
get: function () {
return (this._start[0] === this._end[0] &&
this._start[1] === this._end[1]);
},
enumerable: true,
configurable: true
});
Object.defineProperty(AbstractRangeImpl.prototype, "startContainer", {
/** @inheritdoc */
get: function () { return this._startNode; },
enumerable: true,
configurable: true
});
Object.defineProperty(AbstractRangeImpl.prototype, "startOffset", {
/** @inheritdoc */
get: function () { return this._startOffset; },
enumerable: true,
configurable: true
});
Object.defineProperty(AbstractRangeImpl.prototype, "endContainer", {
/** @inheritdoc */
get: function () { return this._endNode; },
enumerable: true,
configurable: true
});
Object.defineProperty(AbstractRangeImpl.prototype, "endOffset", {
/** @inheritdoc */
get: function () { return this._endOffset; },
enumerable: true,
configurable: true
});
Object.defineProperty(AbstractRangeImpl.prototype, "collapsed", {
/** @inheritdoc */
get: function () { return this._collapsed; },
enumerable: true,
configurable: true
});
return AbstractRangeImpl;
}());
exports.AbstractRangeImpl = AbstractRangeImpl;
//# sourceMappingURL=AbstractRangeImpl.js.map
/***/ }),
/* 414 */
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
var yaml = __webpack_require__(9);
module.exports = yaml;
/***/ }),
/* 415 */,
/* 416 */,
/* 417 */
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
var common = __webpack_require__(740);
var Type = __webpack_require__(945);
var YAML_FLOAT_PATTERN = new RegExp(
// 2.5e4, 2.5 and integers
'^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' +
// .2e4, .2
// special case, seems not from spec
'|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' +
// 20:59
'|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*' +
// .inf
'|[-+]?\\.(?:inf|Inf|INF)' +
// .nan
'|\\.(?:nan|NaN|NAN))$');
function resolveYamlFloat(data) {
if (data === null) return false;
if (!YAML_FLOAT_PATTERN.test(data) ||
// Quick hack to not allow integers end with `_`
// Probably should update regexp & check speed
data[data.length - 1] === '_') {
return false;
}
return true;
}
function constructYamlFloat(data) {
var value, sign, base, digits;
value = data.replace(/_/g, '').toLowerCase();
sign = value[0] === '-' ? -1 : 1;
digits = [];
if ('+-'.indexOf(value[0]) >= 0) {
value = value.slice(1);
}
if (value === '.inf') {
return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;
} else if (value === '.nan') {
return NaN;
} else if (value.indexOf(':') >= 0) {
value.split(':').forEach(function (v) {
digits.unshift(parseFloat(v, 10));
});
value = 0.0;
base = 1;
digits.forEach(function (d) {
value += d * base;
base *= 60;
});
return sign * value;
}
return sign * parseFloat(value, 10);
}
var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;
function representYamlFloat(object, style) {
var res;
if (isNaN(object)) {
switch (style) {
case 'lowercase': return '.nan';
case 'uppercase': return '.NAN';
case 'camelcase': return '.NaN';
}
} else if (Number.POSITIVE_INFINITY === object) {
switch (style) {
case 'lowercase': return '.inf';
case 'uppercase': return '.INF';
case 'camelcase': return '.Inf';
}
} else if (Number.NEGATIVE_INFINITY === object) {
switch (style) {
case 'lowercase': return '-.inf';
case 'uppercase': return '-.INF';
case 'camelcase': return '-.Inf';
}
} else if (common.isNegativeZero(object)) {
return '-0.0';
}
res = object.toString(10);
// JS stringifier can build scientific format without dots: 5e-100,
// while YAML requres dot: 5.e-100. Fix it with simple hack
return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;
}
function isFloat(object) {
return (Object.prototype.toString.call(object) === '[object Number]') &&
(object % 1 !== 0 || common.isNegativeZero(object));
}
module.exports = new Type('tag:yaml.org,2002:float', {
kind: 'scalar',
resolve: resolveYamlFloat,
construct: constructYamlFloat,
predicate: isFloat,
represent: representYamlFloat,
defaultStyle: 'lowercase'
});
/***/ }),
/* 418 */,
/* 419 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
var util_1 = __webpack_require__(592);
var interfaces_1 = __webpack_require__(970);
var BaseWriter_1 = __webpack_require__(462);
/**
* Serializes XML nodes into objects and arrays.
*/
var ObjectWriter = /** @class */ (function (_super) {
__extends(ObjectWriter, _super);
/**
* Initializes a new instance of `ObjectWriter`.
*
* @param builderOptions - XML builder options
* @param writerOptions - serialization options
*/
function ObjectWriter(builderOptions, writerOptions) {
var _this = _super.call(this, builderOptions) || this;
_this._writerOptions = util_1.applyDefaults(writerOptions, {
format: "object",
wellFormed: false,
noDoubleEncoding: false,
group: false,
verbose: false
});
return _this;
}
/**
* Produces an XML serialization of the given node.
*
* @param node - node to serialize
*/
ObjectWriter.prototype.serialize = function (node) {
this._currentList = [];
this._currentIndex = 0;
this._listRegister = [this._currentList];
/**
* First pass, serialize nodes
* This creates a list of nodes grouped under node types while preserving
* insertion order. For example:
* [
* root: [
* node: [
* { "@" : { "att1": "val1", "att2": "val2" }
* { "#": "node text" }
* { childNode: [] }
* { "#": "more text" }
* ],
* node: [
* { "@" : { "att": "val" }
* { "#": [ "text line1", "text line2" ] }
* ]
* ]
* ]
*/
this.serializeNode(node, this._writerOptions.wellFormed, this._writerOptions.noDoubleEncoding);
/**
* Second pass, process node lists. Above example becomes:
* {
* root: {
* node: [
* {
* "@att1": "val1",
* "@att2": "val2",
* "#1": "node text",
* childNode: {},
* "#2": "more text"
* },
* {
* "@att": "val",
* "#": [ "text line1", "text line2" ]
* }
* ]
* }
* }
*/
return this._process(this._currentList, this._writerOptions);
};
ObjectWriter.prototype._process = function (items, options) {
var _a, _b, _c, _d, _e, _f, _g;
if (items.length === 0)
return {};
// determine if there are non-unique element names
var namesSeen = {};
var hasNonUniqueNames = false;
var textCount = 0;
var commentCount = 0;
var instructionCount = 0;
var cdataCount = 0;
for (var i = 0; i < items.length; i++) {
var item = items[i];
var key = Object.keys(item)[0];
switch (key) {
case "@":
continue;
case "#":
textCount++;
break;
case "!":
commentCount++;
break;
case "?":
instructionCount++;
break;
case "$":
cdataCount++;
break;
default:
if (namesSeen[key]) {
hasNonUniqueNames = true;
}
else {
namesSeen[key] = true;
}
break;
}
}
var defAttrKey = this._getAttrKey();
var defTextKey = this._getNodeKey(interfaces_1.NodeType.Text);
var defCommentKey = this._getNodeKey(interfaces_1.NodeType.Comment);
var defInstructionKey = this._getNodeKey(interfaces_1.NodeType.ProcessingInstruction);
var defCdataKey = this._getNodeKey(interfaces_1.NodeType.CData);
if (textCount === 1 && items.length === 1 && util_1.isString(items[0]["#"])) {
// special case of an element node with a single text node
return items[0]["#"];
}
else if (hasNonUniqueNames) {
var obj = {};
// process attributes first
for (var i = 0; i < items.length; i++) {
var item = items[i];
var key = Object.keys(item)[0];
if (key === "@") {
var attrs = item["@"];
var attrKeys = Object.keys(attrs);
if (attrKeys.length === 1) {
obj[defAttrKey + attrKeys[0]] = attrs[attrKeys[0]];
}
else {
obj[defAttrKey] = item["@"];
}
}
}
// list contains element nodes with non-unique names
// return an array with mixed content notation
var result = [];
for (var i = 0; i < items.length; i++) {
var item = items[i];
var key = Object.keys(item)[0];
switch (key) {
case "@":
// attributes were processed above
break;
case "#":
result.push((_a = {}, _a[defTextKey] = item["#"], _a));
break;
case "!":
result.push((_b = {}, _b[defCommentKey] = item["!"], _b));
break;
case "?":
result.push((_c = {}, _c[defInstructionKey] = item["?"], _c));
break;
case "$":
result.push((_d = {}, _d[defCdataKey] = item["$"], _d));
break;
default:
// element node
var ele = item;
if (ele[key].length !== 0 && util_1.isArray(ele[key][0])) {
// group of element nodes
var eleGroup = [];
var listOfLists = ele[key];
for (var i_1 = 0; i_1 < listOfLists.length; i_1++) {
eleGroup.push(this._process(listOfLists[i_1], options));
}
result.push((_e = {}, _e[key] = eleGroup, _e));
}
else {
// single element node
if (options.verbose) {
result.push((_f = {}, _f[key] = [this._process(ele[key], options)], _f));
}
else {
result.push((_g = {}, _g[key] = this._process(ele[key], options), _g));
}
}
break;
}
}
obj[defTextKey] = result;
return obj;
}
else {
// all element nodes have unique names
// return an object while prefixing data node keys
var textId = 1;
var commentId = 1;
var instructionId = 1;
var cdataId = 1;
var obj = {};
for (var i = 0; i < items.length; i++) {
var item = items[i];
var key = Object.keys(item)[0];
switch (key) {
case "@":
var attrs = item["@"];
var attrKeys = Object.keys(attrs);
if (!options.group || attrKeys.length === 1) {
for (var attrName in attrs) {
obj[defAttrKey + attrName] = attrs[attrName];
}
}
else {
obj[defAttrKey] = attrs;
}
break;
case "#":
textId = this._processSpecItem(item["#"], obj, options.group, defTextKey, textCount, textId);
break;
case "!":
commentId = this._processSpecItem(item["!"], obj, options.group, defCommentKey, commentCount, commentId);
break;
case "?":
instructionId = this._processSpecItem(item["?"], obj, options.group, defInstructionKey, instructionCount, instructionId);
break;
case "$":
cdataId = this._processSpecItem(item["$"], obj, options.group, defCdataKey, cdataCount, cdataId);
break;
default:
// element node
var ele = item;
if (ele[key].length !== 0 && util_1.isArray(ele[key][0])) {
// group of element nodes
var eleGroup = [];
var listOfLists = ele[key];
for (var i_2 = 0; i_2 < listOfLists.length; i_2++) {
eleGroup.push(this._process(listOfLists[i_2], options));
}
obj[key] = eleGroup;
}
else {
// single element node
if (options.verbose) {
obj[key] = [this._process(ele[key], options)];
}
else {
obj[key] = this._process(ele[key], options);
}
}
break;
}
}
return obj;
}
};
ObjectWriter.prototype._processSpecItem = function (item, obj, group, defKey, count, id) {
var e_1, _a;
if (!group && util_1.isArray(item) && count + item.length > 2) {
try {
for (var item_1 = __values(item), item_1_1 = item_1.next(); !item_1_1.done; item_1_1 = item_1.next()) {
var subItem = item_1_1.value;
var key = defKey + (id++).toString();
obj[key] = subItem;
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (item_1_1 && !item_1_1.done && (_a = item_1.return)) _a.call(item_1);
}
finally { if (e_1) throw e_1.error; }
}
}
else {
var key = count > 1 ? defKey + (id++).toString() : defKey;
obj[key] = item;
}
return id;
};
/** @inheritdoc */
ObjectWriter.prototype.beginElement = function (name) {
var _a, _b;
var childItems = [];
if (this._currentList.length === 0) {
this._currentList.push((_a = {}, _a[name] = childItems, _a));
}
else {
var lastItem = this._currentList[this._currentList.length - 1];
if (this._isElementNode(lastItem, name)) {
if (lastItem[name].length !== 0 && util_1.isArray(lastItem[name][0])) {
var listOfLists = lastItem[name];
listOfLists.push(childItems);
}
else {
lastItem[name] = [lastItem[name], childItems];
}
}
else {
this._currentList.push((_b = {}, _b[name] = childItems, _b));
}
}
this._currentIndex++;
if (this._listRegister.length > this._currentIndex) {
this._listRegister[this._currentIndex] = childItems;
}
else {
this._listRegister.push(childItems);
}
this._currentList = childItems;
};
/** @inheritdoc */
ObjectWriter.prototype.endElement = function () {
this._currentList = this._listRegister[--this._currentIndex];
};
/** @inheritdoc */
ObjectWriter.prototype.attribute = function (name, value) {
var _a, _b;
if (this._currentList.length === 0) {
this._currentList.push({ "@": (_a = {}, _a[name] = value, _a) });
}
else {
var lastItem = this._currentList[this._currentList.length - 1];
/* istanbul ignore else */
if (this._isAttrNode(lastItem)) {
lastItem["@"][name] = value;
}
else {
this._currentList.push({ "@": (_b = {}, _b[name] = value, _b) });
}
}
};
/** @inheritdoc */
ObjectWriter.prototype.comment = function (data) {
if (this._currentList.length === 0) {
this._currentList.push({ "!": data });
}
else {
var lastItem = this._currentList[this._currentList.length - 1];
if (this._isCommentNode(lastItem)) {
if (util_1.isArray(lastItem["!"])) {
lastItem["!"].push(data);
}
else {
lastItem["!"] = [lastItem["!"], data];
}
}
else {
this._currentList.push({ "!": data });
}
}
};
/** @inheritdoc */
ObjectWriter.prototype.text = function (data) {
if (this._currentList.length === 0) {
this._currentList.push({ "#": data });
}
else {
var lastItem = this._currentList[this._currentList.length - 1];
if (this._isTextNode(lastItem)) {
if (util_1.isArray(lastItem["#"])) {
lastItem["#"].push(data);
}
else {
lastItem["#"] = [lastItem["#"], data];
}
}
else {
this._currentList.push({ "#": data });
}
}
};
/** @inheritdoc */
ObjectWriter.prototype.instruction = function (target, data) {
var value = (data === "" ? target : target + " " + data);
if (this._currentList.length === 0) {
this._currentList.push({ "?": value });
}
else {
var lastItem = this._currentList[this._currentList.length - 1];
if (this._isInstructionNode(lastItem)) {
if (util_1.isArray(lastItem["?"])) {
lastItem["?"].push(value);
}
else {
lastItem["?"] = [lastItem["?"], value];
}
}
else {
this._currentList.push({ "?": value });
}
}
};
/** @inheritdoc */
ObjectWriter.prototype.cdata = function (data) {
if (this._currentList.length === 0) {
this._currentList.push({ "$": data });
}
else {
var lastItem = this._currentList[this._currentList.length - 1];
if (this._isCDATANode(lastItem)) {
if (util_1.isArray(lastItem["$"])) {
lastItem["$"].push(data);
}
else {
lastItem["$"] = [lastItem["$"], data];
}
}
else {
this._currentList.push({ "$": data });
}
}
};
ObjectWriter.prototype._isAttrNode = function (x) {
return "@" in x;
};
ObjectWriter.prototype._isTextNode = function (x) {
return "#" in x;
};
ObjectWriter.prototype._isCommentNode = function (x) {
return "!" in x;
};
ObjectWriter.prototype._isInstructionNode = function (x) {
return "?" in x;
};
ObjectWriter.prototype._isCDATANode = function (x) {
return "$" in x;
};
ObjectWriter.prototype._isElementNode = function (x, name) {
return name in x;
};
/**
* Returns an object key for an attribute or namespace declaration.
*/
ObjectWriter.prototype._getAttrKey = function () {
return this._builderOptions.convert.att;
};
/**
* Returns an object key for the given node type.
*
* @param nodeType - node type to get a key for
*/
ObjectWriter.prototype._getNodeKey = function (nodeType) {
switch (nodeType) {
case interfaces_1.NodeType.Comment:
return this._builderOptions.convert.comment;
case interfaces_1.NodeType.Text:
return this._builderOptions.convert.text;
case interfaces_1.NodeType.ProcessingInstruction:
return this._builderOptions.convert.ins;
case interfaces_1.NodeType.CData:
return this._builderOptions.convert.cdata;
/* istanbul ignore next */
default:
throw new Error("Invalid node type.");
}
};
return ObjectWriter;
}(BaseWriter_1.BaseWriter));
exports.ObjectWriter = ObjectWriter;
//# sourceMappingURL=ObjectWriter.js.map
/***/ }),
/* 420 */,
/* 421 */,
/* 422 */,
/* 423 */,
/* 424 */,
/* 425 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
var DOMImpl_1 = __webpack_require__(648);
var DOMException_1 = __webpack_require__(35);
var infra_1 = __webpack_require__(23);
var algorithm_1 = __webpack_require__(163);
/**
* Represents a token set.
*/
var DOMTokenListImpl = /** @class */ (function () {
/**
* Initializes a new instance of `DOMTokenList`.
*
* @param element - associated element
* @param attribute - associated attribute
*/
function DOMTokenListImpl(element, attribute) {
/**
* 1. Let element be associated element.
* 2. Let localName be associated attributes local name.
* 3. Let value be the result of getting an attribute value given element
* and localName.
* 4. Run the attribute change steps for element, localName, value, value,
* and null.
*/
this._element = element;
this._attribute = attribute;
this._tokenSet = new Set();
var localName = attribute._localName;
var value = algorithm_1.element_getAnAttributeValue(element, localName);
// define a closure to be called when the associated attribute's value changes
var thisObj = this;
function updateTokenSet(element, localName, oldValue, value, namespace) {
/**
* 1. If localName is associated attributes local name, namespace is null,
* and value is null, then empty token set.
* 2. Otherwise, if localName is associated attributes local name,
* namespace is null, then set token set to value, parsed.
*/
if (localName === thisObj._attribute._localName && namespace === null) {
if (!value)
thisObj._tokenSet.clear();
else
thisObj._tokenSet = algorithm_1.orderedSet_parse(value);
}
}
// add the closure to the associated element's attribute change steps
this._element._attributeChangeSteps.push(updateTokenSet);
if (DOMImpl_1.dom.features.steps) {
algorithm_1.dom_runAttributeChangeSteps(element, localName, value, value, null);
}
}
Object.defineProperty(DOMTokenListImpl.prototype, "length", {
/** @inheritdoc */
get: function () {
/**
* The length attribute' getter must return context objects token sets
* size.
*/
return this._tokenSet.size;
},
enumerable: true,
configurable: true
});
/** @inheritdoc */
DOMTokenListImpl.prototype.item = function (index) {
var e_1, _a;
/**
* 1. If index is equal to or greater than context objects token sets
* size, then return null.
* 2. Return context objects token set[index].
*/
var i = 0;
try {
for (var _b = __values(this._tokenSet), _c = _b.next(); !_c.done; _c = _b.next()) {
var token = _c.value;
if (i === index)
return token;
i++;
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
return null;
};
/** @inheritdoc */
DOMTokenListImpl.prototype.contains = function (token) {
/**
* The contains(token) method, when invoked, must return true if context
* objects token set[token] exists, and false otherwise.
*/
return this._tokenSet.has(token);
};
/** @inheritdoc */
DOMTokenListImpl.prototype.add = function () {
var e_2, _a;
var tokens = [];
for (var _i = 0; _i < arguments.length; _i++) {
tokens[_i] = arguments[_i];
}
try {
/**
* 1. For each token in tokens:
* 1.1. If token is the empty string, then throw a "SyntaxError"
* DOMException.
* 1.2. If token contains any ASCII whitespace, then throw an
* "InvalidCharacterError" DOMException.
* 2. For each token in tokens, append token to context objects token set.
* 3. Run the update steps.
*/
for (var tokens_1 = __values(tokens), tokens_1_1 = tokens_1.next(); !tokens_1_1.done; tokens_1_1 = tokens_1.next()) {
var token = tokens_1_1.value;
if (token === '') {
throw new DOMException_1.SyntaxError("Cannot add an empty token.");
}
else if (infra_1.codePoint.ASCIIWhiteSpace.test(token)) {
throw new DOMException_1.InvalidCharacterError("Token cannot contain whitespace.");
}
else {
this._tokenSet.add(token);
}
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (tokens_1_1 && !tokens_1_1.done && (_a = tokens_1.return)) _a.call(tokens_1);
}
finally { if (e_2) throw e_2.error; }
}
algorithm_1.tokenList_updateSteps(this);
};
/** @inheritdoc */
DOMTokenListImpl.prototype.remove = function () {
var e_3, _a;
var tokens = [];
for (var _i = 0; _i < arguments.length; _i++) {
tokens[_i] = arguments[_i];
}
try {
/**
* 1. For each token in tokens:
* 1.1. If token is the empty string, then throw a "SyntaxError"
* DOMException.
* 1.2. If token contains any ASCII whitespace, then throw an
* "InvalidCharacterError" DOMException.
* 2. For each token in tokens, remove token from context objects token set.
* 3. Run the update steps.
*/
for (var tokens_2 = __values(tokens), tokens_2_1 = tokens_2.next(); !tokens_2_1.done; tokens_2_1 = tokens_2.next()) {
var token = tokens_2_1.value;
if (token === '') {
throw new DOMException_1.SyntaxError("Cannot remove an empty token.");
}
else if (infra_1.codePoint.ASCIIWhiteSpace.test(token)) {
throw new DOMException_1.InvalidCharacterError("Token cannot contain whitespace.");
}
else {
this._tokenSet.delete(token);
}
}
}
catch (e_3_1) { e_3 = { error: e_3_1 }; }
finally {
try {
if (tokens_2_1 && !tokens_2_1.done && (_a = tokens_2.return)) _a.call(tokens_2);
}
finally { if (e_3) throw e_3.error; }
}
algorithm_1.tokenList_updateSteps(this);
};
/** @inheritdoc */
DOMTokenListImpl.prototype.toggle = function (token, force) {
if (force === void 0) { force = undefined; }
/**
* 1. If token is the empty string, then throw a "SyntaxError" DOMException.
* 2. If token contains any ASCII whitespace, then throw an
* "InvalidCharacterError" DOMException.
*/
if (token === '') {
throw new DOMException_1.SyntaxError("Cannot toggle an empty token.");
}
else if (infra_1.codePoint.ASCIIWhiteSpace.test(token)) {
throw new DOMException_1.InvalidCharacterError("Token cannot contain whitespace.");
}
/**
* 3. If context objects token set[token] exists, then:
*/
if (this._tokenSet.has(token)) {
/**
* 3.1. If force is either not given or is false, then remove token from
* context objects token set, run the update steps and return false.
* 3.2. Return true.
*/
if (force === undefined || force === false) {
this._tokenSet.delete(token);
algorithm_1.tokenList_updateSteps(this);
return false;
}
return true;
}
/**
* 4. Otherwise, if force not given or is true, append token to context
* objects token set, run the update steps, and return true.
*/
if (force === undefined || force === true) {
this._tokenSet.add(token);
algorithm_1.tokenList_updateSteps(this);
return true;
}
/**
* 5. Return false.
*/
return false;
};
/** @inheritdoc */
DOMTokenListImpl.prototype.replace = function (token, newToken) {
/**
* 1. If either token or newToken is the empty string, then throw a
* "SyntaxError" DOMException.
* 2. If either token or newToken contains any ASCII whitespace, then throw
* an "InvalidCharacterError" DOMException.
*/
if (token === '' || newToken === '') {
throw new DOMException_1.SyntaxError("Cannot replace an empty token.");
}
else if (infra_1.codePoint.ASCIIWhiteSpace.test(token) || infra_1.codePoint.ASCIIWhiteSpace.test(newToken)) {
throw new DOMException_1.InvalidCharacterError("Token cannot contain whitespace.");
}
/**
* 3. If context objects token set does not contain token, then return
* false.
*/
if (!this._tokenSet.has(token))
return false;
/**
* 4. Replace token in context objects token set with newToken.
* 5. Run the update steps.
* 6. Return true.
*/
infra_1.set.replace(this._tokenSet, token, newToken);
algorithm_1.tokenList_updateSteps(this);
return true;
};
/** @inheritdoc */
DOMTokenListImpl.prototype.supports = function (token) {
/**
* 1. Let result be the return value of validation steps called with token.
* 2. Return result.
*/
return algorithm_1.tokenList_validationSteps(this, token);
};
Object.defineProperty(DOMTokenListImpl.prototype, "value", {
/** @inheritdoc */
get: function () {
/**
* The value attribute must return the result of running context objects
* serialize steps.
*/
return algorithm_1.tokenList_serializeSteps(this);
},
set: function (value) {
/**
* Setting the value attribute must set an attribute value for the
* associated element using associated attributes local name and the given
* value.
*/
algorithm_1.element_setAnAttributeValue(this._element, this._attribute._localName, value);
},
enumerable: true,
configurable: true
});
/**
* Returns an iterator for the token set.
*/
DOMTokenListImpl.prototype[Symbol.iterator] = function () {
var it = this._tokenSet[Symbol.iterator]();
return {
next: function () {
return it.next();
}
};
};
/**
* Creates a new `DOMTokenList`.
*
* @param element - associated element
* @param attribute - associated attribute
*/
DOMTokenListImpl._create = function (element, attribute) {
return new DOMTokenListImpl(element, attribute);
};
return DOMTokenListImpl;
}());
exports.DOMTokenListImpl = DOMTokenListImpl;
//# sourceMappingURL=DOMTokenListImpl.js.map
/***/ }),
/* 426 */,
/* 427 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var interfaces_1 = __webpack_require__(970);
var algorithm_1 = __webpack_require__(163);
var WebIDLAlgorithm_1 = __webpack_require__(495);
/**
* Represents a DOM event.
*/
var EventImpl = /** @class */ (function () {
/**
* Initializes a new instance of `Event`.
*/
function EventImpl(type, eventInit) {
this._target = null;
this._relatedTarget = null;
this._touchTargetList = [];
this._path = [];
this._currentTarget = null;
this._eventPhase = interfaces_1.EventPhase.None;
this._stopPropagationFlag = false;
this._stopImmediatePropagationFlag = false;
this._canceledFlag = false;
this._inPassiveListenerFlag = false;
this._composedFlag = false;
this._initializedFlag = false;
this._dispatchFlag = false;
this._isTrusted = false;
this._bubbles = false;
this._cancelable = false;
/**
* When a constructor of the Event interface, or of an interface that
* inherits from the Event interface, is invoked, these steps must be run,
* given the arguments type and eventInitDict:
* 1. Let event be the result of running the inner event creation steps with
* this interface, null, now, and eventInitDict.
* 2. Initialize events type attribute to type.
* 3. Return event.
*/
this._type = type;
if (eventInit) {
this._bubbles = eventInit.bubbles || false;
this._cancelable = eventInit.cancelable || false;
this._composedFlag = eventInit.composed || false;
}
this._initializedFlag = true;
this._timeStamp = new Date().getTime();
}
Object.defineProperty(EventImpl.prototype, "type", {
/** @inheritdoc */
get: function () { return this._type; },
enumerable: true,
configurable: true
});
Object.defineProperty(EventImpl.prototype, "target", {
/** @inheritdoc */
get: function () { return this._target; },
enumerable: true,
configurable: true
});
Object.defineProperty(EventImpl.prototype, "srcElement", {
/** @inheritdoc */
get: function () { return this._target; },
enumerable: true,
configurable: true
});
Object.defineProperty(EventImpl.prototype, "currentTarget", {
/** @inheritdoc */
get: function () { return this._currentTarget; },
enumerable: true,
configurable: true
});
/** @inheritdoc */
EventImpl.prototype.composedPath = function () {
/**
* 1. Let composedPath be an empty list.
* 2. Let path be the context objects path.
* 3. If path is empty, then return composedPath.
* 4. Let currentTarget be the context objects currentTarget attribute
* value.
* 5. Append currentTarget to composedPath.
* 6. Let currentTargetIndex be 0.
* 7. Let currentTargetHiddenSubtreeLevel be 0.
*/
var composedPath = [];
var path = this._path;
if (path.length === 0)
return composedPath;
var currentTarget = this._currentTarget;
if (currentTarget === null) {
throw new Error("Event currentTarget is null.");
}
composedPath.push(currentTarget);
var currentTargetIndex = 0;
var currentTargetHiddenSubtreeLevel = 0;
/**
* 8. Let index be paths size 1.
* 9. While index is greater than or equal to 0:
*/
var index = path.length - 1;
while (index >= 0) {
/**
* 9.1. If path[index]'s root-of-closed-tree is true, then increase
* currentTargetHiddenSubtreeLevel by 1.
* 9.2. If path[index]'s invocation target is currentTarget, then set
* currentTargetIndex to index and break.
* 9.3. If path[index]'s slot-in-closed-tree is true, then decrease
* currentTargetHiddenSubtreeLevel by 1.
* 9.4. Decrease index by 1.
*/
if (path[index].rootOfClosedTree) {
currentTargetHiddenSubtreeLevel++;
}
if (path[index].invocationTarget === currentTarget) {
currentTargetIndex = index;
break;
}
if (path[index].slotInClosedTree) {
currentTargetHiddenSubtreeLevel--;
}
index--;
}
/**
* 10. Let currentHiddenLevel and maxHiddenLevel be
* currentTargetHiddenSubtreeLevel.
*/
var currentHiddenLevel = currentTargetHiddenSubtreeLevel;
var maxHiddenLevel = currentTargetHiddenSubtreeLevel;
/**
* 11. Set index to currentTargetIndex 1.
* 12. While index is greater than or equal to 0:
*/
index = currentTargetIndex - 1;
while (index >= 0) {
/**
* 12.1. If path[index]'s root-of-closed-tree is true, then increase
* currentHiddenLevel by 1.
* 12.2. If currentHiddenLevel is less than or equal to maxHiddenLevel,
* then prepend path[index]'s invocation target to composedPath.
*/
if (path[index].rootOfClosedTree) {
currentHiddenLevel++;
}
if (currentHiddenLevel <= maxHiddenLevel) {
composedPath.unshift(path[index].invocationTarget);
}
/**
* 12.3. If path[index]'s slot-in-closed-tree is true, then:
*/
if (path[index].slotInClosedTree) {
/**
* 12.3.1. Decrease currentHiddenLevel by 1.
* 12.3.2. If currentHiddenLevel is less than maxHiddenLevel, then set
* maxHiddenLevel to currentHiddenLevel.
*/
currentHiddenLevel--;
if (currentHiddenLevel < maxHiddenLevel) {
maxHiddenLevel = currentHiddenLevel;
}
}
/**
* 12.4. Decrease index by 1.
*/
index--;
}
/**
* 13. Set currentHiddenLevel and maxHiddenLevel to
* currentTargetHiddenSubtreeLevel.
*/
currentHiddenLevel = currentTargetHiddenSubtreeLevel;
maxHiddenLevel = currentTargetHiddenSubtreeLevel;
/**
* 14. Set index to currentTargetIndex + 1.
* 15. While index is less than paths size:
*/
index = currentTargetIndex + 1;
while (index < path.length) {
/**
* 15.1. If path[index]'s slot-in-closed-tree is true, then increase
* currentHiddenLevel by 1.
* 15.2. If currentHiddenLevel is less than or equal to maxHiddenLevel,
* then append path[index]'s invocation target to composedPath.
*/
if (path[index].slotInClosedTree) {
currentHiddenLevel++;
}
if (currentHiddenLevel <= maxHiddenLevel) {
composedPath.push(path[index].invocationTarget);
}
/**
* 15.3. If path[index]'s root-of-closed-tree is true, then:
*/
if (path[index].rootOfClosedTree) {
/**
* 15.3.1. Decrease currentHiddenLevel by 1.
* 15.3.2. If currentHiddenLevel is less than maxHiddenLevel, then set
* maxHiddenLevel to currentHiddenLevel.
*/
currentHiddenLevel--;
if (currentHiddenLevel < maxHiddenLevel) {
maxHiddenLevel = currentHiddenLevel;
}
}
/**
* 15.4. Increase index by 1.
*/
index++;
}
/**
* 16. Return composedPath.
*/
return composedPath;
};
Object.defineProperty(EventImpl.prototype, "eventPhase", {
/** @inheritdoc */
get: function () { return this._eventPhase; },
enumerable: true,
configurable: true
});
/** @inheritdoc */
EventImpl.prototype.stopPropagation = function () { this._stopPropagationFlag = true; };
Object.defineProperty(EventImpl.prototype, "cancelBubble", {
/** @inheritdoc */
get: function () { return this._stopPropagationFlag; },
set: function (value) { if (value)
this.stopPropagation(); },
enumerable: true,
configurable: true
});
/** @inheritdoc */
EventImpl.prototype.stopImmediatePropagation = function () {
this._stopPropagationFlag = true;
this._stopImmediatePropagationFlag = true;
};
Object.defineProperty(EventImpl.prototype, "bubbles", {
/** @inheritdoc */
get: function () { return this._bubbles; },
enumerable: true,
configurable: true
});
Object.defineProperty(EventImpl.prototype, "cancelable", {
/** @inheritdoc */
get: function () { return this._cancelable; },
enumerable: true,
configurable: true
});
Object.defineProperty(EventImpl.prototype, "returnValue", {
/** @inheritdoc */
get: function () { return !this._canceledFlag; },
set: function (value) {
if (!value) {
algorithm_1.event_setTheCanceledFlag(this);
}
},
enumerable: true,
configurable: true
});
/** @inheritdoc */
EventImpl.prototype.preventDefault = function () {
algorithm_1.event_setTheCanceledFlag(this);
};
Object.defineProperty(EventImpl.prototype, "defaultPrevented", {
/** @inheritdoc */
get: function () { return this._canceledFlag; },
enumerable: true,
configurable: true
});
Object.defineProperty(EventImpl.prototype, "composed", {
/** @inheritdoc */
get: function () { return this._composedFlag; },
enumerable: true,
configurable: true
});
Object.defineProperty(EventImpl.prototype, "isTrusted", {
/** @inheritdoc */
get: function () { return this._isTrusted; },
enumerable: true,
configurable: true
});
Object.defineProperty(EventImpl.prototype, "timeStamp", {
/** @inheritdoc */
get: function () { return this._timeStamp; },
enumerable: true,
configurable: true
});
/** @inheritdoc */
EventImpl.prototype.initEvent = function (type, bubbles, cancelable) {
if (bubbles === void 0) { bubbles = false; }
if (cancelable === void 0) { cancelable = false; }
/**
* 1. If the context objects dispatch flag is set, then return.
*/
if (this._dispatchFlag)
return;
/**
* 2. Initialize the context object with type, bubbles, and cancelable.
*/
algorithm_1.event_initialize(this, type, bubbles, cancelable);
};
EventImpl.NONE = 0;
EventImpl.CAPTURING_PHASE = 1;
EventImpl.AT_TARGET = 2;
EventImpl.BUBBLING_PHASE = 3;
return EventImpl;
}());
exports.EventImpl = EventImpl;
/**
* Define constants on prototype.
*/
WebIDLAlgorithm_1.idl_defineConst(EventImpl.prototype, "NONE", 0);
WebIDLAlgorithm_1.idl_defineConst(EventImpl.prototype, "CAPTURING_PHASE", 1);
WebIDLAlgorithm_1.idl_defineConst(EventImpl.prototype, "AT_TARGET", 2);
WebIDLAlgorithm_1.idl_defineConst(EventImpl.prototype, "BUBBLING_PHASE", 3);
//# sourceMappingURL=EventImpl.js.map
/***/ }),
/* 428 */,
/* 429 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var algorithm_1 = __webpack_require__(163);
/**
* Represents a mixin that allows nodes to become the contents of
* a <slot> element. This mixin is implemented by {@link Element} and
* {@link Text}.
*/
var SlotableImpl = /** @class */ (function () {
function SlotableImpl() {
}
Object.defineProperty(SlotableImpl.prototype, "_name", {
get: function () { return this.__name || ''; },
set: function (val) { this.__name = val; },
enumerable: true,
configurable: true
});
Object.defineProperty(SlotableImpl.prototype, "_assignedSlot", {
get: function () { return this.__assignedSlot || null; },
set: function (val) { this.__assignedSlot = val; },
enumerable: true,
configurable: true
});
Object.defineProperty(SlotableImpl.prototype, "assignedSlot", {
/** @inheritdoc */
get: function () {
return algorithm_1.shadowTree_findASlot(this, true);
},
enumerable: true,
configurable: true
});
return SlotableImpl;
}());
exports.SlotableImpl = SlotableImpl;
//# sourceMappingURL=SlotableImpl.js.map
/***/ }),
/* 430 */,
/* 431 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const os = __importStar(__webpack_require__(87));
const utils_1 = __webpack_require__(82);
/**
* Commands
*
* Command Format:
* ::name key=value,key=value::message
*
* Examples:
* ::warning::This is the message
* ::set-env name=MY_VAR::some value
*/
function issueCommand(command, properties, message) {
const cmd = new Command(command, properties, message);
process.stdout.write(cmd.toString() + os.EOL);
}
exports.issueCommand = issueCommand;
function issue(name, message = '') {
issueCommand(name, {}, message);
}
exports.issue = issue;
const CMD_STRING = '::';
class Command {
constructor(command, properties, message) {
if (!command) {
command = 'missing.command';
}
this.command = command;
this.properties = properties;
this.message = message;
}
toString() {
let cmdStr = CMD_STRING + this.command;
if (this.properties && Object.keys(this.properties).length > 0) {
cmdStr += ' ';
let first = true;
for (const key in this.properties) {
if (this.properties.hasOwnProperty(key)) {
const val = this.properties[key];
if (val) {
if (first) {
first = false;
}
else {
cmdStr += ',';
}
cmdStr += `${key}=${escapeProperty(val)}`;
}
}
}
}
cmdStr += `${CMD_STRING}${escapeData(this.message)}`;
return cmdStr;
}
}
function escapeData(s) {
return utils_1.toCommandValue(s)
.replace(/%/g, '%25')
.replace(/\r/g, '%0D')
.replace(/\n/g, '%0A');
}
function escapeProperty(s) {
return utils_1.toCommandValue(s)
.replace(/%/g, '%25')
.replace(/\r/g, '%0D')
.replace(/\n/g, '%0A')
.replace(/:/g, '%3A')
.replace(/,/g, '%2C');
}
//# sourceMappingURL=command.js.map
/***/ }),
/* 432 */,
/* 433 */,
/* 434 */,
/* 435 */,
/* 436 */,
/* 437 */,
/* 438 */,
/* 439 */,
/* 440 */,
/* 441 */,
/* 442 */
/***/ (function(__unusedmodule, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Determines if the given string is valid for a `"Name"` construct.
*
* @param name - name string to test
*/
function xml_isName(name) {
for (var i = 0; i < name.length; i++) {
var n = name.charCodeAt(i);
// NameStartChar
if ((n >= 97 && n <= 122) || // [a-z]
(n >= 65 && n <= 90) || // [A-Z]
n === 58 || n === 95 || // ':' or '_'
(n >= 0xC0 && n <= 0xD6) ||
(n >= 0xD8 && n <= 0xF6) ||
(n >= 0xF8 && n <= 0x2FF) ||
(n >= 0x370 && n <= 0x37D) ||
(n >= 0x37F && n <= 0x1FFF) ||
(n >= 0x200C && n <= 0x200D) ||
(n >= 0x2070 && n <= 0x218F) ||
(n >= 0x2C00 && n <= 0x2FEF) ||
(n >= 0x3001 && n <= 0xD7FF) ||
(n >= 0xF900 && n <= 0xFDCF) ||
(n >= 0xFDF0 && n <= 0xFFFD)) {
continue;
}
else if (i !== 0 &&
(n === 45 || n === 46 || // '-' or '.'
(n >= 48 && n <= 57) || // [0-9]
(n === 0xB7) ||
(n >= 0x0300 && n <= 0x036F) ||
(n >= 0x203F && n <= 0x2040))) {
continue;
}
if (n >= 0xD800 && n <= 0xDBFF && i < name.length - 1) {
var n2 = name.charCodeAt(i + 1);
if (n2 >= 0xDC00 && n2 <= 0xDFFF) {
n = (n - 0xD800) * 0x400 + n2 - 0xDC00 + 0x10000;
i++;
if (n >= 0x10000 && n <= 0xEFFFF) {
continue;
}
}
}
return false;
}
return true;
}
exports.xml_isName = xml_isName;
/**
* Determines if the given string is valid for a `"QName"` construct.
*
* @param name - name string to test
*/
function xml_isQName(name) {
var colonFound = false;
for (var i = 0; i < name.length; i++) {
var n = name.charCodeAt(i);
// NameStartChar
if ((n >= 97 && n <= 122) || // [a-z]
(n >= 65 && n <= 90) || // [A-Z]
n === 95 || // '_'
(n >= 0xC0 && n <= 0xD6) ||
(n >= 0xD8 && n <= 0xF6) ||
(n >= 0xF8 && n <= 0x2FF) ||
(n >= 0x370 && n <= 0x37D) ||
(n >= 0x37F && n <= 0x1FFF) ||
(n >= 0x200C && n <= 0x200D) ||
(n >= 0x2070 && n <= 0x218F) ||
(n >= 0x2C00 && n <= 0x2FEF) ||
(n >= 0x3001 && n <= 0xD7FF) ||
(n >= 0xF900 && n <= 0xFDCF) ||
(n >= 0xFDF0 && n <= 0xFFFD)) {
continue;
}
else if (i !== 0 &&
(n === 45 || n === 46 || // '-' or '.'
(n >= 48 && n <= 57) || // [0-9]
(n === 0xB7) ||
(n >= 0x0300 && n <= 0x036F) ||
(n >= 0x203F && n <= 0x2040))) {
continue;
}
else if (i !== 0 && n === 58) { // :
if (colonFound)
return false; // multiple colons in qname
if (i === name.length - 1)
return false; // colon at the end of qname
colonFound = true;
continue;
}
if (n >= 0xD800 && n <= 0xDBFF && i < name.length - 1) {
var n2 = name.charCodeAt(i + 1);
if (n2 >= 0xDC00 && n2 <= 0xDFFF) {
n = (n - 0xD800) * 0x400 + n2 - 0xDC00 + 0x10000;
i++;
if (n >= 0x10000 && n <= 0xEFFFF) {
continue;
}
}
}
return false;
}
return true;
}
exports.xml_isQName = xml_isQName;
/**
* Determines if the given string contains legal characters.
*
* @param chars - sequence of characters to test
*/
function xml_isLegalChar(chars) {
for (var i = 0; i < chars.length; i++) {
var n = chars.charCodeAt(i);
// #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
if (n === 0x9 || n === 0xA || n === 0xD ||
(n >= 0x20 && n <= 0xD7FF) ||
(n >= 0xE000 && n <= 0xFFFD)) {
continue;
}
if (n >= 0xD800 && n <= 0xDBFF && i < chars.length - 1) {
var n2 = chars.charCodeAt(i + 1);
if (n2 >= 0xDC00 && n2 <= 0xDFFF) {
n = (n - 0xD800) * 0x400 + n2 - 0xDC00 + 0x10000;
i++;
if (n >= 0x10000 && n <= 0x10FFFF) {
continue;
}
}
}
return false;
}
return true;
}
exports.xml_isLegalChar = xml_isLegalChar;
/**
* Determines if the given string contains legal characters for a public
* identifier.
*
* @param chars - sequence of characters to test
*/
function xml_isPubidChar(chars) {
for (var i = 0; i < chars.length; i++) {
// PubId chars are all in the ASCII range, no need to check surrogates
var n = chars.charCodeAt(i);
// #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]
if ((n >= 97 && n <= 122) || // [a-z]
(n >= 65 && n <= 90) || // [A-Z]
(n >= 39 && n <= 59) || // ['()*+,-./] | [0-9] | [:;]
n === 0x20 || n === 0xD || n === 0xA || // #x20 | #xD | #xA
(n >= 35 && n <= 37) || // [#$%]
n === 33 || // !
n === 61 || n === 63 || n === 64 || n === 95) { // [=?@_]
continue;
}
else {
return false;
}
}
return true;
}
exports.xml_isPubidChar = xml_isPubidChar;
//# sourceMappingURL=XMLAlgorithm.js.map
/***/ }),
/* 443 */,
/* 444 */,
/* 445 */,
/* 446 */,
/* 447 */,
/* 448 */,
/* 449 */,
/* 450 */
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
var Type = __webpack_require__(945);
module.exports = new Type('tag:yaml.org,2002:str', {
kind: 'scalar',
construct: function (data) { return data !== null ? data : ''; }
});
/***/ }),
/* 451 */,
/* 452 */,
/* 453 */,
/* 454 */,
/* 455 */,
/* 456 */,
/* 457 */
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
/*eslint-disable max-len,no-use-before-define*/
var common = __webpack_require__(740);
var YAMLException = __webpack_require__(556);
var Mark = __webpack_require__(93);
var DEFAULT_SAFE_SCHEMA = __webpack_require__(723);
var DEFAULT_FULL_SCHEMA = __webpack_require__(910);
var _hasOwnProperty = Object.prototype.hasOwnProperty;
var CONTEXT_FLOW_IN = 1;
var CONTEXT_FLOW_OUT = 2;
var CONTEXT_BLOCK_IN = 3;
var CONTEXT_BLOCK_OUT = 4;
var CHOMPING_CLIP = 1;
var CHOMPING_STRIP = 2;
var CHOMPING_KEEP = 3;
var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;
var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/;
var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/;
var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i;
var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;
function _class(obj) { return Object.prototype.toString.call(obj); }
function is_EOL(c) {
return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);
}
function is_WHITE_SPACE(c) {
return (c === 0x09/* Tab */) || (c === 0x20/* Space */);
}
function is_WS_OR_EOL(c) {
return (c === 0x09/* Tab */) ||
(c === 0x20/* Space */) ||
(c === 0x0A/* LF */) ||
(c === 0x0D/* CR */);
}
function is_FLOW_INDICATOR(c) {
return c === 0x2C/* , */ ||
c === 0x5B/* [ */ ||
c === 0x5D/* ] */ ||
c === 0x7B/* { */ ||
c === 0x7D/* } */;
}
function fromHexCode(c) {
var lc;
if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {
return c - 0x30;
}
/*eslint-disable no-bitwise*/
lc = c | 0x20;
if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {
return lc - 0x61 + 10;
}
return -1;
}
function escapedHexLen(c) {
if (c === 0x78/* x */) { return 2; }
if (c === 0x75/* u */) { return 4; }
if (c === 0x55/* U */) { return 8; }
return 0;
}
function fromDecimalCode(c) {
if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {
return c - 0x30;
}
return -1;
}
function simpleEscapeSequence(c) {
/* eslint-disable indent */
return (c === 0x30/* 0 */) ? '\x00' :
(c === 0x61/* a */) ? '\x07' :
(c === 0x62/* b */) ? '\x08' :
(c === 0x74/* t */) ? '\x09' :
(c === 0x09/* Tab */) ? '\x09' :
(c === 0x6E/* n */) ? '\x0A' :
(c === 0x76/* v */) ? '\x0B' :
(c === 0x66/* f */) ? '\x0C' :
(c === 0x72/* r */) ? '\x0D' :
(c === 0x65/* e */) ? '\x1B' :
(c === 0x20/* Space */) ? ' ' :
(c === 0x22/* " */) ? '\x22' :
(c === 0x2F/* / */) ? '/' :
(c === 0x5C/* \ */) ? '\x5C' :
(c === 0x4E/* N */) ? '\x85' :
(c === 0x5F/* _ */) ? '\xA0' :
(c === 0x4C/* L */) ? '\u2028' :
(c === 0x50/* P */) ? '\u2029' : '';
}
function charFromCodepoint(c) {
if (c <= 0xFFFF) {
return String.fromCharCode(c);
}
// Encode UTF-16 surrogate pair
// https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF
return String.fromCharCode(
((c - 0x010000) >> 10) + 0xD800,
((c - 0x010000) & 0x03FF) + 0xDC00
);
}
var simpleEscapeCheck = new Array(256); // integer, for fast access
var simpleEscapeMap = new Array(256);
for (var i = 0; i < 256; i++) {
simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;
simpleEscapeMap[i] = simpleEscapeSequence(i);
}
function State(input, options) {
this.input = input;
this.filename = options['filename'] || null;
this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;
this.onWarning = options['onWarning'] || null;
this.legacy = options['legacy'] || false;
this.json = options['json'] || false;
this.listener = options['listener'] || null;
this.implicitTypes = this.schema.compiledImplicit;
this.typeMap = this.schema.compiledTypeMap;
this.length = input.length;
this.position = 0;
this.line = 0;
this.lineStart = 0;
this.lineIndent = 0;
this.documents = [];
/*
this.version;
this.checkLineBreaks;
this.tagMap;
this.anchorMap;
this.tag;
this.anchor;
this.kind;
this.result;*/
}
function generateError(state, message) {
return new YAMLException(
message,
new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));
}
function throwError(state, message) {
throw generateError(state, message);
}
function throwWarning(state, message) {
if (state.onWarning) {
state.onWarning.call(null, generateError(state, message));
}
}
var directiveHandlers = {
YAML: function handleYamlDirective(state, name, args) {
var match, major, minor;
if (state.version !== null) {
throwError(state, 'duplication of %YAML directive');
}
if (args.length !== 1) {
throwError(state, 'YAML directive accepts exactly one argument');
}
match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]);
if (match === null) {
throwError(state, 'ill-formed argument of the YAML directive');
}
major = parseInt(match[1], 10);
minor = parseInt(match[2], 10);
if (major !== 1) {
throwError(state, 'unacceptable YAML version of the document');
}
state.version = args[0];
state.checkLineBreaks = (minor < 2);
if (minor !== 1 && minor !== 2) {
throwWarning(state, 'unsupported YAML version of the document');
}
},
TAG: function handleTagDirective(state, name, args) {
var handle, prefix;
if (args.length !== 2) {
throwError(state, 'TAG directive accepts exactly two arguments');
}
handle = args[0];
prefix = args[1];
if (!PATTERN_TAG_HANDLE.test(handle)) {
throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');
}
if (_hasOwnProperty.call(state.tagMap, handle)) {
throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle');
}
if (!PATTERN_TAG_URI.test(prefix)) {
throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');
}
state.tagMap[handle] = prefix;
}
};
function captureSegment(state, start, end, checkJson) {
var _position, _length, _character, _result;
if (start < end) {
_result = state.input.slice(start, end);
if (checkJson) {
for (_position = 0, _length = _result.length; _position < _length; _position += 1) {
_character = _result.charCodeAt(_position);
if (!(_character === 0x09 ||
(0x20 <= _character && _character <= 0x10FFFF))) {
throwError(state, 'expected valid JSON character');
}
}
} else if (PATTERN_NON_PRINTABLE.test(_result)) {
throwError(state, 'the stream contains non-printable characters');
}
state.result += _result;
}
}
function mergeMappings(state, destination, source, overridableKeys) {
var sourceKeys, key, index, quantity;
if (!common.isObject(source)) {
throwError(state, 'cannot merge mappings; the provided source object is unacceptable');
}
sourceKeys = Object.keys(source);
for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {
key = sourceKeys[index];
if (!_hasOwnProperty.call(destination, key)) {
destination[key] = source[key];
overridableKeys[key] = true;
}
}
}
function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startPos) {
var index, quantity;
// The output is a plain object here, so keys can only be strings.
// We need to convert keyNode to a string, but doing so can hang the process
// (deeply nested arrays that explode exponentially using aliases).
if (Array.isArray(keyNode)) {
keyNode = Array.prototype.slice.call(keyNode);
for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {
if (Array.isArray(keyNode[index])) {
throwError(state, 'nested arrays are not supported inside keys');
}
if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') {
keyNode[index] = '[object Object]';
}
}
}
// Avoid code execution in load() via toString property
// (still use its own toString for arrays, timestamps,
// and whatever user schema extensions happen to have @@toStringTag)
if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') {
keyNode = '[object Object]';
}
keyNode = String(keyNode);
if (_result === null) {
_result = {};
}
if (keyTag === 'tag:yaml.org,2002:merge') {
if (Array.isArray(valueNode)) {
for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {
mergeMappings(state, _result, valueNode[index], overridableKeys);
}
} else {
mergeMappings(state, _result, valueNode, overridableKeys);
}
} else {
if (!state.json &&
!_hasOwnProperty.call(overridableKeys, keyNode) &&
_hasOwnProperty.call(_result, keyNode)) {
state.line = startLine || state.line;
state.position = startPos || state.position;
throwError(state, 'duplicated mapping key');
}
_result[keyNode] = valueNode;
delete overridableKeys[keyNode];
}
return _result;
}
function readLineBreak(state) {
var ch;
ch = state.input.charCodeAt(state.position);
if (ch === 0x0A/* LF */) {
state.position++;
} else if (ch === 0x0D/* CR */) {
state.position++;
if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {
state.position++;
}
} else {
throwError(state, 'a line break is expected');
}
state.line += 1;
state.lineStart = state.position;
}
function skipSeparationSpace(state, allowComments, checkIndent) {
var lineBreaks = 0,
ch = state.input.charCodeAt(state.position);
while (ch !== 0) {
while (is_WHITE_SPACE(ch)) {
ch = state.input.charCodeAt(++state.position);
}
if (allowComments && ch === 0x23/* # */) {
do {
ch = state.input.charCodeAt(++state.position);
} while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);
}
if (is_EOL(ch)) {
readLineBreak(state);
ch = state.input.charCodeAt(state.position);
lineBreaks++;
state.lineIndent = 0;
while (ch === 0x20/* Space */) {
state.lineIndent++;
ch = state.input.charCodeAt(++state.position);
}
} else {
break;
}
}
if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {
throwWarning(state, 'deficient indentation');
}
return lineBreaks;
}
function testDocumentSeparator(state) {
var _position = state.position,
ch;
ch = state.input.charCodeAt(_position);
// Condition state.position === state.lineStart is tested
// in parent on each call, for efficiency. No needs to test here again.
if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&
ch === state.input.charCodeAt(_position + 1) &&
ch === state.input.charCodeAt(_position + 2)) {
_position += 3;
ch = state.input.charCodeAt(_position);
if (ch === 0 || is_WS_OR_EOL(ch)) {
return true;
}
}
return false;
}
function writeFoldedLines(state, count) {
if (count === 1) {
state.result += ' ';
} else if (count > 1) {
state.result += common.repeat('\n', count - 1);
}
}
function readPlainScalar(state, nodeIndent, withinFlowCollection) {
var preceding,
following,
captureStart,
captureEnd,
hasPendingContent,
_line,
_lineStart,
_lineIndent,
_kind = state.kind,
_result = state.result,
ch;
ch = state.input.charCodeAt(state.position);
if (is_WS_OR_EOL(ch) ||
is_FLOW_INDICATOR(ch) ||
ch === 0x23/* # */ ||
ch === 0x26/* & */ ||
ch === 0x2A/* * */ ||
ch === 0x21/* ! */ ||
ch === 0x7C/* | */ ||
ch === 0x3E/* > */ ||
ch === 0x27/* ' */ ||
ch === 0x22/* " */ ||
ch === 0x25/* % */ ||
ch === 0x40/* @ */ ||
ch === 0x60/* ` */) {
return false;
}
if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {
following = state.input.charCodeAt(state.position + 1);
if (is_WS_OR_EOL(following) ||
withinFlowCollection && is_FLOW_INDICATOR(following)) {
return false;
}
}
state.kind = 'scalar';
state.result = '';
captureStart = captureEnd = state.position;
hasPendingContent = false;
while (ch !== 0) {
if (ch === 0x3A/* : */) {
following = state.input.charCodeAt(state.position + 1);
if (is_WS_OR_EOL(following) ||
withinFlowCollection && is_FLOW_INDICATOR(following)) {
break;
}
} else if (ch === 0x23/* # */) {
preceding = state.input.charCodeAt(state.position - 1);
if (is_WS_OR_EOL(preceding)) {
break;
}
} else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||
withinFlowCollection && is_FLOW_INDICATOR(ch)) {
break;
} else if (is_EOL(ch)) {
_line = state.line;
_lineStart = state.lineStart;
_lineIndent = state.lineIndent;
skipSeparationSpace(state, false, -1);
if (state.lineIndent >= nodeIndent) {
hasPendingContent = true;
ch = state.input.charCodeAt(state.position);
continue;
} else {
state.position = captureEnd;
state.line = _line;
state.lineStart = _lineStart;
state.lineIndent = _lineIndent;
break;
}
}
if (hasPendingContent) {
captureSegment(state, captureStart, captureEnd, false);
writeFoldedLines(state, state.line - _line);
captureStart = captureEnd = state.position;
hasPendingContent = false;
}
if (!is_WHITE_SPACE(ch)) {
captureEnd = state.position + 1;
}
ch = state.input.charCodeAt(++state.position);
}
captureSegment(state, captureStart, captureEnd, false);
if (state.result) {
return true;
}
state.kind = _kind;
state.result = _result;
return false;
}
function readSingleQuotedScalar(state, nodeIndent) {
var ch,
captureStart, captureEnd;
ch = state.input.charCodeAt(state.position);
if (ch !== 0x27/* ' */) {
return false;
}
state.kind = 'scalar';
state.result = '';
state.position++;
captureStart = captureEnd = state.position;
while ((ch = state.input.charCodeAt(state.position)) !== 0) {
if (ch === 0x27/* ' */) {
captureSegment(state, captureStart, state.position, true);
ch = state.input.charCodeAt(++state.position);
if (ch === 0x27/* ' */) {
captureStart = state.position;
state.position++;
captureEnd = state.position;
} else {
return true;
}
} else if (is_EOL(ch)) {
captureSegment(state, captureStart, captureEnd, true);
writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));
captureStart = captureEnd = state.position;
} else if (state.position === state.lineStart && testDocumentSeparator(state)) {
throwError(state, 'unexpected end of the document within a single quoted scalar');
} else {
state.position++;
captureEnd = state.position;
}
}
throwError(state, 'unexpected end of the stream within a single quoted scalar');
}
function readDoubleQuotedScalar(state, nodeIndent) {
var captureStart,
captureEnd,
hexLength,
hexResult,
tmp,
ch;
ch = state.input.charCodeAt(state.position);
if (ch !== 0x22/* " */) {
return false;
}
state.kind = 'scalar';
state.result = '';
state.position++;
captureStart = captureEnd = state.position;
while ((ch = state.input.charCodeAt(state.position)) !== 0) {
if (ch === 0x22/* " */) {
captureSegment(state, captureStart, state.position, true);
state.position++;
return true;
} else if (ch === 0x5C/* \ */) {
captureSegment(state, captureStart, state.position, true);
ch = state.input.charCodeAt(++state.position);
if (is_EOL(ch)) {
skipSeparationSpace(state, false, nodeIndent);
// TODO: rework to inline fn with no type cast?
} else if (ch < 256 && simpleEscapeCheck[ch]) {
state.result += simpleEscapeMap[ch];
state.position++;
} else if ((tmp = escapedHexLen(ch)) > 0) {
hexLength = tmp;
hexResult = 0;
for (; hexLength > 0; hexLength--) {
ch = state.input.charCodeAt(++state.position);
if ((tmp = fromHexCode(ch)) >= 0) {
hexResult = (hexResult << 4) + tmp;
} else {
throwError(state, 'expected hexadecimal character');
}
}
state.result += charFromCodepoint(hexResult);
state.position++;
} else {
throwError(state, 'unknown escape sequence');
}
captureStart = captureEnd = state.position;
} else if (is_EOL(ch)) {
captureSegment(state, captureStart, captureEnd, true);
writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));
captureStart = captureEnd = state.position;
} else if (state.position === state.lineStart && testDocumentSeparator(state)) {
throwError(state, 'unexpected end of the document within a double quoted scalar');
} else {
state.position++;
captureEnd = state.position;
}
}
throwError(state, 'unexpected end of the stream within a double quoted scalar');
}
function readFlowCollection(state, nodeIndent) {
var readNext = true,
_line,
_tag = state.tag,
_result,
_anchor = state.anchor,
following,
terminator,
isPair,
isExplicitPair,
isMapping,
overridableKeys = {},
keyNode,
keyTag,
valueNode,
ch;
ch = state.input.charCodeAt(state.position);
if (ch === 0x5B/* [ */) {
terminator = 0x5D;/* ] */
isMapping = false;
_result = [];
} else if (ch === 0x7B/* { */) {
terminator = 0x7D;/* } */
isMapping = true;
_result = {};
} else {
return false;
}
if (state.anchor !== null) {
state.anchorMap[state.anchor] = _result;
}
ch = state.input.charCodeAt(++state.position);
while (ch !== 0) {
skipSeparationSpace(state, true, nodeIndent);
ch = state.input.charCodeAt(state.position);
if (ch === terminator) {
state.position++;
state.tag = _tag;
state.anchor = _anchor;
state.kind = isMapping ? 'mapping' : 'sequence';
state.result = _result;
return true;
} else if (!readNext) {
throwError(state, 'missed comma between flow collection entries');
}
keyTag = keyNode = valueNode = null;
isPair = isExplicitPair = false;
if (ch === 0x3F/* ? */) {
following = state.input.charCodeAt(state.position + 1);
if (is_WS_OR_EOL(following)) {
isPair = isExplicitPair = true;
state.position++;
skipSeparationSpace(state, true, nodeIndent);
}
}
_line = state.line;
composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);
keyTag = state.tag;
keyNode = state.result;
skipSeparationSpace(state, true, nodeIndent);
ch = state.input.charCodeAt(state.position);
if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {
isPair = true;
ch = state.input.charCodeAt(++state.position);
skipSeparationSpace(state, true, nodeIndent);
composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);
valueNode = state.result;
}
if (isMapping) {
storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);
} else if (isPair) {
_result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));
} else {
_result.push(keyNode);
}
skipSeparationSpace(state, true, nodeIndent);
ch = state.input.charCodeAt(state.position);
if (ch === 0x2C/* , */) {
readNext = true;
ch = state.input.charCodeAt(++state.position);
} else {
readNext = false;
}
}
throwError(state, 'unexpected end of the stream within a flow collection');
}
function readBlockScalar(state, nodeIndent) {
var captureStart,
folding,
chomping = CHOMPING_CLIP,
didReadContent = false,
detectedIndent = false,
textIndent = nodeIndent,
emptyLines = 0,
atMoreIndented = false,
tmp,
ch;
ch = state.input.charCodeAt(state.position);
if (ch === 0x7C/* | */) {
folding = false;
} else if (ch === 0x3E/* > */) {
folding = true;
} else {
return false;
}
state.kind = 'scalar';
state.result = '';
while (ch !== 0) {
ch = state.input.charCodeAt(++state.position);
if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {
if (CHOMPING_CLIP === chomping) {
chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;
} else {
throwError(state, 'repeat of a chomping mode identifier');
}
} else if ((tmp = fromDecimalCode(ch)) >= 0) {
if (tmp === 0) {
throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');
} else if (!detectedIndent) {
textIndent = nodeIndent + tmp - 1;
detectedIndent = true;
} else {
throwError(state, 'repeat of an indentation width identifier');
}
} else {
break;
}
}
if (is_WHITE_SPACE(ch)) {
do { ch = state.input.charCodeAt(++state.position); }
while (is_WHITE_SPACE(ch));
if (ch === 0x23/* # */) {
do { ch = state.input.charCodeAt(++state.position); }
while (!is_EOL(ch) && (ch !== 0));
}
}
while (ch !== 0) {
readLineBreak(state);
state.lineIndent = 0;
ch = state.input.charCodeAt(state.position);
while ((!detectedIndent || state.lineIndent < textIndent) &&
(ch === 0x20/* Space */)) {
state.lineIndent++;
ch = state.input.charCodeAt(++state.position);
}
if (!detectedIndent && state.lineIndent > textIndent) {
textIndent = state.lineIndent;
}
if (is_EOL(ch)) {
emptyLines++;
continue;
}
// End of the scalar.
if (state.lineIndent < textIndent) {
// Perform the chomping.
if (chomping === CHOMPING_KEEP) {
state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines);
} else if (chomping === CHOMPING_CLIP) {
if (didReadContent) { // i.e. only if the scalar is not empty.
state.result += '\n';
}
}
// Break this `while` cycle and go to the funciton's epilogue.
break;
}
// Folded style: use fancy rules to handle line breaks.
if (folding) {
// Lines starting with white space characters (more-indented lines) are not folded.
if (is_WHITE_SPACE(ch)) {
atMoreIndented = true;
// except for the first content line (cf. Example 8.1)
state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines);
// End of more-indented block.
} else if (atMoreIndented) {
atMoreIndented = false;
state.result += common.repeat('\n', emptyLines + 1);
// Just one line break - perceive as the same line.
} else if (emptyLines === 0) {
if (didReadContent) { // i.e. only if we have already read some scalar content.
state.result += ' ';
}
// Several line breaks - perceive as different lines.
} else {
state.result += common.repeat('\n', emptyLines);
}
// Literal style: just add exact number of line breaks between content lines.
} else {
// Keep all line breaks except the header line break.
state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines);
}
didReadContent = true;
detectedIndent = true;
emptyLines = 0;
captureStart = state.position;
while (!is_EOL(ch) && (ch !== 0)) {
ch = state.input.charCodeAt(++state.position);
}
captureSegment(state, captureStart, state.position, false);
}
return true;
}
function readBlockSequence(state, nodeIndent) {
var _line,
_tag = state.tag,
_anchor = state.anchor,
_result = [],
following,
detected = false,
ch;
if (state.anchor !== null) {
state.anchorMap[state.anchor] = _result;
}
ch = state.input.charCodeAt(state.position);
while (ch !== 0) {
if (ch !== 0x2D/* - */) {
break;
}
following = state.input.charCodeAt(state.position + 1);
if (!is_WS_OR_EOL(following)) {
break;
}
detected = true;
state.position++;
if (skipSeparationSpace(state, true, -1)) {
if (state.lineIndent <= nodeIndent) {
_result.push(null);
ch = state.input.charCodeAt(state.position);
continue;
}
}
_line = state.line;
composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);
_result.push(state.result);
skipSeparationSpace(state, true, -1);
ch = state.input.charCodeAt(state.position);
if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {
throwError(state, 'bad indentation of a sequence entry');
} else if (state.lineIndent < nodeIndent) {
break;
}
}
if (detected) {
state.tag = _tag;
state.anchor = _anchor;
state.kind = 'sequence';
state.result = _result;
return true;
}
return false;
}
function readBlockMapping(state, nodeIndent, flowIndent) {
var following,
allowCompact,
_line,
_pos,
_tag = state.tag,
_anchor = state.anchor,
_result = {},
overridableKeys = {},
keyTag = null,
keyNode = null,
valueNode = null,
atExplicitKey = false,
detected = false,
ch;
if (state.anchor !== null) {
state.anchorMap[state.anchor] = _result;
}
ch = state.input.charCodeAt(state.position);
while (ch !== 0) {
following = state.input.charCodeAt(state.position + 1);
_line = state.line; // Save the current line.
_pos = state.position;
//
// Explicit notation case. There are two separate blocks:
// first for the key (denoted by "?") and second for the value (denoted by ":")
//
if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {
if (ch === 0x3F/* ? */) {
if (atExplicitKey) {
storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);
keyTag = keyNode = valueNode = null;
}
detected = true;
atExplicitKey = true;
allowCompact = true;
} else if (atExplicitKey) {
// i.e. 0x3A/* : */ === character after the explicit key.
atExplicitKey = false;
allowCompact = true;
} else {
throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line');
}
state.position += 1;
ch = following;
//
// Implicit notation case. Flow-style node as the key first, then ":", and the value.
//
} else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {
if (state.line === _line) {
ch = state.input.charCodeAt(state.position);
while (is_WHITE_SPACE(ch)) {
ch = state.input.charCodeAt(++state.position);
}
if (ch === 0x3A/* : */) {
ch = state.input.charCodeAt(++state.position);
if (!is_WS_OR_EOL(ch)) {
throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');
}
if (atExplicitKey) {
storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);
keyTag = keyNode = valueNode = null;
}
detected = true;
atExplicitKey = false;
allowCompact = false;
keyTag = state.tag;
keyNode = state.result;
} else if (detected) {
throwError(state, 'can not read an implicit mapping pair; a colon is missed');
} else {
state.tag = _tag;
state.anchor = _anchor;
return true; // Keep the result of `composeNode`.
}
} else if (detected) {
throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');
} else {
state.tag = _tag;
state.anchor = _anchor;
return true; // Keep the result of `composeNode`.
}
} else {
break; // Reading is done. Go to the epilogue.
}
//
// Common reading code for both explicit and implicit notations.
//
if (state.line === _line || state.lineIndent > nodeIndent) {
if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {
if (atExplicitKey) {
keyNode = state.result;
} else {
valueNode = state.result;
}
}
if (!atExplicitKey) {
storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _pos);
keyTag = keyNode = valueNode = null;
}
skipSeparationSpace(state, true, -1);
ch = state.input.charCodeAt(state.position);
}
if (state.lineIndent > nodeIndent && (ch !== 0)) {
throwError(state, 'bad indentation of a mapping entry');
} else if (state.lineIndent < nodeIndent) {
break;
}
}
//
// Epilogue.
//
// Special case: last mapping's node contains only the key in explicit notation.
if (atExplicitKey) {
storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);
}
// Expose the resulting mapping.
if (detected) {
state.tag = _tag;
state.anchor = _anchor;
state.kind = 'mapping';
state.result = _result;
}
return detected;
}
function readTagProperty(state) {
var _position,
isVerbatim = false,
isNamed = false,
tagHandle,
tagName,
ch;
ch = state.input.charCodeAt(state.position);
if (ch !== 0x21/* ! */) return false;
if (state.tag !== null) {
throwError(state, 'duplication of a tag property');
}
ch = state.input.charCodeAt(++state.position);
if (ch === 0x3C/* < */) {
isVerbatim = true;
ch = state.input.charCodeAt(++state.position);
} else if (ch === 0x21/* ! */) {
isNamed = true;
tagHandle = '!!';
ch = state.input.charCodeAt(++state.position);
} else {
tagHandle = '!';
}
_position = state.position;
if (isVerbatim) {
do { ch = state.input.charCodeAt(++state.position); }
while (ch !== 0 && ch !== 0x3E/* > */);
if (state.position < state.length) {
tagName = state.input.slice(_position, state.position);
ch = state.input.charCodeAt(++state.position);
} else {
throwError(state, 'unexpected end of the stream within a verbatim tag');
}
} else {
while (ch !== 0 && !is_WS_OR_EOL(ch)) {
if (ch === 0x21/* ! */) {
if (!isNamed) {
tagHandle = state.input.slice(_position - 1, state.position + 1);
if (!PATTERN_TAG_HANDLE.test(tagHandle)) {
throwError(state, 'named tag handle cannot contain such characters');
}
isNamed = true;
_position = state.position + 1;
} else {
throwError(state, 'tag suffix cannot contain exclamation marks');
}
}
ch = state.input.charCodeAt(++state.position);
}
tagName = state.input.slice(_position, state.position);
if (PATTERN_FLOW_INDICATORS.test(tagName)) {
throwError(state, 'tag suffix cannot contain flow indicator characters');
}
}
if (tagName && !PATTERN_TAG_URI.test(tagName)) {
throwError(state, 'tag name cannot contain such characters: ' + tagName);
}
if (isVerbatim) {
state.tag = tagName;
} else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {
state.tag = state.tagMap[tagHandle] + tagName;
} else if (tagHandle === '!') {
state.tag = '!' + tagName;
} else if (tagHandle === '!!') {
state.tag = 'tag:yaml.org,2002:' + tagName;
} else {
throwError(state, 'undeclared tag handle "' + tagHandle + '"');
}
return true;
}
function readAnchorProperty(state) {
var _position,
ch;
ch = state.input.charCodeAt(state.position);
if (ch !== 0x26/* & */) return false;
if (state.anchor !== null) {
throwError(state, 'duplication of an anchor property');
}
ch = state.input.charCodeAt(++state.position);
_position = state.position;
while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {
ch = state.input.charCodeAt(++state.position);
}
if (state.position === _position) {
throwError(state, 'name of an anchor node must contain at least one character');
}
state.anchor = state.input.slice(_position, state.position);
return true;
}
function readAlias(state) {
var _position, alias,
ch;
ch = state.input.charCodeAt(state.position);
if (ch !== 0x2A/* * */) return false;
ch = state.input.charCodeAt(++state.position);
_position = state.position;
while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {
ch = state.input.charCodeAt(++state.position);
}
if (state.position === _position) {
throwError(state, 'name of an alias node must contain at least one character');
}
alias = state.input.slice(_position, state.position);
if (!state.anchorMap.hasOwnProperty(alias)) {
throwError(state, 'unidentified alias "' + alias + '"');
}
state.result = state.anchorMap[alias];
skipSeparationSpace(state, true, -1);
return true;
}
function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {
var allowBlockStyles,
allowBlockScalars,
allowBlockCollections,
indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this<parent
atNewLine = false,
hasContent = false,
typeIndex,
typeQuantity,
type,
flowIndent,
blockIndent;
if (state.listener !== null) {
state.listener('open', state);
}
state.tag = null;
state.anchor = null;
state.kind = null;
state.result = null;
allowBlockStyles = allowBlockScalars = allowBlockCollections =
CONTEXT_BLOCK_OUT === nodeContext ||
CONTEXT_BLOCK_IN === nodeContext;
if (allowToSeek) {
if (skipSeparationSpace(state, true, -1)) {
atNewLine = true;
if (state.lineIndent > parentIndent) {
indentStatus = 1;
} else if (state.lineIndent === parentIndent) {
indentStatus = 0;
} else if (state.lineIndent < parentIndent) {
indentStatus = -1;
}
}
}
if (indentStatus === 1) {
while (readTagProperty(state) || readAnchorProperty(state)) {
if (skipSeparationSpace(state, true, -1)) {
atNewLine = true;
allowBlockCollections = allowBlockStyles;
if (state.lineIndent > parentIndent) {
indentStatus = 1;
} else if (state.lineIndent === parentIndent) {
indentStatus = 0;
} else if (state.lineIndent < parentIndent) {
indentStatus = -1;
}
} else {
allowBlockCollections = false;
}
}
}
if (allowBlockCollections) {
allowBlockCollections = atNewLine || allowCompact;
}
if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {
if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {
flowIndent = parentIndent;
} else {
flowIndent = parentIndent + 1;
}
blockIndent = state.position - state.lineStart;
if (indentStatus === 1) {
if (allowBlockCollections &&
(readBlockSequence(state, blockIndent) ||
readBlockMapping(state, blockIndent, flowIndent)) ||
readFlowCollection(state, flowIndent)) {
hasContent = true;
} else {
if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||
readSingleQuotedScalar(state, flowIndent) ||
readDoubleQuotedScalar(state, flowIndent)) {
hasContent = true;
} else if (readAlias(state)) {
hasContent = true;
if (state.tag !== null || state.anchor !== null) {
throwError(state, 'alias node should not have any properties');
}
} else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {
hasContent = true;
if (state.tag === null) {
state.tag = '?';
}
}
if (state.anchor !== null) {
state.anchorMap[state.anchor] = state.result;
}
}
} else if (indentStatus === 0) {
// Special case: block sequences are allowed to have same indentation level as the parent.
// http://www.yaml.org/spec/1.2/spec.html#id2799784
hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);
}
}
if (state.tag !== null && state.tag !== '!') {
if (state.tag === '?') {
// Implicit resolving is not allowed for non-scalar types, and '?'
// non-specific tag is only automatically assigned to plain scalars.
//
// We only need to check kind conformity in case user explicitly assigns '?'
// tag, for example like this: "!<?> [0]"
//
if (state.result !== null && state.kind !== 'scalar') {
throwError(state, 'unacceptable node kind for !<?> tag; it should be "scalar", not "' + state.kind + '"');
}
for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {
type = state.implicitTypes[typeIndex];
if (type.resolve(state.result)) { // `state.result` updated in resolver if matched
state.result = type.construct(state.result);
state.tag = type.tag;
if (state.anchor !== null) {
state.anchorMap[state.anchor] = state.result;
}
break;
}
}
} else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {
type = state.typeMap[state.kind || 'fallback'][state.tag];
if (state.result !== null && type.kind !== state.kind) {
throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be "' + type.kind + '", not "' + state.kind + '"');
}
if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched
throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');
} else {
state.result = type.construct(state.result);
if (state.anchor !== null) {
state.anchorMap[state.anchor] = state.result;
}
}
} else {
throwError(state, 'unknown tag !<' + state.tag + '>');
}
}
if (state.listener !== null) {
state.listener('close', state);
}
return state.tag !== null || state.anchor !== null || hasContent;
}
function readDocument(state) {
var documentStart = state.position,
_position,
directiveName,
directiveArgs,
hasDirectives = false,
ch;
state.version = null;
state.checkLineBreaks = state.legacy;
state.tagMap = {};
state.anchorMap = {};
while ((ch = state.input.charCodeAt(state.position)) !== 0) {
skipSeparationSpace(state, true, -1);
ch = state.input.charCodeAt(state.position);
if (state.lineIndent > 0 || ch !== 0x25/* % */) {
break;
}
hasDirectives = true;
ch = state.input.charCodeAt(++state.position);
_position = state.position;
while (ch !== 0 && !is_WS_OR_EOL(ch)) {
ch = state.input.charCodeAt(++state.position);
}
directiveName = state.input.slice(_position, state.position);
directiveArgs = [];
if (directiveName.length < 1) {
throwError(state, 'directive name must not be less than one character in length');
}
while (ch !== 0) {
while (is_WHITE_SPACE(ch)) {
ch = state.input.charCodeAt(++state.position);
}
if (ch === 0x23/* # */) {
do { ch = state.input.charCodeAt(++state.position); }
while (ch !== 0 && !is_EOL(ch));
break;
}
if (is_EOL(ch)) break;
_position = state.position;
while (ch !== 0 && !is_WS_OR_EOL(ch)) {
ch = state.input.charCodeAt(++state.position);
}
directiveArgs.push(state.input.slice(_position, state.position));
}
if (ch !== 0) readLineBreak(state);
if (_hasOwnProperty.call(directiveHandlers, directiveName)) {
directiveHandlers[directiveName](state, directiveName, directiveArgs);
} else {
throwWarning(state, 'unknown document directive "' + directiveName + '"');
}
}
skipSeparationSpace(state, true, -1);
if (state.lineIndent === 0 &&
state.input.charCodeAt(state.position) === 0x2D/* - */ &&
state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&
state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {
state.position += 3;
skipSeparationSpace(state, true, -1);
} else if (hasDirectives) {
throwError(state, 'directives end mark is expected');
}
composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);
skipSeparationSpace(state, true, -1);
if (state.checkLineBreaks &&
PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {
throwWarning(state, 'non-ASCII line breaks are interpreted as content');
}
state.documents.push(state.result);
if (state.position === state.lineStart && testDocumentSeparator(state)) {
if (state.input.charCodeAt(state.position) === 0x2E/* . */) {
state.position += 3;
skipSeparationSpace(state, true, -1);
}
return;
}
if (state.position < (state.length - 1)) {
throwError(state, 'end of the stream or a document separator is expected');
} else {
return;
}
}
function loadDocuments(input, options) {
input = String(input);
options = options || {};
if (input.length !== 0) {
// Add tailing `\n` if not exists
if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&
input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {
input += '\n';
}
// Strip BOM
if (input.charCodeAt(0) === 0xFEFF) {
input = input.slice(1);
}
}
var state = new State(input, options);
var nullpos = input.indexOf('\0');
if (nullpos !== -1) {
state.position = nullpos;
throwError(state, 'null byte is not allowed in input');
}
// Use 0 as string terminator. That significantly simplifies bounds check.
state.input += '\0';
while (state.input.charCodeAt(state.position) === 0x20/* Space */) {
state.lineIndent += 1;
state.position += 1;
}
while (state.position < (state.length - 1)) {
readDocument(state);
}
return state.documents;
}
function loadAll(input, iterator, options) {
if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') {
options = iterator;
iterator = null;
}
var documents = loadDocuments(input, options);
if (typeof iterator !== 'function') {
return documents;
}
for (var index = 0, length = documents.length; index < length; index += 1) {
iterator(documents[index]);
}
}
function load(input, options) {
var documents = loadDocuments(input, options);
if (documents.length === 0) {
/*eslint-disable no-undefined*/
return undefined;
} else if (documents.length === 1) {
return documents[0];
}
throw new YAMLException('expected a single document in the stream, but found more');
}
function safeLoadAll(input, iterator, options) {
if (typeof iterator === 'object' && iterator !== null && typeof options === 'undefined') {
options = iterator;
iterator = null;
}
return loadAll(input, iterator, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));
}
function safeLoad(input, options) {
return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));
}
module.exports.loadAll = loadAll;
module.exports.load = load;
module.exports.safeLoadAll = safeLoadAll;
module.exports.safeLoad = safeLoad;
/***/ }),
/* 458 */,
/* 459 */,
/* 460 */,
/* 461 */,
/* 462 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __spread = (this && this.__spread) || function () {
for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
var interfaces_1 = __webpack_require__(970);
var LocalNameSet_1 = __webpack_require__(575);
var NamespacePrefixMap_1 = __webpack_require__(392);
var infra_1 = __webpack_require__(23);
var algorithm_1 = __webpack_require__(163);
/**
* Pre-serializes XML nodes.
*/
var BaseWriter = /** @class */ (function () {
/**
* Initializes a new instance of `BaseWriter`.
*
* @param builderOptions - XML builder options
*/
function BaseWriter(builderOptions) {
/**
* Gets the current depth of the XML tree.
*/
this.level = 0;
this._builderOptions = builderOptions;
}
/**
* Used by derived classes to serialize the XML declaration.
*
* @param version - a version number string
* @param encoding - encoding declaration
* @param standalone - standalone document declaration
*/
BaseWriter.prototype.declaration = function (version, encoding, standalone) { };
/**
* Used by derived classes to serialize a DocType node.
*
* @param name - node name
* @param publicId - public identifier
* @param systemId - system identifier
*/
BaseWriter.prototype.docType = function (name, publicId, systemId) { };
/**
* Used by derived classes to serialize a comment node.
*
* @param data - node data
*/
BaseWriter.prototype.comment = function (data) { };
/**
* Used by derived classes to serialize a text node.
*
* @param data - node data
*/
BaseWriter.prototype.text = function (data) { };
/**
* Used by derived classes to serialize a processing instruction node.
*
* @param target - instruction target
* @param data - node data
*/
BaseWriter.prototype.instruction = function (target, data) { };
/**
* Used by derived classes to serialize a CData section node.
*
* @param data - node data
*/
BaseWriter.prototype.cdata = function (data) { };
/**
* Used by derived classes to serialize the beginning of the opening tag of an
* element node.
*
* @param name - node name
*/
BaseWriter.prototype.openTagBegin = function (name) { };
/**
* Used by derived classes to serialize the ending of the opening tag of an
* element node.
*
* @param name - node name
* @param selfClosing - whether the element node is self closing
* @param voidElement - whether the element node is a HTML void element
*/
BaseWriter.prototype.openTagEnd = function (name, selfClosing, voidElement) { };
/**
* Used by derived classes to serialize the closing tag of an element node.
*
* @param name - node name
*/
BaseWriter.prototype.closeTag = function (name) { };
/**
* Used by derived classes to serialize attributes or namespace declarations.
*
* @param attributes - attribute array
*/
BaseWriter.prototype.attributes = function (attributes) {
var e_1, _a;
try {
for (var attributes_1 = __values(attributes), attributes_1_1 = attributes_1.next(); !attributes_1_1.done; attributes_1_1 = attributes_1.next()) {
var attr = attributes_1_1.value;
this.attribute(attr[1] === null ? attr[2] : attr[1] + ':' + attr[2], attr[3]);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (attributes_1_1 && !attributes_1_1.done && (_a = attributes_1.return)) _a.call(attributes_1);
}
finally { if (e_1) throw e_1.error; }
}
};
/**
* Used by derived classes to serialize an attribute or namespace declaration.
*
* @param name - node name
* @param value - node value
*/
BaseWriter.prototype.attribute = function (name, value) { };
/**
* Used by derived classes to perform any pre-processing steps before starting
* serializing an element node.
*
* @param name - node name
*/
BaseWriter.prototype.beginElement = function (name) { };
/**
* Used by derived classes to perform any post-processing steps after
* completing serializing an element node.
*
* @param name - node name
*/
BaseWriter.prototype.endElement = function (name) { };
/**
* Produces an XML serialization of the given node. The pre-serializer inserts
* namespace declarations where necessary and produces qualified names for
* nodes and attributes.
*
* @param node - node to serialize
* @param requireWellFormed - whether to check conformance
*/
BaseWriter.prototype.serializeNode = function (node, requireWellFormed, noDoubleEncoding) {
var hasNamespaces = (node._nodeDocument !== undefined && node._nodeDocument._hasNamespaces);
this.level = 0;
this.currentNode = node;
if (hasNamespaces) {
/** From: https://w3c.github.io/DOM-Parsing/#xml-serialization
*
* 1. Let namespace be a context namespace with value null.
* The context namespace tracks the XML serialization algorithm's current
* default namespace. The context namespace is changed when either an Element
* Node has a default namespace declaration, or the algorithm generates a
* default namespace declaration for the Element Node to match its own
* namespace. The algorithm assumes no namespace (null) to start.
* 2. Let prefix map be a new namespace prefix map.
* 3. Add the XML namespace with prefix value "xml" to prefix map.
* 4. Let prefix index be a generated namespace prefix index with value 1.
* The generated namespace prefix index is used to generate a new unique
* prefix value when no suitable existing namespace prefix is available to
* serialize a node's namespaceURI (or the namespaceURI of one of node's
* attributes). See the generate a prefix algorithm.
*/
var namespace = null;
var prefixMap = new NamespacePrefixMap_1.NamespacePrefixMap();
prefixMap.set("xml", infra_1.namespace.XML);
var prefixIndex = { value: 1 };
/**
* 5. Return the result of running the XML serialization algorithm on node
* passing the context namespace namespace, namespace prefix map prefix map,
* generated namespace prefix index reference to prefix index, and the
* flag require well-formed. If an exception occurs during the execution
* of the algorithm, then catch that exception and throw an
* "InvalidStateError" DOMException.
*/
this._serializeNodeNS(node, namespace, prefixMap, prefixIndex, requireWellFormed, noDoubleEncoding);
}
else {
this._serializeNode(node, requireWellFormed, noDoubleEncoding);
}
};
/**
* Produces an XML serialization of a node.
*
* @param node - node to serialize
* @param namespace - context namespace
* @param prefixMap - namespace prefix map
* @param prefixIndex - generated namespace prefix index
* @param requireWellFormed - whether to check conformance
*/
BaseWriter.prototype._serializeNodeNS = function (node, namespace, prefixMap, prefixIndex, requireWellFormed, noDoubleEncoding) {
this.currentNode = node;
switch (node.nodeType) {
case interfaces_1.NodeType.Element:
this._serializeElementNS(node, namespace, prefixMap, prefixIndex, requireWellFormed, noDoubleEncoding);
break;
case interfaces_1.NodeType.Document:
this._serializeDocumentNS(node, namespace, prefixMap, prefixIndex, requireWellFormed, noDoubleEncoding);
break;
case interfaces_1.NodeType.Comment:
this._serializeComment(node, requireWellFormed, noDoubleEncoding);
break;
case interfaces_1.NodeType.Text:
this._serializeText(node, requireWellFormed, noDoubleEncoding);
break;
case interfaces_1.NodeType.DocumentFragment:
this._serializeDocumentFragmentNS(node, namespace, prefixMap, prefixIndex, requireWellFormed, noDoubleEncoding);
break;
case interfaces_1.NodeType.DocumentType:
this._serializeDocumentType(node, requireWellFormed, noDoubleEncoding);
break;
case interfaces_1.NodeType.ProcessingInstruction:
this._serializeProcessingInstruction(node, requireWellFormed, noDoubleEncoding);
break;
case interfaces_1.NodeType.CData:
this._serializeCData(node, requireWellFormed, noDoubleEncoding);
break;
default:
throw new Error("Unknown node type: " + node.nodeType);
}
};
/**
* Produces an XML serialization of a node.
*
* @param node - node to serialize
* @param requireWellFormed - whether to check conformance
*/
BaseWriter.prototype._serializeNode = function (node, requireWellFormed, noDoubleEncoding) {
this.currentNode = node;
switch (node.nodeType) {
case interfaces_1.NodeType.Element:
this._serializeElement(node, requireWellFormed, noDoubleEncoding);
break;
case interfaces_1.NodeType.Document:
this._serializeDocument(node, requireWellFormed, noDoubleEncoding);
break;
case interfaces_1.NodeType.Comment:
this._serializeComment(node, requireWellFormed, noDoubleEncoding);
break;
case interfaces_1.NodeType.Text:
this._serializeText(node, requireWellFormed, noDoubleEncoding);
break;
case interfaces_1.NodeType.DocumentFragment:
this._serializeDocumentFragment(node, requireWellFormed, noDoubleEncoding);
break;
case interfaces_1.NodeType.DocumentType:
this._serializeDocumentType(node, requireWellFormed, noDoubleEncoding);
break;
case interfaces_1.NodeType.ProcessingInstruction:
this._serializeProcessingInstruction(node, requireWellFormed, noDoubleEncoding);
break;
case interfaces_1.NodeType.CData:
this._serializeCData(node, requireWellFormed, noDoubleEncoding);
break;
default:
throw new Error("Unknown node type: " + node.nodeType);
}
};
/**
* Produces an XML serialization of an element node.
*
* @param node - node to serialize
* @param namespace - context namespace
* @param prefixMap - namespace prefix map
* @param prefixIndex - generated namespace prefix index
* @param requireWellFormed - whether to check conformance
*/
BaseWriter.prototype._serializeElementNS = function (node, namespace, prefixMap, prefixIndex, requireWellFormed, noDoubleEncoding) {
var e_2, _a;
var attributes = [];
/**
* From: https://w3c.github.io/DOM-Parsing/#xml-serializing-an-element-node
*
* 1. If the require well-formed flag is set (its value is true), and this
* node's localName attribute contains the character ":" (U+003A COLON) or
* does not match the XML Name production, then throw an exception; the
* serialization of this node would not be a well-formed element.
*/
if (requireWellFormed && (node.localName.indexOf(":") !== -1 ||
!algorithm_1.xml_isName(node.localName))) {
throw new Error("Node local name contains invalid characters (well-formed required).");
}
/**
* 2. Let markup be the string "<" (U+003C LESS-THAN SIGN).
* 3. Let qualified name be an empty string.
* 4. Let skip end tag be a boolean flag with value false.
* 5. Let ignore namespace definition attribute be a boolean flag with value
* false.
* 6. Given prefix map, copy a namespace prefix map and let map be the
* result.
* 7. Let local prefixes map be an empty map. The map has unique Node prefix
* strings as its keys, with corresponding namespaceURI Node values as the
* map's key values (in this map, the null namespace is represented by the
* empty string).
*
* _Note:_ This map is local to each element. It is used to ensure there
* are no conflicting prefixes should a new namespace prefix attribute need
* to be generated. It is also used to enable skipping of duplicate prefix
* definitions when writing an element's attributes: the map allows the
* algorithm to distinguish between a prefix in the namespace prefix map
* that might be locally-defined (to the current Element) and one that is
* not.
* 8. Let local default namespace be the result of recording the namespace
* information for node given map and local prefixes map.
*
* _Note:_ The above step will update map with any found namespace prefix
* definitions, add the found prefix definitions to the local prefixes map
* and return a local default namespace value defined by a default namespace
* attribute if one exists. Otherwise it returns null.
* 9. Let inherited ns be a copy of namespace.
* 10. Let ns be the value of node's namespaceURI attribute.
*/
var qualifiedName = '';
var skipEndTag = false;
var ignoreNamespaceDefinitionAttribute = false;
var map = prefixMap.copy();
var localPrefixesMap = {};
var localDefaultNamespace = this._recordNamespaceInformation(node, map, localPrefixesMap);
var inheritedNS = namespace;
var ns = node.namespaceURI;
/** 11. If inherited ns is equal to ns, then: */
if (inheritedNS === ns) {
/**
* 11.1. If local default namespace is not null, then set ignore
* namespace definition attribute to true.
*/
if (localDefaultNamespace !== null) {
ignoreNamespaceDefinitionAttribute = true;
}
/**
* 11.2. If ns is the XML namespace, then append to qualified name the
* concatenation of the string "xml:" and the value of node's localName.
* 11.3. Otherwise, append to qualified name the value of node's
* localName. The node's prefix if it exists, is dropped.
*/
if (ns === infra_1.namespace.XML) {
qualifiedName = 'xml:' + node.localName;
}
else {
qualifiedName = node.localName;
}
/** 11.4. Append the value of qualified name to markup. */
this.beginElement(qualifiedName);
this.openTagBegin(qualifiedName);
}
else {
/**
* 12. Otherwise, inherited ns is not equal to ns (the node's own
* namespace is different from the context namespace of its parent).
* Run these sub-steps:
*
* 12.1. Let prefix be the value of node's prefix attribute.
* 12.2. Let candidate prefix be the result of retrieving a preferred
* prefix string prefix from map given namespace ns. The above may return
* null if no namespace key ns exists in map.
*/
var prefix = node.prefix;
/**
* We don't need to run "retrieving a preferred prefix string" algorithm if
* the element has no prefix and its namespace matches to the default
* namespace.
* See: https://github.com/web-platform-tests/wpt/pull/16703
*/
var candidatePrefix = null;
if (prefix !== null || ns !== localDefaultNamespace) {
candidatePrefix = map.get(prefix, ns);
}
/**
* 12.3. If the value of prefix matches "xmlns", then run the following
* steps:
*/
if (prefix === "xmlns") {
/**
* 12.3.1. If the require well-formed flag is set, then throw an error.
* An Element with prefix "xmlns" will not legally round-trip in a
* conforming XML parser.
*/
if (requireWellFormed) {
throw new Error("An element cannot have the 'xmlns' prefix (well-formed required).");
}
/**
* 12.3.2. Let candidate prefix be the value of prefix.
*/
candidatePrefix = prefix;
}
/**
* 12.4.Found a suitable namespace prefix: if candidate prefix is not
* null (a namespace prefix is defined which maps to ns), then:
*/
if (candidatePrefix !== null) {
/**
* The following may serialize a different prefix than the Element's
* existing prefix if it already had one. However, the retrieving a
* preferred prefix string algorithm already tried to match the
* existing prefix if possible.
*
* 12.4.1. Append to qualified name the concatenation of candidate
* prefix, ":" (U+003A COLON), and node's localName. There exists on
* this node or the node's ancestry a namespace prefix definition that
* defines the node's namespace.
* 12.4.2. If the local default namespace is not null (there exists a
* locally-defined default namespace declaration attribute) and its
* value is not the XML namespace, then let inherited ns get the value
* of local default namespace unless the local default namespace is the
* empty string in which case let it get null (the context namespace
* is changed to the declared default, rather than this node's own
* namespace).
*
* _Note:_ Any default namespace definitions or namespace prefixes that
* define the XML namespace are omitted when serializing this node's
* attributes.
*/
qualifiedName = candidatePrefix + ':' + node.localName;
if (localDefaultNamespace !== null && localDefaultNamespace !== infra_1.namespace.XML) {
inheritedNS = localDefaultNamespace || null;
}
/**
* 12.4.3. Append the value of qualified name to markup.
*/
this.beginElement(qualifiedName);
this.openTagBegin(qualifiedName);
/** 12.5. Otherwise, if prefix is not null, then: */
}
else if (prefix !== null) {
/**
* _Note:_ By this step, there is no namespace or prefix mapping
* declaration in this node (or any parent node visited by this
* algorithm) that defines prefix otherwise the step labelled Found
* a suitable namespace prefix would have been followed. The sub-steps
* that follow will create a new namespace prefix declaration for prefix
* and ensure that prefix does not conflict with an existing namespace
* prefix declaration of the same localName in node's attribute list.
*
* 12.5.1. If the local prefixes map contains a key matching prefix,
* then let prefix be the result of generating a prefix providing as
* input map, ns, and prefix index.
*/
if (prefix in localPrefixesMap) {
prefix = this._generatePrefix(ns, map, prefixIndex);
}
/**
* 12.5.2. Add prefix to map given namespace ns.
* 12.5.3. Append to qualified name the concatenation of prefix, ":"
* (U+003A COLON), and node's localName.
* 12.5.4. Append the value of qualified name to markup.
*/
map.set(prefix, ns);
qualifiedName += prefix + ':' + node.localName;
this.beginElement(qualifiedName);
this.openTagBegin(qualifiedName);
/**
* 12.5.5. Append the following to markup, in the order listed:
*
* _Note:_ The following serializes a namespace prefix declaration for
* prefix which was just added to the map.
*
* 12.5.5.1. " " (U+0020 SPACE);
* 12.5.5.2. The string "xmlns:";
* 12.5.5.3. The value of prefix;
* 12.5.5.4. "="" (U+003D EQUALS SIGN, U+0022 QUOTATION MARK);
* 12.5.5.5. The result of serializing an attribute value given ns and
* the require well-formed flag as input;
* 12.5.5.6. """ (U+0022 QUOTATION MARK).
*/
attributes.push([null, 'xmlns', prefix,
this._serializeAttributeValue(ns, requireWellFormed, noDoubleEncoding)]);
/**
* 12.5.5.7. If local default namespace is not null (there exists a
* locally-defined default namespace declaration attribute), then
* let inherited ns get the value of local default namespace unless the
* local default namespace is the empty string in which case let it get
* null.
*/
if (localDefaultNamespace !== null) {
inheritedNS = localDefaultNamespace || null;
}
/**
* 12.6. Otherwise, if local default namespace is null, or local
* default namespace is not null and its value is not equal to ns, then:
*/
}
else if (localDefaultNamespace === null ||
(localDefaultNamespace !== null && localDefaultNamespace !== ns)) {
/**
* _Note:_ At this point, the namespace for this node still needs to be
* serialized, but there's no prefix (or candidate prefix) available; the
* following uses the default namespace declaration to define the
* namespace--optionally replacing an existing default declaration
* if present.
*
* 12.6.1. Set the ignore namespace definition attribute flag to true.
* 12.6.2. Append to qualified name the value of node's localName.
* 12.6.3. Let the value of inherited ns be ns.
*
* _Note:_ The new default namespace will be used in the serialization
* to define this node's namespace and act as the context namespace for
* its children.
*/
ignoreNamespaceDefinitionAttribute = true;
qualifiedName += node.localName;
inheritedNS = ns;
/**
* 12.6.4. Append the value of qualified name to markup.
*/
this.beginElement(qualifiedName);
this.openTagBegin(qualifiedName);
/**
* 12.6.5. Append the following to markup, in the order listed:
*
* _Note:_ The following serializes the new (or replacement) default
* namespace definition.
*
* 12.6.5.1. " " (U+0020 SPACE);
* 12.6.5.2. The string "xmlns";
* 12.6.5.3. "="" (U+003D EQUALS SIGN, U+0022 QUOTATION MARK);
* 12.6.5.4. The result of serializing an attribute value given ns
* and the require well-formed flag as input;
* 12.6.5.5. """ (U+0022 QUOTATION MARK).
*/
attributes.push([null, null, 'xmlns',
this._serializeAttributeValue(ns, requireWellFormed, noDoubleEncoding)]);
/**
* 12.7. Otherwise, the node has a local default namespace that matches
* ns. Append to qualified name the value of node's localName, let the
* value of inherited ns be ns, and append the value of qualified name
* to markup.
*/
}
else {
qualifiedName += node.localName;
inheritedNS = ns;
this.beginElement(qualifiedName);
this.openTagBegin(qualifiedName);
}
}
/**
* 13. Append to markup the result of the XML serialization of node's
* attributes given map, prefix index, local prefixes map, ignore namespace
* definition attribute flag, and require well-formed flag.
*/
attributes.push.apply(attributes, __spread(this._serializeAttributesNS(node, map, prefixIndex, localPrefixesMap, ignoreNamespaceDefinitionAttribute, requireWellFormed, noDoubleEncoding)));
this.attributes(attributes);
/**
* 14. If ns is the HTML namespace, and the node's list of children is
* empty, and the node's localName matches any one of the following void
* elements: "area", "base", "basefont", "bgsound", "br", "col", "embed",
* "frame", "hr", "img", "input", "keygen", "link", "menuitem", "meta",
* "param", "source", "track", "wbr"; then append the following to markup,
* in the order listed:
* 14.1. " " (U+0020 SPACE);
* 14.2. "/" (U+002F SOLIDUS).
* and set the skip end tag flag to true.
* 15. If ns is not the HTML namespace, and the node's list of children is
* empty, then append "/" (U+002F SOLIDUS) to markup and set the skip end
* tag flag to true.
* 16. Append ">" (U+003E GREATER-THAN SIGN) to markup.
*/
var isHTML = (ns === infra_1.namespace.HTML);
if (isHTML && node.childNodes.length === 0 &&
BaseWriter._VoidElementNames.has(node.localName)) {
this.openTagEnd(qualifiedName, true, true);
this.endElement(qualifiedName);
skipEndTag = true;
}
else if (!isHTML && node.childNodes.length === 0) {
this.openTagEnd(qualifiedName, true, false);
this.endElement(qualifiedName);
skipEndTag = true;
}
else {
this.openTagEnd(qualifiedName, false, false);
}
/**
* 17. If the value of skip end tag is true, then return the value of markup
* and skip the remaining steps. The node is a leaf-node.
*/
if (skipEndTag)
return;
/**
* 18. If ns is the HTML namespace, and the node's localName matches the
* string "template", then this is a template element. Append to markup the
* result of XML serializing a DocumentFragment node given the template
* element's template contents (a DocumentFragment), providing inherited
* ns, map, prefix index, and the require well-formed flag.
*
* _Note:_ This allows template content to round-trip, given the rules for
* parsing XHTML documents.
*
* 19. Otherwise, append to markup the result of running the XML
* serialization algorithm on each of node's children, in tree order,
* providing inherited ns, map, prefix index, and the require well-formed
* flag.
*/
if (isHTML && node.localName === "template") {
// TODO: serialize template contents
}
else {
try {
for (var _b = __values(node.childNodes), _c = _b.next(); !_c.done; _c = _b.next()) {
var childNode = _c.value;
this.level++;
this._serializeNodeNS(childNode, inheritedNS, map, prefixIndex, requireWellFormed, noDoubleEncoding);
this.level--;
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_2) throw e_2.error; }
}
}
/**
* 20. Append the following to markup, in the order listed:
* 20.1. "</" (U+003C LESS-THAN SIGN, U+002F SOLIDUS);
* 20.2. The value of qualified name;
* 20.3. ">" (U+003E GREATER-THAN SIGN).
* 21. Return the value of markup.
*/
this.closeTag(qualifiedName);
this.endElement(qualifiedName);
};
/**
* Produces an XML serialization of an element node.
*
* @param node - node to serialize
* @param requireWellFormed - whether to check conformance
*/
BaseWriter.prototype._serializeElement = function (node, requireWellFormed, noDoubleEncoding) {
var e_3, _a;
/**
* From: https://w3c.github.io/DOM-Parsing/#xml-serializing-an-element-node
*
* 1. If the require well-formed flag is set (its value is true), and this
* node's localName attribute contains the character ":" (U+003A COLON) or
* does not match the XML Name production, then throw an exception; the
* serialization of this node would not be a well-formed element.
*/
if (requireWellFormed && (node.localName.indexOf(":") !== -1 ||
!algorithm_1.xml_isName(node.localName))) {
throw new Error("Node local name contains invalid characters (well-formed required).");
}
/**
* 2. Let markup be the string "<" (U+003C LESS-THAN SIGN).
* 3. Let qualified name be an empty string.
* 4. Let skip end tag be a boolean flag with value false.
* 5. Let ignore namespace definition attribute be a boolean flag with value
* false.
* 6. Given prefix map, copy a namespace prefix map and let map be the
* result.
* 7. Let local prefixes map be an empty map. The map has unique Node prefix
* strings as its keys, with corresponding namespaceURI Node values as the
* map's key values (in this map, the null namespace is represented by the
* empty string).
*
* _Note:_ This map is local to each element. It is used to ensure there
* are no conflicting prefixes should a new namespace prefix attribute need
* to be generated. It is also used to enable skipping of duplicate prefix
* definitions when writing an element's attributes: the map allows the
* algorithm to distinguish between a prefix in the namespace prefix map
* that might be locally-defined (to the current Element) and one that is
* not.
* 8. Let local default namespace be the result of recording the namespace
* information for node given map and local prefixes map.
*
* _Note:_ The above step will update map with any found namespace prefix
* definitions, add the found prefix definitions to the local prefixes map
* and return a local default namespace value defined by a default namespace
* attribute if one exists. Otherwise it returns null.
* 9. Let inherited ns be a copy of namespace.
* 10. Let ns be the value of node's namespaceURI attribute.
*/
var skipEndTag = false;
/** 11. If inherited ns is equal to ns, then: */
/**
* 11.1. If local default namespace is not null, then set ignore
* namespace definition attribute to true.
*/
/**
* 11.2. If ns is the XML namespace, then append to qualified name the
* concatenation of the string "xml:" and the value of node's localName.
* 11.3. Otherwise, append to qualified name the value of node's
* localName. The node's prefix if it exists, is dropped.
*/
var qualifiedName = node.localName;
/** 11.4. Append the value of qualified name to markup. */
this.beginElement(qualifiedName);
this.openTagBegin(qualifiedName);
/**
* 13. Append to markup the result of the XML serialization of node's
* attributes given map, prefix index, local prefixes map, ignore namespace
* definition attribute flag, and require well-formed flag.
*/
var attributes = this._serializeAttributes(node, requireWellFormed, noDoubleEncoding);
this.attributes(attributes);
/**
* 14. If ns is the HTML namespace, and the node's list of children is
* empty, and the node's localName matches any one of the following void
* elements: "area", "base", "basefont", "bgsound", "br", "col", "embed",
* "frame", "hr", "img", "input", "keygen", "link", "menuitem", "meta",
* "param", "source", "track", "wbr"; then append the following to markup,
* in the order listed:
* 14.1. " " (U+0020 SPACE);
* 14.2. "/" (U+002F SOLIDUS).
* and set the skip end tag flag to true.
* 15. If ns is not the HTML namespace, and the node's list of children is
* empty, then append "/" (U+002F SOLIDUS) to markup and set the skip end
* tag flag to true.
* 16. Append ">" (U+003E GREATER-THAN SIGN) to markup.
*/
if (!node.hasChildNodes()) {
this.openTagEnd(qualifiedName, true, false);
this.endElement(qualifiedName);
skipEndTag = true;
}
else {
this.openTagEnd(qualifiedName, false, false);
}
/**
* 17. If the value of skip end tag is true, then return the value of markup
* and skip the remaining steps. The node is a leaf-node.
*/
if (skipEndTag)
return;
try {
/**
* 18. If ns is the HTML namespace, and the node's localName matches the
* string "template", then this is a template element. Append to markup the
* result of XML serializing a DocumentFragment node given the template
* element's template contents (a DocumentFragment), providing inherited
* ns, map, prefix index, and the require well-formed flag.
*
* _Note:_ This allows template content to round-trip, given the rules for
* parsing XHTML documents.
*
* 19. Otherwise, append to markup the result of running the XML
* serialization algorithm on each of node's children, in tree order,
* providing inherited ns, map, prefix index, and the require well-formed
* flag.
*/
for (var _b = __values(node._children), _c = _b.next(); !_c.done; _c = _b.next()) {
var childNode = _c.value;
this.level++;
this._serializeNode(childNode, requireWellFormed, noDoubleEncoding);
this.level--;
}
}
catch (e_3_1) { e_3 = { error: e_3_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_3) throw e_3.error; }
}
/**
* 20. Append the following to markup, in the order listed:
* 20.1. "</" (U+003C LESS-THAN SIGN, U+002F SOLIDUS);
* 20.2. The value of qualified name;
* 20.3. ">" (U+003E GREATER-THAN SIGN).
* 21. Return the value of markup.
*/
this.closeTag(qualifiedName);
this.endElement(qualifiedName);
};
/**
* Produces an XML serialization of a document node.
*
* @param node - node to serialize
* @param namespace - context namespace
* @param prefixMap - namespace prefix map
* @param prefixIndex - generated namespace prefix index
* @param requireWellFormed - whether to check conformance
*/
BaseWriter.prototype._serializeDocumentNS = function (node, namespace, prefixMap, prefixIndex, requireWellFormed, noDoubleEncoding) {
var e_4, _a;
/**
* If the require well-formed flag is set (its value is true), and this node
* has no documentElement (the documentElement attribute's value is null),
* then throw an exception; the serialization of this node would not be a
* well-formed document.
*/
if (requireWellFormed && node.documentElement === null) {
throw new Error("Missing document element (well-formed required).");
}
try {
/**
* Otherwise, run the following steps:
* 1. Let serialized document be an empty string.
* 2. For each child child of node, in tree order, run the XML
* serialization algorithm on the child passing along the provided
* arguments, and append the result to serialized document.
*
* _Note:_ This will serialize any number of ProcessingInstruction and
* Comment nodes both before and after the Document's documentElement node,
* including at most one DocumentType node. (Text nodes are not allowed as
* children of the Document.)
*
* 3. Return the value of serialized document.
*/
for (var _b = __values(node.childNodes), _c = _b.next(); !_c.done; _c = _b.next()) {
var childNode = _c.value;
this._serializeNodeNS(childNode, namespace, prefixMap, prefixIndex, requireWellFormed, noDoubleEncoding);
}
}
catch (e_4_1) { e_4 = { error: e_4_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_4) throw e_4.error; }
}
};
/**
* Produces an XML serialization of a document node.
*
* @param node - node to serialize
* @param requireWellFormed - whether to check conformance
*/
BaseWriter.prototype._serializeDocument = function (node, requireWellFormed, noDoubleEncoding) {
var e_5, _a;
/**
* If the require well-formed flag is set (its value is true), and this node
* has no documentElement (the documentElement attribute's value is null),
* then throw an exception; the serialization of this node would not be a
* well-formed document.
*/
if (requireWellFormed && node.documentElement === null) {
throw new Error("Missing document element (well-formed required).");
}
try {
/**
* Otherwise, run the following steps:
* 1. Let serialized document be an empty string.
* 2. For each child child of node, in tree order, run the XML
* serialization algorithm on the child passing along the provided
* arguments, and append the result to serialized document.
*
* _Note:_ This will serialize any number of ProcessingInstruction and
* Comment nodes both before and after the Document's documentElement node,
* including at most one DocumentType node. (Text nodes are not allowed as
* children of the Document.)
*
* 3. Return the value of serialized document.
*/
for (var _b = __values(node._children), _c = _b.next(); !_c.done; _c = _b.next()) {
var childNode = _c.value;
this._serializeNode(childNode, requireWellFormed, noDoubleEncoding);
}
}
catch (e_5_1) { e_5 = { error: e_5_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_5) throw e_5.error; }
}
};
/**
* Produces an XML serialization of a comment node.
*
* @param node - node to serialize
* @param requireWellFormed - whether to check conformance
*/
BaseWriter.prototype._serializeComment = function (node, requireWellFormed, noDoubleEncoding) {
/**
* If the require well-formed flag is set (its value is true), and node's
* data contains characters that are not matched by the XML Char production
* or contains "--" (two adjacent U+002D HYPHEN-MINUS characters) or that
* ends with a "-" (U+002D HYPHEN-MINUS) character, then throw an exception;
* the serialization of this node's data would not be well-formed.
*/
if (requireWellFormed && (!algorithm_1.xml_isLegalChar(node.data) ||
node.data.indexOf("--") !== -1 || node.data.endsWith("-"))) {
throw new Error("Comment data contains invalid characters (well-formed required).");
}
/**
* Otherwise, return the concatenation of "<!--", node's data, and "-->".
*/
this.comment(node.data);
};
/**
* Produces an XML serialization of a text node.
*
* @param node - node to serialize
* @param requireWellFormed - whether to check conformance
* @param level - current depth of the XML tree
*/
BaseWriter.prototype._serializeText = function (node, requireWellFormed, noDoubleEncoding) {
/**
* 1. If the require well-formed flag is set (its value is true), and
* node's data contains characters that are not matched by the XML Char
* production, then throw an exception; the serialization of this node's
* data would not be well-formed.
*/
if (requireWellFormed && !algorithm_1.xml_isLegalChar(node.data)) {
throw new Error("Text data contains invalid characters (well-formed required).");
}
/**
* 2. Let markup be the value of node's data.
* 3. Replace any occurrences of "&" in markup by "&amp;".
* 4. Replace any occurrences of "<" in markup by "&lt;".
* 5. Replace any occurrences of ">" in markup by "&gt;".
* 6. Return the value of markup.
*/
var markup = "";
if (noDoubleEncoding) {
markup = node.data.replace(/(?!&(lt|gt|amp|apos|quot);)&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;');
}
else {
for (var i = 0; i < node.data.length; i++) {
var c = node.data[i];
if (c === "&")
markup += "&amp;";
else if (c === "<")
markup += "&lt;";
else if (c === ">")
markup += "&gt;";
else
markup += c;
}
}
this.text(markup);
};
/**
* Produces an XML serialization of a document fragment node.
*
* @param node - node to serialize
* @param namespace - context namespace
* @param prefixMap - namespace prefix map
* @param prefixIndex - generated namespace prefix index
* @param requireWellFormed - whether to check conformance
*/
BaseWriter.prototype._serializeDocumentFragmentNS = function (node, namespace, prefixMap, prefixIndex, requireWellFormed, noDoubleEncoding) {
var e_6, _a;
try {
/**
* 1. Let markup the empty string.
* 2. For each child child of node, in tree order, run the XML serialization
* algorithm on the child given namespace, prefix map, a reference to prefix
* index, and flag require well-formed. Concatenate the result to markup.
* 3. Return the value of markup.
*/
for (var _b = __values(node.childNodes), _c = _b.next(); !_c.done; _c = _b.next()) {
var childNode = _c.value;
this._serializeNodeNS(childNode, namespace, prefixMap, prefixIndex, requireWellFormed, noDoubleEncoding);
}
}
catch (e_6_1) { e_6 = { error: e_6_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_6) throw e_6.error; }
}
};
/**
* Produces an XML serialization of a document fragment node.
*
* @param node - node to serialize
* @param requireWellFormed - whether to check conformance
*/
BaseWriter.prototype._serializeDocumentFragment = function (node, requireWellFormed, noDoubleEncoding) {
var e_7, _a;
try {
/**
* 1. Let markup the empty string.
* 2. For each child child of node, in tree order, run the XML serialization
* algorithm on the child given namespace, prefix map, a reference to prefix
* index, and flag require well-formed. Concatenate the result to markup.
* 3. Return the value of markup.
*/
for (var _b = __values(node._children), _c = _b.next(); !_c.done; _c = _b.next()) {
var childNode = _c.value;
this._serializeNode(childNode, requireWellFormed, noDoubleEncoding);
}
}
catch (e_7_1) { e_7 = { error: e_7_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_7) throw e_7.error; }
}
};
/**
* Produces an XML serialization of a document type node.
*
* @param node - node to serialize
* @param requireWellFormed - whether to check conformance
*/
BaseWriter.prototype._serializeDocumentType = function (node, requireWellFormed, noDoubleEncoding) {
/**
* 1. If the require well-formed flag is true and the node's publicId
* attribute contains characters that are not matched by the XML PubidChar
* production, then throw an exception; the serialization of this node
* would not be a well-formed document type declaration.
*/
if (requireWellFormed && !algorithm_1.xml_isPubidChar(node.publicId)) {
throw new Error("DocType public identifier does not match PubidChar construct (well-formed required).");
}
/**
* 2. If the require well-formed flag is true and the node's systemId
* attribute contains characters that are not matched by the XML Char
* production or that contains both a """ (U+0022 QUOTATION MARK) and a
* "'" (U+0027 APOSTROPHE), then throw an exception; the serialization
* of this node would not be a well-formed document type declaration.
*/
if (requireWellFormed &&
(!algorithm_1.xml_isLegalChar(node.systemId) ||
(node.systemId.indexOf('"') !== -1 && node.systemId.indexOf("'") !== -1))) {
throw new Error("DocType system identifier contains invalid characters (well-formed required).");
}
/**
* 3. Let markup be an empty string.
* 4. Append the string "<!DOCTYPE" to markup.
* 5. Append " " (U+0020 SPACE) to markup.
* 6. Append the value of the node's name attribute to markup. For a node
* belonging to an HTML document, the value will be all lowercase.
* 7. If the node's publicId is not the empty string then append the
* following, in the order listed, to markup:
* 7.1. " " (U+0020 SPACE);
* 7.2. The string "PUBLIC";
* 7.3. " " (U+0020 SPACE);
* 7.4. """ (U+0022 QUOTATION MARK);
* 7.5. The value of the node's publicId attribute;
* 7.6. """ (U+0022 QUOTATION MARK).
* 8. If the node's systemId is not the empty string and the node's publicId
* is set to the empty string, then append the following, in the order
* listed, to markup:
* 8.1. " " (U+0020 SPACE);
* 8.2. The string "SYSTEM".
* 9. If the node's systemId is not the empty string then append the
* following, in the order listed, to markup:
* 9.2. " " (U+0020 SPACE);
* 9.3. """ (U+0022 QUOTATION MARK);
* 9.3. The value of the node's systemId attribute;
* 9.4. """ (U+0022 QUOTATION MARK).
* 10. Append ">" (U+003E GREATER-THAN SIGN) to markup.
* 11. Return the value of markup.
*/
this.docType(node.name, node.publicId, node.systemId);
};
/**
* Produces an XML serialization of a processing instruction node.
*
* @param node - node to serialize
* @param requireWellFormed - whether to check conformance
*/
BaseWriter.prototype._serializeProcessingInstruction = function (node, requireWellFormed, noDoubleEncoding) {
/**
* 1. If the require well-formed flag is set (its value is true), and node's
* target contains a ":" (U+003A COLON) character or is an ASCII
* case-insensitive match for the string "xml", then throw an exception;
* the serialization of this node's target would not be well-formed.
*/
if (requireWellFormed && (node.target.indexOf(":") !== -1 || (/^xml$/i).test(node.target))) {
throw new Error("Processing instruction target contains invalid characters (well-formed required).");
}
/**
* 2. If the require well-formed flag is set (its value is true), and node's
* data contains characters that are not matched by the XML Char production
* or contains the string "?>" (U+003F QUESTION MARK,
* U+003E GREATER-THAN SIGN), then throw an exception; the serialization of
* this node's data would not be well-formed.
*/
if (requireWellFormed && (!algorithm_1.xml_isLegalChar(node.data) ||
node.data.indexOf("?>") !== -1)) {
throw new Error("Processing instruction data contains invalid characters (well-formed required).");
}
/**
* 3. Let markup be the concatenation of the following, in the order listed:
* 3.1. "<?" (U+003C LESS-THAN SIGN, U+003F QUESTION MARK);
* 3.2. The value of node's target;
* 3.3. " " (U+0020 SPACE);
* 3.4. The value of node's data;
* 3.5. "?>" (U+003F QUESTION MARK, U+003E GREATER-THAN SIGN).
* 4. Return the value of markup.
*/
this.instruction(node.target, node.data);
};
/**
* Produces an XML serialization of a CDATA node.
*
* @param node - node to serialize
* @param requireWellFormed - whether to check conformance
*/
BaseWriter.prototype._serializeCData = function (node, requireWellFormed, noDoubleEncoding) {
if (requireWellFormed && (node.data.indexOf("]]>") !== -1)) {
throw new Error("CDATA contains invalid characters (well-formed required).");
}
this.cdata(node.data);
};
/**
* Produces an XML serialization of the attributes of an element node.
*
* @param node - node to serialize
* @param map - namespace prefix map
* @param prefixIndex - generated namespace prefix index
* @param localPrefixesMap - local prefixes map
* @param ignoreNamespaceDefinitionAttribute - whether to ignore namespace
* attributes
* @param requireWellFormed - whether to check conformance
*/
BaseWriter.prototype._serializeAttributesNS = function (node, map, prefixIndex, localPrefixesMap, ignoreNamespaceDefinitionAttribute, requireWellFormed, noDoubleEncoding) {
var e_8, _a;
/**
* 1. Let result be the empty string.
* 2. Let localname set be a new empty namespace localname set. This
* localname set will contain tuples of unique attribute namespaceURI and
* localName pairs, and is populated as each attr is processed. This set is
* used to [optionally] enforce the well-formed constraint that an element
* cannot have two attributes with the same namespaceURI and localName.
* This can occur when two otherwise identical attributes on the same
* element differ only by their prefix values.
*/
var result = [];
var localNameSet = requireWellFormed ? new LocalNameSet_1.LocalNameSet() : undefined;
try {
/**
* 3. Loop: For each attribute attr in element's attributes, in the order
* they are specified in the element's attribute list:
*/
for (var _b = __values(node.attributes), _c = _b.next(); !_c.done; _c = _b.next()) {
var attr = _c.value;
// Optimize common case
if (!requireWellFormed && !ignoreNamespaceDefinitionAttribute && attr.namespaceURI === null) {
result.push([null, null, attr.localName,
this._serializeAttributeValue(attr.value, requireWellFormed, noDoubleEncoding)]);
continue;
}
/**
* 3.1. If the require well-formed flag is set (its value is true), and the
* localname set contains a tuple whose values match those of a new tuple
* consisting of attr's namespaceURI attribute and localName attribute,
* then throw an exception; the serialization of this attr would fail to
* produce a well-formed element serialization.
*/
if (requireWellFormed && localNameSet && localNameSet.has(attr.namespaceURI, attr.localName)) {
throw new Error("Element contains duplicate attributes (well-formed required).");
}
/**
* 3.2. Create a new tuple consisting of attr's namespaceURI attribute and
* localName attribute, and add it to the localname set.
* 3.3. Let attribute namespace be the value of attr's namespaceURI value.
* 3.4. Let candidate prefix be null.
*/
if (requireWellFormed && localNameSet)
localNameSet.set(attr.namespaceURI, attr.localName);
var attributeNamespace = attr.namespaceURI;
var candidatePrefix = null;
/** 3.5. If attribute namespace is not null, then run these sub-steps: */
if (attributeNamespace !== null) {
/**
* 3.5.1. Let candidate prefix be the result of retrieving a preferred
* prefix string from map given namespace attribute namespace with
* preferred prefix being attr's prefix value.
*/
candidatePrefix = map.get(attr.prefix, attributeNamespace);
/**
* 3.5.2. If the value of attribute namespace is the XMLNS namespace,
* then run these steps:
*/
if (attributeNamespace === infra_1.namespace.XMLNS) {
/**
* 3.5.2.1. If any of the following are true, then stop running these
* steps and goto Loop to visit the next attribute:
* - the attr's value is the XML namespace;
* _Note:_ The XML namespace cannot be redeclared and survive
* round-tripping (unless it defines the prefix "xml"). To avoid this
* problem, this algorithm always prefixes elements in the XML
* namespace with "xml" and drops any related definitions as seen
* in the above condition.
* - the attr's prefix is null and the ignore namespace definition
* attribute flag is true (the Element's default namespace attribute
* should be skipped);
* - the attr's prefix is not null and either
* * the attr's localName is not a key contained in the local
* prefixes map, or
* * the attr's localName is present in the local prefixes map but
* the value of the key does not match attr's value
* and furthermore that the attr's localName (as the prefix to find)
* is found in the namespace prefix map given the namespace consisting
* of the attr's value (the current namespace prefix definition was
* exactly defined previously--on an ancestor element not the current
* element whose attributes are being processed).
*/
if (attr.value === infra_1.namespace.XML ||
(attr.prefix === null && ignoreNamespaceDefinitionAttribute) ||
(attr.prefix !== null && (!(attr.localName in localPrefixesMap) ||
localPrefixesMap[attr.localName] !== attr.value) &&
map.has(attr.localName, attr.value)))
continue;
/**
* 3.5.2.2. If the require well-formed flag is set (its value is true),
* and the value of attr's value attribute matches the XMLNS
* namespace, then throw an exception; the serialization of this
* attribute would produce invalid XML because the XMLNS namespace
* is reserved and cannot be applied as an element's namespace via
* XML parsing.
*
* _Note:_ DOM APIs do allow creation of elements in the XMLNS
* namespace but with strict qualifications.
*/
if (requireWellFormed && attr.value === infra_1.namespace.XMLNS) {
throw new Error("XMLNS namespace is reserved (well-formed required).");
}
/**
* 3.5.2.3. If the require well-formed flag is set (its value is true),
* and the value of attr's value attribute is the empty string, then
* throw an exception; namespace prefix declarations cannot be used
* to undeclare a namespace (use a default namespace declaration
* instead).
*/
if (requireWellFormed && attr.value === '') {
throw new Error("Namespace prefix declarations cannot be used to undeclare a namespace (well-formed required).");
}
/**
* 3.5.2.4. the attr's prefix matches the string "xmlns", then let
* candidate prefix be the string "xmlns".
*/
if (attr.prefix === 'xmlns')
candidatePrefix = 'xmlns';
/**
* 3.5.3. Otherwise, the attribute namespace is not the XMLNS namespace.
* Run these steps:
*
* _Note:_ The (candidatePrefix === null) check is not in the spec.
* We deviate from the spec here. Otherwise a prefix is generated for
* all attributes with namespaces.
*/
}
else if (candidatePrefix === null) {
if (attr.prefix !== null &&
(!map.hasPrefix(attr.prefix) ||
map.has(attr.prefix, attributeNamespace))) {
/**
* Check if we can use the attribute's own prefix.
* We deviate from the spec here.
* TODO: This is not an efficient way of searching for prefixes.
* Follow developments to the spec.
*/
candidatePrefix = attr.prefix;
}
else {
/**
* 3.5.3.1. Let candidate prefix be the result of generating a prefix
* providing map, attribute namespace, and prefix index as input.
*/
candidatePrefix = this._generatePrefix(attributeNamespace, map, prefixIndex);
}
/**
* 3.5.3.2. Append the following to result, in the order listed:
* 3.5.3.2.1. " " (U+0020 SPACE);
* 3.5.3.2.2. The string "xmlns:";
* 3.5.3.2.3. The value of candidate prefix;
* 3.5.3.2.4. "="" (U+003D EQUALS SIGN, U+0022 QUOTATION MARK);
* 3.5.3.2.5. The result of serializing an attribute value given
* attribute namespace and the require well-formed flag as input;
* 3.5.3.2.6. """ (U+0022 QUOTATION MARK).
*/
result.push([null, "xmlns", candidatePrefix,
this._serializeAttributeValue(attributeNamespace, requireWellFormed, noDoubleEncoding)]);
}
}
/**
* 3.6. Append a " " (U+0020 SPACE) to result.
* 3.7. If candidate prefix is not null, then append to result the
* concatenation of candidate prefix with ":" (U+003A COLON).
*/
var attrName = '';
if (candidatePrefix !== null) {
attrName = candidatePrefix;
}
/**
* 3.8. If the require well-formed flag is set (its value is true), and
* this attr's localName attribute contains the character
* ":" (U+003A COLON) or does not match the XML Name production or
* equals "xmlns" and attribute namespace is null, then throw an
* exception; the serialization of this attr would not be a
* well-formed attribute.
*/
if (requireWellFormed && (attr.localName.indexOf(":") !== -1 ||
!algorithm_1.xml_isName(attr.localName) ||
(attr.localName === "xmlns" && attributeNamespace === null))) {
throw new Error("Attribute local name contains invalid characters (well-formed required).");
}
/**
* 3.9. Append the following strings to result, in the order listed:
* 3.9.1. The value of attr's localName;
* 3.9.2. "="" (U+003D EQUALS SIGN, U+0022 QUOTATION MARK);
* 3.9.3. The result of serializing an attribute value given attr's value
* attribute and the require well-formed flag as input;
* 3.9.4. """ (U+0022 QUOTATION MARK).
*/
result.push([attributeNamespace, candidatePrefix, attr.localName,
this._serializeAttributeValue(attr.value, requireWellFormed, noDoubleEncoding)]);
}
}
catch (e_8_1) { e_8 = { error: e_8_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_8) throw e_8.error; }
}
/**
* 4. Return the value of result.
*/
return result;
};
/**
* Produces an XML serialization of the attributes of an element node.
*
* @param node - node to serialize
* @param requireWellFormed - whether to check conformance
*/
BaseWriter.prototype._serializeAttributes = function (node, requireWellFormed, noDoubleEncoding) {
var e_9, _a;
/**
* 1. Let result be the empty string.
* 2. Let localname set be a new empty namespace localname set. This
* localname set will contain tuples of unique attribute namespaceURI and
* localName pairs, and is populated as each attr is processed. This set is
* used to [optionally] enforce the well-formed constraint that an element
* cannot have two attributes with the same namespaceURI and localName.
* This can occur when two otherwise identical attributes on the same
* element differ only by their prefix values.
*/
var result = [];
var localNameSet = requireWellFormed ? {} : undefined;
try {
/**
* 3. Loop: For each attribute attr in element's attributes, in the order
* they are specified in the element's attribute list:
*/
for (var _b = __values(node.attributes), _c = _b.next(); !_c.done; _c = _b.next()) {
var attr = _c.value;
// Optimize common case
if (!requireWellFormed) {
result.push([null, null, attr.localName,
this._serializeAttributeValue(attr.value, requireWellFormed, noDoubleEncoding)]);
continue;
}
/**
* 3.1. If the require well-formed flag is set (its value is true), and the
* localname set contains a tuple whose values match those of a new tuple
* consisting of attr's namespaceURI attribute and localName attribute,
* then throw an exception; the serialization of this attr would fail to
* produce a well-formed element serialization.
*/
if (requireWellFormed && localNameSet && (attr.localName in localNameSet)) {
throw new Error("Element contains duplicate attributes (well-formed required).");
}
/**
* 3.2. Create a new tuple consisting of attr's namespaceURI attribute and
* localName attribute, and add it to the localname set.
* 3.3. Let attribute namespace be the value of attr's namespaceURI value.
* 3.4. Let candidate prefix be null.
*/
/* istanbul ignore else */
if (requireWellFormed && localNameSet)
localNameSet[attr.localName] = true;
/** 3.5. If attribute namespace is not null, then run these sub-steps: */
/**
* 3.6. Append a " " (U+0020 SPACE) to result.
* 3.7. If candidate prefix is not null, then append to result the
* concatenation of candidate prefix with ":" (U+003A COLON).
*/
/**
* 3.8. If the require well-formed flag is set (its value is true), and
* this attr's localName attribute contains the character
* ":" (U+003A COLON) or does not match the XML Name production or
* equals "xmlns" and attribute namespace is null, then throw an
* exception; the serialization of this attr would not be a
* well-formed attribute.
*/
if (requireWellFormed && (attr.localName.indexOf(":") !== -1 ||
!algorithm_1.xml_isName(attr.localName))) {
throw new Error("Attribute local name contains invalid characters (well-formed required).");
}
/**
* 3.9. Append the following strings to result, in the order listed:
* 3.9.1. The value of attr's localName;
* 3.9.2. "="" (U+003D EQUALS SIGN, U+0022 QUOTATION MARK);
* 3.9.3. The result of serializing an attribute value given attr's value
* attribute and the require well-formed flag as input;
* 3.9.4. """ (U+0022 QUOTATION MARK).
*/
result.push([null, null, attr.localName,
this._serializeAttributeValue(attr.value, requireWellFormed, noDoubleEncoding)]);
}
}
catch (e_9_1) { e_9 = { error: e_9_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_9) throw e_9.error; }
}
/**
* 4. Return the value of result.
*/
return result;
};
/**
* Records namespace information for the given element and returns the
* default namespace attribute value.
*
* @param node - element node to process
* @param map - namespace prefix map
* @param localPrefixesMap - local prefixes map
*/
BaseWriter.prototype._recordNamespaceInformation = function (node, map, localPrefixesMap) {
var e_10, _a;
/**
* 1. Let default namespace attr value be null.
*/
var defaultNamespaceAttrValue = null;
try {
/**
* 2. Main: For each attribute attr in element's attributes, in the order
* they are specified in the element's attribute list:
*/
for (var _b = __values(node.attributes), _c = _b.next(); !_c.done; _c = _b.next()) {
var attr = _c.value;
/**
* _Note:_ The following conditional steps find namespace prefixes. Only
* attributes in the XMLNS namespace are considered (e.g., attributes made
* to look like namespace declarations via
* setAttribute("xmlns:pretend-prefix", "pretend-namespace") are not
* included).
*/
/** 2.1. Let attribute namespace be the value of attr's namespaceURI value. */
var attributeNamespace = attr.namespaceURI;
/** 2.2. Let attribute prefix be the value of attr's prefix. */
var attributePrefix = attr.prefix;
/** 2.3. If the attribute namespace is the XMLNS namespace, then: */
if (attributeNamespace === infra_1.namespace.XMLNS) {
/**
* 2.3.1. If attribute prefix is null, then attr is a default namespace
* declaration. Set the default namespace attr value to attr's value and
* stop running these steps, returning to Main to visit the next
* attribute.
*/
if (attributePrefix === null) {
defaultNamespaceAttrValue = attr.value;
continue;
/**
* 2.3.2. Otherwise, the attribute prefix is not null and attr is a
* namespace prefix definition. Run the following steps:
*/
}
else {
/** 2.3.2.1. Let prefix definition be the value of attr's localName. */
var prefixDefinition = attr.localName;
/** 2.3.2.2. Let namespace definition be the value of attr's value. */
var namespaceDefinition = attr.value;
/**
* 2.3.2.3. If namespace definition is the XML namespace, then stop
* running these steps, and return to Main to visit the next
* attribute.
*
* _Note:_ XML namespace definitions in prefixes are completely
* ignored (in order to avoid unnecessary work when there might be
* prefix conflicts). XML namespaced elements are always handled
* uniformly by prefixing (and overriding if necessary) the element's
* localname with the reserved "xml" prefix.
*/
if (namespaceDefinition === infra_1.namespace.XML) {
continue;
}
/**
* 2.3.2.4. If namespace definition is the empty string (the
* declarative form of having no namespace), then let namespace
* definition be null instead.
*/
if (namespaceDefinition === '') {
namespaceDefinition = null;
}
/**
* 2.3.2.5. If prefix definition is found in map given the namespace
* namespace definition, then stop running these steps, and return to
* Main to visit the next attribute.
*
* _Note:_ This step avoids adding duplicate prefix definitions for
* the same namespace in the map. This has the side-effect of avoiding
* later serialization of duplicate namespace prefix declarations in
* any descendant nodes.
*/
if (map.has(prefixDefinition, namespaceDefinition)) {
continue;
}
/**
* 2.3.2.6. Add the prefix prefix definition to map given namespace
* namespace definition.
*/
map.set(prefixDefinition, namespaceDefinition);
/**
* 2.3.2.7. Add the value of prefix definition as a new key to the
* local prefixes map, with the namespace definition as the key's
* value replacing the value of null with the empty string if
* applicable.
*/
localPrefixesMap[prefixDefinition] = namespaceDefinition || '';
}
}
}
}
catch (e_10_1) { e_10 = { error: e_10_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_10) throw e_10.error; }
}
/**
* 3. Return the value of default namespace attr value.
*
* _Note:_ The empty string is a legitimate return value and is not
* converted to null.
*/
return defaultNamespaceAttrValue;
};
/**
* Generates a new prefix for the given namespace.
*
* @param newNamespace - a namespace to generate prefix for
* @param prefixMap - namespace prefix map
* @param prefixIndex - generated namespace prefix index
*/
BaseWriter.prototype._generatePrefix = function (newNamespace, prefixMap, prefixIndex) {
/**
* 1. Let generated prefix be the concatenation of the string "ns" and the
* current numerical value of prefix index.
* 2. Let the value of prefix index be incremented by one.
* 3. Add to map the generated prefix given the new namespace namespace.
* 4. Return the value of generated prefix.
*/
var generatedPrefix = "ns" + prefixIndex.value.toString();
prefixIndex.value++;
prefixMap.set(generatedPrefix, newNamespace);
return generatedPrefix;
};
/**
* Produces an XML serialization of an attribute value.
*
* @param value - attribute value
* @param requireWellFormed - whether to check conformance
*/
BaseWriter.prototype._serializeAttributeValue = function (value, requireWellFormed, noDoubleEncoding) {
/**
* From: https://w3c.github.io/DOM-Parsing/#dfn-serializing-an-attribute-value
*
* 1. If the require well-formed flag is set (its value is true), and
* attribute value contains characters that are not matched by the XML Char
* production, then throw an exception; the serialization of this attribute
* value would fail to produce a well-formed element serialization.
*/
if (requireWellFormed && value !== null && !algorithm_1.xml_isLegalChar(value)) {
throw new Error("Invalid characters in attribute value.");
}
/**
* 2. If attribute value is null, then return the empty string.
*/
if (value === null)
return "";
/**
* 3. Otherwise, attribute value is a string. Return the value of attribute
* value, first replacing any occurrences of the following:
* - "&" with "&amp;"
* - """ with "&quot;"
* - "<" with "&lt;"
* - ">" with "&gt;"
* NOTE
* This matches behavior present in browsers, and goes above and beyond the
* grammar requirement in the XML specification's AttValue production by
* also replacing ">" characters.
*/
if (noDoubleEncoding) {
return value.replace(/(?!&(lt|gt|amp|apos|quot);)&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;');
}
else {
var result = "";
for (var i = 0; i < value.length; i++) {
var c = value[i];
if (c === "\"")
result += "&quot;";
else if (c === "&")
result += "&amp;";
else if (c === "<")
result += "&lt;";
else if (c === ">")
result += "&gt;";
else
result += c;
}
return result;
}
};
BaseWriter._VoidElementNames = new Set(['area', 'base', 'basefont',
'bgsound', 'br', 'col', 'embed', 'frame', 'hr', 'img', 'input', 'keygen',
'link', 'menuitem', 'meta', 'param', 'source', 'track', 'wbr']);
return BaseWriter;
}());
exports.BaseWriter = BaseWriter;
//# sourceMappingURL=BaseWriter.js.map
/***/ }),
/* 463 */,
/* 464 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var interfaces_1 = __webpack_require__(970);
var DOMException_1 = __webpack_require__(35);
/**
* Applies the filter to the given node and returns the result.
*
* @param traverser - the `NodeIterator` or `TreeWalker` instance
* @param node - the node to filter
*/
function traversal_filter(traverser, node) {
/**
* 1. If traversers active flag is set, then throw an "InvalidStateError"
* DOMException.
*/
if (traverser._activeFlag) {
throw new DOMException_1.InvalidStateError();
}
/**
* 2. Let n be nodes nodeType attribute value 1.
*/
var n = node._nodeType - 1;
/**
* 3. If the nth bit (where 0 is the least significant bit) of traversers
* whatToShow is not set, then return FILTER_SKIP.
*/
var mask = 1 << n;
if ((traverser.whatToShow & mask) === 0) {
return interfaces_1.FilterResult.Skip;
}
/**
* 4. If traversers filter is null, then return FILTER_ACCEPT.
*/
if (!traverser.filter) {
return interfaces_1.FilterResult.Accept;
}
/**
* 5. Set traversers active flag.
*/
traverser._activeFlag = true;
/**
* 6. Let result be the return value of call a user objects operation with
* traversers filter, "acceptNode", and « node ». If this throws an
* exception, then unset traversers active flag and rethrow the exception.
*/
var result = interfaces_1.FilterResult.Reject;
try {
result = traverser.filter.acceptNode(node);
}
catch (err) {
traverser._activeFlag = false;
throw err;
}
/**
* 7. Unset traversers active flag.
* 8. Return result.
*/
traverser._activeFlag = false;
return result;
}
exports.traversal_filter = traversal_filter;
//# sourceMappingURL=TraversalAlgorithm.js.map
/***/ }),
/* 465 */,
/* 466 */,
/* 467 */,
/* 468 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
var XMLStringLexer_1 = __webpack_require__(911);
var interfaces_1 = __webpack_require__(172);
var infra_1 = __webpack_require__(23);
var algorithm_1 = __webpack_require__(163);
var LocalNameSet_1 = __webpack_require__(575);
/**
* Represents a parser for XML content.
*
* See: https://html.spec.whatwg.org/#xml-parser
*/
var XMLParserImpl = /** @class */ (function () {
function XMLParserImpl() {
}
/**
* Parses XML content.
*
* @param source - a string containing XML content
*/
XMLParserImpl.prototype.parse = function (source) {
var e_1, _a, e_2, _b;
var lexer = new XMLStringLexer_1.XMLStringLexer(source, { skipWhitespaceOnlyText: true });
var doc = algorithm_1.create_document();
var context = doc;
var token = lexer.nextToken();
while (token.type !== interfaces_1.TokenType.EOF) {
switch (token.type) {
case interfaces_1.TokenType.Declaration:
var declaration = token;
if (declaration.version !== "1.0") {
throw new Error("Invalid xml version: " + declaration.version);
}
break;
case interfaces_1.TokenType.DocType:
var doctype = token;
if (!algorithm_1.xml_isPubidChar(doctype.pubId)) {
throw new Error("DocType public identifier does not match PubidChar construct.");
}
if (!algorithm_1.xml_isLegalChar(doctype.sysId) ||
(doctype.sysId.indexOf('"') !== -1 && doctype.sysId.indexOf("'") !== -1)) {
throw new Error("DocType system identifier contains invalid characters.");
}
context.appendChild(doc.implementation.createDocumentType(doctype.name, doctype.pubId, doctype.sysId));
break;
case interfaces_1.TokenType.CDATA:
var cdata = token;
if (!algorithm_1.xml_isLegalChar(cdata.data) ||
cdata.data.indexOf("]]>") !== -1) {
throw new Error("CDATA contains invalid characters.");
}
context.appendChild(doc.createCDATASection(cdata.data));
break;
case interfaces_1.TokenType.Comment:
var comment = token;
if (!algorithm_1.xml_isLegalChar(comment.data) ||
comment.data.indexOf("--") !== -1 || comment.data.endsWith("-")) {
throw new Error("Comment data contains invalid characters.");
}
context.appendChild(doc.createComment(comment.data));
break;
case interfaces_1.TokenType.PI:
var pi = token;
if (pi.target.indexOf(":") !== -1 || (/^xml$/i).test(pi.target)) {
throw new Error("Processing instruction target contains invalid characters.");
}
if (!algorithm_1.xml_isLegalChar(pi.data) || pi.data.indexOf("?>") !== -1) {
throw new Error("Processing instruction data contains invalid characters.");
}
context.appendChild(doc.createProcessingInstruction(pi.target, pi.data));
break;
case interfaces_1.TokenType.Text:
var text = token;
if (!algorithm_1.xml_isLegalChar(text.data)) {
throw new Error("Text data contains invalid characters.");
}
context.appendChild(doc.createTextNode(text.data));
break;
case interfaces_1.TokenType.Element:
var element = token;
// inherit namespace from parent
var _c = __read(algorithm_1.namespace_extractQName(element.name), 2), prefix = _c[0], localName = _c[1];
if (localName.indexOf(":") !== -1 || !algorithm_1.xml_isName(localName)) {
throw new Error("Node local name contains invalid characters.");
}
if (prefix === "xmlns") {
throw new Error("An element cannot have the 'xmlns' prefix.");
}
var namespace = context.lookupNamespaceURI(prefix);
// override namespace if there is a namespace declaration
// attribute
// also lookup namespace declaration attributes
var nsDeclarations = {};
try {
for (var _d = (e_1 = void 0, __values(element.attributes)), _e = _d.next(); !_e.done; _e = _d.next()) {
var _f = __read(_e.value, 2), attName = _f[0], attValue = _f[1];
if (attName === "xmlns") {
namespace = attValue;
}
else {
var _g = __read(algorithm_1.namespace_extractQName(attName), 2), attPrefix = _g[0], attLocalName = _g[1];
if (attPrefix === "xmlns") {
if (attLocalName === prefix) {
namespace = attValue;
}
nsDeclarations[attLocalName] = attValue;
}
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
}
finally { if (e_1) throw e_1.error; }
}
// create the DOM element node
var elementNode = (namespace !== null ?
doc.createElementNS(namespace, element.name) :
doc.createElement(element.name));
context.appendChild(elementNode);
// assign attributes
var localNameSet = new LocalNameSet_1.LocalNameSet();
try {
for (var _h = (e_2 = void 0, __values(element.attributes)), _j = _h.next(); !_j.done; _j = _h.next()) {
var _k = __read(_j.value, 2), attName = _k[0], attValue = _k[1];
var _l = __read(algorithm_1.namespace_extractQName(attName), 2), attPrefix = _l[0], attLocalName = _l[1];
var attNamespace = null;
if (attPrefix === "xmlns" || (attPrefix === null && attLocalName === "xmlns")) {
// namespace declaration attribute
attNamespace = infra_1.namespace.XMLNS;
}
else {
attNamespace = elementNode.lookupNamespaceURI(attPrefix);
if (attNamespace !== null && elementNode.isDefaultNamespace(attNamespace)) {
attNamespace = null;
}
else if (attNamespace === null && attPrefix !== null) {
attNamespace = nsDeclarations[attPrefix] || null;
}
}
if (localNameSet.has(attNamespace, attLocalName)) {
throw new Error("Element contains duplicate attributes.");
}
localNameSet.set(attNamespace, attLocalName);
if (attNamespace === infra_1.namespace.XMLNS) {
if (attValue === infra_1.namespace.XMLNS) {
throw new Error("XMLNS namespace is reserved.");
}
}
if (attLocalName.indexOf(":") !== -1 || !algorithm_1.xml_isName(attLocalName)) {
throw new Error("Attribute local name contains invalid characters.");
}
if (attPrefix === "xmlns" && attValue === "") {
throw new Error("Empty XML namespace is not allowed.");
}
if (attNamespace !== null)
elementNode.setAttributeNS(attNamespace, attName, attValue);
else
elementNode.setAttribute(attName, attValue);
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (_j && !_j.done && (_b = _h.return)) _b.call(_h);
}
finally { if (e_2) throw e_2.error; }
}
if (!element.selfClosing) {
context = elementNode;
}
break;
case interfaces_1.TokenType.ClosingTag:
var closingTag = token;
if (closingTag.name !== context.nodeName) {
throw new Error('Closing tag name does not match opening tag name.');
}
/* istanbul ignore else */
if (context._parent) {
context = context._parent;
}
break;
}
token = lexer.nextToken();
}
return doc;
};
return XMLParserImpl;
}());
exports.XMLParserImpl = XMLParserImpl;
//# sourceMappingURL=XMLParserImpl.js.map
/***/ }),
/* 469 */,
/* 470 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const command_1 = __webpack_require__(431);
const file_command_1 = __webpack_require__(102);
const utils_1 = __webpack_require__(82);
const os = __importStar(__webpack_require__(87));
const path = __importStar(__webpack_require__(622));
/**
* The code to exit an action
*/
var ExitCode;
(function (ExitCode) {
/**
* A code indicating that the action was successful
*/
ExitCode[ExitCode["Success"] = 0] = "Success";
/**
* A code indicating that the action was a failure
*/
ExitCode[ExitCode["Failure"] = 1] = "Failure";
})(ExitCode = exports.ExitCode || (exports.ExitCode = {}));
//-----------------------------------------------------------------------
// Variables
//-----------------------------------------------------------------------
/**
* Sets env variable for this action and future actions in the job
* @param name the name of the variable to set
* @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify
*/
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function exportVariable(name, val) {
const convertedVal = utils_1.toCommandValue(val);
process.env[name] = convertedVal;
const filePath = process.env['GITHUB_ENV'] || '';
if (filePath) {
const delimiter = '_GitHubActionsFileCommandDelimeter_';
const commandValue = `${name}<<${delimiter}${os.EOL}${convertedVal}${os.EOL}${delimiter}`;
file_command_1.issueCommand('ENV', commandValue);
}
else {
command_1.issueCommand('set-env', { name }, convertedVal);
}
}
exports.exportVariable = exportVariable;
/**
* Registers a secret which will get masked from logs
* @param secret value of the secret
*/
function setSecret(secret) {
command_1.issueCommand('add-mask', {}, secret);
}
exports.setSecret = setSecret;
/**
* Prepends inputPath to the PATH (for this action and future actions)
* @param inputPath
*/
function addPath(inputPath) {
const filePath = process.env['GITHUB_PATH'] || '';
if (filePath) {
file_command_1.issueCommand('PATH', inputPath);
}
else {
command_1.issueCommand('add-path', {}, inputPath);
}
process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`;
}
exports.addPath = addPath;
/**
* Gets the value of an input. The value is also trimmed.
*
* @param name name of the input to get
* @param options optional. See InputOptions.
* @returns string
*/
function getInput(name, options) {
const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || '';
if (options && options.required && !val) {
throw new Error(`Input required and not supplied: ${name}`);
}
return val.trim();
}
exports.getInput = getInput;
/**
* Sets the value of an output.
*
* @param name name of the output to set
* @param value value to store. Non-string values will be converted to a string via JSON.stringify
*/
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function setOutput(name, value) {
command_1.issueCommand('set-output', { name }, value);
}
exports.setOutput = setOutput;
/**
* Enables or disables the echoing of commands into stdout for the rest of the step.
* Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set.
*
*/
function setCommandEcho(enabled) {
command_1.issue('echo', enabled ? 'on' : 'off');
}
exports.setCommandEcho = setCommandEcho;
//-----------------------------------------------------------------------
// Results
//-----------------------------------------------------------------------
/**
* Sets the action status to failed.
* When the action exits it will be with an exit code of 1
* @param message add error issue message
*/
function setFailed(message) {
process.exitCode = ExitCode.Failure;
error(message);
}
exports.setFailed = setFailed;
//-----------------------------------------------------------------------
// Logging Commands
//-----------------------------------------------------------------------
/**
* Gets whether Actions Step Debug is on or not
*/
function isDebug() {
return process.env['RUNNER_DEBUG'] === '1';
}
exports.isDebug = isDebug;
/**
* Writes debug message to user log
* @param message debug message
*/
function debug(message) {
command_1.issueCommand('debug', {}, message);
}
exports.debug = debug;
/**
* Adds an error issue
* @param message error issue message. Errors will be converted to string via toString()
*/
function error(message) {
command_1.issue('error', message instanceof Error ? message.toString() : message);
}
exports.error = error;
/**
* Adds an warning issue
* @param message warning issue message. Errors will be converted to string via toString()
*/
function warning(message) {
command_1.issue('warning', message instanceof Error ? message.toString() : message);
}
exports.warning = warning;
/**
* Writes info to log with console.log.
* @param message info message
*/
function info(message) {
process.stdout.write(message + os.EOL);
}
exports.info = info;
/**
* Begin an output group.
*
* Output until the next `groupEnd` will be foldable in this group
*
* @param name The name of the output group
*/
function startGroup(name) {
command_1.issue('group', name);
}
exports.startGroup = startGroup;
/**
* End an output group.
*/
function endGroup() {
command_1.issue('endgroup');
}
exports.endGroup = endGroup;
/**
* Wrap an asynchronous function call in a group.
*
* Returns the same type as the function itself.
*
* @param name The name of the group
* @param fn The function to wrap in the group
*/
function group(name, fn) {
return __awaiter(this, void 0, void 0, function* () {
startGroup(name);
let result;
try {
result = yield fn();
}
finally {
endGroup();
}
return result;
});
}
exports.group = group;
//-----------------------------------------------------------------------
// Wrapper action state
//-----------------------------------------------------------------------
/**
* Saves state for current action, the state can only be retrieved by this action's post job execution.
*
* @param name name of the state to store
* @param value value to store. Non-string values will be converted to a string via JSON.stringify
*/
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function saveState(name, value) {
command_1.issueCommand('save-state', { name }, value);
}
exports.saveState = saveState;
/**
* Gets the value of an state set by this action's main execution.
*
* @param name name of the state to get
* @returns string
*/
function getState(name) {
return process.env[`STATE_${name}`] || '';
}
exports.getState = getState;
//# sourceMappingURL=core.js.map
/***/ }),
/* 471 */,
/* 472 */,
/* 473 */,
/* 474 */,
/* 475 */,
/* 476 */,
/* 477 */,
/* 478 */,
/* 479 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __spread = (this && this.__spread) || function () {
for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
var DOMImpl_1 = __webpack_require__(648);
var DOMException_1 = __webpack_require__(35);
var interfaces_1 = __webpack_require__(970);
var util_1 = __webpack_require__(918);
var util_2 = __webpack_require__(592);
var infra_1 = __webpack_require__(23);
var CustomElementAlgorithm_1 = __webpack_require__(344);
var TreeAlgorithm_1 = __webpack_require__(873);
var NodeIteratorAlgorithm_1 = __webpack_require__(272);
var ShadowTreeAlgorithm_1 = __webpack_require__(180);
var MutationObserverAlgorithm_1 = __webpack_require__(151);
var DOMAlgorithm_1 = __webpack_require__(304);
var DocumentAlgorithm_1 = __webpack_require__(493);
/**
* Ensures pre-insertion validity of a node into a parent before a
* child.
*
* @param node - node to insert
* @param parent - parent node to receive node
* @param child - child node to insert node before
*/
function mutation_ensurePreInsertionValidity(node, parent, child) {
var e_1, _a, e_2, _b, e_3, _c, e_4, _d;
var parentNodeType = parent._nodeType;
var nodeNodeType = node._nodeType;
var childNodeType = child ? child._nodeType : null;
/**
* 1. If parent is not a Document, DocumentFragment, or Element node,
* throw a "HierarchyRequestError" DOMException.
*/
if (parentNodeType !== interfaces_1.NodeType.Document &&
parentNodeType !== interfaces_1.NodeType.DocumentFragment &&
parentNodeType !== interfaces_1.NodeType.Element)
throw new DOMException_1.HierarchyRequestError("Only document, document fragment and element nodes can contain child nodes. Parent node is " + parent.nodeName + ".");
/**
* 2. If node is a host-including inclusive ancestor of parent, throw a
* "HierarchyRequestError" DOMException.
*/
if (TreeAlgorithm_1.tree_isHostIncludingAncestorOf(parent, node, true))
throw new DOMException_1.HierarchyRequestError("The node to be inserted cannot be an inclusive ancestor of parent node. Node is " + node.nodeName + ", parent node is " + parent.nodeName + ".");
/**
* 3. If child is not null and its parent is not parent, then throw a
* "NotFoundError" DOMException.
*/
if (child !== null && child._parent !== parent)
throw new DOMException_1.NotFoundError("The reference child node cannot be found under parent node. Child node is " + child.nodeName + ", parent node is " + parent.nodeName + ".");
/**
* 4. If node is not a DocumentFragment, DocumentType, Element, Text,
* ProcessingInstruction, or Comment node, throw a "HierarchyRequestError"
* DOMException.
*/
if (nodeNodeType !== interfaces_1.NodeType.DocumentFragment &&
nodeNodeType !== interfaces_1.NodeType.DocumentType &&
nodeNodeType !== interfaces_1.NodeType.Element &&
nodeNodeType !== interfaces_1.NodeType.Text &&
nodeNodeType !== interfaces_1.NodeType.ProcessingInstruction &&
nodeNodeType !== interfaces_1.NodeType.CData &&
nodeNodeType !== interfaces_1.NodeType.Comment)
throw new DOMException_1.HierarchyRequestError("Only document fragment, document type, element, text, processing instruction, cdata section or comment nodes can be inserted. Node is " + node.nodeName + ".");
/**
* 5. If either node is a Text node and parent is a document, or node is a
* doctype and parent is not a document, throw a "HierarchyRequestError"
* DOMException.
*/
if (nodeNodeType === interfaces_1.NodeType.Text &&
parentNodeType === interfaces_1.NodeType.Document)
throw new DOMException_1.HierarchyRequestError("Cannot insert a text node as a child of a document node. Node is " + node.nodeName + ".");
if (nodeNodeType === interfaces_1.NodeType.DocumentType &&
parentNodeType !== interfaces_1.NodeType.Document)
throw new DOMException_1.HierarchyRequestError("A document type node can only be inserted under a document node. Parent node is " + parent.nodeName + ".");
/**
* 6. If parent is a document, and any of the statements below, switched on
* node, are true, throw a "HierarchyRequestError" DOMException.
* - DocumentFragment node
* If node has more than one element child or has a Text node child.
* Otherwise, if node has one element child and either parent has an element
* child, child is a doctype, or child is not null and a doctype is
* following child.
* - element
* parent has an element child, child is a doctype, or child is not null and
* a doctype is following child.
* - doctype
* parent has a doctype child, child is non-null and an element is preceding
* child, or child is null and parent has an element child.
*/
if (parentNodeType === interfaces_1.NodeType.Document) {
if (nodeNodeType === interfaces_1.NodeType.DocumentFragment) {
var eleCount = 0;
try {
for (var _e = __values(node._children), _f = _e.next(); !_f.done; _f = _e.next()) {
var childNode = _f.value;
if (childNode._nodeType === interfaces_1.NodeType.Element)
eleCount++;
else if (childNode._nodeType === interfaces_1.NodeType.Text)
throw new DOMException_1.HierarchyRequestError("Cannot insert text a node as a child of a document node. Node is " + childNode.nodeName + ".");
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
}
finally { if (e_1) throw e_1.error; }
}
if (eleCount > 1) {
throw new DOMException_1.HierarchyRequestError("A document node can only have one document element node. Document fragment to be inserted has " + eleCount + " element nodes.");
}
else if (eleCount === 1) {
try {
for (var _g = __values(parent._children), _h = _g.next(); !_h.done; _h = _g.next()) {
var ele = _h.value;
if (ele._nodeType === interfaces_1.NodeType.Element)
throw new DOMException_1.HierarchyRequestError("The document node already has a document element node.");
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
}
finally { if (e_2) throw e_2.error; }
}
if (child) {
if (childNodeType === interfaces_1.NodeType.DocumentType)
throw new DOMException_1.HierarchyRequestError("Cannot insert an element node before a document type node.");
var doctypeChild = child._nextSibling;
while (doctypeChild) {
if (doctypeChild._nodeType === interfaces_1.NodeType.DocumentType)
throw new DOMException_1.HierarchyRequestError("Cannot insert an element node before a document type node.");
doctypeChild = doctypeChild._nextSibling;
}
}
}
}
else if (nodeNodeType === interfaces_1.NodeType.Element) {
try {
for (var _j = __values(parent._children), _k = _j.next(); !_k.done; _k = _j.next()) {
var ele = _k.value;
if (ele._nodeType === interfaces_1.NodeType.Element)
throw new DOMException_1.HierarchyRequestError("Document already has a document element node. Node is " + node.nodeName + ".");
}
}
catch (e_3_1) { e_3 = { error: e_3_1 }; }
finally {
try {
if (_k && !_k.done && (_c = _j.return)) _c.call(_j);
}
finally { if (e_3) throw e_3.error; }
}
if (child) {
if (childNodeType === interfaces_1.NodeType.DocumentType)
throw new DOMException_1.HierarchyRequestError("Cannot insert an element node before a document type node. Node is " + node.nodeName + ".");
var doctypeChild = child._nextSibling;
while (doctypeChild) {
if (doctypeChild._nodeType === interfaces_1.NodeType.DocumentType)
throw new DOMException_1.HierarchyRequestError("Cannot insert an element node before a document type node. Node is " + node.nodeName + ".");
doctypeChild = doctypeChild._nextSibling;
}
}
}
else if (nodeNodeType === interfaces_1.NodeType.DocumentType) {
try {
for (var _l = __values(parent._children), _m = _l.next(); !_m.done; _m = _l.next()) {
var ele = _m.value;
if (ele._nodeType === interfaces_1.NodeType.DocumentType)
throw new DOMException_1.HierarchyRequestError("Document already has a document type node. Node is " + node.nodeName + ".");
}
}
catch (e_4_1) { e_4 = { error: e_4_1 }; }
finally {
try {
if (_m && !_m.done && (_d = _l.return)) _d.call(_l);
}
finally { if (e_4) throw e_4.error; }
}
if (child) {
var elementChild = child._previousSibling;
while (elementChild) {
if (elementChild._nodeType === interfaces_1.NodeType.Element)
throw new DOMException_1.HierarchyRequestError("Cannot insert a document type node before an element node. Node is " + node.nodeName + ".");
elementChild = elementChild._previousSibling;
}
}
else {
var elementChild = parent._firstChild;
while (elementChild) {
if (elementChild._nodeType === interfaces_1.NodeType.Element)
throw new DOMException_1.HierarchyRequestError("Cannot insert a document type node before an element node. Node is " + node.nodeName + ".");
elementChild = elementChild._nextSibling;
}
}
}
}
}
exports.mutation_ensurePreInsertionValidity = mutation_ensurePreInsertionValidity;
/**
* Ensures pre-insertion validity of a node into a parent before a
* child, then adopts the node to the tree and inserts it.
*
* @param node - node to insert
* @param parent - parent node to receive node
* @param child - child node to insert node before
*/
function mutation_preInsert(node, parent, child) {
/**
* 1. Ensure pre-insertion validity of node into parent before child.
* 2. Let reference child be child.
* 3. If reference child is node, set it to nodes next sibling.
* 4. Adopt node into parents node document.
* 5. Insert node into parent before reference child.
* 6. Return node.
*/
mutation_ensurePreInsertionValidity(node, parent, child);
var referenceChild = child;
if (referenceChild === node)
referenceChild = node._nextSibling;
DocumentAlgorithm_1.document_adopt(node, parent._nodeDocument);
mutation_insert(node, parent, referenceChild);
return node;
}
exports.mutation_preInsert = mutation_preInsert;
/**
* Inserts a node into a parent node before the given child node.
*
* @param node - node to insert
* @param parent - parent node to receive node
* @param child - child node to insert node before
* @param suppressObservers - whether to notify observers
*/
function mutation_insert(node, parent, child, suppressObservers) {
var e_5, _a;
// Optimized common case
if (child === null && node._nodeType !== interfaces_1.NodeType.DocumentFragment) {
mutation_insert_single(node, parent, suppressObservers);
return;
}
/**
* 1. Let count be the number of children of node if it is a
* DocumentFragment node, and one otherwise.
*/
var count = (node._nodeType === interfaces_1.NodeType.DocumentFragment ?
node._children.size : 1);
/**
* 2. If child is non-null, then:
*/
if (child !== null) {
/**
* 2.1. For each live range whose start node is parent and start
* offset is greater than child's index, increase its start
* offset by count.
* 2.2. For each live range whose end node is parent and end
* offset is greater than child's index, increase its end
* offset by count.
*/
if (DOMImpl_1.dom.rangeList.size !== 0) {
var index_1 = TreeAlgorithm_1.tree_index(child);
try {
for (var _b = __values(DOMImpl_1.dom.rangeList), _c = _b.next(); !_c.done; _c = _b.next()) {
var range = _c.value;
if (range._start[0] === parent && range._start[1] > index_1) {
range._start[1] += count;
}
if (range._end[0] === parent && range._end[1] > index_1) {
range._end[1] += count;
}
}
}
catch (e_5_1) { e_5 = { error: e_5_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_5) throw e_5.error; }
}
}
}
/**
* 3. Let nodes be nodes children, if node is a DocumentFragment node;
* otherwise « node ».
*/
var nodes = node._nodeType === interfaces_1.NodeType.DocumentFragment ? new (Array.bind.apply(Array, __spread([void 0], node._children)))() : [node];
/**
* 4. If node is a DocumentFragment node, remove its children with the
* suppress observers flag set.
*/
if (node._nodeType === interfaces_1.NodeType.DocumentFragment) {
while (node._firstChild) {
mutation_remove(node._firstChild, node, true);
}
}
/**
* 5. If node is a DocumentFragment node, then queue a tree mutation record
* for node with « », nodes, null, and null.
*/
if (DOMImpl_1.dom.features.mutationObservers) {
if (node._nodeType === interfaces_1.NodeType.DocumentFragment) {
MutationObserverAlgorithm_1.observer_queueTreeMutationRecord(node, [], nodes, null, null);
}
}
/**
* 6. Let previousSibling be childs previous sibling or parents last
* child if child is null.
*/
var previousSibling = (child ? child._previousSibling : parent._lastChild);
var index = child === null ? -1 : TreeAlgorithm_1.tree_index(child);
/**
* 7. For each node in nodes, in tree order:
*/
for (var i = 0; i < nodes.length; i++) {
var node_1 = nodes[i];
if (util_1.Guard.isElementNode(node_1)) {
// set document element node
if (util_1.Guard.isDocumentNode(parent)) {
parent._documentElement = node_1;
}
// mark that the document has namespaces
if (!node_1._nodeDocument._hasNamespaces && (node_1._namespace !== null ||
node_1._namespacePrefix !== null)) {
node_1._nodeDocument._hasNamespaces = true;
}
}
/**
* 7.1. If child is null, then append node to parents children.
* 7.2. Otherwise, insert node into parents children before childs
* index.
*/
node_1._parent = parent;
if (child === null) {
infra_1.set.append(parent._children, node_1);
}
else {
infra_1.set.insert(parent._children, node_1, index);
index++;
}
// assign siblings and children for quick lookups
if (parent._firstChild === null) {
node_1._previousSibling = null;
node_1._nextSibling = null;
parent._firstChild = node_1;
parent._lastChild = node_1;
}
else {
var prev = (child ? child._previousSibling : parent._lastChild);
var next = (child ? child : null);
node_1._previousSibling = prev;
node_1._nextSibling = next;
if (prev)
prev._nextSibling = node_1;
if (next)
next._previousSibling = node_1;
if (!prev)
parent._firstChild = node_1;
if (!next)
parent._lastChild = node_1;
}
/**
* 7.3. If parent is a shadow host and node is a slotable, then
* assign a slot for node.
*/
if (DOMImpl_1.dom.features.slots) {
if (parent._shadowRoot !== null && util_1.Guard.isSlotable(node_1)) {
ShadowTreeAlgorithm_1.shadowTree_assignASlot(node_1);
}
}
/**
* 7.4. If node is a Text node, run the child text content change
* steps for parent.
*/
if (DOMImpl_1.dom.features.steps) {
if (util_1.Guard.isTextNode(node_1)) {
DOMAlgorithm_1.dom_runChildTextContentChangeSteps(parent);
}
}
/**
* 7.5. If parent's root is a shadow root, and parent is a slot
* whose assigned nodes is the empty list, then run signal
* a slot change for parent.
*/
if (DOMImpl_1.dom.features.slots) {
if (util_1.Guard.isShadowRoot(TreeAlgorithm_1.tree_rootNode(parent)) &&
util_1.Guard.isSlot(parent) && util_2.isEmpty(parent._assignedNodes)) {
ShadowTreeAlgorithm_1.shadowTree_signalASlotChange(parent);
}
}
/**
* 7.6. Run assign slotables for a tree with node's root.
*/
if (DOMImpl_1.dom.features.slots) {
ShadowTreeAlgorithm_1.shadowTree_assignSlotablesForATree(TreeAlgorithm_1.tree_rootNode(node_1));
}
/**
* 7.7. For each shadow-including inclusive descendant
* inclusiveDescendant of node, in shadow-including tree
* order:
*/
var inclusiveDescendant = TreeAlgorithm_1.tree_getFirstDescendantNode(node_1, true, true);
while (inclusiveDescendant !== null) {
/**
* 7.7.1. Run the insertion steps with inclusiveDescendant.
*/
if (DOMImpl_1.dom.features.steps) {
DOMAlgorithm_1.dom_runInsertionSteps(inclusiveDescendant);
}
if (DOMImpl_1.dom.features.customElements) {
/**
* 7.7.2. If inclusiveDescendant is connected, then:
*/
if (util_1.Guard.isElementNode(inclusiveDescendant) &&
ShadowTreeAlgorithm_1.shadowTree_isConnected(inclusiveDescendant)) {
if (util_1.Guard.isCustomElementNode(inclusiveDescendant)) {
/**
* 7.7.2.1. If inclusiveDescendant is custom, then enqueue a custom
* element callback reaction with inclusiveDescendant, callback name
* "connectedCallback", and an empty argument list.
*/
CustomElementAlgorithm_1.customElement_enqueueACustomElementCallbackReaction(inclusiveDescendant, "connectedCallback", []);
}
else {
/**
* 7.7.2.2. Otherwise, try to upgrade inclusiveDescendant.
*/
CustomElementAlgorithm_1.customElement_tryToUpgrade(inclusiveDescendant);
}
}
}
inclusiveDescendant = TreeAlgorithm_1.tree_getNextDescendantNode(node_1, inclusiveDescendant, true, true);
}
}
/**
* 8. If suppress observers flag is unset, then queue a tree mutation record
* for parent with nodes, « », previousSibling, and child.
*/
if (DOMImpl_1.dom.features.mutationObservers) {
if (!suppressObservers) {
MutationObserverAlgorithm_1.observer_queueTreeMutationRecord(parent, nodes, [], previousSibling, child);
}
}
}
exports.mutation_insert = mutation_insert;
/**
* Inserts a node into a parent node. Optimized routine for the common case where
* node is not a document fragment node and it has no child nodes.
*
* @param node - node to insert
* @param parent - parent node to receive node
* @param suppressObservers - whether to notify observers
*/
function mutation_insert_single(node, parent, suppressObservers) {
/**
* 1. Let count be the number of children of node if it is a
* DocumentFragment node, and one otherwise.
* 2. If child is non-null, then:
* 2.1. For each live range whose start node is parent and start
* offset is greater than child's index, increase its start
* offset by count.
* 2.2. For each live range whose end node is parent and end
* offset is greater than child's index, increase its end
* offset by count.
* 3. Let nodes be nodes children, if node is a DocumentFragment node;
* otherwise « node ».
* 4. If node is a DocumentFragment node, remove its children with the
* suppress observers flag set.
* 5. If node is a DocumentFragment node, then queue a tree mutation record
* for node with « », nodes, null, and null.
*/
/**
* 6. Let previousSibling be childs previous sibling or parents last
* child if child is null.
*/
var previousSibling = parent._lastChild;
// set document element node
if (util_1.Guard.isElementNode(node)) {
// set document element node
if (util_1.Guard.isDocumentNode(parent)) {
parent._documentElement = node;
}
// mark that the document has namespaces
if (!node._nodeDocument._hasNamespaces && (node._namespace !== null ||
node._namespacePrefix !== null)) {
node._nodeDocument._hasNamespaces = true;
}
}
/**
* 7. For each node in nodes, in tree order:
* 7.1. If child is null, then append node to parents children.
* 7.2. Otherwise, insert node into parents children before childs
* index.
*/
node._parent = parent;
parent._children.add(node);
// assign siblings and children for quick lookups
if (parent._firstChild === null) {
node._previousSibling = null;
node._nextSibling = null;
parent._firstChild = node;
parent._lastChild = node;
}
else {
var prev = parent._lastChild;
node._previousSibling = prev;
node._nextSibling = null;
if (prev)
prev._nextSibling = node;
if (!prev)
parent._firstChild = node;
parent._lastChild = node;
}
/**
* 7.3. If parent is a shadow host and node is a slotable, then
* assign a slot for node.
*/
if (DOMImpl_1.dom.features.slots) {
if (parent._shadowRoot !== null && util_1.Guard.isSlotable(node)) {
ShadowTreeAlgorithm_1.shadowTree_assignASlot(node);
}
}
/**
* 7.4. If node is a Text node, run the child text content change
* steps for parent.
*/
if (DOMImpl_1.dom.features.steps) {
if (util_1.Guard.isTextNode(node)) {
DOMAlgorithm_1.dom_runChildTextContentChangeSteps(parent);
}
}
/**
* 7.5. If parent's root is a shadow root, and parent is a slot
* whose assigned nodes is the empty list, then run signal
* a slot change for parent.
*/
if (DOMImpl_1.dom.features.slots) {
if (util_1.Guard.isShadowRoot(TreeAlgorithm_1.tree_rootNode(parent)) &&
util_1.Guard.isSlot(parent) && util_2.isEmpty(parent._assignedNodes)) {
ShadowTreeAlgorithm_1.shadowTree_signalASlotChange(parent);
}
}
/**
* 7.6. Run assign slotables for a tree with node's root.
*/
if (DOMImpl_1.dom.features.slots) {
ShadowTreeAlgorithm_1.shadowTree_assignSlotablesForATree(TreeAlgorithm_1.tree_rootNode(node));
}
/**
* 7.7. For each shadow-including inclusive descendant
* inclusiveDescendant of node, in shadow-including tree
* order:
* 7.7.1. Run the insertion steps with inclusiveDescendant.
*/
if (DOMImpl_1.dom.features.steps) {
DOMAlgorithm_1.dom_runInsertionSteps(node);
}
if (DOMImpl_1.dom.features.customElements) {
/**
* 7.7.2. If inclusiveDescendant is connected, then:
*/
if (util_1.Guard.isElementNode(node) &&
ShadowTreeAlgorithm_1.shadowTree_isConnected(node)) {
if (util_1.Guard.isCustomElementNode(node)) {
/**
* 7.7.2.1. If inclusiveDescendant is custom, then enqueue a custom
* element callback reaction with inclusiveDescendant, callback name
* "connectedCallback", and an empty argument list.
*/
CustomElementAlgorithm_1.customElement_enqueueACustomElementCallbackReaction(node, "connectedCallback", []);
}
else {
/**
* 7.7.2.2. Otherwise, try to upgrade inclusiveDescendant.
*/
CustomElementAlgorithm_1.customElement_tryToUpgrade(node);
}
}
}
/**
* 8. If suppress observers flag is unset, then queue a tree mutation record
* for parent with nodes, « », previousSibling, and child.
*/
if (DOMImpl_1.dom.features.mutationObservers) {
if (!suppressObservers) {
MutationObserverAlgorithm_1.observer_queueTreeMutationRecord(parent, [node], [], previousSibling, null);
}
}
}
/**
* Appends a node to the children of a parent node.
*
* @param node - a node
* @param parent - the parent to receive node
*/
function mutation_append(node, parent) {
/**
* To append a node to a parent, pre-insert node into parent before null.
*/
return mutation_preInsert(node, parent, null);
}
exports.mutation_append = mutation_append;
/**
* Replaces a node with another node.
*
* @param child - child node to remove
* @param node - node to insert
* @param parent - parent node to receive node
*/
function mutation_replace(child, node, parent) {
var e_6, _a, e_7, _b, e_8, _c, e_9, _d;
/**
* 1. If parent is not a Document, DocumentFragment, or Element node,
* throw a "HierarchyRequestError" DOMException.
*/
if (parent._nodeType !== interfaces_1.NodeType.Document &&
parent._nodeType !== interfaces_1.NodeType.DocumentFragment &&
parent._nodeType !== interfaces_1.NodeType.Element)
throw new DOMException_1.HierarchyRequestError("Only document, document fragment and element nodes can contain child nodes. Parent node is " + parent.nodeName + ".");
/**
* 2. If node is a host-including inclusive ancestor of parent, throw a
* "HierarchyRequestError" DOMException.
*/
if (TreeAlgorithm_1.tree_isHostIncludingAncestorOf(parent, node, true))
throw new DOMException_1.HierarchyRequestError("The node to be inserted cannot be an ancestor of parent node. Node is " + node.nodeName + ", parent node is " + parent.nodeName + ".");
/**
* 3. If childs parent is not parent, then throw a "NotFoundError"
* DOMException.
*/
if (child._parent !== parent)
throw new DOMException_1.NotFoundError("The reference child node cannot be found under parent node. Child node is " + child.nodeName + ", parent node is " + parent.nodeName + ".");
/**
* 4. If node is not a DocumentFragment, DocumentType, Element, Text,
* ProcessingInstruction, or Comment node, throw a "HierarchyRequestError"
* DOMException.
*/
if (node._nodeType !== interfaces_1.NodeType.DocumentFragment &&
node._nodeType !== interfaces_1.NodeType.DocumentType &&
node._nodeType !== interfaces_1.NodeType.Element &&
node._nodeType !== interfaces_1.NodeType.Text &&
node._nodeType !== interfaces_1.NodeType.ProcessingInstruction &&
node._nodeType !== interfaces_1.NodeType.CData &&
node._nodeType !== interfaces_1.NodeType.Comment)
throw new DOMException_1.HierarchyRequestError("Only document fragment, document type, element, text, processing instruction, cdata section or comment nodes can be inserted. Node is " + node.nodeName + ".");
/**
* 5. If either node is a Text node and parent is a document, or node is a
* doctype and parent is not a document, throw a "HierarchyRequestError"
* DOMException.
*/
if (node._nodeType === interfaces_1.NodeType.Text &&
parent._nodeType === interfaces_1.NodeType.Document)
throw new DOMException_1.HierarchyRequestError("Cannot insert a text node as a child of a document node. Node is " + node.nodeName + ".");
if (node._nodeType === interfaces_1.NodeType.DocumentType &&
parent._nodeType !== interfaces_1.NodeType.Document)
throw new DOMException_1.HierarchyRequestError("A document type node can only be inserted under a document node. Parent node is " + parent.nodeName + ".");
/**
* 6. If parent is a document, and any of the statements below, switched on
* node, are true, throw a "HierarchyRequestError" DOMException.
* - DocumentFragment node
* If node has more than one element child or has a Text node child.
* Otherwise, if node has one element child and either parent has an element
* child that is not child or a doctype is following child.
* - element
* parent has an element child that is not child or a doctype is
* following child.
* - doctype
* parent has a doctype child that is not child, or an element is
* preceding child.
*/
if (parent._nodeType === interfaces_1.NodeType.Document) {
if (node._nodeType === interfaces_1.NodeType.DocumentFragment) {
var eleCount = 0;
try {
for (var _e = __values(node._children), _f = _e.next(); !_f.done; _f = _e.next()) {
var childNode = _f.value;
if (childNode._nodeType === interfaces_1.NodeType.Element)
eleCount++;
else if (childNode._nodeType === interfaces_1.NodeType.Text)
throw new DOMException_1.HierarchyRequestError("Cannot insert text a node as a child of a document node. Node is " + childNode.nodeName + ".");
}
}
catch (e_6_1) { e_6 = { error: e_6_1 }; }
finally {
try {
if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
}
finally { if (e_6) throw e_6.error; }
}
if (eleCount > 1) {
throw new DOMException_1.HierarchyRequestError("A document node can only have one document element node. Document fragment to be inserted has " + eleCount + " element nodes.");
}
else if (eleCount === 1) {
try {
for (var _g = __values(parent._children), _h = _g.next(); !_h.done; _h = _g.next()) {
var ele = _h.value;
if (ele._nodeType === interfaces_1.NodeType.Element && ele !== child)
throw new DOMException_1.HierarchyRequestError("The document node already has a document element node.");
}
}
catch (e_7_1) { e_7 = { error: e_7_1 }; }
finally {
try {
if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
}
finally { if (e_7) throw e_7.error; }
}
var doctypeChild = child._nextSibling;
while (doctypeChild) {
if (doctypeChild._nodeType === interfaces_1.NodeType.DocumentType)
throw new DOMException_1.HierarchyRequestError("Cannot insert an element node before a document type node.");
doctypeChild = doctypeChild._nextSibling;
}
}
}
else if (node._nodeType === interfaces_1.NodeType.Element) {
try {
for (var _j = __values(parent._children), _k = _j.next(); !_k.done; _k = _j.next()) {
var ele = _k.value;
if (ele._nodeType === interfaces_1.NodeType.Element && ele !== child)
throw new DOMException_1.HierarchyRequestError("Document already has a document element node. Node is " + node.nodeName + ".");
}
}
catch (e_8_1) { e_8 = { error: e_8_1 }; }
finally {
try {
if (_k && !_k.done && (_c = _j.return)) _c.call(_j);
}
finally { if (e_8) throw e_8.error; }
}
var doctypeChild = child._nextSibling;
while (doctypeChild) {
if (doctypeChild._nodeType === interfaces_1.NodeType.DocumentType)
throw new DOMException_1.HierarchyRequestError("Cannot insert an element node before a document type node. Node is " + node.nodeName + ".");
doctypeChild = doctypeChild._nextSibling;
}
}
else if (node._nodeType === interfaces_1.NodeType.DocumentType) {
try {
for (var _l = __values(parent._children), _m = _l.next(); !_m.done; _m = _l.next()) {
var ele = _m.value;
if (ele._nodeType === interfaces_1.NodeType.DocumentType && ele !== child)
throw new DOMException_1.HierarchyRequestError("Document already has a document type node. Node is " + node.nodeName + ".");
}
}
catch (e_9_1) { e_9 = { error: e_9_1 }; }
finally {
try {
if (_m && !_m.done && (_d = _l.return)) _d.call(_l);
}
finally { if (e_9) throw e_9.error; }
}
var elementChild = child._previousSibling;
while (elementChild) {
if (elementChild._nodeType === interfaces_1.NodeType.Element)
throw new DOMException_1.HierarchyRequestError("Cannot insert a document type node before an element node. Node is " + node.nodeName + ".");
elementChild = elementChild._previousSibling;
}
}
}
/**
* 7. Let reference child be childs next sibling.
* 8. If reference child is node, set it to nodes next sibling.
* 8. Let previousSibling be childs previous sibling.
*/
var referenceChild = child._nextSibling;
if (referenceChild === node)
referenceChild = node._nextSibling;
var previousSibling = child._previousSibling;
/**
* 10. Adopt node into parents node document.
* 11. Let removedNodes be the empty list.
*/
DocumentAlgorithm_1.document_adopt(node, parent._nodeDocument);
var removedNodes = [];
/**
* 12. If childs parent is not null, then:
*/
if (child._parent !== null) {
/**
* 12.1. Set removedNodes to [child].
* 12.2. Remove child from its parent with the suppress observers flag
* set.
*/
removedNodes.push(child);
mutation_remove(child, child._parent, true);
}
/**
* 13. Let nodes be nodes children if node is a DocumentFragment node;
* otherwise [node].
*/
var nodes = [];
if (node._nodeType === interfaces_1.NodeType.DocumentFragment) {
nodes = Array.from(node._children);
}
else {
nodes.push(node);
}
/**
* 14. Insert node into parent before reference child with the suppress
* observers flag set.
*/
mutation_insert(node, parent, referenceChild, true);
/**
* 15. Queue a tree mutation record for parent with nodes, removedNodes,
* previousSibling, and reference child.
*/
if (DOMImpl_1.dom.features.mutationObservers) {
MutationObserverAlgorithm_1.observer_queueTreeMutationRecord(parent, nodes, removedNodes, previousSibling, referenceChild);
}
/**
* 16. Return child.
*/
return child;
}
exports.mutation_replace = mutation_replace;
/**
* Replaces all nodes of a parent with the given node.
*
* @param node - node to insert
* @param parent - parent node to receive node
*/
function mutation_replaceAll(node, parent) {
var e_10, _a;
/**
* 1. If node is not null, adopt node into parents node document.
*/
if (node !== null) {
DocumentAlgorithm_1.document_adopt(node, parent._nodeDocument);
}
/**
* 2. Let removedNodes be parents children.
*/
var removedNodes = Array.from(parent._children);
/**
* 3. Let addedNodes be the empty list.
* 4. If node is DocumentFragment node, then set addedNodes to nodes
* children.
* 5. Otherwise, if node is non-null, set addedNodes to [node].
*/
var addedNodes = [];
if (node && node._nodeType === interfaces_1.NodeType.DocumentFragment) {
addedNodes = Array.from(node._children);
}
else if (node !== null) {
addedNodes.push(node);
}
try {
/**
* 6. Remove all parents children, in tree order, with the suppress
* observers flag set.
*/
for (var removedNodes_1 = __values(removedNodes), removedNodes_1_1 = removedNodes_1.next(); !removedNodes_1_1.done; removedNodes_1_1 = removedNodes_1.next()) {
var childNode = removedNodes_1_1.value;
mutation_remove(childNode, parent, true);
}
}
catch (e_10_1) { e_10 = { error: e_10_1 }; }
finally {
try {
if (removedNodes_1_1 && !removedNodes_1_1.done && (_a = removedNodes_1.return)) _a.call(removedNodes_1);
}
finally { if (e_10) throw e_10.error; }
}
/**
* 7. If node is not null, then insert node into parent before null with the
* suppress observers flag set.
*/
if (node !== null) {
mutation_insert(node, parent, null, true);
}
/**
* 8. Queue a tree mutation record for parent with addedNodes, removedNodes,
* null, and null.
*/
if (DOMImpl_1.dom.features.mutationObservers) {
MutationObserverAlgorithm_1.observer_queueTreeMutationRecord(parent, addedNodes, removedNodes, null, null);
}
}
exports.mutation_replaceAll = mutation_replaceAll;
/**
* Ensures pre-removal validity of a child node from a parent, then
* removes it.
*
* @param child - child node to remove
* @param parent - parent node
*/
function mutation_preRemove(child, parent) {
/**
* 1. If childs parent is not parent, then throw a "NotFoundError"
* DOMException.
* 2. Remove child from parent.
* 3. Return child.
*/
if (child._parent !== parent)
throw new DOMException_1.NotFoundError("The child node cannot be found under parent node. Child node is " + child.nodeName + ", parent node is " + parent.nodeName + ".");
mutation_remove(child, parent);
return child;
}
exports.mutation_preRemove = mutation_preRemove;
/**
* Removes a child node from its parent.
*
* @param node - node to remove
* @param parent - parent node
* @param suppressObservers - whether to notify observers
*/
function mutation_remove(node, parent, suppressObservers) {
var e_11, _a, e_12, _b, e_13, _c, e_14, _d;
if (DOMImpl_1.dom.rangeList.size !== 0) {
/**
* 1. Let index be nodes index.
*/
var index = TreeAlgorithm_1.tree_index(node);
try {
/**
* 2. For each live range whose start node is an inclusive descendant of
* node, set its start to (parent, index).
* 3. For each live range whose end node is an inclusive descendant of
* node, set its end to (parent, index).
*/
for (var _e = __values(DOMImpl_1.dom.rangeList), _f = _e.next(); !_f.done; _f = _e.next()) {
var range = _f.value;
if (TreeAlgorithm_1.tree_isDescendantOf(node, range._start[0], true)) {
range._start = [parent, index];
}
if (TreeAlgorithm_1.tree_isDescendantOf(node, range._end[0], true)) {
range._end = [parent, index];
}
if (range._start[0] === parent && range._start[1] > index) {
range._start[1]--;
}
if (range._end[0] === parent && range._end[1] > index) {
range._end[1]--;
}
}
}
catch (e_11_1) { e_11 = { error: e_11_1 }; }
finally {
try {
if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
}
finally { if (e_11) throw e_11.error; }
}
try {
/**
* 4. For each live range whose start node is parent and start offset is
* greater than index, decrease its start offset by 1.
* 5. For each live range whose end node is parent and end offset is greater
* than index, decrease its end offset by 1.
*/
for (var _g = __values(DOMImpl_1.dom.rangeList), _h = _g.next(); !_h.done; _h = _g.next()) {
var range = _h.value;
if (range._start[0] === parent && range._start[1] > index) {
range._start[1] -= 1;
}
if (range._end[0] === parent && range._end[1] > index) {
range._end[1] -= 1;
}
}
}
catch (e_12_1) { e_12 = { error: e_12_1 }; }
finally {
try {
if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
}
finally { if (e_12) throw e_12.error; }
}
}
/**
* 6. For each NodeIterator object iterator whose roots node document is
* nodes node document, run the NodeIterator pre-removing steps given node
* and iterator.
*/
if (DOMImpl_1.dom.features.steps) {
try {
for (var _j = __values(NodeIteratorAlgorithm_1.nodeIterator_iteratorList()), _k = _j.next(); !_k.done; _k = _j.next()) {
var iterator = _k.value;
if (iterator._root._nodeDocument === node._nodeDocument) {
DOMAlgorithm_1.dom_runNodeIteratorPreRemovingSteps(iterator, node);
}
}
}
catch (e_13_1) { e_13 = { error: e_13_1 }; }
finally {
try {
if (_k && !_k.done && (_c = _j.return)) _c.call(_j);
}
finally { if (e_13) throw e_13.error; }
}
}
/**
* 7. Let oldPreviousSibling be nodes previous sibling.
* 8. Let oldNextSibling be nodes next sibling.
*/
var oldPreviousSibling = node._previousSibling;
var oldNextSibling = node._nextSibling;
// set document element node
if (util_1.Guard.isDocumentNode(parent) && util_1.Guard.isElementNode(node)) {
parent._documentElement = null;
}
/**
* 9. Remove node from its parents children.
*/
node._parent = null;
parent._children.delete(node);
// assign siblings and children for quick lookups
var prev = node._previousSibling;
var next = node._nextSibling;
node._previousSibling = null;
node._nextSibling = null;
if (prev)
prev._nextSibling = next;
if (next)
next._previousSibling = prev;
if (!prev)
parent._firstChild = next;
if (!next)
parent._lastChild = prev;
/**
* 10. If node is assigned, then run assign slotables for nodes assigned
* slot.
*/
if (DOMImpl_1.dom.features.slots) {
if (util_1.Guard.isSlotable(node) && node._assignedSlot !== null && ShadowTreeAlgorithm_1.shadowTree_isAssigned(node)) {
ShadowTreeAlgorithm_1.shadowTree_assignSlotables(node._assignedSlot);
}
}
/**
* 11. If parents root is a shadow root, and parent is a slot whose
* assigned nodes is the empty list, then run signal a slot change for
* parent.
*/
if (DOMImpl_1.dom.features.slots) {
if (util_1.Guard.isShadowRoot(TreeAlgorithm_1.tree_rootNode(parent)) &&
util_1.Guard.isSlot(parent) && util_2.isEmpty(parent._assignedNodes)) {
ShadowTreeAlgorithm_1.shadowTree_signalASlotChange(parent);
}
}
/**
* 12. If node has an inclusive descendant that is a slot, then:
* 12.1. Run assign slotables for a tree with parent's root.
* 12.2. Run assign slotables for a tree with node.
*/
if (DOMImpl_1.dom.features.slots) {
var descendant_1 = TreeAlgorithm_1.tree_getFirstDescendantNode(node, true, false, function (e) { return util_1.Guard.isSlot(e); });
if (descendant_1 !== null) {
ShadowTreeAlgorithm_1.shadowTree_assignSlotablesForATree(TreeAlgorithm_1.tree_rootNode(parent));
ShadowTreeAlgorithm_1.shadowTree_assignSlotablesForATree(node);
}
}
/**
* 13. Run the removing steps with node and parent.
*/
if (DOMImpl_1.dom.features.steps) {
DOMAlgorithm_1.dom_runRemovingSteps(node, parent);
}
/**
* 14. If node is custom, then enqueue a custom element callback
* reaction with node, callback name "disconnectedCallback",
* and an empty argument list.
*/
if (DOMImpl_1.dom.features.customElements) {
if (util_1.Guard.isCustomElementNode(node)) {
CustomElementAlgorithm_1.customElement_enqueueACustomElementCallbackReaction(node, "disconnectedCallback", []);
}
}
/**
* 15. For each shadow-including descendant descendant of node,
* in shadow-including tree order, then:
*/
var descendant = TreeAlgorithm_1.tree_getFirstDescendantNode(node, false, true);
while (descendant !== null) {
/**
* 15.1. Run the removing steps with descendant.
*/
if (DOMImpl_1.dom.features.steps) {
DOMAlgorithm_1.dom_runRemovingSteps(descendant, node);
}
/**
* 15.2. If descendant is custom, then enqueue a custom element
* callback reaction with descendant, callback name
* "disconnectedCallback", and an empty argument list.
*/
if (DOMImpl_1.dom.features.customElements) {
if (util_1.Guard.isCustomElementNode(descendant)) {
CustomElementAlgorithm_1.customElement_enqueueACustomElementCallbackReaction(descendant, "disconnectedCallback", []);
}
}
descendant = TreeAlgorithm_1.tree_getNextDescendantNode(node, descendant, false, true);
}
/**
* 16. For each inclusive ancestor inclusiveAncestor of parent, and
* then for each registered of inclusiveAncestor's registered
* observer list, if registered's options's subtree is true,
* then append a new transient registered observer whose
* observer is registered's observer, options is registered's
* options, and source is registered to node's registered
* observer list.
*/
if (DOMImpl_1.dom.features.mutationObservers) {
var inclusiveAncestor = TreeAlgorithm_1.tree_getFirstAncestorNode(parent, true);
while (inclusiveAncestor !== null) {
try {
for (var _l = (e_14 = void 0, __values(inclusiveAncestor._registeredObserverList)), _m = _l.next(); !_m.done; _m = _l.next()) {
var registered = _m.value;
if (registered.options.subtree) {
node._registeredObserverList.push({
observer: registered.observer,
options: registered.options,
source: registered
});
}
}
}
catch (e_14_1) { e_14 = { error: e_14_1 }; }
finally {
try {
if (_m && !_m.done && (_d = _l.return)) _d.call(_l);
}
finally { if (e_14) throw e_14.error; }
}
inclusiveAncestor = TreeAlgorithm_1.tree_getNextAncestorNode(parent, inclusiveAncestor, true);
}
}
/**
* 17. If suppress observers flag is unset, then queue a tree mutation
* record for parent with « », « node », oldPreviousSibling, and
* oldNextSibling.
*/
if (DOMImpl_1.dom.features.mutationObservers) {
if (!suppressObservers) {
MutationObserverAlgorithm_1.observer_queueTreeMutationRecord(parent, [], [node], oldPreviousSibling, oldNextSibling);
}
}
/**
* 18. If node is a Text node, then run the child text content change steps
* for parent.
*/
if (DOMImpl_1.dom.features.steps) {
if (util_1.Guard.isTextNode(node)) {
DOMAlgorithm_1.dom_runChildTextContentChangeSteps(parent);
}
}
}
exports.mutation_remove = mutation_remove;
//# sourceMappingURL=MutationAlgorithm.js.map
/***/ }),
/* 480 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const Range = __webpack_require__(124)
const validRange = (range, options) => {
try {
// Return '*' instead of '' so that truthiness works.
// This will throw if it's invalid anyway
return new Range(range, options).range || '*'
} catch (er) {
return null
}
}
module.exports = validRange
/***/ }),
/* 481 */,
/* 482 */,
/* 483 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var DOMException_1 = __webpack_require__(35);
/**
* Matches elements with the given selectors.
*
* @param selectors - selectors
* @param node - the node to match against
*/
function selectors_scopeMatchASelectorsString(selectors, node) {
/**
* TODO: Selectors
* 1. Let s be the result of parse a selector selectors. [SELECTORS4]
* 2. If s is failure, then throw a "SyntaxError" DOMException.
* 3. Return the result of match a selector against a tree with s and nodes
* root using scoping root node. [SELECTORS4].
*/
throw new DOMException_1.NotSupportedError();
}
exports.selectors_scopeMatchASelectorsString = selectors_scopeMatchASelectorsString;
//# sourceMappingURL=SelectorsAlgorithm.js.map
/***/ }),
/* 484 */,
/* 485 */,
/* 486 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const compare = __webpack_require__(874)
const gt = (a, b, loose) => compare(a, b, loose) > 0
module.exports = gt
/***/ }),
/* 487 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var interfaces_1 = __webpack_require__(970);
/**
* Represents an object which can be used to iterate through the nodes
* of a subtree.
*/
var TraverserImpl = /** @class */ (function () {
/**
* Initializes a new instance of `Traverser`.
*
* @param root - root node
*/
function TraverserImpl(root) {
this._activeFlag = false;
this._root = root;
this._whatToShow = interfaces_1.WhatToShow.All;
this._filter = null;
}
Object.defineProperty(TraverserImpl.prototype, "root", {
/** @inheritdoc */
get: function () { return this._root; },
enumerable: true,
configurable: true
});
Object.defineProperty(TraverserImpl.prototype, "whatToShow", {
/** @inheritdoc */
get: function () { return this._whatToShow; },
enumerable: true,
configurable: true
});
Object.defineProperty(TraverserImpl.prototype, "filter", {
/** @inheritdoc */
get: function () { return this._filter; },
enumerable: true,
configurable: true
});
return TraverserImpl;
}());
exports.TraverserImpl = TraverserImpl;
//# sourceMappingURL=TraverserImpl.js.map
/***/ }),
/* 488 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
var DOMImpl_1 = __webpack_require__(648);
var interfaces_1 = __webpack_require__(970);
var DOMException_1 = __webpack_require__(35);
var NodeImpl_1 = __webpack_require__(935);
var util_1 = __webpack_require__(918);
var util_2 = __webpack_require__(592);
var infra_1 = __webpack_require__(23);
var URLAlgorithm_1 = __webpack_require__(813);
var algorithm_1 = __webpack_require__(163);
var WebIDLAlgorithm_1 = __webpack_require__(495);
/**
* Represents a document node.
*/
var DocumentImpl = /** @class */ (function (_super) {
__extends(DocumentImpl, _super);
/**
* Initializes a new instance of `Document`.
*/
function DocumentImpl() {
var _this = _super.call(this) || this;
_this._children = new Set();
_this._encoding = {
name: "UTF-8",
labels: ["unicode-1-1-utf-8", "utf-8", "utf8"]
};
_this._contentType = 'application/xml';
_this._URL = {
scheme: "about",
username: "",
password: "",
host: null,
port: null,
path: ["blank"],
query: null,
fragment: null,
_cannotBeABaseURLFlag: true,
_blobURLEntry: null
};
_this._origin = null;
_this._type = "xml";
_this._mode = "no-quirks";
_this._documentElement = null;
_this._hasNamespaces = false;
_this._nodeDocumentOverwrite = null;
return _this;
}
Object.defineProperty(DocumentImpl.prototype, "_nodeDocument", {
get: function () { return this._nodeDocumentOverwrite || this; },
set: function (val) { this._nodeDocumentOverwrite = val; },
enumerable: true,
configurable: true
});
Object.defineProperty(DocumentImpl.prototype, "implementation", {
/** @inheritdoc */
get: function () {
/**
* The implementation attributes getter must return the DOMImplementation
* object that is associated with the document.
*/
return this._implementation || (this._implementation = algorithm_1.create_domImplementation(this));
},
enumerable: true,
configurable: true
});
Object.defineProperty(DocumentImpl.prototype, "URL", {
/** @inheritdoc */
get: function () {
/**
* The URL attributes getter and documentURI attributes getter must return
* the URL, serialized.
* See: https://url.spec.whatwg.org/#concept-url-serializer
*/
return URLAlgorithm_1.urlSerializer(this._URL);
},
enumerable: true,
configurable: true
});
Object.defineProperty(DocumentImpl.prototype, "documentURI", {
/** @inheritdoc */
get: function () { return this.URL; },
enumerable: true,
configurable: true
});
Object.defineProperty(DocumentImpl.prototype, "origin", {
/** @inheritdoc */
get: function () {
return "null";
},
enumerable: true,
configurable: true
});
Object.defineProperty(DocumentImpl.prototype, "compatMode", {
/** @inheritdoc */
get: function () {
/**
* The compatMode attributes getter must return "BackCompat" if context
* objects mode is "quirks", and "CSS1Compat" otherwise.
*/
return this._mode === "quirks" ? "BackCompat" : "CSS1Compat";
},
enumerable: true,
configurable: true
});
Object.defineProperty(DocumentImpl.prototype, "characterSet", {
/** @inheritdoc */
get: function () {
/**
* The characterSet attributes getter, charset attributes getter, and
* inputEncoding attributes getter, must return context objects
* encodings name.
*/
return this._encoding.name;
},
enumerable: true,
configurable: true
});
Object.defineProperty(DocumentImpl.prototype, "charset", {
/** @inheritdoc */
get: function () { return this._encoding.name; },
enumerable: true,
configurable: true
});
Object.defineProperty(DocumentImpl.prototype, "inputEncoding", {
/** @inheritdoc */
get: function () { return this._encoding.name; },
enumerable: true,
configurable: true
});
Object.defineProperty(DocumentImpl.prototype, "contentType", {
/** @inheritdoc */
get: function () {
/**
* The contentType attributes getter must return the content type.
*/
return this._contentType;
},
enumerable: true,
configurable: true
});
Object.defineProperty(DocumentImpl.prototype, "doctype", {
/** @inheritdoc */
get: function () {
var e_1, _a;
try {
/**
* The doctype attributes getter must return the child of the document
* that is a doctype, and null otherwise.
*/
for (var _b = __values(this._children), _c = _b.next(); !_c.done; _c = _b.next()) {
var child = _c.value;
if (util_1.Guard.isDocumentTypeNode(child))
return child;
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
return null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(DocumentImpl.prototype, "documentElement", {
/** @inheritdoc */
get: function () {
/**
* The documentElement attributes getter must return the document element.
*/
return this._documentElement;
},
enumerable: true,
configurable: true
});
/** @inheritdoc */
DocumentImpl.prototype.getElementsByTagName = function (qualifiedName) {
/**
* The getElementsByTagName(qualifiedName) method, when invoked, must return
* the list of elements with qualified name qualifiedName for the context object.
*/
return algorithm_1.node_listOfElementsWithQualifiedName(qualifiedName, this);
};
/** @inheritdoc */
DocumentImpl.prototype.getElementsByTagNameNS = function (namespace, localName) {
/**
* The getElementsByTagNameNS(namespace, localName) method, when invoked,
* must return the list of elements with namespace namespace and local name
* localName for the context object.
*/
return algorithm_1.node_listOfElementsWithNamespace(namespace, localName, this);
};
/** @inheritdoc */
DocumentImpl.prototype.getElementsByClassName = function (classNames) {
/**
* The getElementsByClassName(classNames) method, when invoked, must return
* the list of elements with class names classNames for the context object.
*/
return algorithm_1.node_listOfElementsWithClassNames(classNames, this);
};
/** @inheritdoc */
DocumentImpl.prototype.createElement = function (localName, options) {
/**
* 1. If localName does not match the Name production, then throw an
* "InvalidCharacterError" DOMException.
* 2. If the context object is an HTML document, then set localName to
* localName in ASCII lowercase.
* 3. Let is be null.
* 4. If options is a dictionary and optionss is is present, then set is
* to it.
* 5. Let namespace be the HTML namespace, if the context object is an
* HTML document or context objects content type is
* "application/xhtml+xml", and null otherwise.
* 6. Return the result of creating an element given the context object,
* localName, namespace, null, is, and with the synchronous custom elements
* flag set.
*/
if (!algorithm_1.xml_isName(localName))
throw new DOMException_1.InvalidCharacterError();
if (this._type === "html")
localName = localName.toLowerCase();
var is = null;
if (options !== undefined) {
if (util_2.isString(options)) {
is = options;
}
else {
is = options.is;
}
}
var namespace = (this._type === "html" || this._contentType === "application/xhtml+xml") ?
infra_1.namespace.HTML : null;
return algorithm_1.element_createAnElement(this, localName, namespace, null, is, true);
};
/** @inheritdoc */
DocumentImpl.prototype.createElementNS = function (namespace, qualifiedName, options) {
/**
* The createElementNS(namespace, qualifiedName, options) method, when
* invoked, must return the result of running the internal createElementNS
* steps, given context object, namespace, qualifiedName, and options.
*/
return algorithm_1.document_internalCreateElementNS(this, namespace, qualifiedName, options);
};
/** @inheritdoc */
DocumentImpl.prototype.createDocumentFragment = function () {
/**
* The createDocumentFragment() method, when invoked, must return a new
* DocumentFragment node with its node document set to the context object.
*/
return algorithm_1.create_documentFragment(this);
};
/** @inheritdoc */
DocumentImpl.prototype.createTextNode = function (data) {
/**
* The createTextNode(data) method, when invoked, must return a new Text
* node with its data set to data and node document set to the context object.
*/
return algorithm_1.create_text(this, data);
};
/** @inheritdoc */
DocumentImpl.prototype.createCDATASection = function (data) {
/**
* 1. If context object is an HTML document, then throw a
* "NotSupportedError" DOMException.
* 2. If data contains the string "]]>", then throw an
* "InvalidCharacterError" DOMException.
* 3. Return a new CDATASection node with its data set to data and node
* document set to the context object.
*/
if (this._type === "html")
throw new DOMException_1.NotSupportedError();
if (data.indexOf(']]>') !== -1)
throw new DOMException_1.InvalidCharacterError();
return algorithm_1.create_cdataSection(this, data);
};
/** @inheritdoc */
DocumentImpl.prototype.createComment = function (data) {
/**
* The createComment(data) method, when invoked, must return a new Comment
* node with its data set to data and node document set to the context object.
*/
return algorithm_1.create_comment(this, data);
};
/** @inheritdoc */
DocumentImpl.prototype.createProcessingInstruction = function (target, data) {
/**
* 1. If target does not match the Name production, then throw an
* "InvalidCharacterError" DOMException.
* 2. If data contains the string "?>", then throw an
* "InvalidCharacterError" DOMException.
* 3. Return a new ProcessingInstruction node, with target set to target,
* data set to data, and node document set to the context object.
*/
if (!algorithm_1.xml_isName(target))
throw new DOMException_1.InvalidCharacterError();
if (data.indexOf("?>") !== -1)
throw new DOMException_1.InvalidCharacterError();
return algorithm_1.create_processingInstruction(this, target, data);
};
/** @inheritdoc */
DocumentImpl.prototype.importNode = function (node, deep) {
if (deep === void 0) { deep = false; }
/**
* 1. If node is a document or shadow root, then throw a "NotSupportedError" DOMException.
*/
if (util_1.Guard.isDocumentNode(node) || util_1.Guard.isShadowRoot(node))
throw new DOMException_1.NotSupportedError();
/**
* 2. Return a clone of node, with context object and the clone children flag set if deep is true.
*/
return algorithm_1.node_clone(node, this, deep);
};
/** @inheritdoc */
DocumentImpl.prototype.adoptNode = function (node) {
/**
* 1. If node is a document, then throw a "NotSupportedError" DOMException.
*/
if (util_1.Guard.isDocumentNode(node))
throw new DOMException_1.NotSupportedError();
/**
* 2. If node is a shadow root, then throw a "HierarchyRequestError" DOMException.
*/
if (util_1.Guard.isShadowRoot(node))
throw new DOMException_1.HierarchyRequestError();
/**
* 3. Adopt node into the context object.
* 4. Return node.
*/
algorithm_1.document_adopt(node, this);
return node;
};
/** @inheritdoc */
DocumentImpl.prototype.createAttribute = function (localName) {
/**
* 1. If localName does not match the Name production in XML, then throw
* an "InvalidCharacterError" DOMException.
* 2. If the context object is an HTML document, then set localName to
* localName in ASCII lowercase.
* 3. Return a new attribute whose local name is localName and node document
* is context object.
*/
if (!algorithm_1.xml_isName(localName))
throw new DOMException_1.InvalidCharacterError();
if (this._type === "html") {
localName = localName.toLowerCase();
}
var attr = algorithm_1.create_attr(this, localName);
return attr;
};
/** @inheritdoc */
DocumentImpl.prototype.createAttributeNS = function (namespace, qualifiedName) {
/**
* 1. Let namespace, prefix, and localName be the result of passing
* namespace and qualifiedName to validate and extract.
* 2. Return a new attribute whose namespace is namespace, namespace prefix
* is prefix, local name is localName, and node document is context object.
*/
var _a = __read(algorithm_1.namespace_validateAndExtract(namespace, qualifiedName), 3), ns = _a[0], prefix = _a[1], localName = _a[2];
var attr = algorithm_1.create_attr(this, localName);
attr._namespace = ns;
attr._namespacePrefix = prefix;
return attr;
};
/** @inheritdoc */
DocumentImpl.prototype.createEvent = function (eventInterface) {
return algorithm_1.event_createLegacyEvent(eventInterface);
};
/** @inheritdoc */
DocumentImpl.prototype.createRange = function () {
/**
* The createRange() method, when invoked, must return a new live range
* with (context object, 0) as its start and end.
*/
var range = algorithm_1.create_range();
range._start = [this, 0];
range._end = [this, 0];
return range;
};
/** @inheritdoc */
DocumentImpl.prototype.createNodeIterator = function (root, whatToShow, filter) {
if (whatToShow === void 0) { whatToShow = interfaces_1.WhatToShow.All; }
if (filter === void 0) { filter = null; }
/**
* 1. Let iterator be a new NodeIterator object.
* 2. Set iterators root and iterators reference to root.
* 3. Set iterators pointer before reference to true.
* 4. Set iterators whatToShow to whatToShow.
* 5. Set iterators filter to filter.
* 6. Return iterator.
*/
var iterator = algorithm_1.create_nodeIterator(root, root, true);
iterator._whatToShow = whatToShow;
iterator._iteratorCollection = algorithm_1.create_nodeList(root);
if (util_2.isFunction(filter)) {
iterator._filter = algorithm_1.create_nodeFilter();
iterator._filter.acceptNode = filter;
}
else {
iterator._filter = filter;
}
return iterator;
};
/** @inheritdoc */
DocumentImpl.prototype.createTreeWalker = function (root, whatToShow, filter) {
if (whatToShow === void 0) { whatToShow = interfaces_1.WhatToShow.All; }
if (filter === void 0) { filter = null; }
/**
* 1. Let walker be a new TreeWalker object.
* 2. Set walkers root and walkers current to root.
* 3. Set walkers whatToShow to whatToShow.
* 4. Set walkers filter to filter.
* 5. Return walker.
*/
var walker = algorithm_1.create_treeWalker(root, root);
walker._whatToShow = whatToShow;
if (util_2.isFunction(filter)) {
walker._filter = algorithm_1.create_nodeFilter();
walker._filter.acceptNode = filter;
}
else {
walker._filter = filter;
}
return walker;
};
/**
* Gets the parent event target for the given event.
*
* @param event - an event
*/
DocumentImpl.prototype._getTheParent = function (event) {
/**
* TODO: Implement realms
* A documents get the parent algorithm, given an event, returns null if
* events type attribute value is "load" or document does not have a
* browsing context, and the documents relevant global object otherwise.
*/
if (event._type === "load") {
return null;
}
else {
return DOMImpl_1.dom.window;
}
};
// MIXIN: NonElementParentNode
/* istanbul ignore next */
DocumentImpl.prototype.getElementById = function (elementId) { throw new Error("Mixin: NonElementParentNode not implemented."); };
Object.defineProperty(DocumentImpl.prototype, "children", {
// MIXIN: DocumentOrShadowRoot
// No elements
// MIXIN: ParentNode
/* istanbul ignore next */
get: function () { throw new Error("Mixin: ParentNode not implemented."); },
enumerable: true,
configurable: true
});
Object.defineProperty(DocumentImpl.prototype, "firstElementChild", {
/* istanbul ignore next */
get: function () { throw new Error("Mixin: ParentNode not implemented."); },
enumerable: true,
configurable: true
});
Object.defineProperty(DocumentImpl.prototype, "lastElementChild", {
/* istanbul ignore next */
get: function () { throw new Error("Mixin: ParentNode not implemented."); },
enumerable: true,
configurable: true
});
Object.defineProperty(DocumentImpl.prototype, "childElementCount", {
/* istanbul ignore next */
get: function () { throw new Error("Mixin: ParentNode not implemented."); },
enumerable: true,
configurable: true
});
/* istanbul ignore next */
DocumentImpl.prototype.prepend = function () {
var nodes = [];
for (var _i = 0; _i < arguments.length; _i++) {
nodes[_i] = arguments[_i];
}
throw new Error("Mixin: ParentNode not implemented.");
};
/* istanbul ignore next */
DocumentImpl.prototype.append = function () {
var nodes = [];
for (var _i = 0; _i < arguments.length; _i++) {
nodes[_i] = arguments[_i];
}
throw new Error("Mixin: ParentNode not implemented.");
};
/* istanbul ignore next */
DocumentImpl.prototype.querySelector = function (selectors) { throw new Error("Mixin: ParentNode not implemented."); };
/* istanbul ignore next */
DocumentImpl.prototype.querySelectorAll = function (selectors) { throw new Error("Mixin: ParentNode not implemented."); };
return DocumentImpl;
}(NodeImpl_1.NodeImpl));
exports.DocumentImpl = DocumentImpl;
/**
* Initialize prototype properties
*/
WebIDLAlgorithm_1.idl_defineConst(DocumentImpl.prototype, "_nodeType", interfaces_1.NodeType.Document);
//# sourceMappingURL=DocumentImpl.js.map
/***/ }),
/* 489 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const SemVer = __webpack_require__(65)
const patch = (a, loose) => new SemVer(a, loose).patch
module.exports = patch
/***/ }),
/* 490 */,
/* 491 */,
/* 492 */,
/* 493 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
var DOMImpl_1 = __webpack_require__(648);
var util_1 = __webpack_require__(918);
var util_2 = __webpack_require__(592);
var ElementImpl_1 = __webpack_require__(695);
var CustomElementAlgorithm_1 = __webpack_require__(344);
var TreeAlgorithm_1 = __webpack_require__(873);
var NamespaceAlgorithm_1 = __webpack_require__(664);
var DOMAlgorithm_1 = __webpack_require__(304);
var ElementAlgorithm_1 = __webpack_require__(33);
var MutationAlgorithm_1 = __webpack_require__(479);
/**
* Returns an element interface for the given name and namespace.
*
* @param name - element name
* @param namespace - namespace
*/
function document_elementInterface(name, namespace) {
return ElementImpl_1.ElementImpl;
}
exports.document_elementInterface = document_elementInterface;
/**
* Creates a new element node.
* See: https://dom.spec.whatwg.org/#internal-createelementns-steps
*
* @param document - owner document
* @param namespace - element namespace
* @param qualifiedName - qualified name
* @param options - element options
*/
function document_internalCreateElementNS(document, namespace, qualifiedName, options) {
/**
* 1. Let namespace, prefix, and localName be the result of passing
* namespace and qualifiedName to validate and extract.
* 2. Let is be null.
* 3. If options is a dictionary and optionss is is present, then set
* is to it.
* 4. Return the result of creating an element given document, localName,
* namespace, prefix, is, and with the synchronous custom elements flag set.
*/
var _a = __read(NamespaceAlgorithm_1.namespace_validateAndExtract(namespace, qualifiedName), 3), ns = _a[0], prefix = _a[1], localName = _a[2];
var is = null;
if (options !== undefined) {
if (util_2.isString(options)) {
is = options;
}
else {
is = options.is;
}
}
return ElementAlgorithm_1.element_createAnElement(document, localName, ns, prefix, is, true);
}
exports.document_internalCreateElementNS = document_internalCreateElementNS;
/**
* Removes `node` and its subtree from its document and changes
* its owner document to `document` so that it can be inserted
* into `document`.
*
* @param node - the node to move
* @param document - document to receive the node and its subtree
*/
function document_adopt(node, document) {
var e_1, _a;
// Optimize for common case of inserting a fresh node
if (node._nodeDocument === document && node._parent === null) {
return;
}
/**
* 1. Let oldDocument be nodes node document.
* 2. If nodes parent is not null, remove node from its parent.
*/
var oldDocument = node._nodeDocument;
if (node._parent)
MutationAlgorithm_1.mutation_remove(node, node._parent);
/**
* 3. If document is not oldDocument, then:
*/
if (document !== oldDocument) {
/**
* 3.1. For each inclusiveDescendant in nodes shadow-including inclusive
* descendants:
*/
var inclusiveDescendant = TreeAlgorithm_1.tree_getFirstDescendantNode(node, true, true);
while (inclusiveDescendant !== null) {
/**
* 3.1.1. Set inclusiveDescendants node document to document.
* 3.1.2. If inclusiveDescendant is an element, then set the node
* document of each attribute in inclusiveDescendants attribute list
* to document.
*/
inclusiveDescendant._nodeDocument = document;
if (util_1.Guard.isElementNode(inclusiveDescendant)) {
try {
for (var _b = (e_1 = void 0, __values(inclusiveDescendant._attributeList._asArray())), _c = _b.next(); !_c.done; _c = _b.next()) {
var attr = _c.value;
attr._nodeDocument = document;
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
}
/**
* 3.2. For each inclusiveDescendant in node's shadow-including
* inclusive descendants that is custom, enqueue a custom
* element callback reaction with inclusiveDescendant,
* callback name "adoptedCallback", and an argument list
* containing oldDocument and document.
*/
if (DOMImpl_1.dom.features.customElements) {
if (util_1.Guard.isElementNode(inclusiveDescendant) &&
inclusiveDescendant._customElementState === "custom") {
CustomElementAlgorithm_1.customElement_enqueueACustomElementCallbackReaction(inclusiveDescendant, "adoptedCallback", [oldDocument, document]);
}
}
/**
* 3.3. For each inclusiveDescendant in nodes shadow-including
* inclusive descendants, in shadow-including tree order, run the
* adopting steps with inclusiveDescendant and oldDocument.
*/
if (DOMImpl_1.dom.features.steps) {
DOMAlgorithm_1.dom_runAdoptingSteps(inclusiveDescendant, oldDocument);
}
inclusiveDescendant = TreeAlgorithm_1.tree_getNextDescendantNode(node, inclusiveDescendant, true, true);
}
}
}
exports.document_adopt = document_adopt;
//# sourceMappingURL=DocumentAlgorithm.js.map
/***/ }),
/* 494 */
/***/ (function(module, __unusedexports, __webpack_require__) {
var rng = __webpack_require__(58);
var bytesToUuid = __webpack_require__(722);
function v4(options, buf, offset) {
var i = buf && offset || 0;
if (typeof(options) == 'string') {
buf = options === 'binary' ? new Array(16) : null;
options = null;
}
options = options || {};
var rnds = options.random || (options.rng || rng)();
// Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
rnds[6] = (rnds[6] & 0x0f) | 0x40;
rnds[8] = (rnds[8] & 0x3f) | 0x80;
// Copy bytes to buffer, if provided
if (buf) {
for (var ii = 0; ii < 16; ++ii) {
buf[i + ii] = rnds[ii];
}
}
return buf || bytesToUuid(rnds);
}
module.exports = v4;
/***/ }),
/* 495 */
/***/ (function(__unusedmodule, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Defines a WebIDL `Const` property on the given object.
*
* @param o - object on which to add the property
* @param name - property name
* @param value - property value
*/
function idl_defineConst(o, name, value) {
Object.defineProperty(o, name, { writable: false, enumerable: true, configurable: false, value: value });
}
exports.idl_defineConst = idl_defineConst;
//# sourceMappingURL=WebIDLAlgorithm.js.map
/***/ }),
/* 496 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __spread = (this && this.__spread) || function () {
for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
var util_1 = __webpack_require__(592);
/**
* Adds the given item to the end of the set.
*
* @param set - a set
* @param item - an item
*/
function append(set, item) {
set.add(item);
}
exports.append = append;
/**
* Extends a set by appending all items from another set.
*
* @param setA - a list to extend
* @param setB - a list containing items to append to `setA`
*/
function extend(setA, setB) {
setB.forEach(setA.add, setA);
}
exports.extend = extend;
/**
* Inserts the given item to the start of the set.
*
* @param set - a set
* @param item - an item
*/
function prepend(set, item) {
var cloned = new Set(set);
set.clear();
set.add(item);
cloned.forEach(set.add, set);
}
exports.prepend = prepend;
/**
* Replaces the given item or all items matching condition with a new item.
*
* @param set - a set
* @param conditionOrItem - an item to replace or a condition matching items
* to replace
* @param item - an item
*/
function replace(set, conditionOrItem, newItem) {
var e_1, _a;
var newSet = new Set();
try {
for (var set_1 = __values(set), set_1_1 = set_1.next(); !set_1_1.done; set_1_1 = set_1.next()) {
var oldItem = set_1_1.value;
if (util_1.isFunction(conditionOrItem)) {
if (!!conditionOrItem.call(null, oldItem)) {
newSet.add(newItem);
}
else {
newSet.add(oldItem);
}
}
else if (oldItem === conditionOrItem) {
newSet.add(newItem);
}
else {
newSet.add(oldItem);
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (set_1_1 && !set_1_1.done && (_a = set_1.return)) _a.call(set_1);
}
finally { if (e_1) throw e_1.error; }
}
set.clear();
newSet.forEach(set.add, set);
}
exports.replace = replace;
/**
* Inserts the given item before the given index.
*
* @param set - a set
* @param item - an item
*/
function insert(set, item, index) {
var e_2, _a;
var newSet = new Set();
var i = 0;
try {
for (var set_2 = __values(set), set_2_1 = set_2.next(); !set_2_1.done; set_2_1 = set_2.next()) {
var oldItem = set_2_1.value;
if (i === index)
newSet.add(item);
newSet.add(oldItem);
i++;
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (set_2_1 && !set_2_1.done && (_a = set_2.return)) _a.call(set_2);
}
finally { if (e_2) throw e_2.error; }
}
set.clear();
newSet.forEach(set.add, set);
}
exports.insert = insert;
/**
* Removes the given item or all items matching condition.
*
* @param set - a set
* @param conditionOrItem - an item to remove or a condition matching items
* to remove
*/
function remove(set, conditionOrItem) {
var e_3, _a, e_4, _b;
if (!util_1.isFunction(conditionOrItem)) {
set.delete(conditionOrItem);
}
else {
var toRemove = [];
try {
for (var set_3 = __values(set), set_3_1 = set_3.next(); !set_3_1.done; set_3_1 = set_3.next()) {
var item = set_3_1.value;
if (!!conditionOrItem.call(null, item)) {
toRemove.push(item);
}
}
}
catch (e_3_1) { e_3 = { error: e_3_1 }; }
finally {
try {
if (set_3_1 && !set_3_1.done && (_a = set_3.return)) _a.call(set_3);
}
finally { if (e_3) throw e_3.error; }
}
try {
for (var toRemove_1 = __values(toRemove), toRemove_1_1 = toRemove_1.next(); !toRemove_1_1.done; toRemove_1_1 = toRemove_1.next()) {
var oldItem = toRemove_1_1.value;
set.delete(oldItem);
}
}
catch (e_4_1) { e_4 = { error: e_4_1 }; }
finally {
try {
if (toRemove_1_1 && !toRemove_1_1.done && (_b = toRemove_1.return)) _b.call(toRemove_1);
}
finally { if (e_4) throw e_4.error; }
}
}
}
exports.remove = remove;
/**
* Removes all items from the set.
*/
function empty(set) {
set.clear();
}
exports.empty = empty;
/**
* Determines if the set contains the given item or any items matching
* condition.
*
* @param set - a set
* @param conditionOrItem - an item to a condition to match
*/
function contains(set, conditionOrItem) {
var e_5, _a;
if (!util_1.isFunction(conditionOrItem)) {
return set.has(conditionOrItem);
}
else {
try {
for (var set_4 = __values(set), set_4_1 = set_4.next(); !set_4_1.done; set_4_1 = set_4.next()) {
var oldItem = set_4_1.value;
if (!!conditionOrItem.call(null, oldItem)) {
return true;
}
}
}
catch (e_5_1) { e_5 = { error: e_5_1 }; }
finally {
try {
if (set_4_1 && !set_4_1.done && (_a = set_4.return)) _a.call(set_4);
}
finally { if (e_5) throw e_5.error; }
}
}
return false;
}
exports.contains = contains;
/**
* Returns the count of items in the set matching the given condition.
*
* @param set - a set
* @param condition - an optional condition to match
*/
function size(set, condition) {
var e_6, _a;
if (condition === undefined) {
return set.size;
}
else {
var count = 0;
try {
for (var set_5 = __values(set), set_5_1 = set_5.next(); !set_5_1.done; set_5_1 = set_5.next()) {
var item = set_5_1.value;
if (!!condition.call(null, item)) {
count++;
}
}
}
catch (e_6_1) { e_6 = { error: e_6_1 }; }
finally {
try {
if (set_5_1 && !set_5_1.done && (_a = set_5.return)) _a.call(set_5);
}
finally { if (e_6) throw e_6.error; }
}
return count;
}
}
exports.size = size;
/**
* Determines if the set is empty.
*
* @param set - a set
*/
function isEmpty(set) {
return set.size === 0;
}
exports.isEmpty = isEmpty;
/**
* Returns an iterator for the items of the set.
*
* @param set - a set
* @param condition - an optional condition to match
*/
function forEach(set, condition) {
var set_6, set_6_1, item, e_7_1;
var e_7, _a;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
if (!(condition === undefined)) return [3 /*break*/, 2];
return [5 /*yield**/, __values(set)];
case 1:
_b.sent();
return [3 /*break*/, 9];
case 2:
_b.trys.push([2, 7, 8, 9]);
set_6 = __values(set), set_6_1 = set_6.next();
_b.label = 3;
case 3:
if (!!set_6_1.done) return [3 /*break*/, 6];
item = set_6_1.value;
if (!!!condition.call(null, item)) return [3 /*break*/, 5];
return [4 /*yield*/, item];
case 4:
_b.sent();
_b.label = 5;
case 5:
set_6_1 = set_6.next();
return [3 /*break*/, 3];
case 6: return [3 /*break*/, 9];
case 7:
e_7_1 = _b.sent();
e_7 = { error: e_7_1 };
return [3 /*break*/, 9];
case 8:
try {
if (set_6_1 && !set_6_1.done && (_a = set_6.return)) _a.call(set_6);
}
finally { if (e_7) throw e_7.error; }
return [7 /*endfinally*/];
case 9: return [2 /*return*/];
}
});
}
exports.forEach = forEach;
/**
* Creates and returns a shallow clone of set.
*
* @param set - a set
*/
function clone(set) {
return new Set(set);
}
exports.clone = clone;
/**
* Returns a new set containing items from the set sorted in ascending
* order.
*
* @param set - a set
* @param lessThanAlgo - a function that returns `true` if its first argument
* is less than its second argument, and `false` otherwise.
*/
function sortInAscendingOrder(set, lessThanAlgo) {
var list = new (Array.bind.apply(Array, __spread([void 0], set)))();
list.sort(function (itemA, itemB) {
return lessThanAlgo.call(null, itemA, itemB) ? -1 : 1;
});
return new Set(list);
}
exports.sortInAscendingOrder = sortInAscendingOrder;
/**
* Returns a new set containing items from the set sorted in descending
* order.
*
* @param set - a set
* @param lessThanAlgo - a function that returns `true` if its first argument
* is less than its second argument, and `false` otherwise.
*/
function sortInDescendingOrder(set, lessThanAlgo) {
var list = new (Array.bind.apply(Array, __spread([void 0], set)))();
list.sort(function (itemA, itemB) {
return lessThanAlgo.call(null, itemA, itemB) ? 1 : -1;
});
return new Set(list);
}
exports.sortInDescendingOrder = sortInDescendingOrder;
/**
* Determines if a set is a subset of another set.
*
* @param subset - a set
* @param superset - a superset possibly containing all items from `subset`.
*/
function isSubsetOf(subset, superset) {
var e_8, _a;
try {
for (var subset_1 = __values(subset), subset_1_1 = subset_1.next(); !subset_1_1.done; subset_1_1 = subset_1.next()) {
var item = subset_1_1.value;
if (!superset.has(item))
return false;
}
}
catch (e_8_1) { e_8 = { error: e_8_1 }; }
finally {
try {
if (subset_1_1 && !subset_1_1.done && (_a = subset_1.return)) _a.call(subset_1);
}
finally { if (e_8) throw e_8.error; }
}
return true;
}
exports.isSubsetOf = isSubsetOf;
/**
* Determines if a set is a superset of another set.
*
* @param superset - a set
* @param subset - a subset possibly contained within `superset`.
*/
function isSupersetOf(superset, subset) {
return isSubsetOf(subset, superset);
}
exports.isSupersetOf = isSupersetOf;
/**
* Returns a new set with items that are contained in both sets.
*
* @param setA - a set
* @param setB - a set
*/
function intersection(setA, setB) {
var e_9, _a;
var newSet = new Set();
try {
for (var setA_1 = __values(setA), setA_1_1 = setA_1.next(); !setA_1_1.done; setA_1_1 = setA_1.next()) {
var item = setA_1_1.value;
if (setB.has(item))
newSet.add(item);
}
}
catch (e_9_1) { e_9 = { error: e_9_1 }; }
finally {
try {
if (setA_1_1 && !setA_1_1.done && (_a = setA_1.return)) _a.call(setA_1);
}
finally { if (e_9) throw e_9.error; }
}
return newSet;
}
exports.intersection = intersection;
/**
* Returns a new set with items from both sets.
*
* @param setA - a set
* @param setB - a set
*/
function union(setA, setB) {
var newSet = new Set(setA);
setB.forEach(newSet.add, newSet);
return newSet;
}
exports.union = union;
/**
* Returns a set of integers from `n` to `m` inclusive.
*
* @param n - starting number
* @param m - ending number
*/
function range(n, m) {
var newSet = new Set();
for (var i = n; i <= m; i++) {
newSet.add(i);
}
return newSet;
}
exports.range = range;
//# sourceMappingURL=Set.js.map
/***/ }),
/* 497 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var BaseCBWriter_1 = __webpack_require__(512);
/**
* Serializes XML nodes.
*/
var YAMLCBWriter = /** @class */ (function (_super) {
__extends(YAMLCBWriter, _super);
/**
* Initializes a new instance of `BaseCBWriter`.
*
* @param builderOptions - XML builder options
*/
function YAMLCBWriter(builderOptions) {
var _this = _super.call(this, builderOptions) || this;
_this._rootWritten = false;
_this._additionalLevel = 0;
if (builderOptions.indent.length < 2) {
throw new Error("YAML indententation string must be at least two characters long.");
}
if (builderOptions.offset < 0) {
throw new Error("YAML offset should be zero or a positive number.");
}
return _this;
}
/** @inheritdoc */
YAMLCBWriter.prototype.frontMatter = function () {
return this._beginLine() + "---";
};
/** @inheritdoc */
YAMLCBWriter.prototype.declaration = function (version, encoding, standalone) {
return "";
};
/** @inheritdoc */
YAMLCBWriter.prototype.docType = function (name, publicId, systemId) {
return "";
};
/** @inheritdoc */
YAMLCBWriter.prototype.comment = function (data) {
// "!": "hello"
return this._beginLine() +
this._key(this._builderOptions.convert.comment) + " " +
this._val(data);
};
/** @inheritdoc */
YAMLCBWriter.prototype.text = function (data) {
// "#": "hello"
return this._beginLine() +
this._key(this._builderOptions.convert.text) + " " +
this._val(data);
};
/** @inheritdoc */
YAMLCBWriter.prototype.instruction = function (target, data) {
// "?": "target hello"
return this._beginLine() +
this._key(this._builderOptions.convert.ins) + " " +
this._val(data ? target + " " + data : target);
};
/** @inheritdoc */
YAMLCBWriter.prototype.cdata = function (data) {
// "$": "hello"
return this._beginLine() +
this._key(this._builderOptions.convert.cdata) + " " +
this._val(data);
};
/** @inheritdoc */
YAMLCBWriter.prototype.attribute = function (name, value) {
// "@name": "val"
this._additionalLevel++;
var str = this._beginLine() +
this._key(this._builderOptions.convert.att + name) + " " +
this._val(value);
this._additionalLevel--;
return str;
};
/** @inheritdoc */
YAMLCBWriter.prototype.openTagBegin = function (name) {
// "node":
// "#":
// -
var str = this._beginLine() + this._key(name);
if (!this._rootWritten) {
this._rootWritten = true;
}
this.hasData = true;
this._additionalLevel++;
str += this._beginLine(true) + this._key(this._builderOptions.convert.text);
return str;
};
/** @inheritdoc */
YAMLCBWriter.prototype.openTagEnd = function (name, selfClosing, voidElement) {
if (selfClosing) {
return " " + this._val("");
}
return "";
};
/** @inheritdoc */
YAMLCBWriter.prototype.closeTag = function (name) {
this._additionalLevel--;
return "";
};
/** @inheritdoc */
YAMLCBWriter.prototype.beginElement = function (name) { };
/** @inheritdoc */
YAMLCBWriter.prototype.endElement = function (name) { };
/**
* Produces characters to be prepended to a line of string in pretty-print
* mode.
*/
YAMLCBWriter.prototype._beginLine = function (suppressArray) {
if (suppressArray === void 0) { suppressArray = false; }
return (this.hasData ? this._writerOptions.newline : "") +
this._indent(this._writerOptions.offset + this.level, suppressArray);
};
/**
* Produces an indentation string.
*
* @param level - depth of the tree
* @param suppressArray - whether the suppress array marker
*/
YAMLCBWriter.prototype._indent = function (level, suppressArray) {
if (level + this._additionalLevel <= 0) {
return "";
}
else {
var chars = this._writerOptions.indent.repeat(level + this._additionalLevel);
if (!suppressArray && this._rootWritten) {
return chars.substr(0, chars.length - 2) + '-' + chars.substr(-1, 1);
}
return chars;
}
};
/**
* Produces a YAML key string delimited with double quotes.
*/
YAMLCBWriter.prototype._key = function (key) {
return "\"" + key + "\":";
};
/**
* Produces a YAML value string delimited with double quotes.
*/
YAMLCBWriter.prototype._val = function (val) {
return JSON.stringify(val);
};
return YAMLCBWriter;
}(BaseCBWriter_1.BaseCBWriter));
exports.YAMLCBWriter = YAMLCBWriter;
//# sourceMappingURL=YAMLCBWriter.js.map
/***/ }),
/* 498 */,
/* 499 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const SemVer = __webpack_require__(65)
const parse = __webpack_require__(830)
const {re, t} = __webpack_require__(976)
const coerce = (version, options) => {
if (version instanceof SemVer) {
return version
}
if (typeof version === 'number') {
version = String(version)
}
if (typeof version !== 'string') {
return null
}
options = options || {}
let match = null
if (!options.rtl) {
match = version.match(re[t.COERCE])
} else {
// Find the right-most coercible string that does not share
// a terminus with a more left-ward coercible string.
// Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'
//
// Walk through the string checking with a /g regexp
// Manually set the index so as to pick up overlapping matches.
// Stop when we get a match that ends at the string end, since no
// coercible string can be more right-ward without the same terminus.
let next
while ((next = re[t.COERCERTL].exec(version)) &&
(!match || match.index + match[0].length !== version.length)
) {
if (!match ||
next.index + next[0].length !== match.index + match[0].length) {
match = next
}
re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length
}
// leave it in a clean state
re[t.COERCERTL].lastIndex = -1
}
if (match === null)
return null
return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options)
}
module.exports = coerce
/***/ }),
/* 500 */,
/* 501 */
/***/ (function(__unusedmodule, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Appends the given item to the queue.
*
* @param list - a list
* @param item - an item
*/
function enqueue(list, item) {
list.push(item);
}
exports.enqueue = enqueue;
/**
* Removes and returns an item from the queue.
*
* @param list - a list
*/
function dequeue(list) {
return list.shift() || null;
}
exports.dequeue = dequeue;
//# sourceMappingURL=Queue.js.map
/***/ }),
/* 502 */,
/* 503 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const parse = __webpack_require__(830)
const clean = (version, options) => {
const s = parse(version.trim().replace(/^[=v]+/, ''), options)
return s ? s.version : null
}
module.exports = clean
/***/ }),
/* 504 */,
/* 505 */,
/* 506 */,
/* 507 */,
/* 508 */,
/* 509 */,
/* 510 */,
/* 511 */,
/* 512 */
/***/ (function(__unusedmodule, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Pre-serializes XML nodes.
*/
var BaseCBWriter = /** @class */ (function () {
/**
* Initializes a new instance of `BaseCBWriter`.
*
* @param builderOptions - XML builder options
*/
function BaseCBWriter(builderOptions) {
/**
* Gets the current depth of the XML tree.
*/
this.level = 0;
this._builderOptions = builderOptions;
this._writerOptions = builderOptions;
}
return BaseCBWriter;
}());
exports.BaseCBWriter = BaseCBWriter;
//# sourceMappingURL=BaseCBWriter.js.map
/***/ }),
/* 513 */,
/* 514 */,
/* 515 */,
/* 516 */,
/* 517 */,
/* 518 */,
/* 519 */,
/* 520 */,
/* 521 */,
/* 522 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
var util_1 = __webpack_require__(592);
/**
* Parses the given byte sequence representing a JSON string into an object.
*
* @param bytes - a byte sequence
*/
function parseJSONFromBytes(bytes) {
/**
* 1. Let jsonText be the result of running UTF-8 decode on bytes. [ENCODING]
* 2. Return ? Call(%JSONParse%, undefined, « jsonText »).
*/
var jsonText = util_1.utf8Decode(bytes);
return JSON.parse.call(undefined, jsonText);
}
exports.parseJSONFromBytes = parseJSONFromBytes;
/**
* Serialize the given JavaScript value into a byte sequence.
*
* @param value - a JavaScript value
*/
function serializeJSONToBytes(value) {
/**
* 1. Let jsonString be ? Call(%JSONStringify%, undefined, « value »).
* 2. Return the result of running UTF-8 encode on jsonString. [ENCODING]
*/
var jsonString = JSON.stringify.call(undefined, value);
return util_1.utf8Encode(jsonString);
}
exports.serializeJSONToBytes = serializeJSONToBytes;
/**
* Parses the given JSON string into a Realm-independent JavaScript value.
*
* @param jsonText - a JSON string
*/
function parseJSONIntoInfraValues(jsonText) {
/**
* 1. Let jsValue be ? Call(%JSONParse%, undefined, « jsonText »).
* 2. Return the result of converting a JSON-derived JavaScript value to an
* Infra value, given jsValue.
*/
var jsValue = JSON.parse.call(undefined, jsonText);
return convertAJSONDerivedJavaScriptValueToAnInfraValue(jsValue);
}
exports.parseJSONIntoInfraValues = parseJSONIntoInfraValues;
/**
* Parses the value into a Realm-independent JavaScript value.
*
* @param jsValue - a JavaScript value
*/
function convertAJSONDerivedJavaScriptValueToAnInfraValue(jsValue) {
var e_1, _a;
/**
* 1. If Type(jsValue) is Null, String, or Number, then return jsValue.
*/
if (jsValue === null || util_1.isString(jsValue) || util_1.isNumber(jsValue))
return jsValue;
/**
* 2. If IsArray(jsValue) is true, then:
* 2.1. Let result be an empty list.
* 2.2. Let length be ! ToLength(! Get(jsValue, "length")).
* 2.3. For each index of the range 0 to length 1, inclusive:
* 2.3.1. Let indexName be ! ToString(index).
* 2.3.2. Let jsValueAtIndex be ! Get(jsValue, indexName).
* 2.3.3. Let infraValueAtIndex be the result of converting a JSON-derived
* JavaScript value to an Infra value, given jsValueAtIndex.
* 2.3.4. Append infraValueAtIndex to result.
* 2.8. Return result.
*/
if (util_1.isArray(jsValue)) {
var result = new Array();
try {
for (var jsValue_1 = __values(jsValue), jsValue_1_1 = jsValue_1.next(); !jsValue_1_1.done; jsValue_1_1 = jsValue_1.next()) {
var jsValueAtIndex = jsValue_1_1.value;
result.push(convertAJSONDerivedJavaScriptValueToAnInfraValue(jsValueAtIndex));
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (jsValue_1_1 && !jsValue_1_1.done && (_a = jsValue_1.return)) _a.call(jsValue_1);
}
finally { if (e_1) throw e_1.error; }
}
return result;
}
else if (util_1.isObject(jsValue)) {
/**
* 3. Let result be an empty ordered map.
* 4. For each key of ! jsValue.[[OwnPropertyKeys]]():
* 4.1. Let jsValueAtKey be ! Get(jsValue, key).
* 4.2. Let infraValueAtKey be the result of converting a JSON-derived
* JavaScript value to an Infra value, given jsValueAtKey.
* 4.3. Set result[key] to infraValueAtKey.
* 5. Return result.
*/
var result = new Map();
for (var key in jsValue) {
/* istanbul ignore else */
if (jsValue.hasOwnProperty(key)) {
var jsValueAtKey = jsValue[key];
result.set(key, convertAJSONDerivedJavaScriptValueToAnInfraValue(jsValueAtKey));
}
}
return result;
}
/* istanbul ignore next */
return jsValue;
}
exports.convertAJSONDerivedJavaScriptValueToAnInfraValue = convertAJSONDerivedJavaScriptValueToAnInfraValue;
//# sourceMappingURL=JSON.js.map
/***/ }),
/* 523 */,
/* 524 */
/***/ (function(__unusedmodule, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Represents a cache for storing order between equal objects.
*
* This cache is used when an algorithm compares two objects and finds them to
* be equal but still needs to establish an order between those two objects.
* When two such objects `a` and `b` are passed to the `check` method, a random
* number is generated with `Math.random()`. If the random number is less than
* `0.5` it is assumed that `a < b` otherwise `a > b`. The random number along
* with `a` and `b` is stored in the cache, so that subsequent checks result
* in the same consistent result.
*
* The cache has a size limit which is defined on initialization.
*/
var CompareCache = /** @class */ (function () {
/**
* Initializes a new instance of `CompareCache`.
*
* @param limit - maximum number of items to keep in the cache. When the limit
* is exceeded the first item is removed from the cache.
*/
function CompareCache(limit) {
if (limit === void 0) { limit = 1000; }
this._items = new Map();
this._limit = limit;
}
/**
* Compares and caches the given objects. Returns `true` if `objA < objB` and
* `false` otherwise.
*
* @param objA - an item to compare
* @param objB - an item to compare
*/
CompareCache.prototype.check = function (objA, objB) {
if (this._items.get(objA) === objB)
return true;
else if (this._items.get(objB) === objA)
return false;
var result = (Math.random() < 0.5);
if (result) {
this._items.set(objA, objB);
}
else {
this._items.set(objB, objA);
}
if (this._items.size > this._limit) {
var it_1 = this._items.keys().next();
/* istanbul ignore else */
if (!it_1.done) {
this._items.delete(it_1.value);
}
}
return result;
};
return CompareCache;
}());
exports.CompareCache = CompareCache;
//# sourceMappingURL=CompareCache.js.map
/***/ }),
/* 525 */,
/* 526 */,
/* 527 */,
/* 528 */,
/* 529 */,
/* 530 */,
/* 531 */
/***/ (function(module, __unusedexports, __webpack_require__) {
// Determine if version is greater than all the versions possible in the range.
const outside = __webpack_require__(881)
const gtr = (version, range, options) => outside(version, range, '>', options)
module.exports = gtr
/***/ }),
/* 532 */,
/* 533 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Guard_1 = __webpack_require__(783);
/**
* Contains type casts for DOM objects.
*/
var Cast = /** @class */ (function () {
function Cast() {
}
/**
* Casts the given object to a `Node`.
*
* @param a - the object to cast
*/
Cast.asNode = function (a) {
if (Guard_1.Guard.isNode(a)) {
return a;
}
else {
throw new Error("Invalid object. Node expected.");
}
};
return Cast;
}());
exports.Cast = Cast;
//# sourceMappingURL=Cast.js.map
/***/ }),
/* 534 */,
/* 535 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var XMLBuilderImpl_1 = __webpack_require__(595);
exports.XMLBuilderImpl = XMLBuilderImpl_1.XMLBuilderImpl;
var XMLBuilderCBImpl_1 = __webpack_require__(551);
exports.XMLBuilderCBImpl = XMLBuilderCBImpl_1.XMLBuilderCBImpl;
var BuilderFunctions_1 = __webpack_require__(961);
exports.builder = BuilderFunctions_1.builder;
exports.create = BuilderFunctions_1.create;
exports.fragment = BuilderFunctions_1.fragment;
exports.convert = BuilderFunctions_1.convert;
var BuilderFunctionsCB_1 = __webpack_require__(295);
exports.createCB = BuilderFunctionsCB_1.createCB;
exports.fragmentCB = BuilderFunctionsCB_1.fragmentCB;
//# sourceMappingURL=index.js.map
/***/ }),
/* 536 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const ANY = Symbol('SemVer ANY')
// hoisted class for cyclic dependency
class Comparator {
static get ANY () {
return ANY
}
constructor (comp, options) {
options = parseOptions(options)
if (comp instanceof Comparator) {
if (comp.loose === !!options.loose) {
return comp
} else {
comp = comp.value
}
}
debug('comparator', comp, options)
this.options = options
this.loose = !!options.loose
this.parse(comp)
if (this.semver === ANY) {
this.value = ''
} else {
this.value = this.operator + this.semver.version
}
debug('comp', this)
}
parse (comp) {
const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]
const m = comp.match(r)
if (!m) {
throw new TypeError(`Invalid comparator: ${comp}`)
}
this.operator = m[1] !== undefined ? m[1] : ''
if (this.operator === '=') {
this.operator = ''
}
// if it literally is just '>' or '' then allow anything.
if (!m[2]) {
this.semver = ANY
} else {
this.semver = new SemVer(m[2], this.options.loose)
}
}
toString () {
return this.value
}
test (version) {
debug('Comparator.test', version, this.options.loose)
if (this.semver === ANY || version === ANY) {
return true
}
if (typeof version === 'string') {
try {
version = new SemVer(version, this.options)
} catch (er) {
return false
}
}
return cmp(version, this.operator, this.semver, this.options)
}
intersects (comp, options) {
if (!(comp instanceof Comparator)) {
throw new TypeError('a Comparator is required')
}
if (!options || typeof options !== 'object') {
options = {
loose: !!options,
includePrerelease: false
}
}
if (this.operator === '') {
if (this.value === '') {
return true
}
return new Range(comp.value, options).test(this.value)
} else if (comp.operator === '') {
if (comp.value === '') {
return true
}
return new Range(this.value, options).test(comp.semver)
}
const sameDirectionIncreasing =
(this.operator === '>=' || this.operator === '>') &&
(comp.operator === '>=' || comp.operator === '>')
const sameDirectionDecreasing =
(this.operator === '<=' || this.operator === '<') &&
(comp.operator === '<=' || comp.operator === '<')
const sameSemVer = this.semver.version === comp.semver.version
const differentDirectionsInclusive =
(this.operator === '>=' || this.operator === '<=') &&
(comp.operator === '>=' || comp.operator === '<=')
const oppositeDirectionsLessThan =
cmp(this.semver, '<', comp.semver, options) &&
(this.operator === '>=' || this.operator === '>') &&
(comp.operator === '<=' || comp.operator === '<')
const oppositeDirectionsGreaterThan =
cmp(this.semver, '>', comp.semver, options) &&
(this.operator === '<=' || this.operator === '<') &&
(comp.operator === '>=' || comp.operator === '>')
return (
sameDirectionIncreasing ||
sameDirectionDecreasing ||
(sameSemVer && differentDirectionsInclusive) ||
oppositeDirectionsLessThan ||
oppositeDirectionsGreaterThan
)
}
}
module.exports = Comparator
const parseOptions = __webpack_require__(143)
const {re, t} = __webpack_require__(976)
const cmp = __webpack_require__(752)
const debug = __webpack_require__(548)
const SemVer = __webpack_require__(65)
const Range = __webpack_require__(124)
/***/ }),
/* 537 */,
/* 538 */,
/* 539 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const http = __webpack_require__(605);
const https = __webpack_require__(34);
const pm = __webpack_require__(950);
let tunnel;
var HttpCodes;
(function (HttpCodes) {
HttpCodes[HttpCodes["OK"] = 200] = "OK";
HttpCodes[HttpCodes["MultipleChoices"] = 300] = "MultipleChoices";
HttpCodes[HttpCodes["MovedPermanently"] = 301] = "MovedPermanently";
HttpCodes[HttpCodes["ResourceMoved"] = 302] = "ResourceMoved";
HttpCodes[HttpCodes["SeeOther"] = 303] = "SeeOther";
HttpCodes[HttpCodes["NotModified"] = 304] = "NotModified";
HttpCodes[HttpCodes["UseProxy"] = 305] = "UseProxy";
HttpCodes[HttpCodes["SwitchProxy"] = 306] = "SwitchProxy";
HttpCodes[HttpCodes["TemporaryRedirect"] = 307] = "TemporaryRedirect";
HttpCodes[HttpCodes["PermanentRedirect"] = 308] = "PermanentRedirect";
HttpCodes[HttpCodes["BadRequest"] = 400] = "BadRequest";
HttpCodes[HttpCodes["Unauthorized"] = 401] = "Unauthorized";
HttpCodes[HttpCodes["PaymentRequired"] = 402] = "PaymentRequired";
HttpCodes[HttpCodes["Forbidden"] = 403] = "Forbidden";
HttpCodes[HttpCodes["NotFound"] = 404] = "NotFound";
HttpCodes[HttpCodes["MethodNotAllowed"] = 405] = "MethodNotAllowed";
HttpCodes[HttpCodes["NotAcceptable"] = 406] = "NotAcceptable";
HttpCodes[HttpCodes["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired";
HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout";
HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict";
HttpCodes[HttpCodes["Gone"] = 410] = "Gone";
HttpCodes[HttpCodes["TooManyRequests"] = 429] = "TooManyRequests";
HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError";
HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented";
HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway";
HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable";
HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout";
})(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {}));
var Headers;
(function (Headers) {
Headers["Accept"] = "accept";
Headers["ContentType"] = "content-type";
})(Headers = exports.Headers || (exports.Headers = {}));
var MediaTypes;
(function (MediaTypes) {
MediaTypes["ApplicationJson"] = "application/json";
})(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {}));
/**
* Returns the proxy URL, depending upon the supplied url and proxy environment variables.
* @param serverUrl The server URL where the request will be sent. For example, https://api.github.com
*/
function getProxyUrl(serverUrl) {
let proxyUrl = pm.getProxyUrl(new URL(serverUrl));
return proxyUrl ? proxyUrl.href : '';
}
exports.getProxyUrl = getProxyUrl;
const HttpRedirectCodes = [
HttpCodes.MovedPermanently,
HttpCodes.ResourceMoved,
HttpCodes.SeeOther,
HttpCodes.TemporaryRedirect,
HttpCodes.PermanentRedirect
];
const HttpResponseRetryCodes = [
HttpCodes.BadGateway,
HttpCodes.ServiceUnavailable,
HttpCodes.GatewayTimeout
];
const RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD'];
const ExponentialBackoffCeiling = 10;
const ExponentialBackoffTimeSlice = 5;
class HttpClientError extends Error {
constructor(message, statusCode) {
super(message);
this.name = 'HttpClientError';
this.statusCode = statusCode;
Object.setPrototypeOf(this, HttpClientError.prototype);
}
}
exports.HttpClientError = HttpClientError;
class HttpClientResponse {
constructor(message) {
this.message = message;
}
readBody() {
return new Promise(async (resolve, reject) => {
let output = Buffer.alloc(0);
this.message.on('data', (chunk) => {
output = Buffer.concat([output, chunk]);
});
this.message.on('end', () => {
resolve(output.toString());
});
});
}
}
exports.HttpClientResponse = HttpClientResponse;
function isHttps(requestUrl) {
let parsedUrl = new URL(requestUrl);
return parsedUrl.protocol === 'https:';
}
exports.isHttps = isHttps;
class HttpClient {
constructor(userAgent, handlers, requestOptions) {
this._ignoreSslError = false;
this._allowRedirects = true;
this._allowRedirectDowngrade = false;
this._maxRedirects = 50;
this._allowRetries = false;
this._maxRetries = 1;
this._keepAlive = false;
this._disposed = false;
this.userAgent = userAgent;
this.handlers = handlers || [];
this.requestOptions = requestOptions;
if (requestOptions) {
if (requestOptions.ignoreSslError != null) {
this._ignoreSslError = requestOptions.ignoreSslError;
}
this._socketTimeout = requestOptions.socketTimeout;
if (requestOptions.allowRedirects != null) {
this._allowRedirects = requestOptions.allowRedirects;
}
if (requestOptions.allowRedirectDowngrade != null) {
this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade;
}
if (requestOptions.maxRedirects != null) {
this._maxRedirects = Math.max(requestOptions.maxRedirects, 0);
}
if (requestOptions.keepAlive != null) {
this._keepAlive = requestOptions.keepAlive;
}
if (requestOptions.allowRetries != null) {
this._allowRetries = requestOptions.allowRetries;
}
if (requestOptions.maxRetries != null) {
this._maxRetries = requestOptions.maxRetries;
}
}
}
options(requestUrl, additionalHeaders) {
return this.request('OPTIONS', requestUrl, null, additionalHeaders || {});
}
get(requestUrl, additionalHeaders) {
return this.request('GET', requestUrl, null, additionalHeaders || {});
}
del(requestUrl, additionalHeaders) {
return this.request('DELETE', requestUrl, null, additionalHeaders || {});
}
post(requestUrl, data, additionalHeaders) {
return this.request('POST', requestUrl, data, additionalHeaders || {});
}
patch(requestUrl, data, additionalHeaders) {
return this.request('PATCH', requestUrl, data, additionalHeaders || {});
}
put(requestUrl, data, additionalHeaders) {
return this.request('PUT', requestUrl, data, additionalHeaders || {});
}
head(requestUrl, additionalHeaders) {
return this.request('HEAD', requestUrl, null, additionalHeaders || {});
}
sendStream(verb, requestUrl, stream, additionalHeaders) {
return this.request(verb, requestUrl, stream, additionalHeaders);
}
/**
* Gets a typed object from an endpoint
* Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise
*/
async getJson(requestUrl, additionalHeaders = {}) {
additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
let res = await this.get(requestUrl, additionalHeaders);
return this._processResponse(res, this.requestOptions);
}
async postJson(requestUrl, obj, additionalHeaders = {}) {
let data = JSON.stringify(obj, null, 2);
additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
let res = await this.post(requestUrl, data, additionalHeaders);
return this._processResponse(res, this.requestOptions);
}
async putJson(requestUrl, obj, additionalHeaders = {}) {
let data = JSON.stringify(obj, null, 2);
additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
let res = await this.put(requestUrl, data, additionalHeaders);
return this._processResponse(res, this.requestOptions);
}
async patchJson(requestUrl, obj, additionalHeaders = {}) {
let data = JSON.stringify(obj, null, 2);
additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
let res = await this.patch(requestUrl, data, additionalHeaders);
return this._processResponse(res, this.requestOptions);
}
/**
* Makes a raw http request.
* All other methods such as get, post, patch, and request ultimately call this.
* Prefer get, del, post and patch
*/
async request(verb, requestUrl, data, headers) {
if (this._disposed) {
throw new Error('Client has already been disposed.');
}
let parsedUrl = new URL(requestUrl);
let info = this._prepareRequest(verb, parsedUrl, headers);
// Only perform retries on reads since writes may not be idempotent.
let maxTries = this._allowRetries && RetryableHttpVerbs.indexOf(verb) != -1
? this._maxRetries + 1
: 1;
let numTries = 0;
let response;
while (numTries < maxTries) {
response = await this.requestRaw(info, data);
// Check if it's an authentication challenge
if (response &&
response.message &&
response.message.statusCode === HttpCodes.Unauthorized) {
let authenticationHandler;
for (let i = 0; i < this.handlers.length; i++) {
if (this.handlers[i].canHandleAuthentication(response)) {
authenticationHandler = this.handlers[i];
break;
}
}
if (authenticationHandler) {
return authenticationHandler.handleAuthentication(this, info, data);
}
else {
// We have received an unauthorized response but have no handlers to handle it.
// Let the response return to the caller.
return response;
}
}
let redirectsRemaining = this._maxRedirects;
while (HttpRedirectCodes.indexOf(response.message.statusCode) != -1 &&
this._allowRedirects &&
redirectsRemaining > 0) {
const redirectUrl = response.message.headers['location'];
if (!redirectUrl) {
// if there's no location to redirect to, we won't
break;
}
let parsedRedirectUrl = new URL(redirectUrl);
if (parsedUrl.protocol == 'https:' &&
parsedUrl.protocol != parsedRedirectUrl.protocol &&
!this._allowRedirectDowngrade) {
throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.');
}
// we need to finish reading the response before reassigning response
// which will leak the open socket.
await response.readBody();
// strip authorization header if redirected to a different hostname
if (parsedRedirectUrl.hostname !== parsedUrl.hostname) {
for (let header in headers) {
// header names are case insensitive
if (header.toLowerCase() === 'authorization') {
delete headers[header];
}
}
}
// let's make the request with the new redirectUrl
info = this._prepareRequest(verb, parsedRedirectUrl, headers);
response = await this.requestRaw(info, data);
redirectsRemaining--;
}
if (HttpResponseRetryCodes.indexOf(response.message.statusCode) == -1) {
// If not a retry code, return immediately instead of retrying
return response;
}
numTries += 1;
if (numTries < maxTries) {
await response.readBody();
await this._performExponentialBackoff(numTries);
}
}
return response;
}
/**
* Needs to be called if keepAlive is set to true in request options.
*/
dispose() {
if (this._agent) {
this._agent.destroy();
}
this._disposed = true;
}
/**
* Raw request.
* @param info
* @param data
*/
requestRaw(info, data) {
return new Promise((resolve, reject) => {
let callbackForResult = function (err, res) {
if (err) {
reject(err);
}
resolve(res);
};
this.requestRawWithCallback(info, data, callbackForResult);
});
}
/**
* Raw request with callback.
* @param info
* @param data
* @param onResult
*/
requestRawWithCallback(info, data, onResult) {
let socket;
if (typeof data === 'string') {
info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8');
}
let callbackCalled = false;
let handleResult = (err, res) => {
if (!callbackCalled) {
callbackCalled = true;
onResult(err, res);
}
};
let req = info.httpModule.request(info.options, (msg) => {
let res = new HttpClientResponse(msg);
handleResult(null, res);
});
req.on('socket', sock => {
socket = sock;
});
// If we ever get disconnected, we want the socket to timeout eventually
req.setTimeout(this._socketTimeout || 3 * 60000, () => {
if (socket) {
socket.end();
}
handleResult(new Error('Request timeout: ' + info.options.path), null);
});
req.on('error', function (err) {
// err has statusCode property
// res should have headers
handleResult(err, null);
});
if (data && typeof data === 'string') {
req.write(data, 'utf8');
}
if (data && typeof data !== 'string') {
data.on('close', function () {
req.end();
});
data.pipe(req);
}
else {
req.end();
}
}
/**
* Gets an http agent. This function is useful when you need an http agent that handles
* routing through a proxy server - depending upon the url and proxy environment variables.
* @param serverUrl The server URL where the request will be sent. For example, https://api.github.com
*/
getAgent(serverUrl) {
let parsedUrl = new URL(serverUrl);
return this._getAgent(parsedUrl);
}
_prepareRequest(method, requestUrl, headers) {
const info = {};
info.parsedUrl = requestUrl;
const usingSsl = info.parsedUrl.protocol === 'https:';
info.httpModule = usingSsl ? https : http;
const defaultPort = usingSsl ? 443 : 80;
info.options = {};
info.options.host = info.parsedUrl.hostname;
info.options.port = info.parsedUrl.port
? parseInt(info.parsedUrl.port)
: defaultPort;
info.options.path =
(info.parsedUrl.pathname || '') + (info.parsedUrl.search || '');
info.options.method = method;
info.options.headers = this._mergeHeaders(headers);
if (this.userAgent != null) {
info.options.headers['user-agent'] = this.userAgent;
}
info.options.agent = this._getAgent(info.parsedUrl);
// gives handlers an opportunity to participate
if (this.handlers) {
this.handlers.forEach(handler => {
handler.prepareRequest(info.options);
});
}
return info;
}
_mergeHeaders(headers) {
const lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {});
if (this.requestOptions && this.requestOptions.headers) {
return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers));
}
return lowercaseKeys(headers || {});
}
_getExistingOrDefaultHeader(additionalHeaders, header, _default) {
const lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {});
let clientHeader;
if (this.requestOptions && this.requestOptions.headers) {
clientHeader = lowercaseKeys(this.requestOptions.headers)[header];
}
return additionalHeaders[header] || clientHeader || _default;
}
_getAgent(parsedUrl) {
let agent;
let proxyUrl = pm.getProxyUrl(parsedUrl);
let useProxy = proxyUrl && proxyUrl.hostname;
if (this._keepAlive && useProxy) {
agent = this._proxyAgent;
}
if (this._keepAlive && !useProxy) {
agent = this._agent;
}
// if agent is already assigned use that agent.
if (!!agent) {
return agent;
}
const usingSsl = parsedUrl.protocol === 'https:';
let maxSockets = 100;
if (!!this.requestOptions) {
maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets;
}
if (useProxy) {
// If using proxy, need tunnel
if (!tunnel) {
tunnel = __webpack_require__(856);
}
const agentOptions = {
maxSockets: maxSockets,
keepAlive: this._keepAlive,
proxy: {
proxyAuth: `${proxyUrl.username}:${proxyUrl.password}`,
host: proxyUrl.hostname,
port: proxyUrl.port
}
};
let tunnelAgent;
const overHttps = proxyUrl.protocol === 'https:';
if (usingSsl) {
tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp;
}
else {
tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp;
}
agent = tunnelAgent(agentOptions);
this._proxyAgent = agent;
}
// if reusing agent across request and tunneling agent isn't assigned create a new agent
if (this._keepAlive && !agent) {
const options = { keepAlive: this._keepAlive, maxSockets: maxSockets };
agent = usingSsl ? new https.Agent(options) : new http.Agent(options);
this._agent = agent;
}
// if not using private agent and tunnel agent isn't setup then use global agent
if (!agent) {
agent = usingSsl ? https.globalAgent : http.globalAgent;
}
if (usingSsl && this._ignoreSslError) {
// we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process
// http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options
// we have to cast it to any and change it directly
agent.options = Object.assign(agent.options || {}, {
rejectUnauthorized: false
});
}
return agent;
}
_performExponentialBackoff(retryNumber) {
retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber);
const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber);
return new Promise(resolve => setTimeout(() => resolve(), ms));
}
static dateTimeDeserializer(key, value) {
if (typeof value === 'string') {
let a = new Date(value);
if (!isNaN(a.valueOf())) {
return a;
}
}
return value;
}
async _processResponse(res, options) {
return new Promise(async (resolve, reject) => {
const statusCode = res.message.statusCode;
const response = {
statusCode: statusCode,
result: null,
headers: {}
};
// not found leads to null obj returned
if (statusCode == HttpCodes.NotFound) {
resolve(response);
}
let obj;
let contents;
// get the result from the body
try {
contents = await res.readBody();
if (contents && contents.length > 0) {
if (options && options.deserializeDates) {
obj = JSON.parse(contents, HttpClient.dateTimeDeserializer);
}
else {
obj = JSON.parse(contents);
}
response.result = obj;
}
response.headers = res.message.headers;
}
catch (err) {
// Invalid resource (contents not json); leaving result obj null
}
// note that 3xx redirects are handled by the http layer.
if (statusCode > 299) {
let msg;
// if exception/error in body, attempt to get better error
if (obj && obj.message) {
msg = obj.message;
}
else if (contents && contents.length > 0) {
// it may be the case that the exception is in the body message as string
msg = contents;
}
else {
msg = 'Failed request: (' + statusCode + ')';
}
let err = new HttpClientError(msg, statusCode);
err.result = response.result;
reject(err);
}
else {
resolve(response);
}
});
}
}
exports.HttpClient = HttpClient;
/***/ }),
/* 540 */,
/* 541 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
var DOMImpl_1 = __webpack_require__(648);
var util_1 = __webpack_require__(918);
var infra_1 = __webpack_require__(23);
var CreateAlgorithm_1 = __webpack_require__(86);
var OrderedSetAlgorithm_1 = __webpack_require__(146);
var DOMAlgorithm_1 = __webpack_require__(304);
var MutationAlgorithm_1 = __webpack_require__(479);
var ElementAlgorithm_1 = __webpack_require__(33);
/**
* Replaces the contents of the given node with a single text node.
*
* @param string - node contents
* @param parent - a node
*/
function node_stringReplaceAll(str, parent) {
/**
* 1. Let node be null.
* 2. If string is not the empty string, then set node to a new Text node
* whose data is string and node document is parents node document.
* 3. Replace all with node within parent.
*/
var node = null;
if (str !== '') {
node = CreateAlgorithm_1.create_text(parent._nodeDocument, str);
}
MutationAlgorithm_1.mutation_replaceAll(node, parent);
}
exports.node_stringReplaceAll = node_stringReplaceAll;
/**
* Clones a node.
*
* @param node - a node to clone
* @param document - the document to own the cloned node
* @param cloneChildrenFlag - whether to clone node's children
*/
function node_clone(node, document, cloneChildrenFlag) {
var e_1, _a, e_2, _b;
if (document === void 0) { document = null; }
if (cloneChildrenFlag === void 0) { cloneChildrenFlag = false; }
/**
* 1. If document is not given, let document be nodes node document.
*/
if (document === null)
document = node._nodeDocument;
var copy;
if (util_1.Guard.isElementNode(node)) {
/**
* 2. If node is an element, then:
* 2.1. Let copy be the result of creating an element, given document,
* nodes local name, nodes namespace, nodes namespace prefix,
* and nodes is value, with the synchronous custom elements flag unset.
* 2.2. For each attribute in nodes attribute list:
* 2.2.1. Let copyAttribute be a clone of attribute.
* 2.2.2. Append copyAttribute to copy.
*/
copy = ElementAlgorithm_1.element_createAnElement(document, node._localName, node._namespace, node._namespacePrefix, node._is, false);
try {
for (var _c = __values(node._attributeList), _d = _c.next(); !_d.done; _d = _c.next()) {
var attribute = _d.value;
var copyAttribute = node_clone(attribute, document);
ElementAlgorithm_1.element_append(copyAttribute, copy);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
}
finally { if (e_1) throw e_1.error; }
}
}
else {
/**
* 3. Otherwise, let copy be a node that implements the same interfaces as
* node, and fulfills these additional requirements, switching on node:
* - Document
* Set copys encoding, content type, URL, origin, type, and mode, to those
* of node.
* - DocumentType
* Set copys name, public ID, and system ID, to those of node.
* - Attr
* Set copys namespace, namespace prefix, local name, and value, to
* those of node.
* - Text
* - Comment
* Set copys data, to that of node.
* - ProcessingInstruction
* Set copys target and data to those of node.
* - Any other node
*/
if (util_1.Guard.isDocumentNode(node)) {
var doc = CreateAlgorithm_1.create_document();
doc._encoding = node._encoding;
doc._contentType = node._contentType;
doc._URL = node._URL;
doc._origin = node._origin;
doc._type = node._type;
doc._mode = node._mode;
copy = doc;
}
else if (util_1.Guard.isDocumentTypeNode(node)) {
var doctype = CreateAlgorithm_1.create_documentType(document, node._name, node._publicId, node._systemId);
copy = doctype;
}
else if (util_1.Guard.isAttrNode(node)) {
var attr = CreateAlgorithm_1.create_attr(document, node.localName);
attr._namespace = node._namespace;
attr._namespacePrefix = node._namespacePrefix;
attr._value = node._value;
copy = attr;
}
else if (util_1.Guard.isExclusiveTextNode(node)) {
copy = CreateAlgorithm_1.create_text(document, node._data);
}
else if (util_1.Guard.isCDATASectionNode(node)) {
copy = CreateAlgorithm_1.create_cdataSection(document, node._data);
}
else if (util_1.Guard.isCommentNode(node)) {
copy = CreateAlgorithm_1.create_comment(document, node._data);
}
else if (util_1.Guard.isProcessingInstructionNode(node)) {
copy = CreateAlgorithm_1.create_processingInstruction(document, node._target, node._data);
}
else if (util_1.Guard.isDocumentFragmentNode(node)) {
copy = CreateAlgorithm_1.create_documentFragment(document);
}
else {
copy = Object.create(node);
}
}
/**
* 4. Set copys node document and document to copy, if copy is a document,
* and set copys node document to document otherwise.
*/
if (util_1.Guard.isDocumentNode(copy)) {
copy._nodeDocument = copy;
document = copy;
}
else {
copy._nodeDocument = document;
}
/**
* 5. Run any cloning steps defined for node in other applicable
* specifications and pass copy, node, document and the clone children flag
* if set, as parameters.
*/
if (DOMImpl_1.dom.features.steps) {
DOMAlgorithm_1.dom_runCloningSteps(copy, node, document, cloneChildrenFlag);
}
/**
* 6. If the clone children flag is set, clone all the children of node and
* append them to copy, with document as specified and the clone children
* flag being set.
*/
if (cloneChildrenFlag) {
try {
for (var _e = __values(node._children), _f = _e.next(); !_f.done; _f = _e.next()) {
var child = _f.value;
var childCopy = node_clone(child, document, true);
MutationAlgorithm_1.mutation_append(childCopy, copy);
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
}
finally { if (e_2) throw e_2.error; }
}
}
/**
* 7. Return copy.
*/
return copy;
}
exports.node_clone = node_clone;
/**
* Determines if two nodes can be considered equal.
*
* @param a - node to compare
* @param b - node to compare
*/
function node_equals(a, b) {
var e_3, _a, e_4, _b;
/**
* 1. A and Bs nodeType attribute value is identical.
*/
if (a._nodeType !== b._nodeType)
return false;
/**
* 2. The following are also equal, depending on A:
* - DocumentType
* Its name, public ID, and system ID.
* - Element
* Its namespace, namespace prefix, local name, and its attribute lists size.
* - Attr
* Its namespace, local name, and value.
* - ProcessingInstruction
* Its target and data.
* - Text
* - Comment
* Its data.
*/
if (util_1.Guard.isDocumentTypeNode(a) && util_1.Guard.isDocumentTypeNode(b)) {
if (a._name !== b._name || a._publicId !== b._publicId ||
a._systemId !== b._systemId)
return false;
}
else if (util_1.Guard.isElementNode(a) && util_1.Guard.isElementNode(b)) {
if (a._namespace !== b._namespace || a._namespacePrefix !== b._namespacePrefix ||
a._localName !== b._localName ||
a._attributeList.length !== b._attributeList.length)
return false;
}
else if (util_1.Guard.isAttrNode(a) && util_1.Guard.isAttrNode(b)) {
if (a._namespace !== b._namespace || a._localName !== b._localName ||
a._value !== b._value)
return false;
}
else if (util_1.Guard.isProcessingInstructionNode(a) && util_1.Guard.isProcessingInstructionNode(b)) {
if (a._target !== b._target || a._data !== b._data)
return false;
}
else if (util_1.Guard.isCharacterDataNode(a) && util_1.Guard.isCharacterDataNode(b)) {
if (a._data !== b._data)
return false;
}
/**
* 3. If A is an element, each attribute in its attribute list has an attribute
* that equals an attribute in Bs attribute list.
*/
if (util_1.Guard.isElementNode(a) && util_1.Guard.isElementNode(b)) {
var attrMap = {};
try {
for (var _c = __values(a._attributeList), _d = _c.next(); !_d.done; _d = _c.next()) {
var attrA = _d.value;
attrMap[attrA._localName] = attrA;
}
}
catch (e_3_1) { e_3 = { error: e_3_1 }; }
finally {
try {
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
}
finally { if (e_3) throw e_3.error; }
}
try {
for (var _e = __values(b._attributeList), _f = _e.next(); !_f.done; _f = _e.next()) {
var attrB = _f.value;
var attrA = attrMap[attrB._localName];
if (!attrA)
return false;
if (!node_equals(attrA, attrB))
return false;
}
}
catch (e_4_1) { e_4 = { error: e_4_1 }; }
finally {
try {
if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
}
finally { if (e_4) throw e_4.error; }
}
}
/**
* 4. A and B have the same number of children.
* 5. Each child of A equals the child of B at the identical index.
*/
if (a._children.size !== b._children.size)
return false;
var itA = a._children[Symbol.iterator]();
var itB = b._children[Symbol.iterator]();
var resultA = itA.next();
var resultB = itB.next();
while (!resultA.done && !resultB.done) {
var child1 = resultA.value;
var child2 = resultB.value;
if (!node_equals(child1, child2))
return false;
resultA = itA.next();
resultB = itB.next();
}
return true;
}
exports.node_equals = node_equals;
/**
* Returns a collection of elements with the given qualified name which are
* descendants of the given root node.
* See: https://dom.spec.whatwg.org/#concept-getelementsbytagname
*
* @param qualifiedName - qualified name
* @param root - root node
*/
function node_listOfElementsWithQualifiedName(qualifiedName, root) {
/**
* 1. If qualifiedName is "*" (U+002A), return a HTMLCollection rooted at
* root, whose filter matches only descendant elements.
* 2. Otherwise, if roots node document is an HTML document, return a
* HTMLCollection rooted at root, whose filter matches the following
* descendant elements:
* 2.1. Whose namespace is the HTML namespace and whose qualified name is
* qualifiedName, in ASCII lowercase.
* 2.2. Whose namespace is not the HTML namespace and whose qualified name
* is qualifiedName.
* 3. Otherwise, return a HTMLCollection rooted at root, whose filter
* matches descendant elements whose qualified name is qualifiedName.
*/
if (qualifiedName === "*") {
return CreateAlgorithm_1.create_htmlCollection(root);
}
else if (root._nodeDocument._type === "html") {
return CreateAlgorithm_1.create_htmlCollection(root, function (ele) {
if (ele._namespace === infra_1.namespace.HTML &&
ele._qualifiedName === qualifiedName.toLowerCase()) {
return true;
}
else if (ele._namespace !== infra_1.namespace.HTML &&
ele._qualifiedName === qualifiedName) {
return true;
}
else {
return false;
}
});
}
else {
return CreateAlgorithm_1.create_htmlCollection(root, function (ele) {
return (ele._qualifiedName === qualifiedName);
});
}
}
exports.node_listOfElementsWithQualifiedName = node_listOfElementsWithQualifiedName;
/**
* Returns a collection of elements with the given namespace which are
* descendants of the given root node.
* See: https://dom.spec.whatwg.org/#concept-getelementsbytagnamens
*
* @param namespace - element namespace
* @param localName - local name
* @param root - root node
*/
function node_listOfElementsWithNamespace(namespace, localName, root) {
/**
* 1. If namespace is the empty string, set it to null.
* 2. If both namespace and localName are "*" (U+002A), return a
* HTMLCollection rooted at root, whose filter matches descendant elements.
* 3. Otherwise, if namespace is "*" (U+002A), return a HTMLCollection
* rooted at root, whose filter matches descendant elements whose local
* name is localName.
* 4. Otherwise, if localName is "*" (U+002A), return a HTMLCollection
* rooted at root, whose filter matches descendant elements whose
* namespace is namespace.
* 5. Otherwise, return a HTMLCollection rooted at root, whose filter
* matches descendant elements whose namespace is namespace and local
* name is localName.
*/
if (namespace === '')
namespace = null;
if (namespace === "*" && localName === "*") {
return CreateAlgorithm_1.create_htmlCollection(root);
}
else if (namespace === "*") {
return CreateAlgorithm_1.create_htmlCollection(root, function (ele) {
return (ele._localName === localName);
});
}
else if (localName === "*") {
return CreateAlgorithm_1.create_htmlCollection(root, function (ele) {
return (ele._namespace === namespace);
});
}
else {
return CreateAlgorithm_1.create_htmlCollection(root, function (ele) {
return (ele._localName === localName && ele._namespace === namespace);
});
}
}
exports.node_listOfElementsWithNamespace = node_listOfElementsWithNamespace;
/**
* Returns a collection of elements with the given class names which are
* descendants of the given root node.
* See: https://dom.spec.whatwg.org/#concept-getelementsbyclassname
*
* @param namespace - element namespace
* @param localName - local name
* @param root - root node
*/
function node_listOfElementsWithClassNames(classNames, root) {
/**
* 1. Let classes be the result of running the ordered set parser
* on classNames.
* 2. If classes is the empty set, return an empty HTMLCollection.
* 3. Return a HTMLCollection rooted at root, whose filter matches
* descendant elements that have all their classes in classes.
* The comparisons for the classes must be done in an ASCII case-insensitive
* manner if roots node documents mode is "quirks", and in a
* case-sensitive manner otherwise.
*/
var classes = OrderedSetAlgorithm_1.orderedSet_parse(classNames);
if (classes.size === 0) {
return CreateAlgorithm_1.create_htmlCollection(root, function () { return false; });
}
var caseSensitive = (root._nodeDocument._mode !== "quirks");
return CreateAlgorithm_1.create_htmlCollection(root, function (ele) {
var eleClasses = ele.classList;
return OrderedSetAlgorithm_1.orderedSet_contains(eleClasses._tokenSet, classes, caseSensitive);
});
}
exports.node_listOfElementsWithClassNames = node_listOfElementsWithClassNames;
/**
* Searches for a namespace prefix associated with the given namespace
* starting from the given element through its ancestors.
*
* @param element - an element node to start searching at
* @param namespace - namespace to search for
*/
function node_locateANamespacePrefix(element, namespace) {
/**
* 1. If elements namespace is namespace and its namespace prefix is not
* null, then return its namespace prefix.
*/
if (element._namespace === namespace && element._namespacePrefix !== null) {
return element._namespacePrefix;
}
/**
* 2. If element has an attribute whose namespace prefix is "xmlns" and
* value is namespace, then return elements first such attributes
* local name.
*/
for (var i = 0; i < element._attributeList.length; i++) {
var attr = element._attributeList[i];
if (attr._namespacePrefix === "xmlns" && attr._value === namespace) {
return attr._localName;
}
}
/**
* 3. If elements parent element is not null, then return the result of
* running locate a namespace prefix on that element using namespace.
*/
if (element._parent && util_1.Guard.isElementNode(element._parent)) {
return node_locateANamespacePrefix(element._parent, namespace);
}
/**
* 4. Return null.
*/
return null;
}
exports.node_locateANamespacePrefix = node_locateANamespacePrefix;
/**
* Searches for a namespace associated with the given namespace prefix
* starting from the given node through its ancestors.
*
* @param node - a node to start searching at
* @param prefix - namespace prefix to search for
*/
function node_locateANamespace(node, prefix) {
if (util_1.Guard.isElementNode(node)) {
/**
* 1. If its namespace is not null and its namespace prefix is prefix,
* then return namespace.
*/
if (node._namespace !== null && node._namespacePrefix === prefix) {
return node._namespace;
}
/**
* 2. If it has an attribute whose namespace is the XMLNS namespace,
* namespace prefix is "xmlns", and local name is prefix, or if prefix
* is null and it has an attribute whose namespace is the XMLNS namespace,
* namespace prefix is null, and local name is "xmlns", then return its
* value if it is not the empty string, and null otherwise.
*/
for (var i = 0; i < node._attributeList.length; i++) {
var attr = node._attributeList[i];
if (attr._namespace === infra_1.namespace.XMLNS &&
attr._namespacePrefix === "xmlns" &&
attr._localName === prefix) {
return attr._value || null;
}
if (prefix === null && attr._namespace === infra_1.namespace.XMLNS &&
attr._namespacePrefix === null && attr._localName === "xmlns") {
return attr._value || null;
}
}
/**
* 3. If its parent element is null, then return null.
*/
if (node.parentElement === null)
return null;
/**
* 4. Return the result of running locate a namespace on its parent
* element using prefix.
*/
return node_locateANamespace(node.parentElement, prefix);
}
else if (util_1.Guard.isDocumentNode(node)) {
/**
* 1. If its document element is null, then return null.
* 2. Return the result of running locate a namespace on its document
* element using prefix.
*/
if (node.documentElement === null)
return null;
return node_locateANamespace(node.documentElement, prefix);
}
else if (util_1.Guard.isDocumentTypeNode(node) || util_1.Guard.isDocumentFragmentNode(node)) {
return null;
}
else if (util_1.Guard.isAttrNode(node)) {
/**
* 1. If its element is null, then return null.
* 2. Return the result of running locate a namespace on its element
* using prefix.
*/
if (node._element === null)
return null;
return node_locateANamespace(node._element, prefix);
}
else {
/**
* 1. If its parent element is null, then return null.
* 2. Return the result of running locate a namespace on its parent
* element using prefix.
*/
if (!node._parent || !util_1.Guard.isElementNode(node._parent))
return null;
return node_locateANamespace(node._parent, prefix);
}
}
exports.node_locateANamespace = node_locateANamespace;
//# sourceMappingURL=NodeAlgorithm.js.map
/***/ }),
/* 542 */,
/* 543 */,
/* 544 */,
/* 545 */,
/* 546 */,
/* 547 */,
/* 548 */
/***/ (function(module) {
const debug = (
typeof process === 'object' &&
process.env &&
process.env.NODE_DEBUG &&
/\bsemver\b/i.test(process.env.NODE_DEBUG)
) ? (...args) => console.error('SEMVER', ...args)
: () => {}
module.exports = debug
/***/ }),
/* 549 */,
/* 550 */
/***/ (function(module, exports) {
exports = module.exports = SemVer
var debug
/* istanbul ignore next */
if (typeof process === 'object' &&
process.env &&
process.env.NODE_DEBUG &&
/\bsemver\b/i.test(process.env.NODE_DEBUG)) {
debug = function () {
var args = Array.prototype.slice.call(arguments, 0)
args.unshift('SEMVER')
console.log.apply(console, args)
}
} else {
debug = function () {}
}
// Note: this is the semver.org version of the spec that it implements
// Not necessarily the package version of this code.
exports.SEMVER_SPEC_VERSION = '2.0.0'
var MAX_LENGTH = 256
var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
/* istanbul ignore next */ 9007199254740991
// Max safe segment length for coercion.
var MAX_SAFE_COMPONENT_LENGTH = 16
// The actual regexps go on exports.re
var re = exports.re = []
var src = exports.src = []
var t = exports.tokens = {}
var R = 0
function tok (n) {
t[n] = R++
}
// The following Regular Expressions can be used for tokenizing,
// validating, and parsing SemVer version strings.
// ## Numeric Identifier
// A single `0`, or a non-zero digit followed by zero or more digits.
tok('NUMERICIDENTIFIER')
src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*'
tok('NUMERICIDENTIFIERLOOSE')
src[t.NUMERICIDENTIFIERLOOSE] = '[0-9]+'
// ## Non-numeric Identifier
// Zero or more digits, followed by a letter or hyphen, and then zero or
// more letters, digits, or hyphens.
tok('NONNUMERICIDENTIFIER')
src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'
// ## Main Version
// Three dot-separated numeric identifiers.
tok('MAINVERSION')
src[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\.' +
'(' + src[t.NUMERICIDENTIFIER] + ')\\.' +
'(' + src[t.NUMERICIDENTIFIER] + ')'
tok('MAINVERSIONLOOSE')
src[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' +
'(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' +
'(' + src[t.NUMERICIDENTIFIERLOOSE] + ')'
// ## Pre-release Version Identifier
// A numeric identifier, or a non-numeric identifier.
tok('PRERELEASEIDENTIFIER')
src[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] +
'|' + src[t.NONNUMERICIDENTIFIER] + ')'
tok('PRERELEASEIDENTIFIERLOOSE')
src[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] +
'|' + src[t.NONNUMERICIDENTIFIER] + ')'
// ## Pre-release Version
// Hyphen, followed by one or more dot-separated pre-release version
// identifiers.
tok('PRERELEASE')
src[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] +
'(?:\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))'
tok('PRERELEASELOOSE')
src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] +
'(?:\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))'
// ## Build Metadata Identifier
// Any combination of digits, letters, or hyphens.
tok('BUILDIDENTIFIER')
src[t.BUILDIDENTIFIER] = '[0-9A-Za-z-]+'
// ## Build Metadata
// Plus sign, followed by one or more period-separated build metadata
// identifiers.
tok('BUILD')
src[t.BUILD] = '(?:\\+(' + src[t.BUILDIDENTIFIER] +
'(?:\\.' + src[t.BUILDIDENTIFIER] + ')*))'
// ## Full Version String
// A main version, followed optionally by a pre-release version and
// build metadata.
// Note that the only major, minor, patch, and pre-release sections of
// the version string are capturing groups. The build metadata is not a
// capturing group, because it should not ever be used in version
// comparison.
tok('FULL')
tok('FULLPLAIN')
src[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] +
src[t.PRERELEASE] + '?' +
src[t.BUILD] + '?'
src[t.FULL] = '^' + src[t.FULLPLAIN] + '$'
// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
// common in the npm registry.
tok('LOOSEPLAIN')
src[t.LOOSEPLAIN] = '[v=\\s]*' + src[t.MAINVERSIONLOOSE] +
src[t.PRERELEASELOOSE] + '?' +
src[t.BUILD] + '?'
tok('LOOSE')
src[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$'
tok('GTLT')
src[t.GTLT] = '((?:<|>)?=?)'
// Something like "2.*" or "1.2.x".
// Note that "x.x" is a valid xRange identifer, meaning "any version"
// Only the first item is strictly required.
tok('XRANGEIDENTIFIERLOOSE')
src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\*'
tok('XRANGEIDENTIFIER')
src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\*'
tok('XRANGEPLAIN')
src[t.XRANGEPLAIN] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' +
'(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' +
'(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' +
'(?:' + src[t.PRERELEASE] + ')?' +
src[t.BUILD] + '?' +
')?)?'
tok('XRANGEPLAINLOOSE')
src[t.XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
'(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
'(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
'(?:' + src[t.PRERELEASELOOSE] + ')?' +
src[t.BUILD] + '?' +
')?)?'
tok('XRANGE')
src[t.XRANGE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAIN] + '$'
tok('XRANGELOOSE')
src[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAINLOOSE] + '$'
// Coercion.
// Extract anything that could conceivably be a part of a valid semver
tok('COERCE')
src[t.COERCE] = '(^|[^\\d])' +
'(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +
'(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
'(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
'(?:$|[^\\d])'
tok('COERCERTL')
re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g')
// Tilde ranges.
// Meaning is "reasonably at or greater than"
tok('LONETILDE')
src[t.LONETILDE] = '(?:~>?)'
tok('TILDETRIM')
src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+'
re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g')
var tildeTrimReplace = '$1~'
tok('TILDE')
src[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$'
tok('TILDELOOSE')
src[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$'
// Caret ranges.
// Meaning is "at least and backwards compatible with"
tok('LONECARET')
src[t.LONECARET] = '(?:\\^)'
tok('CARETTRIM')
src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+'
re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g')
var caretTrimReplace = '$1^'
tok('CARET')
src[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$'
tok('CARETLOOSE')
src[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$'
// A simple gt/lt/eq thing, or just "" to indicate "any version"
tok('COMPARATORLOOSE')
src[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + ')$|^$'
tok('COMPARATOR')
src[t.COMPARATOR] = '^' + src[t.GTLT] + '\\s*(' + src[t.FULLPLAIN] + ')$|^$'
// An expression to strip any whitespace between the gtlt and the thing
// it modifies, so that `> 1.2.3` ==> `>1.2.3`
tok('COMPARATORTRIM')
src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] +
'\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')'
// this one has to use the /g flag
re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g')
var comparatorTrimReplace = '$1$2$3'
// Something like `1.2.3 - 1.2.4`
// Note that these all use the loose form, because they'll be
// checked against either the strict or loose comparator form
// later.
tok('HYPHENRANGE')
src[t.HYPHENRANGE] = '^\\s*(' + src[t.XRANGEPLAIN] + ')' +
'\\s+-\\s+' +
'(' + src[t.XRANGEPLAIN] + ')' +
'\\s*$'
tok('HYPHENRANGELOOSE')
src[t.HYPHENRANGELOOSE] = '^\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' +
'\\s+-\\s+' +
'(' + src[t.XRANGEPLAINLOOSE] + ')' +
'\\s*$'
// Star ranges basically just allow anything at all.
tok('STAR')
src[t.STAR] = '(<|>)?=?\\s*\\*'
// Compile to actual regexp objects.
// All are flag-free, unless they were created above with a flag.
for (var i = 0; i < R; i++) {
debug(i, src[i])
if (!re[i]) {
re[i] = new RegExp(src[i])
}
}
exports.parse = parse
function parse (version, options) {
if (!options || typeof options !== 'object') {
options = {
loose: !!options,
includePrerelease: false
}
}
if (version instanceof SemVer) {
return version
}
if (typeof version !== 'string') {
return null
}
if (version.length > MAX_LENGTH) {
return null
}
var r = options.loose ? re[t.LOOSE] : re[t.FULL]
if (!r.test(version)) {
return null
}
try {
return new SemVer(version, options)
} catch (er) {
return null
}
}
exports.valid = valid
function valid (version, options) {
var v = parse(version, options)
return v ? v.version : null
}
exports.clean = clean
function clean (version, options) {
var s = parse(version.trim().replace(/^[=v]+/, ''), options)
return s ? s.version : null
}
exports.SemVer = SemVer
function SemVer (version, options) {
if (!options || typeof options !== 'object') {
options = {
loose: !!options,
includePrerelease: false
}
}
if (version instanceof SemVer) {
if (version.loose === options.loose) {
return version
} else {
version = version.version
}
} else if (typeof version !== 'string') {
throw new TypeError('Invalid Version: ' + version)
}
if (version.length > MAX_LENGTH) {
throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')
}
if (!(this instanceof SemVer)) {
return new SemVer(version, options)
}
debug('SemVer', version, options)
this.options = options
this.loose = !!options.loose
var m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])
if (!m) {
throw new TypeError('Invalid Version: ' + version)
}
this.raw = version
// these are actually numbers
this.major = +m[1]
this.minor = +m[2]
this.patch = +m[3]
if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
throw new TypeError('Invalid major version')
}
if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
throw new TypeError('Invalid minor version')
}
if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
throw new TypeError('Invalid patch version')
}
// numberify any prerelease numeric ids
if (!m[4]) {
this.prerelease = []
} else {
this.prerelease = m[4].split('.').map(function (id) {
if (/^[0-9]+$/.test(id)) {
var num = +id
if (num >= 0 && num < MAX_SAFE_INTEGER) {
return num
}
}
return id
})
}
this.build = m[5] ? m[5].split('.') : []
this.format()
}
SemVer.prototype.format = function () {
this.version = this.major + '.' + this.minor + '.' + this.patch
if (this.prerelease.length) {
this.version += '-' + this.prerelease.join('.')
}
return this.version
}
SemVer.prototype.toString = function () {
return this.version
}
SemVer.prototype.compare = function (other) {
debug('SemVer.compare', this.version, this.options, other)
if (!(other instanceof SemVer)) {
other = new SemVer(other, this.options)
}
return this.compareMain(other) || this.comparePre(other)
}
SemVer.prototype.compareMain = function (other) {
if (!(other instanceof SemVer)) {
other = new SemVer(other, this.options)
}
return compareIdentifiers(this.major, other.major) ||
compareIdentifiers(this.minor, other.minor) ||
compareIdentifiers(this.patch, other.patch)
}
SemVer.prototype.comparePre = function (other) {
if (!(other instanceof SemVer)) {
other = new SemVer(other, this.options)
}
// NOT having a prerelease is > having one
if (this.prerelease.length && !other.prerelease.length) {
return -1
} else if (!this.prerelease.length && other.prerelease.length) {
return 1
} else if (!this.prerelease.length && !other.prerelease.length) {
return 0
}
var i = 0
do {
var a = this.prerelease[i]
var b = other.prerelease[i]
debug('prerelease compare', i, a, b)
if (a === undefined && b === undefined) {
return 0
} else if (b === undefined) {
return 1
} else if (a === undefined) {
return -1
} else if (a === b) {
continue
} else {
return compareIdentifiers(a, b)
}
} while (++i)
}
SemVer.prototype.compareBuild = function (other) {
if (!(other instanceof SemVer)) {
other = new SemVer(other, this.options)
}
var i = 0
do {
var a = this.build[i]
var b = other.build[i]
debug('prerelease compare', i, a, b)
if (a === undefined && b === undefined) {
return 0
} else if (b === undefined) {
return 1
} else if (a === undefined) {
return -1
} else if (a === b) {
continue
} else {
return compareIdentifiers(a, b)
}
} while (++i)
}
// preminor will bump the version up to the next minor release, and immediately
// down to pre-release. premajor and prepatch work the same way.
SemVer.prototype.inc = function (release, identifier) {
switch (release) {
case 'premajor':
this.prerelease.length = 0
this.patch = 0
this.minor = 0
this.major++
this.inc('pre', identifier)
break
case 'preminor':
this.prerelease.length = 0
this.patch = 0
this.minor++
this.inc('pre', identifier)
break
case 'prepatch':
// If this is already a prerelease, it will bump to the next version
// drop any prereleases that might already exist, since they are not
// relevant at this point.
this.prerelease.length = 0
this.inc('patch', identifier)
this.inc('pre', identifier)
break
// If the input is a non-prerelease version, this acts the same as
// prepatch.
case 'prerelease':
if (this.prerelease.length === 0) {
this.inc('patch', identifier)
}
this.inc('pre', identifier)
break
case 'major':
// If this is a pre-major version, bump up to the same major version.
// Otherwise increment major.
// 1.0.0-5 bumps to 1.0.0
// 1.1.0 bumps to 2.0.0
if (this.minor !== 0 ||
this.patch !== 0 ||
this.prerelease.length === 0) {
this.major++
}
this.minor = 0
this.patch = 0
this.prerelease = []
break
case 'minor':
// If this is a pre-minor version, bump up to the same minor version.
// Otherwise increment minor.
// 1.2.0-5 bumps to 1.2.0
// 1.2.1 bumps to 1.3.0
if (this.patch !== 0 || this.prerelease.length === 0) {
this.minor++
}
this.patch = 0
this.prerelease = []
break
case 'patch':
// If this is not a pre-release version, it will increment the patch.
// If it is a pre-release it will bump up to the same patch version.
// 1.2.0-5 patches to 1.2.0
// 1.2.0 patches to 1.2.1
if (this.prerelease.length === 0) {
this.patch++
}
this.prerelease = []
break
// This probably shouldn't be used publicly.
// 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
case 'pre':
if (this.prerelease.length === 0) {
this.prerelease = [0]
} else {
var i = this.prerelease.length
while (--i >= 0) {
if (typeof this.prerelease[i] === 'number') {
this.prerelease[i]++
i = -2
}
}
if (i === -1) {
// didn't increment anything
this.prerelease.push(0)
}
}
if (identifier) {
// 1.2.0-beta.1 bumps to 1.2.0-beta.2,
// 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
if (this.prerelease[0] === identifier) {
if (isNaN(this.prerelease[1])) {
this.prerelease = [identifier, 0]
}
} else {
this.prerelease = [identifier, 0]
}
}
break
default:
throw new Error('invalid increment argument: ' + release)
}
this.format()
this.raw = this.version
return this
}
exports.inc = inc
function inc (version, release, loose, identifier) {
if (typeof (loose) === 'string') {
identifier = loose
loose = undefined
}
try {
return new SemVer(version, loose).inc(release, identifier).version
} catch (er) {
return null
}
}
exports.diff = diff
function diff (version1, version2) {
if (eq(version1, version2)) {
return null
} else {
var v1 = parse(version1)
var v2 = parse(version2)
var prefix = ''
if (v1.prerelease.length || v2.prerelease.length) {
prefix = 'pre'
var defaultResult = 'prerelease'
}
for (var key in v1) {
if (key === 'major' || key === 'minor' || key === 'patch') {
if (v1[key] !== v2[key]) {
return prefix + key
}
}
}
return defaultResult // may be undefined
}
}
exports.compareIdentifiers = compareIdentifiers
var numeric = /^[0-9]+$/
function compareIdentifiers (a, b) {
var anum = numeric.test(a)
var bnum = numeric.test(b)
if (anum && bnum) {
a = +a
b = +b
}
return a === b ? 0
: (anum && !bnum) ? -1
: (bnum && !anum) ? 1
: a < b ? -1
: 1
}
exports.rcompareIdentifiers = rcompareIdentifiers
function rcompareIdentifiers (a, b) {
return compareIdentifiers(b, a)
}
exports.major = major
function major (a, loose) {
return new SemVer(a, loose).major
}
exports.minor = minor
function minor (a, loose) {
return new SemVer(a, loose).minor
}
exports.patch = patch
function patch (a, loose) {
return new SemVer(a, loose).patch
}
exports.compare = compare
function compare (a, b, loose) {
return new SemVer(a, loose).compare(new SemVer(b, loose))
}
exports.compareLoose = compareLoose
function compareLoose (a, b) {
return compare(a, b, true)
}
exports.compareBuild = compareBuild
function compareBuild (a, b, loose) {
var versionA = new SemVer(a, loose)
var versionB = new SemVer(b, loose)
return versionA.compare(versionB) || versionA.compareBuild(versionB)
}
exports.rcompare = rcompare
function rcompare (a, b, loose) {
return compare(b, a, loose)
}
exports.sort = sort
function sort (list, loose) {
return list.sort(function (a, b) {
return exports.compareBuild(a, b, loose)
})
}
exports.rsort = rsort
function rsort (list, loose) {
return list.sort(function (a, b) {
return exports.compareBuild(b, a, loose)
})
}
exports.gt = gt
function gt (a, b, loose) {
return compare(a, b, loose) > 0
}
exports.lt = lt
function lt (a, b, loose) {
return compare(a, b, loose) < 0
}
exports.eq = eq
function eq (a, b, loose) {
return compare(a, b, loose) === 0
}
exports.neq = neq
function neq (a, b, loose) {
return compare(a, b, loose) !== 0
}
exports.gte = gte
function gte (a, b, loose) {
return compare(a, b, loose) >= 0
}
exports.lte = lte
function lte (a, b, loose) {
return compare(a, b, loose) <= 0
}
exports.cmp = cmp
function cmp (a, op, b, loose) {
switch (op) {
case '===':
if (typeof a === 'object')
a = a.version
if (typeof b === 'object')
b = b.version
return a === b
case '!==':
if (typeof a === 'object')
a = a.version
if (typeof b === 'object')
b = b.version
return a !== b
case '':
case '=':
case '==':
return eq(a, b, loose)
case '!=':
return neq(a, b, loose)
case '>':
return gt(a, b, loose)
case '>=':
return gte(a, b, loose)
case '<':
return lt(a, b, loose)
case '<=':
return lte(a, b, loose)
default:
throw new TypeError('Invalid operator: ' + op)
}
}
exports.Comparator = Comparator
function Comparator (comp, options) {
if (!options || typeof options !== 'object') {
options = {
loose: !!options,
includePrerelease: false
}
}
if (comp instanceof Comparator) {
if (comp.loose === !!options.loose) {
return comp
} else {
comp = comp.value
}
}
if (!(this instanceof Comparator)) {
return new Comparator(comp, options)
}
debug('comparator', comp, options)
this.options = options
this.loose = !!options.loose
this.parse(comp)
if (this.semver === ANY) {
this.value = ''
} else {
this.value = this.operator + this.semver.version
}
debug('comp', this)
}
var ANY = {}
Comparator.prototype.parse = function (comp) {
var r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]
var m = comp.match(r)
if (!m) {
throw new TypeError('Invalid comparator: ' + comp)
}
this.operator = m[1] !== undefined ? m[1] : ''
if (this.operator === '=') {
this.operator = ''
}
// if it literally is just '>' or '' then allow anything.
if (!m[2]) {
this.semver = ANY
} else {
this.semver = new SemVer(m[2], this.options.loose)
}
}
Comparator.prototype.toString = function () {
return this.value
}
Comparator.prototype.test = function (version) {
debug('Comparator.test', version, this.options.loose)
if (this.semver === ANY || version === ANY) {
return true
}
if (typeof version === 'string') {
try {
version = new SemVer(version, this.options)
} catch (er) {
return false
}
}
return cmp(version, this.operator, this.semver, this.options)
}
Comparator.prototype.intersects = function (comp, options) {
if (!(comp instanceof Comparator)) {
throw new TypeError('a Comparator is required')
}
if (!options || typeof options !== 'object') {
options = {
loose: !!options,
includePrerelease: false
}
}
var rangeTmp
if (this.operator === '') {
if (this.value === '') {
return true
}
rangeTmp = new Range(comp.value, options)
return satisfies(this.value, rangeTmp, options)
} else if (comp.operator === '') {
if (comp.value === '') {
return true
}
rangeTmp = new Range(this.value, options)
return satisfies(comp.semver, rangeTmp, options)
}
var sameDirectionIncreasing =
(this.operator === '>=' || this.operator === '>') &&
(comp.operator === '>=' || comp.operator === '>')
var sameDirectionDecreasing =
(this.operator === '<=' || this.operator === '<') &&
(comp.operator === '<=' || comp.operator === '<')
var sameSemVer = this.semver.version === comp.semver.version
var differentDirectionsInclusive =
(this.operator === '>=' || this.operator === '<=') &&
(comp.operator === '>=' || comp.operator === '<=')
var oppositeDirectionsLessThan =
cmp(this.semver, '<', comp.semver, options) &&
((this.operator === '>=' || this.operator === '>') &&
(comp.operator === '<=' || comp.operator === '<'))
var oppositeDirectionsGreaterThan =
cmp(this.semver, '>', comp.semver, options) &&
((this.operator === '<=' || this.operator === '<') &&
(comp.operator === '>=' || comp.operator === '>'))
return sameDirectionIncreasing || sameDirectionDecreasing ||
(sameSemVer && differentDirectionsInclusive) ||
oppositeDirectionsLessThan || oppositeDirectionsGreaterThan
}
exports.Range = Range
function Range (range, options) {
if (!options || typeof options !== 'object') {
options = {
loose: !!options,
includePrerelease: false
}
}
if (range instanceof Range) {
if (range.loose === !!options.loose &&
range.includePrerelease === !!options.includePrerelease) {
return range
} else {
return new Range(range.raw, options)
}
}
if (range instanceof Comparator) {
return new Range(range.value, options)
}
if (!(this instanceof Range)) {
return new Range(range, options)
}
this.options = options
this.loose = !!options.loose
this.includePrerelease = !!options.includePrerelease
// First, split based on boolean or ||
this.raw = range
this.set = range.split(/\s*\|\|\s*/).map(function (range) {
return this.parseRange(range.trim())
}, this).filter(function (c) {
// throw out any that are not relevant for whatever reason
return c.length
})
if (!this.set.length) {
throw new TypeError('Invalid SemVer Range: ' + range)
}
this.format()
}
Range.prototype.format = function () {
this.range = this.set.map(function (comps) {
return comps.join(' ').trim()
}).join('||').trim()
return this.range
}
Range.prototype.toString = function () {
return this.range
}
Range.prototype.parseRange = function (range) {
var loose = this.options.loose
range = range.trim()
// `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
var hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]
range = range.replace(hr, hyphenReplace)
debug('hyphen replace', range)
// `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)
debug('comparator trim', range, re[t.COMPARATORTRIM])
// `~ 1.2.3` => `~1.2.3`
range = range.replace(re[t.TILDETRIM], tildeTrimReplace)
// `^ 1.2.3` => `^1.2.3`
range = range.replace(re[t.CARETTRIM], caretTrimReplace)
// normalize spaces
range = range.split(/\s+/).join(' ')
// At this point, the range is completely trimmed and
// ready to be split into comparators.
var compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]
var set = range.split(' ').map(function (comp) {
return parseComparator(comp, this.options)
}, this).join(' ').split(/\s+/)
if (this.options.loose) {
// in loose mode, throw out any that are not valid comparators
set = set.filter(function (comp) {
return !!comp.match(compRe)
})
}
set = set.map(function (comp) {
return new Comparator(comp, this.options)
}, this)
return set
}
Range.prototype.intersects = function (range, options) {
if (!(range instanceof Range)) {
throw new TypeError('a Range is required')
}
return this.set.some(function (thisComparators) {
return (
isSatisfiable(thisComparators, options) &&
range.set.some(function (rangeComparators) {
return (
isSatisfiable(rangeComparators, options) &&
thisComparators.every(function (thisComparator) {
return rangeComparators.every(function (rangeComparator) {
return thisComparator.intersects(rangeComparator, options)
})
})
)
})
)
})
}
// take a set of comparators and determine whether there
// exists a version which can satisfy it
function isSatisfiable (comparators, options) {
var result = true
var remainingComparators = comparators.slice()
var testComparator = remainingComparators.pop()
while (result && remainingComparators.length) {
result = remainingComparators.every(function (otherComparator) {
return testComparator.intersects(otherComparator, options)
})
testComparator = remainingComparators.pop()
}
return result
}
// Mostly just for testing and legacy API reasons
exports.toComparators = toComparators
function toComparators (range, options) {
return new Range(range, options).set.map(function (comp) {
return comp.map(function (c) {
return c.value
}).join(' ').trim().split(' ')
})
}
// comprised of xranges, tildes, stars, and gtlt's at this point.
// already replaced the hyphen ranges
// turn into a set of JUST comparators.
function parseComparator (comp, options) {
debug('comp', comp, options)
comp = replaceCarets(comp, options)
debug('caret', comp)
comp = replaceTildes(comp, options)
debug('tildes', comp)
comp = replaceXRanges(comp, options)
debug('xrange', comp)
comp = replaceStars(comp, options)
debug('stars', comp)
return comp
}
function isX (id) {
return !id || id.toLowerCase() === 'x' || id === '*'
}
// ~, ~> --> * (any, kinda silly)
// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0
// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0
// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0
// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0
// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0
function replaceTildes (comp, options) {
return comp.trim().split(/\s+/).map(function (comp) {
return replaceTilde(comp, options)
}).join(' ')
}
function replaceTilde (comp, options) {
var r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]
return comp.replace(r, function (_, M, m, p, pr) {
debug('tilde', comp, _, M, m, p, pr)
var ret
if (isX(M)) {
ret = ''
} else if (isX(m)) {
ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
} else if (isX(p)) {
// ~1.2 == >=1.2.0 <1.3.0
ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
} else if (pr) {
debug('replaceTilde pr', pr)
ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
' <' + M + '.' + (+m + 1) + '.0'
} else {
// ~1.2.3 == >=1.2.3 <1.3.0
ret = '>=' + M + '.' + m + '.' + p +
' <' + M + '.' + (+m + 1) + '.0'
}
debug('tilde return', ret)
return ret
})
}
// ^ --> * (any, kinda silly)
// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0
// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0
// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0
// ^1.2.3 --> >=1.2.3 <2.0.0
// ^1.2.0 --> >=1.2.0 <2.0.0
function replaceCarets (comp, options) {
return comp.trim().split(/\s+/).map(function (comp) {
return replaceCaret(comp, options)
}).join(' ')
}
function replaceCaret (comp, options) {
debug('caret', comp, options)
var r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]
return comp.replace(r, function (_, M, m, p, pr) {
debug('caret', comp, _, M, m, p, pr)
var ret
if (isX(M)) {
ret = ''
} else if (isX(m)) {
ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
} else if (isX(p)) {
if (M === '0') {
ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
} else {
ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'
}
} else if (pr) {
debug('replaceCaret pr', pr)
if (M === '0') {
if (m === '0') {
ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
' <' + M + '.' + m + '.' + (+p + 1)
} else {
ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
' <' + M + '.' + (+m + 1) + '.0'
}
} else {
ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
' <' + (+M + 1) + '.0.0'
}
} else {
debug('no pr')
if (M === '0') {
if (m === '0') {
ret = '>=' + M + '.' + m + '.' + p +
' <' + M + '.' + m + '.' + (+p + 1)
} else {
ret = '>=' + M + '.' + m + '.' + p +
' <' + M + '.' + (+m + 1) + '.0'
}
} else {
ret = '>=' + M + '.' + m + '.' + p +
' <' + (+M + 1) + '.0.0'
}
}
debug('caret return', ret)
return ret
})
}
function replaceXRanges (comp, options) {
debug('replaceXRanges', comp, options)
return comp.split(/\s+/).map(function (comp) {
return replaceXRange(comp, options)
}).join(' ')
}
function replaceXRange (comp, options) {
comp = comp.trim()
var r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]
return comp.replace(r, function (ret, gtlt, M, m, p, pr) {
debug('xRange', comp, ret, gtlt, M, m, p, pr)
var xM = isX(M)
var xm = xM || isX(m)
var xp = xm || isX(p)
var anyX = xp
if (gtlt === '=' && anyX) {
gtlt = ''
}
// if we're including prereleases in the match, then we need
// to fix this to -0, the lowest possible prerelease value
pr = options.includePrerelease ? '-0' : ''
if (xM) {
if (gtlt === '>' || gtlt === '<') {
// nothing is allowed
ret = '<0.0.0-0'
} else {
// nothing is forbidden
ret = '*'
}
} else if (gtlt && anyX) {
// we know patch is an x, because we have any x at all.
// replace X with 0
if (xm) {
m = 0
}
p = 0
if (gtlt === '>') {
// >1 => >=2.0.0
// >1.2 => >=1.3.0
// >1.2.3 => >= 1.2.4
gtlt = '>='
if (xm) {
M = +M + 1
m = 0
p = 0
} else {
m = +m + 1
p = 0
}
} else if (gtlt === '<=') {
// <=0.7.x is actually <0.8.0, since any 0.7.x should
// pass. Similarly, <=7.x is actually <8.0.0, etc.
gtlt = '<'
if (xm) {
M = +M + 1
} else {
m = +m + 1
}
}
ret = gtlt + M + '.' + m + '.' + p + pr
} else if (xm) {
ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr
} else if (xp) {
ret = '>=' + M + '.' + m + '.0' + pr +
' <' + M + '.' + (+m + 1) + '.0' + pr
}
debug('xRange return', ret)
return ret
})
}
// Because * is AND-ed with everything else in the comparator,
// and '' means "any version", just remove the *s entirely.
function replaceStars (comp, options) {
debug('replaceStars', comp, options)
// Looseness is ignored here. star is always as loose as it gets!
return comp.trim().replace(re[t.STAR], '')
}
// This function is passed to string.replace(re[t.HYPHENRANGE])
// M, m, patch, prerelease, build
// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do
// 1.2 - 3.4 => >=1.2.0 <3.5.0
function hyphenReplace ($0,
from, fM, fm, fp, fpr, fb,
to, tM, tm, tp, tpr, tb) {
if (isX(fM)) {
from = ''
} else if (isX(fm)) {
from = '>=' + fM + '.0.0'
} else if (isX(fp)) {
from = '>=' + fM + '.' + fm + '.0'
} else {
from = '>=' + from
}
if (isX(tM)) {
to = ''
} else if (isX(tm)) {
to = '<' + (+tM + 1) + '.0.0'
} else if (isX(tp)) {
to = '<' + tM + '.' + (+tm + 1) + '.0'
} else if (tpr) {
to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr
} else {
to = '<=' + to
}
return (from + ' ' + to).trim()
}
// if ANY of the sets match ALL of its comparators, then pass
Range.prototype.test = function (version) {
if (!version) {
return false
}
if (typeof version === 'string') {
try {
version = new SemVer(version, this.options)
} catch (er) {
return false
}
}
for (var i = 0; i < this.set.length; i++) {
if (testSet(this.set[i], version, this.options)) {
return true
}
}
return false
}
function testSet (set, version, options) {
for (var i = 0; i < set.length; i++) {
if (!set[i].test(version)) {
return false
}
}
if (version.prerelease.length && !options.includePrerelease) {
// Find the set of versions that are allowed to have prereleases
// For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
// That should allow `1.2.3-pr.2` to pass.
// However, `1.2.4-alpha.notready` should NOT be allowed,
// even though it's within the range set by the comparators.
for (i = 0; i < set.length; i++) {
debug(set[i].semver)
if (set[i].semver === ANY) {
continue
}
if (set[i].semver.prerelease.length > 0) {
var allowed = set[i].semver
if (allowed.major === version.major &&
allowed.minor === version.minor &&
allowed.patch === version.patch) {
return true
}
}
}
// Version has a -pre, but it's not one of the ones we like.
return false
}
return true
}
exports.satisfies = satisfies
function satisfies (version, range, options) {
try {
range = new Range(range, options)
} catch (er) {
return false
}
return range.test(version)
}
exports.maxSatisfying = maxSatisfying
function maxSatisfying (versions, range, options) {
var max = null
var maxSV = null
try {
var rangeObj = new Range(range, options)
} catch (er) {
return null
}
versions.forEach(function (v) {
if (rangeObj.test(v)) {
// satisfies(v, range, options)
if (!max || maxSV.compare(v) === -1) {
// compare(max, v, true)
max = v
maxSV = new SemVer(max, options)
}
}
})
return max
}
exports.minSatisfying = minSatisfying
function minSatisfying (versions, range, options) {
var min = null
var minSV = null
try {
var rangeObj = new Range(range, options)
} catch (er) {
return null
}
versions.forEach(function (v) {
if (rangeObj.test(v)) {
// satisfies(v, range, options)
if (!min || minSV.compare(v) === 1) {
// compare(min, v, true)
min = v
minSV = new SemVer(min, options)
}
}
})
return min
}
exports.minVersion = minVersion
function minVersion (range, loose) {
range = new Range(range, loose)
var minver = new SemVer('0.0.0')
if (range.test(minver)) {
return minver
}
minver = new SemVer('0.0.0-0')
if (range.test(minver)) {
return minver
}
minver = null
for (var i = 0; i < range.set.length; ++i) {
var comparators = range.set[i]
comparators.forEach(function (comparator) {
// Clone to avoid manipulating the comparator's semver object.
var compver = new SemVer(comparator.semver.version)
switch (comparator.operator) {
case '>':
if (compver.prerelease.length === 0) {
compver.patch++
} else {
compver.prerelease.push(0)
}
compver.raw = compver.format()
/* fallthrough */
case '':
case '>=':
if (!minver || gt(minver, compver)) {
minver = compver
}
break
case '<':
case '<=':
/* Ignore maximum versions */
break
/* istanbul ignore next */
default:
throw new Error('Unexpected operation: ' + comparator.operator)
}
})
}
if (minver && range.test(minver)) {
return minver
}
return null
}
exports.validRange = validRange
function validRange (range, options) {
try {
// Return '*' instead of '' so that truthiness works.
// This will throw if it's invalid anyway
return new Range(range, options).range || '*'
} catch (er) {
return null
}
}
// Determine if version is less than all the versions possible in the range
exports.ltr = ltr
function ltr (version, range, options) {
return outside(version, range, '<', options)
}
// Determine if version is greater than all the versions possible in the range.
exports.gtr = gtr
function gtr (version, range, options) {
return outside(version, range, '>', options)
}
exports.outside = outside
function outside (version, range, hilo, options) {
version = new SemVer(version, options)
range = new Range(range, options)
var gtfn, ltefn, ltfn, comp, ecomp
switch (hilo) {
case '>':
gtfn = gt
ltefn = lte
ltfn = lt
comp = '>'
ecomp = '>='
break
case '<':
gtfn = lt
ltefn = gte
ltfn = gt
comp = '<'
ecomp = '<='
break
default:
throw new TypeError('Must provide a hilo val of "<" or ">"')
}
// If it satisifes the range it is not outside
if (satisfies(version, range, options)) {
return false
}
// From now on, variable terms are as if we're in "gtr" mode.
// but note that everything is flipped for the "ltr" function.
for (var i = 0; i < range.set.length; ++i) {
var comparators = range.set[i]
var high = null
var low = null
comparators.forEach(function (comparator) {
if (comparator.semver === ANY) {
comparator = new Comparator('>=0.0.0')
}
high = high || comparator
low = low || comparator
if (gtfn(comparator.semver, high.semver, options)) {
high = comparator
} else if (ltfn(comparator.semver, low.semver, options)) {
low = comparator
}
})
// If the edge version comparator has a operator then our version
// isn't outside it
if (high.operator === comp || high.operator === ecomp) {
return false
}
// If the lowest version comparator has an operator and our version
// is less than it then it isn't higher than the range
if ((!low.operator || low.operator === comp) &&
ltefn(version, low.semver)) {
return false
} else if (low.operator === ecomp && ltfn(version, low.semver)) {
return false
}
}
return true
}
exports.prerelease = prerelease
function prerelease (version, options) {
var parsed = parse(version, options)
return (parsed && parsed.prerelease.length) ? parsed.prerelease : null
}
exports.intersects = intersects
function intersects (r1, r2, options) {
r1 = new Range(r1, options)
r2 = new Range(r2, options)
return r1.intersects(r2)
}
exports.coerce = coerce
function coerce (version, options) {
if (version instanceof SemVer) {
return version
}
if (typeof version === 'number') {
version = String(version)
}
if (typeof version !== 'string') {
return null
}
options = options || {}
var match = null
if (!options.rtl) {
match = version.match(re[t.COERCE])
} else {
// Find the right-most coercible string that does not share
// a terminus with a more left-ward coercible string.
// Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'
//
// Walk through the string checking with a /g regexp
// Manually set the index so as to pick up overlapping matches.
// Stop when we get a match that ends at the string end, since no
// coercible string can be more right-ward without the same terminus.
var next
while ((next = re[t.COERCERTL].exec(version)) &&
(!match || match.index + match[0].length !== version.length)
) {
if (!match ||
next.index + next[0].length !== match.index + match[0].length) {
match = next
}
re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length
}
// leave it in a clean state
re[t.COERCERTL].lastIndex = -1
}
if (match === null) {
return null
}
return parse(match[2] +
'.' + (match[3] || '0') +
'.' + (match[4] || '0'), options)
}
/***/ }),
/* 551 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
var interfaces_1 = __webpack_require__(625);
var util_1 = __webpack_require__(592);
var BuilderFunctions_1 = __webpack_require__(961);
var algorithm_1 = __webpack_require__(163);
var infra_1 = __webpack_require__(23);
var NamespacePrefixMap_1 = __webpack_require__(392);
var LocalNameSet_1 = __webpack_require__(575);
var util_2 = __webpack_require__(918);
var XMLCBWriter_1 = __webpack_require__(190);
var JSONCBWriter_1 = __webpack_require__(781);
var YAMLCBWriter_1 = __webpack_require__(497);
var events_1 = __webpack_require__(614);
/**
* Represents a readable XML document stream.
*/
var XMLBuilderCBImpl = /** @class */ (function (_super) {
__extends(XMLBuilderCBImpl, _super);
/**
* Initializes a new instance of `XMLStream`.
*
* @param options - stream writer options
* @param fragment - whether to create fragment stream or a document stream
*
* @returns XML stream
*/
function XMLBuilderCBImpl(options, fragment) {
if (fragment === void 0) { fragment = false; }
var _this = _super.call(this) || this;
_this._hasDeclaration = false;
_this._docTypeName = "";
_this._hasDocumentElement = false;
_this._currentElementSerialized = false;
_this._openTags = [];
_this._ended = false;
_this._fragment = fragment;
// provide default options
_this._options = util_1.applyDefaults(options || {}, interfaces_1.DefaultXMLBuilderCBOptions);
_this._builderOptions = {
defaultNamespace: _this._options.defaultNamespace,
namespaceAlias: _this._options.namespaceAlias
};
if (_this._options.format === "json") {
_this._writer = new JSONCBWriter_1.JSONCBWriter(_this._options);
}
else if (_this._options.format === "yaml") {
_this._writer = new YAMLCBWriter_1.YAMLCBWriter(_this._options);
}
else {
_this._writer = new XMLCBWriter_1.XMLCBWriter(_this._options);
}
// automatically create listeners for callbacks passed via options
if (_this._options.data !== undefined) {
_this.on("data", _this._options.data);
}
if (_this._options.end !== undefined) {
_this.on("end", _this._options.end);
}
if (_this._options.error !== undefined) {
_this.on("error", _this._options.error);
}
_this._prefixMap = new NamespacePrefixMap_1.NamespacePrefixMap();
_this._prefixMap.set("xml", infra_1.namespace.XML);
_this._prefixIndex = { value: 1 };
_this._push(_this._writer.frontMatter());
return _this;
}
/** @inheritdoc */
XMLBuilderCBImpl.prototype.ele = function (p1, p2, p3) {
var e_1, _a;
// parse if JS object or XML or JSON string
if (util_1.isObject(p1) || (util_1.isString(p1) && (/^\s*</.test(p1) || /^\s*[\{\[]/.test(p1) || /^(\s*|(#.*)|(%.*))*---/.test(p1)))) {
var frag = BuilderFunctions_1.fragment().set(this._options);
try {
frag.ele(p1);
}
catch (err) {
this.emit("error", err);
return this;
}
try {
for (var _b = __values(frag.node.childNodes), _c = _b.next(); !_c.done; _c = _b.next()) {
var node = _c.value;
this._fromNode(node);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
return this;
}
this._serializeOpenTag(true);
if (!this._fragment && this._hasDocumentElement && this._writer.level === 0) {
this.emit("error", new Error("Document cannot have multiple document element nodes."));
return this;
}
try {
this._currentElement = BuilderFunctions_1.fragment(this._builderOptions).ele(p1, p2, p3);
}
catch (err) {
this.emit("error", err);
return this;
}
if (!this._fragment && !this._hasDocumentElement && this._docTypeName !== ""
&& this._currentElement.node._qualifiedName !== this._docTypeName) {
this.emit("error", new Error("Document element name does not match DocType declaration name."));
return this;
}
this._currentElementSerialized = false;
if (!this._fragment) {
this._hasDocumentElement = true;
}
return this;
};
/** @inheritdoc */
XMLBuilderCBImpl.prototype.att = function (p1, p2, p3) {
if (this._currentElement === undefined) {
this.emit("error", new Error("Cannot insert an attribute node as child of a document node."));
return this;
}
try {
this._currentElement.att(p1, p2, p3);
}
catch (err) {
this.emit("error", err);
return this;
}
return this;
};
/** @inheritdoc */
XMLBuilderCBImpl.prototype.com = function (content) {
this._serializeOpenTag(true);
var node;
try {
node = BuilderFunctions_1.fragment(this._builderOptions).com(content).first().node;
}
catch (err) {
/* istanbul ignore next */
this.emit("error", err);
/* istanbul ignore next */
return this;
}
if (this._options.wellFormed && (!algorithm_1.xml_isLegalChar(node.data) ||
node.data.indexOf("--") !== -1 || node.data.endsWith("-"))) {
this.emit("error", new Error("Comment data contains invalid characters (well-formed required)."));
return this;
}
this._push(this._writer.comment(node.data));
return this;
};
/** @inheritdoc */
XMLBuilderCBImpl.prototype.txt = function (content) {
if (!this._fragment && this._currentElement === undefined) {
this.emit("error", new Error("Cannot insert a text node as child of a document node."));
return this;
}
this._serializeOpenTag(true);
var node;
try {
node = BuilderFunctions_1.fragment(this._builderOptions).txt(content).first().node;
}
catch (err) {
/* istanbul ignore next */
this.emit("error", err);
/* istanbul ignore next */
return this;
}
if (this._options.wellFormed && !algorithm_1.xml_isLegalChar(node.data)) {
this.emit("error", new Error("Text data contains invalid characters (well-formed required)."));
return this;
}
var markup = "";
if (this._options.noDoubleEncoding) {
markup = node.data.replace(/(?!&(lt|gt|amp|apos|quot);)&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;');
}
else {
for (var i = 0; i < node.data.length; i++) {
var c = node.data[i];
if (c === "&")
markup += "&amp;";
else if (c === "<")
markup += "&lt;";
else if (c === ">")
markup += "&gt;";
else
markup += c;
}
}
this._push(this._writer.text(markup));
return this;
};
/** @inheritdoc */
XMLBuilderCBImpl.prototype.ins = function (target, content) {
if (content === void 0) { content = ''; }
this._serializeOpenTag(true);
var node;
try {
node = BuilderFunctions_1.fragment(this._builderOptions).ins(target, content).first().node;
}
catch (err) {
/* istanbul ignore next */
this.emit("error", err);
/* istanbul ignore next */
return this;
}
if (this._options.wellFormed && (node.target.indexOf(":") !== -1 || (/^xml$/i).test(node.target))) {
this.emit("error", new Error("Processing instruction target contains invalid characters (well-formed required)."));
return this;
}
if (this._options.wellFormed && !algorithm_1.xml_isLegalChar(node.data)) {
this.emit("error", Error("Processing instruction data contains invalid characters (well-formed required)."));
return this;
}
this._push(this._writer.instruction(node.target, node.data));
return this;
};
/** @inheritdoc */
XMLBuilderCBImpl.prototype.dat = function (content) {
this._serializeOpenTag(true);
var node;
try {
node = BuilderFunctions_1.fragment(this._builderOptions).dat(content).first().node;
}
catch (err) {
this.emit("error", err);
return this;
}
this._push(this._writer.cdata(node.data));
return this;
};
/** @inheritdoc */
XMLBuilderCBImpl.prototype.dec = function (options) {
if (options === void 0) { options = { version: "1.0" }; }
if (this._fragment) {
this.emit("error", Error("Cannot insert an XML declaration into a document fragment."));
return this;
}
if (this._hasDeclaration) {
this.emit("error", Error("XML declaration is already inserted."));
return this;
}
this._push(this._writer.declaration(options.version || "1.0", options.encoding, options.standalone));
this._hasDeclaration = true;
return this;
};
/** @inheritdoc */
XMLBuilderCBImpl.prototype.dtd = function (options) {
if (this._fragment) {
this.emit("error", Error("Cannot insert a DocType declaration into a document fragment."));
return this;
}
if (this._docTypeName !== "") {
this.emit("error", new Error("DocType declaration is already inserted."));
return this;
}
if (this._hasDocumentElement) {
this.emit("error", new Error("Cannot insert DocType declaration after document element."));
return this;
}
var node;
try {
node = BuilderFunctions_1.create().dtd(options).first().node;
}
catch (err) {
this.emit("error", err);
return this;
}
if (this._options.wellFormed && !algorithm_1.xml_isPubidChar(node.publicId)) {
this.emit("error", new Error("DocType public identifier does not match PubidChar construct (well-formed required)."));
return this;
}
if (this._options.wellFormed &&
(!algorithm_1.xml_isLegalChar(node.systemId) ||
(node.systemId.indexOf('"') !== -1 && node.systemId.indexOf("'") !== -1))) {
this.emit("error", new Error("DocType system identifier contains invalid characters (well-formed required)."));
return this;
}
this._docTypeName = options.name;
this._push(this._writer.docType(options.name, node.publicId, node.systemId));
return this;
};
/** @inheritdoc */
XMLBuilderCBImpl.prototype.up = function () {
this._serializeOpenTag(false);
this._serializeCloseTag();
return this;
};
/** @inheritdoc */
XMLBuilderCBImpl.prototype.end = function () {
this._serializeOpenTag(false);
while (this._openTags.length > 0) {
this._serializeCloseTag();
}
this._push(null);
return this;
};
/**
* Serializes the opening tag of an element node.
*
* @param hasChildren - whether the element node has child nodes
*/
XMLBuilderCBImpl.prototype._serializeOpenTag = function (hasChildren) {
if (this._currentElementSerialized)
return;
if (this._currentElement === undefined)
return;
var node = this._currentElement.node;
if (this._options.wellFormed && (node.localName.indexOf(":") !== -1 ||
!algorithm_1.xml_isName(node.localName))) {
this.emit("error", new Error("Node local name contains invalid characters (well-formed required)."));
return;
}
var qualifiedName = "";
var ignoreNamespaceDefinitionAttribute = false;
var map = this._prefixMap.copy();
var localPrefixesMap = {};
var localDefaultNamespace = this._recordNamespaceInformation(node, map, localPrefixesMap);
var inheritedNS = this._openTags.length === 0 ? null : this._openTags[this._openTags.length - 1][1];
var ns = node.namespaceURI;
if (ns === null)
ns = inheritedNS;
if (inheritedNS === ns) {
if (localDefaultNamespace !== null) {
ignoreNamespaceDefinitionAttribute = true;
}
if (ns === infra_1.namespace.XML) {
qualifiedName = "xml:" + node.localName;
}
else {
qualifiedName = node.localName;
}
this._writer.beginElement(qualifiedName);
this._push(this._writer.openTagBegin(qualifiedName));
}
else {
var prefix = node.prefix;
var candidatePrefix = null;
if (prefix !== null || ns !== localDefaultNamespace) {
candidatePrefix = map.get(prefix, ns);
}
if (prefix === "xmlns") {
if (this._options.wellFormed) {
this.emit("error", new Error("An element cannot have the 'xmlns' prefix (well-formed required)."));
return;
}
candidatePrefix = prefix;
}
if (candidatePrefix !== null) {
qualifiedName = candidatePrefix + ':' + node.localName;
if (localDefaultNamespace !== null && localDefaultNamespace !== infra_1.namespace.XML) {
inheritedNS = localDefaultNamespace || null;
}
this._writer.beginElement(qualifiedName);
this._push(this._writer.openTagBegin(qualifiedName));
}
else if (prefix !== null) {
if (prefix in localPrefixesMap) {
prefix = this._generatePrefix(ns, map, this._prefixIndex);
}
map.set(prefix, ns);
qualifiedName += prefix + ':' + node.localName;
this._writer.beginElement(qualifiedName);
this._push(this._writer.openTagBegin(qualifiedName));
this._push(this._writer.attribute("xmlns:" + prefix, this._serializeAttributeValue(ns, this._options.wellFormed)));
if (localDefaultNamespace !== null) {
inheritedNS = localDefaultNamespace || null;
}
}
else if (localDefaultNamespace === null ||
(localDefaultNamespace !== null && localDefaultNamespace !== ns)) {
ignoreNamespaceDefinitionAttribute = true;
qualifiedName += node.localName;
inheritedNS = ns;
this._writer.beginElement(qualifiedName);
this._push(this._writer.openTagBegin(qualifiedName));
this._push(this._writer.attribute("xmlns", this._serializeAttributeValue(ns, this._options.wellFormed)));
}
else {
qualifiedName += node.localName;
inheritedNS = ns;
this._writer.beginElement(qualifiedName);
this._push(this._writer.openTagBegin(qualifiedName));
}
}
this._serializeAttributes(node, map, this._prefixIndex, localPrefixesMap, ignoreNamespaceDefinitionAttribute, this._options.wellFormed);
var isHTML = (ns === infra_1.namespace.HTML);
if (isHTML && !hasChildren &&
XMLBuilderCBImpl._VoidElementNames.has(node.localName)) {
this._push(this._writer.openTagEnd(qualifiedName, true, true));
this._writer.endElement(qualifiedName);
}
else if (!isHTML && !hasChildren) {
this._push(this._writer.openTagEnd(qualifiedName, true, false));
this._writer.endElement(qualifiedName);
}
else {
this._push(this._writer.openTagEnd(qualifiedName, false, false));
}
this._currentElementSerialized = true;
/**
* Save qualified name, original inherited ns, original prefix map, and
* hasChildren flag.
*/
this._openTags.push([qualifiedName, inheritedNS, this._prefixMap, hasChildren]);
/**
* New values of inherited namespace and prefix map will be used while
* serializing child nodes. They will be returned to their original values
* when this node is closed using the _openTags array item we saved above.
*/
if (this._isPrefixMapModified(this._prefixMap, map)) {
this._prefixMap = map;
}
/**
* Calls following this will either serialize child nodes or close this tag.
*/
this._writer.level++;
};
/**
* Serializes the closing tag of an element node.
*/
XMLBuilderCBImpl.prototype._serializeCloseTag = function () {
this._writer.level--;
var lastEle = this._openTags.pop();
/* istanbul ignore next */
if (lastEle === undefined) {
this.emit("error", new Error("Last element is undefined."));
return;
}
var _a = __read(lastEle, 4), qualifiedName = _a[0], ns = _a[1], map = _a[2], hasChildren = _a[3];
/**
* Restore original values of inherited namespace and prefix map.
*/
this._prefixMap = map;
if (!hasChildren)
return;
this._push(this._writer.closeTag(qualifiedName));
this._writer.endElement(qualifiedName);
};
/**
* Pushes data to internal buffer.
*
* @param data - data
*/
XMLBuilderCBImpl.prototype._push = function (data) {
if (data === null) {
this._ended = true;
this.emit("end");
}
else if (this._ended) {
this.emit("error", new Error("Cannot push to ended stream."));
}
else if (data.length !== 0) {
this._writer.hasData = true;
this.emit("data", data, this._writer.level);
}
};
/**
* Reads and serializes an XML tree.
*
* @param node - root node
*/
XMLBuilderCBImpl.prototype._fromNode = function (node) {
var e_2, _a, e_3, _b;
if (util_2.Guard.isElementNode(node)) {
var name = node.prefix ? node.prefix + ":" + node.localName : node.localName;
if (node.namespaceURI !== null) {
this.ele(node.namespaceURI, name);
}
else {
this.ele(name);
}
try {
for (var _c = __values(node.attributes), _d = _c.next(); !_d.done; _d = _c.next()) {
var attr = _d.value;
var name_1 = attr.prefix ? attr.prefix + ":" + attr.localName : attr.localName;
if (attr.namespaceURI !== null) {
this.att(attr.namespaceURI, name_1, attr.value);
}
else {
this.att(name_1, attr.value);
}
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
}
finally { if (e_2) throw e_2.error; }
}
try {
for (var _e = __values(node.childNodes), _f = _e.next(); !_f.done; _f = _e.next()) {
var child = _f.value;
this._fromNode(child);
}
}
catch (e_3_1) { e_3 = { error: e_3_1 }; }
finally {
try {
if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
}
finally { if (e_3) throw e_3.error; }
}
this.up();
}
else if (util_2.Guard.isExclusiveTextNode(node) && node.data) {
this.txt(node.data);
}
else if (util_2.Guard.isCommentNode(node)) {
this.com(node.data);
}
else if (util_2.Guard.isCDATASectionNode(node)) {
this.dat(node.data);
}
else if (util_2.Guard.isProcessingInstructionNode(node)) {
this.ins(node.target, node.data);
}
};
/**
* Produces an XML serialization of the attributes of an element node.
*
* @param node - node to serialize
* @param map - namespace prefix map
* @param prefixIndex - generated namespace prefix index
* @param localPrefixesMap - local prefixes map
* @param ignoreNamespaceDefinitionAttribute - whether to ignore namespace
* attributes
* @param requireWellFormed - whether to check conformance
*/
XMLBuilderCBImpl.prototype._serializeAttributes = function (node, map, prefixIndex, localPrefixesMap, ignoreNamespaceDefinitionAttribute, requireWellFormed) {
var e_4, _a;
var localNameSet = requireWellFormed ? new LocalNameSet_1.LocalNameSet() : undefined;
try {
for (var _b = __values(node.attributes), _c = _b.next(); !_c.done; _c = _b.next()) {
var attr = _c.value;
// Optimize common case
if (!requireWellFormed && !ignoreNamespaceDefinitionAttribute && attr.namespaceURI === null) {
this._push(this._writer.attribute(attr.localName, this._serializeAttributeValue(attr.value, this._options.wellFormed)));
continue;
}
if (requireWellFormed && localNameSet && localNameSet.has(attr.namespaceURI, attr.localName)) {
this.emit("error", new Error("Element contains duplicate attributes (well-formed required)."));
return;
}
if (requireWellFormed && localNameSet)
localNameSet.set(attr.namespaceURI, attr.localName);
var attributeNamespace = attr.namespaceURI;
var candidatePrefix = null;
if (attributeNamespace !== null) {
candidatePrefix = map.get(attr.prefix, attributeNamespace);
if (attributeNamespace === infra_1.namespace.XMLNS) {
if (attr.value === infra_1.namespace.XML ||
(attr.prefix === null && ignoreNamespaceDefinitionAttribute) ||
(attr.prefix !== null && (!(attr.localName in localPrefixesMap) ||
localPrefixesMap[attr.localName] !== attr.value) &&
map.has(attr.localName, attr.value)))
continue;
if (requireWellFormed && attr.value === infra_1.namespace.XMLNS) {
this.emit("error", new Error("XMLNS namespace is reserved (well-formed required)."));
return;
}
if (requireWellFormed && attr.value === '') {
this.emit("error", new Error("Namespace prefix declarations cannot be used to undeclare a namespace (well-formed required)."));
return;
}
if (attr.prefix === 'xmlns')
candidatePrefix = 'xmlns';
/**
* _Note:_ The (candidatePrefix === null) check is not in the spec.
* We deviate from the spec here. Otherwise a prefix is generated for
* all attributes with namespaces.
*/
}
else if (candidatePrefix === null) {
if (attr.prefix !== null &&
(!map.hasPrefix(attr.prefix) ||
map.has(attr.prefix, attributeNamespace))) {
/**
* Check if we can use the attribute's own prefix.
* We deviate from the spec here.
* TODO: This is not an efficient way of searching for prefixes.
* Follow developments to the spec.
*/
candidatePrefix = attr.prefix;
}
else {
candidatePrefix = this._generatePrefix(attributeNamespace, map, prefixIndex);
}
this._push(this._writer.attribute("xmlns:" + candidatePrefix, this._serializeAttributeValue(attributeNamespace, this._options.wellFormed)));
}
}
if (requireWellFormed && (attr.localName.indexOf(":") !== -1 ||
!algorithm_1.xml_isName(attr.localName) ||
(attr.localName === "xmlns" && attributeNamespace === null))) {
this.emit("error", new Error("Attribute local name contains invalid characters (well-formed required)."));
return;
}
this._push(this._writer.attribute((candidatePrefix !== null ? candidatePrefix + ":" : "") + attr.localName, this._serializeAttributeValue(attr.value, this._options.wellFormed)));
}
}
catch (e_4_1) { e_4 = { error: e_4_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_4) throw e_4.error; }
}
};
/**
* Produces an XML serialization of an attribute value.
*
* @param value - attribute value
* @param requireWellFormed - whether to check conformance
*/
XMLBuilderCBImpl.prototype._serializeAttributeValue = function (value, requireWellFormed) {
if (requireWellFormed && value !== null && !algorithm_1.xml_isLegalChar(value)) {
this.emit("error", new Error("Invalid characters in attribute value."));
return "";
}
if (value === null)
return "";
if (this._options.noDoubleEncoding) {
return value.replace(/(?!&(lt|gt|amp|apos|quot);)&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;');
}
else {
var result = "";
for (var i = 0; i < value.length; i++) {
var c = value[i];
if (c === "\"")
result += "&quot;";
else if (c === "&")
result += "&amp;";
else if (c === "<")
result += "&lt;";
else if (c === ">")
result += "&gt;";
else
result += c;
}
return result;
}
};
/**
* Records namespace information for the given element and returns the
* default namespace attribute value.
*
* @param node - element node to process
* @param map - namespace prefix map
* @param localPrefixesMap - local prefixes map
*/
XMLBuilderCBImpl.prototype._recordNamespaceInformation = function (node, map, localPrefixesMap) {
var e_5, _a;
var defaultNamespaceAttrValue = null;
try {
for (var _b = __values(node.attributes), _c = _b.next(); !_c.done; _c = _b.next()) {
var attr = _c.value;
var attributeNamespace = attr.namespaceURI;
var attributePrefix = attr.prefix;
if (attributeNamespace === infra_1.namespace.XMLNS) {
if (attributePrefix === null) {
defaultNamespaceAttrValue = attr.value;
continue;
}
else {
var prefixDefinition = attr.localName;
var namespaceDefinition = attr.value;
if (namespaceDefinition === infra_1.namespace.XML) {
continue;
}
if (namespaceDefinition === '') {
namespaceDefinition = null;
}
if (map.has(prefixDefinition, namespaceDefinition)) {
continue;
}
map.set(prefixDefinition, namespaceDefinition);
localPrefixesMap[prefixDefinition] = namespaceDefinition || '';
}
}
}
}
catch (e_5_1) { e_5 = { error: e_5_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_5) throw e_5.error; }
}
return defaultNamespaceAttrValue;
};
/**
* Generates a new prefix for the given namespace.
*
* @param newNamespace - a namespace to generate prefix for
* @param prefixMap - namespace prefix map
* @param prefixIndex - generated namespace prefix index
*/
XMLBuilderCBImpl.prototype._generatePrefix = function (newNamespace, prefixMap, prefixIndex) {
var generatedPrefix = "ns" + prefixIndex.value;
prefixIndex.value++;
prefixMap.set(generatedPrefix, newNamespace);
return generatedPrefix;
};
/**
* Determines if the namespace prefix map was modified from its original.
*
* @param originalMap - original namespace prefix map
* @param newMap - new namespace prefix map
*/
XMLBuilderCBImpl.prototype._isPrefixMapModified = function (originalMap, newMap) {
var items1 = originalMap._items;
var items2 = newMap._items;
var nullItems1 = originalMap._nullItems;
var nullItems2 = newMap._nullItems;
for (var key in items2) {
var arr1 = items1[key];
if (arr1 === undefined)
return true;
var arr2 = items2[key];
if (arr1.length !== arr2.length)
return true;
for (var i = 0; i < arr1.length; i++) {
if (arr1[i] !== arr2[i])
return true;
}
}
if (nullItems1.length !== nullItems2.length)
return true;
for (var i = 0; i < nullItems1.length; i++) {
if (nullItems1[i] !== nullItems2[i])
return true;
}
return false;
};
XMLBuilderCBImpl._VoidElementNames = new Set(['area', 'base', 'basefont',
'bgsound', 'br', 'col', 'embed', 'frame', 'hr', 'img', 'input', 'keygen',
'link', 'menuitem', 'meta', 'param', 'source', 'track', 'wbr']);
return XMLBuilderCBImpl;
}(events_1.EventEmitter));
exports.XMLBuilderCBImpl = XMLBuilderCBImpl;
//# sourceMappingURL=XMLBuilderCBImpl.js.map
/***/ }),
/* 552 */,
/* 553 */,
/* 554 */,
/* 555 */,
/* 556 */
/***/ (function(module) {
"use strict";
// YAML error class. http://stackoverflow.com/questions/8458984
//
function YAMLException(reason, mark) {
// Super constructor
Error.call(this);
this.name = 'YAMLException';
this.reason = reason;
this.mark = mark;
this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');
// Include stack trace in error object
if (Error.captureStackTrace) {
// Chrome and NodeJS
Error.captureStackTrace(this, this.constructor);
} else {
// FF, IE 10+ and Safari 6+. Fallback for others
this.stack = (new Error()).stack || '';
}
}
// Inherit from Error
YAMLException.prototype = Object.create(Error.prototype);
YAMLException.prototype.constructor = YAMLException;
YAMLException.prototype.toString = function toString(compact) {
var result = this.name + ': ';
result += this.reason || '(unknown reason)';
if (!compact && this.mark) {
result += ' ' + this.mark.toString();
}
return result;
};
module.exports = YAMLException;
/***/ }),
/* 557 */,
/* 558 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var interfaces_1 = __webpack_require__(970);
var NodeImpl_1 = __webpack_require__(935);
var WebIDLAlgorithm_1 = __webpack_require__(495);
/**
* Represents an object providing methods which are not dependent on
* any particular document
*/
var DocumentTypeImpl = /** @class */ (function (_super) {
__extends(DocumentTypeImpl, _super);
/**
* Initializes a new instance of `DocumentType`.
*
* @param name - name of the node
* @param publicId - `PUBLIC` identifier
* @param systemId - `SYSTEM` identifier
*/
function DocumentTypeImpl(name, publicId, systemId) {
var _this = _super.call(this) || this;
_this._name = '';
_this._publicId = '';
_this._systemId = '';
_this._name = name;
_this._publicId = publicId;
_this._systemId = systemId;
return _this;
}
Object.defineProperty(DocumentTypeImpl.prototype, "name", {
/** @inheritdoc */
get: function () { return this._name; },
enumerable: true,
configurable: true
});
Object.defineProperty(DocumentTypeImpl.prototype, "publicId", {
/** @inheritdoc */
get: function () { return this._publicId; },
enumerable: true,
configurable: true
});
Object.defineProperty(DocumentTypeImpl.prototype, "systemId", {
/** @inheritdoc */
get: function () { return this._systemId; },
enumerable: true,
configurable: true
});
// MIXIN: ChildNode
/* istanbul ignore next */
DocumentTypeImpl.prototype.before = function () {
var nodes = [];
for (var _i = 0; _i < arguments.length; _i++) {
nodes[_i] = arguments[_i];
}
throw new Error("Mixin: ChildNode not implemented.");
};
/* istanbul ignore next */
DocumentTypeImpl.prototype.after = function () {
var nodes = [];
for (var _i = 0; _i < arguments.length; _i++) {
nodes[_i] = arguments[_i];
}
throw new Error("Mixin: ChildNode not implemented.");
};
/* istanbul ignore next */
DocumentTypeImpl.prototype.replaceWith = function () {
var nodes = [];
for (var _i = 0; _i < arguments.length; _i++) {
nodes[_i] = arguments[_i];
}
throw new Error("Mixin: ChildNode not implemented.");
};
/* istanbul ignore next */
DocumentTypeImpl.prototype.remove = function () { throw new Error("Mixin: ChildNode not implemented."); };
/**
* Creates a new `DocumentType`.
*
* @param document - owner document
* @param name - name of the node
* @param publicId - `PUBLIC` identifier
* @param systemId - `SYSTEM` identifier
*/
DocumentTypeImpl._create = function (document, name, publicId, systemId) {
if (publicId === void 0) { publicId = ''; }
if (systemId === void 0) { systemId = ''; }
var node = new DocumentTypeImpl(name, publicId, systemId);
node._nodeDocument = document;
return node;
};
return DocumentTypeImpl;
}(NodeImpl_1.NodeImpl));
exports.DocumentTypeImpl = DocumentTypeImpl;
/**
* Initialize prototype properties
*/
WebIDLAlgorithm_1.idl_defineConst(DocumentTypeImpl.prototype, "_nodeType", interfaces_1.NodeType.DocumentType);
//# sourceMappingURL=DocumentTypeImpl.js.map
/***/ }),
/* 559 */,
/* 560 */,
/* 561 */,
/* 562 */,
/* 563 */,
/* 564 */,
/* 565 */,
/* 566 */,
/* 567 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var XMLReader_1 = __webpack_require__(771);
exports.XMLReader = XMLReader_1.XMLReader;
var ObjectReader_1 = __webpack_require__(50);
exports.ObjectReader = ObjectReader_1.ObjectReader;
var JSONReader_1 = __webpack_require__(112);
exports.JSONReader = JSONReader_1.JSONReader;
var YAMLReader_1 = __webpack_require__(865);
exports.YAMLReader = YAMLReader_1.YAMLReader;
//# sourceMappingURL=index.js.map
/***/ }),
/* 568 */,
/* 569 */,
/* 570 */,
/* 571 */,
/* 572 */,
/* 573 */,
/* 574 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var util_1 = __webpack_require__(918);
var algorithm_1 = __webpack_require__(163);
/**
* Represents a mixin that extends non-element parent nodes. This mixin
* is implemented by {@link Document} and {@link DocumentFragment}.
*/
var NonElementParentNodeImpl = /** @class */ (function () {
function NonElementParentNodeImpl() {
}
/** @inheritdoc */
NonElementParentNodeImpl.prototype.getElementById = function (id) {
/**
* The getElementById(elementId) method, when invoked, must return the first
* element, in tree order, within the context objects descendants,
* whose ID is elementId, and null if there is no such element otherwise.
*/
var ele = algorithm_1.tree_getFirstDescendantNode(util_1.Cast.asNode(this), false, false, function (e) { return util_1.Guard.isElementNode(e); });
while (ele !== null) {
if (ele._uniqueIdentifier === id) {
return ele;
}
ele = algorithm_1.tree_getNextDescendantNode(util_1.Cast.asNode(this), ele, false, false, function (e) { return util_1.Guard.isElementNode(e); });
}
return null;
};
return NonElementParentNodeImpl;
}());
exports.NonElementParentNodeImpl = NonElementParentNodeImpl;
//# sourceMappingURL=NonElementParentNodeImpl.js.map
/***/ }),
/* 575 */
/***/ (function(__unusedmodule, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Represents a set of unique attribute namespaceURI and localName pairs.
* This set will contain tuples of unique attribute namespaceURI and
* localName pairs, and is populated as each attr is processed. This set is
* used to [optionally] enforce the well-formed constraint that an element
* cannot have two attributes with the same namespaceURI and localName.
* This can occur when two otherwise identical attributes on the same
* element differ only by their prefix values.
*/
var LocalNameSet = /** @class */ (function () {
function LocalNameSet() {
// tuple storage
this._items = {};
this._nullItems = {};
}
/**
* Adds or replaces a tuple.
*
* @param ns - namespace URI
* @param localName - attribute local name
*/
LocalNameSet.prototype.set = function (ns, localName) {
if (ns === null) {
this._nullItems[localName] = true;
}
else if (this._items[ns]) {
this._items[ns][localName] = true;
}
else {
this._items[ns] = {};
this._items[ns][localName] = true;
}
};
/**
* Determines if the given tuple exists in the set.
*
* @param ns - namespace URI
* @param localName - attribute local name
*/
LocalNameSet.prototype.has = function (ns, localName) {
if (ns === null) {
return this._nullItems[localName] === true;
}
else if (this._items[ns]) {
return this._items[ns][localName] === true;
}
else {
return false;
}
};
return LocalNameSet;
}());
exports.LocalNameSet = LocalNameSet;
//# sourceMappingURL=LocalNameSet.js.map
/***/ }),
/* 576 */,
/* 577 */,
/* 578 */,
/* 579 */,
/* 580 */,
/* 581 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var DocumentFragmentImpl_1 = __webpack_require__(796);
var util_1 = __webpack_require__(592);
var algorithm_1 = __webpack_require__(163);
/**
* Represents a shadow root.
*/
var ShadowRootImpl = /** @class */ (function (_super) {
__extends(ShadowRootImpl, _super);
/**
* Initializes a new instance of `ShadowRoot`.
*
* @param host - shadow root's host element
* @param mode - shadow root's mode
*/
function ShadowRootImpl(host, mode) {
var _this = _super.call(this) || this;
_this._host = host;
_this._mode = mode;
return _this;
}
Object.defineProperty(ShadowRootImpl.prototype, "mode", {
/** @inheritdoc */
get: function () { return this._mode; },
enumerable: true,
configurable: true
});
Object.defineProperty(ShadowRootImpl.prototype, "host", {
/** @inheritdoc */
get: function () { return this._host; },
enumerable: true,
configurable: true
});
/**
* Gets the parent event target for the given event.
*
* @param event - an event
*/
ShadowRootImpl.prototype._getTheParent = function (event) {
/**
* A shadow roots get the parent algorithm, given an event, returns null
* if events composed flag is unset and shadow root is the root of
* events paths first structs invocation target, and shadow roots host
* otherwise.
*/
if (!event._composedFlag && !util_1.isEmpty(event._path) &&
algorithm_1.tree_rootNode(event._path[0].invocationTarget) === this) {
return null;
}
else {
return this._host;
}
};
// MIXIN: DocumentOrShadowRoot
// No elements
/**
* Creates a new `ShadowRoot`.
*
* @param document - owner document
* @param host - shadow root's host element
*/
ShadowRootImpl._create = function (document, host) {
return new ShadowRootImpl(host, "closed");
};
return ShadowRootImpl;
}(DocumentFragmentImpl_1.DocumentFragmentImpl));
exports.ShadowRootImpl = ShadowRootImpl;
//# sourceMappingURL=ShadowRootImpl.js.map
/***/ }),
/* 582 */,
/* 583 */,
/* 584 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AdoptDistribution = exports.AdoptImplementation = void 0;
const core = __importStar(__webpack_require__(470));
const tc = __importStar(__webpack_require__(139));
const fs_1 = __importDefault(__webpack_require__(747));
const path_1 = __importDefault(__webpack_require__(622));
const semver_1 = __importDefault(__webpack_require__(876));
const base_installer_1 = __webpack_require__(83);
const util_1 = __webpack_require__(322);
var AdoptImplementation;
(function (AdoptImplementation) {
AdoptImplementation["Hotspot"] = "Hotspot";
AdoptImplementation["OpenJ9"] = "OpenJ9";
})(AdoptImplementation = exports.AdoptImplementation || (exports.AdoptImplementation = {}));
class AdoptDistribution extends base_installer_1.JavaBase {
constructor(installerOptions, jvmImpl) {
super(`Adopt-${jvmImpl}`, installerOptions);
this.jvmImpl = jvmImpl;
}
findPackageForDownload(version) {
return __awaiter(this, void 0, void 0, function* () {
const availableVersionsRaw = yield this.getAvailableVersions();
const availableVersionsWithBinaries = availableVersionsRaw
.filter(item => item.binaries.length > 0)
.map(item => {
return {
version: item.version_data.semver,
url: item.binaries[0].package.link
};
});
const satisfiedVersions = availableVersionsWithBinaries
.filter(item => util_1.isVersionSatisfies(version, item.version))
.sort((a, b) => {
return -semver_1.default.compareBuild(a.version, b.version);
});
const resolvedFullVersion = satisfiedVersions.length > 0 ? satisfiedVersions[0] : null;
if (!resolvedFullVersion) {
const availableOptions = availableVersionsWithBinaries.map(item => item.version).join(', ');
const availableOptionsMessage = availableOptions
? `\nAvailable versions: ${availableOptions}`
: '';
throw new Error(`Could not find satisfied version for SemVer '${version}'. ${availableOptionsMessage}`);
}
return resolvedFullVersion;
});
}
downloadTool(javaRelease) {
return __awaiter(this, void 0, void 0, function* () {
let javaPath;
let extractedJavaPath;
core.info(`Downloading Java ${javaRelease.version} (${this.distribution}) from ${javaRelease.url} ...`);
const javaArchivePath = yield tc.downloadTool(javaRelease.url);
core.info(`Extracting Java archive...`);
let extension = util_1.getDownloadArchiveExtension();
extractedJavaPath = yield util_1.extractJdkFile(javaArchivePath, extension);
const archiveName = fs_1.default.readdirSync(extractedJavaPath)[0];
const archivePath = path_1.default.join(extractedJavaPath, archiveName);
const version = this.getToolcacheVersionName(javaRelease.version);
javaPath = yield tc.cacheDir(archivePath, this.toolcacheFolderName, version, this.architecture);
return { version: javaRelease.version, path: javaPath };
});
}
get toolcacheFolderName() {
if (this.jvmImpl === AdoptImplementation.Hotspot) {
// exclude Hotspot postfix from distribution name because Hosted runners have pre-cached Adopt OpenJDK under "Java_Adopt_jdk"
// for more information see: https://github.com/actions/setup-java/pull/155#discussion_r610451063
return `Java_Adopt_${this.packageType}`;
}
return super.toolcacheFolderName;
}
getAvailableVersions() {
return __awaiter(this, void 0, void 0, function* () {
const platform = this.getPlatformOption();
const arch = this.architecture;
const imageType = this.packageType;
const versionRange = encodeURI('[1.0,100.0]'); // retrieve all available versions
const releaseType = this.stable ? 'ga' : 'ea';
console.time('adopt-retrieve-available-versions');
const baseRequestArguments = [
`project=jdk`,
'vendor=adoptopenjdk',
`heap_size=normal`,
'sort_method=DEFAULT',
'sort_order=DESC',
`os=${platform}`,
`architecture=${arch}`,
`image_type=${imageType}`,
`release_type=${releaseType}`,
`jvm_impl=${this.jvmImpl.toLowerCase()}`
].join('&');
// need to iterate through all pages to retrieve the list of all versions
// Adopt API doesn't provide way to retrieve the count of pages to iterate so infinity loop
let page_index = 0;
const availableVersions = [];
while (true) {
const requestArguments = `${baseRequestArguments}&page_size=20&page=${page_index}`;
const availableVersionsUrl = `https://api.adoptopenjdk.net/v3/assets/version/${versionRange}?${requestArguments}`;
if (core.isDebug() && page_index === 0) {
// url is identical except page_index so print it once for debug
core.debug(`Gathering available versions from '${availableVersionsUrl}'`);
}
const paginationPage = (yield this.http.getJson(availableVersionsUrl)).result;
if (paginationPage === null || paginationPage.length === 0) {
// break infinity loop because we have reached end of pagination
break;
}
availableVersions.push(...paginationPage);
page_index++;
}
if (core.isDebug()) {
core.startGroup('Print information about available versions');
console.timeEnd('adopt-retrieve-available-versions');
console.log(`Available versions: [${availableVersions.length}]`);
console.log(availableVersions.map(item => item.version_data.semver).join(', '));
core.endGroup();
}
return availableVersions;
});
}
getPlatformOption() {
// Adopt has own platform names so need to map them
switch (process.platform) {
case 'darwin':
return 'mac';
case 'win32':
return 'windows';
default:
return process.platform;
}
}
}
exports.AdoptDistribution = AdoptDistribution;
/***/ }),
/* 585 */,
/* 586 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const compare = __webpack_require__(874)
const lt = (a, b, loose) => compare(a, b, loose) < 0
module.exports = lt
/***/ }),
/* 587 */,
/* 588 */,
/* 589 */,
/* 590 */,
/* 591 */,
/* 592 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
var FixedSizeSet_1 = __webpack_require__(704);
exports.FixedSizeSet = FixedSizeSet_1.FixedSizeSet;
var ObjectCache_1 = __webpack_require__(889);
exports.ObjectCache = ObjectCache_1.ObjectCache;
var CompareCache_1 = __webpack_require__(524);
exports.CompareCache = CompareCache_1.CompareCache;
var Lazy_1 = __webpack_require__(947);
exports.Lazy = Lazy_1.Lazy;
var StringWalker_1 = __webpack_require__(47);
exports.StringWalker = StringWalker_1.StringWalker;
/**
* Applies the mixin to a given class.
*
* @param baseClass - class to receive the mixin
* @param mixinClass - mixin class
* @param overrides - an array with names of function overrides. Base class
* functions whose names are in this array will be kept by prepending an
* underscore to their names.
*/
function applyMixin(baseClass, mixinClass) {
var overrides = [];
for (var _i = 2; _i < arguments.length; _i++) {
overrides[_i - 2] = arguments[_i];
}
Object.getOwnPropertyNames(mixinClass.prototype).forEach(function (name) {
if (name !== "constructor") {
if (overrides.indexOf(name) !== -1) {
var orgPropDesc = Object.getOwnPropertyDescriptor(baseClass.prototype, name);
/* istanbul ignore else */
if (orgPropDesc) {
Object.defineProperty(baseClass.prototype, "_" + name, orgPropDesc);
}
}
var propDesc = Object.getOwnPropertyDescriptor(mixinClass.prototype, name);
/* istanbul ignore else */
if (propDesc) {
Object.defineProperty(baseClass.prototype, name, propDesc);
}
}
});
}
exports.applyMixin = applyMixin;
/**
* Applies default values to the given object.
*
* @param obj - an object
* @param defaults - an object with default values
* @param overwrite - if set to `true` defaults object always overwrites object
* values, whether they are `undefined` or not.
*/
function applyDefaults(obj, defaults, overwrite) {
if (overwrite === void 0) { overwrite = false; }
var result = clone(obj || {});
forEachObject(defaults, function (key, val) {
if (isPlainObject(val)) {
result[key] = applyDefaults(result[key], val, overwrite);
}
else if (overwrite || result[key] === undefined) {
result[key] = val;
}
});
return result;
}
exports.applyDefaults = applyDefaults;
/**
* Iterates over items of an array or set.
*
* @param arr - array or set to iterate
* @param callback - a callback function which receives each array item as its
* single argument
* @param thisArg - the value of this inside callback
*/
function forEachArray(arr, callback, thisArg) {
arr.forEach(callback, thisArg);
}
exports.forEachArray = forEachArray;
/**
* Iterates over key/value pairs of a map or object.
*
* @param obj - map or object to iterate
* @param callback - a callback function which receives object key as its first
* argument and object value as its second argument
* @param thisArg - the value of this inside callback
*/
function forEachObject(obj, callback, thisArg) {
if (isMap(obj)) {
obj.forEach(function (value, key) { return callback.call(thisArg, key, value); });
}
else {
for (var key in obj) {
/* istanbul ignore else */
if (obj.hasOwnProperty(key)) {
callback.call(thisArg, key, obj[key]);
}
}
}
}
exports.forEachObject = forEachObject;
/**
* Returns the number of entries in an array or set.
*
* @param arr - array or set
*/
function arrayLength(obj) {
if (isSet(obj)) {
return obj.size;
}
else {
return obj.length;
}
}
exports.arrayLength = arrayLength;
/**
* Returns the number of entries in a map or object.
*
* @param obj - map or object
*/
function objectLength(obj) {
if (isMap(obj)) {
return obj.size;
}
else {
return Object.keys(obj).length;
}
}
exports.objectLength = objectLength;
/**
* Gets the value of a key from a map or object.
*
* @param obj - map or object
* @param key - the key to retrieve
*/
function getObjectValue(obj, key) {
if (isMap(obj)) {
return obj.get(key);
}
else {
return obj[key];
}
}
exports.getObjectValue = getObjectValue;
/**
* Removes a property from a map or object.
*
* @param obj - map or object
* @param key - the key to remove
*/
function removeObjectValue(obj, key) {
if (isMap(obj)) {
obj.delete(key);
}
else {
delete obj[key];
}
}
exports.removeObjectValue = removeObjectValue;
/**
* Deep clones the given object.
*
* @param obj - an object
*/
function clone(obj) {
var e_1, _a;
if (isFunction(obj)) {
return obj;
}
else if (isArray(obj)) {
var result = [];
try {
for (var obj_1 = __values(obj), obj_1_1 = obj_1.next(); !obj_1_1.done; obj_1_1 = obj_1.next()) {
var item = obj_1_1.value;
result.push(clone(item));
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (obj_1_1 && !obj_1_1.done && (_a = obj_1.return)) _a.call(obj_1);
}
finally { if (e_1) throw e_1.error; }
}
return result;
}
else if (isObject(obj)) {
var result = {};
for (var key in obj) {
/* istanbul ignore next */
if (obj.hasOwnProperty(key)) {
var val = obj[key];
result[key] = clone(val);
}
}
return result;
}
else {
return obj;
}
}
exports.clone = clone;
/**
* Type guard for boolean types
*
* @param x - a variable to type check
*/
function isBoolean(x) {
return typeof x === "boolean";
}
exports.isBoolean = isBoolean;
/**
* Type guard for numeric types
*
* @param x - a variable to type check
*/
function isNumber(x) {
return typeof x === "number";
}
exports.isNumber = isNumber;
/**
* Type guard for strings
*
* @param x - a variable to type check
*/
function isString(x) {
return typeof x === "string";
}
exports.isString = isString;
/**
* Type guard for function objects
*
* @param x - a variable to type check
*/
function isFunction(x) {
return !!x && Object.prototype.toString.call(x) === '[object Function]';
}
exports.isFunction = isFunction;
/**
* Type guard for JS objects
*
* _Note:_ Functions are objects too
*
* @param x - a variable to type check
*/
function isObject(x) {
var type = typeof x;
return !!x && (type === 'function' || type === 'object');
}
exports.isObject = isObject;
/**
* Type guard for arrays
*
* @param x - a variable to type check
*/
function isArray(x) {
return Array.isArray(x);
}
exports.isArray = isArray;
/**
* Type guard for sets.
*
* @param x - a variable to check
*/
function isSet(x) {
return x instanceof Set;
}
exports.isSet = isSet;
/**
* Type guard for maps.
*
* @param x - a variable to check
*/
function isMap(x) {
return x instanceof Map;
}
exports.isMap = isMap;
/**
* Determines if `x` is an empty Array or an Object with no own properties.
*
* @param x - a variable to check
*/
function isEmpty(x) {
if (isArray(x)) {
return !x.length;
}
else if (isSet(x)) {
return !x.size;
}
else if (isMap(x)) {
return !x.size;
}
else if (isObject(x)) {
for (var key in x) {
if (x.hasOwnProperty(key)) {
return false;
}
}
return true;
}
return false;
}
exports.isEmpty = isEmpty;
/**
* Determines if `x` is a plain Object.
*
* @param x - a variable to check
*/
function isPlainObject(x) {
if (isObject(x)) {
var proto = Object.getPrototypeOf(x);
var ctor = proto.constructor;
return proto && ctor &&
(typeof ctor === 'function') && (ctor instanceof ctor) &&
(Function.prototype.toString.call(ctor) === Function.prototype.toString.call(Object));
}
return false;
}
exports.isPlainObject = isPlainObject;
/**
* Determines if `x` is an iterable Object.
*
* @param x - a variable to check
*/
function isIterable(x) {
return x && (typeof x[Symbol.iterator] === 'function');
}
exports.isIterable = isIterable;
/**
* Gets the primitive value of an object.
*/
function getValue(obj) {
if (isFunction(obj.valueOf)) {
return obj.valueOf();
}
else {
return obj;
}
}
exports.getValue = getValue;
/**
* UTF-8 encodes the given string.
*
* @param input - a string
*/
function utf8Encode(input) {
var bytes = new Uint8Array(input.length * 4);
var byteIndex = 0;
for (var i = 0; i < input.length; i++) {
var char = input.charCodeAt(i);
if (char < 128) {
bytes[byteIndex++] = char;
continue;
}
else if (char < 2048) {
bytes[byteIndex++] = char >> 6 | 192;
}
else {
if (char > 0xd7ff && char < 0xdc00) {
if (++i >= input.length) {
throw new Error("Incomplete surrogate pair.");
}
var c2 = input.charCodeAt(i);
if (c2 < 0xdc00 || c2 > 0xdfff) {
throw new Error("Invalid surrogate character.");
}
char = 0x10000 + ((char & 0x03ff) << 10) + (c2 & 0x03ff);
bytes[byteIndex++] = char >> 18 | 240;
bytes[byteIndex++] = char >> 12 & 63 | 128;
}
else {
bytes[byteIndex++] = char >> 12 | 224;
}
bytes[byteIndex++] = char >> 6 & 63 | 128;
}
bytes[byteIndex++] = char & 63 | 128;
}
return bytes.subarray(0, byteIndex);
}
exports.utf8Encode = utf8Encode;
/**
* UTF-8 decodes the given byte sequence into a string.
*
* @param bytes - a byte sequence
*/
function utf8Decode(bytes) {
var result = "";
var i = 0;
while (i < bytes.length) {
var c = bytes[i++];
if (c > 127) {
if (c > 191 && c < 224) {
if (i >= bytes.length) {
throw new Error("Incomplete 2-byte sequence.");
}
c = (c & 31) << 6 | bytes[i++] & 63;
}
else if (c > 223 && c < 240) {
if (i + 1 >= bytes.length) {
throw new Error("Incomplete 3-byte sequence.");
}
c = (c & 15) << 12 | (bytes[i++] & 63) << 6 | bytes[i++] & 63;
}
else if (c > 239 && c < 248) {
if (i + 2 >= bytes.length) {
throw new Error("Incomplete 4-byte sequence.");
}
c = (c & 7) << 18 | (bytes[i++] & 63) << 12 | (bytes[i++] & 63) << 6 | bytes[i++] & 63;
}
else {
throw new Error("Unknown multi-byte start.");
}
}
if (c <= 0xffff) {
result += String.fromCharCode(c);
}
else if (c <= 0x10ffff) {
c -= 0x10000;
result += String.fromCharCode(c >> 10 | 0xd800);
result += String.fromCharCode(c & 0x3FF | 0xdc00);
}
else {
throw new Error("Code point exceeds UTF-16 limit.");
}
}
return result;
}
exports.utf8Decode = utf8Decode;
//# sourceMappingURL=index.js.map
/***/ }),
/* 593 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const compareBuild = __webpack_require__(16)
const rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))
module.exports = rsort
/***/ }),
/* 594 */,
/* 595 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
var interfaces_1 = __webpack_require__(625);
var util_1 = __webpack_require__(592);
var writers_1 = __webpack_require__(95);
var interfaces_2 = __webpack_require__(970);
var util_2 = __webpack_require__(918);
var algorithm_1 = __webpack_require__(163);
var dom_1 = __webpack_require__(743);
var infra_1 = __webpack_require__(23);
var readers_1 = __webpack_require__(567);
/**
* Represents a wrapper that extends XML nodes to implement easy to use and
* chainable document builder methods.
*/
var XMLBuilderImpl = /** @class */ (function () {
/**
* Initializes a new instance of `XMLBuilderNodeImpl`.
*
* @param domNode - the DOM node to wrap
*/
function XMLBuilderImpl(domNode) {
this._domNode = domNode;
}
Object.defineProperty(XMLBuilderImpl.prototype, "node", {
/** @inheritdoc */
get: function () { return this._domNode; },
enumerable: true,
configurable: true
});
Object.defineProperty(XMLBuilderImpl.prototype, "options", {
/** @inheritdoc */
get: function () { return this._options; },
enumerable: true,
configurable: true
});
/** @inheritdoc */
XMLBuilderImpl.prototype.set = function (options) {
this._options = util_1.applyDefaults(util_1.applyDefaults(this._options, options, true), // apply user settings
interfaces_1.DefaultBuilderOptions); // provide defaults
return this;
};
/** @inheritdoc */
XMLBuilderImpl.prototype.ele = function (p1, p2, p3) {
var _a, _b, _c;
var namespace;
var name;
var attributes;
if (util_1.isObject(p1)) {
// ele(obj: ExpandObject)
return new readers_1.ObjectReader(this._options).parse(this, p1);
}
else if (p1 !== null && /^\s*</.test(p1)) {
// parse XML document string
return new readers_1.XMLReader(this._options).parse(this, p1);
}
else if (p1 !== null && /^\s*[\{\[]/.test(p1)) {
// parse JSON string
return new readers_1.JSONReader(this._options).parse(this, p1);
}
else if (p1 !== null && /^(\s*|(#.*)|(%.*))*---/.test(p1)) {
// parse YAML string
return new readers_1.YAMLReader(this._options).parse(this, p1);
}
if ((p1 === null || util_1.isString(p1)) && util_1.isString(p2)) {
// ele(namespace: string, name: string, attributes?: AttributesObject)
_a = __read([p1, p2, p3], 3), namespace = _a[0], name = _a[1], attributes = _a[2];
}
else if (p1 !== null) {
// ele(name: string, attributes?: AttributesObject)
_b = __read([undefined, p1, util_1.isObject(p2) ? p2 : undefined], 3), namespace = _b[0], name = _b[1], attributes = _b[2];
}
else {
throw new Error("Element name cannot be null. " + this._debugInfo());
}
if (attributes) {
attributes = util_1.getValue(attributes);
}
_c = __read(this._extractNamespace(dom_1.sanitizeInput(namespace, this._options.invalidCharReplacement), dom_1.sanitizeInput(name, this._options.invalidCharReplacement), true), 2), namespace = _c[0], name = _c[1];
// inherit namespace from parent
if (namespace === undefined) {
var _d = __read(algorithm_1.namespace_extractQName(name), 1), prefix = _d[0];
namespace = this.node.lookupNamespaceURI(prefix);
}
// create a child element node
var childNode = (namespace !== undefined && namespace !== null ?
this._doc.createElementNS(namespace, name) :
this._doc.createElement(name));
this.node.appendChild(childNode);
var builder = new XMLBuilderImpl(childNode);
// update doctype node if the new node is the document element node
var oldDocType = this._doc.doctype;
if (childNode === this._doc.documentElement && oldDocType !== null) {
var docType = this._doc.implementation.createDocumentType(this._doc.documentElement.tagName, oldDocType.publicId, oldDocType.systemId);
this._doc.replaceChild(docType, oldDocType);
}
// create attributes
if (attributes && !util_1.isEmpty(attributes)) {
builder.att(attributes);
}
return builder;
};
/** @inheritdoc */
XMLBuilderImpl.prototype.remove = function () {
var parent = this.up();
parent.node.removeChild(this.node);
return parent;
};
/** @inheritdoc */
XMLBuilderImpl.prototype.att = function (p1, p2, p3) {
var _a, _b, _c;
var _this = this;
if (util_1.isMap(p1) || util_1.isObject(p1)) {
// att(obj: AttributesObject)
// expand if object
util_1.forEachObject(p1, function (attName, attValue) { return _this.att(attName, attValue); }, this);
return this;
}
// get primitive values
if (p1 !== undefined && p1 !== null)
p1 = util_1.getValue(p1 + "");
if (p2 !== undefined && p2 !== null)
p2 = util_1.getValue(p2 + "");
if (p3 !== undefined && p3 !== null)
p3 = util_1.getValue(p3 + "");
var namespace;
var name;
var value;
if ((p1 === null || util_1.isString(p1)) && util_1.isString(p2) && (p3 === null || util_1.isString(p3))) {
// att(namespace: string, name: string, value: string)
_a = __read([p1, p2, p3], 3), namespace = _a[0], name = _a[1], value = _a[2];
}
else if (util_1.isString(p1) && (p2 == null || util_1.isString(p2))) {
// ele(name: string, value: string)
_b = __read([undefined, p1, p2], 3), namespace = _b[0], name = _b[1], value = _b[2];
}
else {
throw new Error("Attribute name and value not specified. " + this._debugInfo());
}
if (this._options.keepNullAttributes && (value == null)) {
// keep null attributes
value = "";
}
else if (value == null) {
// skip null|undefined attributes
return this;
}
if (!util_2.Guard.isElementNode(this.node)) {
throw new Error("An attribute can only be assigned to an element node.");
}
var ele = this.node;
_c = __read(this._extractNamespace(namespace, name, false), 2), namespace = _c[0], name = _c[1];
name = dom_1.sanitizeInput(name, this._options.invalidCharReplacement);
namespace = dom_1.sanitizeInput(namespace, this._options.invalidCharReplacement);
value = dom_1.sanitizeInput(value, this._options.invalidCharReplacement);
var _d = __read(algorithm_1.namespace_extractQName(name), 2), prefix = _d[0], localName = _d[1];
var _e = __read(algorithm_1.namespace_extractQName(ele.prefix ? ele.prefix + ':' + ele.localName : ele.localName), 1), elePrefix = _e[0];
// check if this is a namespace declaration attribute
// assign a new element namespace if it wasn't previously assigned
var eleNamespace = null;
if (prefix === "xmlns") {
namespace = infra_1.namespace.XMLNS;
if (ele.namespaceURI === null && elePrefix === localName) {
eleNamespace = value;
}
}
else if (prefix === null && localName === "xmlns" && elePrefix === null) {
namespace = infra_1.namespace.XMLNS;
eleNamespace = value;
}
// re-create the element node if its namespace changed
// we can't simply change the namespaceURI since its read-only
if (eleNamespace !== null) {
this._updateNamespace(eleNamespace);
ele = this.node;
}
if (namespace !== undefined) {
ele.setAttributeNS(namespace, name, value);
}
else {
ele.setAttribute(name, value);
}
return this;
};
/** @inheritdoc */
XMLBuilderImpl.prototype.removeAtt = function (p1, p2) {
var _this = this;
if (!util_2.Guard.isElementNode(this.node)) {
throw new Error("An attribute can only be removed from an element node.");
}
// get primitive values
p1 = util_1.getValue(p1);
if (p2 !== undefined) {
p2 = util_1.getValue(p2);
}
var namespace;
var name;
if (p1 !== null && p2 === undefined) {
name = p1;
}
else if ((p1 === null || util_1.isString(p1)) && p2 !== undefined) {
namespace = p1;
name = p2;
}
else {
throw new Error("Attribute namespace must be a string. " + this._debugInfo());
}
if (util_1.isArray(name) || util_1.isSet(name)) {
// removeAtt(names: string[])
// removeAtt(namespace: string, names: string[])
util_1.forEachArray(name, function (attName) {
return namespace === undefined ? _this.removeAtt(attName) : _this.removeAtt(namespace, attName);
}, this);
}
else if (namespace !== undefined) {
// removeAtt(namespace: string, name: string)
name = dom_1.sanitizeInput(name, this._options.invalidCharReplacement);
namespace = dom_1.sanitizeInput(namespace, this._options.invalidCharReplacement);
this.node.removeAttributeNS(namespace, name);
}
else {
// removeAtt(name: string)
name = dom_1.sanitizeInput(name, this._options.invalidCharReplacement);
this.node.removeAttribute(name);
}
return this;
};
/** @inheritdoc */
XMLBuilderImpl.prototype.txt = function (content) {
var child = this._doc.createTextNode(dom_1.sanitizeInput(content, this._options.invalidCharReplacement));
this.node.appendChild(child);
return this;
};
/** @inheritdoc */
XMLBuilderImpl.prototype.com = function (content) {
var child = this._doc.createComment(dom_1.sanitizeInput(content, this._options.invalidCharReplacement));
this.node.appendChild(child);
return this;
};
/** @inheritdoc */
XMLBuilderImpl.prototype.dat = function (content) {
var child = this._doc.createCDATASection(dom_1.sanitizeInput(content, this._options.invalidCharReplacement));
this.node.appendChild(child);
return this;
};
/** @inheritdoc */
XMLBuilderImpl.prototype.ins = function (target, content) {
var _this = this;
if (content === void 0) { content = ''; }
if (util_1.isArray(target) || util_1.isSet(target)) {
util_1.forEachArray(target, function (item) {
item += "";
var insIndex = item.indexOf(' ');
var insTarget = (insIndex === -1 ? item : item.substr(0, insIndex));
var insValue = (insIndex === -1 ? '' : item.substr(insIndex + 1));
_this.ins(insTarget, insValue);
}, this);
}
else if (util_1.isMap(target) || util_1.isObject(target)) {
util_1.forEachObject(target, function (insTarget, insValue) { return _this.ins(insTarget, insValue); }, this);
}
else {
var child = this._doc.createProcessingInstruction(dom_1.sanitizeInput(target, this._options.invalidCharReplacement), dom_1.sanitizeInput(content, this._options.invalidCharReplacement));
this.node.appendChild(child);
}
return this;
};
/** @inheritdoc */
XMLBuilderImpl.prototype.dec = function (options) {
this._options.version = options.version || "1.0";
this._options.encoding = options.encoding;
this._options.standalone = options.standalone;
return this;
};
/** @inheritdoc */
XMLBuilderImpl.prototype.dtd = function (options) {
var name = dom_1.sanitizeInput((options && options.name) || (this._doc.documentElement ? this._doc.documentElement.tagName : "ROOT"), this._options.invalidCharReplacement);
var pubID = dom_1.sanitizeInput((options && options.pubID) || "", this._options.invalidCharReplacement);
var sysID = dom_1.sanitizeInput((options && options.sysID) || "", this._options.invalidCharReplacement);
// name must match document element
if (this._doc.documentElement !== null && name !== this._doc.documentElement.tagName) {
throw new Error("DocType name does not match document element name.");
}
// create doctype node
var docType = this._doc.implementation.createDocumentType(name, pubID, sysID);
if (this._doc.doctype !== null) {
// replace existing doctype
this._doc.replaceChild(docType, this._doc.doctype);
}
else {
// insert before document element node or append to end
this._doc.insertBefore(docType, this._doc.documentElement);
}
return this;
};
/** @inheritdoc */
XMLBuilderImpl.prototype.import = function (node) {
var e_1, _a;
var hostNode = this._domNode;
var hostDoc = this._doc;
var importedNode = node.node;
if (util_2.Guard.isDocumentNode(importedNode)) {
// import document node
var elementNode = importedNode.documentElement;
if (elementNode === null) {
throw new Error("Imported document has no document element node. " + this._debugInfo());
}
var clone = hostDoc.importNode(elementNode, true);
hostNode.appendChild(clone);
var _b = __read(algorithm_1.namespace_extractQName(clone.prefix ? clone.prefix + ':' + clone.localName : clone.localName), 1), prefix = _b[0];
var namespace = hostNode.lookupNamespaceURI(prefix);
new XMLBuilderImpl(clone)._updateNamespace(namespace);
}
else if (util_2.Guard.isDocumentFragmentNode(importedNode)) {
try {
// import child nodes
for (var _c = __values(importedNode.childNodes), _d = _c.next(); !_d.done; _d = _c.next()) {
var childNode = _d.value;
var clone = hostDoc.importNode(childNode, true);
hostNode.appendChild(clone);
if (util_2.Guard.isElementNode(clone)) {
var _e = __read(algorithm_1.namespace_extractQName(clone.prefix ? clone.prefix + ':' + clone.localName : clone.localName), 1), prefix = _e[0];
var namespace = hostNode.lookupNamespaceURI(prefix);
new XMLBuilderImpl(clone)._updateNamespace(namespace);
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
}
finally { if (e_1) throw e_1.error; }
}
}
else {
// import node
var clone = hostDoc.importNode(importedNode, true);
hostNode.appendChild(clone);
if (util_2.Guard.isElementNode(clone)) {
var _f = __read(algorithm_1.namespace_extractQName(clone.prefix ? clone.prefix + ':' + clone.localName : clone.localName), 1), prefix = _f[0];
var namespace = hostNode.lookupNamespaceURI(prefix);
new XMLBuilderImpl(clone)._updateNamespace(namespace);
}
}
return this;
};
/** @inheritdoc */
XMLBuilderImpl.prototype.doc = function () {
if (this._doc._isFragment) {
var node = this.node;
while (node && node.nodeType !== interfaces_2.NodeType.DocumentFragment) {
node = node.parentNode;
}
/* istanbul ignore next */
if (node === null) {
throw new Error("Node has no parent node while searching for document fragment ancestor. " + this._debugInfo());
}
return new XMLBuilderImpl(node);
}
else {
return new XMLBuilderImpl(this._doc);
}
};
/** @inheritdoc */
XMLBuilderImpl.prototype.root = function () {
var ele = this._doc.documentElement;
if (!ele) {
throw new Error("Document root element is null. " + this._debugInfo());
}
return new XMLBuilderImpl(ele);
};
/** @inheritdoc */
XMLBuilderImpl.prototype.up = function () {
var parent = this._domNode.parentNode;
if (!parent) {
throw new Error("Parent node is null. " + this._debugInfo());
}
return new XMLBuilderImpl(parent);
};
/** @inheritdoc */
XMLBuilderImpl.prototype.prev = function () {
var node = this._domNode.previousSibling;
if (!node) {
throw new Error("Previous sibling node is null. " + this._debugInfo());
}
return new XMLBuilderImpl(node);
};
/** @inheritdoc */
XMLBuilderImpl.prototype.next = function () {
var node = this._domNode.nextSibling;
if (!node) {
throw new Error("Next sibling node is null. " + this._debugInfo());
}
return new XMLBuilderImpl(node);
};
/** @inheritdoc */
XMLBuilderImpl.prototype.first = function () {
var node = this._domNode.firstChild;
if (!node) {
throw new Error("First child node is null. " + this._debugInfo());
}
return new XMLBuilderImpl(node);
};
/** @inheritdoc */
XMLBuilderImpl.prototype.last = function () {
var node = this._domNode.lastChild;
if (!node) {
throw new Error("Last child node is null. " + this._debugInfo());
}
return new XMLBuilderImpl(node);
};
/** @inheritdoc */
XMLBuilderImpl.prototype.each = function (callback, self, recursive, thisArg) {
if (self === void 0) { self = false; }
if (recursive === void 0) { recursive = false; }
var result = this._getFirstDescendantNode(this._domNode, self, recursive);
while (result[0]) {
var nextResult = this._getNextDescendantNode(this._domNode, result[0], recursive, result[1], result[2]);
callback.call(thisArg, new XMLBuilderImpl(result[0]), result[1], result[2]);
result = nextResult;
}
return this;
};
/** @inheritdoc */
XMLBuilderImpl.prototype.map = function (callback, self, recursive, thisArg) {
if (self === void 0) { self = false; }
if (recursive === void 0) { recursive = false; }
var result = [];
this.each(function (node, index, level) {
return result.push(callback.call(thisArg, node, index, level));
}, self, recursive);
return result;
};
/** @inheritdoc */
XMLBuilderImpl.prototype.reduce = function (callback, initialValue, self, recursive, thisArg) {
if (self === void 0) { self = false; }
if (recursive === void 0) { recursive = false; }
var value = initialValue;
this.each(function (node, index, level) {
return value = callback.call(thisArg, value, node, index, level);
}, self, recursive);
return value;
};
/** @inheritdoc */
XMLBuilderImpl.prototype.find = function (predicate, self, recursive, thisArg) {
if (self === void 0) { self = false; }
if (recursive === void 0) { recursive = false; }
var result = this._getFirstDescendantNode(this._domNode, self, recursive);
while (result[0]) {
var builder = new XMLBuilderImpl(result[0]);
if (predicate.call(thisArg, builder, result[1], result[2])) {
return builder;
}
result = this._getNextDescendantNode(this._domNode, result[0], recursive, result[1], result[2]);
}
return undefined;
};
/** @inheritdoc */
XMLBuilderImpl.prototype.filter = function (predicate, self, recursive, thisArg) {
if (self === void 0) { self = false; }
if (recursive === void 0) { recursive = false; }
var result = [];
this.each(function (node, index, level) {
if (predicate.call(thisArg, node, index, level)) {
result.push(node);
}
}, self, recursive);
return result;
};
/** @inheritdoc */
XMLBuilderImpl.prototype.every = function (predicate, self, recursive, thisArg) {
if (self === void 0) { self = false; }
if (recursive === void 0) { recursive = false; }
var result = this._getFirstDescendantNode(this._domNode, self, recursive);
while (result[0]) {
var builder = new XMLBuilderImpl(result[0]);
if (!predicate.call(thisArg, builder, result[1], result[2])) {
return false;
}
result = this._getNextDescendantNode(this._domNode, result[0], recursive, result[1], result[2]);
}
return true;
};
/** @inheritdoc */
XMLBuilderImpl.prototype.some = function (predicate, self, recursive, thisArg) {
if (self === void 0) { self = false; }
if (recursive === void 0) { recursive = false; }
var result = this._getFirstDescendantNode(this._domNode, self, recursive);
while (result[0]) {
var builder = new XMLBuilderImpl(result[0]);
if (predicate.call(thisArg, builder, result[1], result[2])) {
return true;
}
result = this._getNextDescendantNode(this._domNode, result[0], recursive, result[1], result[2]);
}
return false;
};
/** @inheritdoc */
XMLBuilderImpl.prototype.toArray = function (self, recursive) {
if (self === void 0) { self = false; }
if (recursive === void 0) { recursive = false; }
var result = [];
this.each(function (node) { return result.push(node); }, self, recursive);
return result;
};
/** @inheritdoc */
XMLBuilderImpl.prototype.toString = function (writerOptions) {
writerOptions = writerOptions || {};
if (writerOptions.format === undefined) {
writerOptions.format = "xml";
}
return this._serialize(writerOptions);
};
/** @inheritdoc */
XMLBuilderImpl.prototype.toObject = function (writerOptions) {
writerOptions = writerOptions || {};
if (writerOptions.format === undefined) {
writerOptions.format = "object";
}
return this._serialize(writerOptions);
};
/** @inheritdoc */
XMLBuilderImpl.prototype.end = function (writerOptions) {
writerOptions = writerOptions || {};
if (writerOptions.format === undefined) {
writerOptions.format = "xml";
}
return this.doc()._serialize(writerOptions);
};
/**
* Gets the next descendant of the given node of the tree rooted at `root`
* in depth-first pre-order. Returns a three-tuple with
* [descendant, descendant_index, descendant_level].
*
* @param root - root node of the tree
* @param self - whether to visit the current node along with child nodes
* @param recursive - whether to visit all descendant nodes in tree-order or
* only the immediate child nodes
*/
XMLBuilderImpl.prototype._getFirstDescendantNode = function (root, self, recursive) {
if (self)
return [this._domNode, 0, 0];
else if (recursive)
return this._getNextDescendantNode(root, root, recursive, 0, 0);
else
return [this._domNode.firstChild, 0, 1];
};
/**
* Gets the next descendant of the given node of the tree rooted at `root`
* in depth-first pre-order. Returns a three-tuple with
* [descendant, descendant_index, descendant_level].
*
* @param root - root node of the tree
* @param node - current node
* @param recursive - whether to visit all descendant nodes in tree-order or
* only the immediate child nodes
* @param index - child node index
* @param level - current depth of the XML tree
*/
XMLBuilderImpl.prototype._getNextDescendantNode = function (root, node, recursive, index, level) {
if (recursive) {
// traverse child nodes
if (node.firstChild)
return [node.firstChild, 0, level + 1];
if (node === root)
return [null, -1, -1];
// traverse siblings
if (node.nextSibling)
return [node.nextSibling, index + 1, level];
// traverse parent's next sibling
var parent = node.parentNode;
while (parent && parent !== root) {
if (parent.nextSibling)
return [parent.nextSibling, algorithm_1.tree_index(parent.nextSibling), level - 1];
parent = parent.parentNode;
level--;
}
}
else {
if (root === node)
return [node.firstChild, 0, level + 1];
else
return [node.nextSibling, index + 1, level];
}
return [null, -1, -1];
};
/**
* Converts the node into its string or object representation.
*
* @param options - serialization options
*/
XMLBuilderImpl.prototype._serialize = function (writerOptions) {
if (writerOptions.format === "xml") {
var writer = new writers_1.XMLWriter(this._options, writerOptions);
return writer.serialize(this.node);
}
else if (writerOptions.format === "map") {
var writer = new writers_1.MapWriter(this._options, writerOptions);
return writer.serialize(this.node);
}
else if (writerOptions.format === "object") {
var writer = new writers_1.ObjectWriter(this._options, writerOptions);
return writer.serialize(this.node);
}
else if (writerOptions.format === "json") {
var writer = new writers_1.JSONWriter(this._options, writerOptions);
return writer.serialize(this.node);
}
else if (writerOptions.format === "yaml") {
var writer = new writers_1.YAMLWriter(this._options, writerOptions);
return writer.serialize(this.node);
}
else {
throw new Error("Invalid writer format: " + writerOptions.format + ". " + this._debugInfo());
}
};
/**
* Extracts a namespace and name from the given string.
*
* @param namespace - namespace
* @param name - a string containing both a name and namespace separated by an
* `'@'` character
* @param ele - `true` if this is an element namespace; otherwise `false`
*/
XMLBuilderImpl.prototype._extractNamespace = function (namespace, name, ele) {
// extract from name
var atIndex = name.indexOf("@");
if (atIndex > 0) {
if (namespace === undefined)
namespace = name.slice(atIndex + 1);
name = name.slice(0, atIndex);
}
if (namespace === undefined) {
// look-up default namespace
namespace = (ele ? this._options.defaultNamespace.ele : this._options.defaultNamespace.att);
}
else if (namespace !== null && namespace[0] === "@") {
// look-up namespace aliases
var alias = namespace.slice(1);
namespace = this._options.namespaceAlias[alias];
if (namespace === undefined) {
throw new Error("Namespace alias `" + alias + "` is not defined. " + this._debugInfo());
}
}
return [namespace, name];
};
/**
* Updates the element's namespace.
*
* @param ns - new namespace
*/
XMLBuilderImpl.prototype._updateNamespace = function (ns) {
var e_2, _a, e_3, _b;
var ele = this._domNode;
if (util_2.Guard.isElementNode(ele) && ns !== null && ele.namespaceURI !== ns) {
var _c = __read(algorithm_1.namespace_extractQName(ele.prefix ? ele.prefix + ':' + ele.localName : ele.localName), 2), elePrefix = _c[0], eleLocalName = _c[1];
// re-create the element node if its namespace changed
// we can't simply change the namespaceURI since its read-only
var newEle = algorithm_1.create_element(this._doc, eleLocalName, ns, elePrefix);
try {
for (var _d = __values(ele.attributes), _e = _d.next(); !_e.done; _e = _d.next()) {
var attr = _e.value;
var attrQName = attr.prefix ? attr.prefix + ':' + attr.localName : attr.localName;
var _f = __read(algorithm_1.namespace_extractQName(attrQName), 1), attrPrefix = _f[0];
var newAttrNS = attr.namespaceURI;
if (newAttrNS === null && attrPrefix !== null) {
newAttrNS = ele.lookupNamespaceURI(attrPrefix);
}
if (newAttrNS === null) {
newEle.setAttribute(attrQName, attr.value);
}
else {
newEle.setAttributeNS(newAttrNS, attrQName, attr.value);
}
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
}
finally { if (e_2) throw e_2.error; }
}
// replace the new node in parent node
var parent = ele.parentNode;
/* istanbul ignore next */
if (parent === null) {
throw new Error("Parent node is null." + this._debugInfo());
}
parent.replaceChild(newEle, ele);
this._domNode = newEle;
try {
// check child nodes
for (var _g = __values(ele.childNodes), _h = _g.next(); !_h.done; _h = _g.next()) {
var childNode = _h.value;
var newChildNode = childNode.cloneNode(true);
newEle.appendChild(newChildNode);
if (util_2.Guard.isElementNode(newChildNode)) {
var _j = __read(algorithm_1.namespace_extractQName(newChildNode.prefix ? newChildNode.prefix + ':' + newChildNode.localName : newChildNode.localName), 1), newChildNodePrefix = _j[0];
var newChildNodeNS = newEle.lookupNamespaceURI(newChildNodePrefix);
new XMLBuilderImpl(newChildNode)._updateNamespace(newChildNodeNS);
}
}
}
catch (e_3_1) { e_3 = { error: e_3_1 }; }
finally {
try {
if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
}
finally { if (e_3) throw e_3.error; }
}
}
};
Object.defineProperty(XMLBuilderImpl.prototype, "_doc", {
/**
* Returns the document owning this node.
*/
get: function () {
var node = this.node;
if (util_2.Guard.isDocumentNode(node)) {
return node;
}
else {
var docNode = node.ownerDocument;
/* istanbul ignore next */
if (!docNode)
throw new Error("Owner document is null. " + this._debugInfo());
return docNode;
}
},
enumerable: true,
configurable: true
});
/**
* Returns debug information for this node.
*
* @param name - node name
*/
XMLBuilderImpl.prototype._debugInfo = function (name) {
var node = this.node;
var parentNode = node.parentNode;
name = name || node.nodeName;
var parentName = parentNode ? parentNode.nodeName : '';
if (!parentName) {
return "node: <" + name + ">";
}
else {
return "node: <" + name + ">, parent: <" + parentName + ">";
}
};
Object.defineProperty(XMLBuilderImpl.prototype, "_options", {
/**
* Gets or sets builder options.
*/
get: function () {
var doc = this._doc;
/* istanbul ignore next */
if (doc._xmlBuilderOptions === undefined) {
throw new Error("Builder options is not set.");
}
return doc._xmlBuilderOptions;
},
set: function (value) {
var doc = this._doc;
doc._xmlBuilderOptions = value;
},
enumerable: true,
configurable: true
});
return XMLBuilderImpl;
}());
exports.XMLBuilderImpl = XMLBuilderImpl;
//# sourceMappingURL=XMLBuilderImpl.js.map
/***/ }),
/* 596 */,
/* 597 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
var DOMException_1 = __webpack_require__(35);
var util_1 = __webpack_require__(918);
var algorithm_1 = __webpack_require__(163);
/**
* Represents a target to which an event can be dispatched.
*/
var EventTargetImpl = /** @class */ (function () {
/**
* Initializes a new instance of `EventTarget`.
*/
function EventTargetImpl() {
}
Object.defineProperty(EventTargetImpl.prototype, "_eventListenerList", {
get: function () {
return this.__eventListenerList || (this.__eventListenerList = []);
},
enumerable: true,
configurable: true
});
Object.defineProperty(EventTargetImpl.prototype, "_eventHandlerMap", {
get: function () {
return this.__eventHandlerMap || (this.__eventHandlerMap = {});
},
enumerable: true,
configurable: true
});
/** @inheritdoc */
EventTargetImpl.prototype.addEventListener = function (type, callback, options) {
if (options === void 0) { options = { passive: false, once: false, capture: false }; }
/**
* 1. Let capture, passive, and once be the result of flattening more options.
*/
var _a = __read(algorithm_1.eventTarget_flattenMore(options), 3), capture = _a[0], passive = _a[1], once = _a[2];
// convert callback function to EventListener, return if null
var listenerCallback;
if (!callback) {
return;
}
else if (util_1.Guard.isEventListener(callback)) {
listenerCallback = callback;
}
else {
listenerCallback = { handleEvent: callback };
}
/**
* 2. Add an event listener with the context object and an event listener
* whose type is type, callback is callback, capture is capture, passive is
* passive, and once is once.
*/
algorithm_1.eventTarget_addEventListener(this, {
type: type,
callback: listenerCallback,
capture: capture,
passive: passive,
once: once,
removed: false
});
};
/** @inheritdoc */
EventTargetImpl.prototype.removeEventListener = function (type, callback, options) {
/**
* TODO: Implement realms
* 1. If the context objects relevant global object is a
* ServiceWorkerGlobalScope object and its associated service workers
* script resources has ever been evaluated flag is set, then throw
* a TypeError. [SERVICE-WORKERS]
*/
if (options === void 0) { options = { capture: false }; }
/**
* 2. Let capture be the result of flattening options.
*/
var capture = algorithm_1.eventTarget_flatten(options);
if (!callback)
return;
/**
* 3. If the context objects event listener list contains an event listener
* whose type is type, callback is callback, and capture is capture, then
* remove an event listener with the context object and that event listener.
*/
for (var i = 0; i < this._eventListenerList.length; i++) {
var entry = this._eventListenerList[i];
if (entry.type !== type || entry.capture !== capture)
continue;
if (util_1.Guard.isEventListener(callback) && entry.callback === callback) {
algorithm_1.eventTarget_removeEventListener(this, entry, i);
break;
}
else if (callback && entry.callback.handleEvent === callback) {
algorithm_1.eventTarget_removeEventListener(this, entry, i);
break;
}
}
};
/** @inheritdoc */
EventTargetImpl.prototype.dispatchEvent = function (event) {
/**
* 1. If events dispatch flag is set, or if its initialized flag is not
* set, then throw an "InvalidStateError" DOMException.
* 2. Initialize events isTrusted attribute to false.
* 3. Return the result of dispatching event to the context object.
*/
if (event._dispatchFlag || !event._initializedFlag) {
throw new DOMException_1.InvalidStateError();
}
event._isTrusted = false;
return algorithm_1.event_dispatch(event, this);
};
/** @inheritdoc */
EventTargetImpl.prototype._getTheParent = function (event) {
return null;
};
return EventTargetImpl;
}());
exports.EventTargetImpl = EventTargetImpl;
//# sourceMappingURL=EventTargetImpl.js.map
/***/ }),
/* 598 */,
/* 599 */,
/* 600 */,
/* 601 */,
/* 602 */,
/* 603 */,
/* 604 */,
/* 605 */
/***/ (function(module) {
module.exports = require("http");
/***/ }),
/* 606 */,
/* 607 */,
/* 608 */,
/* 609 */,
/* 610 */,
/* 611 */
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
// Standard YAML's Core schema.
// http://www.yaml.org/spec/1.2/spec.html#id2804923
//
// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.
// So, Core schema has no distinctions from JSON schema is JS-YAML.
var Schema = __webpack_require__(733);
module.exports = new Schema({
include: [
__webpack_require__(720)
]
});
/***/ }),
/* 612 */
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
module.exports = Yallist
Yallist.Node = Node
Yallist.create = Yallist
function Yallist (list) {
var self = this
if (!(self instanceof Yallist)) {
self = new Yallist()
}
self.tail = null
self.head = null
self.length = 0
if (list && typeof list.forEach === 'function') {
list.forEach(function (item) {
self.push(item)
})
} else if (arguments.length > 0) {
for (var i = 0, l = arguments.length; i < l; i++) {
self.push(arguments[i])
}
}
return self
}
Yallist.prototype.removeNode = function (node) {
if (node.list !== this) {
throw new Error('removing node which does not belong to this list')
}
var next = node.next
var prev = node.prev
if (next) {
next.prev = prev
}
if (prev) {
prev.next = next
}
if (node === this.head) {
this.head = next
}
if (node === this.tail) {
this.tail = prev
}
node.list.length--
node.next = null
node.prev = null
node.list = null
return next
}
Yallist.prototype.unshiftNode = function (node) {
if (node === this.head) {
return
}
if (node.list) {
node.list.removeNode(node)
}
var head = this.head
node.list = this
node.next = head
if (head) {
head.prev = node
}
this.head = node
if (!this.tail) {
this.tail = node
}
this.length++
}
Yallist.prototype.pushNode = function (node) {
if (node === this.tail) {
return
}
if (node.list) {
node.list.removeNode(node)
}
var tail = this.tail
node.list = this
node.prev = tail
if (tail) {
tail.next = node
}
this.tail = node
if (!this.head) {
this.head = node
}
this.length++
}
Yallist.prototype.push = function () {
for (var i = 0, l = arguments.length; i < l; i++) {
push(this, arguments[i])
}
return this.length
}
Yallist.prototype.unshift = function () {
for (var i = 0, l = arguments.length; i < l; i++) {
unshift(this, arguments[i])
}
return this.length
}
Yallist.prototype.pop = function () {
if (!this.tail) {
return undefined
}
var res = this.tail.value
this.tail = this.tail.prev
if (this.tail) {
this.tail.next = null
} else {
this.head = null
}
this.length--
return res
}
Yallist.prototype.shift = function () {
if (!this.head) {
return undefined
}
var res = this.head.value
this.head = this.head.next
if (this.head) {
this.head.prev = null
} else {
this.tail = null
}
this.length--
return res
}
Yallist.prototype.forEach = function (fn, thisp) {
thisp = thisp || this
for (var walker = this.head, i = 0; walker !== null; i++) {
fn.call(thisp, walker.value, i, this)
walker = walker.next
}
}
Yallist.prototype.forEachReverse = function (fn, thisp) {
thisp = thisp || this
for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {
fn.call(thisp, walker.value, i, this)
walker = walker.prev
}
}
Yallist.prototype.get = function (n) {
for (var i = 0, walker = this.head; walker !== null && i < n; i++) {
// abort out of the list early if we hit a cycle
walker = walker.next
}
if (i === n && walker !== null) {
return walker.value
}
}
Yallist.prototype.getReverse = function (n) {
for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {
// abort out of the list early if we hit a cycle
walker = walker.prev
}
if (i === n && walker !== null) {
return walker.value
}
}
Yallist.prototype.map = function (fn, thisp) {
thisp = thisp || this
var res = new Yallist()
for (var walker = this.head; walker !== null;) {
res.push(fn.call(thisp, walker.value, this))
walker = walker.next
}
return res
}
Yallist.prototype.mapReverse = function (fn, thisp) {
thisp = thisp || this
var res = new Yallist()
for (var walker = this.tail; walker !== null;) {
res.push(fn.call(thisp, walker.value, this))
walker = walker.prev
}
return res
}
Yallist.prototype.reduce = function (fn, initial) {
var acc
var walker = this.head
if (arguments.length > 1) {
acc = initial
} else if (this.head) {
walker = this.head.next
acc = this.head.value
} else {
throw new TypeError('Reduce of empty list with no initial value')
}
for (var i = 0; walker !== null; i++) {
acc = fn(acc, walker.value, i)
walker = walker.next
}
return acc
}
Yallist.prototype.reduceReverse = function (fn, initial) {
var acc
var walker = this.tail
if (arguments.length > 1) {
acc = initial
} else if (this.tail) {
walker = this.tail.prev
acc = this.tail.value
} else {
throw new TypeError('Reduce of empty list with no initial value')
}
for (var i = this.length - 1; walker !== null; i--) {
acc = fn(acc, walker.value, i)
walker = walker.prev
}
return acc
}
Yallist.prototype.toArray = function () {
var arr = new Array(this.length)
for (var i = 0, walker = this.head; walker !== null; i++) {
arr[i] = walker.value
walker = walker.next
}
return arr
}
Yallist.prototype.toArrayReverse = function () {
var arr = new Array(this.length)
for (var i = 0, walker = this.tail; walker !== null; i++) {
arr[i] = walker.value
walker = walker.prev
}
return arr
}
Yallist.prototype.slice = function (from, to) {
to = to || this.length
if (to < 0) {
to += this.length
}
from = from || 0
if (from < 0) {
from += this.length
}
var ret = new Yallist()
if (to < from || to < 0) {
return ret
}
if (from < 0) {
from = 0
}
if (to > this.length) {
to = this.length
}
for (var i = 0, walker = this.head; walker !== null && i < from; i++) {
walker = walker.next
}
for (; walker !== null && i < to; i++, walker = walker.next) {
ret.push(walker.value)
}
return ret
}
Yallist.prototype.sliceReverse = function (from, to) {
to = to || this.length
if (to < 0) {
to += this.length
}
from = from || 0
if (from < 0) {
from += this.length
}
var ret = new Yallist()
if (to < from || to < 0) {
return ret
}
if (from < 0) {
from = 0
}
if (to > this.length) {
to = this.length
}
for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {
walker = walker.prev
}
for (; walker !== null && i > from; i--, walker = walker.prev) {
ret.push(walker.value)
}
return ret
}
Yallist.prototype.splice = function (start, deleteCount, ...nodes) {
if (start > this.length) {
start = this.length - 1
}
if (start < 0) {
start = this.length + start;
}
for (var i = 0, walker = this.head; walker !== null && i < start; i++) {
walker = walker.next
}
var ret = []
for (var i = 0; walker && i < deleteCount; i++) {
ret.push(walker.value)
walker = this.removeNode(walker)
}
if (walker === null) {
walker = this.tail
}
if (walker !== this.head && walker !== this.tail) {
walker = walker.prev
}
for (var i = 0; i < nodes.length; i++) {
walker = insert(this, walker, nodes[i])
}
return ret;
}
Yallist.prototype.reverse = function () {
var head = this.head
var tail = this.tail
for (var walker = head; walker !== null; walker = walker.prev) {
var p = walker.prev
walker.prev = walker.next
walker.next = p
}
this.head = tail
this.tail = head
return this
}
function insert (self, node, value) {
var inserted = node === self.head ?
new Node(value, null, node, self) :
new Node(value, node, node.next, self)
if (inserted.next === null) {
self.tail = inserted
}
if (inserted.prev === null) {
self.head = inserted
}
self.length++
return inserted
}
function push (self, item) {
self.tail = new Node(item, self.tail, null, self)
if (!self.head) {
self.head = self.tail
}
self.length++
}
function unshift (self, item) {
self.head = new Node(item, null, self.head, self)
if (!self.tail) {
self.tail = self.head
}
self.length++
}
function Node (value, prev, next, list) {
if (!(this instanceof Node)) {
return new Node(value, prev, next, list)
}
this.list = list
this.value = value
if (prev) {
prev.next = this
this.prev = prev
} else {
this.prev = null
}
if (next) {
next.prev = this
this.next = next
} else {
this.next = null
}
}
try {
// add if support for Symbol.iterator is present
__webpack_require__(396)(Yallist)
} catch (er) {}
/***/ }),
/* 613 */,
/* 614 */
/***/ (function(module) {
module.exports = require("events");
/***/ }),
/* 615 */,
/* 616 */,
/* 617 */,
/* 618 */,
/* 619 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var interfaces_1 = __webpack_require__(970);
var CharacterDataImpl_1 = __webpack_require__(43);
var WebIDLAlgorithm_1 = __webpack_require__(495);
/**
* Represents a processing instruction node.
*/
var ProcessingInstructionImpl = /** @class */ (function (_super) {
__extends(ProcessingInstructionImpl, _super);
/**
* Initializes a new instance of `ProcessingInstruction`.
*/
function ProcessingInstructionImpl(target, data) {
var _this = _super.call(this, data) || this;
_this._target = target;
return _this;
}
Object.defineProperty(ProcessingInstructionImpl.prototype, "target", {
/**
* Gets the target of the {@link ProcessingInstruction} node.
*/
get: function () { return this._target; },
enumerable: true,
configurable: true
});
/**
* Creates a new `ProcessingInstruction`.
*
* @param document - owner document
* @param target - instruction target
* @param data - node contents
*/
ProcessingInstructionImpl._create = function (document, target, data) {
var node = new ProcessingInstructionImpl(target, data);
node._nodeDocument = document;
return node;
};
return ProcessingInstructionImpl;
}(CharacterDataImpl_1.CharacterDataImpl));
exports.ProcessingInstructionImpl = ProcessingInstructionImpl;
/**
* Initialize prototype properties
*/
WebIDLAlgorithm_1.idl_defineConst(ProcessingInstructionImpl.prototype, "_nodeType", interfaces_1.NodeType.ProcessingInstruction);
//# sourceMappingURL=ProcessingInstructionImpl.js.map
/***/ }),
/* 620 */,
/* 621 */,
/* 622 */
/***/ (function(module) {
module.exports = require("path");
/***/ }),
/* 623 */,
/* 624 */,
/* 625 */
/***/ (function(__unusedmodule, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Defines default values for builder options.
*/
exports.DefaultBuilderOptions = {
version: "1.0",
encoding: undefined,
standalone: undefined,
keepNullNodes: false,
keepNullAttributes: false,
ignoreConverters: false,
convert: {
att: "@",
ins: "?",
text: "#",
cdata: "$",
comment: "!"
},
defaultNamespace: {
ele: undefined,
att: undefined
},
namespaceAlias: {
html: "http://www.w3.org/1999/xhtml",
xml: "http://www.w3.org/XML/1998/namespace",
xmlns: "http://www.w3.org/2000/xmlns/",
mathml: "http://www.w3.org/1998/Math/MathML",
svg: "http://www.w3.org/2000/svg",
xlink: "http://www.w3.org/1999/xlink"
},
invalidCharReplacement: undefined,
parser: undefined
};
/**
* Contains keys of `XMLBuilderOptions`.
*/
exports.XMLBuilderOptionKeys = new Set(Object.keys(exports.DefaultBuilderOptions));
/**
* Defines default values for builder options.
*/
exports.DefaultXMLBuilderCBOptions = {
format: "xml",
wellFormed: false,
prettyPrint: false,
indent: " ",
newline: "\n",
offset: 0,
width: 0,
allowEmptyTags: false,
spaceBeforeSlash: false,
keepNullNodes: false,
keepNullAttributes: false,
ignoreConverters: false,
convert: {
att: "@",
ins: "?",
text: "#",
cdata: "$",
comment: "!"
},
defaultNamespace: {
ele: undefined,
att: undefined
},
namespaceAlias: {
html: "http://www.w3.org/1999/xhtml",
xml: "http://www.w3.org/XML/1998/namespace",
xmlns: "http://www.w3.org/2000/xmlns/",
mathml: "http://www.w3.org/1998/Math/MathML",
svg: "http://www.w3.org/2000/svg",
xlink: "http://www.w3.org/1999/xlink"
}
};
//# sourceMappingURL=interfaces.js.map
/***/ }),
/* 626 */,
/* 627 */,
/* 628 */,
/* 629 */
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
var Type = __webpack_require__(945);
function resolveJavascriptRegExp(data) {
if (data === null) return false;
if (data.length === 0) return false;
var regexp = data,
tail = /\/([gim]*)$/.exec(data),
modifiers = '';
// if regexp starts with '/' it can have modifiers and must be properly closed
// `/foo/gim` - modifiers tail can be maximum 3 chars
if (regexp[0] === '/') {
if (tail) modifiers = tail[1];
if (modifiers.length > 3) return false;
// if expression starts with /, is should be properly terminated
if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;
}
return true;
}
function constructJavascriptRegExp(data) {
var regexp = data,
tail = /\/([gim]*)$/.exec(data),
modifiers = '';
// `/foo/gim` - tail can be maximum 4 chars
if (regexp[0] === '/') {
if (tail) modifiers = tail[1];
regexp = regexp.slice(1, regexp.length - modifiers.length - 1);
}
return new RegExp(regexp, modifiers);
}
function representJavascriptRegExp(object /*, style*/) {
var result = '/' + object.source + '/';
if (object.global) result += 'g';
if (object.multiline) result += 'm';
if (object.ignoreCase) result += 'i';
return result;
}
function isRegExp(object) {
return Object.prototype.toString.call(object) === '[object RegExp]';
}
module.exports = new Type('tag:yaml.org,2002:js/regexp', {
kind: 'scalar',
resolve: resolveJavascriptRegExp,
construct: constructJavascriptRegExp,
predicate: isRegExp,
represent: representJavascriptRegExp
});
/***/ }),
/* 630 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const compare = __webpack_require__(874)
const rcompare = (a, b, loose) => compare(b, a, loose)
module.exports = rcompare
/***/ }),
/* 631 */
/***/ (function(module) {
module.exports = require("net");
/***/ }),
/* 632 */,
/* 633 */
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
var Type = __webpack_require__(945);
function resolveYamlMerge(data) {
return data === '<<' || data === null;
}
module.exports = new Type('tag:yaml.org,2002:merge', {
kind: 'scalar',
resolve: resolveYamlMerge
});
/***/ }),
/* 634 */,
/* 635 */,
/* 636 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
var DOMImpl_1 = __webpack_require__(648);
var util_1 = __webpack_require__(592);
var algorithm_1 = __webpack_require__(163);
/**
* Represents an ordered set of nodes.
*/
var NodeListImpl = /** @class */ (function () {
/**
* Initializes a new instance of `NodeList`.
*
* @param root - root node
*/
function NodeListImpl(root) {
this._live = true;
this._filter = null;
this._length = 0;
this._root = root;
return new Proxy(this, this);
}
Object.defineProperty(NodeListImpl.prototype, "length", {
/** @inheritdoc */
get: function () {
/**
* The length attribute must return the number of nodes represented
* by the collection.
*/
return this._root._children.size;
},
enumerable: true,
configurable: true
});
/** @inheritdoc */
NodeListImpl.prototype.item = function (index) {
/**
* The item(index) method must return the indexth node in the collection.
* If there is no indexth node in the collection, then the method must
* return null.
*/
if (index < 0 || index > this.length - 1)
return null;
if (index < this.length / 2) {
var i = 0;
var node = this._root._firstChild;
while (node !== null && i !== index) {
node = node._nextSibling;
i++;
}
return node;
}
else {
var i = this.length - 1;
var node = this._root._lastChild;
while (node !== null && i !== index) {
node = node._previousSibling;
i--;
}
return node;
}
};
/** @inheritdoc */
NodeListImpl.prototype.keys = function () {
var _a;
return _a = {},
_a[Symbol.iterator] = function () {
var index = 0;
return {
next: function () {
if (index === this.length) {
return { done: true, value: null };
}
else {
return { done: false, value: index++ };
}
}.bind(this)
};
}.bind(this),
_a;
};
/** @inheritdoc */
NodeListImpl.prototype.values = function () {
var _a;
return _a = {},
_a[Symbol.iterator] = function () {
var it = this[Symbol.iterator]();
return {
next: function () {
return it.next();
}
};
}.bind(this),
_a;
};
/** @inheritdoc */
NodeListImpl.prototype.entries = function () {
var _a;
return _a = {},
_a[Symbol.iterator] = function () {
var it = this[Symbol.iterator]();
var index = 0;
return {
next: function () {
var itResult = it.next();
if (itResult.done) {
return { done: true, value: null };
}
else {
return { done: false, value: [index++, itResult.value] };
}
}
};
}.bind(this),
_a;
};
/** @inheritdoc */
NodeListImpl.prototype[Symbol.iterator] = function () {
return this._root._children[Symbol.iterator]();
};
/** @inheritdoc */
NodeListImpl.prototype.forEach = function (callback, thisArg) {
var e_1, _a;
if (thisArg === undefined) {
thisArg = DOMImpl_1.dom.window;
}
var index = 0;
try {
for (var _b = __values(this._root._children), _c = _b.next(); !_c.done; _c = _b.next()) {
var node = _c.value;
callback.call(thisArg, node, index++, this);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
};
/**
* Implements a proxy get trap to provide array-like access.
*/
NodeListImpl.prototype.get = function (target, key, receiver) {
if (!util_1.isString(key)) {
return Reflect.get(target, key, receiver);
}
var index = Number(key);
if (isNaN(index)) {
return Reflect.get(target, key, receiver);
}
return target.item(index) || undefined;
};
/**
* Implements a proxy set trap to provide array-like access.
*/
NodeListImpl.prototype.set = function (target, key, value, receiver) {
if (!util_1.isString(key)) {
return Reflect.set(target, key, value, receiver);
}
var index = Number(key);
if (isNaN(index)) {
return Reflect.set(target, key, value, receiver);
}
var node = target.item(index) || undefined;
if (!node)
return false;
if (node._parent) {
algorithm_1.mutation_replace(node, value, node._parent);
return true;
}
else {
return false;
}
};
/**
* Creates a new `NodeList`.
*
* @param root - root node
*/
NodeListImpl._create = function (root) {
return new NodeListImpl(root);
};
return NodeListImpl;
}());
exports.NodeListImpl = NodeListImpl;
//# sourceMappingURL=NodeListImpl.js.map
/***/ }),
/* 637 */,
/* 638 */,
/* 639 */,
/* 640 */,
/* 641 */,
/* 642 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var algorithm_1 = __webpack_require__(163);
var XMLParserImpl_1 = __webpack_require__(468);
/**
* Represents a parser for XML and HTML content.
*
* See: https://w3c.github.io/DOM-Parsing/#the-domparser-interface
*/
var DOMParserImpl = /** @class */ (function () {
function DOMParserImpl() {
}
/** @inheritdoc */
DOMParserImpl.prototype.parseFromString = function (source, mimeType) {
if (mimeType === "text/html")
throw new Error('HTML parser not implemented.');
try {
var parser = new XMLParserImpl_1.XMLParserImpl();
var doc = parser.parse(source);
doc._contentType = mimeType;
return doc;
}
catch (e) {
var errorNS = "http://www.mozilla.org/newlayout/xml/parsererror.xml";
var doc = algorithm_1.create_xmlDocument();
var root = doc.createElementNS(errorNS, "parsererror");
var ele = doc.createElementNS(errorNS, "error");
ele.setAttribute("message", e.message);
root.appendChild(ele);
doc.appendChild(root);
return doc;
}
};
return DOMParserImpl;
}());
exports.DOMParserImpl = DOMParserImpl;
//# sourceMappingURL=DOMParserImpl.js.map
/***/ }),
/* 643 */,
/* 644 */,
/* 645 */,
/* 646 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var interfaces_1 = __webpack_require__(970);
var TraverserImpl_1 = __webpack_require__(487);
var algorithm_1 = __webpack_require__(163);
/**
* Represents the nodes of a subtree and a position within them.
*/
var TreeWalkerImpl = /** @class */ (function (_super) {
__extends(TreeWalkerImpl, _super);
/**
* Initializes a new instance of `TreeWalker`.
*/
function TreeWalkerImpl(root, current) {
var _this = _super.call(this, root) || this;
_this._current = current;
return _this;
}
Object.defineProperty(TreeWalkerImpl.prototype, "currentNode", {
/** @inheritdoc */
get: function () { return this._current; },
set: function (value) { this._current = value; },
enumerable: true,
configurable: true
});
/** @inheritdoc */
TreeWalkerImpl.prototype.parentNode = function () {
/**
* 1. Let node be the context objects current.
* 2. While node is non-null and is not the context objects root:
*/
var node = this._current;
while (node !== null && node !== this._root) {
/**
* 2.1. Set node to nodes parent.
* 2.2. If node is non-null and filtering node within the context object
* returns FILTER_ACCEPT, then set the context objects current to node
* and return node.
*/
node = node._parent;
if (node !== null &&
algorithm_1.traversal_filter(this, node) === interfaces_1.FilterResult.Accept) {
this._current = node;
return node;
}
}
/**
* 3. Return null.
*/
return null;
};
/** @inheritdoc */
TreeWalkerImpl.prototype.firstChild = function () {
/**
* The firstChild() method, when invoked, must traverse children with the
* context object and first.
*/
return algorithm_1.treeWalker_traverseChildren(this, true);
};
/** @inheritdoc */
TreeWalkerImpl.prototype.lastChild = function () {
/**
* The lastChild() method, when invoked, must traverse children with the
* context object and last.
*/
return algorithm_1.treeWalker_traverseChildren(this, false);
};
/** @inheritdoc */
TreeWalkerImpl.prototype.nextSibling = function () {
/**
* The nextSibling() method, when invoked, must traverse siblings with the
* context object and next.
*/
return algorithm_1.treeWalker_traverseSiblings(this, true);
};
/** @inheritdoc */
TreeWalkerImpl.prototype.previousNode = function () {
/**
* 1. Let node be the context objects current.
* 2. While node is not the context objects root:
*/
var node = this._current;
while (node !== this._root) {
/**
* 2.1. Let sibling be nodes previous sibling.
* 2.2. While sibling is non-null:
*/
var sibling = node._previousSibling;
while (sibling) {
/**
* 2.2.1. Set node to sibling.
* 2.2.2. Let result be the result of filtering node within the context
* object.
*/
node = sibling;
var result = algorithm_1.traversal_filter(this, node);
/**
* 2.2.3. While result is not FILTER_REJECT and node has a child:
*/
while (result !== interfaces_1.FilterResult.Reject && node._lastChild) {
/**
* 2.2.3.1. Set node to nodes last child.
* 2.2.3.2. Set result to the result of filtering node within the
* context object.
*/
node = node._lastChild;
result = algorithm_1.traversal_filter(this, node);
}
/**
* 2.2.4. If result is FILTER_ACCEPT, then set the context objects
* current to node and return node.
*/
if (result === interfaces_1.FilterResult.Accept) {
this._current = node;
return node;
}
/**
* 2.2.5. Set sibling to nodes previous sibling.
*/
sibling = node._previousSibling;
}
/**
* 2.3. If node is the context objects root or nodes parent is null,
* then return null.
*/
if (node === this._root || node._parent === null) {
return null;
}
/**
* 2.4. Set node to nodes parent.
*/
node = node._parent;
/**
* 2.5. If the return value of filtering node within the context object is
* FILTER_ACCEPT, then set the context objects current to node and
* return node.
*/
if (algorithm_1.traversal_filter(this, node) === interfaces_1.FilterResult.Accept) {
this._current = node;
return node;
}
}
/**
* 3. Return null.
*/
return null;
};
/** @inheritdoc */
TreeWalkerImpl.prototype.previousSibling = function () {
/**
* The previousSibling() method, when invoked, must traverse siblings with
* the context object and previous.
*/
return algorithm_1.treeWalker_traverseSiblings(this, false);
};
/** @inheritdoc */
TreeWalkerImpl.prototype.nextNode = function () {
/**
* 1. Let node be the context objects current.
* 2. Let result be FILTER_ACCEPT.
* 3. While true:
*/
var node = this._current;
var result = interfaces_1.FilterResult.Accept;
while (true) {
/**
* 3.1. While result is not FILTER_REJECT and node has a child:
*/
while (result !== interfaces_1.FilterResult.Reject && node._firstChild) {
/**
* 3.1.1. Set node to its first child.
* 3.1.2. Set result to the result of filtering node within the context
* object.
* 3.1.3. If result is FILTER_ACCEPT, then set the context objects
* current to node and return node.
*/
node = node._firstChild;
result = algorithm_1.traversal_filter(this, node);
if (result === interfaces_1.FilterResult.Accept) {
this._current = node;
return node;
}
}
/**
* 3.2. Let sibling be null.
* 3.3. Let temporary be node.
* 3.4. While temporary is non-null:
*/
var sibling = null;
var temporary = node;
while (temporary !== null) {
/**
* 3.4.1. If temporary is the context objects root, then return null.
*/
if (temporary === this._root) {
return null;
}
/**
* 3.4.2. Set sibling to temporarys next sibling.
* 3.4.3. If sibling is non-null, then break.
*/
sibling = temporary._nextSibling;
if (sibling !== null) {
node = sibling;
break;
}
/**
* 3.4.4. Set temporary to temporarys parent.
*/
temporary = temporary._parent;
}
/**
* 3.5. Set result to the result of filtering node within the context object.
* 3.6. If result is FILTER_ACCEPT, then set the context objects current
* to node and return node.
*/
result = algorithm_1.traversal_filter(this, node);
if (result === interfaces_1.FilterResult.Accept) {
this._current = node;
return node;
}
}
};
/**
* Creates a new `TreeWalker`.
*
* @param root - iterator's root node
* @param current - current node
*/
TreeWalkerImpl._create = function (root, current) {
return new TreeWalkerImpl(root, current);
};
return TreeWalkerImpl;
}(TraverserImpl_1.TraverserImpl));
exports.TreeWalkerImpl = TreeWalkerImpl;
//# sourceMappingURL=TreeWalkerImpl.js.map
/***/ }),
/* 647 */,
/* 648 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var util_1 = __webpack_require__(592);
var CreateAlgorithm_1 = __webpack_require__(86);
/**
* Represents an object implementing DOM algorithms.
*/
var DOMImpl = /** @class */ (function () {
/**
* Initializes a new instance of `DOM`.
*/
function DOMImpl() {
this._features = {
mutationObservers: true,
customElements: true,
slots: true,
steps: true
};
this._window = null;
this._compareCache = new util_1.CompareCache();
this._rangeList = new util_1.FixedSizeSet();
}
/**
* Sets DOM algorithm features.
*
* @param features - DOM features supported by algorithms. All features are
* enabled by default unless explicity disabled.
*/
DOMImpl.prototype.setFeatures = function (features) {
if (features === undefined)
features = true;
if (util_1.isObject(features)) {
for (var key in features) {
this._features[key] = features[key] || false;
}
}
else {
// enable/disable all features
for (var key in this._features) {
this._features[key] = features;
}
}
};
Object.defineProperty(DOMImpl.prototype, "features", {
/**
* Gets DOM algorithm features.
*/
get: function () { return this._features; },
enumerable: true,
configurable: true
});
Object.defineProperty(DOMImpl.prototype, "window", {
/**
* Gets the DOM window.
*/
get: function () {
if (this._window === null) {
this._window = CreateAlgorithm_1.create_window();
}
return this._window;
},
enumerable: true,
configurable: true
});
Object.defineProperty(DOMImpl.prototype, "compareCache", {
/**
* Gets the global node compare cache.
*/
get: function () { return this._compareCache; },
enumerable: true,
configurable: true
});
Object.defineProperty(DOMImpl.prototype, "rangeList", {
/**
* Gets the global range list.
*/
get: function () { return this._rangeList; },
enumerable: true,
configurable: true
});
Object.defineProperty(DOMImpl, "instance", {
/**
* Returns the instance of `DOM`.
*/
get: function () {
if (!DOMImpl._instance) {
DOMImpl._instance = new DOMImpl();
}
return DOMImpl._instance;
},
enumerable: true,
configurable: true
});
return DOMImpl;
}());
/**
* Represents an object implementing DOM algorithms.
*/
exports.dom = DOMImpl.instance;
//# sourceMappingURL=DOMImpl.js.map
/***/ }),
/* 649 */,
/* 650 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const parse = __webpack_require__(830)
const prerelease = (version, options) => {
const parsed = parse(version, options)
return (parsed && parsed.prerelease.length) ? parsed.prerelease : null
}
module.exports = prerelease
/***/ }),
/* 651 */,
/* 652 */,
/* 653 */,
/* 654 */,
/* 655 */,
/* 656 */,
/* 657 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __spread = (this && this.__spread) || function () {
for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
return ar;
};
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
var util_1 = __webpack_require__(592);
/**
* Adds the given item to the end of the list.
*
* @param list - a list
* @param item - an item
*/
function append(list, item) {
list.push(item);
}
exports.append = append;
/**
* Extends a list by appending all items from another list.
*
* @param listA - a list to extend
* @param listB - a list containing items to append to `listA`
*/
function extend(listA, listB) {
listA.push.apply(listA, __spread(listB));
}
exports.extend = extend;
/**
* Inserts the given item to the start of the list.
*
* @param list - a list
* @param item - an item
*/
function prepend(list, item) {
list.unshift(item);
}
exports.prepend = prepend;
/**
* Replaces the given item or all items matching condition with a new item.
*
* @param list - a list
* @param conditionOrItem - an item to replace or a condition matching items
* to replace
* @param item - an item
*/
function replace(list, conditionOrItem, newItem) {
var e_1, _a;
var i = 0;
try {
for (var list_1 = __values(list), list_1_1 = list_1.next(); !list_1_1.done; list_1_1 = list_1.next()) {
var oldItem = list_1_1.value;
if (util_1.isFunction(conditionOrItem)) {
if (!!conditionOrItem.call(null, oldItem)) {
list[i] = newItem;
}
}
else if (oldItem === conditionOrItem) {
list[i] = newItem;
return;
}
i++;
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (list_1_1 && !list_1_1.done && (_a = list_1.return)) _a.call(list_1);
}
finally { if (e_1) throw e_1.error; }
}
}
exports.replace = replace;
/**
* Inserts the given item before the given index.
*
* @param list - a list
* @param item - an item
*/
function insert(list, item, index) {
list.splice(index, 0, item);
}
exports.insert = insert;
/**
* Removes the given item or all items matching condition.
*
* @param list - a list
* @param conditionOrItem - an item to remove or a condition matching items
* to remove
*/
function remove(list, conditionOrItem) {
var i = list.length;
while (i--) {
var oldItem = list[i];
if (util_1.isFunction(conditionOrItem)) {
if (!!conditionOrItem.call(null, oldItem)) {
list.splice(i, 1);
}
}
else if (oldItem === conditionOrItem) {
list.splice(i, 1);
return;
}
}
}
exports.remove = remove;
/**
* Removes all items from the list.
*/
function empty(list) {
list.length = 0;
}
exports.empty = empty;
/**
* Determines if the list contains the given item or any items matching
* condition.
*
* @param list - a list
* @param conditionOrItem - an item to a condition to match
*/
function contains(list, conditionOrItem) {
var e_2, _a;
try {
for (var list_2 = __values(list), list_2_1 = list_2.next(); !list_2_1.done; list_2_1 = list_2.next()) {
var oldItem = list_2_1.value;
if (util_1.isFunction(conditionOrItem)) {
if (!!conditionOrItem.call(null, oldItem)) {
return true;
}
}
else if (oldItem === conditionOrItem) {
return true;
}
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (list_2_1 && !list_2_1.done && (_a = list_2.return)) _a.call(list_2);
}
finally { if (e_2) throw e_2.error; }
}
return false;
}
exports.contains = contains;
/**
* Returns the count of items in the list matching the given condition.
*
* @param list - a list
* @param condition - an optional condition to match
*/
function size(list, condition) {
var e_3, _a;
if (condition === undefined) {
return list.length;
}
else {
var count = 0;
try {
for (var list_3 = __values(list), list_3_1 = list_3.next(); !list_3_1.done; list_3_1 = list_3.next()) {
var item = list_3_1.value;
if (!!condition.call(null, item)) {
count++;
}
}
}
catch (e_3_1) { e_3 = { error: e_3_1 }; }
finally {
try {
if (list_3_1 && !list_3_1.done && (_a = list_3.return)) _a.call(list_3);
}
finally { if (e_3) throw e_3.error; }
}
return count;
}
}
exports.size = size;
/**
* Determines if the list is empty.
*
* @param list - a list
*/
function isEmpty(list) {
return list.length === 0;
}
exports.isEmpty = isEmpty;
/**
* Returns an iterator for the items of the list.
*
* @param list - a list
* @param condition - an optional condition to match
*/
function forEach(list, condition) {
var list_4, list_4_1, item, e_4_1;
var e_4, _a;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
if (!(condition === undefined)) return [3 /*break*/, 2];
return [5 /*yield**/, __values(list)];
case 1:
_b.sent();
return [3 /*break*/, 9];
case 2:
_b.trys.push([2, 7, 8, 9]);
list_4 = __values(list), list_4_1 = list_4.next();
_b.label = 3;
case 3:
if (!!list_4_1.done) return [3 /*break*/, 6];
item = list_4_1.value;
if (!!!condition.call(null, item)) return [3 /*break*/, 5];
return [4 /*yield*/, item];
case 4:
_b.sent();
_b.label = 5;
case 5:
list_4_1 = list_4.next();
return [3 /*break*/, 3];
case 6: return [3 /*break*/, 9];
case 7:
e_4_1 = _b.sent();
e_4 = { error: e_4_1 };
return [3 /*break*/, 9];
case 8:
try {
if (list_4_1 && !list_4_1.done && (_a = list_4.return)) _a.call(list_4);
}
finally { if (e_4) throw e_4.error; }
return [7 /*endfinally*/];
case 9: return [2 /*return*/];
}
});
}
exports.forEach = forEach;
/**
* Creates and returns a shallow clone of list.
*
* @param list - a list
*/
function clone(list) {
return new (Array.bind.apply(Array, __spread([void 0], list)))();
}
exports.clone = clone;
/**
* Returns a new list containing items from the list sorted in ascending
* order.
*
* @param list - a list
* @param lessThanAlgo - a function that returns `true` if its first argument
* is less than its second argument, and `false` otherwise.
*/
function sortInAscendingOrder(list, lessThanAlgo) {
return list.sort(function (itemA, itemB) {
return lessThanAlgo.call(null, itemA, itemB) ? -1 : 1;
});
}
exports.sortInAscendingOrder = sortInAscendingOrder;
/**
* Returns a new list containing items from the list sorted in descending
* order.
*
* @param list - a list
* @param lessThanAlgo - a function that returns `true` if its first argument
* is less than its second argument, and `false` otherwise.
*/
function sortInDescendingOrder(list, lessThanAlgo) {
return list.sort(function (itemA, itemB) {
return lessThanAlgo.call(null, itemA, itemB) ? 1 : -1;
});
}
exports.sortInDescendingOrder = sortInDescendingOrder;
//# sourceMappingURL=List.js.map
/***/ }),
/* 658 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const os = __importStar(__webpack_require__(87));
const events = __importStar(__webpack_require__(614));
const child = __importStar(__webpack_require__(129));
const path = __importStar(__webpack_require__(622));
const io = __importStar(__webpack_require__(1));
const ioUtil = __importStar(__webpack_require__(672));
/* eslint-disable @typescript-eslint/unbound-method */
const IS_WINDOWS = process.platform === 'win32';
/*
* Class for running command line tools. Handles quoting and arg parsing in a platform agnostic way.
*/
class ToolRunner extends events.EventEmitter {
constructor(toolPath, args, options) {
super();
if (!toolPath) {
throw new Error("Parameter 'toolPath' cannot be null or empty.");
}
this.toolPath = toolPath;
this.args = args || [];
this.options = options || {};
}
_debug(message) {
if (this.options.listeners && this.options.listeners.debug) {
this.options.listeners.debug(message);
}
}
_getCommandString(options, noPrefix) {
const toolPath = this._getSpawnFileName();
const args = this._getSpawnArgs(options);
let cmd = noPrefix ? '' : '[command]'; // omit prefix when piped to a second tool
if (IS_WINDOWS) {
// Windows + cmd file
if (this._isCmdFile()) {
cmd += toolPath;
for (const a of args) {
cmd += ` ${a}`;
}
}
// Windows + verbatim
else if (options.windowsVerbatimArguments) {
cmd += `"${toolPath}"`;
for (const a of args) {
cmd += ` ${a}`;
}
}
// Windows (regular)
else {
cmd += this._windowsQuoteCmdArg(toolPath);
for (const a of args) {
cmd += ` ${this._windowsQuoteCmdArg(a)}`;
}
}
}
else {
// OSX/Linux - this can likely be improved with some form of quoting.
// creating processes on Unix is fundamentally different than Windows.
// on Unix, execvp() takes an arg array.
cmd += toolPath;
for (const a of args) {
cmd += ` ${a}`;
}
}
return cmd;
}
_processLineBuffer(data, strBuffer, onLine) {
try {
let s = strBuffer + data.toString();
let n = s.indexOf(os.EOL);
while (n > -1) {
const line = s.substring(0, n);
onLine(line);
// the rest of the string ...
s = s.substring(n + os.EOL.length);
n = s.indexOf(os.EOL);
}
strBuffer = s;
}
catch (err) {
// streaming lines to console is best effort. Don't fail a build.
this._debug(`error processing line. Failed with error ${err}`);
}
}
_getSpawnFileName() {
if (IS_WINDOWS) {
if (this._isCmdFile()) {
return process.env['COMSPEC'] || 'cmd.exe';
}
}
return this.toolPath;
}
_getSpawnArgs(options) {
if (IS_WINDOWS) {
if (this._isCmdFile()) {
let argline = `/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`;
for (const a of this.args) {
argline += ' ';
argline += options.windowsVerbatimArguments
? a
: this._windowsQuoteCmdArg(a);
}
argline += '"';
return [argline];
}
}
return this.args;
}
_endsWith(str, end) {
return str.endsWith(end);
}
_isCmdFile() {
const upperToolPath = this.toolPath.toUpperCase();
return (this._endsWith(upperToolPath, '.CMD') ||
this._endsWith(upperToolPath, '.BAT'));
}
_windowsQuoteCmdArg(arg) {
// for .exe, apply the normal quoting rules that libuv applies
if (!this._isCmdFile()) {
return this._uvQuoteCmdArg(arg);
}
// otherwise apply quoting rules specific to the cmd.exe command line parser.
// the libuv rules are generic and are not designed specifically for cmd.exe
// command line parser.
//
// for a detailed description of the cmd.exe command line parser, refer to
// http://stackoverflow.com/questions/4094699/how-does-the-windows-command-interpreter-cmd-exe-parse-scripts/7970912#7970912
// need quotes for empty arg
if (!arg) {
return '""';
}
// determine whether the arg needs to be quoted
const cmdSpecialChars = [
' ',
'\t',
'&',
'(',
')',
'[',
']',
'{',
'}',
'^',
'=',
';',
'!',
"'",
'+',
',',
'`',
'~',
'|',
'<',
'>',
'"'
];
let needsQuotes = false;
for (const char of arg) {
if (cmdSpecialChars.some(x => x === char)) {
needsQuotes = true;
break;
}
}
// short-circuit if quotes not needed
if (!needsQuotes) {
return arg;
}
// the following quoting rules are very similar to the rules that by libuv applies.
//
// 1) wrap the string in quotes
//
// 2) double-up quotes - i.e. " => ""
//
// this is different from the libuv quoting rules. libuv replaces " with \", which unfortunately
// doesn't work well with a cmd.exe command line.
//
// note, replacing " with "" also works well if the arg is passed to a downstream .NET console app.
// for example, the command line:
// foo.exe "myarg:""my val"""
// is parsed by a .NET console app into an arg array:
// [ "myarg:\"my val\"" ]
// which is the same end result when applying libuv quoting rules. although the actual
// command line from libuv quoting rules would look like:
// foo.exe "myarg:\"my val\""
//
// 3) double-up slashes that precede a quote,
// e.g. hello \world => "hello \world"
// hello\"world => "hello\\""world"
// hello\\"world => "hello\\\\""world"
// hello world\ => "hello world\\"
//
// technically this is not required for a cmd.exe command line, or the batch argument parser.
// the reasons for including this as a .cmd quoting rule are:
//
// a) this is optimized for the scenario where the argument is passed from the .cmd file to an
// external program. many programs (e.g. .NET console apps) rely on the slash-doubling rule.
//
// b) it's what we've been doing previously (by deferring to node default behavior) and we
// haven't heard any complaints about that aspect.
//
// note, a weakness of the quoting rules chosen here, is that % is not escaped. in fact, % cannot be
// escaped when used on the command line directly - even though within a .cmd file % can be escaped
// by using %%.
//
// the saving grace is, on the command line, %var% is left as-is if var is not defined. this contrasts
// the line parsing rules within a .cmd file, where if var is not defined it is replaced with nothing.
//
// one option that was explored was replacing % with ^% - i.e. %var% => ^%var^%. this hack would
// often work, since it is unlikely that var^ would exist, and the ^ character is removed when the
// variable is used. the problem, however, is that ^ is not removed when %* is used to pass the args
// to an external program.
//
// an unexplored potential solution for the % escaping problem, is to create a wrapper .cmd file.
// % can be escaped within a .cmd file.
let reverse = '"';
let quoteHit = true;
for (let i = arg.length; i > 0; i--) {
// walk the string in reverse
reverse += arg[i - 1];
if (quoteHit && arg[i - 1] === '\\') {
reverse += '\\'; // double the slash
}
else if (arg[i - 1] === '"') {
quoteHit = true;
reverse += '"'; // double the quote
}
else {
quoteHit = false;
}
}
reverse += '"';
return reverse
.split('')
.reverse()
.join('');
}
_uvQuoteCmdArg(arg) {
// Tool runner wraps child_process.spawn() and needs to apply the same quoting as
// Node in certain cases where the undocumented spawn option windowsVerbatimArguments
// is used.
//
// Since this function is a port of quote_cmd_arg from Node 4.x (technically, lib UV,
// see https://github.com/nodejs/node/blob/v4.x/deps/uv/src/win/process.c for details),
// pasting copyright notice from Node within this function:
//
// Copyright Joyent, Inc. and other Node contributors. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to
// deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
// IN THE SOFTWARE.
if (!arg) {
// Need double quotation for empty argument
return '""';
}
if (!arg.includes(' ') && !arg.includes('\t') && !arg.includes('"')) {
// No quotation needed
return arg;
}
if (!arg.includes('"') && !arg.includes('\\')) {
// No embedded double quotes or backslashes, so I can just wrap
// quote marks around the whole thing.
return `"${arg}"`;
}
// Expected input/output:
// input : hello"world
// output: "hello\"world"
// input : hello""world
// output: "hello\"\"world"
// input : hello\world
// output: hello\world
// input : hello\\world
// output: hello\\world
// input : hello\"world
// output: "hello\\\"world"
// input : hello\\"world
// output: "hello\\\\\"world"
// input : hello world\
// output: "hello world\\" - note the comment in libuv actually reads "hello world\"
// but it appears the comment is wrong, it should be "hello world\\"
let reverse = '"';
let quoteHit = true;
for (let i = arg.length; i > 0; i--) {
// walk the string in reverse
reverse += arg[i - 1];
if (quoteHit && arg[i - 1] === '\\') {
reverse += '\\';
}
else if (arg[i - 1] === '"') {
quoteHit = true;
reverse += '\\';
}
else {
quoteHit = false;
}
}
reverse += '"';
return reverse
.split('')
.reverse()
.join('');
}
_cloneExecOptions(options) {
options = options || {};
const result = {
cwd: options.cwd || process.cwd(),
env: options.env || process.env,
silent: options.silent || false,
windowsVerbatimArguments: options.windowsVerbatimArguments || false,
failOnStdErr: options.failOnStdErr || false,
ignoreReturnCode: options.ignoreReturnCode || false,
delay: options.delay || 10000
};
result.outStream = options.outStream || process.stdout;
result.errStream = options.errStream || process.stderr;
return result;
}
_getSpawnOptions(options, toolPath) {
options = options || {};
const result = {};
result.cwd = options.cwd;
result.env = options.env;
result['windowsVerbatimArguments'] =
options.windowsVerbatimArguments || this._isCmdFile();
if (options.windowsVerbatimArguments) {
result.argv0 = `"${toolPath}"`;
}
return result;
}
/**
* Exec a tool.
* Output will be streamed to the live console.
* Returns promise with return code
*
* @param tool path to tool to exec
* @param options optional exec options. See ExecOptions
* @returns number
*/
exec() {
return __awaiter(this, void 0, void 0, function* () {
// root the tool path if it is unrooted and contains relative pathing
if (!ioUtil.isRooted(this.toolPath) &&
(this.toolPath.includes('/') ||
(IS_WINDOWS && this.toolPath.includes('\\')))) {
// prefer options.cwd if it is specified, however options.cwd may also need to be rooted
this.toolPath = path.resolve(process.cwd(), this.options.cwd || process.cwd(), this.toolPath);
}
// if the tool is only a file name, then resolve it from the PATH
// otherwise verify it exists (add extension on Windows if necessary)
this.toolPath = yield io.which(this.toolPath, true);
return new Promise((resolve, reject) => {
this._debug(`exec tool: ${this.toolPath}`);
this._debug('arguments:');
for (const arg of this.args) {
this._debug(` ${arg}`);
}
const optionsNonNull = this._cloneExecOptions(this.options);
if (!optionsNonNull.silent && optionsNonNull.outStream) {
optionsNonNull.outStream.write(this._getCommandString(optionsNonNull) + os.EOL);
}
const state = new ExecState(optionsNonNull, this.toolPath);
state.on('debug', (message) => {
this._debug(message);
});
const fileName = this._getSpawnFileName();
const cp = child.spawn(fileName, this._getSpawnArgs(optionsNonNull), this._getSpawnOptions(this.options, fileName));
const stdbuffer = '';
if (cp.stdout) {
cp.stdout.on('data', (data) => {
if (this.options.listeners && this.options.listeners.stdout) {
this.options.listeners.stdout(data);
}
if (!optionsNonNull.silent && optionsNonNull.outStream) {
optionsNonNull.outStream.write(data);
}
this._processLineBuffer(data, stdbuffer, (line) => {
if (this.options.listeners && this.options.listeners.stdline) {
this.options.listeners.stdline(line);
}
});
});
}
const errbuffer = '';
if (cp.stderr) {
cp.stderr.on('data', (data) => {
state.processStderr = true;
if (this.options.listeners && this.options.listeners.stderr) {
this.options.listeners.stderr(data);
}
if (!optionsNonNull.silent &&
optionsNonNull.errStream &&
optionsNonNull.outStream) {
const s = optionsNonNull.failOnStdErr
? optionsNonNull.errStream
: optionsNonNull.outStream;
s.write(data);
}
this._processLineBuffer(data, errbuffer, (line) => {
if (this.options.listeners && this.options.listeners.errline) {
this.options.listeners.errline(line);
}
});
});
}
cp.on('error', (err) => {
state.processError = err.message;
state.processExited = true;
state.processClosed = true;
state.CheckComplete();
});
cp.on('exit', (code) => {
state.processExitCode = code;
state.processExited = true;
this._debug(`Exit code ${code} received from tool '${this.toolPath}'`);
state.CheckComplete();
});
cp.on('close', (code) => {
state.processExitCode = code;
state.processExited = true;
state.processClosed = true;
this._debug(`STDIO streams have closed for tool '${this.toolPath}'`);
state.CheckComplete();
});
state.on('done', (error, exitCode) => {
if (stdbuffer.length > 0) {
this.emit('stdline', stdbuffer);
}
if (errbuffer.length > 0) {
this.emit('errline', errbuffer);
}
cp.removeAllListeners();
if (error) {
reject(error);
}
else {
resolve(exitCode);
}
});
if (this.options.input) {
if (!cp.stdin) {
throw new Error('child process missing stdin');
}
cp.stdin.end(this.options.input);
}
});
});
}
}
exports.ToolRunner = ToolRunner;
/**
* Convert an arg string to an array of args. Handles escaping
*
* @param argString string of arguments
* @returns string[] array of arguments
*/
function argStringToArray(argString) {
const args = [];
let inQuotes = false;
let escaped = false;
let arg = '';
function append(c) {
// we only escape double quotes.
if (escaped && c !== '"') {
arg += '\\';
}
arg += c;
escaped = false;
}
for (let i = 0; i < argString.length; i++) {
const c = argString.charAt(i);
if (c === '"') {
if (!escaped) {
inQuotes = !inQuotes;
}
else {
append(c);
}
continue;
}
if (c === '\\' && escaped) {
append(c);
continue;
}
if (c === '\\' && inQuotes) {
escaped = true;
continue;
}
if (c === ' ' && !inQuotes) {
if (arg.length > 0) {
args.push(arg);
arg = '';
}
continue;
}
append(c);
}
if (arg.length > 0) {
args.push(arg.trim());
}
return args;
}
exports.argStringToArray = argStringToArray;
class ExecState extends events.EventEmitter {
constructor(options, toolPath) {
super();
this.processClosed = false; // tracks whether the process has exited and stdio is closed
this.processError = '';
this.processExitCode = 0;
this.processExited = false; // tracks whether the process has exited
this.processStderr = false; // tracks whether stderr was written to
this.delay = 10000; // 10 seconds
this.done = false;
this.timeout = null;
if (!toolPath) {
throw new Error('toolPath must not be empty');
}
this.options = options;
this.toolPath = toolPath;
if (options.delay) {
this.delay = options.delay;
}
}
CheckComplete() {
if (this.done) {
return;
}
if (this.processClosed) {
this._setResult();
}
else if (this.processExited) {
this.timeout = setTimeout(ExecState.HandleTimeout, this.delay, this);
}
}
_debug(message) {
this.emit('debug', message);
}
_setResult() {
// determine whether there is an error
let error;
if (this.processExited) {
if (this.processError) {
error = new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`);
}
else if (this.processExitCode !== 0 && !this.options.ignoreReturnCode) {
error = new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`);
}
else if (this.processStderr && this.options.failOnStdErr) {
error = new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`);
}
}
// clear the timeout
if (this.timeout) {
clearTimeout(this.timeout);
this.timeout = null;
}
this.done = true;
this.emit('done', error, this.processExitCode);
}
static HandleTimeout(state) {
if (state.done) {
return;
}
if (!state.processClosed && state.processExited) {
const message = `The STDIO streams did not close within ${state.delay /
1000} seconds of the exit event from process '${state.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`;
state._debug(message);
}
state._setResult();
}
}
//# sourceMappingURL=toolrunner.js.map
/***/ }),
/* 659 */,
/* 660 */,
/* 661 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var DocumentImpl_1 = __webpack_require__(488);
/**
* Represents an XML document.
*/
var XMLDocumentImpl = /** @class */ (function (_super) {
__extends(XMLDocumentImpl, _super);
/**
* Initializes a new instance of `XMLDocument`.
*/
function XMLDocumentImpl() {
return _super.call(this) || this;
}
return XMLDocumentImpl;
}(DocumentImpl_1.DocumentImpl));
exports.XMLDocumentImpl = XMLDocumentImpl;
//# sourceMappingURL=XMLDocumentImpl.js.map
/***/ }),
/* 662 */,
/* 663 */,
/* 664 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var DOMException_1 = __webpack_require__(35);
var infra_1 = __webpack_require__(23);
var XMLAlgorithm_1 = __webpack_require__(442);
/**
* Validates the given qualified name.
*
* @param qualifiedName - qualified name
*/
function namespace_validate(qualifiedName) {
/**
* To validate a qualifiedName, throw an "InvalidCharacterError"
* DOMException if qualifiedName does not match the Name or QName
* production.
*/
if (!XMLAlgorithm_1.xml_isName(qualifiedName))
throw new DOMException_1.InvalidCharacterError("Invalid XML name: " + qualifiedName);
if (!XMLAlgorithm_1.xml_isQName(qualifiedName))
throw new DOMException_1.InvalidCharacterError("Invalid XML qualified name: " + qualifiedName + ".");
}
exports.namespace_validate = namespace_validate;
/**
* Validates and extracts a namespace, prefix and localName from the
* given namespace and qualified name.
* See: https://dom.spec.whatwg.org/#validate-and-extract.
*
* @param namespace - namespace
* @param qualifiedName - qualified name
*
* @returns a tuple with `namespace`, `prefix` and `localName`.
*/
function namespace_validateAndExtract(namespace, qualifiedName) {
/**
* 1. If namespace is the empty string, set it to null.
* 2. Validate qualifiedName.
* 3. Let prefix be null.
* 4. Let localName be qualifiedName.
* 5. If qualifiedName contains a ":" (U+003E), then split the string on it
* and set prefix to the part before and localName to the part after.
* 6. If prefix is non-null and namespace is null, then throw a
* "NamespaceError" DOMException.
* 7. If prefix is "xml" and namespace is not the XML namespace, then throw
* a "NamespaceError" DOMException.
* 8. If either qualifiedName or prefix is "xmlns" and namespace is not the
* XMLNS namespace, then throw a "NamespaceError" DOMException.
* 9. If namespace is the XMLNS namespace and neither qualifiedName nor
* prefix is "xmlns", then throw a "NamespaceError" DOMException.
* 10. Return namespace, prefix, and localName.
*/
if (!namespace)
namespace = null;
namespace_validate(qualifiedName);
var parts = qualifiedName.split(':');
var prefix = (parts.length === 2 ? parts[0] : null);
var localName = (parts.length === 2 ? parts[1] : qualifiedName);
if (prefix && namespace === null)
throw new DOMException_1.NamespaceError("Qualified name includes a prefix but the namespace is null.");
if (prefix === "xml" && namespace !== infra_1.namespace.XML)
throw new DOMException_1.NamespaceError("Qualified name includes the \"xml\" prefix but the namespace is not the XML namespace.");
if (namespace !== infra_1.namespace.XMLNS &&
(prefix === "xmlns" || qualifiedName === "xmlns"))
throw new DOMException_1.NamespaceError("Qualified name includes the \"xmlns\" prefix but the namespace is not the XMLNS namespace.");
if (namespace === infra_1.namespace.XMLNS &&
(prefix !== "xmlns" && qualifiedName !== "xmlns"))
throw new DOMException_1.NamespaceError("Qualified name does not include the \"xmlns\" prefix but the namespace is the XMLNS namespace.");
return [namespace, prefix, localName];
}
exports.namespace_validateAndExtract = namespace_validateAndExtract;
/**
* Extracts a prefix and localName from the given qualified name.
*
* @param qualifiedName - qualified name
*
* @returns an tuple with `prefix` and `localName`.
*/
function namespace_extractQName(qualifiedName) {
namespace_validate(qualifiedName);
var parts = qualifiedName.split(':');
var prefix = (parts.length === 2 ? parts[0] : null);
var localName = (parts.length === 2 ? parts[1] : qualifiedName);
return [prefix, localName];
}
exports.namespace_extractQName = namespace_extractQName;
//# sourceMappingURL=NamespaceAlgorithm.js.map
/***/ }),
/* 665 */,
/* 666 */,
/* 667 */,
/* 668 */,
/* 669 */
/***/ (function(module) {
module.exports = require("util");
/***/ }),
/* 670 */,
/* 671 */,
/* 672 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
const assert_1 = __webpack_require__(357);
const fs = __webpack_require__(747);
const path = __webpack_require__(622);
_a = fs.promises, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink;
exports.IS_WINDOWS = process.platform === 'win32';
function exists(fsPath) {
return __awaiter(this, void 0, void 0, function* () {
try {
yield exports.stat(fsPath);
}
catch (err) {
if (err.code === 'ENOENT') {
return false;
}
throw err;
}
return true;
});
}
exports.exists = exists;
function isDirectory(fsPath, useStat = false) {
return __awaiter(this, void 0, void 0, function* () {
const stats = useStat ? yield exports.stat(fsPath) : yield exports.lstat(fsPath);
return stats.isDirectory();
});
}
exports.isDirectory = isDirectory;
/**
* On OSX/Linux, true if path starts with '/'. On Windows, true for paths like:
* \, \hello, \\hello\share, C:, and C:\hello (and corresponding alternate separator cases).
*/
function isRooted(p) {
p = normalizeSeparators(p);
if (!p) {
throw new Error('isRooted() parameter "p" cannot be empty');
}
if (exports.IS_WINDOWS) {
return (p.startsWith('\\') || /^[A-Z]:/i.test(p) // e.g. \ or \hello or \\hello
); // e.g. C: or C:\hello
}
return p.startsWith('/');
}
exports.isRooted = isRooted;
/**
* Recursively create a directory at `fsPath`.
*
* This implementation is optimistic, meaning it attempts to create the full
* path first, and backs up the path stack from there.
*
* @param fsPath The path to create
* @param maxDepth The maximum recursion depth
* @param depth The current recursion depth
*/
function mkdirP(fsPath, maxDepth = 1000, depth = 1) {
return __awaiter(this, void 0, void 0, function* () {
assert_1.ok(fsPath, 'a path argument must be provided');
fsPath = path.resolve(fsPath);
if (depth >= maxDepth)
return exports.mkdir(fsPath);
try {
yield exports.mkdir(fsPath);
return;
}
catch (err) {
switch (err.code) {
case 'ENOENT': {
yield mkdirP(path.dirname(fsPath), maxDepth, depth + 1);
yield exports.mkdir(fsPath);
return;
}
default: {
let stats;
try {
stats = yield exports.stat(fsPath);
}
catch (err2) {
throw err;
}
if (!stats.isDirectory())
throw err;
}
}
}
});
}
exports.mkdirP = mkdirP;
/**
* Best effort attempt to determine whether a file exists and is executable.
* @param filePath file path to check
* @param extensions additional file extensions to try
* @return if file exists and is executable, returns the file path. otherwise empty string.
*/
function tryGetExecutablePath(filePath, extensions) {
return __awaiter(this, void 0, void 0, function* () {
let stats = undefined;
try {
// test file exists
stats = yield exports.stat(filePath);
}
catch (err) {
if (err.code !== 'ENOENT') {
// eslint-disable-next-line no-console
console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`);
}
}
if (stats && stats.isFile()) {
if (exports.IS_WINDOWS) {
// on Windows, test for valid extension
const upperExt = path.extname(filePath).toUpperCase();
if (extensions.some(validExt => validExt.toUpperCase() === upperExt)) {
return filePath;
}
}
else {
if (isUnixExecutable(stats)) {
return filePath;
}
}
}
// try each extension
const originalFilePath = filePath;
for (const extension of extensions) {
filePath = originalFilePath + extension;
stats = undefined;
try {
stats = yield exports.stat(filePath);
}
catch (err) {
if (err.code !== 'ENOENT') {
// eslint-disable-next-line no-console
console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`);
}
}
if (stats && stats.isFile()) {
if (exports.IS_WINDOWS) {
// preserve the case of the actual file (since an extension was appended)
try {
const directory = path.dirname(filePath);
const upperName = path.basename(filePath).toUpperCase();
for (const actualName of yield exports.readdir(directory)) {
if (upperName === actualName.toUpperCase()) {
filePath = path.join(directory, actualName);
break;
}
}
}
catch (err) {
// eslint-disable-next-line no-console
console.log(`Unexpected error attempting to determine the actual case of the file '${filePath}': ${err}`);
}
return filePath;
}
else {
if (isUnixExecutable(stats)) {
return filePath;
}
}
}
}
return '';
});
}
exports.tryGetExecutablePath = tryGetExecutablePath;
function normalizeSeparators(p) {
p = p || '';
if (exports.IS_WINDOWS) {
// convert slashes on Windows
p = p.replace(/\//g, '\\');
// remove redundant slashes
return p.replace(/\\\\+/g, '\\');
}
// remove redundant slashes
return p.replace(/\/\/+/g, '/');
}
// on Mac/Linux, test the execute bit
// R W X R W X R W X
// 256 128 64 32 16 8 4 2 1
function isUnixExecutable(stats) {
return ((stats.mode & 1) > 0 ||
((stats.mode & 8) > 0 && stats.gid === process.getgid()) ||
((stats.mode & 64) > 0 && stats.uid === process.getuid()));
}
//# sourceMappingURL=io-util.js.map
/***/ }),
/* 673 */,
/* 674 */,
/* 675 */,
/* 676 */,
/* 677 */,
/* 678 */,
/* 679 */,
/* 680 */,
/* 681 */,
/* 682 */,
/* 683 */,
/* 684 */,
/* 685 */
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
/*eslint-disable no-use-before-define*/
var common = __webpack_require__(740);
var YAMLException = __webpack_require__(556);
var DEFAULT_FULL_SCHEMA = __webpack_require__(910);
var DEFAULT_SAFE_SCHEMA = __webpack_require__(723);
var _toString = Object.prototype.toString;
var _hasOwnProperty = Object.prototype.hasOwnProperty;
var CHAR_TAB = 0x09; /* Tab */
var CHAR_LINE_FEED = 0x0A; /* LF */
var CHAR_CARRIAGE_RETURN = 0x0D; /* CR */
var CHAR_SPACE = 0x20; /* Space */
var CHAR_EXCLAMATION = 0x21; /* ! */
var CHAR_DOUBLE_QUOTE = 0x22; /* " */
var CHAR_SHARP = 0x23; /* # */
var CHAR_PERCENT = 0x25; /* % */
var CHAR_AMPERSAND = 0x26; /* & */
var CHAR_SINGLE_QUOTE = 0x27; /* ' */
var CHAR_ASTERISK = 0x2A; /* * */
var CHAR_COMMA = 0x2C; /* , */
var CHAR_MINUS = 0x2D; /* - */
var CHAR_COLON = 0x3A; /* : */
var CHAR_EQUALS = 0x3D; /* = */
var CHAR_GREATER_THAN = 0x3E; /* > */
var CHAR_QUESTION = 0x3F; /* ? */
var CHAR_COMMERCIAL_AT = 0x40; /* @ */
var CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */
var CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */
var CHAR_GRAVE_ACCENT = 0x60; /* ` */
var CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */
var CHAR_VERTICAL_LINE = 0x7C; /* | */
var CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */
var ESCAPE_SEQUENCES = {};
ESCAPE_SEQUENCES[0x00] = '\\0';
ESCAPE_SEQUENCES[0x07] = '\\a';
ESCAPE_SEQUENCES[0x08] = '\\b';
ESCAPE_SEQUENCES[0x09] = '\\t';
ESCAPE_SEQUENCES[0x0A] = '\\n';
ESCAPE_SEQUENCES[0x0B] = '\\v';
ESCAPE_SEQUENCES[0x0C] = '\\f';
ESCAPE_SEQUENCES[0x0D] = '\\r';
ESCAPE_SEQUENCES[0x1B] = '\\e';
ESCAPE_SEQUENCES[0x22] = '\\"';
ESCAPE_SEQUENCES[0x5C] = '\\\\';
ESCAPE_SEQUENCES[0x85] = '\\N';
ESCAPE_SEQUENCES[0xA0] = '\\_';
ESCAPE_SEQUENCES[0x2028] = '\\L';
ESCAPE_SEQUENCES[0x2029] = '\\P';
var DEPRECATED_BOOLEANS_SYNTAX = [
'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',
'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'
];
function compileStyleMap(schema, map) {
var result, keys, index, length, tag, style, type;
if (map === null) return {};
result = {};
keys = Object.keys(map);
for (index = 0, length = keys.length; index < length; index += 1) {
tag = keys[index];
style = String(map[tag]);
if (tag.slice(0, 2) === '!!') {
tag = 'tag:yaml.org,2002:' + tag.slice(2);
}
type = schema.compiledTypeMap['fallback'][tag];
if (type && _hasOwnProperty.call(type.styleAliases, style)) {
style = type.styleAliases[style];
}
result[tag] = style;
}
return result;
}
function encodeHex(character) {
var string, handle, length;
string = character.toString(16).toUpperCase();
if (character <= 0xFF) {
handle = 'x';
length = 2;
} else if (character <= 0xFFFF) {
handle = 'u';
length = 4;
} else if (character <= 0xFFFFFFFF) {
handle = 'U';
length = 8;
} else {
throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');
}
return '\\' + handle + common.repeat('0', length - string.length) + string;
}
function State(options) {
this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;
this.indent = Math.max(1, (options['indent'] || 2));
this.noArrayIndent = options['noArrayIndent'] || false;
this.skipInvalid = options['skipInvalid'] || false;
this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);
this.styleMap = compileStyleMap(this.schema, options['styles'] || null);
this.sortKeys = options['sortKeys'] || false;
this.lineWidth = options['lineWidth'] || 80;
this.noRefs = options['noRefs'] || false;
this.noCompatMode = options['noCompatMode'] || false;
this.condenseFlow = options['condenseFlow'] || false;
this.implicitTypes = this.schema.compiledImplicit;
this.explicitTypes = this.schema.compiledExplicit;
this.tag = null;
this.result = '';
this.duplicates = [];
this.usedDuplicates = null;
}
// Indents every line in a string. Empty lines (\n only) are not indented.
function indentString(string, spaces) {
var ind = common.repeat(' ', spaces),
position = 0,
next = -1,
result = '',
line,
length = string.length;
while (position < length) {
next = string.indexOf('\n', position);
if (next === -1) {
line = string.slice(position);
position = length;
} else {
line = string.slice(position, next + 1);
position = next + 1;
}
if (line.length && line !== '\n') result += ind;
result += line;
}
return result;
}
function generateNextLine(state, level) {
return '\n' + common.repeat(' ', state.indent * level);
}
function testImplicitResolving(state, str) {
var index, length, type;
for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {
type = state.implicitTypes[index];
if (type.resolve(str)) {
return true;
}
}
return false;
}
// [33] s-white ::= s-space | s-tab
function isWhitespace(c) {
return c === CHAR_SPACE || c === CHAR_TAB;
}
// Returns true if the character can be printed without escaping.
// From YAML 1.2: "any allowed characters known to be non-printable
// should also be escaped. [However,] This isnt mandatory"
// Derived from nb-char - \t - #x85 - #xA0 - #x2028 - #x2029.
function isPrintable(c) {
return (0x00020 <= c && c <= 0x00007E)
|| ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)
|| ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)
|| (0x10000 <= c && c <= 0x10FFFF);
}
// [34] ns-char ::= nb-char - s-white
// [27] nb-char ::= c-printable - b-char - c-byte-order-mark
// [26] b-char ::= b-line-feed | b-carriage-return
// [24] b-line-feed ::= #xA /* LF */
// [25] b-carriage-return ::= #xD /* CR */
// [3] c-byte-order-mark ::= #xFEFF
function isNsChar(c) {
return isPrintable(c) && !isWhitespace(c)
// byte-order-mark
&& c !== 0xFEFF
// b-char
&& c !== CHAR_CARRIAGE_RETURN
&& c !== CHAR_LINE_FEED;
}
// Simplified test for values allowed after the first character in plain style.
function isPlainSafe(c, prev) {
// Uses a subset of nb-char - c-flow-indicator - ":" - "#"
// where nb-char ::= c-printable - b-char - c-byte-order-mark.
return isPrintable(c) && c !== 0xFEFF
// - c-flow-indicator
&& c !== CHAR_COMMA
&& c !== CHAR_LEFT_SQUARE_BRACKET
&& c !== CHAR_RIGHT_SQUARE_BRACKET
&& c !== CHAR_LEFT_CURLY_BRACKET
&& c !== CHAR_RIGHT_CURLY_BRACKET
// - ":" - "#"
// /* An ns-char preceding */ "#"
&& c !== CHAR_COLON
&& ((c !== CHAR_SHARP) || (prev && isNsChar(prev)));
}
// Simplified test for values allowed as the first character in plain style.
function isPlainSafeFirst(c) {
// Uses a subset of ns-char - c-indicator
// where ns-char = nb-char - s-white.
return isPrintable(c) && c !== 0xFEFF
&& !isWhitespace(c) // - s-white
// - (c-indicator ::=
// “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”
&& c !== CHAR_MINUS
&& c !== CHAR_QUESTION
&& c !== CHAR_COLON
&& c !== CHAR_COMMA
&& c !== CHAR_LEFT_SQUARE_BRACKET
&& c !== CHAR_RIGHT_SQUARE_BRACKET
&& c !== CHAR_LEFT_CURLY_BRACKET
&& c !== CHAR_RIGHT_CURLY_BRACKET
// | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “"”
&& c !== CHAR_SHARP
&& c !== CHAR_AMPERSAND
&& c !== CHAR_ASTERISK
&& c !== CHAR_EXCLAMATION
&& c !== CHAR_VERTICAL_LINE
&& c !== CHAR_EQUALS
&& c !== CHAR_GREATER_THAN
&& c !== CHAR_SINGLE_QUOTE
&& c !== CHAR_DOUBLE_QUOTE
// | “%” | “@” | “`”)
&& c !== CHAR_PERCENT
&& c !== CHAR_COMMERCIAL_AT
&& c !== CHAR_GRAVE_ACCENT;
}
// Determines whether block indentation indicator is required.
function needIndentIndicator(string) {
var leadingSpaceRe = /^\n* /;
return leadingSpaceRe.test(string);
}
var STYLE_PLAIN = 1,
STYLE_SINGLE = 2,
STYLE_LITERAL = 3,
STYLE_FOLDED = 4,
STYLE_DOUBLE = 5;
// Determines which scalar styles are possible and returns the preferred style.
// lineWidth = -1 => no limit.
// Pre-conditions: str.length > 0.
// Post-conditions:
// STYLE_PLAIN or STYLE_SINGLE => no \n are in the string.
// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).
// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).
function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {
var i;
var char, prev_char;
var hasLineBreak = false;
var hasFoldableLine = false; // only checked if shouldTrackWidth
var shouldTrackWidth = lineWidth !== -1;
var previousLineBreak = -1; // count the first line correctly
var plain = isPlainSafeFirst(string.charCodeAt(0))
&& !isWhitespace(string.charCodeAt(string.length - 1));
if (singleLineOnly) {
// Case: no block styles.
// Check for disallowed characters to rule out plain and single.
for (i = 0; i < string.length; i++) {
char = string.charCodeAt(i);
if (!isPrintable(char)) {
return STYLE_DOUBLE;
}
prev_char = i > 0 ? string.charCodeAt(i - 1) : null;
plain = plain && isPlainSafe(char, prev_char);
}
} else {
// Case: block styles permitted.
for (i = 0; i < string.length; i++) {
char = string.charCodeAt(i);
if (char === CHAR_LINE_FEED) {
hasLineBreak = true;
// Check if any line can be folded.
if (shouldTrackWidth) {
hasFoldableLine = hasFoldableLine ||
// Foldable line = too long, and not more-indented.
(i - previousLineBreak - 1 > lineWidth &&
string[previousLineBreak + 1] !== ' ');
previousLineBreak = i;
}
} else if (!isPrintable(char)) {
return STYLE_DOUBLE;
}
prev_char = i > 0 ? string.charCodeAt(i - 1) : null;
plain = plain && isPlainSafe(char, prev_char);
}
// in case the end is missing a \n
hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&
(i - previousLineBreak - 1 > lineWidth &&
string[previousLineBreak + 1] !== ' '));
}
// Although every style can represent \n without escaping, prefer block styles
// for multiline, since they're more readable and they don't add empty lines.
// Also prefer folding a super-long line.
if (!hasLineBreak && !hasFoldableLine) {
// Strings interpretable as another type have to be quoted;
// e.g. the string 'true' vs. the boolean true.
return plain && !testAmbiguousType(string)
? STYLE_PLAIN : STYLE_SINGLE;
}
// Edge case: block indentation indicator can only have one digit.
if (indentPerLevel > 9 && needIndentIndicator(string)) {
return STYLE_DOUBLE;
}
// At this point we know block styles are valid.
// Prefer literal style unless we want to fold.
return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;
}
// Note: line breaking/folding is implemented for only the folded style.
// NB. We drop the last trailing newline (if any) of a returned block scalar
// since the dumper adds its own newline. This always works:
// • No ending newline => unaffected; already using strip "-" chomping.
// • Ending newline => removed then restored.
// Importantly, this keeps the "+" chomp indicator from gaining an extra line.
function writeScalar(state, string, level, iskey) {
state.dump = (function () {
if (string.length === 0) {
return "''";
}
if (!state.noCompatMode &&
DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {
return "'" + string + "'";
}
var indent = state.indent * Math.max(1, level); // no 0-indent scalars
// As indentation gets deeper, let the width decrease monotonically
// to the lower bound min(state.lineWidth, 40).
// Note that this implies
// state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.
// state.lineWidth > 40 + state.indent: width decreases until the lower bound.
// This behaves better than a constant minimum width which disallows narrower options,
// or an indent threshold which causes the width to suddenly increase.
var lineWidth = state.lineWidth === -1
? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);
// Without knowing if keys are implicit/explicit, assume implicit for safety.
var singleLineOnly = iskey
// No block styles in flow mode.
|| (state.flowLevel > -1 && level >= state.flowLevel);
function testAmbiguity(string) {
return testImplicitResolving(state, string);
}
switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {
case STYLE_PLAIN:
return string;
case STYLE_SINGLE:
return "'" + string.replace(/'/g, "''") + "'";
case STYLE_LITERAL:
return '|' + blockHeader(string, state.indent)
+ dropEndingNewline(indentString(string, indent));
case STYLE_FOLDED:
return '>' + blockHeader(string, state.indent)
+ dropEndingNewline(indentString(foldString(string, lineWidth), indent));
case STYLE_DOUBLE:
return '"' + escapeString(string, lineWidth) + '"';
default:
throw new YAMLException('impossible error: invalid scalar style');
}
}());
}
// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.
function blockHeader(string, indentPerLevel) {
var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : '';
// note the special case: the string '\n' counts as a "trailing" empty line.
var clip = string[string.length - 1] === '\n';
var keep = clip && (string[string.length - 2] === '\n' || string === '\n');
var chomp = keep ? '+' : (clip ? '' : '-');
return indentIndicator + chomp + '\n';
}
// (See the note for writeScalar.)
function dropEndingNewline(string) {
return string[string.length - 1] === '\n' ? string.slice(0, -1) : string;
}
// Note: a long line without a suitable break point will exceed the width limit.
// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.
function foldString(string, width) {
// In folded style, $k$ consecutive newlines output as $k+1$ newlines—
// unless they're before or after a more-indented line, or at the very
// beginning or end, in which case $k$ maps to $k$.
// Therefore, parse each chunk as newline(s) followed by a content line.
var lineRe = /(\n+)([^\n]*)/g;
// first line (possibly an empty line)
var result = (function () {
var nextLF = string.indexOf('\n');
nextLF = nextLF !== -1 ? nextLF : string.length;
lineRe.lastIndex = nextLF;
return foldLine(string.slice(0, nextLF), width);
}());
// If we haven't reached the first content line yet, don't add an extra \n.
var prevMoreIndented = string[0] === '\n' || string[0] === ' ';
var moreIndented;
// rest of the lines
var match;
while ((match = lineRe.exec(string))) {
var prefix = match[1], line = match[2];
moreIndented = (line[0] === ' ');
result += prefix
+ (!prevMoreIndented && !moreIndented && line !== ''
? '\n' : '')
+ foldLine(line, width);
prevMoreIndented = moreIndented;
}
return result;
}
// Greedy line breaking.
// Picks the longest line under the limit each time,
// otherwise settles for the shortest line over the limit.
// NB. More-indented lines *cannot* be folded, as that would add an extra \n.
function foldLine(line, width) {
if (line === '' || line[0] === ' ') return line;
// Since a more-indented line adds a \n, breaks can't be followed by a space.
var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.
var match;
// start is an inclusive index. end, curr, and next are exclusive.
var start = 0, end, curr = 0, next = 0;
var result = '';
// Invariants: 0 <= start <= length-1.
// 0 <= curr <= next <= max(0, length-2). curr - start <= width.
// Inside the loop:
// A match implies length >= 2, so curr and next are <= length-2.
while ((match = breakRe.exec(line))) {
next = match.index;
// maintain invariant: curr - start <= width
if (next - start > width) {
end = (curr > start) ? curr : next; // derive end <= length-2
result += '\n' + line.slice(start, end);
// skip the space that was output as \n
start = end + 1; // derive start <= length-1
}
curr = next;
}
// By the invariants, start <= length-1, so there is something left over.
// It is either the whole string or a part starting from non-whitespace.
result += '\n';
// Insert a break if the remainder is too long and there is a break available.
if (line.length - start > width && curr > start) {
result += line.slice(start, curr) + '\n' + line.slice(curr + 1);
} else {
result += line.slice(start);
}
return result.slice(1); // drop extra \n joiner
}
// Escapes a double-quoted string.
function escapeString(string) {
var result = '';
var char, nextChar;
var escapeSeq;
for (var i = 0; i < string.length; i++) {
char = string.charCodeAt(i);
// Check for surrogate pairs (reference Unicode 3.0 section "3.7 Surrogates").
if (char >= 0xD800 && char <= 0xDBFF/* high surrogate */) {
nextChar = string.charCodeAt(i + 1);
if (nextChar >= 0xDC00 && nextChar <= 0xDFFF/* low surrogate */) {
// Combine the surrogate pair and store it escaped.
result += encodeHex((char - 0xD800) * 0x400 + nextChar - 0xDC00 + 0x10000);
// Advance index one extra since we already used that char here.
i++; continue;
}
}
escapeSeq = ESCAPE_SEQUENCES[char];
result += !escapeSeq && isPrintable(char)
? string[i]
: escapeSeq || encodeHex(char);
}
return result;
}
function writeFlowSequence(state, level, object) {
var _result = '',
_tag = state.tag,
index,
length;
for (index = 0, length = object.length; index < length; index += 1) {
// Write only valid elements.
if (writeNode(state, level, object[index], false, false)) {
if (index !== 0) _result += ',' + (!state.condenseFlow ? ' ' : '');
_result += state.dump;
}
}
state.tag = _tag;
state.dump = '[' + _result + ']';
}
function writeBlockSequence(state, level, object, compact) {
var _result = '',
_tag = state.tag,
index,
length;
for (index = 0, length = object.length; index < length; index += 1) {
// Write only valid elements.
if (writeNode(state, level + 1, object[index], true, true)) {
if (!compact || index !== 0) {
_result += generateNextLine(state, level);
}
if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {
_result += '-';
} else {
_result += '- ';
}
_result += state.dump;
}
}
state.tag = _tag;
state.dump = _result || '[]'; // Empty sequence if no valid values.
}
function writeFlowMapping(state, level, object) {
var _result = '',
_tag = state.tag,
objectKeyList = Object.keys(object),
index,
length,
objectKey,
objectValue,
pairBuffer;
for (index = 0, length = objectKeyList.length; index < length; index += 1) {
pairBuffer = '';
if (index !== 0) pairBuffer += ', ';
if (state.condenseFlow) pairBuffer += '"';
objectKey = objectKeyList[index];
objectValue = object[objectKey];
if (!writeNode(state, level, objectKey, false, false)) {
continue; // Skip this pair because of invalid key;
}
if (state.dump.length > 1024) pairBuffer += '? ';
pairBuffer += state.dump + (state.condenseFlow ? '"' : '') + ':' + (state.condenseFlow ? '' : ' ');
if (!writeNode(state, level, objectValue, false, false)) {
continue; // Skip this pair because of invalid value.
}
pairBuffer += state.dump;
// Both key and value are valid.
_result += pairBuffer;
}
state.tag = _tag;
state.dump = '{' + _result + '}';
}
function writeBlockMapping(state, level, object, compact) {
var _result = '',
_tag = state.tag,
objectKeyList = Object.keys(object),
index,
length,
objectKey,
objectValue,
explicitPair,
pairBuffer;
// Allow sorting keys so that the output file is deterministic
if (state.sortKeys === true) {
// Default sorting
objectKeyList.sort();
} else if (typeof state.sortKeys === 'function') {
// Custom sort function
objectKeyList.sort(state.sortKeys);
} else if (state.sortKeys) {
// Something is wrong
throw new YAMLException('sortKeys must be a boolean or a function');
}
for (index = 0, length = objectKeyList.length; index < length; index += 1) {
pairBuffer = '';
if (!compact || index !== 0) {
pairBuffer += generateNextLine(state, level);
}
objectKey = objectKeyList[index];
objectValue = object[objectKey];
if (!writeNode(state, level + 1, objectKey, true, true, true)) {
continue; // Skip this pair because of invalid key.
}
explicitPair = (state.tag !== null && state.tag !== '?') ||
(state.dump && state.dump.length > 1024);
if (explicitPair) {
if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {
pairBuffer += '?';
} else {
pairBuffer += '? ';
}
}
pairBuffer += state.dump;
if (explicitPair) {
pairBuffer += generateNextLine(state, level);
}
if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {
continue; // Skip this pair because of invalid value.
}
if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {
pairBuffer += ':';
} else {
pairBuffer += ': ';
}
pairBuffer += state.dump;
// Both key and value are valid.
_result += pairBuffer;
}
state.tag = _tag;
state.dump = _result || '{}'; // Empty mapping if no valid pairs.
}
function detectType(state, object, explicit) {
var _result, typeList, index, length, type, style;
typeList = explicit ? state.explicitTypes : state.implicitTypes;
for (index = 0, length = typeList.length; index < length; index += 1) {
type = typeList[index];
if ((type.instanceOf || type.predicate) &&
(!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&
(!type.predicate || type.predicate(object))) {
state.tag = explicit ? type.tag : '?';
if (type.represent) {
style = state.styleMap[type.tag] || type.defaultStyle;
if (_toString.call(type.represent) === '[object Function]') {
_result = type.represent(object, style);
} else if (_hasOwnProperty.call(type.represent, style)) {
_result = type.represent[style](object, style);
} else {
throw new YAMLException('!<' + type.tag + '> tag resolver accepts not "' + style + '" style');
}
state.dump = _result;
}
return true;
}
}
return false;
}
// Serializes `object` and writes it to global `result`.
// Returns true on success, or false on invalid object.
//
function writeNode(state, level, object, block, compact, iskey) {
state.tag = null;
state.dump = object;
if (!detectType(state, object, false)) {
detectType(state, object, true);
}
var type = _toString.call(state.dump);
if (block) {
block = (state.flowLevel < 0 || state.flowLevel > level);
}
var objectOrArray = type === '[object Object]' || type === '[object Array]',
duplicateIndex,
duplicate;
if (objectOrArray) {
duplicateIndex = state.duplicates.indexOf(object);
duplicate = duplicateIndex !== -1;
}
if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {
compact = false;
}
if (duplicate && state.usedDuplicates[duplicateIndex]) {
state.dump = '*ref_' + duplicateIndex;
} else {
if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {
state.usedDuplicates[duplicateIndex] = true;
}
if (type === '[object Object]') {
if (block && (Object.keys(state.dump).length !== 0)) {
writeBlockMapping(state, level, state.dump, compact);
if (duplicate) {
state.dump = '&ref_' + duplicateIndex + state.dump;
}
} else {
writeFlowMapping(state, level, state.dump);
if (duplicate) {
state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;
}
}
} else if (type === '[object Array]') {
var arrayLevel = (state.noArrayIndent && (level > 0)) ? level - 1 : level;
if (block && (state.dump.length !== 0)) {
writeBlockSequence(state, arrayLevel, state.dump, compact);
if (duplicate) {
state.dump = '&ref_' + duplicateIndex + state.dump;
}
} else {
writeFlowSequence(state, arrayLevel, state.dump);
if (duplicate) {
state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;
}
}
} else if (type === '[object String]') {
if (state.tag !== '?') {
writeScalar(state, state.dump, level, iskey);
}
} else {
if (state.skipInvalid) return false;
throw new YAMLException('unacceptable kind of an object to dump ' + type);
}
if (state.tag !== null && state.tag !== '?') {
state.dump = '!<' + state.tag + '> ' + state.dump;
}
}
return true;
}
function getDuplicateReferences(object, state) {
var objects = [],
duplicatesIndexes = [],
index,
length;
inspectNode(object, objects, duplicatesIndexes);
for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {
state.duplicates.push(objects[duplicatesIndexes[index]]);
}
state.usedDuplicates = new Array(length);
}
function inspectNode(object, objects, duplicatesIndexes) {
var objectKeyList,
index,
length;
if (object !== null && typeof object === 'object') {
index = objects.indexOf(object);
if (index !== -1) {
if (duplicatesIndexes.indexOf(index) === -1) {
duplicatesIndexes.push(index);
}
} else {
objects.push(object);
if (Array.isArray(object)) {
for (index = 0, length = object.length; index < length; index += 1) {
inspectNode(object[index], objects, duplicatesIndexes);
}
} else {
objectKeyList = Object.keys(object);
for (index = 0, length = objectKeyList.length; index < length; index += 1) {
inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);
}
}
}
}
}
function dump(input, options) {
options = options || {};
var state = new State(options);
if (!state.noRefs) getDuplicateReferences(input, state);
if (writeNode(state, 0, input, true, true)) return state.dump + '\n';
return '';
}
function safeDump(input, options) {
return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));
}
module.exports.dump = dump;
module.exports.safeDump = safeDump;
/***/ }),
/* 686 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
// Export classes
var XMLSerializerImpl_1 = __webpack_require__(98);
exports.XMLSerializer = XMLSerializerImpl_1.XMLSerializerImpl;
//# sourceMappingURL=index.js.map
/***/ }),
/* 687 */,
/* 688 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var AbstractRangeImpl_1 = __webpack_require__(413);
var DOMException_1 = __webpack_require__(35);
var util_1 = __webpack_require__(918);
/**
* Represents a static range.
*/
var StaticRangeImpl = /** @class */ (function (_super) {
__extends(StaticRangeImpl, _super);
/**
* Initializes a new instance of `StaticRange`.
*/
function StaticRangeImpl(init) {
var _this = _super.call(this) || this;
/**
* 1. If inits startContainer or endContainer is a DocumentType or Attr
* node, then throw an "InvalidNodeTypeError" DOMException.
* 2. Let staticRange be a new StaticRange object.
* 3. Set staticRanges start to (inits startContainer, inits startOffset)
* and end to (inits endContainer, inits endOffset).
* 4. Return staticRange.
*/
if (util_1.Guard.isDocumentTypeNode(init.startContainer) || util_1.Guard.isAttrNode(init.startContainer) ||
util_1.Guard.isDocumentTypeNode(init.endContainer) || util_1.Guard.isAttrNode(init.endContainer)) {
throw new DOMException_1.InvalidNodeTypeError();
}
_this._start = [init.startContainer, init.startOffset];
_this._end = [init.endContainer, init.endOffset];
return _this;
}
return StaticRangeImpl;
}(AbstractRangeImpl_1.AbstractRangeImpl));
exports.StaticRangeImpl = StaticRangeImpl;
//# sourceMappingURL=StaticRangeImpl.js.map
/***/ }),
/* 689 */,
/* 690 */,
/* 691 */,
/* 692 */,
/* 693 */,
/* 694 */,
/* 695 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
var interfaces_1 = __webpack_require__(970);
var NodeImpl_1 = __webpack_require__(935);
var DOMException_1 = __webpack_require__(35);
var infra_1 = __webpack_require__(23);
var algorithm_1 = __webpack_require__(163);
var WebIDLAlgorithm_1 = __webpack_require__(495);
/**
* Represents an element node.
*/
var ElementImpl = /** @class */ (function (_super) {
__extends(ElementImpl, _super);
/**
* Initializes a new instance of `Element`.
*/
function ElementImpl() {
var _this = _super.call(this) || this;
_this._children = new Set();
_this._namespace = null;
_this._namespacePrefix = null;
_this._localName = "";
_this._customElementState = "undefined";
_this._customElementDefinition = null;
_this._is = null;
_this._shadowRoot = null;
_this._attributeList = algorithm_1.create_namedNodeMap(_this);
_this._attributeChangeSteps = [];
_this._name = '';
_this._assignedSlot = null;
return _this;
}
Object.defineProperty(ElementImpl.prototype, "namespaceURI", {
/** @inheritdoc */
get: function () { return this._namespace; },
enumerable: true,
configurable: true
});
Object.defineProperty(ElementImpl.prototype, "prefix", {
/** @inheritdoc */
get: function () { return this._namespacePrefix; },
enumerable: true,
configurable: true
});
Object.defineProperty(ElementImpl.prototype, "localName", {
/** @inheritdoc */
get: function () { return this._localName; },
enumerable: true,
configurable: true
});
Object.defineProperty(ElementImpl.prototype, "tagName", {
/** @inheritdoc */
get: function () { return this._htmlUppercasedQualifiedName; },
enumerable: true,
configurable: true
});
Object.defineProperty(ElementImpl.prototype, "id", {
/** @inheritdoc */
get: function () {
return algorithm_1.element_getAnAttributeValue(this, "id");
},
set: function (value) {
algorithm_1.element_setAnAttributeValue(this, "id", value);
},
enumerable: true,
configurable: true
});
Object.defineProperty(ElementImpl.prototype, "className", {
/** @inheritdoc */
get: function () {
return algorithm_1.element_getAnAttributeValue(this, "class");
},
set: function (value) {
algorithm_1.element_setAnAttributeValue(this, "class", value);
},
enumerable: true,
configurable: true
});
Object.defineProperty(ElementImpl.prototype, "classList", {
/** @inheritdoc */
get: function () {
var attr = algorithm_1.element_getAnAttributeByName("class", this);
if (attr === null) {
attr = algorithm_1.create_attr(this._nodeDocument, "class");
}
return algorithm_1.create_domTokenList(this, attr);
},
enumerable: true,
configurable: true
});
Object.defineProperty(ElementImpl.prototype, "slot", {
/** @inheritdoc */
get: function () {
return algorithm_1.element_getAnAttributeValue(this, "slot");
},
set: function (value) {
algorithm_1.element_setAnAttributeValue(this, "slot", value);
},
enumerable: true,
configurable: true
});
/** @inheritdoc */
ElementImpl.prototype.hasAttributes = function () {
return this._attributeList.length !== 0;
};
Object.defineProperty(ElementImpl.prototype, "attributes", {
/** @inheritdoc */
get: function () { return this._attributeList; },
enumerable: true,
configurable: true
});
/** @inheritdoc */
ElementImpl.prototype.getAttributeNames = function () {
var e_1, _a;
/**
* The getAttributeNames() method, when invoked, must return the qualified
* names of the attributes in context objects attribute list, in order,
* and a new list otherwise.
*/
var names = [];
try {
for (var _b = __values(this._attributeList), _c = _b.next(); !_c.done; _c = _b.next()) {
var attr = _c.value;
names.push(attr._qualifiedName);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
return names;
};
/** @inheritdoc */
ElementImpl.prototype.getAttribute = function (qualifiedName) {
/**
* 1. Let attr be the result of getting an attribute given qualifiedName
* and the context object.
* 2. If attr is null, return null.
* 3. Return attrs value.
*/
var attr = algorithm_1.element_getAnAttributeByName(qualifiedName, this);
return (attr ? attr._value : null);
};
/** @inheritdoc */
ElementImpl.prototype.getAttributeNS = function (namespace, localName) {
/**
* 1. Let attr be the result of getting an attribute given namespace,
* localName, and the context object.
* 2. If attr is null, return null.
* 3. Return attrs value.
*/
var attr = algorithm_1.element_getAnAttributeByNamespaceAndLocalName(namespace, localName, this);
return (attr ? attr._value : null);
};
/** @inheritdoc */
ElementImpl.prototype.setAttribute = function (qualifiedName, value) {
/**
* 1. If qualifiedName does not match the Name production in XML, then
* throw an "InvalidCharacterError" DOMException.
*/
if (!algorithm_1.xml_isName(qualifiedName))
throw new DOMException_1.InvalidCharacterError();
/**
* 2. If the context object is in the HTML namespace and its node document
* is an HTML document, then set qualifiedName to qualifiedName in ASCII
* lowercase.
*/
if (this._namespace === infra_1.namespace.HTML && this._nodeDocument._type === "html") {
qualifiedName = qualifiedName.toLowerCase();
}
/**
* 3. Let attribute be the first attribute in context objects attribute
* list whose qualified name is qualifiedName, and null otherwise.
*/
var attribute = null;
for (var i = 0; i < this._attributeList.length; i++) {
var attr = this._attributeList[i];
if (attr._qualifiedName === qualifiedName) {
attribute = attr;
break;
}
}
/**
* 4. If attribute is null, create an attribute whose local name is
* qualifiedName, value is value, and node document is context objects
* node document, then append this attribute to context object, and
* then return.
*/
if (attribute === null) {
attribute = algorithm_1.create_attr(this._nodeDocument, qualifiedName);
attribute._value = value;
algorithm_1.element_append(attribute, this);
return;
}
/**
* 5. Change attribute from context object to value.
*/
algorithm_1.element_change(attribute, this, value);
};
/** @inheritdoc */
ElementImpl.prototype.setAttributeNS = function (namespace, qualifiedName, value) {
/**
* 1. Let namespace, prefix, and localName be the result of passing
* namespace and qualifiedName to validate and extract.
* 2. Set an attribute value for the context object using localName, value,
* and also prefix and namespace.
*/
var _a = __read(algorithm_1.namespace_validateAndExtract(namespace, qualifiedName), 3), ns = _a[0], prefix = _a[1], localName = _a[2];
algorithm_1.element_setAnAttributeValue(this, localName, value, prefix, ns);
};
/** @inheritdoc */
ElementImpl.prototype.removeAttribute = function (qualifiedName) {
/**
* The removeAttribute(qualifiedName) method, when invoked, must remove an
* attribute given qualifiedName and the context object, and then return
* undefined.
*/
algorithm_1.element_removeAnAttributeByName(qualifiedName, this);
};
/** @inheritdoc */
ElementImpl.prototype.removeAttributeNS = function (namespace, localName) {
/**
* The removeAttributeNS(namespace, localName) method, when invoked, must
* remove an attribute given namespace, localName, and context object, and
* then return undefined.
*/
algorithm_1.element_removeAnAttributeByNamespaceAndLocalName(namespace, localName, this);
};
/** @inheritdoc */
ElementImpl.prototype.hasAttribute = function (qualifiedName) {
/**
* 1. If the context object is in the HTML namespace and its node document
* is an HTML document, then set qualifiedName to qualifiedName in ASCII
* lowercase.
* 2. Return true if the context object has an attribute whose qualified
* name is qualifiedName, and false otherwise.
*/
if (this._namespace === infra_1.namespace.HTML && this._nodeDocument._type === "html") {
qualifiedName = qualifiedName.toLowerCase();
}
for (var i = 0; i < this._attributeList.length; i++) {
var attr = this._attributeList[i];
if (attr._qualifiedName === qualifiedName) {
return true;
}
}
return false;
};
/** @inheritdoc */
ElementImpl.prototype.toggleAttribute = function (qualifiedName, force) {
/**
* 1. If qualifiedName does not match the Name production in XML, then
* throw an "InvalidCharacterError" DOMException.
*/
if (!algorithm_1.xml_isName(qualifiedName))
throw new DOMException_1.InvalidCharacterError();
/**
* 2. If the context object is in the HTML namespace and its node document
* is an HTML document, then set qualifiedName to qualifiedName in ASCII
* lowercase.
*/
if (this._namespace === infra_1.namespace.HTML && this._nodeDocument._type === "html") {
qualifiedName = qualifiedName.toLowerCase();
}
/**
* 3. Let attribute be the first attribute in the context objects attribute
* list whose qualified name is qualifiedName, and null otherwise.
*/
var attribute = null;
for (var i = 0; i < this._attributeList.length; i++) {
var attr = this._attributeList[i];
if (attr._qualifiedName === qualifiedName) {
attribute = attr;
break;
}
}
if (attribute === null) {
/**
* 4. If attribute is null, then:
* 4.1. If force is not given or is true, create an attribute whose local
* name is qualifiedName, value is the empty string, and node document is
* the context objects node document, then append this attribute to the
* context object, and then return true.
* 4.2. Return false.
*/
if (force === undefined || force === true) {
attribute = algorithm_1.create_attr(this._nodeDocument, qualifiedName);
attribute._value = '';
algorithm_1.element_append(attribute, this);
return true;
}
return false;
}
else if (force === undefined || force === false) {
/**
* 5. Otherwise, if force is not given or is false, remove an attribute
* given qualifiedName and the context object, and then return false.
*/
algorithm_1.element_removeAnAttributeByName(qualifiedName, this);
return false;
}
/**
* 6. Return true.
*/
return true;
};
/** @inheritdoc */
ElementImpl.prototype.hasAttributeNS = function (namespace, localName) {
/**
* 1. If namespace is the empty string, set it to null.
* 2. Return true if the context object has an attribute whose namespace is
* namespace and local name is localName, and false otherwise.
*/
var ns = namespace || null;
for (var i = 0; i < this._attributeList.length; i++) {
var attr = this._attributeList[i];
if (attr._namespace === ns && attr._localName === localName) {
return true;
}
}
return false;
};
/** @inheritdoc */
ElementImpl.prototype.getAttributeNode = function (qualifiedName) {
/**
* The getAttributeNode(qualifiedName) method, when invoked, must return the
* result of getting an attribute given qualifiedName and context object.
*/
return algorithm_1.element_getAnAttributeByName(qualifiedName, this);
};
/** @inheritdoc */
ElementImpl.prototype.getAttributeNodeNS = function (namespace, localName) {
/**
* The getAttributeNodeNS(namespace, localName) method, when invoked, must
* return the result of getting an attribute given namespace, localName, and
* the context object.
*/
return algorithm_1.element_getAnAttributeByNamespaceAndLocalName(namespace, localName, this);
};
/** @inheritdoc */
ElementImpl.prototype.setAttributeNode = function (attr) {
/**
* The setAttributeNode(attr) and setAttributeNodeNS(attr) methods, when
* invoked, must return the result of setting an attribute given attr and
* the context object.
*/
return algorithm_1.element_setAnAttribute(attr, this);
};
/** @inheritdoc */
ElementImpl.prototype.setAttributeNodeNS = function (attr) {
return algorithm_1.element_setAnAttribute(attr, this);
};
/** @inheritdoc */
ElementImpl.prototype.removeAttributeNode = function (attr) {
/**
* 1. If context objects attribute list does not contain attr, then throw
* a "NotFoundError" DOMException.
* 2. Remove attr from context object.
* 3. Return attr.
*/
var found = false;
for (var i = 0; i < this._attributeList.length; i++) {
var attribute = this._attributeList[i];
if (attribute === attr) {
found = true;
break;
}
}
if (!found)
throw new DOMException_1.NotFoundError();
algorithm_1.element_remove(attr, this);
return attr;
};
/** @inheritdoc */
ElementImpl.prototype.attachShadow = function (init) {
/**
* 1. If context objects namespace is not the HTML namespace, then throw a
* "NotSupportedError" DOMException.
*/
if (this._namespace !== infra_1.namespace.HTML)
throw new DOMException_1.NotSupportedError();
/**
* 2. If context objects local name is not a valid custom element name,
* "article", "aside", "blockquote", "body", "div", "footer", "h1", "h2",
* "h3", "h4", "h5", "h6", "header", "main" "nav", "p", "section",
* or "span", then throw a "NotSupportedError" DOMException.
*/
if (!algorithm_1.customElement_isValidCustomElementName(this._localName) &&
!algorithm_1.customElement_isValidShadowHostName(this._localName))
throw new DOMException_1.NotSupportedError();
/**
* 3. If context objects local name is a valid custom element name,
* or context objects is value is not null, then:
* 3.1. Let definition be the result of looking up a custom element
* definition given context objects node document, its namespace, its
* local name, and its is value.
* 3.2. If definition is not null and definitions disable shadow is true,
* then throw a "NotSupportedError" DOMException.
*/
if (algorithm_1.customElement_isValidCustomElementName(this._localName) || this._is !== null) {
var definition = algorithm_1.customElement_lookUpACustomElementDefinition(this._nodeDocument, this._namespace, this._localName, this._is);
if (definition !== null && definition.disableShadow === true) {
throw new DOMException_1.NotSupportedError();
}
}
/**
* 4. If context object is a shadow host, then throw an "NotSupportedError"
* DOMException.
*/
if (this._shadowRoot !== null)
throw new DOMException_1.NotSupportedError();
/**
* 5. Let shadow be a new shadow root whose node document is context
* objects node document, host is context object, and mode is inits mode.
* 6. Set context objects shadow root to shadow.
* 7. Return shadow.
*/
var shadow = algorithm_1.create_shadowRoot(this._nodeDocument, this);
shadow._mode = init.mode;
this._shadowRoot = shadow;
return shadow;
};
Object.defineProperty(ElementImpl.prototype, "shadowRoot", {
/** @inheritdoc */
get: function () {
/**
* 1. Let shadow be context objects shadow root.
* 2. If shadow is null or its mode is "closed", then return null.
* 3. Return shadow.
*/
var shadow = this._shadowRoot;
if (shadow === null || shadow.mode === "closed")
return null;
else
return shadow;
},
enumerable: true,
configurable: true
});
/** @inheritdoc */
ElementImpl.prototype.closest = function (selectors) {
/**
* TODO: Selectors
* 1. Let s be the result of parse a selector from selectors. [SELECTORS4]
* 2. If s is failure, throw a "SyntaxError" DOMException.
* 3. Let elements be context objects inclusive ancestors that are
* elements, in reverse tree order.
* 4. For each element in elements, if match a selector against an element,
* using s, element, and :scope element context object, returns success,
* return element. [SELECTORS4]
* 5. Return null.
*/
throw new DOMException_1.NotImplementedError();
};
/** @inheritdoc */
ElementImpl.prototype.matches = function (selectors) {
/**
* TODO: Selectors
* 1. Let s be the result of parse a selector from selectors. [SELECTORS4]
* 2. If s is failure, throw a "SyntaxError" DOMException.
* 3. Return true if the result of match a selector against an element,
* using s, element, and :scope element context object, returns success,
* and false otherwise. [SELECTORS4]
*/
throw new DOMException_1.NotImplementedError();
};
/** @inheritdoc */
ElementImpl.prototype.webkitMatchesSelector = function (selectors) {
return this.matches(selectors);
};
/** @inheritdoc */
ElementImpl.prototype.getElementsByTagName = function (qualifiedName) {
/**
* The getElementsByTagName(qualifiedName) method, when invoked, must return
* the list of elements with qualified name qualifiedName for context
* object.
*/
return algorithm_1.node_listOfElementsWithQualifiedName(qualifiedName, this);
};
/** @inheritdoc */
ElementImpl.prototype.getElementsByTagNameNS = function (namespace, localName) {
/**
* The getElementsByTagNameNS(namespace, localName) method, when invoked,
* must return the list of elements with namespace namespace and local name
* localName for context object.
*/
return algorithm_1.node_listOfElementsWithNamespace(namespace, localName, this);
};
/** @inheritdoc */
ElementImpl.prototype.getElementsByClassName = function (classNames) {
/**
* The getElementsByClassName(classNames) method, when invoked, must return
* the list of elements with class names classNames for context object.
*/
return algorithm_1.node_listOfElementsWithClassNames(classNames, this);
};
/** @inheritdoc */
ElementImpl.prototype.insertAdjacentElement = function (where, element) {
/**
* The insertAdjacentElement(where, element) method, when invoked, must
* return the result of running insert adjacent, given context object,
* where, and element.
*/
return algorithm_1.element_insertAdjacent(this, where, element);
};
/** @inheritdoc */
ElementImpl.prototype.insertAdjacentText = function (where, data) {
/**
* 1. Let text be a new Text node whose data is data and node document is
* context objects node document.
* 2. Run insert adjacent, given context object, where, and text.
*/
var text = algorithm_1.create_text(this._nodeDocument, data);
algorithm_1.element_insertAdjacent(this, where, text);
};
Object.defineProperty(ElementImpl.prototype, "_qualifiedName", {
/**
* Returns the qualified name.
*/
get: function () {
/**
* An elements qualified name is its local name if its namespace prefix is
* null, and its namespace prefix, followed by ":", followed by its
* local name, otherwise.
*/
return (this._namespacePrefix ?
this._namespacePrefix + ':' + this._localName :
this._localName);
},
enumerable: true,
configurable: true
});
Object.defineProperty(ElementImpl.prototype, "_htmlUppercasedQualifiedName", {
/**
* Returns the upper-cased qualified name for a html element.
*/
get: function () {
/**
* 1. Let qualifiedName be context objects qualified name.
* 2. If the context object is in the HTML namespace and its node document
* is an HTML document, then set qualifiedName to qualifiedName in ASCII
* uppercase.
* 3. Return qualifiedName.
*/
var qualifiedName = this._qualifiedName;
if (this._namespace === infra_1.namespace.HTML && this._nodeDocument._type === "html") {
qualifiedName = qualifiedName.toUpperCase();
}
return qualifiedName;
},
enumerable: true,
configurable: true
});
Object.defineProperty(ElementImpl.prototype, "children", {
// MIXIN: ParentNode
/* istanbul ignore next */
get: function () { throw new Error("Mixin: ParentNode not implemented."); },
enumerable: true,
configurable: true
});
Object.defineProperty(ElementImpl.prototype, "firstElementChild", {
/* istanbul ignore next */
get: function () { throw new Error("Mixin: ParentNode not implemented."); },
enumerable: true,
configurable: true
});
Object.defineProperty(ElementImpl.prototype, "lastElementChild", {
/* istanbul ignore next */
get: function () { throw new Error("Mixin: ParentNode not implemented."); },
enumerable: true,
configurable: true
});
Object.defineProperty(ElementImpl.prototype, "childElementCount", {
/* istanbul ignore next */
get: function () { throw new Error("Mixin: ParentNode not implemented."); },
enumerable: true,
configurable: true
});
/* istanbul ignore next */
ElementImpl.prototype.prepend = function () {
var nodes = [];
for (var _i = 0; _i < arguments.length; _i++) {
nodes[_i] = arguments[_i];
}
throw new Error("Mixin: ParentNode not implemented.");
};
/* istanbul ignore next */
ElementImpl.prototype.append = function () {
var nodes = [];
for (var _i = 0; _i < arguments.length; _i++) {
nodes[_i] = arguments[_i];
}
throw new Error("Mixin: ParentNode not implemented.");
};
/* istanbul ignore next */
ElementImpl.prototype.querySelector = function (selectors) { throw new Error("Mixin: ParentNode not implemented."); };
/* istanbul ignore next */
ElementImpl.prototype.querySelectorAll = function (selectors) { throw new Error("Mixin: ParentNode not implemented."); };
Object.defineProperty(ElementImpl.prototype, "previousElementSibling", {
// MIXIN: NonDocumentTypeChildNode
/* istanbul ignore next */
get: function () { throw new Error("Mixin: NonDocumentTypeChildNode not implemented."); },
enumerable: true,
configurable: true
});
Object.defineProperty(ElementImpl.prototype, "nextElementSibling", {
/* istanbul ignore next */
get: function () { throw new Error("Mixin: NonDocumentTypeChildNode not implemented."); },
enumerable: true,
configurable: true
});
// MIXIN: ChildNode
/* istanbul ignore next */
ElementImpl.prototype.before = function () {
var nodes = [];
for (var _i = 0; _i < arguments.length; _i++) {
nodes[_i] = arguments[_i];
}
throw new Error("Mixin: ChildNode not implemented.");
};
/* istanbul ignore next */
ElementImpl.prototype.after = function () {
var nodes = [];
for (var _i = 0; _i < arguments.length; _i++) {
nodes[_i] = arguments[_i];
}
throw new Error("Mixin: ChildNode not implemented.");
};
/* istanbul ignore next */
ElementImpl.prototype.replaceWith = function () {
var nodes = [];
for (var _i = 0; _i < arguments.length; _i++) {
nodes[_i] = arguments[_i];
}
throw new Error("Mixin: ChildNode not implemented.");
};
/* istanbul ignore next */
ElementImpl.prototype.remove = function () { throw new Error("Mixin: ChildNode not implemented."); };
Object.defineProperty(ElementImpl.prototype, "assignedSlot", {
// MIXIN: Slotable
/* istanbul ignore next */
get: function () { throw new Error("Mixin: Slotable not implemented."); },
enumerable: true,
configurable: true
});
/**
* Creates a new `Element`.
*
* @param document - owner document
* @param localName - local name
* @param namespace - namespace
* @param prefix - namespace prefix
*/
ElementImpl._create = function (document, localName, namespace, namespacePrefix) {
if (namespace === void 0) { namespace = null; }
if (namespacePrefix === void 0) { namespacePrefix = null; }
var node = new ElementImpl();
node._localName = localName;
node._namespace = namespace;
node._namespacePrefix = namespacePrefix;
node._nodeDocument = document;
return node;
};
return ElementImpl;
}(NodeImpl_1.NodeImpl));
exports.ElementImpl = ElementImpl;
/**
* Initialize prototype properties
*/
WebIDLAlgorithm_1.idl_defineConst(ElementImpl.prototype, "_nodeType", interfaces_1.NodeType.Element);
//# sourceMappingURL=ElementImpl.js.map
/***/ }),
/* 696 */,
/* 697 */,
/* 698 */,
/* 699 */,
/* 700 */,
/* 701 */,
/* 702 */
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
// A linked list to keep track of recently-used-ness
const Yallist = __webpack_require__(612)
const MAX = Symbol('max')
const LENGTH = Symbol('length')
const LENGTH_CALCULATOR = Symbol('lengthCalculator')
const ALLOW_STALE = Symbol('allowStale')
const MAX_AGE = Symbol('maxAge')
const DISPOSE = Symbol('dispose')
const NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')
const LRU_LIST = Symbol('lruList')
const CACHE = Symbol('cache')
const UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')
const naiveLength = () => 1
// lruList is a yallist where the head is the youngest
// item, and the tail is the oldest. the list contains the Hit
// objects as the entries.
// Each Hit object has a reference to its Yallist.Node. This
// never changes.
//
// cache is a Map (or PseudoMap) that matches the keys to
// the Yallist.Node object.
class LRUCache {
constructor (options) {
if (typeof options === 'number')
options = { max: options }
if (!options)
options = {}
if (options.max && (typeof options.max !== 'number' || options.max < 0))
throw new TypeError('max must be a non-negative number')
// Kind of weird to have a default max of Infinity, but oh well.
const max = this[MAX] = options.max || Infinity
const lc = options.length || naiveLength
this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc
this[ALLOW_STALE] = options.stale || false
if (options.maxAge && typeof options.maxAge !== 'number')
throw new TypeError('maxAge must be a number')
this[MAX_AGE] = options.maxAge || 0
this[DISPOSE] = options.dispose
this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false
this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false
this.reset()
}
// resize the cache when the max changes.
set max (mL) {
if (typeof mL !== 'number' || mL < 0)
throw new TypeError('max must be a non-negative number')
this[MAX] = mL || Infinity
trim(this)
}
get max () {
return this[MAX]
}
set allowStale (allowStale) {
this[ALLOW_STALE] = !!allowStale
}
get allowStale () {
return this[ALLOW_STALE]
}
set maxAge (mA) {
if (typeof mA !== 'number')
throw new TypeError('maxAge must be a non-negative number')
this[MAX_AGE] = mA
trim(this)
}
get maxAge () {
return this[MAX_AGE]
}
// resize the cache when the lengthCalculator changes.
set lengthCalculator (lC) {
if (typeof lC !== 'function')
lC = naiveLength
if (lC !== this[LENGTH_CALCULATOR]) {
this[LENGTH_CALCULATOR] = lC
this[LENGTH] = 0
this[LRU_LIST].forEach(hit => {
hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)
this[LENGTH] += hit.length
})
}
trim(this)
}
get lengthCalculator () { return this[LENGTH_CALCULATOR] }
get length () { return this[LENGTH] }
get itemCount () { return this[LRU_LIST].length }
rforEach (fn, thisp) {
thisp = thisp || this
for (let walker = this[LRU_LIST].tail; walker !== null;) {
const prev = walker.prev
forEachStep(this, fn, walker, thisp)
walker = prev
}
}
forEach (fn, thisp) {
thisp = thisp || this
for (let walker = this[LRU_LIST].head; walker !== null;) {
const next = walker.next
forEachStep(this, fn, walker, thisp)
walker = next
}
}
keys () {
return this[LRU_LIST].toArray().map(k => k.key)
}
values () {
return this[LRU_LIST].toArray().map(k => k.value)
}
reset () {
if (this[DISPOSE] &&
this[LRU_LIST] &&
this[LRU_LIST].length) {
this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))
}
this[CACHE] = new Map() // hash of items by key
this[LRU_LIST] = new Yallist() // list of items in order of use recency
this[LENGTH] = 0 // length of items in the list
}
dump () {
return this[LRU_LIST].map(hit =>
isStale(this, hit) ? false : {
k: hit.key,
v: hit.value,
e: hit.now + (hit.maxAge || 0)
}).toArray().filter(h => h)
}
dumpLru () {
return this[LRU_LIST]
}
set (key, value, maxAge) {
maxAge = maxAge || this[MAX_AGE]
if (maxAge && typeof maxAge !== 'number')
throw new TypeError('maxAge must be a number')
const now = maxAge ? Date.now() : 0
const len = this[LENGTH_CALCULATOR](value, key)
if (this[CACHE].has(key)) {
if (len > this[MAX]) {
del(this, this[CACHE].get(key))
return false
}
const node = this[CACHE].get(key)
const item = node.value
// dispose of the old one before overwriting
// split out into 2 ifs for better coverage tracking
if (this[DISPOSE]) {
if (!this[NO_DISPOSE_ON_SET])
this[DISPOSE](key, item.value)
}
item.now = now
item.maxAge = maxAge
item.value = value
this[LENGTH] += len - item.length
item.length = len
this.get(key)
trim(this)
return true
}
const hit = new Entry(key, value, len, now, maxAge)
// oversized objects fall out of cache automatically.
if (hit.length > this[MAX]) {
if (this[DISPOSE])
this[DISPOSE](key, value)
return false
}
this[LENGTH] += hit.length
this[LRU_LIST].unshift(hit)
this[CACHE].set(key, this[LRU_LIST].head)
trim(this)
return true
}
has (key) {
if (!this[CACHE].has(key)) return false
const hit = this[CACHE].get(key).value
return !isStale(this, hit)
}
get (key) {
return get(this, key, true)
}
peek (key) {
return get(this, key, false)
}
pop () {
const node = this[LRU_LIST].tail
if (!node)
return null
del(this, node)
return node.value
}
del (key) {
del(this, this[CACHE].get(key))
}
load (arr) {
// reset the cache
this.reset()
const now = Date.now()
// A previous serialized cache has the most recent items first
for (let l = arr.length - 1; l >= 0; l--) {
const hit = arr[l]
const expiresAt = hit.e || 0
if (expiresAt === 0)
// the item was created without expiration in a non aged cache
this.set(hit.k, hit.v)
else {
const maxAge = expiresAt - now
// dont add already expired items
if (maxAge > 0) {
this.set(hit.k, hit.v, maxAge)
}
}
}
}
prune () {
this[CACHE].forEach((value, key) => get(this, key, false))
}
}
const get = (self, key, doUse) => {
const node = self[CACHE].get(key)
if (node) {
const hit = node.value
if (isStale(self, hit)) {
del(self, node)
if (!self[ALLOW_STALE])
return undefined
} else {
if (doUse) {
if (self[UPDATE_AGE_ON_GET])
node.value.now = Date.now()
self[LRU_LIST].unshiftNode(node)
}
}
return hit.value
}
}
const isStale = (self, hit) => {
if (!hit || (!hit.maxAge && !self[MAX_AGE]))
return false
const diff = Date.now() - hit.now
return hit.maxAge ? diff > hit.maxAge
: self[MAX_AGE] && (diff > self[MAX_AGE])
}
const trim = self => {
if (self[LENGTH] > self[MAX]) {
for (let walker = self[LRU_LIST].tail;
self[LENGTH] > self[MAX] && walker !== null;) {
// We know that we're about to delete this one, and also
// what the next least recently used key will be, so just
// go ahead and set it now.
const prev = walker.prev
del(self, walker)
walker = prev
}
}
}
const del = (self, node) => {
if (node) {
const hit = node.value
if (self[DISPOSE])
self[DISPOSE](hit.key, hit.value)
self[LENGTH] -= hit.length
self[CACHE].delete(hit.key)
self[LRU_LIST].removeNode(node)
}
}
class Entry {
constructor (key, value, length, now, maxAge) {
this.key = key
this.value = value
this.length = length
this.now = now
this.maxAge = maxAge || 0
}
}
const forEachStep = (self, fn, node, thisp) => {
let hit = node.value
if (isStale(self, hit)) {
del(self, node)
if (!self[ALLOW_STALE])
hit = undefined
}
if (hit)
fn.call(thisp, hit.value, hit.key, self)
}
module.exports = LRUCache
/***/ }),
/* 703 */,
/* 704 */
/***/ (function(__unusedmodule, exports) {
"use strict";
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Represents a set of objects with a size limit.
*/
var FixedSizeSet = /** @class */ (function () {
/**
* Initializes a new instance of `FixedSizeSet`.
*
* @param limit - maximum number of items to keep in the set. When the limit
* is exceeded the first item is removed from the set.
*/
function FixedSizeSet(limit) {
if (limit === void 0) { limit = 1000; }
this._items = new Set();
this._limit = limit;
}
/**
* Adds a new item to the set.
*
* @param item - an item
*/
FixedSizeSet.prototype.add = function (item) {
this._items.add(item);
if (this._items.size > this._limit) {
var it_1 = this._items.values().next();
/* istanbul ignore else */
if (!it_1.done) {
this._items.delete(it_1.value);
}
}
return this;
};
/**
* Removes an item from the set.
*
* @param item - an item
*/
FixedSizeSet.prototype.delete = function (item) {
return this._items.delete(item);
};
/**
* Determines if an item is in the set.
*
* @param item - an item
*/
FixedSizeSet.prototype.has = function (item) {
return this._items.has(item);
};
/**
* Removes all items from the set.
*/
FixedSizeSet.prototype.clear = function () {
this._items.clear();
};
Object.defineProperty(FixedSizeSet.prototype, "size", {
/**
* Gets the number of items in the set.
*/
get: function () { return this._items.size; },
enumerable: true,
configurable: true
});
/**
* Applies the given callback function to all elements of the set.
*/
FixedSizeSet.prototype.forEach = function (callback, thisArg) {
var _this = this;
this._items.forEach(function (e) { return callback.call(thisArg, e, e, _this); });
};
/**
* Iterates through the items in the set.
*/
FixedSizeSet.prototype.keys = function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [5 /*yield**/, __values(this._items.keys())];
case 1:
_a.sent();
return [2 /*return*/];
}
});
};
/**
* Iterates through the items in the set.
*/
FixedSizeSet.prototype.values = function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [5 /*yield**/, __values(this._items.values())];
case 1:
_a.sent();
return [2 /*return*/];
}
});
};
/**
* Iterates through the items in the set.
*/
FixedSizeSet.prototype.entries = function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [5 /*yield**/, __values(this._items.entries())];
case 1:
_a.sent();
return [2 /*return*/];
}
});
};
/**
* Iterates through the items in the set.
*/
FixedSizeSet.prototype[Symbol.iterator] = function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [5 /*yield**/, __values(this._items)];
case 1:
_a.sent();
return [2 /*return*/];
}
});
};
Object.defineProperty(FixedSizeSet.prototype, Symbol.toStringTag, {
/**
* Returns the string tag of the set.
*/
get: function () {
return "FixedSizeSet";
},
enumerable: true,
configurable: true
});
return FixedSizeSet;
}());
exports.FixedSizeSet = FixedSizeSet;
//# sourceMappingURL=FixedSizeSet.js.map
/***/ }),
/* 705 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var interfaces_1 = __webpack_require__(970);
var TraversalAlgorithm_1 = __webpack_require__(464);
/**
* Returns the first or last child node, or `null` if there are none.
*
* @param walker - the `TreeWalker` instance
* @param first - `true` to return the first child node, or `false` to
* return the last child node.
*/
function treeWalker_traverseChildren(walker, first) {
/**
* 1. Let node be walkers current.
* 2. Set node to nodes first child if type is first, and nodes last child
* if type is last.
* 3. While node is non-null:
*/
var node = (first ? walker._current._firstChild : walker._current._lastChild);
while (node !== null) {
/**
* 3.1. Let result be the result of filtering node within walker.
*/
var result = TraversalAlgorithm_1.traversal_filter(walker, node);
if (result === interfaces_1.FilterResult.Accept) {
/**
* 3.2. If result is FILTER_ACCEPT, then set walkers current to node and
* return node.
*/
walker._current = node;
return node;
}
else if (result === interfaces_1.FilterResult.Skip) {
/**
* 3.3. If result is FILTER_SKIP, then:
* 3.3.1. Let child be nodes first child if type is first, and nodes
* last child if type is last.
* 3.3.2. If child is non-null, then set node to child and continue.
*/
var child = (first ? node._firstChild : node._lastChild);
if (child !== null) {
node = child;
continue;
}
}
/**
* 3.4. While node is non-null:
*/
while (node !== null) {
/**
* 3.4.1. Let sibling be nodes next sibling if type is first, and
* nodes previous sibling if type is last.
* 3.4.2. If sibling is non-null, then set node to sibling and break.
*/
var sibling = (first ? node._nextSibling : node._previousSibling);
if (sibling !== null) {
node = sibling;
break;
}
/**
* 3.4.3. Let parent be nodes parent.
* 3.4.4. If parent is null, walkers root, or walkers current, then
* return null.
*/
var parent = node._parent;
if (parent === null || parent === walker._root || parent === walker._current) {
return null;
}
/**
* 3.4.5. Set node to parent.
*/
node = parent;
}
}
/**
* 5. Return null
*/
return null;
}
exports.treeWalker_traverseChildren = treeWalker_traverseChildren;
/**
* Returns the next or previous sibling node, or `null` if there are none.
*
* @param walker - the `TreeWalker` instance
* @param next - `true` to return the next sibling node, or `false` to
* return the previous sibling node.
*/
function treeWalker_traverseSiblings(walker, next) {
/**
* 1. Let node be walkers current.
* 2. If node is root, then return null.
* 3. While node is non-null:
*/
var node = walker._current;
if (node === walker._root)
return null;
while (true) {
/**
* 3.1. Let sibling be nodes next sibling if type is next, and nodes
* previous sibling if type is previous.
* 3.2. While sibling is non-null:
*/
var sibling = (next ? node._nextSibling : node._previousSibling);
while (sibling !== null) {
/**
* 3.2.1. Set node to sibling.
* 3.2.2. Let result be the result of filtering node within walker.
* 3.2.3. If result is FILTER_ACCEPT, then set walkers current to node
* and return node.
*/
node = sibling;
var result = TraversalAlgorithm_1.traversal_filter(walker, node);
if (result === interfaces_1.FilterResult.Accept) {
walker._current = node;
return node;
}
/**
* 3.2.4. Set sibling to nodes first child if type is next, and nodes
* last child if type is previous.
* 3.2.5. If result is FILTER_REJECT or sibling is null, then set
* sibling to nodes next sibling if type is next, and nodes previous
* sibling if type is previous.
*/
sibling = (next ? node._firstChild : node._lastChild);
if (result === interfaces_1.FilterResult.Reject || sibling === null) {
sibling = (next ? node._nextSibling : node._previousSibling);
}
}
/**
* 3.3. Set node to nodes parent.
* 3.4. If node is null or walkers root, then return null.
*/
node = node._parent;
if (node === null || node === walker._root) {
return null;
}
/**
* 3.5. If the return value of filtering node within walker is FILTER_ACCEPT,
* then return null.
*/
if (TraversalAlgorithm_1.traversal_filter(walker, node) === interfaces_1.FilterResult.Accept) {
return null;
}
}
}
exports.treeWalker_traverseSiblings = treeWalker_traverseSiblings;
//# sourceMappingURL=TreeWalkerAlgorithm.js.map
/***/ }),
/* 706 */,
/* 707 */,
/* 708 */,
/* 709 */,
/* 710 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
var EventAlgorithm_1 = __webpack_require__(826);
/**
* Adds an algorithm to the given abort signal.
*
* @param algorithm - an algorithm
* @param signal - abort signal
*/
function abort_add(algorithm, signal) {
/**
* 1. If signals aborted flag is set, then return.
* 2. Append algorithm to signals abort algorithms.
*/
if (signal._abortedFlag)
return;
signal._abortAlgorithms.add(algorithm);
}
exports.abort_add = abort_add;
/**
* Removes an algorithm from the given abort signal.
*
* @param algorithm - an algorithm
* @param signal - abort signal
*/
function abort_remove(algorithm, signal) {
/**
* To remove an algorithm algorithm from an AbortSignal signal, remove
* algorithm from signals abort algorithms.
*/
signal._abortAlgorithms.delete(algorithm);
}
exports.abort_remove = abort_remove;
/**
* Signals abort on the given abort signal.
*
* @param signal - abort signal
*/
function abort_signalAbort(signal) {
var e_1, _a;
/**
* 1. If signals aborted flag is set, then return.
* 2. Set signals aborted flag.
* 3. For each algorithm in signals abort algorithms: run algorithm.
* 4. Empty signals abort algorithms.
* 5. Fire an event named abort at signal.
*/
if (signal._abortedFlag)
return;
signal._abortedFlag = true;
try {
for (var _b = __values(signal._abortAlgorithms), _c = _b.next(); !_c.done; _c = _b.next()) {
var algorithm = _c.value;
algorithm.call(signal);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
signal._abortAlgorithms.clear();
EventAlgorithm_1.event_fireAnEvent("abort", signal);
}
exports.abort_signalAbort = abort_signalAbort;
//# sourceMappingURL=AbortAlgorithm.js.map
/***/ }),
/* 711 */,
/* 712 */,
/* 713 */,
/* 714 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const parse = __webpack_require__(830)
const valid = (version, options) => {
const v = parse(version, options)
return v ? v.version : null
}
module.exports = valid
/***/ }),
/* 715 */,
/* 716 */,
/* 717 */,
/* 718 */,
/* 719 */,
/* 720 */
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
// Standard YAML's JSON schema.
// http://www.yaml.org/spec/1.2/spec.html#id2803231
//
// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.
// So, this schema is not such strict as defined in the YAML specification.
// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.
var Schema = __webpack_require__(733);
module.exports = new Schema({
include: [
__webpack_require__(265)
],
implicit: [
__webpack_require__(809),
__webpack_require__(228),
__webpack_require__(44),
__webpack_require__(417)
]
});
/***/ }),
/* 721 */,
/* 722 */
/***/ (function(module) {
/**
* Convert array of 16 byte values to UUID string format of the form:
* XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
*/
var byteToHex = [];
for (var i = 0; i < 256; ++i) {
byteToHex[i] = (i + 0x100).toString(16).substr(1);
}
function bytesToUuid(buf, offset) {
var i = offset || 0;
var bth = byteToHex;
// join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4
return ([
bth[buf[i++]], bth[buf[i++]],
bth[buf[i++]], bth[buf[i++]], '-',
bth[buf[i++]], bth[buf[i++]], '-',
bth[buf[i++]], bth[buf[i++]], '-',
bth[buf[i++]], bth[buf[i++]], '-',
bth[buf[i++]], bth[buf[i++]],
bth[buf[i++]], bth[buf[i++]],
bth[buf[i++]], bth[buf[i++]]
]).join('');
}
module.exports = bytesToUuid;
/***/ }),
/* 723 */
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
// JS-YAML's default schema for `safeLoad` function.
// It is not described in the YAML specification.
//
// This schema is based on standard YAML's Core schema and includes most of
// extra types described at YAML tag repository. (http://yaml.org/type/)
var Schema = __webpack_require__(733);
module.exports = new Schema({
include: [
__webpack_require__(611)
],
implicit: [
__webpack_require__(841),
__webpack_require__(633)
],
explicit: [
__webpack_require__(913),
__webpack_require__(842),
__webpack_require__(75),
__webpack_require__(100)
]
});
/***/ }),
/* 724 */,
/* 725 */,
/* 726 */,
/* 727 */,
/* 728 */,
/* 729 */,
/* 730 */
/***/ (function(__unusedmodule, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Represents a mutation record.
*/
var MutationRecordImpl = /** @class */ (function () {
/**
* Initializes a new instance of `MutationRecord`.
*
* @param type - type of mutation: `"attributes"` for an attribute
* mutation, `"characterData"` for a mutation to a CharacterData node
* and `"childList"` for a mutation to the tree of nodes.
* @param target - node affected by the mutation.
* @param addedNodes - list of added nodes.
* @param removedNodes - list of removed nodes.
* @param previousSibling - previous sibling of added or removed nodes.
* @param nextSibling - next sibling of added or removed nodes.
* @param attributeName - local name of the changed attribute,
* and `null` otherwise.
* @param attributeNamespace - namespace of the changed attribute,
* and `null` otherwise.
* @param oldValue - value before mutation: attribute value for an attribute
* mutation, node `data` for a mutation to a CharacterData node and `null`
* for a mutation to the tree of nodes.
*/
function MutationRecordImpl(type, target, addedNodes, removedNodes, previousSibling, nextSibling, attributeName, attributeNamespace, oldValue) {
this._type = type;
this._target = target;
this._addedNodes = addedNodes;
this._removedNodes = removedNodes;
this._previousSibling = previousSibling;
this._nextSibling = nextSibling;
this._attributeName = attributeName;
this._attributeNamespace = attributeNamespace;
this._oldValue = oldValue;
}
Object.defineProperty(MutationRecordImpl.prototype, "type", {
/** @inheritdoc */
get: function () { return this._type; },
enumerable: true,
configurable: true
});
Object.defineProperty(MutationRecordImpl.prototype, "target", {
/** @inheritdoc */
get: function () { return this._target; },
enumerable: true,
configurable: true
});
Object.defineProperty(MutationRecordImpl.prototype, "addedNodes", {
/** @inheritdoc */
get: function () { return this._addedNodes; },
enumerable: true,
configurable: true
});
Object.defineProperty(MutationRecordImpl.prototype, "removedNodes", {
/** @inheritdoc */
get: function () { return this._removedNodes; },
enumerable: true,
configurable: true
});
Object.defineProperty(MutationRecordImpl.prototype, "previousSibling", {
/** @inheritdoc */
get: function () { return this._previousSibling; },
enumerable: true,
configurable: true
});
Object.defineProperty(MutationRecordImpl.prototype, "nextSibling", {
/** @inheritdoc */
get: function () { return this._nextSibling; },
enumerable: true,
configurable: true
});
Object.defineProperty(MutationRecordImpl.prototype, "attributeName", {
/** @inheritdoc */
get: function () { return this._attributeName; },
enumerable: true,
configurable: true
});
Object.defineProperty(MutationRecordImpl.prototype, "attributeNamespace", {
/** @inheritdoc */
get: function () { return this._attributeNamespace; },
enumerable: true,
configurable: true
});
Object.defineProperty(MutationRecordImpl.prototype, "oldValue", {
/** @inheritdoc */
get: function () { return this._oldValue; },
enumerable: true,
configurable: true
});
/**
* Creates a new `MutationRecord`.
*
* @param type - type of mutation: `"attributes"` for an attribute
* mutation, `"characterData"` for a mutation to a CharacterData node
* and `"childList"` for a mutation to the tree of nodes.
* @param target - node affected by the mutation.
* @param addedNodes - list of added nodes.
* @param removedNodes - list of removed nodes.
* @param previousSibling - previous sibling of added or removed nodes.
* @param nextSibling - next sibling of added or removed nodes.
* @param attributeName - local name of the changed attribute,
* and `null` otherwise.
* @param attributeNamespace - namespace of the changed attribute,
* and `null` otherwise.
* @param oldValue - value before mutation: attribute value for an attribute
* mutation, node `data` for a mutation to a CharacterData node and `null`
* for a mutation to the tree of nodes.
*/
MutationRecordImpl._create = function (type, target, addedNodes, removedNodes, previousSibling, nextSibling, attributeName, attributeNamespace, oldValue) {
return new MutationRecordImpl(type, target, addedNodes, removedNodes, previousSibling, nextSibling, attributeName, attributeNamespace, oldValue);
};
return MutationRecordImpl;
}());
exports.MutationRecordImpl = MutationRecordImpl;
//# sourceMappingURL=MutationRecordImpl.js.map
/***/ }),
/* 731 */,
/* 732 */,
/* 733 */
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
/*eslint-disable max-len*/
var common = __webpack_require__(740);
var YAMLException = __webpack_require__(556);
var Type = __webpack_require__(945);
function compileList(schema, name, result) {
var exclude = [];
schema.include.forEach(function (includedSchema) {
result = compileList(includedSchema, name, result);
});
schema[name].forEach(function (currentType) {
result.forEach(function (previousType, previousIndex) {
if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {
exclude.push(previousIndex);
}
});
result.push(currentType);
});
return result.filter(function (type, index) {
return exclude.indexOf(index) === -1;
});
}
function compileMap(/* lists... */) {
var result = {
scalar: {},
sequence: {},
mapping: {},
fallback: {}
}, index, length;
function collectType(type) {
result[type.kind][type.tag] = result['fallback'][type.tag] = type;
}
for (index = 0, length = arguments.length; index < length; index += 1) {
arguments[index].forEach(collectType);
}
return result;
}
function Schema(definition) {
this.include = definition.include || [];
this.implicit = definition.implicit || [];
this.explicit = definition.explicit || [];
this.implicit.forEach(function (type) {
if (type.loadKind && type.loadKind !== 'scalar') {
throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');
}
});
this.compiledImplicit = compileList(this, 'implicit', []);
this.compiledExplicit = compileList(this, 'explicit', []);
this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);
}
Schema.DEFAULT = null;
Schema.create = function createSchema() {
var schemas, types;
switch (arguments.length) {
case 1:
schemas = Schema.DEFAULT;
types = arguments[0];
break;
case 2:
schemas = arguments[0];
types = arguments[1];
break;
default:
throw new YAMLException('Wrong number of arguments for Schema.create function');
}
schemas = common.toArray(schemas);
types = common.toArray(types);
if (!schemas.every(function (schema) { return schema instanceof Schema; })) {
throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');
}
if (!types.every(function (type) { return type instanceof Type; })) {
throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');
}
return new Schema({
include: schemas,
explicit: types
});
};
module.exports = Schema;
/***/ }),
/* 734 */,
/* 735 */,
/* 736 */,
/* 737 */,
/* 738 */,
/* 739 */,
/* 740 */
/***/ (function(module) {
"use strict";
function isNothing(subject) {
return (typeof subject === 'undefined') || (subject === null);
}
function isObject(subject) {
return (typeof subject === 'object') && (subject !== null);
}
function toArray(sequence) {
if (Array.isArray(sequence)) return sequence;
else if (isNothing(sequence)) return [];
return [ sequence ];
}
function extend(target, source) {
var index, length, key, sourceKeys;
if (source) {
sourceKeys = Object.keys(source);
for (index = 0, length = sourceKeys.length; index < length; index += 1) {
key = sourceKeys[index];
target[key] = source[key];
}
}
return target;
}
function repeat(string, count) {
var result = '', cycle;
for (cycle = 0; cycle < count; cycle += 1) {
result += string;
}
return result;
}
function isNegativeZero(number) {
return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);
}
module.exports.isNothing = isNothing;
module.exports.isObject = isObject;
module.exports.toArray = toArray;
module.exports.repeat = repeat;
module.exports.isNegativeZero = isNegativeZero;
module.exports.extend = extend;
/***/ }),
/* 741 */,
/* 742 */,
/* 743 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var dom_1 = __webpack_require__(252);
var dom_2 = __webpack_require__(113);
var util_1 = __webpack_require__(592);
dom_2.dom.setFeatures(false);
/**
* Creates an XML document without any child nodes.
*/
function createDocument() {
var impl = new dom_1.DOMImplementation();
var doc = impl.createDocument(null, 'root', null);
/* istanbul ignore else */
if (doc.documentElement) {
doc.removeChild(doc.documentElement);
}
return doc;
}
exports.createDocument = createDocument;
/**
* Sanitizes input strings with user supplied replacement characters.
*
* @param str - input string
* @param replacement - replacement character or function
*/
function sanitizeInput(str, replacement) {
if (str == null) {
return str;
}
else if (replacement === undefined) {
return str + "";
}
else {
var result = "";
str = str + "";
for (var i = 0; i < str.length; i++) {
var n = str.charCodeAt(i);
// #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
if (n === 0x9 || n === 0xA || n === 0xD ||
(n >= 0x20 && n <= 0xD7FF) ||
(n >= 0xE000 && n <= 0xFFFD)) {
// valid character - not surrogate pair
result += str.charAt(i);
}
else if (n >= 0xD800 && n <= 0xDBFF && i < str.length - 1) {
var n2 = str.charCodeAt(i + 1);
if (n2 >= 0xDC00 && n2 <= 0xDFFF) {
// valid surrogate pair
n = (n - 0xD800) * 0x400 + n2 - 0xDC00 + 0x10000;
result += String.fromCodePoint(n);
i++;
}
else {
// invalid lone surrogate
result += util_1.isString(replacement) ? replacement : replacement(str.charAt(i), i, str);
}
}
else {
// invalid character
result += util_1.isString(replacement) ? replacement : replacement(str.charAt(i), i, str);
}
}
return result;
}
}
exports.sanitizeInput = sanitizeInput;
//# sourceMappingURL=dom.js.map
/***/ }),
/* 744 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const SemVer = __webpack_require__(65)
const major = (a, loose) => new SemVer(a, loose).major
module.exports = major
/***/ }),
/* 745 */,
/* 746 */,
/* 747 */
/***/ (function(module) {
module.exports = require("fs");
/***/ }),
/* 748 */,
/* 749 */,
/* 750 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var util_1 = __webpack_require__(592);
var ObjectWriter_1 = __webpack_require__(419);
var BaseWriter_1 = __webpack_require__(462);
/**
* Serializes XML nodes into ES6 maps and arrays.
*/
var MapWriter = /** @class */ (function (_super) {
__extends(MapWriter, _super);
/**
* Initializes a new instance of `MapWriter`.
*
* @param builderOptions - XML builder options
* @param writerOptions - serialization options
*/
function MapWriter(builderOptions, writerOptions) {
var _this = _super.call(this, builderOptions) || this;
// provide default options
_this._writerOptions = util_1.applyDefaults(writerOptions, {
format: "map",
wellFormed: false,
noDoubleEncoding: false,
group: false,
verbose: false
});
return _this;
}
/**
* Produces an XML serialization of the given node.
*
* @param node - node to serialize
*/
MapWriter.prototype.serialize = function (node) {
// convert to object
var objectWriterOptions = util_1.applyDefaults(this._writerOptions, {
format: "object",
wellFormed: false,
noDoubleEncoding: false,
verbose: false
});
var objectWriter = new ObjectWriter_1.ObjectWriter(this._builderOptions, objectWriterOptions);
var val = objectWriter.serialize(node);
// recursively convert object into Map
return this._convertObject(val);
};
/**
* Recursively converts a JS object into an ES5 map.
*
* @param obj - a JS object
*/
MapWriter.prototype._convertObject = function (obj) {
if (util_1.isArray(obj)) {
for (var i = 0; i < obj.length; i++) {
obj[i] = this._convertObject(obj[i]);
}
return obj;
}
else if (util_1.isObject(obj)) {
var map = new Map();
for (var key in obj) {
map.set(key, this._convertObject(obj[key]));
}
return map;
}
else {
return obj;
}
};
return MapWriter;
}(BaseWriter_1.BaseWriter));
exports.MapWriter = MapWriter;
//# sourceMappingURL=MapWriter.js.map
/***/ }),
/* 751 */,
/* 752 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const eq = __webpack_require__(298)
const neq = __webpack_require__(85)
const gt = __webpack_require__(486)
const gte = __webpack_require__(167)
const lt = __webpack_require__(586)
const lte = __webpack_require__(898)
const cmp = (a, op, b, loose) => {
switch (op) {
case '===':
if (typeof a === 'object')
a = a.version
if (typeof b === 'object')
b = b.version
return a === b
case '!==':
if (typeof a === 'object')
a = a.version
if (typeof b === 'object')
b = b.version
return a !== b
case '':
case '=':
case '==':
return eq(a, b, loose)
case '!=':
return neq(a, b, loose)
case '>':
return gt(a, b, loose)
case '>=':
return gte(a, b, loose)
case '<':
return lt(a, b, loose)
case '<=':
return lte(a, b, loose)
default:
throw new TypeError(`Invalid operator: ${op}`)
}
}
module.exports = cmp
/***/ }),
/* 753 */,
/* 754 */,
/* 755 */,
/* 756 */,
/* 757 */,
/* 758 */,
/* 759 */,
/* 760 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var interfaces_1 = __webpack_require__(970);
var CharacterDataImpl_1 = __webpack_require__(43);
var WebIDLAlgorithm_1 = __webpack_require__(495);
/**
* Represents a comment node.
*/
var CommentImpl = /** @class */ (function (_super) {
__extends(CommentImpl, _super);
/**
* Initializes a new instance of `Comment`.
*
* @param data - the text content
*/
function CommentImpl(data) {
if (data === void 0) { data = ''; }
return _super.call(this, data) || this;
}
/**
* Creates a new `Comment`.
*
* @param document - owner document
* @param data - node contents
*/
CommentImpl._create = function (document, data) {
if (data === void 0) { data = ''; }
var node = new CommentImpl(data);
node._nodeDocument = document;
return node;
};
return CommentImpl;
}(CharacterDataImpl_1.CharacterDataImpl));
exports.CommentImpl = CommentImpl;
/**
* Initialize prototype properties
*/
WebIDLAlgorithm_1.idl_defineConst(CommentImpl.prototype, "_nodeType", interfaces_1.NodeType.Comment);
//# sourceMappingURL=CommentImpl.js.map
/***/ }),
/* 761 */,
/* 762 */,
/* 763 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var CodePoints_1 = __webpack_require__(11);
/**
* Base-64 encodes the given string.
*
* @param input - a string
*/
function forgivingBase64Encode(input) {
/**
* To forgiving-base64 encode given a byte sequence data, apply the base64
* algorithm defined in section 4 of RFC 4648 to data and return the result.
* [RFC4648]
*/
return Buffer.from(input).toString('base64');
}
exports.forgivingBase64Encode = forgivingBase64Encode;
/**
* Decodes a base-64 string.
*
* @param input - a string
*/
function forgivingBase64Decode(input) {
if (input === "")
return "";
/**
* 1. Remove all ASCII whitespace from data.
*/
input = input.replace(CodePoints_1.ASCIIWhiteSpace, '');
/**
* 2. If datas length divides by 4 leaving no remainder, then:
* 2.1. If data ends with one or two U+003D (=) code points, then remove them from data.
*/
if (input.length % 4 === 0) {
if (input.endsWith("==")) {
input = input.substr(0, input.length - 2);
}
else if (input.endsWith("=")) {
input = input.substr(0, input.length - 1);
}
}
/**
* 3. If datas length divides by 4 leaving a remainder of 1, then return failure.
*/
if (input.length % 4 === 1)
return null;
/**
* 4. If data contains a code point that is not one of
* - U+002B (+)
* - U+002F (/)
* - ASCII alphanumeric
* then return failure.
*/
if (!/[0-9A-Za-z+/]/.test(input))
return null;
/**
* 5. Let output be an empty byte sequence.
* 6. Let buffer be an empty buffer that can have bits appended to it.
* 7. Let position be a position variable for data, initially pointing at the
* start of data.
* 8. While position does not point past the end of data:
* 8.1. Find the code point pointed to by position in the second column of
* Table 1: The Base 64 Alphabet of RFC 4648. Let n be the number given in the
* first cell of the same row. [RFC4648]
* 8.2. Append the six bits corresponding to n, most significant bit first,
* to buffer.
* 8.3. If buffer has accumulated 24 bits, interpret them as three 8-bit
* big-endian numbers. Append three bytes with values equal to those numbers
* to output, in the same order, and then empty buffer.
* 8.4. Advance position by 1.
* 9. If buffer is not empty, it contains either 12 or 18 bits. If it contains
* 12 bits, then discard the last four and interpret the remaining eight as an
* 8-bit big-endian number. If it contains 18 bits, then discard the last two
* and interpret the remaining 16 as two 8-bit big-endian numbers. Append the
* one or two bytes with values equal to those one or two numbers to output,
* in the same order.
* 10. Return output.
*/
return Buffer.from(input, 'base64').toString('utf8');
}
exports.forgivingBase64Decode = forgivingBase64Decode;
//# sourceMappingURL=Base64.js.map
/***/ }),
/* 764 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var util_1 = __webpack_require__(592);
var interfaces_1 = __webpack_require__(970);
var BaseWriter_1 = __webpack_require__(462);
var util_2 = __webpack_require__(918);
/**
* Serializes XML nodes into strings.
*/
var XMLWriter = /** @class */ (function (_super) {
__extends(XMLWriter, _super);
/**
* Initializes a new instance of `XMLWriter`.
*
* @param builderOptions - XML builder options
* @param writerOptions - serialization options
*/
function XMLWriter(builderOptions, writerOptions) {
var _this = _super.call(this, builderOptions) || this;
_this._indentation = {};
_this._lengthToLastNewline = 0;
// provide default options
_this._writerOptions = util_1.applyDefaults(writerOptions, {
wellFormed: false,
noDoubleEncoding: false,
headless: false,
prettyPrint: false,
indent: " ",
newline: "\n",
offset: 0,
width: 0,
allowEmptyTags: false,
indentTextOnlyNodes: false,
spaceBeforeSlash: false
});
return _this;
}
/**
* Produces an XML serialization of the given node.
*
* @param node - node to serialize
*/
XMLWriter.prototype.serialize = function (node) {
this._refs = { suppressPretty: false, emptyNode: false, markup: "" };
// Serialize XML declaration
if (node.nodeType === interfaces_1.NodeType.Document && !this._writerOptions.headless) {
this.declaration(this._builderOptions.version, this._builderOptions.encoding, this._builderOptions.standalone);
}
// recursively serialize node
this.serializeNode(node, this._writerOptions.wellFormed, this._writerOptions.noDoubleEncoding);
// remove trailing newline
if (this._writerOptions.prettyPrint &&
this._refs.markup.slice(-this._writerOptions.newline.length) === this._writerOptions.newline) {
this._refs.markup = this._refs.markup.slice(0, -this._writerOptions.newline.length);
}
return this._refs.markup;
};
/** @inheritdoc */
XMLWriter.prototype.declaration = function (version, encoding, standalone) {
this._beginLine();
this._refs.markup += "<?xml version=\"" + version + "\"";
if (encoding !== undefined) {
this._refs.markup += " encoding=\"" + encoding + "\"";
}
if (standalone !== undefined) {
this._refs.markup += " standalone=\"" + (standalone ? "yes" : "no") + "\"";
}
this._refs.markup += "?>";
this._endLine();
};
/** @inheritdoc */
XMLWriter.prototype.docType = function (name, publicId, systemId) {
this._beginLine();
if (publicId && systemId) {
this._refs.markup += "<!DOCTYPE " + name + " PUBLIC \"" + publicId + "\" \"" + systemId + "\">";
}
else if (publicId) {
this._refs.markup += "<!DOCTYPE " + name + " PUBLIC \"" + publicId + "\">";
}
else if (systemId) {
this._refs.markup += "<!DOCTYPE " + name + " SYSTEM \"" + systemId + "\">";
}
else {
this._refs.markup += "<!DOCTYPE " + name + ">";
}
this._endLine();
};
/** @inheritdoc */
XMLWriter.prototype.openTagBegin = function (name) {
this._beginLine();
this._refs.markup += "<" + name;
};
/** @inheritdoc */
XMLWriter.prototype.openTagEnd = function (name, selfClosing, voidElement) {
// do not indent text only elements or elements with empty text nodes
this._refs.suppressPretty = false;
this._refs.emptyNode = false;
if (this._writerOptions.prettyPrint && !selfClosing && !voidElement) {
var textOnlyNode = true;
var emptyNode = true;
var childNode = this.currentNode.firstChild;
var cdataCount = 0;
var textCount = 0;
while (childNode) {
if (util_2.Guard.isExclusiveTextNode(childNode)) {
textCount++;
}
else if (util_2.Guard.isCDATASectionNode(childNode)) {
cdataCount++;
}
else {
textOnlyNode = false;
emptyNode = false;
break;
}
if (childNode.data !== '') {
emptyNode = false;
}
childNode = childNode.nextSibling;
}
this._refs.suppressPretty = !this._writerOptions.indentTextOnlyNodes && textOnlyNode && ((cdataCount <= 1 && textCount === 0) || cdataCount === 0);
this._refs.emptyNode = emptyNode;
}
if ((voidElement || selfClosing || this._refs.emptyNode) && this._writerOptions.allowEmptyTags) {
this._refs.markup += "></" + name + ">";
}
else {
this._refs.markup += voidElement ? " />" :
(selfClosing || this._refs.emptyNode) ? (this._writerOptions.spaceBeforeSlash ? " />" : "/>") : ">";
}
this._endLine();
};
/** @inheritdoc */
XMLWriter.prototype.closeTag = function (name) {
if (!this._refs.emptyNode) {
this._beginLine();
this._refs.markup += "</" + name + ">";
}
this._refs.suppressPretty = false;
this._refs.emptyNode = false;
this._endLine();
};
/** @inheritdoc */
XMLWriter.prototype.attribute = function (name, value) {
var str = name + "=\"" + value + "\"";
if (this._writerOptions.prettyPrint && this._writerOptions.width > 0 &&
this._refs.markup.length - this._lengthToLastNewline + 1 + str.length > this._writerOptions.width) {
this._endLine();
this._beginLine();
this._refs.markup += this._indent(1) + str;
}
else {
this._refs.markup += " " + str;
}
};
/** @inheritdoc */
XMLWriter.prototype.text = function (data) {
if (data !== '') {
this._beginLine();
this._refs.markup += data;
this._endLine();
}
};
/** @inheritdoc */
XMLWriter.prototype.cdata = function (data) {
if (data !== '') {
this._beginLine();
this._refs.markup += "<![CDATA[" + data + "]]>";
this._endLine();
}
};
/** @inheritdoc */
XMLWriter.prototype.comment = function (data) {
this._beginLine();
this._refs.markup += "<!--" + data + "-->";
this._endLine();
};
/** @inheritdoc */
XMLWriter.prototype.instruction = function (target, data) {
this._beginLine();
this._refs.markup += "<?" + (data === "" ? target : target + " " + data) + "?>";
this._endLine();
};
/**
* Produces characters to be prepended to a line of string in pretty-print
* mode.
*/
XMLWriter.prototype._beginLine = function () {
if (this._writerOptions.prettyPrint && !this._refs.suppressPretty) {
this._refs.markup += this._indent(this._writerOptions.offset + this.level);
}
};
/**
* Produces characters to be appended to a line of string in pretty-print
* mode.
*/
XMLWriter.prototype._endLine = function () {
if (this._writerOptions.prettyPrint && !this._refs.suppressPretty) {
this._refs.markup += this._writerOptions.newline;
this._lengthToLastNewline = this._refs.markup.length;
}
};
/**
* Produces an indentation string.
*
* @param level - depth of the tree
*/
XMLWriter.prototype._indent = function (level) {
if (level <= 0) {
return "";
}
else if (this._indentation[level] !== undefined) {
return this._indentation[level];
}
else {
var str = this._writerOptions.indent.repeat(level);
this._indentation[level] = str;
return str;
}
};
return XMLWriter;
}(BaseWriter_1.BaseWriter));
exports.XMLWriter = XMLWriter;
//# sourceMappingURL=XMLWriter.js.map
/***/ }),
/* 765 */,
/* 766 */,
/* 767 */,
/* 768 */,
/* 769 */,
/* 770 */,
/* 771 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
var XMLStringLexer_1 = __webpack_require__(911);
var interfaces_1 = __webpack_require__(172);
var infra_1 = __webpack_require__(23);
var algorithm_1 = __webpack_require__(163);
var dom_1 = __webpack_require__(743);
var BaseReader_1 = __webpack_require__(305);
/**
* Parses XML nodes from an XML document string.
*/
var XMLReader = /** @class */ (function (_super) {
__extends(XMLReader, _super);
function XMLReader() {
return _super !== null && _super.apply(this, arguments) || this;
}
/**
* Parses the given document representation.
*
* @param node - node receive parsed XML nodes
* @param str - XML document string to parse
*/
XMLReader.prototype._parse = function (node, str) {
var e_1, _a, e_2, _b;
var lexer = new XMLStringLexer_1.XMLStringLexer(str, { skipWhitespaceOnlyText: true });
// sanitizes input characters
var invalidCharReplacement = this._builderOptions.invalidCharReplacement;
var s = function (str) {
return dom_1.sanitizeInput(str, invalidCharReplacement);
};
var context = node;
var token = lexer.nextToken();
while (token.type !== interfaces_1.TokenType.EOF) {
switch (token.type) {
case interfaces_1.TokenType.Declaration:
var declaration = token;
var version = s(declaration.version);
if (version !== "1.0") {
throw new Error("Invalid xml version: " + version);
}
var builderOptions = {
version: version
};
if (declaration.encoding) {
builderOptions.encoding = s(declaration.encoding);
}
if (declaration.standalone) {
builderOptions.standalone = (s(declaration.standalone) === "yes");
}
context.set(builderOptions);
break;
case interfaces_1.TokenType.DocType:
var doctype = token;
context = this.docType(context, s(doctype.name), s(doctype.pubId), s(doctype.sysId)) || context;
break;
case interfaces_1.TokenType.CDATA:
var cdata = token;
context = this.cdata(context, s(cdata.data)) || context;
break;
case interfaces_1.TokenType.Comment:
var comment = token;
context = this.comment(context, s(comment.data)) || context;
break;
case interfaces_1.TokenType.PI:
var pi = token;
context = this.instruction(context, s(pi.target), s(pi.data)) || context;
break;
case interfaces_1.TokenType.Text:
var text = token;
context = this.text(context, s(text.data)) || context;
break;
case interfaces_1.TokenType.Element:
var element = token;
var elementName = s(element.name);
// inherit namespace from parent
var _c = __read(algorithm_1.namespace_extractQName(elementName), 1), prefix = _c[0];
var namespace = context.node.lookupNamespaceURI(prefix);
// override namespace if there is a namespace declaration
// attribute
// also lookup namespace declaration attributes
var nsDeclarations = {};
try {
for (var _d = (e_1 = void 0, __values(element.attributes)), _e = _d.next(); !_e.done; _e = _d.next()) {
var _f = __read(_e.value, 2), attName = _f[0], attValue = _f[1];
attName = s(attName);
attValue = s(attValue);
if (attName === "xmlns") {
namespace = attValue;
}
else {
var _g = __read(algorithm_1.namespace_extractQName(attName), 2), attPrefix = _g[0], attLocalName = _g[1];
if (attPrefix === "xmlns") {
if (attLocalName === prefix) {
namespace = attValue;
}
nsDeclarations[attLocalName] = attValue;
}
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
}
finally { if (e_1) throw e_1.error; }
}
// create the DOM element node
var elementNode = (namespace !== null ?
this.element(context, namespace, elementName) :
this.element(context, undefined, elementName));
if (elementNode === undefined)
break;
try {
// assign attributes
for (var _h = (e_2 = void 0, __values(element.attributes)), _j = _h.next(); !_j.done; _j = _h.next()) {
var _k = __read(_j.value, 2), attName = _k[0], attValue = _k[1];
attName = s(attName);
attValue = s(attValue);
var _l = __read(algorithm_1.namespace_extractQName(attName), 2), attPrefix = _l[0], attLocalName = _l[1];
var attNamespace = null;
if (attPrefix === "xmlns" || (attPrefix === null && attLocalName === "xmlns")) {
// namespace declaration attribute
attNamespace = infra_1.namespace.XMLNS;
}
else {
attNamespace = elementNode.node.lookupNamespaceURI(attPrefix);
if (attNamespace !== null && elementNode.node.isDefaultNamespace(attNamespace)) {
attNamespace = null;
}
else if (attNamespace === null && attPrefix !== null) {
attNamespace = nsDeclarations[attPrefix] || null;
}
}
if (attNamespace !== null)
this.attribute(elementNode, attNamespace, attName, attValue);
else
this.attribute(elementNode, undefined, attName, attValue);
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (_j && !_j.done && (_b = _h.return)) _b.call(_h);
}
finally { if (e_2) throw e_2.error; }
}
if (!element.selfClosing) {
context = elementNode;
}
break;
case interfaces_1.TokenType.ClosingTag:
/* istanbul ignore else */
if (context.node.parentNode) {
context = context.up();
}
break;
}
token = lexer.nextToken();
}
return context;
};
return XMLReader;
}(BaseReader_1.BaseReader));
exports.XMLReader = XMLReader;
//# sourceMappingURL=XMLReader.js.map
/***/ }),
/* 772 */,
/* 773 */,
/* 774 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var interfaces_1 = __webpack_require__(970);
var WebIDLAlgorithm_1 = __webpack_require__(495);
/**
* Represents a node filter.
*/
var NodeFilterImpl = /** @class */ (function () {
/**
* Initializes a new instance of `NodeFilter`.
*/
function NodeFilterImpl() {
}
/**
* Callback function.
*/
NodeFilterImpl.prototype.acceptNode = function (node) {
return interfaces_1.FilterResult.Accept;
};
/**
* Creates a new `NodeFilter`.
*/
NodeFilterImpl._create = function () {
return new NodeFilterImpl();
};
NodeFilterImpl.FILTER_ACCEPT = 1;
NodeFilterImpl.FILTER_REJECT = 2;
NodeFilterImpl.FILTER_SKIP = 3;
NodeFilterImpl.SHOW_ALL = 0xffffffff;
NodeFilterImpl.SHOW_ELEMENT = 0x1;
NodeFilterImpl.SHOW_ATTRIBUTE = 0x2;
NodeFilterImpl.SHOW_TEXT = 0x4;
NodeFilterImpl.SHOW_CDATA_SECTION = 0x8;
NodeFilterImpl.SHOW_ENTITY_REFERENCE = 0x10;
NodeFilterImpl.SHOW_ENTITY = 0x20;
NodeFilterImpl.SHOW_PROCESSING_INSTRUCTION = 0x40;
NodeFilterImpl.SHOW_COMMENT = 0x80;
NodeFilterImpl.SHOW_DOCUMENT = 0x100;
NodeFilterImpl.SHOW_DOCUMENT_TYPE = 0x200;
NodeFilterImpl.SHOW_DOCUMENT_FRAGMENT = 0x400;
NodeFilterImpl.SHOW_NOTATION = 0x800;
return NodeFilterImpl;
}());
exports.NodeFilterImpl = NodeFilterImpl;
/**
* Define constants on prototype.
*/
WebIDLAlgorithm_1.idl_defineConst(NodeFilterImpl.prototype, "FILTER_ACCEPT", 1);
WebIDLAlgorithm_1.idl_defineConst(NodeFilterImpl.prototype, "FILTER_REJECT", 2);
WebIDLAlgorithm_1.idl_defineConst(NodeFilterImpl.prototype, "FILTER_SKIP", 3);
WebIDLAlgorithm_1.idl_defineConst(NodeFilterImpl.prototype, "SHOW_ALL", 0xffffffff);
WebIDLAlgorithm_1.idl_defineConst(NodeFilterImpl.prototype, "SHOW_ELEMENT", 0x1);
WebIDLAlgorithm_1.idl_defineConst(NodeFilterImpl.prototype, "SHOW_ATTRIBUTE", 0x2);
WebIDLAlgorithm_1.idl_defineConst(NodeFilterImpl.prototype, "SHOW_TEXT", 0x4);
WebIDLAlgorithm_1.idl_defineConst(NodeFilterImpl.prototype, "SHOW_CDATA_SECTION", 0x8);
WebIDLAlgorithm_1.idl_defineConst(NodeFilterImpl.prototype, "SHOW_ENTITY_REFERENCE", 0x10);
WebIDLAlgorithm_1.idl_defineConst(NodeFilterImpl.prototype, "SHOW_ENTITY", 0x20);
WebIDLAlgorithm_1.idl_defineConst(NodeFilterImpl.prototype, "SHOW_PROCESSING_INSTRUCTION", 0x40);
WebIDLAlgorithm_1.idl_defineConst(NodeFilterImpl.prototype, "SHOW_COMMENT", 0x80);
WebIDLAlgorithm_1.idl_defineConst(NodeFilterImpl.prototype, "SHOW_DOCUMENT", 0x100);
WebIDLAlgorithm_1.idl_defineConst(NodeFilterImpl.prototype, "SHOW_DOCUMENT_TYPE", 0x200);
WebIDLAlgorithm_1.idl_defineConst(NodeFilterImpl.prototype, "SHOW_DOCUMENT_FRAGMENT", 0x400);
WebIDLAlgorithm_1.idl_defineConst(NodeFilterImpl.prototype, "SHOW_NOTATION", 0x800);
//# sourceMappingURL=NodeFilterImpl.js.map
/***/ }),
/* 775 */,
/* 776 */,
/* 777 */,
/* 778 */,
/* 779 */,
/* 780 */,
/* 781 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var BaseCBWriter_1 = __webpack_require__(512);
/**
* Serializes XML nodes.
*/
var JSONCBWriter = /** @class */ (function (_super) {
__extends(JSONCBWriter, _super);
/**
* Initializes a new instance of `JSONCBWriter`.
*
* @param builderOptions - XML builder options
*/
function JSONCBWriter(builderOptions) {
var _this = _super.call(this, builderOptions) || this;
_this._hasChildren = [];
_this._additionalLevel = 0;
return _this;
}
/** @inheritdoc */
JSONCBWriter.prototype.frontMatter = function () {
return "";
};
/** @inheritdoc */
JSONCBWriter.prototype.declaration = function (version, encoding, standalone) {
return "";
};
/** @inheritdoc */
JSONCBWriter.prototype.docType = function (name, publicId, systemId) {
return "";
};
/** @inheritdoc */
JSONCBWriter.prototype.comment = function (data) {
// { "!": "hello" }
return this._comma() + this._beginLine() + "{" + this._sep() +
this._key(this._builderOptions.convert.comment) + this._sep() +
this._val(data) + this._sep() + "}";
};
/** @inheritdoc */
JSONCBWriter.prototype.text = function (data) {
// { "#": "hello" }
return this._comma() + this._beginLine() + "{" + this._sep() +
this._key(this._builderOptions.convert.text) + this._sep() +
this._val(data) + this._sep() + "}";
};
/** @inheritdoc */
JSONCBWriter.prototype.instruction = function (target, data) {
// { "?": "target hello" }
return this._comma() + this._beginLine() + "{" + this._sep() +
this._key(this._builderOptions.convert.ins) + this._sep() +
this._val(data ? target + " " + data : target) + this._sep() + "}";
};
/** @inheritdoc */
JSONCBWriter.prototype.cdata = function (data) {
// { "$": "hello" }
return this._comma() + this._beginLine() + "{" + this._sep() +
this._key(this._builderOptions.convert.cdata) + this._sep() +
this._val(data) + this._sep() + "}";
};
/** @inheritdoc */
JSONCBWriter.prototype.attribute = function (name, value) {
// { "@name": "val" }
return this._comma() + this._beginLine(1) + "{" + this._sep() +
this._key(this._builderOptions.convert.att + name) + this._sep() +
this._val(value) + this._sep() + "}";
};
/** @inheritdoc */
JSONCBWriter.prototype.openTagBegin = function (name) {
// { "node": { "#": [
var str = this._comma() + this._beginLine() + "{" + this._sep() + this._key(name) + this._sep() + "{";
this._additionalLevel++;
this.hasData = true;
str += this._beginLine() + this._key(this._builderOptions.convert.text) + this._sep() + "[";
this._hasChildren.push(false);
return str;
};
/** @inheritdoc */
JSONCBWriter.prototype.openTagEnd = function (name, selfClosing, voidElement) {
if (selfClosing) {
var str = this._sep() + "]";
this._additionalLevel--;
str += this._beginLine() + "}" + this._sep() + "}";
return str;
}
else {
return "";
}
};
/** @inheritdoc */
JSONCBWriter.prototype.closeTag = function (name) {
// ] } }
var str = this._beginLine() + "]";
this._additionalLevel--;
str += this._beginLine() + "}" + this._sep() + "}";
return str;
};
/** @inheritdoc */
JSONCBWriter.prototype.beginElement = function (name) { };
/** @inheritdoc */
JSONCBWriter.prototype.endElement = function (name) { this._hasChildren.pop(); };
/**
* Produces characters to be prepended to a line of string in pretty-print
* mode.
*/
JSONCBWriter.prototype._beginLine = function (additionalOffset) {
if (additionalOffset === void 0) { additionalOffset = 0; }
if (this._writerOptions.prettyPrint) {
return (this.hasData ? this._writerOptions.newline : "") +
this._indent(this._writerOptions.offset + this.level + additionalOffset);
}
else {
return "";
}
};
/**
* Produces an indentation string.
*
* @param level - depth of the tree
*/
JSONCBWriter.prototype._indent = function (level) {
if (level + this._additionalLevel <= 0) {
return "";
}
else {
return this._writerOptions.indent.repeat(level + this._additionalLevel);
}
};
/**
* Produces a comma before a child node if it has previous siblings.
*/
JSONCBWriter.prototype._comma = function () {
var str = (this._hasChildren[this._hasChildren.length - 1] ? "," : "");
if (this._hasChildren.length > 0) {
this._hasChildren[this._hasChildren.length - 1] = true;
}
return str;
};
/**
* Produces a separator string.
*/
JSONCBWriter.prototype._sep = function () {
return (this._writerOptions.prettyPrint ? " " : "");
};
/**
* Produces a JSON key string delimited with double quotes.
*/
JSONCBWriter.prototype._key = function (key) {
return "\"" + key + "\":";
};
/**
* Produces a JSON value string delimited with double quotes.
*/
JSONCBWriter.prototype._val = function (val) {
return JSON.stringify(val);
};
return JSONCBWriter;
}(BaseCBWriter_1.BaseCBWriter));
exports.JSONCBWriter = JSONCBWriter;
//# sourceMappingURL=JSONCBWriter.js.map
/***/ }),
/* 782 */
/***/ (function(__unusedmodule, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Determines if the given number is an ASCII byte.
*
* @param byte - a byte
*/
function isASCIIByte(byte) {
/**
* An ASCII byte is a byte in the range 0x00 (NUL) to 0x7F (DEL), inclusive.
*/
return byte >= 0x00 && byte <= 0x7F;
}
exports.isASCIIByte = isASCIIByte;
//# sourceMappingURL=Byte.js.map
/***/ }),
/* 783 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var interfaces_1 = __webpack_require__(970);
/**
* Contains user-defined type guards for DOM objects.
*/
var Guard = /** @class */ (function () {
function Guard() {
}
/**
* Determines if the given object is a `Node`.
*
* @param a - the object to check
*/
Guard.isNode = function (a) {
return (!!a && a._nodeType !== undefined);
};
/**
* Determines if the given object is a `Document`.
*
* @param a - the object to check
*/
Guard.isDocumentNode = function (a) {
return (Guard.isNode(a) && a._nodeType === interfaces_1.NodeType.Document);
};
/**
* Determines if the given object is a `DocumentType`.
*
* @param a - the object to check
*/
Guard.isDocumentTypeNode = function (a) {
return (Guard.isNode(a) && a._nodeType === interfaces_1.NodeType.DocumentType);
};
/**
* Determines if the given object is a `DocumentFragment`.
*
* @param a - the object to check
*/
Guard.isDocumentFragmentNode = function (a) {
return (Guard.isNode(a) && a._nodeType === interfaces_1.NodeType.DocumentFragment);
};
/**
* Determines if the given object is a `Attr`.
*
* @param a - the object to check
*/
Guard.isAttrNode = function (a) {
return (Guard.isNode(a) && a._nodeType === interfaces_1.NodeType.Attribute);
};
/**
* Determines if the given node is a `CharacterData` node.
*
* @param a - the object to check
*/
Guard.isCharacterDataNode = function (a) {
if (!Guard.isNode(a))
return false;
var type = a._nodeType;
return (type === interfaces_1.NodeType.Text ||
type === interfaces_1.NodeType.ProcessingInstruction ||
type === interfaces_1.NodeType.Comment ||
type === interfaces_1.NodeType.CData);
};
/**
* Determines if the given object is a `Text` or a `CDATASection`.
*
* @param a - the object to check
*/
Guard.isTextNode = function (a) {
return (Guard.isNode(a) && (a._nodeType === interfaces_1.NodeType.Text || a._nodeType === interfaces_1.NodeType.CData));
};
/**
* Determines if the given object is a `Text`.
*
* @param a - the object to check
*/
Guard.isExclusiveTextNode = function (a) {
return (Guard.isNode(a) && a._nodeType === interfaces_1.NodeType.Text);
};
/**
* Determines if the given object is a `CDATASection`.
*
* @param a - the object to check
*/
Guard.isCDATASectionNode = function (a) {
return (Guard.isNode(a) && a._nodeType === interfaces_1.NodeType.CData);
};
/**
* Determines if the given object is a `Comment`.
*
* @param a - the object to check
*/
Guard.isCommentNode = function (a) {
return (Guard.isNode(a) && a._nodeType === interfaces_1.NodeType.Comment);
};
/**
* Determines if the given object is a `ProcessingInstruction`.
*
* @param a - the object to check
*/
Guard.isProcessingInstructionNode = function (a) {
return (Guard.isNode(a) && a._nodeType === interfaces_1.NodeType.ProcessingInstruction);
};
/**
* Determines if the given object is an `Element`.
*
* @param a - the object to check
*/
Guard.isElementNode = function (a) {
return (Guard.isNode(a) && a._nodeType === interfaces_1.NodeType.Element);
};
/**
* Determines if the given object is a custom `Element`.
*
* @param a - the object to check
*/
Guard.isCustomElementNode = function (a) {
return (Guard.isElementNode(a) && a._customElementState === "custom");
};
/**
* Determines if the given object is a `ShadowRoot`.
*
* @param a - the object to check
*/
Guard.isShadowRoot = function (a) {
return (!!a && a.host !== undefined);
};
/**
* Determines if the given object is a `MouseEvent`.
*
* @param a - the object to check
*/
Guard.isMouseEvent = function (a) {
return (!!a && a.screenX !== undefined && a.screenY != undefined);
};
/**
* Determines if the given object is a slotable.
*
* Element and Text nodes are slotables. A slotable has an associated name
* (a string).
*
* @param a - the object to check
*/
Guard.isSlotable = function (a) {
return (!!a && a._name !== undefined && a._assignedSlot !== undefined &&
(Guard.isTextNode(a) || Guard.isElementNode(a)));
};
/**
* Determines if the given object is a slot.
*
* @param a - the object to check
*/
Guard.isSlot = function (a) {
return (!!a && a._name !== undefined && a._assignedNodes !== undefined &&
Guard.isElementNode(a));
};
/**
* Determines if the given object is a `Window`.
*
* @param a - the object to check
*/
Guard.isWindow = function (a) {
return (!!a && a.navigator !== undefined);
};
/**
* Determines if the given object is an `EventListener`.
*
* @param a - the object to check
*/
Guard.isEventListener = function (a) {
return (!!a && a.handleEvent !== undefined);
};
/**
* Determines if the given object is a `RegisteredObserver`.
*
* @param a - the object to check
*/
Guard.isRegisteredObserver = function (a) {
return (!!a && a.observer !== undefined && a.options !== undefined);
};
/**
* Determines if the given object is a `TransientRegisteredObserver`.
*
* @param a - the object to check
*/
Guard.isTransientRegisteredObserver = function (a) {
return (!!a && a.source !== undefined && Guard.isRegisteredObserver(a));
};
return Guard;
}());
exports.Guard = Guard;
//# sourceMappingURL=Guard.js.map
/***/ }),
/* 784 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var EventTargetImpl_1 = __webpack_require__(597);
var algorithm_1 = __webpack_require__(163);
/**
* Represents a signal object that communicates with a DOM request and abort
* it through an AbortController.
*/
var AbortSignalImpl = /** @class */ (function (_super) {
__extends(AbortSignalImpl, _super);
/**
* Initializes a new instance of `AbortSignal`.
*/
function AbortSignalImpl() {
var _this = _super.call(this) || this;
_this._abortedFlag = false;
_this._abortAlgorithms = new Set();
return _this;
}
Object.defineProperty(AbortSignalImpl.prototype, "aborted", {
/** @inheritdoc */
get: function () { return this._abortedFlag; },
enumerable: true,
configurable: true
});
Object.defineProperty(AbortSignalImpl.prototype, "onabort", {
/** @inheritdoc */
get: function () {
return algorithm_1.event_getterEventHandlerIDLAttribute(this, "onabort");
},
set: function (val) {
algorithm_1.event_setterEventHandlerIDLAttribute(this, "onabort", val);
},
enumerable: true,
configurable: true
});
/**
* Creates a new `AbortSignal`.
*/
AbortSignalImpl._create = function () {
return new AbortSignalImpl();
};
return AbortSignalImpl;
}(EventTargetImpl_1.EventTargetImpl));
exports.AbortSignalImpl = AbortSignalImpl;
//# sourceMappingURL=AbortSignalImpl.js.map
/***/ }),
/* 785 */,
/* 786 */,
/* 787 */,
/* 788 */,
/* 789 */,
/* 790 */,
/* 791 */,
/* 792 */,
/* 793 */,
/* 794 */
/***/ (function(module) {
module.exports = require("stream");
/***/ }),
/* 795 */,
/* 796 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var interfaces_1 = __webpack_require__(970);
var NodeImpl_1 = __webpack_require__(935);
var WebIDLAlgorithm_1 = __webpack_require__(495);
/**
* Represents a document fragment in the XML tree.
*/
var DocumentFragmentImpl = /** @class */ (function (_super) {
__extends(DocumentFragmentImpl, _super);
/**
* Initializes a new instance of `DocumentFragment`.
*
* @param host - shadow root's host element
*/
function DocumentFragmentImpl(host) {
if (host === void 0) { host = null; }
var _this = _super.call(this) || this;
_this._children = new Set();
_this._host = host;
return _this;
}
// MIXIN: NonElementParentNode
/* istanbul ignore next */
DocumentFragmentImpl.prototype.getElementById = function (elementId) { throw new Error("Mixin: NonElementParentNode not implemented."); };
Object.defineProperty(DocumentFragmentImpl.prototype, "children", {
// MIXIN: ParentNode
/* istanbul ignore next */
get: function () { throw new Error("Mixin: ParentNode not implemented."); },
enumerable: true,
configurable: true
});
Object.defineProperty(DocumentFragmentImpl.prototype, "firstElementChild", {
/* istanbul ignore next */
get: function () { throw new Error("Mixin: ParentNode not implemented."); },
enumerable: true,
configurable: true
});
Object.defineProperty(DocumentFragmentImpl.prototype, "lastElementChild", {
/* istanbul ignore next */
get: function () { throw new Error("Mixin: ParentNode not implemented."); },
enumerable: true,
configurable: true
});
Object.defineProperty(DocumentFragmentImpl.prototype, "childElementCount", {
/* istanbul ignore next */
get: function () { throw new Error("Mixin: ParentNode not implemented."); },
enumerable: true,
configurable: true
});
/* istanbul ignore next */
DocumentFragmentImpl.prototype.prepend = function () {
var nodes = [];
for (var _i = 0; _i < arguments.length; _i++) {
nodes[_i] = arguments[_i];
}
throw new Error("Mixin: ParentNode not implemented.");
};
/* istanbul ignore next */
DocumentFragmentImpl.prototype.append = function () {
var nodes = [];
for (var _i = 0; _i < arguments.length; _i++) {
nodes[_i] = arguments[_i];
}
throw new Error("Mixin: ParentNode not implemented.");
};
/* istanbul ignore next */
DocumentFragmentImpl.prototype.querySelector = function (selectors) { throw new Error("Mixin: ParentNode not implemented."); };
/* istanbul ignore next */
DocumentFragmentImpl.prototype.querySelectorAll = function (selectors) { throw new Error("Mixin: ParentNode not implemented."); };
/**
* Creates a new `DocumentFragment`.
*
* @param document - owner document
* @param host - shadow root's host element
*/
DocumentFragmentImpl._create = function (document, host) {
if (host === void 0) { host = null; }
var node = new DocumentFragmentImpl(host);
node._nodeDocument = document;
return node;
};
return DocumentFragmentImpl;
}(NodeImpl_1.NodeImpl));
exports.DocumentFragmentImpl = DocumentFragmentImpl;
/**
* Initialize prototype properties
*/
WebIDLAlgorithm_1.idl_defineConst(DocumentFragmentImpl.prototype, "_nodeType", interfaces_1.NodeType.DocumentFragment);
//# sourceMappingURL=DocumentFragmentImpl.js.map
/***/ }),
/* 797 */,
/* 798 */,
/* 799 */,
/* 800 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var TraverserImpl_1 = __webpack_require__(487);
var algorithm_1 = __webpack_require__(163);
/**
* Represents an object which can be used to iterate through the nodes
* of a subtree.
*/
var NodeIteratorImpl = /** @class */ (function (_super) {
__extends(NodeIteratorImpl, _super);
/**
* Initializes a new instance of `NodeIterator`.
*/
function NodeIteratorImpl(root, reference, pointerBeforeReference) {
var _this = _super.call(this, root) || this;
_this._iteratorCollection = undefined;
_this._reference = reference;
_this._pointerBeforeReference = pointerBeforeReference;
algorithm_1.nodeIterator_iteratorList().add(_this);
return _this;
}
Object.defineProperty(NodeIteratorImpl.prototype, "referenceNode", {
/** @inheritdoc */
get: function () { return this._reference; },
enumerable: true,
configurable: true
});
Object.defineProperty(NodeIteratorImpl.prototype, "pointerBeforeReferenceNode", {
/** @inheritdoc */
get: function () { return this._pointerBeforeReference; },
enumerable: true,
configurable: true
});
/** @inheritdoc */
NodeIteratorImpl.prototype.nextNode = function () {
/**
* The nextNode() method, when invoked, must return the result of
* traversing with the context object and next.
*/
return algorithm_1.nodeIterator_traverse(this, true);
};
/** @inheritdoc */
NodeIteratorImpl.prototype.previousNode = function () {
/**
* The previousNode() method, when invoked, must return the result of
* traversing with the context object and previous.
*/
return algorithm_1.nodeIterator_traverse(this, false);
};
/** @inheritdoc */
NodeIteratorImpl.prototype.detach = function () {
/**
* The detach() method, when invoked, must do nothing.
*
* since JS lacks weak references, we still use detach
*/
algorithm_1.nodeIterator_iteratorList().delete(this);
};
/**
* Creates a new `NodeIterator`.
*
* @param root - iterator's root node
* @param reference - reference node
* @param pointerBeforeReference - whether the iterator is before or after the
* reference node
*/
NodeIteratorImpl._create = function (root, reference, pointerBeforeReference) {
return new NodeIteratorImpl(root, reference, pointerBeforeReference);
};
return NodeIteratorImpl;
}(TraverserImpl_1.TraverserImpl));
exports.NodeIteratorImpl = NodeIteratorImpl;
//# sourceMappingURL=NodeIteratorImpl.js.map
/***/ }),
/* 801 */,
/* 802 */,
/* 803 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const SemVer = __webpack_require__(65)
const minor = (a, loose) => new SemVer(a, loose).minor
module.exports = minor
/***/ }),
/* 804 */,
/* 805 */,
/* 806 */,
/* 807 */,
/* 808 */,
/* 809 */
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
var Type = __webpack_require__(945);
function resolveYamlNull(data) {
if (data === null) return true;
var max = data.length;
return (max === 1 && data === '~') ||
(max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));
}
function constructYamlNull() {
return null;
}
function isNull(object) {
return object === null;
}
module.exports = new Type('tag:yaml.org,2002:null', {
kind: 'scalar',
resolve: resolveYamlNull,
construct: constructYamlNull,
predicate: isNull,
represent: {
canonical: function () { return '~'; },
lowercase: function () { return 'null'; },
uppercase: function () { return 'NULL'; },
camelcase: function () { return 'Null'; }
},
defaultStyle: 'lowercase'
});
/***/ }),
/* 810 */,
/* 811 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const core = __importStar(__webpack_require__(470));
const auth = __importStar(__webpack_require__(331));
const util_1 = __webpack_require__(322);
const constants = __importStar(__webpack_require__(211));
const path = __importStar(__webpack_require__(622));
const distribution_factory_1 = __webpack_require__(24);
function run() {
return __awaiter(this, void 0, void 0, function* () {
try {
const version = core.getInput(constants.INPUT_JAVA_VERSION, { required: true });
const distributionName = core.getInput(constants.INPUT_DISTRIBUTION, { required: true });
const architecture = core.getInput(constants.INPUT_ARCHITECTURE);
const packageType = core.getInput(constants.INPUT_JAVA_PACKAGE);
const jdkFile = core.getInput(constants.INPUT_JDK_FILE);
const checkLatest = util_1.getBooleanInput(constants.INPUT_CHECK_LATEST, false);
const installerOptions = {
architecture,
packageType,
version,
checkLatest
};
const distribution = distribution_factory_1.getJavaDistribution(distributionName, installerOptions, jdkFile);
if (!distribution) {
throw new Error(`No supported distribution was found for input ${distributionName}`);
}
const result = yield distribution.setupJava();
core.info('');
core.info('Java configuration:');
core.info(` Distribution: ${distributionName}`);
core.info(` Version: ${result.version}`);
core.info(` Path: ${result.path}`);
core.info('');
const matchersPath = path.join(__dirname, '..', '..', '.github');
core.info(`##[add-matcher]${path.join(matchersPath, 'java.json')}`);
yield auth.configureAuthentication();
}
catch (error) {
core.setFailed(error.message);
}
});
}
run();
/***/ }),
/* 812 */,
/* 813 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
var util_1 = __webpack_require__(592);
var interfaces_1 = __webpack_require__(286);
var infra_1 = __webpack_require__(23);
var url_1 = __webpack_require__(835);
var _validationErrorCallback;
/**
* Default ports for a special URL scheme.
*/
var _defaultPorts = {
"ftp": 21,
"file": null,
"http": 80,
"https": 443,
"ws": 80,
"wss": 443
};
/**
* The C0 control percent-encode set are the C0 controls and all code points
* greater than U+007E (~).
*/
var _c0ControlPercentEncodeSet = /[\0-\x1F\x7F-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;
/**
* The fragment percent-encode set is the C0 control percent-encode set and
* U+0020 SPACE, U+0022 ("), U+003C (<), U+003E (>), and U+0060 (`).
*/
var _fragmentPercentEncodeSet = /[ "<>`]|[\0-\x1F\x7F-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;
/**
* The path percent-encode set is the fragment percent-encode set and
* U+0023 (#), U+003F (?), U+007B ({), and U+007D (}).
*/
var _pathPercentEncodeSet = /[ "<>`#?{}]|[\0-\x1F\x7F-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;
/**
* The userinfo percent-encode set is the path percent-encode set and
* U+002F (/), U+003A (:), U+003B (;), U+003D (=), U+0040 (@), U+005B ([),
* U+005C (\), U+005D (]), U+005E (^), and U+007C (|).
*/
var _userInfoPercentEncodeSet = /[ "<>`#?{}/:;=@\[\]\\\^\|]|[\0-\x1F\x7F-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;
/**
* The URL code points are ASCII alphanumeric, U+0021 (!), U+0024 ($),
* U+0026 (&), U+0027 ('), U+0028 LEFT PARENTHESIS, U+0029 RIGHT PARENTHESIS,
* U+002A (*), U+002B (+), U+002C (,), U+002D (-), U+002E (.), U+002F (/),
* U+003A (:), U+003B (;), U+003D (=), U+003F (?), U+0040 (@), U+005F (_),
* U+007E (~), and code points in the range U+00A0 to U+10FFFD, inclusive,
* excluding surrogates and noncharacters.
*/
var _urlCodePoints = /[0-9A-Za-z!\$&-\/:;=\?@_~\xA0-\uD7FF\uE000-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uD83E\uD840-\uD87E\uD880-\uD8BE\uD8C0-\uD8FE\uD900-\uD93E\uD940-\uD97E\uD980-\uD9BE\uD9C0-\uD9FE\uDA00-\uDA3E\uDA40-\uDA7E\uDA80-\uDABE\uDAC0-\uDAFE\uDB00-\uDB3E\uDB40-\uDB7E\uDB80-\uDBBE\uDBC0-\uDBFE][\uDC00-\uDFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDC00-\uDFFD]/;
/**
* A forbidden host code point is U+0000 NULL, U+0009 TAB, U+000A LF,
* U+000D CR, U+0020 SPACE, U+0023 (#), U+0025 (%), U+002F (/), U+003A (:),
* U+003F (?), U+0040 (@), U+005B ([), U+005C (\), or U+005D (]).
*/
var _forbiddenHostCodePoint = /[\0\t\f\r #%/:?@\[\\\]]/;
/**
* Sets the callback function for validation errors.
*
* @param validationErrorCallback - a callback function to be called when a
* validation error occurs
*/
function setValidationErrorCallback(validationErrorCallback) {
_validationErrorCallback = validationErrorCallback;
}
exports.setValidationErrorCallback = setValidationErrorCallback;
/**
* Generates a validation error.
*
* @param message - error message
*/
function validationError(message) {
if (_validationErrorCallback !== undefined) {
_validationErrorCallback.call(null, "Validation Error: " + message);
}
}
/**
* Creates a new URL.
*/
function newURL() {
return {
scheme: '',
username: '',
password: '',
host: null,
port: null,
path: [],
query: null,
fragment: null,
_cannotBeABaseURLFlag: false,
_blobURLEntry: null
};
}
exports.newURL = newURL;
/**
* Determines if the scheme is a special scheme.
*
* @param scheme - a scheme
*/
function isSpecialScheme(scheme) {
return (scheme in _defaultPorts);
}
exports.isSpecialScheme = isSpecialScheme;
/**
* Determines if the URL has a special scheme.
*
* @param url - an URL
*/
function isSpecial(url) {
return isSpecialScheme(url.scheme);
}
exports.isSpecial = isSpecial;
/**
* Returns the default port for a special scheme.
*
* @param scheme - a scheme
*/
function defaultPort(scheme) {
return _defaultPorts[scheme] || null;
}
exports.defaultPort = defaultPort;
/**
* Determines if the URL has credentials.
*
* @param url - an URL
*/
function includesCredentials(url) {
return url.username !== '' || url.password !== '';
}
exports.includesCredentials = includesCredentials;
/**
* Determines if an URL cannot have credentials.
*
* @param url - an URL
*/
function cannotHaveAUsernamePasswordPort(url) {
/**
* A URL cannot have a username/password/port if its host is null or the
* empty string, its cannot-be-a-base-URL flag is set, or its scheme is
* "file".
*/
return (url.host === null || url.host === "" || url._cannotBeABaseURLFlag ||
url.scheme === "file");
}
exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;
/**
* Serializes an URL into a string.
*
* @param url - an URL
*/
function urlSerializer(url, excludeFragmentFlag) {
var e_1, _a;
if (excludeFragmentFlag === void 0) { excludeFragmentFlag = false; }
/**
* 1. Let output be urls scheme and U+003A (:) concatenated.
*/
var output = url.scheme + ':';
/**
* 2. If urls host is non-null:
*/
if (url.host !== null) {
/**
* 2.1. Append "//" to output.
*/
output += '//';
/**
* 2.2. If url includes credentials, then:
*/
if (includesCredentials(url)) {
/**
* 2.2.1. Append urls username to output.
* 2.2.2. If urls password is not the empty string, then append U+003A (:),
* followed by urls password, to output.
* 2.2.3. Append U+0040 (@) to output.
*/
output += url.username;
if (url.password !== '') {
output += ':' + url.password;
}
output += '@';
}
/**
* 2.3. Append urls host, serialized, to output.
* 2.4. If urls port is non-null, append U+003A (:) followed by urls port,
* serialized, to output.
*/
output += hostSerializer(url.host);
if (url.port !== null) {
output += ':' + url.port;
}
}
else if (url.host === null && url.scheme === "file") {
/**
* 3. Otherwise, if urls host is null and urls scheme is "file", append "//" to output.
*/
output += '//';
}
/**
* 4. If urls cannot-be-a-base-URL flag is set, append urls path[0] to
* output.
* 5. Otherwise, then for each string in urls path, append U+002F (/)
* followed by the string to output.
*/
if (url._cannotBeABaseURLFlag) {
output += url.path[0];
}
else {
try {
for (var _b = __values(url.path), _c = _b.next(); !_c.done; _c = _b.next()) {
var str = _c.value;
output += '/' + str;
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
}
/**
* 6. If urls query is non-null, append U+003F (?), followed by urls
* query, to output.
* 7. If the exclude fragment flag is unset and urls fragment is non-null,
* append U+0023 (#), followed by urls fragment, to output.
* 8. Return output.
*/
if (url.query !== null) {
output += '?' + url.query;
}
if (!excludeFragmentFlag && url.fragment !== null) {
output += '#' + url.fragment;
}
return output;
}
exports.urlSerializer = urlSerializer;
/**
* Serializes a host into a string.
*
* @param host - a host
*/
function hostSerializer(host) {
/**
* 1. If host is an IPv4 address, return the result of running the IPv4
* serializer on host.
* 2. Otherwise, if host is an IPv6 address, return U+005B ([), followed
* by the result of running the IPv6 serializer on host, followed by
* U+005D (]).
* 3. Otherwise, host is a domain, opaque host, or empty host, return host.
*/
if (util_1.isNumber(host)) {
return iPv4Serializer(host);
}
else if (util_1.isArray(host)) {
return '[' + iPv6Serializer(host) + ']';
}
else {
return host;
}
}
exports.hostSerializer = hostSerializer;
/**
* Serializes an IPv4 address into a string.
*
* @param address - an IPv4 address
*/
function iPv4Serializer(address) {
/**
* 1. Let output be the empty string.
* 2. Let n be the value of address.
* 3. For each i in the range 1 to 4, inclusive:
* 3.1. Prepend n % 256, serialized, to output.
* 3.2. If i is not 4, then prepend U+002E (.) to output.
* 3.3. Set n to floor(n / 256).
* 4. Return output.
*/
var output = "";
var n = address;
for (var i = 1; i <= 4; i++) {
output = (n % 256).toString() + output;
if (i !== 4) {
output = '.' + output;
}
n = Math.floor(n / 256);
}
return output;
}
exports.iPv4Serializer = iPv4Serializer;
/**
* Serializes an IPv6 address into a string.
*
* @param address - an IPv6 address represented as a list of eight numbers
*/
function iPv6Serializer(address) {
/**
* 1. Let output be the empty string.
* 2. Let compress be an index to the first IPv6 piece in the first longest
* sequences of addresss IPv6 pieces that are 0.
* In 0:f:0:0:f:f:0:0 it would point to the second 0.
* 3. If there is no sequence of addresss IPv6 pieces that are 0 that is
* longer than 1, then set compress to null.
*/
var output = "";
var compress = null;
var lastIndex = -1;
var count = 0;
var lastCount = 0;
for (var i = 0; i < 8; i++) {
if (address[i] !== 0)
continue;
count = 1;
for (var j = i + 1; j < 8; j++) {
if (address[j] !== 0)
break;
count++;
continue;
}
if (count > lastCount) {
lastCount = count;
lastIndex = i;
}
}
if (lastCount > 1)
compress = lastIndex;
/**
* 4. Let ignore0 be false.
* 5. For each pieceIndex in the range 0 to 7, inclusive:
*/
var ignore0 = false;
for (var pieceIndex = 0; pieceIndex < 8; pieceIndex++) {
/**
* 5.1. If ignore0 is true and address[pieceIndex] is 0, then continue.
* 5.2. Otherwise, if ignore0 is true, set ignore0 to false.
* 5.3. If compress is pieceIndex, then:
*/
if (ignore0 && address[pieceIndex] === 0)
continue;
if (ignore0)
ignore0 = false;
if (compress === pieceIndex) {
/**
* 5.3.1. Let separator be "::" if pieceIndex is 0, and U+003A (:) otherwise.
* 5.3.2. Append separator to output.
* 5.3.3. Set ignore0 to true and continue.
*/
output += (pieceIndex === 0 ? '::' : ':');
ignore0 = true;
continue;
}
/**
* 5.4. Append address[pieceIndex], represented as the shortest possible
* lowercase hexadecimal number, to output.
* 5.5. If pieceIndex is not 7, then append U+003A (:) to output.
*/
output += address[pieceIndex].toString(16);
if (pieceIndex !== 7)
output += ':';
}
/**
* 6. Return output.
*/
return output;
}
exports.iPv6Serializer = iPv6Serializer;
/**
* Parses an URL string.
*
* @param input - input string
* @param baseURL - base URL
* @param encodingOverride - encoding override
*/
function urlParser(input, baseURL, encodingOverride) {
/**
* 1. Let url be the result of running the basic URL parser on input with
* base, and encoding override as provided.
* 2. If url is failure, return failure.
* 3. If urls scheme is not "blob", return url.
* 4. Set urls blob URL entry to the result of resolving the blob URL url,
* if that did not return failure, and null otherwise.
* 5. Return url.
*/
var url = basicURLParser(input, baseURL, encodingOverride);
if (url === null)
return null;
if (url.scheme !== "blob")
return url;
var entry = resolveABlobURL(url);
if (entry !== null) {
url._blobURLEntry = entry;
}
else {
url._blobURLEntry = null;
}
return url;
}
exports.urlParser = urlParser;
/**
* Parses an URL string.
*
* @param input - input string
* @param baseURL - base URL
* @param encodingOverride - encoding override
*/
function basicURLParser(input, baseURL, encodingOverride, url, stateOverride) {
var e_2, _a, e_3, _b;
/**
* 1. If url is not given:
* 1.1. Set url to a new URL.
* 1.2. If input contains any leading or trailing C0 control or space,
* validation error.
* 1.3. Remove any leading and trailing C0 control or space from input.
*/
if (url === undefined) {
url = newURL();
// leading
var leadingControlOrSpace = /^[\u0000-\u001F\u0020]+/;
var trailingControlOrSpace = /[\u0000-\u001F\u0020]+$/;
if (leadingControlOrSpace.test(input) || trailingControlOrSpace.test(input)) {
validationError("Input string contains leading or trailing control characters or space.");
}
input = input.replace(leadingControlOrSpace, '');
input = input.replace(trailingControlOrSpace, '');
}
/**
* 2. If input contains any ASCII tab or newline, validation error.
* 3. Remove all ASCII tab or newline from input.
*/
var tabOrNewline = /[\u0009\u000A\u000D]/g;
if (tabOrNewline.test(input)) {
validationError("Input string contains tab or newline characters.");
}
input = input.replace(tabOrNewline, '');
/**
* 4. Let state be state override if given, or scheme start state otherwise.
* 5. If base is not given, set it to null.
* 6. Let encoding be UTF-8.
* 7. If encoding override is given, set encoding to the result of getting
* an output encoding from encoding override.
*/
var state = (stateOverride === undefined ? interfaces_1.ParserState.SchemeStart : stateOverride);
if (baseURL === undefined)
baseURL = null;
var encoding = (encodingOverride === undefined ||
encodingOverride === "replacement" || encodingOverride === "UTF-16BE" ||
encodingOverride === "UTF-16LE" ? "UTF-8" : encodingOverride);
/**
* 8. Let buffer be the empty string.
* 9. Let the @ flag, [] flag, and passwordTokenSeenFlag be unset.
* 10. Let pointer be a pointer to first code point in input.
*/
var buffer = "";
var atFlag = false;
var arrayFlag = false;
var passwordTokenSeenFlag = false;
var EOF = "";
var walker = new util_1.StringWalker(input);
/**
* 11. Keep running the following state machine by switching on state. If
* after a run pointer points to the EOF code point, go to the next step.
* Otherwise, increase pointer by one and continue with the state machine.
*/
while (true) {
switch (state) {
case interfaces_1.ParserState.SchemeStart:
/**
* 1. If c is an ASCII alpha, append c, lowercased, to buffer, and set
* state to scheme state.
* 2. Otherwise, if state override is not given, set state to no scheme
* state, and decrease pointer by one.
* 3. Otherwise, validation error, return failure.
*/
if (infra_1.codePoint.ASCIIAlpha.test(walker.c())) {
buffer += walker.c().toLowerCase();
state = interfaces_1.ParserState.Scheme;
}
else if (stateOverride === undefined) {
state = interfaces_1.ParserState.NoScheme;
walker.pointer--;
}
else {
validationError("Invalid scheme start character.");
return null;
}
break;
case interfaces_1.ParserState.Scheme:
/**
* 1. If c is an ASCII alphanumeric, U+002B (+), U+002D (-), or U+002E
* (.), append c, lowercased, to buffer.
*/
if (infra_1.codePoint.ASCIIAlphanumeric.test(walker.c()) ||
walker.c() === '+' || walker.c() === '-' || walker.c() === '.') {
buffer += walker.c().toLowerCase();
}
else if (walker.c() === ':') {
/**
* 2. Otherwise, if c is U+003A (:), then:
* 2.1. If state override is given, then:
* 2.1.1. If urls scheme is a special scheme and buffer is not a
* special scheme, then return.
* 2.1.2. If urls scheme is not a special scheme and buffer is a
* special scheme, then return.
* 2.1.3. If url includes credentials or has a non-null port, and
* buffer is "file", then return.
* 2.1.4. If urls scheme is "file" and its host is an empty host or
* null, then return.
*/
if (stateOverride !== undefined) {
if (isSpecialScheme(url.scheme) && !isSpecialScheme(buffer))
return url;
if (!isSpecialScheme(url.scheme) && isSpecialScheme(buffer))
return url;
if ((includesCredentials(url) || url.port !== null) && buffer === "file")
return url;
if (url.scheme === "file" && (url.host === "" || url.host === null))
return url;
}
/**
* 2.2. Set urls scheme to buffer.
*/
url.scheme = buffer;
/**
* 2.3. If state override is given, then:
* 2.3.1. If urls port is urls schemes default port, then set
* urls port to null.
* 2.3.2. Return.
*/
if (stateOverride !== undefined) {
if (url.port === defaultPort(url.scheme)) {
url.port = null;
}
return url;
}
/**
* 2.4. Set buffer to the empty string.
*/
buffer = "";
if (url.scheme === "file") {
/**
* 2.5. If urls scheme is "file", then:
* 2.5.1. If remaining does not start with "//", validation error.
* 2.5.2. Set state to file state.
*/
if (!walker.remaining().startsWith("//")) {
validationError("Invalid file URL scheme, '//' expected.");
}
state = interfaces_1.ParserState.File;
}
else if (isSpecial(url) && baseURL !== null && baseURL.scheme === url.scheme) {
/**
* 2.6. Otherwise, if url is special, base is non-null, and bases
* scheme is equal to urls scheme, set state to special relative
* or authority state.
*/
state = interfaces_1.ParserState.SpecialRelativeOrAuthority;
}
else if (isSpecial(url)) {
/**
* 2.7. Otherwise, if url is special, set state to special
* authority slashes state.
*/
state = interfaces_1.ParserState.SpecialAuthoritySlashes;
}
else if (walker.remaining().startsWith("/")) {
/**
* 2.8. Otherwise, if remaining starts with an U+002F (/), set state
* to path or authority state and increase pointer by one.
*/
state = interfaces_1.ParserState.PathOrAuthority;
walker.pointer++;
}
else {
/**
* 2.9. Otherwise, set urls cannot-be-a-base-URL flag, append an
* empty string to urls path, and set state to
* cannot-be-a-base-URL path state.
*/
url._cannotBeABaseURLFlag = true;
url.path.push("");
state = interfaces_1.ParserState.CannotBeABaseURLPath;
}
}
else if (stateOverride === undefined) {
/**
* 3. Otherwise, if state override is not given, set buffer to the
* empty string, state to no scheme state, and start over (from the
* first code point in input).
*/
buffer = "";
state = interfaces_1.ParserState.NoScheme;
walker.pointer = 0;
continue;
}
else {
/**
* 4. Otherwise, validation error, return failure.
*/
validationError("Invalid input string.");
return null;
}
break;
case interfaces_1.ParserState.NoScheme:
/**
* 1. If base is null, or bases cannot-be-a-base-URL flag is set
* and c is not U+0023 (#), validation error, return failure.
* 2. Otherwise, if bases cannot-be-a-base-URL flag is set and
* c is U+0023 (#), set urls scheme to bases scheme, urls path to
* a copy of bases path, urls query to bases query, urls
* fragment to the empty string, set urls cannot-be-a-base-URL
* flag, and set state to fragment state.
* 3. Otherwise, if bases scheme is not "file", set state to
* relative state and decrease pointer by one.
* 4. Otherwise, set state to file state and decrease pointer by one.
*/
if (baseURL === null || (baseURL._cannotBeABaseURLFlag && walker.c() !== '#')) {
validationError("Invalid input string.");
return null;
}
else if (baseURL._cannotBeABaseURLFlag && walker.c() === '#') {
url.scheme = baseURL.scheme;
url.path = infra_1.list.clone(baseURL.path);
url.query = baseURL.query;
url.fragment = "";
url._cannotBeABaseURLFlag = true;
state = interfaces_1.ParserState.Fragment;
}
else if (baseURL.scheme !== "file") {
state = interfaces_1.ParserState.Relative;
walker.pointer--;
}
else {
state = interfaces_1.ParserState.File;
walker.pointer--;
}
break;
case interfaces_1.ParserState.SpecialRelativeOrAuthority:
/**
* If c is U+002F (/) and remaining starts with U+002F (/), then set
* state to special authority ignore slashes state and increase
* pointer by one.
* Otherwise, validation error, set state to relative state and
* decrease pointer by one.
*/
if (walker.c() === '/' && walker.remaining().startsWith('/')) {
state = interfaces_1.ParserState.SpecialAuthorityIgnoreSlashes;
walker.pointer++;
}
else {
validationError("Invalid input string.");
state = interfaces_1.ParserState.Relative;
walker.pointer--;
}
break;
case interfaces_1.ParserState.PathOrAuthority:
/**
* If c is U+002F (/), then set state to authority state.
* Otherwise, set state to path state, and decrease pointer by one.
*/
if (walker.c() === '/') {
state = interfaces_1.ParserState.Authority;
}
else {
state = interfaces_1.ParserState.Path;
walker.pointer--;
}
break;
case interfaces_1.ParserState.Relative:
/**
* Set urls scheme to bases scheme, and then, switching on c:
*/
if (baseURL === null) {
throw new Error("Invalid parser state. Base URL is null.");
}
url.scheme = baseURL.scheme;
switch (walker.c()) {
case EOF: // EOF
/**
* Set urls username to bases username, urls password to bases
* password, urls host to bases host, urls port to bases port,
* urls path to a copy of bases path, and urls query to bases
* query.
*/
url.username = baseURL.username;
url.password = baseURL.password;
url.host = baseURL.host;
url.port = baseURL.port;
url.path = infra_1.list.clone(baseURL.path);
url.query = baseURL.query;
break;
case '/':
/**
* Set state to relative slash state.
*/
state = interfaces_1.ParserState.RelativeSlash;
break;
case '?':
/**
* Set urls username to bases username, urls password to bases
* password, urls host to bases host, urls port to bases port,
* urls path to a copy of bases path, urls query to the empty
* string, and state to query state.
*/
url.username = baseURL.username;
url.password = baseURL.password;
url.host = baseURL.host;
url.port = baseURL.port;
url.path = infra_1.list.clone(baseURL.path);
url.query = "";
state = interfaces_1.ParserState.Query;
break;
case '#':
/**
* Set urls username to bases username, urls password to bases
* password, urls host to bases host, urls port to bases port,
* urls path to a copy of bases path, urls query to bases
* query, urls fragment to the empty string, and state to
* fragment state.
*/
url.username = baseURL.username;
url.password = baseURL.password;
url.host = baseURL.host;
url.port = baseURL.port;
url.path = infra_1.list.clone(baseURL.path);
url.query = baseURL.query;
url.fragment = "";
state = interfaces_1.ParserState.Fragment;
break;
default:
/**
* If url is special and c is U+005C (\), validation error,
* set state to relative slash state.
* Otherwise, run these steps:
* 1. Set urls username to bases username, urls password to
* bases password, urls host to bases host, urls port to
* bases port, urls path to a copy of bases path, and then
* remove urls paths last item, if any.
* 2. Set state to path state, and decrease pointer by one.
*/
if (isSpecial(url) && walker.c() === '\\') {
validationError("Invalid input string.");
state = interfaces_1.ParserState.RelativeSlash;
}
else {
url.username = baseURL.username;
url.password = baseURL.password;
url.host = baseURL.host;
url.port = baseURL.port;
url.path = infra_1.list.clone(baseURL.path);
if (url.path.length !== 0)
url.path.splice(url.path.length - 1, 1);
state = interfaces_1.ParserState.Path;
walker.pointer--;
}
break;
}
break;
case interfaces_1.ParserState.RelativeSlash:
/**
* 1. If url is special and c is U+002F (/) or U+005C (\), then:
* 1.1. If c is U+005C (\), validation error.
* 1.2. Set state to special authority ignore slashes state.
* 2. Otherwise, if c is U+002F (/), then set state to authority state.
* 3. Otherwise, set urls username to bases username, urls password
* to bases password, urls host to bases host, urls port to bases
* port, state to path state, and then, decrease pointer by one.
*/
if (isSpecial(url) && (walker.c() === '/' || walker.c() === '\\')) {
if (walker.c() === '\\') {
validationError("Invalid input string.");
}
state = interfaces_1.ParserState.SpecialAuthorityIgnoreSlashes;
}
else if (walker.c() === '/') {
state = interfaces_1.ParserState.Authority;
}
else {
if (baseURL === null) {
throw new Error("Invalid parser state. Base URL is null.");
}
url.username = baseURL.username;
url.password = baseURL.password;
url.host = baseURL.host;
url.port = baseURL.port;
state = interfaces_1.ParserState.Path;
walker.pointer--;
}
break;
case interfaces_1.ParserState.SpecialAuthoritySlashes:
/**
* If c is U+002F (/) and remaining starts with U+002F (/), then set
* state to special authority ignore slashes state and increase
* pointer by one.
* Otherwise, validation error, set state to special authority ignore
* slashes state, and decrease pointer by one.
*/
if (walker.c() === '/' && walker.remaining().startsWith('/')) {
state = interfaces_1.ParserState.SpecialAuthorityIgnoreSlashes;
walker.pointer++;
}
else {
validationError("Expected '//'.");
state = interfaces_1.ParserState.SpecialAuthorityIgnoreSlashes;
walker.pointer--;
}
break;
case interfaces_1.ParserState.SpecialAuthorityIgnoreSlashes:
/**
* If c is neither U+002F (/) nor U+005C (\), then set state to
* authority state and decrease pointer by one.
* Otherwise, validation error.
*/
if (walker.c() !== '/' && walker.c() !== '\\') {
state = interfaces_1.ParserState.Authority;
walker.pointer--;
}
else {
validationError("Unexpected '/' or '\\'.");
}
break;
case interfaces_1.ParserState.Authority:
/**
* 1. If c is U+0040 (@), then:
*/
if (walker.c() === '@') {
/**
* 1.1. Validation error.
* 1.2. If the @ flag is set, prepend "%40" to buffer.
* 1.3. Set the @ flag.
* 1.4. For each codePoint in buffer:
*/
validationError("Unexpected '@'.");
if (atFlag)
buffer = '%40' + buffer;
atFlag = true;
try {
for (var buffer_1 = (e_2 = void 0, __values(buffer)), buffer_1_1 = buffer_1.next(); !buffer_1_1.done; buffer_1_1 = buffer_1.next()) {
var codePoint = buffer_1_1.value;
/**
* 1.4.1. If codePoint is U+003A (:) and passwordTokenSeenFlag is
* unset, then set passwordTokenSeenFlag and continue.
* 1.4.2. Let encodedCodePoints be the result of running UTF-8
* percent encode codePoint using the userinfo percent-encode set.
* 1.4.3. If passwordTokenSeenFlag is set, then append
* encodedCodePoints to urls password.
* 1.4.4. Otherwise, append encodedCodePoints to urls username.
*/
if (codePoint === ':' && !passwordTokenSeenFlag) {
passwordTokenSeenFlag = true;
continue;
}
var encodedCodePoints = utf8PercentEncode(codePoint, _userInfoPercentEncodeSet);
if (passwordTokenSeenFlag) {
url.password += encodedCodePoints;
}
else {
url.username += encodedCodePoints;
}
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (buffer_1_1 && !buffer_1_1.done && (_a = buffer_1.return)) _a.call(buffer_1);
}
finally { if (e_2) throw e_2.error; }
}
/**
* 1.5. Set buffer to the empty string.
*/
buffer = "";
}
else if (walker.c() === EOF || walker.c() === '/' || walker.c() === '?' || walker.c() === '#' ||
(isSpecial(url) && walker.c() === '\\')) {
/**
* 2. Otherwise, if one of the following is true
* - c is the EOF code point, U+002F (/), U+003F (?), or U+0023 (#)
* - url is special and c is U+005C (\)
* then:
* 2.1. If @ flag is set and buffer is the empty string, validation
* error, return failure.
* 2.2. Decrease pointer by the number of code points in buffer plus
* one, set buffer to the empty string, and set state to host state.
*/
if (atFlag && buffer === "") {
validationError("Invalid input string.");
return null;
}
walker.pointer -= (buffer.length + 1);
buffer = "";
state = interfaces_1.ParserState.Host;
}
else {
/**
* 3. Otherwise, append c to buffer.
*/
buffer += walker.c();
}
break;
case interfaces_1.ParserState.Host:
case interfaces_1.ParserState.Hostname:
if (stateOverride !== undefined && url.scheme === "file") {
/**
* 1. If state override is given and urls scheme is "file", then
* decrease pointer by one and set state to file host state.
*/
walker.pointer--;
state = interfaces_1.ParserState.FileHost;
}
else if (walker.c() === ':' && !arrayFlag) {
/**
* 2. Otherwise, if c is U+003A (:) and the [] flag is unset, then:
* 2.1. If buffer is the empty string, validation error, return
* failure.
* 2.2. Let host be the result of host parsing buffer with url is
* not special.
* 2.3. If host is failure, then return failure.
* 2.4. Set urls host to host, buffer to the empty string, and
* state to port state.
* 2.5. If state override is given and state override is hostname
* state, then return.
*/
if (buffer === "") {
validationError("Invalid input string.");
return null;
}
var host = hostParser(buffer, !isSpecial(url));
if (host === null)
return null;
url.host = host;
buffer = "";
state = interfaces_1.ParserState.Port;
if (stateOverride === interfaces_1.ParserState.Hostname)
return url;
}
else if (walker.c() === EOF || walker.c() === '/' || walker.c() === '?' || walker.c() === '#' ||
(isSpecial(url) && walker.c() === '\\')) {
/**
* 3. Otherwise, if one of the following is true
* - c is the EOF code point, U+002F (/), U+003F (?), or U+0023 (#)
* - url is special and c is U+005C (\)
* then decrease pointer by one, and then:
* 3.1. If url is special and buffer is the empty string, validation
* error, return failure.
* 3.2. Otherwise, if state override is given, buffer is the empty
* string, and either url includes credentials or urls port is
* non-null, validation error, return.
* 3.3. Let host be the result of host parsing buffer with url is
* not special.
* 3.4. If host is failure, then return failure.
* 3.5. Set urls host to host, buffer to the empty string, and
* state to path start state.
* 3.6. If state override is given, then return.
*/
walker.pointer--;
if (isSpecial(url) && buffer === "") {
validationError("Invalid input string.");
return null;
}
else if (stateOverride !== undefined && buffer === "" &&
(includesCredentials(url) || url.port !== null)) {
validationError("Invalid input string.");
return url;
}
var host = hostParser(buffer, !isSpecial(url));
if (host === null)
return null;
url.host = host;
buffer = "";
state = interfaces_1.ParserState.PathStart;
if (stateOverride !== undefined)
return url;
}
else {
/**
* 4. Otherwise:
* 4.1. If c is U+005B ([), then set the [] flag.
* 4.2. If c is U+005D (]), then unset the [] flag.
* 4.3. Append c to buffer.
*/
if (walker.c() === '[')
arrayFlag = true;
if (walker.c() === ']')
arrayFlag = false;
buffer += walker.c();
}
break;
case interfaces_1.ParserState.Port:
if (infra_1.codePoint.ASCIIDigit.test(walker.c())) {
/**
* 1. If c is an ASCII digit, append c to buffer.
*/
buffer += walker.c();
}
else if (walker.c() === EOF || walker.c() === '/' || walker.c() === '?' || walker.c() === '#' ||
(isSpecial(url) && walker.c() === '\\') || stateOverride) {
/**
* 2. Otherwise, if one of the following is true
* - c is the EOF code point, U+002F (/), U+003F (?), or U+0023 (#)
* - url is special and c is U+005C (\)
* - state override is given
* then:
*/
if (buffer !== "") {
/**
* 2.1. If buffer is not the empty string, then:
* 2.1.1. Let port be the mathematical integer value that is
* represented by buffer in radix-10 using ASCII digits for digits
* with values 0 through 9.
* 2.1.2. If port is greater than 2**16 1, validation error,
* return failure.
* 2.1.3. Set urls port to null, if port is urls schemes default
* port, and to port otherwise.
* 2.1.4. Set buffer to the empty string.
*/
if (buffer !== "") {
var port = parseInt(buffer, 10);
if (port > Math.pow(2, 16) - 1) {
validationError("Invalid port number.");
return null;
}
url.port = (port === defaultPort(url.scheme) ? null : port);
buffer = "";
}
}
/**
* 2.2. If state override is given, then return.
* 2.3. Set state to path start state, and decrease pointer by one.
*/
if (stateOverride !== undefined) {
return url;
}
state = interfaces_1.ParserState.PathStart;
walker.pointer--;
}
else {
/**
* 3. Otherwise, validation error, return failure.
*/
validationError("Invalid input string.");
return null;
}
break;
case interfaces_1.ParserState.File:
/**
* 1. Set urls scheme to "file".
*/
url.scheme = "file";
if (walker.c() === '/' || walker.c() === '\\') {
/**
* 2. If c is U+002F (/) or U+005C (\), then:
* 2.1. If c is U+005C (\), validation error.
* 2.2. Set state to file slash state.
*/
if (walker.c() === '\\') {
validationError("Invalid input string.");
}
state = interfaces_1.ParserState.FileSlash;
}
else if (baseURL !== null && baseURL.scheme === "file") {
/**
* 3. Otherwise, if base is non-null and bases scheme is "file",
* switch on c:
*/
switch (walker.c()) {
case EOF:
/**
* Set urls host to bases host, urls path to a copy of bases
* path, and urls query to bases query.
*/
url.host = baseURL.host;
url.path = infra_1.list.clone(baseURL.path);
url.query = baseURL.query;
break;
case '?':
/**
* Set urls host to bases host, urls path to a copy of bases
* path, urls query to the empty string, and state to query
* state.
*/
url.host = baseURL.host;
url.path = infra_1.list.clone(baseURL.path);
url.query = "";
state = interfaces_1.ParserState.Query;
break;
case '#':
/**
* Set urls host to bases host, urls path to a copy of bases
* path, urls query to bases query, urls fragment to the
* empty string, and state to fragment state.
*/
url.host = baseURL.host;
url.path = infra_1.list.clone(baseURL.path);
url.query = baseURL.query;
url.fragment = "";
state = interfaces_1.ParserState.Fragment;
break;
default:
/**
* 1. If the substring from pointer in input does not start
* with a Windows drive letter, then set urls host to bases
* host, urls path to a copy of bases path, and then shorten
* urls path.
* _Note:_ is a (platform-independent) Windows drive letter
* quirk.
* 2. Otherwise, validation error.
* 3. Set state to path state, and decrease pointer by one.
*/
if (!startsWithAWindowsDriveLetter(walker.substring())) {
url.host = baseURL.host;
url.path = infra_1.list.clone(baseURL.path);
shorten(url);
}
else {
validationError("Unexpected windows drive letter in input string.");
}
state = interfaces_1.ParserState.Path;
walker.pointer--;
break;
}
}
else {
/**
* 4. Otherwise, set state to path state, and decrease pointer by
* one.
*/
state = interfaces_1.ParserState.Path;
walker.pointer--;
}
break;
case interfaces_1.ParserState.FileSlash:
if (walker.c() === '/' || walker.c() === '\\') {
/**
* 1. If c is U+002F (/) or U+005C (\), then:
* 1.1. If c is U+005C (\), validation error.
* 1.2. Set state to file host state.
*/
if (walker.c() === '\\') {
validationError("Invalid input string.");
}
state = interfaces_1.ParserState.FileHost;
}
else {
/**
* 2. Otherwise:
* 2.1. If base is non-null, bases scheme is "file", and the
* substring from pointer in input does not start with a Windows
* drive letter, then:
* 2.1.1. If bases path[0] is a normalized Windows drive letter,
* then append bases path[0] to urls path.
* _Note:_ is a (platform-independent) Windows drive letter
* quirk. Both urls and bases host are null under these conditions
* and therefore not copied.
* 2.1.2. Otherwise, set urls host to bases host.
* 2.2. Set state to path state, and decrease pointer by one.
*/
if (baseURL !== null && baseURL.scheme === "file" &&
!startsWithAWindowsDriveLetter(walker.substring())) {
if (isNormalizedWindowsDriveLetter(baseURL.path[0])) {
url.path.push(baseURL.path[0]);
}
else {
url.host = baseURL.host;
}
}
state = interfaces_1.ParserState.Path;
walker.pointer--;
}
break;
case interfaces_1.ParserState.FileHost:
if (walker.c() === EOF || walker.c() === '/' || walker.c() === '\\' ||
walker.c() === '?' || walker.c() === '#') {
/**
* 1. If c is the EOF code point, U+002F (/), U+005C (\), U+003F (?),
* or U+0023 (#), then decrease pointer by one and then:
*/
walker.pointer--;
if (stateOverride === undefined && isWindowsDriveLetter(buffer)) {
/**
* 1.1. If state override is not given and buffer is a Windows drive
* letter, validation error, set state to path state.
* _Note:_ is a (platform-independent) Windows drive letter
* quirk. buffer is not reset here and instead used in the path state.
*/
validationError("Unexpected windows drive letter in input string.");
state = interfaces_1.ParserState.Path;
}
else if (buffer === "") {
/**
* 1.2. Otherwise, if buffer is the empty string, then:
* 1.2.1. Set urls host to the empty string.
* 1.2.2. If state override is given, then return.
* 1.2.3. Set state to path start state.
*/
url.host = "";
if (stateOverride !== undefined)
return url;
state = interfaces_1.ParserState.PathStart;
}
else {
/**
* 1.3. Otherwise, run these steps:
* 1.3.1. Let host be the result of host parsing buffer with url
* is not special.
* 1.3.2. If host is failure, then return failure.
* 1.3.3. If host is "localhost", then set host to the empty
* string.
* 1.3.4. Set urls host to host.
* 1.3.5. If state override is given, then return.
* 1.3.6. Set buffer to the empty string and state to path start
* state.
*/
var host = hostParser(buffer, !isSpecial(url));
if (host === null)
return null;
if (host === "localhost")
host = "";
url.host = host;
if (stateOverride !== undefined)
return url;
buffer = "";
state = interfaces_1.ParserState.PathStart;
}
}
else {
/**
* 2. Otherwise, append c to buffer.
*/
buffer += walker.c();
}
break;
case interfaces_1.ParserState.PathStart:
if (isSpecial(url)) {
/**
* 1. If url is special, then:
* 1.1. If c is U+005C (\), validation error.
* 1.2. Set state to path state.
* 1.3. If c is neither U+002F (/) nor U+005C (\), then decrease
* pointer by one.
*/
if (walker.c() === '\\') {
validationError("Invalid input string.");
}
state = interfaces_1.ParserState.Path;
if (walker.c() !== '/' && walker.c() !== '\\')
walker.pointer--;
}
else if (stateOverride === undefined && walker.c() === '?') {
/**
* 2. Otherwise, if state override is not given and c is U+003F (?),
* set urls query to the empty string and state to query state.
*/
url.query = "";
state = interfaces_1.ParserState.Query;
}
else if (stateOverride === undefined && walker.c() === '#') {
/**
* 3. Otherwise, if state override is not given and c is U+0023 (#),
* set urls fragment to the empty string and state to fragment
* state.
*/
url.fragment = "";
state = interfaces_1.ParserState.Fragment;
}
else if (walker.c() !== EOF) {
/**
* 4. Otherwise, if c is not the EOF code point:
* 4.1. Set state to path state.
* 4.2. If c is not U+002F (/), then decrease pointer by one.
*/
state = interfaces_1.ParserState.Path;
if (walker.c() !== '/')
walker.pointer--;
}
break;
case interfaces_1.ParserState.Path:
if ((walker.c() === EOF || walker.c() === '/') ||
(isSpecial(url) && walker.c() === '\\') ||
(stateOverride === undefined && (walker.c() === '?' || walker.c() === '#'))) {
/**
* 1. If one of the following is true
* - c is the EOF code point or U+002F (/)
* - url is special and c is U+005C (\)
* - state override is not given and c is U+003F (?) or U+0023 (#)
* then:
*/
if (isSpecial(url) && walker.c() === '\\') {
/**
* 1.1 If url is special and c is U+005C (\), validation error.
*/
validationError("Invalid input string.");
}
if (isDoubleDotPathSegment(buffer)) {
/**
* 1.2. If buffer is a double-dot path segment, shorten urls path,
* and then if neither c is U+002F (/), nor url is special and c is
* U+005C (\), append the empty string to urls path.
*/
shorten(url);
if (walker.c() !== '/' && !(isSpecial(url) && walker.c() === '\\')) {
url.path.push("");
}
}
else if (isSingleDotPathSegment(buffer) && walker.c() !== '/' &&
!(isSpecial(url) && walker.c() === '\\')) {
/**
* 1.3. Otherwise, if buffer is a single-dot path segment and if
* neither c is U+002F (/), nor url is special and c is U+005C (\),
* append the empty string to urls path.
*/
url.path.push("");
}
else if (!isSingleDotPathSegment(buffer)) {
/**
* 1.4. Otherwise, if buffer is not a single-dot path segment, then:
*/
if (url.scheme === "file" && url.path.length === 0 &&
isWindowsDriveLetter(buffer)) {
/**
* 1.4.1. If urls scheme is "file", urls path is empty, and
* buffer is a Windows drive letter, then:
* 1.4.1.1. If urls host is neither the empty string nor null,
* validation error, set urls host to the empty string.
* 1.4.1.2. Replace the second code point in buffer with U+003A (:).
* _Note:_ is a (platform-independent) Windows drive letter quirk.
*/
if (url.host !== null && url.host !== "") {
validationError("Invalid input string.");
url.host = "";
}
var bufferCodePoints = Array.from(buffer);
buffer = bufferCodePoints.slice(0, 1) + ':' + bufferCodePoints.slice(2);
}
/**
* 1.4.2. Append buffer to urls path.
*/
url.path.push(buffer);
}
/**
* 1.5. Set buffer to the empty string.
*/
buffer = "";
/**
* 1.6. If urls scheme is "file" and c is the EOF code point,
* U+003F (?), or U+0023 (#), then while urls paths size is
* greater than 1 and urls path[0] is the empty string, validation
* error, remove the first item from urls path.
*/
if (url.scheme === "file" && (walker.c() === EOF || walker.c() === '?' || walker.c() === '#')) {
while (url.path.length > 1 && url.path[0] === "") {
validationError("Invalid input string.");
url.path.splice(0, 1);
}
}
/**
* 1.7. If c is U+003F (?), then set urls query to the empty string
* and state to query state.
* 1.8. If c is U+0023 (#), then set urls fragment to the empty
* string and state to fragment state.
*/
if (walker.c() === '?') {
url.query = "";
state = interfaces_1.ParserState.Query;
}
if (walker.c() === '#') {
url.fragment = "";
state = interfaces_1.ParserState.Fragment;
}
}
else {
/**
* 2. Otherwise, run these steps:
* 2.1. If c is not a URL code point and not U+0025 (%), validation
* error.
* 2.2. If c is U+0025 (%) and remaining does not start with two
* ASCII hex digits, validation error.
* 2.3. UTF-8 percent encode c using the path percent-encode set,
* and append the result to buffer.
*/
if (!_urlCodePoints.test(walker.c()) && walker.c() !== '%') {
validationError("Character is not a URL code point or a percent encoded character.");
}
if (walker.c() === '%' && !/^[0-9a-fA-F][0-9a-fA-F]/.test(walker.remaining())) {
validationError("Percent encoded character must be followed by two hex digits.");
}
buffer += utf8PercentEncode(walker.c(), _pathPercentEncodeSet);
}
break;
case interfaces_1.ParserState.CannotBeABaseURLPath:
/**
* 1. If c is U+003F (?), then set urls query to the empty string and
* state to query state.
* 2. Otherwise, if c is U+0023 (#), then set urls fragment to the
* empty string and state to fragment state.
* 3. Otherwise:
* 3.1. If c is not the EOF code point, not a URL code point, and not
* U+0025 (%), validation error.
* 3.2. If c is U+0025 (%) and remaining does not start with two ASCII
* hex digits, validation error.
* 3.3. If c is not the EOF code point, UTF-8 percent encode c using
* the C0 control percent-encode set, and append the result to urls
* path[0].
*/
if (walker.c() === '?') {
url.query = "";
state = interfaces_1.ParserState.Query;
}
else if (walker.c() === '#') {
url.fragment = "";
state = interfaces_1.ParserState.Fragment;
}
else {
if (walker.c() !== EOF && !_urlCodePoints.test(walker.c()) && walker.c() !== '%') {
validationError("Character is not a URL code point or a percent encoded character.");
}
if (walker.c() === '%' && !/^[0-9a-fA-F][0-9a-fA-F]/.test(walker.remaining())) {
validationError("Percent encoded character must be followed by two hex digits.");
}
if (walker.c() !== EOF) {
url.path[0] += utf8PercentEncode(walker.c(), _c0ControlPercentEncodeSet);
}
}
break;
case interfaces_1.ParserState.Query:
/**
* 1. If encoding is not UTF-8 and one of the following is true
* - url is not special
* - urls scheme is "ws" or "wss"
* then set encoding to UTF-8.
*/
if (encoding !== "UTF-8" && (!isSpecial(url) ||
url.scheme === "ws" || url.scheme === "wss")) {
encoding = "UTF-8";
}
if (stateOverride === undefined && walker.c() === '#') {
/**
* 2. If state override is not given and c is U+0023 (#), then set
* urls fragment to the empty string and state to fragment state.
*/
url.fragment = "";
state = interfaces_1.ParserState.Fragment;
}
else if (walker.c() !== EOF) {
/**
* 3. Otherwise, if c is not the EOF code point:
* 3.1. If c is not a URL code point and not U+0025 (%), validation
* error.
*/
if (!_urlCodePoints.test(walker.c()) && walker.c() !== '%') {
validationError("Character is not a URL code point or a percent encoded character.");
}
/**
* 3.2. If c is U+0025 (%) and remaining does not start with two
* ASCII hex digits, validation error.
*/
if (walker.c() === '%' && !/^[0-9a-fA-F][0-9a-fA-F]/.test(walker.remaining())) {
validationError("Percent encoded character must be followed by two hex digits.");
}
/**
* 3.3. Let bytes be the result of encoding c using encoding.
*/
if (encoding.toUpperCase() !== "UTF-8") {
throw new Error("Only UTF-8 encoding is supported.");
}
var bytes = util_1.utf8Encode(walker.c());
/**
* 3.4. If bytes starts with `&#` and ends with 0x3B (;), then:
*/
if (bytes.length >= 3 && bytes[0] === 38 && bytes[1] === 35 &&
bytes[bytes.length - 1] === 59) {
/**
* 3.4.1. Replace `&#` at the start of bytes with `%26%23`.
* 3.4.2. Replace 0x3B (;) at the end of bytes with `%3B`.
* 3.4.4. Append bytes, isomorphic decoded, to urls query.
* _Note:_ can happen when encoding code points using a
* non-UTF-8 encoding.
*/
bytes = bytes.subarray(2, bytes.length - 1);
url.query += "%26%23" + infra_1.byteSequence.isomorphicDecode(bytes) + "%3B";
}
else {
try {
/**
* 3.5. Otherwise, for each byte in bytes:
* 3.5.1. If one of the following is true
* - byte is less than 0x21 (!)
* - byte is greater than 0x7E (~)
* - byte is 0x22 ("), 0x23 (#), 0x3C (<), or 0x3E (>)
* - byte is 0x27 (') and url is special
* then append byte, percent encoded, to urls query.
* 3.5.2. Otherwise, append a code point whose value is byte to
* urls query.
*/
for (var bytes_1 = (e_3 = void 0, __values(bytes)), bytes_1_1 = bytes_1.next(); !bytes_1_1.done; bytes_1_1 = bytes_1.next()) {
var byte = bytes_1_1.value;
if (byte < 0x21 || byte > 0x7E || byte === 0x22 ||
byte === 0x23 || byte === 0x3C || byte === 0x3E ||
(byte === 0x27 && isSpecial(url))) {
url.query += percentEncode(byte);
}
else {
url.query += String.fromCharCode(byte);
}
}
}
catch (e_3_1) { e_3 = { error: e_3_1 }; }
finally {
try {
if (bytes_1_1 && !bytes_1_1.done && (_b = bytes_1.return)) _b.call(bytes_1);
}
finally { if (e_3) throw e_3.error; }
}
}
}
break;
case interfaces_1.ParserState.Fragment:
/**
* Switching on c:
* - The EOF code point
* Do nothing.
* - U+0000 NULL
* Validation error.
* - Otherwise
* 1. If c is not a URL code point and not U+0025 (%), validation
* error.
* 2. If c is U+0025 (%) and remaining does not start with two ASCII
* hex digits, validation error.
* 3. UTF-8 percent encode c using the fragment percent-encode set and
* append the result to urls fragment.
*/
if (walker.c() === EOF) {
//
}
else if (walker.c() === "\u0000") {
validationError("NULL character in input string.");
}
else {
if (!_urlCodePoints.test(walker.c()) && walker.c() !== '%') {
validationError("Unexpected character in fragment string.");
}
if (walker.c() === '%' && !/^[A-Za-z0-9][A-Za-z0-9]/.test(walker.remaining())) {
validationError("Unexpected character in fragment string.");
}
url.fragment += utf8PercentEncode(walker.c(), _fragmentPercentEncodeSet);
}
break;
}
if (walker.eof)
break;
else
walker.pointer++;
}
/**
* 12. Return url.
*/
return url;
}
exports.basicURLParser = basicURLParser;
/**
* Sets a URL's username.
*
* @param url - a URL
* @param username - username string
*/
function setTheUsername(url, username) {
var e_4, _a;
/**
* 1. Set urls username to the empty string.
* 2. For each code point in username, UTF-8 percent encode it using the
* userinfo percent-encode set, and append the result to urls username.
*/
var result = "";
try {
for (var username_1 = __values(username), username_1_1 = username_1.next(); !username_1_1.done; username_1_1 = username_1.next()) {
var codePoint = username_1_1.value;
result += utf8PercentEncode(codePoint, _userInfoPercentEncodeSet);
}
}
catch (e_4_1) { e_4 = { error: e_4_1 }; }
finally {
try {
if (username_1_1 && !username_1_1.done && (_a = username_1.return)) _a.call(username_1);
}
finally { if (e_4) throw e_4.error; }
}
url.username = result;
}
exports.setTheUsername = setTheUsername;
/**
* Sets a URL's password.
*
* @param url - a URL
* @param username - password string
*/
function setThePassword(url, password) {
var e_5, _a;
/**
* 1. Set urls password to the empty string.
* 2. For each code point in password, UTF-8 percent encode it using the
* userinfo percent-encode set, and append the result to urls password.
*/
var result = "";
try {
for (var password_1 = __values(password), password_1_1 = password_1.next(); !password_1_1.done; password_1_1 = password_1.next()) {
var codePoint = password_1_1.value;
result += utf8PercentEncode(codePoint, _userInfoPercentEncodeSet);
}
}
catch (e_5_1) { e_5 = { error: e_5_1 }; }
finally {
try {
if (password_1_1 && !password_1_1.done && (_a = password_1.return)) _a.call(password_1);
}
finally { if (e_5) throw e_5.error; }
}
url.password = result;
}
exports.setThePassword = setThePassword;
/**
* Determines if the string represents a single dot path.
*
* @param str - a string
*/
function isSingleDotPathSegment(str) {
return str === '.' || str.toLowerCase() === "%2e";
}
exports.isSingleDotPathSegment = isSingleDotPathSegment;
/**
* Determines if the string represents a double dot path.
*
* @param str - a string
*/
function isDoubleDotPathSegment(str) {
var lowerStr = str.toLowerCase();
return lowerStr === ".." || lowerStr === ".%2e" ||
lowerStr === "%2e." || lowerStr === "%2e%2e";
}
exports.isDoubleDotPathSegment = isDoubleDotPathSegment;
/**
* Shorten's URL's path.
*
* @param url - an URL
*/
function shorten(url) {
/**
* 1. Let path be urls path.
* 2. If path is empty, then return.
* 3. If urls scheme is "file", paths size is 1, and path[0] is a
* normalized Windows drive letter, then return.
* 4. Remove paths last item.
*/
var path = url.path;
if (path.length === 0)
return;
if (url.scheme === "file" && path.length === 1 &&
isNormalizedWindowsDriveLetter(path[0]))
return;
url.path.splice(url.path.length - 1, 1);
}
exports.shorten = shorten;
/**
* Determines if a string is a normalized Windows drive letter.
*
* @param str - a string
*/
function isNormalizedWindowsDriveLetter(str) {
/**
* A normalized Windows drive letter is a Windows drive letter of which the
* second code point is U+003A (:).
*/
return str.length >= 2 && infra_1.codePoint.ASCIIAlpha.test(str[0]) &&
str[1] === ':';
}
exports.isNormalizedWindowsDriveLetter = isNormalizedWindowsDriveLetter;
/**
* Determines if a string is a Windows drive letter.
*
* @param str - a string
*/
function isWindowsDriveLetter(str) {
/**
* A Windows drive letter is two code points, of which the first is an ASCII
* alpha and the second is either U+003A (:) or U+007C (|).
*/
return str.length >= 2 && infra_1.codePoint.ASCIIAlpha.test(str[0]) &&
(str[1] === ':' || str[1] === '|');
}
exports.isWindowsDriveLetter = isWindowsDriveLetter;
/**
* Determines if a string starts with a Windows drive letter.
*
* @param str - a string
*/
function startsWithAWindowsDriveLetter(str) {
/**
* A string starts with a Windows drive letter if all of the following are
* true:
* - its length is greater than or equal to 2
* - its first two code points are a Windows drive letter
* - its length is 2 or its third code point is U+002F (/), U+005C (\),
* U+003F (?), or U+0023 (#).
*/
return str.length >= 2 && isWindowsDriveLetter(str) &&
(str.length === 2 || (str[2] === '/' || str[2] === '\\' ||
str[2] === '?' || str[2] === '#'));
}
exports.startsWithAWindowsDriveLetter = startsWithAWindowsDriveLetter;
/**
* Parses a host string.
*
* @param input - input string
* @param isNotSpecial - `true` if the source URL is not special; otherwise
* `false`.
*/
function hostParser(input, isNotSpecial) {
if (isNotSpecial === void 0) { isNotSpecial = false; }
/**
* 1. If isNotSpecial is not given, then set isNotSpecial to false.
* 2. If input starts with U+005B ([), then:
* 2.1. If input does not end with U+005D (]), validation error, return
* failure.
* 2.2. Return the result of IPv6 parsing input with its leading U+005B ([)
* and trailing U+005D (]) removed.
*/
if (input.startsWith('[')) {
if (!input.endsWith(']')) {
validationError("Expected ']' after '['.");
return null;
}
return iPv6Parser(input.substring(1, input.length - 1));
}
/**
* 3. If isNotSpecial is true, then return the result of opaque-host parsing
* input.
*/
if (isNotSpecial) {
return opaqueHostParser(input);
}
/**
* 4. Let domain be the result of running UTF-8 decode without BOM on the
* string percent decoding of input.
* _Note:_ Alternatively UTF-8 decode without BOM or fail can be used,
* coupled with an early return for failure, as domain to ASCII fails
* on U+FFFD REPLACEMENT CHARACTER.
*/
var domain = util_1.utf8Decode(stringPercentDecode(input));
/**
* 5. Let asciiDomain be the result of running domain to ASCII on domain.
* 6. If asciiDomain is failure, validation error, return failure.
* 7. If asciiDomain contains a forbidden host code point, validation error,
* return failure.
*/
var asciiDomain = domainToASCII(domain);
if (asciiDomain === null) {
validationError("Invalid domain.");
return null;
}
if (_forbiddenHostCodePoint.test(asciiDomain)) {
validationError("Invalid domain.");
return null;
}
/**
* 8. Let ipv4Host be the result of IPv4 parsing asciiDomain.
* 9. If ipv4Host is an IPv4 address or failure, return ipv4Host.
* 10. Return asciiDomain.
*/
var ipv4Host = iPv4Parser(asciiDomain);
if (ipv4Host === null || util_1.isNumber(ipv4Host))
return ipv4Host;
return asciiDomain;
}
exports.hostParser = hostParser;
/**
* Parses a string containing an IP v4 address.
*
* @param input - input string
* @param isNotSpecial - `true` if the source URL is not special; otherwise
* `false`.
*/
function iPv4NumberParser(input, validationErrorFlag) {
if (validationErrorFlag === void 0) { validationErrorFlag = { value: false }; }
/**
* 1. Let R be 10.
*/
var R = 10;
if (input.startsWith("0x") || input.startsWith("0X")) {
/**
* 2. If input contains at least two code points and the first two code
* points are either "0x" or "0X", then:
* 2.1. Set validationErrorFlag.
* 2.2. Remove the first two code points from input.
* 2.3. Set R to 16.
*/
validationErrorFlag.value = true;
input = input.substr(2);
R = 16;
}
else if (input.length >= 2 && input[0] === '0') {
/**
* 3. Otherwise, if input contains at least two code points and the first
* code point is U+0030 (0), then:
* 3.1. Set validationErrorFlag.
* 3.2. Remove the first code point from input.
* 3.3. Set R to 8.
*/
validationErrorFlag.value = true;
input = input.substr(1);
R = 8;
}
/**
* 4. If input is the empty string, then return zero.
* 5. If input contains a code point that is not a radix-R digit, then
* return failure.
*/
if (input === "")
return 0;
var radixRDigits = (R === 10 ? /^[0-9]+$/ : (R === 16 ? /^[0-9A-Fa-f]+$/ : /^[0-7]+$/));
if (!radixRDigits.test(input))
return null;
/**
* 6. Return the mathematical integer value that is represented by input in
* radix-R notation, using ASCII hex digits for digits with values
* 0 through 15.
*/
return parseInt(input, R);
}
exports.iPv4NumberParser = iPv4NumberParser;
/**
* Parses a string containing an IP v4 address.
*
* @param input - input string
*/
function iPv4Parser(input) {
var e_6, _a, e_7, _b;
/**
* 1. Let validationErrorFlag be unset.
* 2. Let parts be input split on U+002E (.).
*/
var validationErrorFlag = { value: false };
var parts = input.split('.');
/**
* 3. If the last item in parts is the empty string, then:
* 3.1. Set validationErrorFlag.
* 3.2. If parts has more than one item, then remove the last item from
* parts.
*/
if (parts[parts.length - 1] === "") {
validationErrorFlag.value = true;
if (parts.length > 1)
parts.pop();
}
/**
* 4. If parts has more than four items, return input.
*/
if (parts.length > 4)
return input;
/**
* 5. Let numbers be the empty list.
* 6. For each part in parts:
* 6.1. If part is the empty string, return input.
* 6.2. Let n be the result of parsing part using validationErrorFlag.
* 6.3. If n is failure, return input.
* 6.4. Append n to numbers.
*/
var numbers = [];
try {
for (var parts_1 = __values(parts), parts_1_1 = parts_1.next(); !parts_1_1.done; parts_1_1 = parts_1.next()) {
var part = parts_1_1.value;
if (part === "")
return input;
var n = iPv4NumberParser(part, validationErrorFlag);
if (n === null)
return input;
numbers.push(n);
}
}
catch (e_6_1) { e_6 = { error: e_6_1 }; }
finally {
try {
if (parts_1_1 && !parts_1_1.done && (_a = parts_1.return)) _a.call(parts_1);
}
finally { if (e_6) throw e_6.error; }
}
/**
* 7. If validationErrorFlag is set, validation error.
* 8. If any item in numbers is greater than 255, validation error.
* 9. If any but the last item in numbers is greater than 255, return
* failure.
* 10. If the last item in numbers is greater than or equal to
* 256**(5 the number of items in numbers), validation error, return failure.
*/
if (validationErrorFlag.value)
validationError("Invalid IP v4 address.");
for (var i = 0; i < numbers.length; i++) {
var item = numbers[i];
if (item > 255) {
validationError("Invalid IP v4 address.");
if (i < numbers.length - 1)
return null;
}
}
if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {
validationError("Invalid IP v4 address.");
return null;
}
/**
* 11. Let ipv4 be the last item in numbers.
* 12. Remove the last item from numbers.
*/
var ipv4 = numbers[numbers.length - 1];
numbers.pop();
/**
* 13. Let counter be zero.
* 14. For each n in numbers:
* 14.2. Increment ipv4 by n × 256**(3 counter).
* 14.2. Increment counter by 1.
*/
var counter = 0;
try {
for (var numbers_1 = __values(numbers), numbers_1_1 = numbers_1.next(); !numbers_1_1.done; numbers_1_1 = numbers_1.next()) {
var n = numbers_1_1.value;
ipv4 += n * Math.pow(256, 3 - counter);
counter++;
}
}
catch (e_7_1) { e_7 = { error: e_7_1 }; }
finally {
try {
if (numbers_1_1 && !numbers_1_1.done && (_b = numbers_1.return)) _b.call(numbers_1);
}
finally { if (e_7) throw e_7.error; }
}
/**
* 15. Return ipv4.
*/
return ipv4;
}
exports.iPv4Parser = iPv4Parser;
/**
* Parses a string containing an IP v6 address.
*
* @param input - input string
*/
function iPv6Parser(input) {
var _a;
/**
* 1. Let address be a new IPv6 address whose IPv6 pieces are all 0.
* 2. Let pieceIndex be 0.
* 3. Let compress be null.
* 4. Let pointer be a pointer into input, initially 0 (pointing to the
* first code point).
*/
var EOF = "";
var address = [0, 0, 0, 0, 0, 0, 0, 0];
var pieceIndex = 0;
var compress = null;
var walker = new util_1.StringWalker(input);
/**
* 5. If c is U+003A (:), then:
* 5.1. If remaining does not start with U+003A (:), validation error,
* return failure.
* 5.2. Increase pointer by 2.
* 5.3. Increase pieceIndex by 1 and then set compress to pieceIndex.
*/
if (walker.c() === ':') {
if (!walker.remaining().startsWith(':')) {
validationError("Invalid IP v6 address.");
return null;
}
walker.pointer += 2;
pieceIndex += 1;
compress = pieceIndex;
}
/**
* 6. While c is not the EOF code point:
*/
while (walker.c() !== EOF) {
/**
* 6.1. If pieceIndex is 8, validation error, return failure.
*/
if (pieceIndex === 8) {
validationError("Invalid IP v6 address.");
return null;
}
/**
* 6.2. If c is U+003A (:), then:
* 6.2.1. If compress is non-null, validation error, return failure.
* 6.2.2. Increase pointer and pieceIndex by 1, set compress to pieceIndex,
* and then continue.
*/
if (walker.c() === ':') {
if (compress !== null) {
validationError("Invalid IP v6 address.");
return null;
}
walker.pointer++;
pieceIndex++;
compress = pieceIndex;
continue;
}
/**
* 6.3. Let value and length be 0.
* 6.4. While length is less than 4 and c is an ASCII hex digit, set value
* to value × 0x10 + c interpreted as hexadecimal number, and increase
* pointer and length by 1.
*/
var value = 0;
var length = 0;
while (length < 4 && infra_1.codePoint.ASCIIHexDigit.test(walker.c())) {
value = value * 0x10 + parseInt(walker.c(), 16);
walker.pointer++;
length++;
}
/**
* 6.5. If c is U+002E (.), then:
*/
if (walker.c() === '.') {
/**
* 6.5.1. If length is 0, validation error, return failure.
* 6.5.2. Decrease pointer by length.
* 6.5.3. If pieceIndex is greater than 6, validation error, return
* failure.
* 6.5.4. Let numbersSeen be 0.
*/
if (length === 0) {
validationError("Invalid IP v6 address.");
return null;
}
walker.pointer -= length;
if (pieceIndex > 6) {
validationError("Invalid IP v6 address.");
return null;
}
var numbersSeen = 0;
/**
* 6.5.5. While c is not the EOF code point:
*/
while (walker.c() !== EOF) {
/**
* 6.5.5.1. Let ipv4Piece be null.
*/
var ipv4Piece = null;
/**
* 6.5.5.2. If numbersSeen is greater than 0, then:
* 6.5.5.2.1. If c is a U+002E (.) and numbersSeen is less than 4, then
* increase pointer by 1.
* 6.5.5.2.1. Otherwise, validation error, return failure.
*/
if (numbersSeen > 0) {
if (walker.c() === '.' && numbersSeen < 4) {
walker.pointer++;
}
else {
validationError("Invalid IP v6 address.");
return null;
}
}
/**
* 6.5.5.3. If c is not an ASCII digit, validation error, return
* failure.
*/
if (!infra_1.codePoint.ASCIIDigit.test(walker.c())) {
validationError("Invalid IP v6 address.");
return null;
}
/**
* 6.5.5.4. While c is an ASCII digit:
*/
while (infra_1.codePoint.ASCIIDigit.test(walker.c())) {
/**
* 6.5.5.4.1. Let number be c interpreted as decimal number.
*/
var number = parseInt(walker.c(), 10);
/**
* 6.5.5.4.2. If ipv4Piece is null, then set ipv4Piece to number.
* Otherwise, if ipv4Piece is 0, validation error, return failure.
* Otherwise, set ipv4Piece to ipv4Piece × 10 + number.
*/
if (ipv4Piece === null) {
ipv4Piece = number;
}
else if (ipv4Piece === 0) {
validationError("Invalid IP v6 address.");
return null;
}
else {
ipv4Piece = ipv4Piece * 10 + number;
}
/**
* 6.5.5.4.3. If ipv4Piece is greater than 255, validation error, return failure.
* 6.5.5.4.4. Increase pointer by 1.
*/
if (ipv4Piece > 255) {
validationError("Invalid IP v6 address.");
return null;
}
walker.pointer++;
}
/**
* 6.5.5.5. Set address[pieceIndex] to address[pieceIndex] × 0x100 + ipv4Piece.
* 6.5.5.6. Increase numbersSeen by 1.
* 6.5.5.7. If numbersSeen is 2 or 4, then increase pieceIndex by 1.
*/
if (ipv4Piece === null) {
validationError("Invalid IP v6 address.");
return null;
}
address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;
numbersSeen++;
if (numbersSeen === 2 || numbersSeen === 4)
pieceIndex++;
}
/**
* 6.5.6. If numbersSeen is not 4, validation error, return failure.
*/
if (numbersSeen !== 4) {
validationError("Invalid IP v6 address.");
return null;
}
/**
* 6.5.7. Break.
*/
break;
}
else if (walker.c() === ':') {
/**
* 6.6. Otherwise, if c is U+003A (:):
* 6.6.1. Increase pointer by 1.
* 6.6.2. If c is the EOF code point, validation error, return failure.
*/
walker.pointer++;
if (walker.c() === EOF) {
validationError("Invalid IP v6 address.");
return null;
}
}
else if (walker.c() !== EOF) {
/**
* 6.7. Otherwise, if c is not the EOF code point, validation error,
* return failure.
*/
validationError("Invalid IP v6 address.");
return null;
}
/**
* 6.8. Set address[pieceIndex] to value.
* 6.9. Increase pieceIndex by 1.
*/
address[pieceIndex] = value;
pieceIndex++;
}
/**
* 7. If compress is non-null, then:
* 7.1. Let swaps be pieceIndex compress.
* 7.2. Set pieceIndex to 7.
* 7.3. While pieceIndex is not 0 and swaps is greater than 0, swap
* address[pieceIndex] with address[compress + swaps 1], and then decrease
* both pieceIndex and swaps by 1.
*/
if (compress !== null) {
var swaps = pieceIndex - compress;
pieceIndex = 7;
while (pieceIndex !== 0 && swaps > 0) {
_a = __read([address[compress + swaps - 1], address[pieceIndex]], 2), address[pieceIndex] = _a[0], address[compress + swaps - 1] = _a[1];
pieceIndex--;
swaps--;
}
}
else if (compress === null && pieceIndex !== 8) {
/**
* 8. Otherwise, if compress is null and pieceIndex is not 8,
* validation error, return failure.
*/
validationError("Invalid IP v6 address.");
return null;
}
/**
* 9. Return address.
*/
return address;
}
exports.iPv6Parser = iPv6Parser;
/**
* Parses an opaque host string.
*
* @param input - a string
*/
function opaqueHostParser(input) {
var e_8, _a;
/**
* 1. If input contains a forbidden host code point excluding U+0025 (%),
* validation error, return failure.
* 2. Let output be the empty string.
* 3. For each code point in input, UTF-8 percent encode it using the C0
* control percent-encode set, and append the result to output.
* 4. Return output.
*/
var forbiddenChars = /[\x00\t\f\r #/:?@\[\\\]]/;
if (forbiddenChars.test(input)) {
validationError("Invalid host string.");
return null;
}
var output = "";
try {
for (var input_1 = __values(input), input_1_1 = input_1.next(); !input_1_1.done; input_1_1 = input_1.next()) {
var codePoint = input_1_1.value;
output += utf8PercentEncode(codePoint, _c0ControlPercentEncodeSet);
}
}
catch (e_8_1) { e_8 = { error: e_8_1 }; }
finally {
try {
if (input_1_1 && !input_1_1.done && (_a = input_1.return)) _a.call(input_1);
}
finally { if (e_8) throw e_8.error; }
}
return output;
}
exports.opaqueHostParser = opaqueHostParser;
/**
* Resolves a Blob URL from the user agent's Blob URL store.
* function is not implemented.
* See: https://w3c.github.io/FileAPI/#blob-url-resolve
*
* @param url - an url
*/
function resolveABlobURL(url) {
return null;
}
exports.resolveABlobURL = resolveABlobURL;
/**
* Percent encodes a byte.
*
* @param value - a byte
*/
function percentEncode(value) {
/**
* To percent encode a byte into a percent-encoded byte, return a string
* consisting of U+0025 (%), followed by two ASCII upper hex digits
* representing byte.
*/
return '%' + ('00' + value.toString(16).toUpperCase()).slice(-2);
}
exports.percentEncode = percentEncode;
/**
* Percent decodes a byte sequence input.
*
* @param input - a byte sequence
*/
function percentDecode(input) {
var isHexDigit = function (byte) {
return (byte >= 0x30 && byte <= 0x39) || (byte >= 0x41 && byte <= 0x46) ||
(byte >= 0x61 && byte <= 0x66);
};
/**
* 1. Let output be an empty byte sequence.
* 2. For each byte byte in input:
*/
var output = new Uint8Array(input.length);
var n = 0;
for (var i = 0; i < input.length; i++) {
var byte = input[i];
/**
* 2.1. If byte is not 0x25 (%), then append byte to output.
* 2.2. Otherwise, if byte is 0x25 (%) and the next two bytes after byte
* in input are not in the ranges 0x30 (0) to 0x39 (9), 0x41 (A)
* to 0x46 (F), and 0x61 (a) to 0x66 (f), all inclusive, append byte
* to output.
* 2.3. Otherwise:
* 2.3.1. Let bytePoint be the two bytes after byte in input, decoded,
* and then interpreted as hexadecimal number.
* 2.3.2. Append a byte whose value is bytePoint to output.
* 2.3.3. Skip the next two bytes in input.
*/
if (byte !== 0x25) {
output[n] = byte;
n++;
}
else if (byte === 0x25 && i >= input.length - 2) {
output[n] = byte;
n++;
}
else if (byte === 0x25 && (!isHexDigit(input[i + 1]) || !isHexDigit(input[i + 2]))) {
output[n] = byte;
n++;
}
else {
var bytePoint = parseInt(util_1.utf8Decode(Uint8Array.of(input[i + 1], input[i + 2])), 16);
output[n] = bytePoint;
n++;
i += 2;
}
}
return output.subarray(0, n);
}
exports.percentDecode = percentDecode;
/**
* String percent decodes a string.
*
* @param input - a string
*/
function stringPercentDecode(input) {
/**
* 1. Let bytes be the UTF-8 encoding of input.
* 2. Return the percent decoding of bytes.
*/
return percentDecode(util_1.utf8Encode(input));
}
exports.stringPercentDecode = stringPercentDecode;
/**
* UTF-8 percent encodes a code point, using a percent encode set.
*
* @param codePoint - a code point
* @param percentEncodeSet - a percent encode set
*/
function utf8PercentEncode(codePoint, percentEncodeSet) {
var e_9, _a;
/**
* 1. If codePoint is not in percentEncodeSet, then return codePoint.
* 2. Let bytes be the result of running UTF-8 encode on codePoint.
* 3. Percent encode each byte in bytes, and then return the results
* concatenated, in the same order.
*/
if (!percentEncodeSet.test(codePoint))
return codePoint;
var bytes = util_1.utf8Encode(codePoint);
var result = "";
try {
for (var bytes_2 = __values(bytes), bytes_2_1 = bytes_2.next(); !bytes_2_1.done; bytes_2_1 = bytes_2.next()) {
var byte = bytes_2_1.value;
result += percentEncode(byte);
}
}
catch (e_9_1) { e_9 = { error: e_9_1 }; }
finally {
try {
if (bytes_2_1 && !bytes_2_1.done && (_a = bytes_2.return)) _a.call(bytes_2);
}
finally { if (e_9) throw e_9.error; }
}
return result;
}
exports.utf8PercentEncode = utf8PercentEncode;
/**
* Determines if two hosts are considered equal.
*
* @param hostA - a host
* @param hostB - a host
*/
function hostEquals(hostA, hostB) {
return hostA === hostB;
}
exports.hostEquals = hostEquals;
/**
* Determines if two URLs are considered equal.
*
* @param urlA - a URL
* @param urlB - a URL
* @param excludeFragmentsFlag - whether to ignore fragments while comparing
*/
function urlEquals(urlA, urlB, excludeFragmentsFlag) {
if (excludeFragmentsFlag === void 0) { excludeFragmentsFlag = false; }
/**
* 1. Let serializedA be the result of serializing A, with the exclude
* fragment flag set if the exclude fragments flag is set.
* 2. Let serializedB be the result of serializing B, with the exclude
* fragment flag set if the exclude fragments flag is set.
* 3. Return true if serializedA is serializedB, and false otherwise.
*/
return urlSerializer(urlA, excludeFragmentsFlag) ===
urlSerializer(urlB, excludeFragmentsFlag);
}
exports.urlEquals = urlEquals;
/**
* Parses an `application/x-www-form-urlencoded` string.
*
* @param input - a string
*/
function urlEncodedStringParser(input) {
/**
* The application/x-www-form-urlencoded string parser takes a string input,
* UTF-8 encodes it, and then returns the result of
* application/x-www-form-urlencoded parsing it.
*/
return urlEncodedParser(util_1.utf8Encode(input));
}
exports.urlEncodedStringParser = urlEncodedStringParser;
/**
* Parses `application/x-www-form-urlencoded` bytes.
*
* @param input - a byte sequence
*/
function urlEncodedParser(input) {
var e_10, _a, e_11, _b;
/**
* 1. Let sequences be the result of splitting input on 0x26 (&).
*/
var sequences = [];
var currentSequence = [];
try {
for (var input_2 = __values(input), input_2_1 = input_2.next(); !input_2_1.done; input_2_1 = input_2.next()) {
var byte = input_2_1.value;
if (byte === 0x26) {
sequences.push(Uint8Array.from(currentSequence));
currentSequence = [];
}
else {
currentSequence.push(byte);
}
}
}
catch (e_10_1) { e_10 = { error: e_10_1 }; }
finally {
try {
if (input_2_1 && !input_2_1.done && (_a = input_2.return)) _a.call(input_2);
}
finally { if (e_10) throw e_10.error; }
}
if (currentSequence.length !== 0) {
sequences.push(Uint8Array.from(currentSequence));
}
/**
* 2. Let output be an initially empty list of name-value tuples where both name and value hold a string.
*/
var output = [];
try {
/**
* 3. For each byte sequence bytes in sequences:
*/
for (var sequences_1 = __values(sequences), sequences_1_1 = sequences_1.next(); !sequences_1_1.done; sequences_1_1 = sequences_1.next()) {
var bytes = sequences_1_1.value;
/**
* 3.1. If bytes is the empty byte sequence, then continue.
*/
if (bytes.length === 0)
continue;
/**
* 3.2. If bytes contains a 0x3D (=), then let name be the bytes from the
* start of bytes up to but excluding its first 0x3D (=), and let value be
* the bytes, if any, after the first 0x3D (=) up to the end of bytes.
* If 0x3D (=) is the first byte, then name will be the empty byte
* sequence. If it is the last, then value will be the empty byte sequence.
* 3.3. Otherwise, let name have the value of bytes and let value be the
* empty byte sequence.
*/
var index = bytes.indexOf(0x3D);
var name = (index !== -1 ? bytes.slice(0, index) : bytes);
var value = (index !== -1 ? bytes.slice(index + 1) : new Uint8Array());
/**
* 3.4. Replace any 0x2B (+) in name and value with 0x20 (SP).
*/
for (var i = 0; i < name.length; i++)
if (name[i] === 0x2B)
name[i] = 0x20;
for (var i = 0; i < value.length; i++)
if (value[i] === 0x2B)
value[i] = 0x20;
/**
* 3.5. Let nameString and valueString be the result of running UTF-8
* decode without BOM on the percent decoding of name and value,
* respectively.
*/
var nameString = util_1.utf8Decode(name);
var valueString = util_1.utf8Decode(value);
/**
* 3.6. Append (nameString, valueString) to output.
*/
output.push([nameString, valueString]);
}
}
catch (e_11_1) { e_11 = { error: e_11_1 }; }
finally {
try {
if (sequences_1_1 && !sequences_1_1.done && (_b = sequences_1.return)) _b.call(sequences_1);
}
finally { if (e_11) throw e_11.error; }
}
/**
* 4. Return output.
*/
return output;
}
exports.urlEncodedParser = urlEncodedParser;
/**
* Serializes `application/x-www-form-urlencoded` bytes.
*
* @param input - a byte sequence
*/
function urlEncodedByteSerializer(input) {
var e_12, _a;
/**
* 1. Let output be the empty string.
* 2. For each byte in input, depending on byte:
* 0x20 (SP)
* Append U+002B (+) to output.
*
* 0x2A (*)
* 0x2D (-)
* 0x2E (.)
* 0x30 (0) to 0x39 (9)
* 0x41 (A) to 0x5A (Z)
* 0x5F (_)
* 0x61 (a) to 0x7A (z)
* Append a code point whose value is byte to output.
*
* Otherwise
* Append byte, percent encoded, to output.
* 3. Return output.
*/
var output = "";
try {
for (var input_3 = __values(input), input_3_1 = input_3.next(); !input_3_1.done; input_3_1 = input_3.next()) {
var byte = input_3_1.value;
if (byte === 0x20) {
output += '+';
}
else if (byte === 0x2A || byte === 0x2D || byte === 0x2E ||
(byte >= 0x30 && byte <= 0x39) || (byte >= 0x41 && byte <= 0x5A) ||
byte === 0x5F || (byte >= 0x61 && byte <= 0x7A)) {
output += String.fromCodePoint(byte);
}
else {
output += percentEncode(byte);
}
}
}
catch (e_12_1) { e_12 = { error: e_12_1 }; }
finally {
try {
if (input_3_1 && !input_3_1.done && (_a = input_3.return)) _a.call(input_3);
}
finally { if (e_12) throw e_12.error; }
}
return output;
}
exports.urlEncodedByteSerializer = urlEncodedByteSerializer;
/**
* Serializes `application/x-www-form-urlencoded` tuples.
*
* @param input - input tuple of name/value pairs
* @param encodingOverride: encoding override
*/
function urlEncodedSerializer(tuples, encodingOverride) {
var e_13, _a;
/**
* 1. Let encoding be UTF-8.
* 2. If encoding override is given, set encoding to the result of getting
* an output encoding from encoding override.
*/
var encoding = (encodingOverride === undefined ||
encodingOverride === "replacement" || encodingOverride === "UTF-16BE" ||
encodingOverride === "UTF-16LE" ? "UTF-8" : encodingOverride);
if (encoding.toUpperCase() !== "UTF-8") {
throw new Error("Only UTF-8 encoding is supported.");
}
/**
* 3. Let output be the empty string.
*/
var output = "";
try {
/**
* 4. For each tuple in tuples:
*/
for (var tuples_1 = __values(tuples), tuples_1_1 = tuples_1.next(); !tuples_1_1.done; tuples_1_1 = tuples_1.next()) {
var tuple = tuples_1_1.value;
/**
* 4.1. Let name be the result of serializing the result of encoding
* tuples name, using encoding.
*/
var name = urlEncodedByteSerializer(util_1.utf8Encode(tuple[0]));
/**
* 4.2. Let value be tuples value.
*/
var value = tuple[1];
/**
* TODO:
* 4.3. If value is a file, then set value to values filename.
*/
/**
* 4.4. Set value to the result of serializing the result of encoding
* value, using encoding.
*/
value = urlEncodedByteSerializer(util_1.utf8Encode(value));
/**
* 4.5. If tuple is not the first pair in tuples, then append U+0026 (&)
* to output.
*/
if (output !== "")
output += '&';
/**
* 4.6. Append name, followed by U+003D (=), followed by value, to output.
*/
output += name + '=' + value;
}
}
catch (e_13_1) { e_13 = { error: e_13_1 }; }
finally {
try {
if (tuples_1_1 && !tuples_1_1.done && (_a = tuples_1.return)) _a.call(tuples_1);
}
finally { if (e_13) throw e_13.error; }
}
/**
* 5. Return output.
*/
return output;
}
exports.urlEncodedSerializer = urlEncodedSerializer;
/**
* Returns a URL's origin.
*
* @param url - a URL
*/
function origin(url) {
/**
* A URLs origin is the origin returned by running these steps, switching
* on URLs scheme:
* "blob"
* 1. If URLs blob URL entry is non-null, then return URLs blob URL
* entrys environments origin.
* 2. Let url be the result of parsing URLs path[0].
* 3. Return a new opaque origin, if url is failure, and urls origin
* otherwise.
* "ftp"
* "http"
* "https"
* "ws"
* "wss"
* Return a tuple consisting of URLs scheme, URLs host, URLs port, and
* null.
* "file"
* Unfortunate as it is, is left as an exercise to the reader. When in
* doubt, return a new opaque origin.
* Otherwise
* Return a new opaque origin.
*/
switch (url.scheme) {
case "blob":
if (url._blobURLEntry !== null) {
// TODO: return URLs blob URL entrys environments origin.
}
var parsedURL = basicURLParser(url.path[0]);
if (parsedURL === null)
return interfaces_1.OpaqueOrigin;
else
return origin(parsedURL);
case "ftp":
case "http":
case "https":
case "ws":
case "wss":
return [url.scheme, url.host === null ? "" : url.host, url.port, null];
case "file":
return interfaces_1.OpaqueOrigin;
default:
return interfaces_1.OpaqueOrigin;
}
}
exports.origin = origin;
/**
* Converts a domain string to ASCII.
*
* @param domain - a domain string
*/
function domainToASCII(domain, beStrict) {
if (beStrict === void 0) { beStrict = false; }
/**
* 1. If beStrict is not given, set it to false.
* 2. Let result be the result of running Unicode ToASCII with domain_name
* set to domain, UseSTD3ASCIIRules set to beStrict, CheckHyphens set to
* false, CheckBidi set to true, CheckJoiners set to true,
* Transitional_Processing set to false, and VerifyDnsLength set to beStrict.
* 3. If result is a failure value, validation error, return failure.
* 4. Return result.
*/
// Use node.js function
var result = url_1.domainToASCII(domain);
if (result === "") {
validationError("Invalid domain name.");
return null;
}
return result;
}
exports.domainToASCII = domainToASCII;
/**
* Converts a domain string to Unicode.
*
* @param domain - a domain string
*/
function domainToUnicode(domain, beStrict) {
if (beStrict === void 0) { beStrict = false; }
/**
* 1. Let result be the result of running Unicode ToUnicode with domain_name
* set to domain, CheckHyphens set to false, CheckBidi set to true,
* CheckJoiners set to true, UseSTD3ASCIIRules set to false, and
* Transitional_Processing set to false.
* 2. Signify validation errors for any returned errors, and then,
* return result.
*/
// Use node.js function
var result = url_1.domainToUnicode(domain);
if (result === "") {
validationError("Invalid domain name.");
}
return result;
}
exports.domainToUnicode = domainToUnicode;
/**
* Serializes an origin.
* function is from the HTML spec:
* https://html.spec.whatwg.org/#ascii-serialisation-of-an-origin
*
* @param origin - an origin
*/
function asciiSerializationOfAnOrigin(origin) {
/**
* 1. If origin is an opaque origin, then return "null".
* 2. Otherwise, let result be origin's scheme.
* 3. Append "://" to result.
* 4. Append origin's host, serialized, to result.
* 5. If origin's port is non-null, append a U+003A COLON character (:),
* and origin's port, serialized, to result.
* 6. Return result.
*/
if (origin[0] === "" && origin[1] === "" && origin[2] === null && origin[3] === null) {
return "null";
}
var result = origin[0] + "://" + hostSerializer(origin[1]);
if (origin[2] !== null)
result += ":" + origin[2].toString();
return result;
}
exports.asciiSerializationOfAnOrigin = asciiSerializationOfAnOrigin;
//# sourceMappingURL=URLAlgorithm.js.map
/***/ }),
/* 814 */,
/* 815 */,
/* 816 */,
/* 817 */,
/* 818 */
/***/ (function(module) {
module.exports = require("tls");
/***/ }),
/* 819 */,
/* 820 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
var interfaces_1 = __webpack_require__(970);
var CharacterDataImpl_1 = __webpack_require__(43);
var algorithm_1 = __webpack_require__(163);
var WebIDLAlgorithm_1 = __webpack_require__(495);
/**
* Represents a text node.
*/
var TextImpl = /** @class */ (function (_super) {
__extends(TextImpl, _super);
/**
* Initializes a new instance of `Text`.
*
* @param data - the text content
*/
function TextImpl(data) {
if (data === void 0) { data = ''; }
var _this = _super.call(this, data) || this;
_this._name = '';
_this._assignedSlot = null;
return _this;
}
Object.defineProperty(TextImpl.prototype, "wholeText", {
/** @inheritdoc */
get: function () {
var e_1, _a;
/**
* The wholeText attributes getter must return the concatenation of the
* data of the contiguous Text nodes of the context object, in tree order.
*/
var text = '';
try {
for (var _b = __values(algorithm_1.text_contiguousTextNodes(this, true)), _c = _b.next(); !_c.done; _c = _b.next()) {
var node = _c.value;
text = text + node._data;
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
return text;
},
enumerable: true,
configurable: true
});
/** @inheritdoc */
TextImpl.prototype.splitText = function (offset) {
/**
* The splitText(offset) method, when invoked, must split context object
* with offset offset.
*/
return algorithm_1.text_split(this, offset);
};
Object.defineProperty(TextImpl.prototype, "assignedSlot", {
// MIXIN: Slotable
/* istanbul ignore next */
get: function () { throw new Error("Mixin: Slotable not implemented."); },
enumerable: true,
configurable: true
});
/**
* Creates a `Text`.
*
* @param document - owner document
* @param data - the text content
*/
TextImpl._create = function (document, data) {
if (data === void 0) { data = ''; }
var node = new TextImpl(data);
node._nodeDocument = document;
return node;
};
return TextImpl;
}(CharacterDataImpl_1.CharacterDataImpl));
exports.TextImpl = TextImpl;
/**
* Initialize prototype properties
*/
WebIDLAlgorithm_1.idl_defineConst(TextImpl.prototype, "_nodeType", interfaces_1.NodeType.Text);
//# sourceMappingURL=TextImpl.js.map
/***/ }),
/* 821 */,
/* 822 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const parse = __webpack_require__(830)
const eq = __webpack_require__(298)
const diff = (version1, version2) => {
if (eq(version1, version2)) {
return null
} else {
const v1 = parse(version1)
const v2 = parse(version2)
const hasPre = v1.prerelease.length || v2.prerelease.length
const prefix = hasPre ? 'pre' : ''
const defaultResult = hasPre ? 'prerelease' : ''
for (const key in v1) {
if (key === 'major' || key === 'minor' || key === 'patch') {
if (v1[key] !== v2[key]) {
return prefix + key
}
}
}
return defaultResult // may be undefined
}
}
module.exports = diff
/***/ }),
/* 823 */,
/* 824 */,
/* 825 */,
/* 826 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __spread = (this && this.__spread) || function () {
for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
var DOMImpl_1 = __webpack_require__(648);
var interfaces_1 = __webpack_require__(970);
var util_1 = __webpack_require__(918);
var CustomEventImpl_1 = __webpack_require__(164);
var EventImpl_1 = __webpack_require__(427);
var DOMException_1 = __webpack_require__(35);
var TreeAlgorithm_1 = __webpack_require__(873);
var ShadowTreeAlgorithm_1 = __webpack_require__(180);
var DOMAlgorithm_1 = __webpack_require__(304);
/**
* Sets the canceled flag of an event.
*
* @param event - an event
*/
function event_setTheCanceledFlag(event) {
if (event._cancelable && !event._inPassiveListenerFlag) {
event._canceledFlag = true;
}
}
exports.event_setTheCanceledFlag = event_setTheCanceledFlag;
/**
* Initializes the value of an event.
*
* @param event - an event to initialize
* @param type - the type of event
* @param bubbles - whether the event propagates in reverse
* @param cancelable - whether the event can be cancelled
*/
function event_initialize(event, type, bubbles, cancelable) {
event._initializedFlag = true;
event._stopPropagationFlag = false;
event._stopImmediatePropagationFlag = false;
event._canceledFlag = false;
event._isTrusted = false;
event._target = null;
event._type = type;
event._bubbles = bubbles;
event._cancelable = cancelable;
}
exports.event_initialize = event_initialize;
/**
* Creates a new event.
*
* @param eventInterface - event interface
* @param realm - realm
*/
function event_createAnEvent(eventInterface, realm) {
if (realm === void 0) { realm = undefined; }
/**
* 1. If realm is not given, then set it to null.
* 2. Let dictionary be the result of converting the JavaScript value
* undefined to the dictionary type accepted by eventInterfaces
* constructor. (This dictionary type will either be EventInit or a
* dictionary that inherits from it.)
* 3. Let event be the result of running the inner event creation steps with
* eventInterface, realm, the time of the occurrence that the event is
* signaling, and dictionary.
* 4. Initialize events isTrusted attribute to true.
* 5. Return event.
*/
if (realm === undefined)
realm = null;
var dictionary = {};
var event = event_innerEventCreationSteps(eventInterface, realm, new Date(), dictionary);
event._isTrusted = true;
return event;
}
exports.event_createAnEvent = event_createAnEvent;
/**
* Performs event creation steps.
*
* @param eventInterface - event interface
* @param realm - realm
* @param time - time of occurrance
* @param dictionary - event attributes
*
*/
function event_innerEventCreationSteps(eventInterface, realm, time, dictionary) {
/**
* 1. Let event be the result of creating a new object using eventInterface.
* TODO: Implement realms
* If realm is non-null, then use that Realm; otherwise, use the default
* behavior defined in Web IDL.
*/
var event = new eventInterface("");
/**
* 2. Set events initialized flag.
* 3. Initialize events timeStamp attribute to a DOMHighResTimeStamp
* representing the high resolution time from the time origin to time.
* 4. For each member → value in dictionary, if event has an attribute
* whose identifier is member, then initialize that attribute to value.
* 5. Run the event constructing steps with event.
* 6. Return event.
*/
event._initializedFlag = true;
event._timeStamp = time.getTime();
Object.assign(event, dictionary);
if (DOMImpl_1.dom.features.steps) {
DOMAlgorithm_1.dom_runEventConstructingSteps(event);
}
return event;
}
exports.event_innerEventCreationSteps = event_innerEventCreationSteps;
/**
* Dispatches an event to an event target.
*
* @param event - the event to dispatch
* @param target - event target
* @param legacyTargetOverrideFlag - legacy target override flag
* @param legacyOutputDidListenersThrowFlag - legacy output flag that returns
* whether the event listener's callback threw an exception
*/
function event_dispatch(event, target, legacyTargetOverrideFlag, legacyOutputDidListenersThrowFlag) {
var e_1, _a, e_2, _b;
if (legacyTargetOverrideFlag === void 0) { legacyTargetOverrideFlag = false; }
if (legacyOutputDidListenersThrowFlag === void 0) { legacyOutputDidListenersThrowFlag = { value: false }; }
var clearTargets = false;
/**
* 1. Set event's dispatch flag.
*/
event._dispatchFlag = true;
/**
* 2. Let targetOverride be target, if legacy target override flag is not
* given, and target's associated Document otherwise.
*
* _Note:_ legacy target override flag is only used by HTML and only when
* target is a Window object.
*/
var targetOverride = target;
if (legacyTargetOverrideFlag) {
var doc = target._associatedDocument;
if (util_1.Guard.isDocumentNode(doc)) {
targetOverride = doc;
}
}
/**
* 3. Let activationTarget be null.
* 4. Let relatedTarget be the result of retargeting event's relatedTarget
* against target.
* 5. If target is not relatedTarget or target is event's relatedTarget,
* then:
*/
var activationTarget = null;
var relatedTarget = TreeAlgorithm_1.tree_retarget(event._relatedTarget, target);
if (target !== relatedTarget || target === event._relatedTarget) {
/**
* 5.1. Let touchTargets be a new list.
* 5.2. For each touchTarget of event's touch target list, append the
* result of retargeting touchTarget against target to touchTargets.
* 5.3. Append to an event path with event, target, targetOverride,
* relatedTarget, touchTargets, and false.
* 5.4. Let isActivationEvent be true, if event is a MouseEvent object
* and event's type attribute is "click", and false otherwise.
* 5.5. If isActivationEvent is true and target has activation behavior,
* then set activationTarget to target.
* 5.6. Let slotable be target, if target is a slotable and is assigned,
* and null otherwise.
* 5.7. Let slot-in-closed-tree be false.
* 5.8. Let parent be the result of invoking target's get the parent with
* event.
*/
var touchTargets = [];
try {
for (var _c = __values(event._touchTargetList), _d = _c.next(); !_d.done; _d = _c.next()) {
var touchTarget = _d.value;
touchTargets.push(TreeAlgorithm_1.tree_retarget(touchTarget, target));
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
}
finally { if (e_1) throw e_1.error; }
}
event_appendToAnEventPath(event, target, targetOverride, relatedTarget, touchTargets, false);
var isActivationEvent = (util_1.Guard.isMouseEvent(event) && event._type === "click");
if (isActivationEvent && target._activationBehavior !== undefined) {
activationTarget = target;
}
var slotable = (util_1.Guard.isSlotable(target) && ShadowTreeAlgorithm_1.shadowTree_isAssigned(target)) ?
target : null;
var slotInClosedTree = false;
var parent = target._getTheParent(event);
/**
* 5.9. While parent is non-null:
*/
while (parent !== null && util_1.Guard.isNode(parent)) {
/**
* 5.9.1 If slotable is non-null:
* 5.9.1.1. Assert: parent is a slot.
* 5.9.1.2. Set slotable to null.
* 5.9.1.3. If parent's root is a shadow root whose mode is "closed",
* then set slot-in-closed-tree to true.
*/
if (slotable !== null) {
if (!util_1.Guard.isSlot(parent)) {
throw new Error("Parent node of a slotable should be a slot.");
}
slotable = null;
var root = TreeAlgorithm_1.tree_rootNode(parent, true);
if (util_1.Guard.isShadowRoot(root) && root._mode === "closed") {
slotInClosedTree = true;
}
}
/**
* 5.9.2 If parent is a slotable and is assigned, then set slotable to
* parent.
* 5.9.3. Let relatedTarget be the result of retargeting event's
* relatedTarget against parent.
* 5.9.4. Let touchTargets be a new list.
* 5.9.4. For each touchTarget of event's touch target list, append the
* result of retargeting touchTarget against parent to touchTargets.
*/
if (util_1.Guard.isSlotable(parent) && ShadowTreeAlgorithm_1.shadowTree_isAssigned(parent)) {
slotable = parent;
}
relatedTarget = TreeAlgorithm_1.tree_retarget(event._relatedTarget, parent);
touchTargets = [];
try {
for (var _e = (e_2 = void 0, __values(event._touchTargetList)), _f = _e.next(); !_f.done; _f = _e.next()) {
var touchTarget = _f.value;
touchTargets.push(TreeAlgorithm_1.tree_retarget(touchTarget, parent));
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
}
finally { if (e_2) throw e_2.error; }
}
/**
* 5.9.6. If parent is a Window object, or parent is a node and target's
* root is a shadow-including inclusive ancestor of parent, then:
*/
if (util_1.Guard.isWindow(parent) || (util_1.Guard.isNode(parent) && util_1.Guard.isNode(target) &&
TreeAlgorithm_1.tree_isAncestorOf(TreeAlgorithm_1.tree_rootNode(target, true), parent, true, true))) {
/**
* 5.9.6.1. If isActivationEvent is true, event's bubbles attribute
* is true, activationTarget is null, and parent has activation
* behavior, then set activationTarget to parent.
* 5.9.6.2. Append to an event path with event, parent, null,
* relatedTarget, touchTargets, and slot-in-closed-tree.
*/
if (isActivationEvent && event._bubbles && activationTarget === null &&
parent._activationBehavior) {
activationTarget = parent;
}
event_appendToAnEventPath(event, parent, null, relatedTarget, touchTargets, slotInClosedTree);
}
else if (parent === relatedTarget) {
/**
* 5.9.7. Otherwise, if parent is relatedTarget,
* then set parent to null.
*/
parent = null;
}
else {
/**
* 5.9.8. Otherwise, set target to parent and then:
* 5.9.8.1. If isActivationEvent is true, activationTarget is null,
* and target has activation behavior, then set activationTarget
* to target.
* 5.9.8.2. Append to an event path with event, parent, target,
* relatedTarget, touchTargets, and slot-in-closed-tree.
*/
target = parent;
if (isActivationEvent && activationTarget === null &&
target._activationBehavior) {
activationTarget = target;
}
event_appendToAnEventPath(event, parent, target, relatedTarget, touchTargets, slotInClosedTree);
}
/**
* 5.9.9. If parent is non-null, then set parent to the result of
* invoking parent's get the parent with event.
* 5.9.10. Set slot-in-closed-tree to false.
*/
if (parent !== null) {
parent = parent._getTheParent(event);
}
slotInClosedTree = false;
}
/**
* 5.10. Let clearTargetsStruct be the last struct in event's path whose
* shadow-adjusted target is non-null.
*/
var clearTargetsStruct = null;
var path = event._path;
for (var i = path.length - 1; i >= 0; i--) {
var struct = path[i];
if (struct.shadowAdjustedTarget !== null) {
clearTargetsStruct = struct;
break;
}
}
/**
* 5.11. Let clearTargets be true if clearTargetsStruct's shadow-adjusted
* target, clearTargetsStruct's relatedTarget, or an EventTarget object
* in clearTargetsStruct's touch target list is a node and its root is
* a shadow root, and false otherwise.
*/
if (clearTargetsStruct !== null) {
if (util_1.Guard.isNode(clearTargetsStruct.shadowAdjustedTarget) &&
util_1.Guard.isShadowRoot(TreeAlgorithm_1.tree_rootNode(clearTargetsStruct.shadowAdjustedTarget, true))) {
clearTargets = true;
}
else if (util_1.Guard.isNode(clearTargetsStruct.relatedTarget) &&
util_1.Guard.isShadowRoot(TreeAlgorithm_1.tree_rootNode(clearTargetsStruct.relatedTarget, true))) {
clearTargets = true;
}
else {
for (var j = 0; j < clearTargetsStruct.touchTargetList.length; j++) {
var struct = clearTargetsStruct.touchTargetList[j];
if (util_1.Guard.isNode(struct) &&
util_1.Guard.isShadowRoot(TreeAlgorithm_1.tree_rootNode(struct, true))) {
clearTargets = true;
break;
}
}
}
}
/**
* 5.12. If activationTarget is non-null and activationTarget has
* legacy-pre-activation behavior, then run activationTarget's
* legacy-pre-activation behavior.
*/
if (activationTarget !== null &&
activationTarget._legacyPreActivationBehavior !== undefined) {
activationTarget._legacyPreActivationBehavior(event);
}
/**
* 5.13. For each struct in event's path, in reverse order:
*/
for (var i = path.length - 1; i >= 0; i--) {
var struct = path[i];
/**
* 5.13.1. If struct's shadow-adjusted target is non-null, then set
* event's eventPhase attribute to AT_TARGET.
* 5.13.2. Otherwise, set event's eventPhase attribute to
* CAPTURING_PHASE.
* 5.13.3. Invoke with struct, event, "capturing", and
* legacyOutputDidListenersThrowFlag if given.
*/
if (struct.shadowAdjustedTarget !== null) {
event._eventPhase = interfaces_1.EventPhase.AtTarget;
}
else {
event._eventPhase = interfaces_1.EventPhase.Capturing;
}
event_invoke(struct, event, "capturing", legacyOutputDidListenersThrowFlag);
}
/**
* 5.14. For each struct in event's path
*/
for (var i = 0; i < path.length; i++) {
var struct = path[i];
/**
* 5.14.1. If struct's shadow-adjusted target is non-null, then set
* event's eventPhase attribute to AT_TARGET.
* 5.14.2. Otherwise:
* 5.14.2.1. If event's bubbles attribute is false, then continue.
* 5.14.2.2. Set event's eventPhase attribute to BUBBLING_PHASE.
* 5.14.3. Invoke with struct, event, "bubbling", and
* legacyOutputDidListenersThrowFlag if given.
*/
if (struct.shadowAdjustedTarget !== null) {
event._eventPhase = interfaces_1.EventPhase.AtTarget;
}
else {
if (!event._bubbles)
continue;
event._eventPhase = interfaces_1.EventPhase.Bubbling;
}
event_invoke(struct, event, "bubbling", legacyOutputDidListenersThrowFlag);
}
}
/**
* 6. Set event's eventPhase attribute to NONE.
* 7. Set event's currentTarget attribute to null.
* 8. Set event's path to the empty list.
* 9. Unset event's dispatch flag, stop propagation flag, and stop
* immediate propagation flag.
*/
event._eventPhase = interfaces_1.EventPhase.None;
event._currentTarget = null;
event._path = [];
event._dispatchFlag = false;
event._stopPropagationFlag = false;
event._stopImmediatePropagationFlag = false;
/**
* 10. If clearTargets, then:
* 10.1. Set event's target to null.
* 10.2. Set event's relatedTarget to null.
* 10.3. Set event's touch target list to the empty list.
*/
if (clearTargets) {
event._target = null;
event._relatedTarget = null;
event._touchTargetList = [];
}
/**
* 11. If activationTarget is non-null, then:
* 11.1. If event's canceled flag is unset, then run activationTarget's
* activation behavior with event.
* 11.2. Otherwise, if activationTarget has legacy-canceled-activation
* behavior, then run activationTarget's legacy-canceled-activation
* behavior.
*/
if (activationTarget !== null) {
if (!event._canceledFlag && activationTarget._activationBehavior !== undefined) {
activationTarget._activationBehavior(event);
}
else if (activationTarget._legacyCanceledActivationBehavior !== undefined) {
activationTarget._legacyCanceledActivationBehavior(event);
}
}
/**
* 12. Return false if event's canceled flag is set, and true otherwise.
*/
return !event._canceledFlag;
}
exports.event_dispatch = event_dispatch;
/**
* Appends a new struct to an event's path.
*
* @param event - an event
* @param invocationTarget - the target of the invocation
* @param shadowAdjustedTarget - shadow-root adjusted event target
* @param relatedTarget - related event target
* @param touchTargets - a list of touch targets
* @param slotInClosedTree - if the target's parent is a closed shadow root
*/
function event_appendToAnEventPath(event, invocationTarget, shadowAdjustedTarget, relatedTarget, touchTargets, slotInClosedTree) {
/**
* 1. Let invocationTargetInShadowTree be false.
* 2. If invocationTarget is a node and its root is a shadow root, then
* set invocationTargetInShadowTree to true.
*/
var invocationTargetInShadowTree = false;
if (util_1.Guard.isNode(invocationTarget) &&
util_1.Guard.isShadowRoot(TreeAlgorithm_1.tree_rootNode(invocationTarget))) {
invocationTargetInShadowTree = true;
}
/**
* 3. Let root-of-closed-tree be false.
* 4. If invocationTarget is a shadow root whose mode is "closed", then
* set root-of-closed-tree to true.
*/
var rootOfClosedTree = false;
if (util_1.Guard.isShadowRoot(invocationTarget) &&
invocationTarget._mode === "closed") {
rootOfClosedTree = true;
}
/**
* 5. Append a new struct to event's path whose invocation target is
* invocationTarget, invocation-target-in-shadow-tree is
* invocationTargetInShadowTree, shadow-adjusted target is
* shadowAdjustedTarget, relatedTarget is relatedTarget,
* touch target list is touchTargets, root-of-closed-tree is
* root-of-closed-tree, and slot-in-closed-tree is slot-in-closed-tree.
*/
event._path.push({
invocationTarget: invocationTarget,
invocationTargetInShadowTree: invocationTargetInShadowTree,
shadowAdjustedTarget: shadowAdjustedTarget,
relatedTarget: relatedTarget,
touchTargetList: touchTargets,
rootOfClosedTree: rootOfClosedTree,
slotInClosedTree: slotInClosedTree
});
}
exports.event_appendToAnEventPath = event_appendToAnEventPath;
/**
* Invokes an event.
*
* @param struct - a struct defining event's path
* @param event - the event to invoke
* @param phase - event phase
* @param legacyOutputDidListenersThrowFlag - legacy output flag that returns
* whether the event listener's callback threw an exception
*/
function event_invoke(struct, event, phase, legacyOutputDidListenersThrowFlag) {
if (legacyOutputDidListenersThrowFlag === void 0) { legacyOutputDidListenersThrowFlag = { value: false }; }
/**
* 1. Set event's target to the shadow-adjusted target of the last struct
* in event's path, that is either struct or preceding struct, whose
* shadow-adjusted target is non-null.
*/
var path = event._path;
var index = -1;
for (var i = 0; i < path.length; i++) {
if (path[i] === struct) {
index = i;
break;
}
}
if (index !== -1) {
var item = path[index];
if (item.shadowAdjustedTarget !== null) {
event._target = item.shadowAdjustedTarget;
}
else if (index > 0) {
item = path[index - 1];
if (item.shadowAdjustedTarget !== null) {
event._target = item.shadowAdjustedTarget;
}
}
}
/**
* 2. Set event's relatedTarget to struct's relatedTarget.
* 3. Set event's touch target list to struct's touch target list.
* 4. If event's stop propagation flag is set, then return.
* 5. Initialize event's currentTarget attribute to struct's invocation
* target.
* 6. Let listeners be a clone of event's currentTarget attribute value's
* event listener list.
*
* _Note:_ This avoids event listeners added after this point from being
* run. Note that removal still has an effect due to the removed field.
*/
event._relatedTarget = struct.relatedTarget;
event._touchTargetList = struct.touchTargetList;
if (event._stopPropagationFlag)
return;
event._currentTarget = struct.invocationTarget;
var currentTarget = event._currentTarget;
var targetListeners = currentTarget._eventListenerList;
var listeners = new (Array.bind.apply(Array, __spread([void 0], targetListeners)))();
/**
* 7. Let found be the result of running inner invoke with event, listeners,
* phase, and legacyOutputDidListenersThrowFlag if given.
*/
var found = event_innerInvoke(event, listeners, phase, struct, legacyOutputDidListenersThrowFlag);
/**
* 8. If found is false and event's isTrusted attribute is true, then:
*/
if (!found && event._isTrusted) {
/**
* 8.1. Let originalEventType be event's type attribute value.
* 8.2. If event's type attribute value is a match for any of the strings
* in the first column in the following table, set event's type attribute
* value to the string in the second column on the same row as the matching
* string, and return otherwise.
*
* Event type | Legacy event type
* -------------------------------------------------
* "animationend" | "webkitAnimationEnd"
* "animationiteration" | "webkitAnimationIteration"
* "animationstart" | "webkitAnimationStart"
* "transitionend" | "webkitTransitionEnd"
*/
var originalEventType = event._type;
if (originalEventType === "animationend") {
event._type = "webkitAnimationEnd";
}
else if (originalEventType === "animationiteration") {
event._type = "webkitAnimationIteration";
}
else if (originalEventType === "animationstart") {
event._type = "webkitAnimationStart";
}
else if (originalEventType === "transitionend") {
event._type = "webkitTransitionEnd";
}
/**
* 8.3. Inner invoke with event, listeners, phase, and
* legacyOutputDidListenersThrowFlag if given.
* 8.4. Set event's type attribute value to originalEventType.
*/
event_innerInvoke(event, listeners, phase, struct, legacyOutputDidListenersThrowFlag);
event._type = originalEventType;
}
}
exports.event_invoke = event_invoke;
/**
* Invokes an event.
*
* @param event - the event to invoke
* @param listeners - event listeners
* @param phase - event phase
* @param struct - a struct defining event's path
* @param legacyOutputDidListenersThrowFlag - legacy output flag that returns
* whether the event listener's callback threw an exception
*/
function event_innerInvoke(event, listeners, phase, struct, legacyOutputDidListenersThrowFlag) {
if (legacyOutputDidListenersThrowFlag === void 0) { legacyOutputDidListenersThrowFlag = { value: false }; }
/**
* 1. Let found be false.
* 2. For each listener in listeners, whose removed is false:
*/
var found = false;
for (var i = 0; i < listeners.length; i++) {
var listener = listeners[i];
if (!listener.removed) {
/**
* 2.1. If event's type attribute value is not listener's type, then
* continue.
* 2.2. Set found to true.
* 2.3. If phase is "capturing" and listener's capture is false, then
* continue.
* 2.4. If phase is "bubbling" and listener's capture is true, then
* continue.
*/
if (event._type !== listener.type)
continue;
found = true;
if (phase === "capturing" && !listener.capture)
continue;
if (phase === "bubbling" && listener.capture)
continue;
/**
* 2.5. If listener's once is true, then remove listener from event's
* currentTarget attribute value's event listener list.
*/
if (listener.once && event._currentTarget !== null) {
var impl = event._currentTarget;
var index = -1;
for (var i_1 = 0; i_1 < impl._eventListenerList.length; i_1++) {
if (impl._eventListenerList[i_1] === listener) {
index = i_1;
break;
}
}
if (index !== -1) {
impl._eventListenerList.splice(index, 1);
}
}
/**
* TODO: Implement realms
*
* 2.6. Let global be listener callback's associated Realm's global
* object.
*/
var globalObject = undefined;
/**
* 2.7. Let currentEvent be undefined.
* 2.8. If global is a Window object, then:
* 2.8.1. Set currentEvent to global's current event.
* 2.8.2. If struct's invocation-target-in-shadow-tree is false, then
* set global's current event to event.
*/
var currentEvent = undefined;
if (util_1.Guard.isWindow(globalObject)) {
currentEvent = globalObject._currentEvent;
if (struct.invocationTargetInShadowTree === false) {
globalObject._currentEvent = event;
}
}
/**
* 2.9. If listener's passive is true, then set event's in passive
* listener flag.
* 2.10. Call a user object's operation with listener's callback,
* "handleEvent", « event », and event's currentTarget attribute value.
*/
if (listener.passive)
event._inPassiveListenerFlag = true;
try {
listener.callback.handleEvent.call(event._currentTarget, event);
}
catch (err) {
/**
* If this throws an exception, then:
* 2.10.1. Report the exception.
* 2.10.2. Set legacyOutputDidListenersThrowFlag if given.
*
* _Note:_ The legacyOutputDidListenersThrowFlag is only used by
* Indexed Database API.
* TODO: Report the exception
* See: https://html.spec.whatwg.org/multipage/webappapis.html#runtime-script-errors-in-documents
*/
legacyOutputDidListenersThrowFlag.value = true;
}
/**
* 2.11. Unset event's in passive listener flag.
*/
if (listener.passive)
event._inPassiveListenerFlag = false;
/**
* 2.12. If global is a Window object, then set global's current event
* to currentEvent.
*/
if (util_1.Guard.isWindow(globalObject)) {
globalObject._currentEvent = currentEvent;
}
/**
* 2.13. If event's stop immediate propagation flag is set, then return
* found.
*/
if (event._stopImmediatePropagationFlag)
return found;
}
}
/**
* 3. Return found.
*/
return found;
}
exports.event_innerInvoke = event_innerInvoke;
/**
* Fires an event at target.
* @param e - event name
* @param target - event target
* @param eventConstructor - an event constructor, with a description of how
* IDL attributes are to be initialized
* @param idlAttributes - a dictionary describing how IDL attributes are
* to be initialized
* @param legacyTargetOverrideFlag - legacy target override flag
*/
function event_fireAnEvent(e, target, eventConstructor, idlAttributes, legacyTargetOverrideFlag) {
/**
* 1. If eventConstructor is not given, then let eventConstructor be Event.
*/
if (eventConstructor === undefined) {
eventConstructor = EventImpl_1.EventImpl;
}
/**
* 2. Let event be the result of creating an event given eventConstructor,
* in the relevant Realm of target.
*/
var event = event_createAnEvent(eventConstructor);
/**
* 3. Initialize events type attribute to e.
*/
event._type = e;
/**
* 4. Initialize any other IDL attributes of event as described in the
* invocation of this algorithm.
* _Note:_ This also allows for the isTrusted attribute to be set to false.
*/
if (idlAttributes) {
for (var key in idlAttributes) {
var idlObj = event;
idlObj[key] = idlAttributes[key];
}
}
/**
* 5. Return the result of dispatching event at target, with legacy target
* override flag set if set.
*/
return event_dispatch(event, target, legacyTargetOverrideFlag);
}
exports.event_fireAnEvent = event_fireAnEvent;
/**
* Creates an event.
*
* @param eventInterface - the name of the event interface
*/
function event_createLegacyEvent(eventInterface) {
/**
* 1. Let constructor be null.
*/
var constructor = null;
/**
* TODO: Implement in HTML DOM
* 2. If interface is an ASCII case-insensitive match for any of the strings
* in the first column in the following table, then set constructor to the
* interface in the second column on the same row as the matching string:
*
* String | Interface
* -------|----------
* "beforeunloadevent" | BeforeUnloadEvent
* "compositionevent" | CompositionEvent
* "customevent" | CustomEvent
* "devicemotionevent" | DeviceMotionEvent
* "deviceorientationevent" | DeviceOrientationEvent
* "dragevent" | DragEvent
* "event" | Event
* "events" | Event
* "focusevent" | FocusEvent
* "hashchangeevent" | HashChangeEvent
* "htmlevents" | Event
* "keyboardevent" | KeyboardEvent
* "messageevent" | MessageEvent
* "mouseevent" | MouseEvent
* "mouseevents" |
* "storageevent" | StorageEvent
* "svgevents" | Event
* "textevent" | CompositionEvent
* "touchevent" | TouchEvent
* "uievent" | UIEvent
* "uievents" | UIEvent
*/
switch (eventInterface.toLowerCase()) {
case "beforeunloadevent":
break;
case "compositionevent":
break;
case "customevent":
constructor = CustomEventImpl_1.CustomEventImpl;
break;
case "devicemotionevent":
break;
case "deviceorientationevent":
break;
case "dragevent":
break;
case "event":
case "events":
constructor = EventImpl_1.EventImpl;
break;
case "focusevent":
break;
case "hashchangeevent":
break;
case "htmlevents":
break;
case "keyboardevent":
break;
case "messageevent":
break;
case "mouseevent":
break;
case "mouseevents":
break;
case "storageevent":
break;
case "svgevents":
break;
case "textevent":
break;
case "touchevent":
break;
case "uievent":
break;
case "uievents":
break;
}
/**
* 3. If constructor is null, then throw a "NotSupportedError" DOMException.
*/
if (constructor === null) {
throw new DOMException_1.NotSupportedError("Event constructor not found for interface " + eventInterface + ".");
}
/**
* 4. If the interface indicated by constructor is not exposed on the
* relevant global object of the context object, then throw a
* "NotSupportedError" DOMException.
* _Note:_ Typically user agents disable support for touch events in some
* configurations, in which case this clause would be triggered for the
* interface TouchEvent.
*/
// TODO: Implement realms
/**
* 5. Let event be the result of creating an event given constructor.
* 6. Initialize events type attribute to the empty string.
* 7. Initialize events timeStamp attribute to a DOMHighResTimeStamp
* representing the high resolution time from the time origin to now.
* 8. Initialize events isTrusted attribute to false.
* 9. Unset events initialized flag.
*/
var event = new constructor("");
event._type = "";
event._timeStamp = new Date().getTime();
event._isTrusted = false;
event._initializedFlag = false;
/**
* 10. Return event.
*/
return event;
}
exports.event_createLegacyEvent = event_createLegacyEvent;
/**
* Getter of an event handler IDL attribute.
*
* @param eventTarget - event target
* @param name - event name
*/
function event_getterEventHandlerIDLAttribute(thisObj, name) {
/**
* 1. Let eventTarget be the result of determining the target of an event
* handler given this object and name.
* 2. If eventTarget is null, then return null.
* 3. Return the result of getting the current value of the event handler
* given eventTarget and name.
*/
var eventTarget = event_determineTheTargetOfAnEventHandler(thisObj, name);
if (eventTarget === null)
return null;
return event_getTheCurrentValueOfAnEventHandler(eventTarget, name);
}
exports.event_getterEventHandlerIDLAttribute = event_getterEventHandlerIDLAttribute;
/**
* Setter of an event handler IDL attribute.
*
* @param eventTarget - event target
* @param name - event name
* @param value - event handler
*/
function event_setterEventHandlerIDLAttribute(thisObj, name, value) {
/**
* 1. Let eventTarget be the result of determining the target of an event
* handler given this object and name.
* 2. If eventTarget is null, then return.
* 3. If the given value is null, then deactivate an event handler given
* eventTarget and name.
* 4. Otherwise:
* 4.1. Let handlerMap be eventTarget's event handler map.
* 4.2. Let eventHandler be handlerMap[name].
* 4.3. Set eventHandler's value to the given value.
* 4.4. Activate an event handler given eventTarget and name.
*/
var eventTarget = event_determineTheTargetOfAnEventHandler(thisObj, name);
if (eventTarget === null)
return;
if (value === null) {
event_deactivateAnEventHandler(eventTarget, name);
}
else {
var handlerMap = eventTarget._eventHandlerMap;
var eventHandler = handlerMap["onabort"];
if (eventHandler !== undefined) {
eventHandler.value = value;
}
event_activateAnEventHandler(eventTarget, name);
}
}
exports.event_setterEventHandlerIDLAttribute = event_setterEventHandlerIDLAttribute;
/**
* Determines the target of an event handler.
*
* @param eventTarget - event target
* @param name - event name
*/
function event_determineTheTargetOfAnEventHandler(eventTarget, name) {
// TODO: Implement in HTML DOM
return null;
}
exports.event_determineTheTargetOfAnEventHandler = event_determineTheTargetOfAnEventHandler;
/**
* Gets the current value of an event handler.
*
* @param eventTarget - event target
* @param name - event name
*/
function event_getTheCurrentValueOfAnEventHandler(eventTarget, name) {
// TODO: Implement in HTML DOM
return null;
}
exports.event_getTheCurrentValueOfAnEventHandler = event_getTheCurrentValueOfAnEventHandler;
/**
* Activates an event handler.
*
* @param eventTarget - event target
* @param name - event name
*/
function event_activateAnEventHandler(eventTarget, name) {
// TODO: Implement in HTML DOM
}
exports.event_activateAnEventHandler = event_activateAnEventHandler;
/**
* Deactivates an event handler.
*
* @param eventTarget - event target
* @param name - event name
*/
function event_deactivateAnEventHandler(eventTarget, name) {
// TODO: Implement in HTML DOM
}
exports.event_deactivateAnEventHandler = event_deactivateAnEventHandler;
//# sourceMappingURL=EventAlgorithm.js.map
/***/ }),
/* 827 */,
/* 828 */,
/* 829 */,
/* 830 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const {MAX_LENGTH} = __webpack_require__(181)
const { re, t } = __webpack_require__(976)
const SemVer = __webpack_require__(65)
const parseOptions = __webpack_require__(143)
const parse = (version, options) => {
options = parseOptions(options)
if (version instanceof SemVer) {
return version
}
if (typeof version !== 'string') {
return null
}
if (version.length > MAX_LENGTH) {
return null
}
const r = options.loose ? re[t.LOOSE] : re[t.FULL]
if (!r.test(version)) {
return null
}
try {
return new SemVer(version, options)
} catch (er) {
return null
}
}
module.exports = parse
/***/ }),
/* 831 */,
/* 832 */,
/* 833 */,
/* 834 */,
/* 835 */
/***/ (function(module) {
module.exports = require("url");
/***/ }),
/* 836 */,
/* 837 */,
/* 838 */,
/* 839 */,
/* 840 */,
/* 841 */
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
var Type = __webpack_require__(945);
var YAML_DATE_REGEXP = new RegExp(
'^([0-9][0-9][0-9][0-9])' + // [1] year
'-([0-9][0-9])' + // [2] month
'-([0-9][0-9])$'); // [3] day
var YAML_TIMESTAMP_REGEXP = new RegExp(
'^([0-9][0-9][0-9][0-9])' + // [1] year
'-([0-9][0-9]?)' + // [2] month
'-([0-9][0-9]?)' + // [3] day
'(?:[Tt]|[ \\t]+)' + // ...
'([0-9][0-9]?)' + // [4] hour
':([0-9][0-9])' + // [5] minute
':([0-9][0-9])' + // [6] second
'(?:\\.([0-9]*))?' + // [7] fraction
'(?:[ \\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour
'(?::([0-9][0-9]))?))?$'); // [11] tz_minute
function resolveYamlTimestamp(data) {
if (data === null) return false;
if (YAML_DATE_REGEXP.exec(data) !== null) return true;
if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;
return false;
}
function constructYamlTimestamp(data) {
var match, year, month, day, hour, minute, second, fraction = 0,
delta = null, tz_hour, tz_minute, date;
match = YAML_DATE_REGEXP.exec(data);
if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);
if (match === null) throw new Error('Date resolve error');
// match: [1] year [2] month [3] day
year = +(match[1]);
month = +(match[2]) - 1; // JS month starts with 0
day = +(match[3]);
if (!match[4]) { // no hour
return new Date(Date.UTC(year, month, day));
}
// match: [4] hour [5] minute [6] second [7] fraction
hour = +(match[4]);
minute = +(match[5]);
second = +(match[6]);
if (match[7]) {
fraction = match[7].slice(0, 3);
while (fraction.length < 3) { // milli-seconds
fraction += '0';
}
fraction = +fraction;
}
// match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute
if (match[9]) {
tz_hour = +(match[10]);
tz_minute = +(match[11] || 0);
delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds
if (match[9] === '-') delta = -delta;
}
date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));
if (delta) date.setTime(date.getTime() - delta);
return date;
}
function representYamlTimestamp(object /*, style*/) {
return object.toISOString();
}
module.exports = new Type('tag:yaml.org,2002:timestamp', {
kind: 'scalar',
resolve: resolveYamlTimestamp,
construct: constructYamlTimestamp,
instanceOf: Date,
represent: representYamlTimestamp
});
/***/ }),
/* 842 */
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
var Type = __webpack_require__(945);
var _hasOwnProperty = Object.prototype.hasOwnProperty;
var _toString = Object.prototype.toString;
function resolveYamlOmap(data) {
if (data === null) return true;
var objectKeys = [], index, length, pair, pairKey, pairHasKey,
object = data;
for (index = 0, length = object.length; index < length; index += 1) {
pair = object[index];
pairHasKey = false;
if (_toString.call(pair) !== '[object Object]') return false;
for (pairKey in pair) {
if (_hasOwnProperty.call(pair, pairKey)) {
if (!pairHasKey) pairHasKey = true;
else return false;
}
}
if (!pairHasKey) return false;
if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);
else return false;
}
return true;
}
function constructYamlOmap(data) {
return data !== null ? data : [];
}
module.exports = new Type('tag:yaml.org,2002:omap', {
kind: 'sequence',
resolve: resolveYamlOmap,
construct: constructYamlOmap
});
/***/ }),
/* 843 */,
/* 844 */,
/* 845 */,
/* 846 */,
/* 847 */,
/* 848 */,
/* 849 */,
/* 850 */,
/* 851 */,
/* 852 */,
/* 853 */,
/* 854 */,
/* 855 */,
/* 856 */
/***/ (function(module, __unusedexports, __webpack_require__) {
module.exports = __webpack_require__(141);
/***/ }),
/* 857 */,
/* 858 */,
/* 859 */,
/* 860 */,
/* 861 */,
/* 862 */,
/* 863 */,
/* 864 */,
/* 865 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var ObjectReader_1 = __webpack_require__(50);
var BaseReader_1 = __webpack_require__(305);
var js_yaml_1 = __webpack_require__(414);
/**
* Parses XML nodes from a YAML string.
*/
var YAMLReader = /** @class */ (function (_super) {
__extends(YAMLReader, _super);
function YAMLReader() {
return _super !== null && _super.apply(this, arguments) || this;
}
/**
* Parses the given document representation.
*
* @param node - node receive parsed XML nodes
* @param str - YAML string to parse
*/
YAMLReader.prototype._parse = function (node, str) {
var result = js_yaml_1.safeLoad(str);
/* istanbul ignore next */
if (result === undefined) {
throw new Error("Unable to parse YAML document.");
}
return new ObjectReader_1.ObjectReader(this._builderOptions).parse(node, result);
};
return YAMLReader;
}(BaseReader_1.BaseReader));
exports.YAMLReader = YAMLReader;
//# sourceMappingURL=YAMLReader.js.map
/***/ }),
/* 866 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var interfaces_1 = __webpack_require__(970);
var NodeImpl_1 = __webpack_require__(935);
var algorithm_1 = __webpack_require__(163);
var WebIDLAlgorithm_1 = __webpack_require__(495);
/**
* Represents an attribute of an element node.
*/
var AttrImpl = /** @class */ (function (_super) {
__extends(AttrImpl, _super);
/**
* Initializes a new instance of `Attr`.
*
* @param localName - local name
*/
function AttrImpl(localName) {
var _this = _super.call(this) || this;
_this._namespace = null;
_this._namespacePrefix = null;
_this._element = null;
_this._value = '';
_this._localName = localName;
return _this;
}
Object.defineProperty(AttrImpl.prototype, "ownerElement", {
/** @inheritdoc */
get: function () { return this._element; },
enumerable: true,
configurable: true
});
Object.defineProperty(AttrImpl.prototype, "namespaceURI", {
/** @inheritdoc */
get: function () { return this._namespace; },
enumerable: true,
configurable: true
});
Object.defineProperty(AttrImpl.prototype, "prefix", {
/** @inheritdoc */
get: function () { return this._namespacePrefix; },
enumerable: true,
configurable: true
});
Object.defineProperty(AttrImpl.prototype, "localName", {
/** @inheritdoc */
get: function () { return this._localName; },
enumerable: true,
configurable: true
});
Object.defineProperty(AttrImpl.prototype, "name", {
/** @inheritdoc */
get: function () { return this._qualifiedName; },
enumerable: true,
configurable: true
});
Object.defineProperty(AttrImpl.prototype, "value", {
/** @inheritdoc */
get: function () { return this._value; },
set: function (value) {
/**
* The value attributes setter must set an existing attribute value with
* context object and the given value.
*/
algorithm_1.attr_setAnExistingAttributeValue(this, value);
},
enumerable: true,
configurable: true
});
Object.defineProperty(AttrImpl.prototype, "_qualifiedName", {
/**
* Returns the qualified name.
*/
get: function () {
/**
* An attributes qualified name is its local name if its namespace prefix
* is null, and its namespace prefix, followed by ":", followed by its
* local name, otherwise.
*/
return (this._namespacePrefix !== null ?
this._namespacePrefix + ':' + this._localName :
this._localName);
},
enumerable: true,
configurable: true
});
/**
* Creates an `Attr`.
*
* @param document - owner document
* @param localName - local name
*/
AttrImpl._create = function (document, localName) {
var node = new AttrImpl(localName);
node._nodeDocument = document;
return node;
};
return AttrImpl;
}(NodeImpl_1.NodeImpl));
exports.AttrImpl = AttrImpl;
/**
* Initialize prototype properties
*/
WebIDLAlgorithm_1.idl_defineConst(AttrImpl.prototype, "_nodeType", interfaces_1.NodeType.Attribute);
WebIDLAlgorithm_1.idl_defineConst(AttrImpl.prototype, "specified", true);
//# sourceMappingURL=AttrImpl.js.map
/***/ }),
/* 867 */,
/* 868 */,
/* 869 */,
/* 870 */,
/* 871 */,
/* 872 */,
/* 873 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
var util_1 = __webpack_require__(918);
var interfaces_1 = __webpack_require__(970);
/**
* Gets the next descendant of the given node of the tree rooted at `root`
* in depth-first pre-order.
*
* @param root - root node of the tree
* @param node - a node
* @param shadow - whether to visit shadow tree nodes
*/
function _getNextDescendantNode(root, node, shadow) {
if (shadow === void 0) { shadow = false; }
// traverse shadow tree
if (shadow && util_1.Guard.isElementNode(node) && util_1.Guard.isShadowRoot(node.shadowRoot)) {
if (node.shadowRoot._firstChild)
return node.shadowRoot._firstChild;
}
// traverse child nodes
if (node._firstChild)
return node._firstChild;
if (node === root)
return null;
// traverse siblings
if (node._nextSibling)
return node._nextSibling;
// traverse parent's next sibling
var parent = node._parent;
while (parent && parent !== root) {
if (parent._nextSibling)
return parent._nextSibling;
parent = parent._parent;
}
return null;
}
function _emptyIterator() {
var _a;
return _a = {},
_a[Symbol.iterator] = function () {
return {
next: function () {
return { done: true, value: null };
}
};
},
_a;
}
/**
* Returns the first descendant node of the tree rooted at `node` in
* depth-first pre-order.
*
* @param node - root node of the tree
* @param self - whether to include `node` in traversal
* @param shadow - whether to visit shadow tree nodes
* @param filter - a function to filter nodes
*/
function tree_getFirstDescendantNode(node, self, shadow, filter) {
if (self === void 0) { self = false; }
if (shadow === void 0) { shadow = false; }
var firstNode = (self ? node : _getNextDescendantNode(node, node, shadow));
while (firstNode && filter && !filter(firstNode)) {
firstNode = _getNextDescendantNode(node, firstNode, shadow);
}
return firstNode;
}
exports.tree_getFirstDescendantNode = tree_getFirstDescendantNode;
/**
* Returns the next descendant node of the tree rooted at `node` in
* depth-first pre-order.
*
* @param node - root node of the tree
* @param currentNode - current descendant node
* @param self - whether to include `node` in traversal
* @param shadow - whether to visit shadow tree nodes
* @param filter - a function to filter nodes
*/
function tree_getNextDescendantNode(node, currentNode, self, shadow, filter) {
if (self === void 0) { self = false; }
if (shadow === void 0) { shadow = false; }
var nextNode = _getNextDescendantNode(node, currentNode, shadow);
while (nextNode && filter && !filter(nextNode)) {
nextNode = _getNextDescendantNode(node, nextNode, shadow);
}
return nextNode;
}
exports.tree_getNextDescendantNode = tree_getNextDescendantNode;
/**
* Traverses through all descendant nodes of the tree rooted at
* `node` in depth-first pre-order.
*
* @param node - root node of the tree
* @param self - whether to include `node` in traversal
* @param shadow - whether to visit shadow tree nodes
* @param filter - a function to filter nodes
*/
function tree_getDescendantNodes(node, self, shadow, filter) {
var _a;
if (self === void 0) { self = false; }
if (shadow === void 0) { shadow = false; }
if (!self && node._children.size === 0) {
return _emptyIterator();
}
return _a = {},
_a[Symbol.iterator] = function () {
var currentNode = (self ? node : _getNextDescendantNode(node, node, shadow));
return {
next: function () {
while (currentNode && filter && !filter(currentNode)) {
currentNode = _getNextDescendantNode(node, currentNode, shadow);
}
if (currentNode === null) {
return { done: true, value: null };
}
else {
var result = { done: false, value: currentNode };
currentNode = _getNextDescendantNode(node, currentNode, shadow);
return result;
}
}
};
},
_a;
}
exports.tree_getDescendantNodes = tree_getDescendantNodes;
/**
* Traverses through all descendant element nodes of the tree rooted at
* `node` in depth-first preorder.
*
* @param node - root node of the tree
* @param self - whether to include `node` in traversal
* @param shadow - whether to visit shadow tree nodes
* @param filter - a function to filter nodes
*/
function tree_getDescendantElements(node, self, shadow, filter) {
var _a;
if (self === void 0) { self = false; }
if (shadow === void 0) { shadow = false; }
if (!self && node._children.size === 0) {
return _emptyIterator();
}
return _a = {},
_a[Symbol.iterator] = function () {
var it = tree_getDescendantNodes(node, self, shadow, function (e) { return util_1.Guard.isElementNode(e); })[Symbol.iterator]();
var currentNode = it.next().value;
return {
next: function () {
while (currentNode && filter && !filter(currentNode)) {
currentNode = it.next().value;
}
if (currentNode === null) {
return { done: true, value: null };
}
else {
var result = { done: false, value: currentNode };
currentNode = it.next().value;
return result;
}
}
};
},
_a;
}
exports.tree_getDescendantElements = tree_getDescendantElements;
/**
* Traverses through all sibling nodes of `node`.
*
* @param node - root node of the tree
* @param self - whether to include `node` in traversal
* @param filter - a function to filter nodes
*/
function tree_getSiblingNodes(node, self, filter) {
var _a;
if (self === void 0) { self = false; }
if (!node._parent || node._parent._children.size === 0) {
return _emptyIterator();
}
return _a = {},
_a[Symbol.iterator] = function () {
var currentNode = node._parent ? node._parent._firstChild : null;
return {
next: function () {
while (currentNode && (filter && !filter(currentNode) || (!self && currentNode === node))) {
currentNode = currentNode._nextSibling;
}
if (currentNode === null) {
return { done: true, value: null };
}
else {
var result = { done: false, value: currentNode };
currentNode = currentNode._nextSibling;
return result;
}
}
};
},
_a;
}
exports.tree_getSiblingNodes = tree_getSiblingNodes;
/**
* Gets the first ancestor of `node` in reverse tree order.
*
* @param node - root node of the tree
* @param self - whether to include `node` in traversal
* @param filter - a function to filter nodes
*/
function tree_getFirstAncestorNode(node, self, filter) {
if (self === void 0) { self = false; }
var firstNode = self ? node : node._parent;
while (firstNode && filter && !filter(firstNode)) {
firstNode = firstNode._parent;
}
return firstNode;
}
exports.tree_getFirstAncestorNode = tree_getFirstAncestorNode;
/**
* Gets the first ancestor of `node` in reverse tree order.
*
* @param node - root node of the tree
* @param self - whether to include `node` in traversal
* @param filter - a function to filter nodes
*/
function tree_getNextAncestorNode(node, currentNode, self, filter) {
if (self === void 0) { self = false; }
var nextNode = currentNode._parent;
while (nextNode && filter && !filter(nextNode)) {
nextNode = nextNode._parent;
}
return nextNode;
}
exports.tree_getNextAncestorNode = tree_getNextAncestorNode;
/**
* Traverses through all ancestor nodes `node` in reverse tree order.
*
* @param node - root node of the tree
* @param self - whether to include `node` in traversal
* @param filter - a function to filter nodes
*/
function tree_getAncestorNodes(node, self, filter) {
var _a;
if (self === void 0) { self = false; }
if (!self && !node._parent) {
return _emptyIterator();
}
return _a = {},
_a[Symbol.iterator] = function () {
var currentNode = tree_getFirstAncestorNode(node, self, filter);
return {
next: function () {
if (currentNode === null) {
return { done: true, value: null };
}
else {
var result = { done: false, value: currentNode };
currentNode = tree_getNextAncestorNode(node, currentNode, self, filter);
return result;
}
}
};
},
_a;
}
exports.tree_getAncestorNodes = tree_getAncestorNodes;
/**
* Returns the common ancestor of the given nodes.
*
* @param nodeA - a node
* @param nodeB - a node
*/
function tree_getCommonAncestor(nodeA, nodeB) {
if (nodeA === nodeB) {
return nodeA._parent;
}
// lists of parent nodes
var parentsA = [];
var parentsB = [];
var pA = tree_getFirstAncestorNode(nodeA, true);
while (pA !== null) {
parentsA.push(pA);
pA = tree_getNextAncestorNode(nodeA, pA, true);
}
var pB = tree_getFirstAncestorNode(nodeB, true);
while (pB !== null) {
parentsB.push(pB);
pB = tree_getNextAncestorNode(nodeB, pB, true);
}
// walk through parents backwards until they differ
var pos1 = parentsA.length;
var pos2 = parentsB.length;
var parent = null;
for (var i = Math.min(pos1, pos2); i > 0; i--) {
var parent1 = parentsA[--pos1];
var parent2 = parentsB[--pos2];
if (parent1 !== parent2) {
break;
}
parent = parent1;
}
return parent;
}
exports.tree_getCommonAncestor = tree_getCommonAncestor;
/**
* Returns the node following `node` in depth-first preorder.
*
* @param root - root of the subtree
* @param node - a node
*/
function tree_getFollowingNode(root, node) {
if (node._firstChild) {
return node._firstChild;
}
else if (node._nextSibling) {
return node._nextSibling;
}
else {
while (true) {
var parent = node._parent;
if (parent === null || parent === root) {
return null;
}
else if (parent._nextSibling) {
return parent._nextSibling;
}
else {
node = parent;
}
}
}
}
exports.tree_getFollowingNode = tree_getFollowingNode;
/**
* Returns the node preceding `node` in depth-first preorder.
*
* @param root - root of the subtree
* @param node - a node
*/
function tree_getPrecedingNode(root, node) {
if (node === root) {
return null;
}
if (node._previousSibling) {
node = node._previousSibling;
if (node._lastChild) {
return node._lastChild;
}
else {
return node;
}
}
else {
return node._parent;
}
}
exports.tree_getPrecedingNode = tree_getPrecedingNode;
/**
* Determines if the node tree is constrained. A node tree is
* constrained as follows, expressed as a relationship between the
* type of node and its allowed children:
* - Document (In tree order)
* * Zero or more nodes each of which is ProcessingInstruction
* or Comment.
* * Optionally one DocumentType node.
* * Zero or more nodes each of which is ProcessingInstruction
* or Comment.
* * Optionally one Element node.
* * Zero or more nodes each of which is ProcessingInstruction
* or Comment.
* - DocumentFragment, Element
* * Zero or more nodes each of which is Element, Text,
* ProcessingInstruction, or Comment.
* - DocumentType, Text, ProcessingInstruction, Comment
* * None.
*
* @param node - the root of the tree
*/
function tree_isConstrained(node) {
var e_1, _a, e_2, _b, e_3, _c;
switch (node._nodeType) {
case interfaces_1.NodeType.Document:
var hasDocType = false;
var hasElement = false;
try {
for (var _d = __values(node._children), _e = _d.next(); !_e.done; _e = _d.next()) {
var childNode = _e.value;
switch (childNode._nodeType) {
case interfaces_1.NodeType.ProcessingInstruction:
case interfaces_1.NodeType.Comment:
break;
case interfaces_1.NodeType.DocumentType:
if (hasDocType || hasElement)
return false;
hasDocType = true;
break;
case interfaces_1.NodeType.Element:
if (hasElement)
return false;
hasElement = true;
break;
default:
return false;
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
}
finally { if (e_1) throw e_1.error; }
}
break;
case interfaces_1.NodeType.DocumentFragment:
case interfaces_1.NodeType.Element:
try {
for (var _f = __values(node._children), _g = _f.next(); !_g.done; _g = _f.next()) {
var childNode = _g.value;
switch (childNode._nodeType) {
case interfaces_1.NodeType.Element:
case interfaces_1.NodeType.Text:
case interfaces_1.NodeType.ProcessingInstruction:
case interfaces_1.NodeType.CData:
case interfaces_1.NodeType.Comment:
break;
default:
return false;
}
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
}
finally { if (e_2) throw e_2.error; }
}
break;
case interfaces_1.NodeType.DocumentType:
case interfaces_1.NodeType.Text:
case interfaces_1.NodeType.ProcessingInstruction:
case interfaces_1.NodeType.CData:
case interfaces_1.NodeType.Comment:
return (!node.hasChildNodes());
}
try {
for (var _h = __values(node._children), _j = _h.next(); !_j.done; _j = _h.next()) {
var childNode = _j.value;
// recursively check child nodes
if (!tree_isConstrained(childNode))
return false;
}
}
catch (e_3_1) { e_3 = { error: e_3_1 }; }
finally {
try {
if (_j && !_j.done && (_c = _h.return)) _c.call(_h);
}
finally { if (e_3) throw e_3.error; }
}
return true;
}
exports.tree_isConstrained = tree_isConstrained;
/**
* Returns the length of a node.
*
* @param node - a node to check
*/
function tree_nodeLength(node) {
/**
* To determine the length of a node node, switch on node:
* - DocumentType
* Zero.
* - Text
* - ProcessingInstruction
* - Comment
* Its datas length.
* - Any other node
* Its number of children.
*/
if (util_1.Guard.isDocumentTypeNode(node)) {
return 0;
}
else if (util_1.Guard.isCharacterDataNode(node)) {
return node._data.length;
}
else {
return node._children.size;
}
}
exports.tree_nodeLength = tree_nodeLength;
/**
* Determines if a node is empty.
*
* @param node - a node to check
*/
function tree_isEmpty(node) {
/**
* A node is considered empty if its length is zero.
*/
return (tree_nodeLength(node) === 0);
}
exports.tree_isEmpty = tree_isEmpty;
/**
* Returns the root node of a tree. The root of an object is itself,
* if its parent is `null`, or else it is the root of its parent.
* The root of a tree is any object participating in that tree
* whose parent is `null`.
*
* @param node - a node of the tree
* @param shadow - `true` to return shadow-including root, otherwise
* `false`
*/
function tree_rootNode(node, shadow) {
if (shadow === void 0) { shadow = false; }
/**
* The root of an object is itself, if its parent is null, or else it is the
* root of its parent. The root of a tree is any object participating in
* that tree whose parent is null.
*/
if (shadow) {
var root = tree_rootNode(node, false);
if (util_1.Guard.isShadowRoot(root))
return tree_rootNode(root._host, true);
else
return root;
}
else {
if (!node._parent)
return node;
else
return tree_rootNode(node._parent);
}
}
exports.tree_rootNode = tree_rootNode;
/**
* Determines whether `other` is a descendant of `node`. An object
* A is called a descendant of an object B, if either A is a child
* of B or A is a child of an object C that is a descendant of B.
*
* @param node - a node
* @param other - the node to check
* @param self - if `true`, traversal includes `node` itself
* @param shadow - if `true`, traversal includes the
* node's and its descendant's shadow trees as well.
*/
function tree_isDescendantOf(node, other, self, shadow) {
if (self === void 0) { self = false; }
if (shadow === void 0) { shadow = false; }
/**
* An object A is called a descendant of an object B, if either A is a
* child of B or A is a child of an object C that is a descendant of B.
*
* An inclusive descendant is an object or one of its descendants.
*/
var child = tree_getFirstDescendantNode(node, self, shadow);
while (child !== null) {
if (child === other) {
return true;
}
child = tree_getNextDescendantNode(node, child, self, shadow);
}
return false;
}
exports.tree_isDescendantOf = tree_isDescendantOf;
/**
* Determines whether `other` is an ancestor of `node`. An object A
* is called an ancestor of an object B if and only if B is a
* descendant of A.
*
* @param node - a node
* @param other - the node to check
* @param self - if `true`, traversal includes `node` itself
* @param shadow - if `true`, traversal includes the
* node's and its descendant's shadow trees as well.
*/
function tree_isAncestorOf(node, other, self, shadow) {
if (self === void 0) { self = false; }
if (shadow === void 0) { shadow = false; }
var ancestor = self ? node : shadow && util_1.Guard.isShadowRoot(node) ?
node._host : node._parent;
while (ancestor !== null) {
if (ancestor === other)
return true;
ancestor = shadow && util_1.Guard.isShadowRoot(ancestor) ?
ancestor._host : ancestor._parent;
}
return false;
}
exports.tree_isAncestorOf = tree_isAncestorOf;
/**
* Determines whether `other` is a host-including ancestor of `node`. An
* object A is a host-including inclusive ancestor of an object B, if either
* A is an inclusive ancestor of B, or if Bs root has a non-null host and
* A is a host-including inclusive ancestor of Bs roots host.
*
* @param node - a node
* @param other - the node to check
* @param self - if `true`, traversal includes `node` itself
*/
function tree_isHostIncludingAncestorOf(node, other, self) {
if (self === void 0) { self = false; }
if (tree_isAncestorOf(node, other, self))
return true;
var root = tree_rootNode(node);
if (util_1.Guard.isDocumentFragmentNode(root) && root._host !== null &&
tree_isHostIncludingAncestorOf(root._host, other, self))
return true;
return false;
}
exports.tree_isHostIncludingAncestorOf = tree_isHostIncludingAncestorOf;
/**
* Determines whether `other` is a sibling of `node`. An object A is
* called a sibling of an object B, if and only if B and A share
* the same non-null parent.
*
* @param node - a node
* @param other - the node to check
* @param self - if `true`, traversal includes `node` itself
*/
function tree_isSiblingOf(node, other, self) {
if (self === void 0) { self = false; }
/**
* An object A is called a sibling of an object B, if and only if B and A
* share the same non-null parent.
*
* An inclusive sibling is an object or one of its siblings.
*/
if (node === other) {
if (self)
return true;
}
else {
return (node._parent !== null && node._parent === other._parent);
}
return false;
}
exports.tree_isSiblingOf = tree_isSiblingOf;
/**
* Determines whether `other` is preceding `node`. An object A is
* preceding an object B if A and B are in the same tree and A comes
* before B in tree order.
*
* @param node - a node
* @param other - the node to check
*/
function tree_isPreceding(node, other) {
/**
* An object A is preceding an object B if A and B are in the same tree and
* A comes before B in tree order.
*/
var nodePos = tree_treePosition(node);
var otherPos = tree_treePosition(other);
if (nodePos === -1 || otherPos === -1)
return false;
else if (tree_rootNode(node) !== tree_rootNode(other))
return false;
else
return otherPos < nodePos;
}
exports.tree_isPreceding = tree_isPreceding;
/**
* Determines whether `other` is following `node`. An object A is
* following an object B if A and B are in the same tree and A comes
* after B in tree order.
*
* @param node - a node
* @param other - the node to check
*/
function tree_isFollowing(node, other) {
/**
* An object A is following an object B if A and B are in the same tree and
* A comes after B in tree order.
*/
var nodePos = tree_treePosition(node);
var otherPos = tree_treePosition(other);
if (nodePos === -1 || otherPos === -1)
return false;
else if (tree_rootNode(node) !== tree_rootNode(other))
return false;
else
return otherPos > nodePos;
}
exports.tree_isFollowing = tree_isFollowing;
/**
* Determines whether `other` is the parent node of `node`.
*
* @param node - a node
* @param other - the node to check
*/
function tree_isParentOf(node, other) {
/**
* An object that participates in a tree has a parent, which is either
* null or an object, and has children, which is an ordered set of objects.
* An object A whose parent is object B is a child of B.
*/
return (node._parent === other);
}
exports.tree_isParentOf = tree_isParentOf;
/**
* Determines whether `other` is a child node of `node`.
*
* @param node - a node
* @param other - the node to check
*/
function tree_isChildOf(node, other) {
/**
* An object that participates in a tree has a parent, which is either
* null or an object, and has children, which is an ordered set of objects.
* An object A whose parent is object B is a child of B.
*/
return (other._parent === node);
}
exports.tree_isChildOf = tree_isChildOf;
/**
* Returns the previous sibling node of `node` or null if it has no
* preceding sibling.
*
* @param node
*/
function tree_previousSibling(node) {
/**
* The previous sibling of an object is its first preceding sibling or null
* if it has no preceding sibling.
*/
return node._previousSibling;
}
exports.tree_previousSibling = tree_previousSibling;
/**
* Returns the next sibling node of `node` or null if it has no
* following sibling.
*
* @param node
*/
function tree_nextSibling(node) {
/**
* The next sibling of an object is its first following sibling or null
* if it has no following sibling.
*/
return node._nextSibling;
}
exports.tree_nextSibling = tree_nextSibling;
/**
* Returns the first child node of `node` or null if it has no
* children.
*
* @param node
*/
function tree_firstChild(node) {
/**
* The first child of an object is its first child or null if it has no
* children.
*/
return node._firstChild;
}
exports.tree_firstChild = tree_firstChild;
/**
* Returns the last child node of `node` or null if it has no
* children.
*
* @param node
*/
function tree_lastChild(node) {
/**
* The last child of an object is its last child or null if it has no
* children.
*/
return node._lastChild;
}
exports.tree_lastChild = tree_lastChild;
/**
* Returns the zero-based index of `node` when counted preorder in
* the tree rooted at `root`. Returns `-1` if `node` is not in
* the tree.
*
* @param node - the node to get the index of
*/
function tree_treePosition(node) {
var root = tree_rootNode(node);
var pos = 0;
var childNode = tree_getFirstDescendantNode(root);
while (childNode !== null) {
pos++;
if (childNode === node)
return pos;
childNode = tree_getNextDescendantNode(root, childNode);
}
return -1;
}
exports.tree_treePosition = tree_treePosition;
/**
* Determines the index of `node`. The index of an object is its number of
* preceding siblings, or 0 if it has none.
*
* @param node - a node
* @param other - the node to check
*/
function tree_index(node) {
/**
* The index of an object is its number of preceding siblings, or 0 if it
* has none.
*/
var n = 0;
while (node._previousSibling !== null) {
n++;
node = node._previousSibling;
}
return n;
}
exports.tree_index = tree_index;
/**
* Retargets an object against another object.
*
* @param a - an object to retarget
* @param b - an object to retarget against
*/
function tree_retarget(a, b) {
/**
* To retarget an object A against an object B, repeat these steps until
* they return an object:
* 1. If one of the following is true
* - A is not a node
* - A's root is not a shadow root
* - B is a node and A's root is a shadow-including inclusive ancestor
* of B
* then return A.
* 2. Set A to A's root's host.
*/
while (true) {
if (!a || !util_1.Guard.isNode(a)) {
return a;
}
var rootOfA = tree_rootNode(a);
if (!util_1.Guard.isShadowRoot(rootOfA)) {
return a;
}
if (b && util_1.Guard.isNode(b) && tree_isAncestorOf(rootOfA, b, true, true)) {
return a;
}
a = rootOfA.host;
}
}
exports.tree_retarget = tree_retarget;
//# sourceMappingURL=TreeAlgorithm.js.map
/***/ }),
/* 874 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const SemVer = __webpack_require__(65)
const compare = (a, b, loose) =>
new SemVer(a, loose).compare(new SemVer(b, loose))
module.exports = compare
/***/ }),
/* 875 */,
/* 876 */
/***/ (function(module, __unusedexports, __webpack_require__) {
// just pre-load all the stuff that index.js lazily exports
const internalRe = __webpack_require__(976)
module.exports = {
re: internalRe.re,
src: internalRe.src,
tokens: internalRe.t,
SEMVER_SPEC_VERSION: __webpack_require__(181).SEMVER_SPEC_VERSION,
SemVer: __webpack_require__(65),
compareIdentifiers: __webpack_require__(954).compareIdentifiers,
rcompareIdentifiers: __webpack_require__(954).rcompareIdentifiers,
parse: __webpack_require__(830),
valid: __webpack_require__(714),
clean: __webpack_require__(503),
inc: __webpack_require__(928),
diff: __webpack_require__(822),
major: __webpack_require__(744),
minor: __webpack_require__(803),
patch: __webpack_require__(489),
prerelease: __webpack_require__(650),
compare: __webpack_require__(874),
rcompare: __webpack_require__(630),
compareLoose: __webpack_require__(283),
compareBuild: __webpack_require__(16),
sort: __webpack_require__(120),
rsort: __webpack_require__(593),
gt: __webpack_require__(486),
lt: __webpack_require__(586),
eq: __webpack_require__(298),
neq: __webpack_require__(85),
gte: __webpack_require__(167),
lte: __webpack_require__(898),
cmp: __webpack_require__(752),
coerce: __webpack_require__(499),
Comparator: __webpack_require__(536),
Range: __webpack_require__(124),
satisfies: __webpack_require__(310),
toComparators: __webpack_require__(219),
maxSatisfying: __webpack_require__(14),
minSatisfying: __webpack_require__(890),
minVersion: __webpack_require__(960),
validRange: __webpack_require__(480),
outside: __webpack_require__(881),
gtr: __webpack_require__(531),
ltr: __webpack_require__(323),
intersects: __webpack_require__(259),
simplifyRange: __webpack_require__(877),
subset: __webpack_require__(999),
}
/***/ }),
/* 877 */
/***/ (function(module, __unusedexports, __webpack_require__) {
// given a set of versions and a range, create a "simplified" range
// that includes the same versions that the original range does
// If the original range is shorter than the simplified one, return that.
const satisfies = __webpack_require__(310)
const compare = __webpack_require__(874)
module.exports = (versions, range, options) => {
const set = []
let min = null
let prev = null
const v = versions.sort((a, b) => compare(a, b, options))
for (const version of v) {
const included = satisfies(version, range, options)
if (included) {
prev = version
if (!min)
min = version
} else {
if (prev) {
set.push([min, prev])
}
prev = null
min = null
}
}
if (min)
set.push([min, null])
const ranges = []
for (const [min, max] of set) {
if (min === max)
ranges.push(min)
else if (!max && min === v[0])
ranges.push('*')
else if (!max)
ranges.push(`>=${min}`)
else if (min === v[0])
ranges.push(`<=${max}`)
else
ranges.push(`${min} - ${max}`)
}
const simplified = ranges.join(' || ')
const original = typeof range.raw === 'string' ? range.raw : String(range)
return simplified.length < original.length ? simplified : range
}
/***/ }),
/* 878 */,
/* 879 */,
/* 880 */,
/* 881 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const SemVer = __webpack_require__(65)
const Comparator = __webpack_require__(536)
const {ANY} = Comparator
const Range = __webpack_require__(124)
const satisfies = __webpack_require__(310)
const gt = __webpack_require__(486)
const lt = __webpack_require__(586)
const lte = __webpack_require__(898)
const gte = __webpack_require__(167)
const outside = (version, range, hilo, options) => {
version = new SemVer(version, options)
range = new Range(range, options)
let gtfn, ltefn, ltfn, comp, ecomp
switch (hilo) {
case '>':
gtfn = gt
ltefn = lte
ltfn = lt
comp = '>'
ecomp = '>='
break
case '<':
gtfn = lt
ltefn = gte
ltfn = gt
comp = '<'
ecomp = '<='
break
default:
throw new TypeError('Must provide a hilo val of "<" or ">"')
}
// If it satisfies the range it is not outside
if (satisfies(version, range, options)) {
return false
}
// From now on, variable terms are as if we're in "gtr" mode.
// but note that everything is flipped for the "ltr" function.
for (let i = 0; i < range.set.length; ++i) {
const comparators = range.set[i]
let high = null
let low = null
comparators.forEach((comparator) => {
if (comparator.semver === ANY) {
comparator = new Comparator('>=0.0.0')
}
high = high || comparator
low = low || comparator
if (gtfn(comparator.semver, high.semver, options)) {
high = comparator
} else if (ltfn(comparator.semver, low.semver, options)) {
low = comparator
}
})
// If the edge version comparator has a operator then our version
// isn't outside it
if (high.operator === comp || high.operator === ecomp) {
return false
}
// If the lowest version comparator has an operator and our version
// is less than it then it isn't higher than the range
if ((!low.operator || low.operator === comp) &&
ltefn(version, low.semver)) {
return false
} else if (low.operator === ecomp && ltfn(version, low.semver)) {
return false
}
}
return true
}
module.exports = outside
/***/ }),
/* 882 */,
/* 883 */,
/* 884 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.deleteKey = exports.importKey = exports.PRIVATE_KEY_FILE = void 0;
const fs = __importStar(__webpack_require__(747));
const path = __importStar(__webpack_require__(622));
const io = __importStar(__webpack_require__(1));
const exec = __importStar(__webpack_require__(986));
const util = __importStar(__webpack_require__(322));
exports.PRIVATE_KEY_FILE = path.join(util.getTempDir(), 'private-key.asc');
const PRIVATE_KEY_FINGERPRINT_REGEX = /\w{40}/;
function importKey(privateKey) {
return __awaiter(this, void 0, void 0, function* () {
fs.writeFileSync(exports.PRIVATE_KEY_FILE, privateKey, {
encoding: 'utf-8',
flag: 'w'
});
let output = '';
const options = {
silent: true,
listeners: {
stdout: (data) => {
output += data.toString();
}
}
};
yield exec.exec('gpg', ['--batch', '--import-options', 'import-show', '--import', exports.PRIVATE_KEY_FILE], options);
yield io.rmRF(exports.PRIVATE_KEY_FILE);
const match = output.match(PRIVATE_KEY_FINGERPRINT_REGEX);
return match && match[0];
});
}
exports.importKey = importKey;
function deleteKey(keyFingerprint) {
return __awaiter(this, void 0, void 0, function* () {
yield exec.exec('gpg', ['--batch', '--yes', '--delete-secret-keys', keyFingerprint], {
silent: true
});
yield exec.exec('gpg', ['--batch', '--yes', '--delete-keys', keyFingerprint], { silent: true });
});
}
exports.deleteKey = deleteKey;
/***/ }),
/* 885 */,
/* 886 */,
/* 887 */,
/* 888 */,
/* 889 */
/***/ (function(__unusedmodule, exports) {
"use strict";
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Represents a cache of objects with a size limit.
*/
var ObjectCache = /** @class */ (function () {
/**
* Initializes a new instance of `ObjectCache`.
*
* @param limit - maximum number of items to keep in the cache. When the limit
* is exceeded the first item is removed from the cache.
*/
function ObjectCache(limit) {
if (limit === void 0) { limit = 1000; }
this._items = new Map();
this._limit = limit;
}
/**
* Gets an item from the cache.
*
* @param key - object key
*/
ObjectCache.prototype.get = function (key) {
return this._items.get(key);
};
/**
* Adds a new item to the cache.
*
* @param key - object key
* @param value - object value
*/
ObjectCache.prototype.set = function (key, value) {
this._items.set(key, value);
if (this._items.size > this._limit) {
var it_1 = this._items.keys().next();
/* istanbul ignore else */
if (!it_1.done) {
this._items.delete(it_1.value);
}
}
};
/**
* Removes an item from the cache.
*
* @param item - an item
*/
ObjectCache.prototype.delete = function (key) {
return this._items.delete(key);
};
/**
* Determines if an item is in the cache.
*
* @param item - an item
*/
ObjectCache.prototype.has = function (key) {
return this._items.has(key);
};
/**
* Removes all items from the cache.
*/
ObjectCache.prototype.clear = function () {
this._items.clear();
};
Object.defineProperty(ObjectCache.prototype, "size", {
/**
* Gets the number of items in the cache.
*/
get: function () { return this._items.size; },
enumerable: true,
configurable: true
});
/**
* Applies the given callback function to all elements of the cache.
*/
ObjectCache.prototype.forEach = function (callback, thisArg) {
this._items.forEach(function (v, k) { return callback.call(thisArg, k, v); });
};
/**
* Iterates through the items in the set.
*/
ObjectCache.prototype.keys = function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [5 /*yield**/, __values(this._items.keys())];
case 1:
_a.sent();
return [2 /*return*/];
}
});
};
/**
* Iterates through the items in the set.
*/
ObjectCache.prototype.values = function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [5 /*yield**/, __values(this._items.values())];
case 1:
_a.sent();
return [2 /*return*/];
}
});
};
/**
* Iterates through the items in the set.
*/
ObjectCache.prototype.entries = function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [5 /*yield**/, __values(this._items.entries())];
case 1:
_a.sent();
return [2 /*return*/];
}
});
};
/**
* Iterates through the items in the set.
*/
ObjectCache.prototype[Symbol.iterator] = function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [5 /*yield**/, __values(this._items)];
case 1:
_a.sent();
return [2 /*return*/];
}
});
};
Object.defineProperty(ObjectCache.prototype, Symbol.toStringTag, {
/**
* Returns the string tag of the cache.
*/
get: function () {
return "ObjectCache";
},
enumerable: true,
configurable: true
});
return ObjectCache;
}());
exports.ObjectCache = ObjectCache;
//# sourceMappingURL=ObjectCache.js.map
/***/ }),
/* 890 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const SemVer = __webpack_require__(65)
const Range = __webpack_require__(124)
const minSatisfying = (versions, range, options) => {
let min = null
let minSV = null
let rangeObj = null
try {
rangeObj = new Range(range, options)
} catch (er) {
return null
}
versions.forEach((v) => {
if (rangeObj.test(v)) {
// satisfies(v, range, options)
if (!min || minSV.compare(v) === 1) {
// compare(min, v, true)
min = v
minSV = new SemVer(min, options)
}
}
})
return min
}
module.exports = minSatisfying
/***/ }),
/* 891 */,
/* 892 */,
/* 893 */,
/* 894 */,
/* 895 */,
/* 896 */,
/* 897 */,
/* 898 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const compare = __webpack_require__(874)
const lte = (a, b, loose) => compare(a, b, loose) <= 0
module.exports = lte
/***/ }),
/* 899 */,
/* 900 */,
/* 901 */,
/* 902 */,
/* 903 */,
/* 904 */,
/* 905 */,
/* 906 */,
/* 907 */,
/* 908 */,
/* 909 */,
/* 910 */
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
// JS-YAML's default schema for `load` function.
// It is not described in the YAML specification.
//
// This schema is based on JS-YAML's default safe schema and includes
// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.
//
// Also this schema is used as default base schema at `Schema.create` function.
var Schema = __webpack_require__(733);
module.exports = Schema.DEFAULT = new Schema({
include: [
__webpack_require__(723)
],
explicit: [
__webpack_require__(386),
__webpack_require__(629),
__webpack_require__(352)
]
});
/***/ }),
/* 911 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
var interfaces_1 = __webpack_require__(172);
/**
* Represents a lexer for XML content in a string.
*/
var XMLStringLexer = /** @class */ (function () {
/**
* Initializes a new instance of `XMLStringLexer`.
*
* @param str - the string to tokenize and lex
* @param options - lexer options
*/
function XMLStringLexer(str, options) {
this._options = {
skipWhitespaceOnlyText: false
};
this.err = { line: -1, col: -1, index: -1, str: "" };
this._str = str;
this._index = 0;
this._length = str.length;
if (options) {
this._options.skipWhitespaceOnlyText = options.skipWhitespaceOnlyText || false;
}
}
/**
* Returns the next token.
*/
XMLStringLexer.prototype.nextToken = function () {
if (this.eof()) {
return { type: interfaces_1.TokenType.EOF };
}
var token = (this.skipIfStartsWith('<') ? this.openBracket() : this.text());
if (this._options.skipWhitespaceOnlyText) {
if (token.type === interfaces_1.TokenType.Text &&
XMLStringLexer.isWhiteSpaceToken(token)) {
token = this.nextToken();
}
}
return token;
};
/**
* Branches from an opening bracket (`<`).
*/
XMLStringLexer.prototype.openBracket = function () {
if (this.skipIfStartsWith('?')) {
if (this.skipIfStartsWith('xml')) {
if (XMLStringLexer.isSpace(this._str[this._index])) {
return this.declaration();
}
else {
// a processing instruction starting with xml. e.g. <?xml-stylesheet href="doc.xsl" type="text/xsl"?>
this.seek(-3);
return this.pi();
}
}
else {
return this.pi();
}
}
else if (this.skipIfStartsWith('!')) {
if (this.skipIfStartsWith('--')) {
return this.comment();
}
else if (this.skipIfStartsWith('[CDATA[')) {
return this.cdata();
}
else if (this.skipIfStartsWith('DOCTYPE')) {
return this.doctype();
}
else {
this.throwError("Invalid '!' in opening tag.");
}
}
else if (this.skipIfStartsWith('/')) {
return this.closeTag();
}
else {
return this.openTag();
}
};
/**
* Produces an XML declaration token.
*/
XMLStringLexer.prototype.declaration = function () {
var version = '';
var encoding = '';
var standalone = '';
while (!this.eof()) {
this.skipSpace();
if (this.skipIfStartsWith('?>')) {
return { type: interfaces_1.TokenType.Declaration, version: version, encoding: encoding, standalone: standalone };
}
else {
// attribute name
var _a = __read(this.attribute(), 2), attName = _a[0], attValue = _a[1];
if (attName === 'version')
version = attValue;
else if (attName === 'encoding')
encoding = attValue;
else if (attName === 'standalone')
standalone = attValue;
else
this.throwError('Invalid attribute name: ' + attName);
}
}
this.throwError('Missing declaration end symbol `?>`');
};
/**
* Produces a doc type token.
*/
XMLStringLexer.prototype.doctype = function () {
var pubId = '';
var sysId = '';
// name
this.skipSpace();
var name = this.takeUntil2('[', '>', true);
this.skipSpace();
if (this.skipIfStartsWith('PUBLIC')) {
pubId = this.quotedString();
sysId = this.quotedString();
}
else if (this.skipIfStartsWith('SYSTEM')) {
sysId = this.quotedString();
}
// skip internal subset
this.skipSpace();
if (this.skipIfStartsWith('[')) {
// skip internal subset nodes
this.skipUntil(']');
if (!this.skipIfStartsWith(']')) {
this.throwError('Missing end bracket of DTD internal subset');
}
}
this.skipSpace();
if (!this.skipIfStartsWith('>')) {
this.throwError('Missing doctype end symbol `>`');
}
return { type: interfaces_1.TokenType.DocType, name: name, pubId: pubId, sysId: sysId };
};
/**
* Produces a processing instruction token.
*/
XMLStringLexer.prototype.pi = function () {
var target = this.takeUntilStartsWith('?>', true);
if (this.eof()) {
this.throwError('Missing processing instruction end symbol `?>`');
}
this.skipSpace();
if (this.skipIfStartsWith('?>')) {
return { type: interfaces_1.TokenType.PI, target: target, data: '' };
}
var data = this.takeUntilStartsWith('?>');
if (this.eof()) {
this.throwError('Missing processing instruction end symbol `?>`');
}
this.seek(2);
return { type: interfaces_1.TokenType.PI, target: target, data: data };
};
/**
* Produces a text token.
*
*/
XMLStringLexer.prototype.text = function () {
var data = this.takeUntil('<');
return { type: interfaces_1.TokenType.Text, data: data };
};
/**
* Produces a comment token.
*
*/
XMLStringLexer.prototype.comment = function () {
var data = this.takeUntilStartsWith('-->');
if (this.eof()) {
this.throwError('Missing comment end symbol `-->`');
}
this.seek(3);
return { type: interfaces_1.TokenType.Comment, data: data };
};
/**
* Produces a CDATA token.
*
*/
XMLStringLexer.prototype.cdata = function () {
var data = this.takeUntilStartsWith(']]>');
if (this.eof()) {
this.throwError('Missing CDATA end symbol `]>`');
}
this.seek(3);
return { type: interfaces_1.TokenType.CDATA, data: data };
};
/**
* Produces an element token.
*/
XMLStringLexer.prototype.openTag = function () {
// element name
this.skipSpace();
var name = this.takeUntil2('>', '/', true);
this.skipSpace();
if (this.skipIfStartsWith('>')) {
return { type: interfaces_1.TokenType.Element, name: name, attributes: [], selfClosing: false };
}
else if (this.skipIfStartsWith('/>')) {
return { type: interfaces_1.TokenType.Element, name: name, attributes: [], selfClosing: true };
}
// attributes
var attributes = [];
while (!this.eof()) {
// end tag
this.skipSpace();
if (this.skipIfStartsWith('>')) {
return { type: interfaces_1.TokenType.Element, name: name, attributes: attributes, selfClosing: false };
}
else if (this.skipIfStartsWith('/>')) {
return { type: interfaces_1.TokenType.Element, name: name, attributes: attributes, selfClosing: true };
}
var attr = this.attribute();
attributes.push(attr);
}
this.throwError('Missing opening element tag end symbol `>`');
};
/**
* Produces a closing tag token.
*
*/
XMLStringLexer.prototype.closeTag = function () {
this.skipSpace();
var name = this.takeUntil('>', true);
this.skipSpace();
if (!this.skipIfStartsWith('>')) {
this.throwError('Missing closing element tag end symbol `>`');
}
return { type: interfaces_1.TokenType.ClosingTag, name: name };
};
/**
* Reads an attribute name, value pair
*/
XMLStringLexer.prototype.attribute = function () {
// attribute name
this.skipSpace();
var name = this.takeUntil('=', true);
this.skipSpace();
if (!this.skipIfStartsWith('=')) {
this.throwError('Missing equals sign before attribute value');
}
// attribute value
var value = this.quotedString();
return [name, value];
};
/**
* Reads a string between double or single quotes.
*/
XMLStringLexer.prototype.quotedString = function () {
this.skipSpace();
var startQuote = this.take(1);
if (!XMLStringLexer.isQuote(startQuote)) {
this.throwError('Missing start quote character before quoted value');
}
var value = this.takeUntil(startQuote);
if (!this.skipIfStartsWith(startQuote)) {
this.throwError('Missing end quote character after quoted value');
}
return value;
};
/**
* Determines if the current index is at or past the end of input string.
*/
XMLStringLexer.prototype.eof = function () { return this._index >= this._length; };
/**
* Skips the length of the given string if the string from current position
* starts with the given string.
*
* @param str - the string to match
*/
XMLStringLexer.prototype.skipIfStartsWith = function (str) {
var strLength = str.length;
if (strLength === 1) {
if (this._str[this._index] === str) {
this._index++;
return true;
}
else {
return false;
}
}
for (var i = 0; i < strLength; i++) {
if (this._str[this._index + i] !== str[i])
return false;
}
this._index += strLength;
return true;
};
/**
* Seeks a number of character codes.
*
* @param count - number of characters to skip
*/
XMLStringLexer.prototype.seek = function (count) {
this._index += count;
if (this._index < 0)
this._index = 0;
if (this._index > this._length)
this._index = this._length;
};
/**
* Skips space characters.
*/
XMLStringLexer.prototype.skipSpace = function () {
while (!this.eof() && (XMLStringLexer.isSpace(this._str[this._index]))) {
this._index++;
}
};
/**
* Takes a given number of characters.
*
* @param count - character count
*/
XMLStringLexer.prototype.take = function (count) {
if (count === 1) {
return this._str[this._index++];
}
var startIndex = this._index;
this.seek(count);
return this._str.slice(startIndex, this._index);
};
/**
* Takes characters until the next character matches `char`.
*
* @param char - a character to match
* @param space - whether a space character stops iteration
*/
XMLStringLexer.prototype.takeUntil = function (char, space) {
if (space === void 0) { space = false; }
var startIndex = this._index;
while (this._index < this._length) {
var c = this._str[this._index];
if (c !== char && (!space || !XMLStringLexer.isSpace(c))) {
this._index++;
}
else {
break;
}
}
return this._str.slice(startIndex, this._index);
};
/**
* Takes characters until the next character matches `char1` or `char1`.
*
* @param char1 - a character to match
* @param char2 - a character to match
* @param space - whether a space character stops iteration
*/
XMLStringLexer.prototype.takeUntil2 = function (char1, char2, space) {
if (space === void 0) { space = false; }
var startIndex = this._index;
while (this._index < this._length) {
var c = this._str[this._index];
if (c !== char1 && c !== char2 && (!space || !XMLStringLexer.isSpace(c))) {
this._index++;
}
else {
break;
}
}
return this._str.slice(startIndex, this._index);
};
/**
* Takes characters until the next characters matches `str`.
*
* @param str - a string to match
* @param space - whether a space character stops iteration
*/
XMLStringLexer.prototype.takeUntilStartsWith = function (str, space) {
if (space === void 0) { space = false; }
var startIndex = this._index;
var strLength = str.length;
while (this._index < this._length) {
var match = true;
for (var i = 0; i < strLength; i++) {
var c = this._str[this._index + i];
var char = str[i];
if (space && XMLStringLexer.isSpace(c)) {
return this._str.slice(startIndex, this._index);
}
else if (c !== char) {
this._index++;
match = false;
break;
}
}
if (match)
return this._str.slice(startIndex, this._index);
}
this._index = this._length;
return this._str.slice(startIndex);
};
/**
* Skips characters until the next character matches `char`.
*
* @param char - a character to match
*/
XMLStringLexer.prototype.skipUntil = function (char) {
while (this._index < this._length) {
var c = this._str[this._index];
if (c !== char) {
this._index++;
}
else {
break;
}
}
};
/**
* Determines if the given token is entirely whitespace.
*
* @param token - the token to check
*/
XMLStringLexer.isWhiteSpaceToken = function (token) {
var str = token.data;
for (var i = 0; i < str.length; i++) {
var c = str[i];
if (c !== ' ' && c !== '\n' && c !== '\r' && c !== '\t' && c !== '\f')
return false;
}
return true;
};
/**
* Determines if the given character is whitespace.
*
* @param char - the character to check
*/
XMLStringLexer.isSpace = function (char) {
return char === ' ' || char === '\n' || char === '\r' || char === '\t';
};
/**
* Determines if the given character is a quote character.
*
* @param char - the character to check
*/
XMLStringLexer.isQuote = function (char) {
return (char === '"' || char === '\'');
};
/**
* Throws a parser error and records the line and column numbers in the parsed
* string.
*
* @param msg - error message
*/
XMLStringLexer.prototype.throwError = function (msg) {
var regexp = /\r\n|\r|\n/g;
var match = null;
var line = 0;
var firstNewLineIndex = 0;
var lastNewlineIndex = this._str.length;
while ((match = regexp.exec(this._str)) !== null) {
if (match === null)
break;
line++;
if (match.index < this._index)
firstNewLineIndex = regexp.lastIndex;
if (match.index > this._index) {
lastNewlineIndex = match.index;
break;
}
}
this.err = {
line: line,
col: this._index - firstNewLineIndex,
index: this._index,
str: this._str.substring(firstNewLineIndex, lastNewlineIndex)
};
throw new Error(msg + "\nIndex: " + this.err.index +
"\nLn: " + this.err.line + ", Col: " + this.err.col +
"\nInput: " + this.err.str);
};
/**
* Returns an iterator for the lexer.
*/
XMLStringLexer.prototype[Symbol.iterator] = function () {
this._index = 0;
return {
next: function () {
var token = this.nextToken();
if (token.type === interfaces_1.TokenType.EOF) {
return { done: true, value: null };
}
else {
return { done: false, value: token };
}
}.bind(this)
};
};
return XMLStringLexer;
}());
exports.XMLStringLexer = XMLStringLexer;
//# sourceMappingURL=XMLStringLexer.js.map
/***/ }),
/* 912 */,
/* 913 */
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
/*eslint-disable no-bitwise*/
var NodeBuffer;
try {
// A trick for browserified version, to not include `Buffer` shim
var _require = require;
NodeBuffer = _require('buffer').Buffer;
} catch (__) {}
var Type = __webpack_require__(945);
// [ 64, 65, 66 ] -> [ padding, CR, LF ]
var BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r';
function resolveYamlBinary(data) {
if (data === null) return false;
var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;
// Convert one by one.
for (idx = 0; idx < max; idx++) {
code = map.indexOf(data.charAt(idx));
// Skip CR/LF
if (code > 64) continue;
// Fail on illegal characters
if (code < 0) return false;
bitlen += 6;
}
// If there are any bits left, source was corrupted
return (bitlen % 8) === 0;
}
function constructYamlBinary(data) {
var idx, tailbits,
input = data.replace(/[\r\n=]/g, ''), // remove CR/LF & padding to simplify scan
max = input.length,
map = BASE64_MAP,
bits = 0,
result = [];
// Collect by 6*4 bits (3 bytes)
for (idx = 0; idx < max; idx++) {
if ((idx % 4 === 0) && idx) {
result.push((bits >> 16) & 0xFF);
result.push((bits >> 8) & 0xFF);
result.push(bits & 0xFF);
}
bits = (bits << 6) | map.indexOf(input.charAt(idx));
}
// Dump tail
tailbits = (max % 4) * 6;
if (tailbits === 0) {
result.push((bits >> 16) & 0xFF);
result.push((bits >> 8) & 0xFF);
result.push(bits & 0xFF);
} else if (tailbits === 18) {
result.push((bits >> 10) & 0xFF);
result.push((bits >> 2) & 0xFF);
} else if (tailbits === 12) {
result.push((bits >> 4) & 0xFF);
}
// Wrap into Buffer for NodeJS and leave Array for browser
if (NodeBuffer) {
// Support node 6.+ Buffer API when available
return NodeBuffer.from ? NodeBuffer.from(result) : new NodeBuffer(result);
}
return result;
}
function representYamlBinary(object /*, style*/) {
var result = '', bits = 0, idx, tail,
max = object.length,
map = BASE64_MAP;
// Convert every three bytes to 4 ASCII characters.
for (idx = 0; idx < max; idx++) {
if ((idx % 3 === 0) && idx) {
result += map[(bits >> 18) & 0x3F];
result += map[(bits >> 12) & 0x3F];
result += map[(bits >> 6) & 0x3F];
result += map[bits & 0x3F];
}
bits = (bits << 8) + object[idx];
}
// Dump tail
tail = max % 3;
if (tail === 0) {
result += map[(bits >> 18) & 0x3F];
result += map[(bits >> 12) & 0x3F];
result += map[(bits >> 6) & 0x3F];
result += map[bits & 0x3F];
} else if (tail === 2) {
result += map[(bits >> 10) & 0x3F];
result += map[(bits >> 4) & 0x3F];
result += map[(bits << 2) & 0x3F];
result += map[64];
} else if (tail === 1) {
result += map[(bits >> 2) & 0x3F];
result += map[(bits << 4) & 0x3F];
result += map[64];
result += map[64];
}
return result;
}
function isBinary(object) {
return NodeBuffer && NodeBuffer.isBuffer(object);
}
module.exports = new Type('tag:yaml.org,2002:binary', {
kind: 'scalar',
resolve: resolveYamlBinary,
construct: constructYamlBinary,
predicate: isBinary,
represent: representYamlBinary
});
/***/ }),
/* 914 */,
/* 915 */,
/* 916 */
/***/ (function(__unusedmodule, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.HTML = "http://www.w3.org/1999/xhtml";
exports.XML = "http://www.w3.org/XML/1998/namespace";
exports.XMLNS = "http://www.w3.org/2000/xmlns/";
exports.MathML = "http://www.w3.org/1998/Math/MathML";
exports.SVG = "http://www.w3.org/2000/svg";
exports.XLink = "http://www.w3.org/1999/xlink";
//# sourceMappingURL=Namespace.js.map
/***/ }),
/* 917 */,
/* 918 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Cast_1 = __webpack_require__(533);
exports.Cast = Cast_1.Cast;
var Guard_1 = __webpack_require__(783);
exports.Guard = Guard_1.Guard;
var EmptySet_1 = __webpack_require__(968);
exports.EmptySet = EmptySet_1.EmptySet;
//# sourceMappingURL=index.js.map
/***/ }),
/* 919 */,
/* 920 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var TextImpl_1 = __webpack_require__(820);
var interfaces_1 = __webpack_require__(970);
var WebIDLAlgorithm_1 = __webpack_require__(495);
/**
* Represents a CDATA node.
*/
var CDATASectionImpl = /** @class */ (function (_super) {
__extends(CDATASectionImpl, _super);
/**
* Initializes a new instance of `CDATASection`.
*
* @param data - node contents
*/
function CDATASectionImpl(data) {
return _super.call(this, data) || this;
}
/**
* Creates a new `CDATASection`.
*
* @param document - owner document
* @param data - node contents
*/
CDATASectionImpl._create = function (document, data) {
if (data === void 0) { data = ''; }
var node = new CDATASectionImpl(data);
node._nodeDocument = document;
return node;
};
return CDATASectionImpl;
}(TextImpl_1.TextImpl));
exports.CDATASectionImpl = CDATASectionImpl;
/**
* Initialize prototype properties
*/
WebIDLAlgorithm_1.idl_defineConst(CDATASectionImpl.prototype, "_nodeType", interfaces_1.NodeType.CData);
//# sourceMappingURL=CDATASectionImpl.js.map
/***/ }),
/* 921 */
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
var Type = __webpack_require__(945);
module.exports = new Type('tag:yaml.org,2002:seq', {
kind: 'sequence',
construct: function (data) { return data !== null ? data : []; }
});
/***/ }),
/* 922 */,
/* 923 */,
/* 924 */,
/* 925 */,
/* 926 */,
/* 927 */,
/* 928 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const SemVer = __webpack_require__(65)
const inc = (version, release, options, identifier) => {
if (typeof (options) === 'string') {
identifier = options
options = undefined
}
try {
return new SemVer(version, options).inc(release, identifier).version
} catch (er) {
return null
}
}
module.exports = inc
/***/ }),
/* 929 */,
/* 930 */,
/* 931 */,
/* 932 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var EventTargetImpl_1 = __webpack_require__(597);
var util_1 = __webpack_require__(592);
var algorithm_1 = __webpack_require__(163);
/**
* Represents a window containing a DOM document.
*/
var WindowImpl = /** @class */ (function (_super) {
__extends(WindowImpl, _super);
/**
* Initializes a new instance of `Window`.
*/
function WindowImpl() {
var _this = _super.call(this) || this;
_this._signalSlots = new Set();
_this._mutationObserverMicrotaskQueued = false;
_this._mutationObservers = new Set();
_this._iteratorList = new util_1.FixedSizeSet();
_this._associatedDocument = algorithm_1.create_document();
return _this;
}
Object.defineProperty(WindowImpl.prototype, "document", {
/** @inheritdoc */
get: function () { return this._associatedDocument; },
enumerable: true,
configurable: true
});
Object.defineProperty(WindowImpl.prototype, "event", {
/** @inheritdoc */
get: function () { return this._currentEvent; },
enumerable: true,
configurable: true
});
/**
* Creates a new window with a blank document.
*/
WindowImpl._create = function () {
return new WindowImpl();
};
return WindowImpl;
}(EventTargetImpl_1.EventTargetImpl));
exports.WindowImpl = WindowImpl;
//# sourceMappingURL=WindowImpl.js.map
/***/ }),
/* 933 */,
/* 934 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
var util_1 = __webpack_require__(918);
var algorithm_1 = __webpack_require__(163);
/**
* Represents a mixin that extends parent nodes that can have children.
* This mixin is implemented by {@link Element}, {@link Document} and
* {@link DocumentFragment}.
*/
var ParentNodeImpl = /** @class */ (function () {
function ParentNodeImpl() {
}
Object.defineProperty(ParentNodeImpl.prototype, "children", {
/** @inheritdoc */
get: function () {
/**
* The children attributes getter must return an HTMLCollection collection
* rooted at context object matching only element children.
*/
return algorithm_1.create_htmlCollection(util_1.Cast.asNode(this));
},
enumerable: true,
configurable: true
});
Object.defineProperty(ParentNodeImpl.prototype, "firstElementChild", {
/** @inheritdoc */
get: function () {
/**
* The firstElementChild attributes getter must return the first child
* that is an element, and null otherwise.
*/
var node = util_1.Cast.asNode(this)._firstChild;
while (node) {
if (util_1.Guard.isElementNode(node))
return node;
else
node = node._nextSibling;
}
return null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(ParentNodeImpl.prototype, "lastElementChild", {
/** @inheritdoc */
get: function () {
/**
* The lastElementChild attributes getter must return the last child that
* is an element, and null otherwise.
*/
var node = util_1.Cast.asNode(this)._lastChild;
while (node) {
if (util_1.Guard.isElementNode(node))
return node;
else
node = node._previousSibling;
}
return null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(ParentNodeImpl.prototype, "childElementCount", {
/** @inheritdoc */
get: function () {
var e_1, _a;
/**
* The childElementCount attributes getter must return the number of
* children of context object that are elements.
*/
var count = 0;
try {
for (var _b = __values(util_1.Cast.asNode(this)._children), _c = _b.next(); !_c.done; _c = _b.next()) {
var childNode = _c.value;
if (util_1.Guard.isElementNode(childNode))
count++;
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
return count;
},
enumerable: true,
configurable: true
});
/** @inheritdoc */
ParentNodeImpl.prototype.prepend = function () {
var nodes = [];
for (var _i = 0; _i < arguments.length; _i++) {
nodes[_i] = arguments[_i];
}
/**
* 1. Let node be the result of converting nodes into a node given nodes
* and context objects node document.
* 2. Pre-insert node into context object before the context objects first
* child.
*/
var node = util_1.Cast.asNode(this);
var childNode = algorithm_1.parentNode_convertNodesIntoANode(nodes, node._nodeDocument);
algorithm_1.mutation_preInsert(childNode, node, node._firstChild);
};
/** @inheritdoc */
ParentNodeImpl.prototype.append = function () {
var nodes = [];
for (var _i = 0; _i < arguments.length; _i++) {
nodes[_i] = arguments[_i];
}
/**
* 1. Let node be the result of converting nodes into a node given nodes
* and context objects node document.
* 2. Append node to context object.
*/
var node = util_1.Cast.asNode(this);
var childNode = algorithm_1.parentNode_convertNodesIntoANode(nodes, node._nodeDocument);
algorithm_1.mutation_append(childNode, node);
};
/** @inheritdoc */
ParentNodeImpl.prototype.querySelector = function (selectors) {
/**
* The querySelector(selectors) method, when invoked, must return the first
* result of running scope-match a selectors string selectors against
* context object, if the result is not an empty list, and null otherwise.
*/
var node = util_1.Cast.asNode(this);
var result = algorithm_1.selectors_scopeMatchASelectorsString(selectors, node);
return (result.length === 0 ? null : result[0]);
};
/** @inheritdoc */
ParentNodeImpl.prototype.querySelectorAll = function (selectors) {
/**
* The querySelectorAll(selectors) method, when invoked, must return the
* static result of running scope-match a selectors string selectors against
* context object.
*/
var node = util_1.Cast.asNode(this);
var result = algorithm_1.selectors_scopeMatchASelectorsString(selectors, node);
return algorithm_1.create_nodeListStatic(node, result);
};
return ParentNodeImpl;
}());
exports.ParentNodeImpl = ParentNodeImpl;
//# sourceMappingURL=ParentNodeImpl.js.map
/***/ }),
/* 935 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"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 (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
var DOMImpl_1 = __webpack_require__(648);
var interfaces_1 = __webpack_require__(970);
var EventTargetImpl_1 = __webpack_require__(597);
var util_1 = __webpack_require__(918);
var DOMException_1 = __webpack_require__(35);
var algorithm_1 = __webpack_require__(163);
var URLAlgorithm_1 = __webpack_require__(813);
var WebIDLAlgorithm_1 = __webpack_require__(495);
/**
* Represents a generic XML node.
*/
var NodeImpl = /** @class */ (function (_super) {
__extends(NodeImpl, _super);
/**
* Initializes a new instance of `Node`.
*/
function NodeImpl() {
var _this = _super.call(this) || this;
_this._parent = null;
_this._firstChild = null;
_this._lastChild = null;
_this._previousSibling = null;
_this._nextSibling = null;
return _this;
}
Object.defineProperty(NodeImpl.prototype, "_childNodes", {
get: function () {
return this.__childNodes || (this.__childNodes = algorithm_1.create_nodeList(this));
},
enumerable: true,
configurable: true
});
Object.defineProperty(NodeImpl.prototype, "_nodeDocument", {
get: function () { return this._nodeDocumentOverride || DOMImpl_1.dom.window._associatedDocument; },
set: function (val) { this._nodeDocumentOverride = val; },
enumerable: true,
configurable: true
});
Object.defineProperty(NodeImpl.prototype, "_registeredObserverList", {
get: function () {
return this.__registeredObserverList || (this.__registeredObserverList = []);
},
enumerable: true,
configurable: true
});
Object.defineProperty(NodeImpl.prototype, "nodeType", {
/** @inheritdoc */
get: function () { return this._nodeType; },
enumerable: true,
configurable: true
});
Object.defineProperty(NodeImpl.prototype, "nodeName", {
/**
* Returns a string appropriate for the type of node.
*/
get: function () {
if (util_1.Guard.isElementNode(this)) {
return this._htmlUppercasedQualifiedName;
}
else if (util_1.Guard.isAttrNode(this)) {
return this._qualifiedName;
}
else if (util_1.Guard.isExclusiveTextNode(this)) {
return "#text";
}
else if (util_1.Guard.isCDATASectionNode(this)) {
return "#cdata-section";
}
else if (util_1.Guard.isProcessingInstructionNode(this)) {
return this._target;
}
else if (util_1.Guard.isCommentNode(this)) {
return "#comment";
}
else if (util_1.Guard.isDocumentNode(this)) {
return "#document";
}
else if (util_1.Guard.isDocumentTypeNode(this)) {
return this._name;
}
else if (util_1.Guard.isDocumentFragmentNode(this)) {
return "#document-fragment";
}
else {
return "";
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(NodeImpl.prototype, "baseURI", {
/**
* Gets the absolute base URL of the node.
*/
get: function () {
/**
* The baseURI attributes getter must return node documents document
* base URL, serialized.
* TODO: Implement in HTML DOM
* https://html.spec.whatwg.org/multipage/urls-and-fetching.html#document-base-url
*/
return URLAlgorithm_1.urlSerializer(this._nodeDocument._URL);
},
enumerable: true,
configurable: true
});
Object.defineProperty(NodeImpl.prototype, "isConnected", {
/**
* Returns whether the node is rooted to a document node.
*/
get: function () {
/**
* The isConnected attributes getter must return true, if context object
* is connected, and false otherwise.
*/
return util_1.Guard.isElementNode(this) && algorithm_1.shadowTree_isConnected(this);
},
enumerable: true,
configurable: true
});
Object.defineProperty(NodeImpl.prototype, "ownerDocument", {
/**
* Returns the parent document.
*/
get: function () {
/**
* The ownerDocument attributes getter must return null, if the context
* object is a document, and the context objects node document otherwise.
* _Note:_ The node document of a document is that document itself. All
* nodes have a node document at all times.
*/
if (this._nodeType === interfaces_1.NodeType.Document)
return null;
else
return this._nodeDocument;
},
enumerable: true,
configurable: true
});
/**
* Returns the root node.
*
* @param options - if options has `composed = true` this function
* returns the node's shadow-including root, otherwise it returns
* the node's root node.
*/
NodeImpl.prototype.getRootNode = function (options) {
/**
* The getRootNode(options) method, when invoked, must return context
* objects shadow-including root if optionss composed is true,
* and context objects root otherwise.
*/
return algorithm_1.tree_rootNode(this, !!options && options.composed);
};
Object.defineProperty(NodeImpl.prototype, "parentNode", {
/**
* Returns the parent node.
*/
get: function () {
/**
* The parentNode attributes getter must return the context objects parent.
* _Note:_ An Attr node has no parent.
*/
if (this._nodeType === interfaces_1.NodeType.Attribute) {
return null;
}
else {
return this._parent;
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(NodeImpl.prototype, "parentElement", {
/**
* Returns the parent element.
*/
get: function () {
/**
* The parentElement attributes getter must return the context objects
* parent element.
*/
if (this._parent && util_1.Guard.isElementNode(this._parent)) {
return this._parent;
}
else {
return null;
}
},
enumerable: true,
configurable: true
});
/**
* Determines whether a node has any children.
*/
NodeImpl.prototype.hasChildNodes = function () {
/**
* The hasChildNodes() method, when invoked, must return true if the context
* object has children, and false otherwise.
*/
return (this._firstChild !== null);
};
Object.defineProperty(NodeImpl.prototype, "childNodes", {
/**
* Returns a {@link NodeList} of child nodes.
*/
get: function () {
/**
* The childNodes attributes getter must return a NodeList rooted at the
* context object matching only children.
*/
return this._childNodes;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NodeImpl.prototype, "firstChild", {
/**
* Returns the first child node.
*/
get: function () {
/**
* The firstChild attributes getter must return the context objects first
* child.
*/
return this._firstChild;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NodeImpl.prototype, "lastChild", {
/**
* Returns the last child node.
*/
get: function () {
/**
* The lastChild attributes getter must return the context objects last
* child.
*/
return this._lastChild;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NodeImpl.prototype, "previousSibling", {
/**
* Returns the previous sibling node.
*/
get: function () {
/**
* The previousSibling attributes getter must return the context objects
* previous sibling.
* _Note:_ An Attr node has no siblings.
*/
return this._previousSibling;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NodeImpl.prototype, "nextSibling", {
/**
* Returns the next sibling node.
*/
get: function () {
/**
* The nextSibling attributes getter must return the context objects
* next sibling.
*/
return this._nextSibling;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NodeImpl.prototype, "nodeValue", {
/**
* Gets or sets the data associated with a {@link CharacterData} node or the
* value of an {@link @Attr} node. For other node types returns `null`.
*/
get: function () {
if (util_1.Guard.isAttrNode(this)) {
return this._value;
}
else if (util_1.Guard.isCharacterDataNode(this)) {
return this._data;
}
else {
return null;
}
},
set: function (value) {
if (value === null) {
value = '';
}
if (util_1.Guard.isAttrNode(this)) {
algorithm_1.attr_setAnExistingAttributeValue(this, value);
}
else if (util_1.Guard.isCharacterDataNode(this)) {
algorithm_1.characterData_replaceData(this, 0, this._data.length, value);
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(NodeImpl.prototype, "textContent", {
/**
* Returns the concatenation of data of all the {@link Text}
* node descendants in tree order. When set, replaces the text
* contents of the node with the given value.
*/
get: function () {
if (util_1.Guard.isDocumentFragmentNode(this) || util_1.Guard.isElementNode(this)) {
return algorithm_1.text_descendantTextContent(this);
}
else if (util_1.Guard.isAttrNode(this)) {
return this._value;
}
else if (util_1.Guard.isCharacterDataNode(this)) {
return this._data;
}
else {
return null;
}
},
set: function (value) {
if (value === null) {
value = '';
}
if (util_1.Guard.isDocumentFragmentNode(this) || util_1.Guard.isElementNode(this)) {
algorithm_1.node_stringReplaceAll(value, this);
}
else if (util_1.Guard.isAttrNode(this)) {
algorithm_1.attr_setAnExistingAttributeValue(this, value);
}
else if (util_1.Guard.isCharacterDataNode(this)) {
algorithm_1.characterData_replaceData(this, 0, algorithm_1.tree_nodeLength(this), value);
}
},
enumerable: true,
configurable: true
});
/**
* Puts all {@link Text} nodes in the full depth of the sub-tree
* underneath this node into a "normal" form where only markup
* (e.g., tags, comments, processing instructions, CDATA sections,
* and entity references) separates {@link Text} nodes, i.e., there
* are no adjacent Text nodes.
*/
NodeImpl.prototype.normalize = function () {
var e_1, _a, e_2, _b;
/**
* The normalize() method, when invoked, must run these steps for each
* descendant exclusive Text node node of context object:
*/
var descendantNodes = [];
var node = algorithm_1.tree_getFirstDescendantNode(this, false, false, function (e) { return util_1.Guard.isExclusiveTextNode(e); });
while (node !== null) {
descendantNodes.push(node);
node = algorithm_1.tree_getNextDescendantNode(this, node, false, false, function (e) { return util_1.Guard.isExclusiveTextNode(e); });
}
for (var i = 0; i < descendantNodes.length; i++) {
var node_1 = descendantNodes[i];
if (node_1._parent === null)
continue;
/**
* 1. Let length be nodes length.
* 2. If length is zero, then remove node and continue with the next
* exclusive Text node, if any.
*/
var length = algorithm_1.tree_nodeLength(node_1);
if (length === 0) {
algorithm_1.mutation_remove(node_1, node_1._parent);
continue;
}
/**
* 3. Let data be the concatenation of the data of nodes contiguous
* exclusive Text nodes (excluding itself), in tree order.
*/
var textSiblings = [];
var data = '';
try {
for (var _c = (e_1 = void 0, __values(algorithm_1.text_contiguousExclusiveTextNodes(node_1))), _d = _c.next(); !_d.done; _d = _c.next()) {
var sibling = _d.value;
textSiblings.push(sibling);
data += sibling._data;
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
}
finally { if (e_1) throw e_1.error; }
}
/**
* 4. Replace data with node node, offset length, count 0, and data data.
*/
algorithm_1.characterData_replaceData(node_1, length, 0, data);
/**
* 5. Let currentNode be nodes next sibling.
* 6. While currentNode is an exclusive Text node:
*/
if (DOMImpl_1.dom.rangeList.size !== 0) {
var currentNode = node_1._nextSibling;
while (currentNode !== null && util_1.Guard.isExclusiveTextNode(currentNode)) {
/**
* 6.1. For each live range whose start node is currentNode, add length
* to its start offset and set its start node to node.
* 6.2. For each live range whose end node is currentNode, add length to
* its end offset and set its end node to node.
* 6.3. For each live range whose start node is currentNodes parent and
* start offset is currentNodes index, set its start node to node and
* its start offset to length.
* 6.4. For each live range whose end node is currentNodes parent and
* end offset is currentNodes index, set its end node to node and its
* end offset to length.
*/
var cn = currentNode;
var index = algorithm_1.tree_index(cn);
try {
for (var _e = (e_2 = void 0, __values(DOMImpl_1.dom.rangeList)), _f = _e.next(); !_f.done; _f = _e.next()) {
var range = _f.value;
if (range._start[0] === cn) {
range._start[0] = node_1;
range._start[1] += length;
}
if (range._end[0] === cn) {
range._end[0] = node_1;
range._end[1] += length;
}
if (range._start[0] === cn._parent && range._start[1] === index) {
range._start[0] = node_1;
range._start[1] = length;
}
if (range._end[0] === cn._parent && range._end[1] === index) {
range._end[0] = node_1;
range._end[1] = length;
}
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
}
finally { if (e_2) throw e_2.error; }
}
/**
* 6.5. Add currentNodes length to length.
* 6.6. Set currentNode to its next sibling.
*/
length += algorithm_1.tree_nodeLength(currentNode);
currentNode = currentNode._nextSibling;
}
}
/**
* 7. Remove nodes contiguous exclusive Text nodes (excluding itself),
* in tree order.
*/
for (var i_1 = 0; i_1 < textSiblings.length; i_1++) {
var sibling = textSiblings[i_1];
if (sibling._parent === null)
continue;
algorithm_1.mutation_remove(sibling, sibling._parent);
}
}
};
/**
* Returns a duplicate of this node, i.e., serves as a generic copy
* constructor for nodes. The duplicate node has no parent
* ({@link parentNode} returns `null`).
*
* @param deep - if `true`, recursively clone the subtree under the
* specified node. If `false`, clone only the node itself (and its
* attributes, if it is an {@link Element}).
*/
NodeImpl.prototype.cloneNode = function (deep) {
if (deep === void 0) { deep = false; }
/**
* 1. If context object is a shadow root, then throw a "NotSupportedError"
* DOMException.
* 2. Return a clone of the context object, with the clone children flag set
* if deep is true.
*/
if (util_1.Guard.isShadowRoot(this))
throw new DOMException_1.NotSupportedError();
return algorithm_1.node_clone(this, null, deep);
};
/**
* Determines if the given node is equal to this one.
*
* @param node - the node to compare with
*/
NodeImpl.prototype.isEqualNode = function (node) {
if (node === void 0) { node = null; }
/**
* The isEqualNode(otherNode) method, when invoked, must return true if
* otherNode is non-null and context object equals otherNode, and false
* otherwise.
*/
return (node !== null && algorithm_1.node_equals(this, node));
};
/**
* Determines if the given node is reference equal to this one.
*
* @param node - the node to compare with
*/
NodeImpl.prototype.isSameNode = function (node) {
if (node === void 0) { node = null; }
/**
* The isSameNode(otherNode) method, when invoked, must return true if
* otherNode is context object, and false otherwise.
*/
return (this === node);
};
/**
* Returns a bitmask indicating the position of the given `node`
* relative to this node.
*/
NodeImpl.prototype.compareDocumentPosition = function (other) {
/**
* 1. If context object is other, then return zero.
* 2. Let node1 be other and node2 be context object.
* 3. Let attr1 and attr2 be null.
* attr1s element.
*/
if (other === this)
return 0;
var node1 = other;
var node2 = this;
var attr1 = null;
var attr2 = null;
/**
* 4. If node1 is an attribute, then set attr1 to node1 and node1 to
* attr1s element.
*/
if (util_1.Guard.isAttrNode(node1)) {
attr1 = node1;
node1 = attr1._element;
}
/**
* 5. If node2 is an attribute, then:
*/
if (util_1.Guard.isAttrNode(node2)) {
/**
* 5.1. Set attr2 to node2 and node2 to attr2s element.
*/
attr2 = node2;
node2 = attr2._element;
/**
* 5.2. If attr1 and node1 are non-null, and node2 is node1, then:
*/
if (attr1 && node1 && (node1 === node2)) {
/**
* 5.2. For each attr in node2s attribute list:
*/
for (var i = 0; i < node2._attributeList.length; i++) {
var attr = node2._attributeList[i];
/**
* 5.2.1. If attr equals attr1, then return the result of adding
* DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC and
* DOCUMENT_POSITION_PRECEDING.
* 5.2.2. If attr equals attr2, then return the result of adding
* DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC and
* DOCUMENT_POSITION_FOLLOWING.
*/
if (algorithm_1.node_equals(attr, attr1)) {
return interfaces_1.Position.ImplementationSpecific | interfaces_1.Position.Preceding;
}
else if (algorithm_1.node_equals(attr, attr2)) {
return interfaces_1.Position.ImplementationSpecific | interfaces_1.Position.Following;
}
}
}
}
/**
* 6. If node1 or node2 is null, or node1s root is not node2s root, then
* return the result of adding DOCUMENT_POSITION_DISCONNECTED,
* DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, and either
* DOCUMENT_POSITION_PRECEDING or DOCUMENT_POSITION_FOLLOWING,
* with the constraint that this is to be consistent, together.
*/
if (node1 === null || node2 === null ||
algorithm_1.tree_rootNode(node1) !== algorithm_1.tree_rootNode(node2)) {
// nodes are disconnected
// return a random result but cache the value for consistency
return interfaces_1.Position.Disconnected | interfaces_1.Position.ImplementationSpecific |
(DOMImpl_1.dom.compareCache.check(this, other) ? interfaces_1.Position.Preceding : interfaces_1.Position.Following);
}
/**
* 7. If node1 is an ancestor of node2 and attr1 is null, or node1 is node2
* and attr2 is non-null, then return the result of adding
* DOCUMENT_POSITION_CONTAINS to DOCUMENT_POSITION_PRECEDING.
*/
if ((!attr1 && algorithm_1.tree_isAncestorOf(node2, node1)) ||
(attr2 && (node1 === node2))) {
return interfaces_1.Position.Contains | interfaces_1.Position.Preceding;
}
/**
* 8. If node1 is a descendant of node2 and attr2 is null, or node1 is node2
* and attr1 is non-null, then return the result of adding
* DOCUMENT_POSITION_CONTAINED_BY to DOCUMENT_POSITION_FOLLOWING.
*/
if ((!attr2 && algorithm_1.tree_isDescendantOf(node2, node1)) ||
(attr1 && (node1 === node2))) {
return interfaces_1.Position.ContainedBy | interfaces_1.Position.Following;
}
/**
* 9. If node1 is preceding node2, then return DOCUMENT_POSITION_PRECEDING.
*/
if (algorithm_1.tree_isPreceding(node2, node1))
return interfaces_1.Position.Preceding;
/**
* 10. Return DOCUMENT_POSITION_FOLLOWING.
*/
return interfaces_1.Position.Following;
};
/**
* Returns `true` if given node is an inclusive descendant of this
* node, and `false` otherwise (including when other node is `null`).
*
* @param other - the node to check
*/
NodeImpl.prototype.contains = function (other) {
/**
* The contains(other) method, when invoked, must return true if other is an
* inclusive descendant of context object, and false otherwise (including
* when other is null).
*/
if (other === null)
return false;
return algorithm_1.tree_isDescendantOf(this, other, true);
};
/**
* Returns the prefix for a given namespace URI, if present, and
* `null` if not.
*
* @param namespace - the namespace to search
*/
NodeImpl.prototype.lookupPrefix = function (namespace) {
/**
* 1. If namespace is null or the empty string, then return null.
* 2. Switch on the context object:
*/
if (!namespace)
return null;
if (util_1.Guard.isElementNode(this)) {
/**
* Return the result of locating a namespace prefix for it using
* namespace.
*/
return algorithm_1.node_locateANamespacePrefix(this, namespace);
}
else if (util_1.Guard.isDocumentNode(this)) {
/**
* Return the result of locating a namespace prefix for its document
* element, if its document element is non-null, and null otherwise.
*/
if (this.documentElement === null) {
return null;
}
else {
return algorithm_1.node_locateANamespacePrefix(this.documentElement, namespace);
}
}
else if (util_1.Guard.isDocumentTypeNode(this) || util_1.Guard.isDocumentFragmentNode(this)) {
return null;
}
else if (util_1.Guard.isAttrNode(this)) {
/**
* Return the result of locating a namespace prefix for its element,
* if its element is non-null, and null otherwise.
*/
if (this._element === null) {
return null;
}
else {
return algorithm_1.node_locateANamespacePrefix(this._element, namespace);
}
}
else {
/**
* Return the result of locating a namespace prefix for its parent
* element, if its parent element is non-null, and null otherwise.
*/
if (this._parent !== null && util_1.Guard.isElementNode(this._parent)) {
return algorithm_1.node_locateANamespacePrefix(this._parent, namespace);
}
else {
return null;
}
}
};
/**
* Returns the namespace URI for a given prefix if present, and `null`
* if not.
*
* @param prefix - the prefix to search
*/
NodeImpl.prototype.lookupNamespaceURI = function (prefix) {
/**
* 1. If prefix is the empty string, then set it to null.
* 2. Return the result of running locate a namespace for the context object
* using prefix.
*/
return algorithm_1.node_locateANamespace(this, prefix || null);
};
/**
* Returns `true` if the namespace is the default namespace on this
* node or `false` if not.
*
* @param namespace - the namespace to check
*/
NodeImpl.prototype.isDefaultNamespace = function (namespace) {
/**
* 1. If namespace is the empty string, then set it to null.
* 2. Let defaultNamespace be the result of running locate a namespace for
* context object using null.
* 3. Return true if defaultNamespace is the same as namespace, and false otherwise.
*/
if (!namespace)
namespace = null;
var defaultNamespace = algorithm_1.node_locateANamespace(this, null);
return (defaultNamespace === namespace);
};
/**
* Inserts the node `newChild` before the existing child node
* `refChild`. If `refChild` is `null`, inserts `newChild` at the end
* of the list of children.
*
* If `newChild` is a {@link DocumentFragment} object, all of its
* children are inserted, in the same order, before `refChild`.
*
* If `newChild` is already in the tree, it is first removed.
*
* @param newChild - the node to insert
* @param refChild - the node before which the new node must be
* inserted
*
* @returns the newly inserted child node
*/
NodeImpl.prototype.insertBefore = function (newChild, refChild) {
/**
* The insertBefore(node, child) method, when invoked, must return the
* result of pre-inserting node into context object before child.
*/
return algorithm_1.mutation_preInsert(newChild, this, refChild);
};
/**
* Adds the node `newChild` to the end of the list of children of this
* node, and returns it. If `newChild` is already in the tree, it is
* first removed.
*
* If `newChild` is a {@link DocumentFragment} object, the entire
* contents of the document fragment are moved into the child list of
* this node.
*
* @param newChild - the node to add
*
* @returns the newly inserted child node
*/
NodeImpl.prototype.appendChild = function (newChild) {
/**
* The appendChild(node) method, when invoked, must return the result of
* appending node to context object.
*/
return algorithm_1.mutation_append(newChild, this);
};
/**
* Replaces the child node `oldChild` with `newChild` in the list of
* children, and returns the `oldChild` node. If `newChild` is already
* in the tree, it is first removed.
*
* @param newChild - the new node to put in the child list
* @param oldChild - the node being replaced in the list
*
* @returns the removed child node
*/
NodeImpl.prototype.replaceChild = function (newChild, oldChild) {
/**
* The replaceChild(node, child) method, when invoked, must return the
* result of replacing child with node within context object.
*/
return algorithm_1.mutation_replace(oldChild, newChild, this);
};
/**
* Removes the child node indicated by `oldChild` from the list of
* children, and returns it.
*
* @param oldChild - the node being removed from the list
*
* @returns the removed child node
*/
NodeImpl.prototype.removeChild = function (oldChild) {
/**
* The removeChild(child) method, when invoked, must return the result of
* pre-removing child from context object.
*/
return algorithm_1.mutation_preRemove(oldChild, this);
};
/**
* Gets the parent event target for the given event.
*
* @param event - an event
*/
NodeImpl.prototype._getTheParent = function (event) {
/**
* A nodes get the parent algorithm, given an event, returns the nodes
* assigned slot, if node is assigned, and nodes parent otherwise.
*/
if (util_1.Guard.isSlotable(this) && algorithm_1.shadowTree_isAssigned(this)) {
return this._assignedSlot;
}
else {
return this._parent;
}
};
NodeImpl.ELEMENT_NODE = 1;
NodeImpl.ATTRIBUTE_NODE = 2;
NodeImpl.TEXT_NODE = 3;
NodeImpl.CDATA_SECTION_NODE = 4;
NodeImpl.ENTITY_REFERENCE_NODE = 5;
NodeImpl.ENTITY_NODE = 6;
NodeImpl.PROCESSING_INSTRUCTION_NODE = 7;
NodeImpl.COMMENT_NODE = 8;
NodeImpl.DOCUMENT_NODE = 9;
NodeImpl.DOCUMENT_TYPE_NODE = 10;
NodeImpl.DOCUMENT_FRAGMENT_NODE = 11;
NodeImpl.NOTATION_NODE = 12;
NodeImpl.DOCUMENT_POSITION_DISCONNECTED = 0x01;
NodeImpl.DOCUMENT_POSITION_PRECEDING = 0x02;
NodeImpl.DOCUMENT_POSITION_FOLLOWING = 0x04;
NodeImpl.DOCUMENT_POSITION_CONTAINS = 0x08;
NodeImpl.DOCUMENT_POSITION_CONTAINED_BY = 0x10;
NodeImpl.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20;
return NodeImpl;
}(EventTargetImpl_1.EventTargetImpl));
exports.NodeImpl = NodeImpl;
/**
* A performance tweak to share an empty set between all node classes. This will
* be overwritten by element, document and document fragment nodes to supply an
* actual set of nodes.
*/
NodeImpl.prototype._children = new util_1.EmptySet();
/**
* Define constants on prototype.
*/
WebIDLAlgorithm_1.idl_defineConst(NodeImpl.prototype, "ELEMENT_NODE", 1);
WebIDLAlgorithm_1.idl_defineConst(NodeImpl.prototype, "ATTRIBUTE_NODE", 2);
WebIDLAlgorithm_1.idl_defineConst(NodeImpl.prototype, "TEXT_NODE", 3);
WebIDLAlgorithm_1.idl_defineConst(NodeImpl.prototype, "CDATA_SECTION_NODE", 4);
WebIDLAlgorithm_1.idl_defineConst(NodeImpl.prototype, "ENTITY_REFERENCE_NODE", 5);
WebIDLAlgorithm_1.idl_defineConst(NodeImpl.prototype, "ENTITY_NODE", 6);
WebIDLAlgorithm_1.idl_defineConst(NodeImpl.prototype, "PROCESSING_INSTRUCTION_NODE", 7);
WebIDLAlgorithm_1.idl_defineConst(NodeImpl.prototype, "COMMENT_NODE", 8);
WebIDLAlgorithm_1.idl_defineConst(NodeImpl.prototype, "DOCUMENT_NODE", 9);
WebIDLAlgorithm_1.idl_defineConst(NodeImpl.prototype, "DOCUMENT_TYPE_NODE", 10);
WebIDLAlgorithm_1.idl_defineConst(NodeImpl.prototype, "DOCUMENT_FRAGMENT_NODE", 11);
WebIDLAlgorithm_1.idl_defineConst(NodeImpl.prototype, "NOTATION_NODE", 12);
WebIDLAlgorithm_1.idl_defineConst(NodeImpl.prototype, "DOCUMENT_POSITION_DISCONNECTED", 0x01);
WebIDLAlgorithm_1.idl_defineConst(NodeImpl.prototype, "DOCUMENT_POSITION_PRECEDING", 0x02);
WebIDLAlgorithm_1.idl_defineConst(NodeImpl.prototype, "DOCUMENT_POSITION_FOLLOWING", 0x04);
WebIDLAlgorithm_1.idl_defineConst(NodeImpl.prototype, "DOCUMENT_POSITION_CONTAINS", 0x08);
WebIDLAlgorithm_1.idl_defineConst(NodeImpl.prototype, "DOCUMENT_POSITION_CONTAINED_BY", 0x10);
WebIDLAlgorithm_1.idl_defineConst(NodeImpl.prototype, "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC", 0x20);
//# sourceMappingURL=NodeImpl.js.map
/***/ }),
/* 936 */,
/* 937 */,
/* 938 */,
/* 939 */,
/* 940 */,
/* 941 */,
/* 942 */,
/* 943 */,
/* 944 */,
/* 945 */
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
var YAMLException = __webpack_require__(556);
var TYPE_CONSTRUCTOR_OPTIONS = [
'kind',
'resolve',
'construct',
'instanceOf',
'predicate',
'represent',
'defaultStyle',
'styleAliases'
];
var YAML_NODE_KINDS = [
'scalar',
'sequence',
'mapping'
];
function compileStyleAliases(map) {
var result = {};
if (map !== null) {
Object.keys(map).forEach(function (style) {
map[style].forEach(function (alias) {
result[String(alias)] = style;
});
});
}
return result;
}
function Type(tag, options) {
options = options || {};
Object.keys(options).forEach(function (name) {
if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {
throw new YAMLException('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.');
}
});
// TODO: Add tag format check.
this.tag = tag;
this.kind = options['kind'] || null;
this.resolve = options['resolve'] || function () { return true; };
this.construct = options['construct'] || function (data) { return data; };
this.instanceOf = options['instanceOf'] || null;
this.predicate = options['predicate'] || null;
this.represent = options['represent'] || null;
this.defaultStyle = options['defaultStyle'] || null;
this.styleAliases = compileStyleAliases(options['styleAliases'] || null);
if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {
throw new YAMLException('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.');
}
}
module.exports = Type;
/***/ }),
/* 946 */,
/* 947 */
/***/ (function(__unusedmodule, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Represents an object with lazy initialization.
*/
var Lazy = /** @class */ (function () {
/**
* Initializes a new instance of `Lazy`.
*
* @param initFunc - initializer function
*/
function Lazy(initFunc) {
this._initialized = false;
this._value = undefined;
this._initFunc = initFunc;
}
Object.defineProperty(Lazy.prototype, "value", {
/**
* Gets the value of the object.
*/
get: function () {
if (!this._initialized) {
this._value = this._initFunc();
this._initialized = true;
}
return this._value;
},
enumerable: true,
configurable: true
});
return Lazy;
}());
exports.Lazy = Lazy;
//# sourceMappingURL=Lazy.js.map
/***/ }),
/* 948 */,
/* 949 */,
/* 950 */
/***/ (function(__unusedmodule, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function getProxyUrl(reqUrl) {
let usingSsl = reqUrl.protocol === 'https:';
let proxyUrl;
if (checkBypass(reqUrl)) {
return proxyUrl;
}
let proxyVar;
if (usingSsl) {
proxyVar = process.env['https_proxy'] || process.env['HTTPS_PROXY'];
}
else {
proxyVar = process.env['http_proxy'] || process.env['HTTP_PROXY'];
}
if (proxyVar) {
proxyUrl = new URL(proxyVar);
}
return proxyUrl;
}
exports.getProxyUrl = getProxyUrl;
function checkBypass(reqUrl) {
if (!reqUrl.hostname) {
return false;
}
let noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || '';
if (!noProxy) {
return false;
}
// Determine the request port
let reqPort;
if (reqUrl.port) {
reqPort = Number(reqUrl.port);
}
else if (reqUrl.protocol === 'http:') {
reqPort = 80;
}
else if (reqUrl.protocol === 'https:') {
reqPort = 443;
}
// Format the request hostname and hostname with port
let upperReqHosts = [reqUrl.hostname.toUpperCase()];
if (typeof reqPort === 'number') {
upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`);
}
// Compare request host against noproxy
for (let upperNoProxyItem of noProxy
.split(',')
.map(x => x.trim().toUpperCase())
.filter(x => x)) {
if (upperReqHosts.some(x => x === upperNoProxyItem)) {
return true;
}
}
return false;
}
exports.checkBypass = checkBypass;
/***/ }),
/* 951 */,
/* 952 */,
/* 953 */,
/* 954 */
/***/ (function(module) {
const numeric = /^[0-9]+$/
const compareIdentifiers = (a, b) => {
const anum = numeric.test(a)
const bnum = numeric.test(b)
if (anum && bnum) {
a = +a
b = +b
}
return a === b ? 0
: (anum && !bnum) ? -1
: (bnum && !anum) ? 1
: a < b ? -1
: 1
}
const rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)
module.exports = {
compareIdentifiers,
rcompareIdentifiers
}
/***/ }),
/* 955 */,
/* 956 */,
/* 957 */,
/* 958 */,
/* 959 */,
/* 960 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const SemVer = __webpack_require__(65)
const Range = __webpack_require__(124)
const gt = __webpack_require__(486)
const minVersion = (range, loose) => {
range = new Range(range, loose)
let minver = new SemVer('0.0.0')
if (range.test(minver)) {
return minver
}
minver = new SemVer('0.0.0-0')
if (range.test(minver)) {
return minver
}
minver = null
for (let i = 0; i < range.set.length; ++i) {
const comparators = range.set[i]
let setMin = null
comparators.forEach((comparator) => {
// Clone to avoid manipulating the comparator's semver object.
const compver = new SemVer(comparator.semver.version)
switch (comparator.operator) {
case '>':
if (compver.prerelease.length === 0) {
compver.patch++
} else {
compver.prerelease.push(0)
}
compver.raw = compver.format()
/* fallthrough */
case '':
case '>=':
if (!setMin || gt(compver, setMin)) {
setMin = compver
}
break
case '<':
case '<=':
/* Ignore maximum versions */
break
/* istanbul ignore next */
default:
throw new Error(`Unexpected operation: ${comparator.operator}`)
}
})
if (setMin && (!minver || gt(minver, setMin)))
minver = setMin
}
if (minver && range.test(minver)) {
return minver
}
return null
}
module.exports = minVersion
/***/ }),
/* 961 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var interfaces_1 = __webpack_require__(625);
var util_1 = __webpack_require__(592);
var util_2 = __webpack_require__(918);
var _1 = __webpack_require__(535);
var dom_1 = __webpack_require__(743);
/** @inheritdoc */
function builder(p1, p2) {
var options = formatBuilderOptions(isXMLBuilderCreateOptions(p1) ? p1 : interfaces_1.DefaultBuilderOptions);
var nodes = util_2.Guard.isNode(p1) || util_1.isArray(p1) ? p1 : p2;
if (nodes === undefined) {
throw new Error("Invalid arguments.");
}
if (util_1.isArray(nodes)) {
var builders = [];
for (var i = 0; i < nodes.length; i++) {
var builder_1 = new _1.XMLBuilderImpl(nodes[i]);
builder_1.set(options);
builders.push(builder_1);
}
return builders;
}
else {
var builder_2 = new _1.XMLBuilderImpl(nodes);
builder_2.set(options);
return builder_2;
}
}
exports.builder = builder;
/** @inheritdoc */
function create(p1, p2) {
var options = formatBuilderOptions(p1 === undefined || isXMLBuilderCreateOptions(p1) ?
p1 : interfaces_1.DefaultBuilderOptions);
var contents = isXMLBuilderCreateOptions(p1) ? p2 : p1;
var doc = dom_1.createDocument();
setOptions(doc, options);
var builder = new _1.XMLBuilderImpl(doc);
if (contents !== undefined) {
// parse contents
builder.ele(contents);
}
return builder;
}
exports.create = create;
/** @inheritdoc */
function fragment(p1, p2) {
var options = formatBuilderOptions(p1 === undefined || isXMLBuilderCreateOptions(p1) ?
p1 : interfaces_1.DefaultBuilderOptions);
var contents = isXMLBuilderCreateOptions(p1) ? p2 : p1;
var doc = dom_1.createDocument();
setOptions(doc, options, true);
var builder = new _1.XMLBuilderImpl(doc.createDocumentFragment());
if (contents !== undefined) {
// parse contents
builder.ele(contents);
}
return builder;
}
exports.fragment = fragment;
/** @inheritdoc */
function convert(p1, p2, p3) {
var builderOptions;
var contents;
var convertOptions;
if (isXMLBuilderCreateOptions(p1) && p2 !== undefined) {
builderOptions = p1;
contents = p2;
convertOptions = p3;
}
else {
builderOptions = interfaces_1.DefaultBuilderOptions;
contents = p1;
convertOptions = p2 || undefined;
}
return create(builderOptions, contents).end(convertOptions);
}
exports.convert = convert;
function isXMLBuilderCreateOptions(obj) {
if (!util_1.isPlainObject(obj))
return false;
for (var key in obj) {
/* istanbul ignore else */
if (obj.hasOwnProperty(key)) {
if (!interfaces_1.XMLBuilderOptionKeys.has(key))
return false;
}
}
return true;
}
function formatBuilderOptions(createOptions) {
if (createOptions === void 0) { createOptions = {}; }
var options = util_1.applyDefaults(createOptions, interfaces_1.DefaultBuilderOptions);
if (options.convert.att.length === 0 ||
options.convert.ins.length === 0 ||
options.convert.text.length === 0 ||
options.convert.cdata.length === 0 ||
options.convert.comment.length === 0) {
throw new Error("JS object converter strings cannot be zero length.");
}
return options;
}
function setOptions(doc, options, isFragment) {
var docWithSettings = doc;
docWithSettings._xmlBuilderOptions = options;
docWithSettings._isFragment = isFragment;
}
//# sourceMappingURL=BuilderFunctions.js.map
/***/ }),
/* 962 */,
/* 963 */,
/* 964 */,
/* 965 */,
/* 966 */,
/* 967 */,
/* 968 */
/***/ (function(__unusedmodule, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var EmptySet = /** @class */ (function () {
function EmptySet() {
}
Object.defineProperty(EmptySet.prototype, "size", {
get: function () {
return 0;
},
enumerable: true,
configurable: true
});
EmptySet.prototype.add = function (value) {
throw new Error("Cannot add to an empty set.");
};
EmptySet.prototype.clear = function () {
// no-op
};
EmptySet.prototype.delete = function (value) {
return false;
};
EmptySet.prototype.forEach = function (callbackfn, thisArg) {
// no-op
};
EmptySet.prototype.has = function (value) {
return false;
};
EmptySet.prototype[Symbol.iterator] = function () {
return new EmptySetIterator();
};
EmptySet.prototype.entries = function () {
return new EmptySetIterator();
};
EmptySet.prototype.keys = function () {
return new EmptySetIterator();
};
EmptySet.prototype.values = function () {
return new EmptySetIterator();
};
Object.defineProperty(EmptySet.prototype, Symbol.toStringTag, {
get: function () {
return "EmptySet";
},
enumerable: true,
configurable: true
});
return EmptySet;
}());
exports.EmptySet = EmptySet;
var EmptySetIterator = /** @class */ (function () {
function EmptySetIterator() {
}
EmptySetIterator.prototype[Symbol.iterator] = function () {
return this;
};
EmptySetIterator.prototype.next = function () {
return { done: true, value: null };
};
return EmptySetIterator;
}());
//# sourceMappingURL=EmptySet.js.map
/***/ }),
/* 969 */,
/* 970 */
/***/ (function(__unusedmodule, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Defines the position of a boundary point relative to another.
*/
var BoundaryPosition;
(function (BoundaryPosition) {
BoundaryPosition[BoundaryPosition["Before"] = 0] = "Before";
BoundaryPosition[BoundaryPosition["Equal"] = 1] = "Equal";
BoundaryPosition[BoundaryPosition["After"] = 2] = "After";
})(BoundaryPosition = exports.BoundaryPosition || (exports.BoundaryPosition = {}));
/**
* Defines the event phase.
*/
var EventPhase;
(function (EventPhase) {
EventPhase[EventPhase["None"] = 0] = "None";
EventPhase[EventPhase["Capturing"] = 1] = "Capturing";
EventPhase[EventPhase["AtTarget"] = 2] = "AtTarget";
EventPhase[EventPhase["Bubbling"] = 3] = "Bubbling";
})(EventPhase = exports.EventPhase || (exports.EventPhase = {}));
/**
* Defines the type of a node object.
*/
var NodeType;
(function (NodeType) {
NodeType[NodeType["Element"] = 1] = "Element";
NodeType[NodeType["Attribute"] = 2] = "Attribute";
NodeType[NodeType["Text"] = 3] = "Text";
NodeType[NodeType["CData"] = 4] = "CData";
NodeType[NodeType["EntityReference"] = 5] = "EntityReference";
NodeType[NodeType["Entity"] = 6] = "Entity";
NodeType[NodeType["ProcessingInstruction"] = 7] = "ProcessingInstruction";
NodeType[NodeType["Comment"] = 8] = "Comment";
NodeType[NodeType["Document"] = 9] = "Document";
NodeType[NodeType["DocumentType"] = 10] = "DocumentType";
NodeType[NodeType["DocumentFragment"] = 11] = "DocumentFragment";
NodeType[NodeType["Notation"] = 12] = "Notation"; // historical
})(NodeType = exports.NodeType || (exports.NodeType = {}));
/**
* Defines the position of a node in the document relative to another
* node.
*/
var Position;
(function (Position) {
Position[Position["Disconnected"] = 1] = "Disconnected";
Position[Position["Preceding"] = 2] = "Preceding";
Position[Position["Following"] = 4] = "Following";
Position[Position["Contains"] = 8] = "Contains";
Position[Position["ContainedBy"] = 16] = "ContainedBy";
Position[Position["ImplementationSpecific"] = 32] = "ImplementationSpecific";
})(Position = exports.Position || (exports.Position = {}));
/**
* Defines the return value of a filter callback.
*/
var FilterResult;
(function (FilterResult) {
FilterResult[FilterResult["Accept"] = 1] = "Accept";
FilterResult[FilterResult["Reject"] = 2] = "Reject";
FilterResult[FilterResult["Skip"] = 3] = "Skip";
})(FilterResult = exports.FilterResult || (exports.FilterResult = {}));
/**
* Defines what to show in node filter.
*/
var WhatToShow;
(function (WhatToShow) {
WhatToShow[WhatToShow["All"] = 4294967295] = "All";
WhatToShow[WhatToShow["Element"] = 1] = "Element";
WhatToShow[WhatToShow["Attribute"] = 2] = "Attribute";
WhatToShow[WhatToShow["Text"] = 4] = "Text";
WhatToShow[WhatToShow["CDataSection"] = 8] = "CDataSection";
WhatToShow[WhatToShow["EntityReference"] = 16] = "EntityReference";
WhatToShow[WhatToShow["Entity"] = 32] = "Entity";
WhatToShow[WhatToShow["ProcessingInstruction"] = 64] = "ProcessingInstruction";
WhatToShow[WhatToShow["Comment"] = 128] = "Comment";
WhatToShow[WhatToShow["Document"] = 256] = "Document";
WhatToShow[WhatToShow["DocumentType"] = 512] = "DocumentType";
WhatToShow[WhatToShow["DocumentFragment"] = 1024] = "DocumentFragment";
WhatToShow[WhatToShow["Notation"] = 2048] = "Notation";
})(WhatToShow = exports.WhatToShow || (exports.WhatToShow = {}));
/**
* Defines how boundary points are compared.
*/
var HowToCompare;
(function (HowToCompare) {
HowToCompare[HowToCompare["StartToStart"] = 0] = "StartToStart";
HowToCompare[HowToCompare["StartToEnd"] = 1] = "StartToEnd";
HowToCompare[HowToCompare["EndToEnd"] = 2] = "EndToEnd";
HowToCompare[HowToCompare["EndToStart"] = 3] = "EndToStart";
})(HowToCompare = exports.HowToCompare || (exports.HowToCompare = {}));
//# sourceMappingURL=interfaces.js.map
/***/ }),
/* 971 */,
/* 972 */,
/* 973 */,
/* 974 */,
/* 975 */,
/* 976 */
/***/ (function(module, exports, __webpack_require__) {
const { MAX_SAFE_COMPONENT_LENGTH } = __webpack_require__(181)
const debug = __webpack_require__(548)
exports = module.exports = {}
// The actual regexps go on exports.re
const re = exports.re = []
const src = exports.src = []
const t = exports.t = {}
let R = 0
const createToken = (name, value, isGlobal) => {
const index = R++
debug(index, value)
t[name] = index
src[index] = value
re[index] = new RegExp(value, isGlobal ? 'g' : undefined)
}
// The following Regular Expressions can be used for tokenizing,
// validating, and parsing SemVer version strings.
// ## Numeric Identifier
// A single `0`, or a non-zero digit followed by zero or more digits.
createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*')
createToken('NUMERICIDENTIFIERLOOSE', '[0-9]+')
// ## Non-numeric Identifier
// Zero or more digits, followed by a letter or hyphen, and then zero or
// more letters, digits, or hyphens.
createToken('NONNUMERICIDENTIFIER', '\\d*[a-zA-Z-][a-zA-Z0-9-]*')
// ## Main Version
// Three dot-separated numeric identifiers.
createToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\.` +
`(${src[t.NUMERICIDENTIFIER]})\\.` +
`(${src[t.NUMERICIDENTIFIER]})`)
createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` +
`(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` +
`(${src[t.NUMERICIDENTIFIERLOOSE]})`)
// ## Pre-release Version Identifier
// A numeric identifier, or a non-numeric identifier.
createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]
}|${src[t.NONNUMERICIDENTIFIER]})`)
createToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]
}|${src[t.NONNUMERICIDENTIFIER]})`)
// ## Pre-release Version
// Hyphen, followed by one or more dot-separated pre-release version
// identifiers.
createToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]
}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`)
createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]
}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)
// ## Build Metadata Identifier
// Any combination of digits, letters, or hyphens.
createToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+')
// ## Build Metadata
// Plus sign, followed by one or more period-separated build metadata
// identifiers.
createToken('BUILD', `(?:\\+(${src[t.BUILDIDENTIFIER]
}(?:\\.${src[t.BUILDIDENTIFIER]})*))`)
// ## Full Version String
// A main version, followed optionally by a pre-release version and
// build metadata.
// Note that the only major, minor, patch, and pre-release sections of
// the version string are capturing groups. The build metadata is not a
// capturing group, because it should not ever be used in version
// comparison.
createToken('FULLPLAIN', `v?${src[t.MAINVERSION]
}${src[t.PRERELEASE]}?${
src[t.BUILD]}?`)
createToken('FULL', `^${src[t.FULLPLAIN]}$`)
// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
// common in the npm registry.
createToken('LOOSEPLAIN', `[v=\\s]*${src[t.MAINVERSIONLOOSE]
}${src[t.PRERELEASELOOSE]}?${
src[t.BUILD]}?`)
createToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)
createToken('GTLT', '((?:<|>)?=?)')
// Something like "2.*" or "1.2.x".
// Note that "x.x" is a valid xRange identifer, meaning "any version"
// Only the first item is strictly required.
createToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`)
createToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`)
createToken('XRANGEPLAIN', `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})` +
`(?:\\.(${src[t.XRANGEIDENTIFIER]})` +
`(?:\\.(${src[t.XRANGEIDENTIFIER]})` +
`(?:${src[t.PRERELEASE]})?${
src[t.BUILD]}?` +
`)?)?`)
createToken('XRANGEPLAINLOOSE', `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +
`(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +
`(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +
`(?:${src[t.PRERELEASELOOSE]})?${
src[t.BUILD]}?` +
`)?)?`)
createToken('XRANGE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`)
createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`)
// Coercion.
// Extract anything that could conceivably be a part of a valid semver
createToken('COERCE', `${'(^|[^\\d])' +
'(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +
`(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +
`(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +
`(?:$|[^\\d])`)
createToken('COERCERTL', src[t.COERCE], true)
// Tilde ranges.
// Meaning is "reasonably at or greater than"
createToken('LONETILDE', '(?:~>?)')
createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true)
exports.tildeTrimReplace = '$1~'
createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)
createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)
// Caret ranges.
// Meaning is "at least and backwards compatible with"
createToken('LONECARET', '(?:\\^)')
createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true)
exports.caretTrimReplace = '$1^'
createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)
createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)
// A simple gt/lt/eq thing, or just "" to indicate "any version"
createToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`)
createToken('COMPARATOR', `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`)
// An expression to strip any whitespace between the gtlt and the thing
// it modifies, so that `> 1.2.3` ==> `>1.2.3`
createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT]
}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)
exports.comparatorTrimReplace = '$1$2$3'
// Something like `1.2.3 - 1.2.4`
// Note that these all use the loose form, because they'll be
// checked against either the strict or loose comparator form
// later.
createToken('HYPHENRANGE', `^\\s*(${src[t.XRANGEPLAIN]})` +
`\\s+-\\s+` +
`(${src[t.XRANGEPLAIN]})` +
`\\s*$`)
createToken('HYPHENRANGELOOSE', `^\\s*(${src[t.XRANGEPLAINLOOSE]})` +
`\\s+-\\s+` +
`(${src[t.XRANGEPLAINLOOSE]})` +
`\\s*$`)
// Star ranges basically just allow anything at all.
createToken('STAR', '(<|>)?=?\\s*\\*')
// >=0.0.0 is like a star
createToken('GTE0', '^\\s*>=\\s*0\.0\.0\\s*$')
createToken('GTE0PRE', '^\\s*>=\\s*0\.0\.0-0\\s*$')
/***/ }),
/* 977 */,
/* 978 */,
/* 979 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const core = __importStar(__webpack_require__(470));
/**
* Internal class for retries
*/
class RetryHelper {
constructor(maxAttempts, minSeconds, maxSeconds) {
if (maxAttempts < 1) {
throw new Error('max attempts should be greater than or equal to 1');
}
this.maxAttempts = maxAttempts;
this.minSeconds = Math.floor(minSeconds);
this.maxSeconds = Math.floor(maxSeconds);
if (this.minSeconds > this.maxSeconds) {
throw new Error('min seconds should be less than or equal to max seconds');
}
}
execute(action, isRetryable) {
return __awaiter(this, void 0, void 0, function* () {
let attempt = 1;
while (attempt < this.maxAttempts) {
// Try
try {
return yield action();
}
catch (err) {
if (isRetryable && !isRetryable(err)) {
throw err;
}
core.info(err.message);
}
// Sleep
const seconds = this.getSleepAmount();
core.info(`Waiting ${seconds} seconds before trying again`);
yield this.sleep(seconds);
attempt++;
}
// Last attempt
return yield action();
});
}
getSleepAmount() {
return (Math.floor(Math.random() * (this.maxSeconds - this.minSeconds + 1)) +
this.minSeconds);
}
sleep(seconds) {
return __awaiter(this, void 0, void 0, function* () {
return new Promise(resolve => setTimeout(resolve, seconds * 1000));
});
}
}
exports.RetryHelper = RetryHelper;
//# sourceMappingURL=retry-helper.js.map
/***/ }),
/* 980 */,
/* 981 */,
/* 982 */,
/* 983 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var util_1 = __webpack_require__(918);
var algorithm_1 = __webpack_require__(163);
/**
* Represents a mixin that extends child nodes that can have siblings
* including doctypes. This mixin is implemented by {@link Element},
* {@link CharacterData} and {@link DocumentType}.
*/
var ChildNodeImpl = /** @class */ (function () {
function ChildNodeImpl() {
}
/** @inheritdoc */
ChildNodeImpl.prototype.before = function () {
var nodes = [];
for (var _i = 0; _i < arguments.length; _i++) {
nodes[_i] = arguments[_i];
}
/**
* 1. Let parent be context objects parent.
* 2. If parent is null, then return.
*/
var context = util_1.Cast.asNode(this);
var parent = context._parent;
if (parent === null)
return;
/**
* 3. Let viablePreviousSibling be context objects first preceding
* sibling not in nodes, and null otherwise.
*/
var viablePreviousSibling = context._previousSibling;
var flag = true;
while (flag && viablePreviousSibling) {
flag = false;
for (var i = 0; i < nodes.length; i++) {
var child = nodes[i];
if (child === viablePreviousSibling) {
viablePreviousSibling = viablePreviousSibling._previousSibling;
flag = true;
break;
}
}
}
/**
* 4. Let node be the result of converting nodes into a node, given nodes
* and context objects node document.
*/
var node = algorithm_1.parentNode_convertNodesIntoANode(nodes, context._nodeDocument);
/**
* 5. If viablePreviousSibling is null, set it to parents first child,
* and to viablePreviousSiblings next sibling otherwise.
*/
if (viablePreviousSibling === null)
viablePreviousSibling = parent._firstChild;
else
viablePreviousSibling = viablePreviousSibling._nextSibling;
/**
* 6. Pre-insert node into parent before viablePreviousSibling.
*/
algorithm_1.mutation_preInsert(node, parent, viablePreviousSibling);
};
/** @inheritdoc */
ChildNodeImpl.prototype.after = function () {
var nodes = [];
for (var _i = 0; _i < arguments.length; _i++) {
nodes[_i] = arguments[_i];
}
/**
* 1. Let parent be context objects parent.
* 2. If parent is null, then return.
*/
var context = util_1.Cast.asNode(this);
var parent = context._parent;
if (!parent)
return;
/**
* 3. Let viableNextSibling be context objects first following sibling not
* in nodes, and null otherwise.
*/
var viableNextSibling = context._nextSibling;
var flag = true;
while (flag && viableNextSibling) {
flag = false;
for (var i = 0; i < nodes.length; i++) {
var child = nodes[i];
if (child === viableNextSibling) {
viableNextSibling = viableNextSibling._nextSibling;
flag = true;
break;
}
}
}
/**
* 4. Let node be the result of converting nodes into a node, given nodes
* and context objects node document.
*/
var node = algorithm_1.parentNode_convertNodesIntoANode(nodes, context._nodeDocument);
/**
* 5. Pre-insert node into parent before viableNextSibling.
*/
algorithm_1.mutation_preInsert(node, parent, viableNextSibling);
};
/** @inheritdoc */
ChildNodeImpl.prototype.replaceWith = function () {
var nodes = [];
for (var _i = 0; _i < arguments.length; _i++) {
nodes[_i] = arguments[_i];
}
/**
* 1. Let parent be context objects parent.
* 2. If parent is null, then return.
*/
var context = util_1.Cast.asNode(this);
var parent = context._parent;
if (!parent)
return;
/**
* 3. Let viableNextSibling be context objects first following sibling not
* in nodes, and null otherwise.
*/
var viableNextSibling = context._nextSibling;
var flag = true;
while (flag && viableNextSibling) {
flag = false;
for (var i = 0; i < nodes.length; i++) {
var child = nodes[i];
if (child === viableNextSibling) {
viableNextSibling = viableNextSibling._nextSibling;
flag = true;
break;
}
}
}
/**
* 4. Let node be the result of converting nodes into a node, given nodes
* and context objects node document.
*/
var node = algorithm_1.parentNode_convertNodesIntoANode(nodes, context._nodeDocument);
/**
* 5. If context objects parent is parent, replace the context object with
* node within parent.
* _Note:_ Context object could have been inserted into node.
* 6. Otherwise, pre-insert node into parent before viableNextSibling.
*/
if (context._parent === parent)
algorithm_1.mutation_replace(context, node, parent);
else
algorithm_1.mutation_preInsert(node, parent, viableNextSibling);
};
/** @inheritdoc */
ChildNodeImpl.prototype.remove = function () {
/**
* 1. If context objects parent is null, then return.
* 2. Remove the context object from context objects parent.
*/
var context = util_1.Cast.asNode(this);
var parent = context._parent;
if (!parent)
return;
algorithm_1.mutation_remove(context, parent);
};
return ChildNodeImpl;
}());
exports.ChildNodeImpl = ChildNodeImpl;
//# sourceMappingURL=ChildNodeImpl.js.map
/***/ }),
/* 984 */,
/* 985 */,
/* 986 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const tr = __importStar(__webpack_require__(658));
/**
* Exec a command.
* Output will be streamed to the live console.
* Returns promise with return code
*
* @param commandLine command to execute (can include additional args). Must be correctly escaped.
* @param args optional arguments for tool. Escaping is handled by the lib.
* @param options optional exec options. See ExecOptions
* @returns Promise<number> exit code
*/
function exec(commandLine, args, options) {
return __awaiter(this, void 0, void 0, function* () {
const commandArgs = tr.argStringToArray(commandLine);
if (commandArgs.length === 0) {
throw new Error(`Parameter 'commandLine' cannot be null or empty.`);
}
// Path to tool to execute should be first arg
const toolPath = commandArgs[0];
args = commandArgs.slice(1).concat(args || []);
const runner = new tr.ToolRunner(toolPath, args, options);
return runner.exec();
});
}
exports.exec = exec;
//# sourceMappingURL=exec.js.map
/***/ }),
/* 987 */,
/* 988 */
/***/ (function(module, __unusedexports, __webpack_require__) {
"use strict";
var Type = __webpack_require__(945);
module.exports = new Type('tag:yaml.org,2002:map', {
kind: 'mapping',
construct: function (data) { return data !== null ? data : {}; }
});
/***/ }),
/* 989 */,
/* 990 */
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var algorithm_1 = __webpack_require__(163);
/**
* Represents a controller that allows to abort DOM requests.
*/
var AbortControllerImpl = /** @class */ (function () {
/**
* Initializes a new instance of `AbortController`.
*/
function AbortControllerImpl() {
/**
* 1. Let signal be a new AbortSignal object.
* 2. Let controller be a new AbortController object whose signal is signal.
* 3. Return controller.
*/
this._signal = algorithm_1.create_abortSignal();
}
Object.defineProperty(AbortControllerImpl.prototype, "signal", {
/** @inheritdoc */
get: function () { return this._signal; },
enumerable: true,
configurable: true
});
/** @inheritdoc */
AbortControllerImpl.prototype.abort = function () {
algorithm_1.abort_signalAbort(this._signal);
};
return AbortControllerImpl;
}());
exports.AbortControllerImpl = AbortControllerImpl;
//# sourceMappingURL=AbortControllerImpl.js.map
/***/ }),
/* 991 */,
/* 992 */,
/* 993 */,
/* 994 */,
/* 995 */,
/* 996 */,
/* 997 */,
/* 998 */,
/* 999 */
/***/ (function(module, __unusedexports, __webpack_require__) {
const Range = __webpack_require__(124)
const { ANY } = __webpack_require__(536)
const satisfies = __webpack_require__(310)
const compare = __webpack_require__(874)
// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:
// - Every simple range `r1, r2, ...` is a subset of some `R1, R2, ...`
//
// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:
// - If c is only the ANY comparator
// - If C is only the ANY comparator, return true
// - Else return false
// - Let EQ be the set of = comparators in c
// - If EQ is more than one, return true (null set)
// - Let GT be the highest > or >= comparator in c
// - Let LT be the lowest < or <= comparator in c
// - If GT and LT, and GT.semver > LT.semver, return true (null set)
// - If EQ
// - If GT, and EQ does not satisfy GT, return true (null set)
// - If LT, and EQ does not satisfy LT, return true (null set)
// - If EQ satisfies every C, return true
// - Else return false
// - If GT
// - If GT.semver is lower than any > or >= comp in C, return false
// - If GT is >=, and GT.semver does not satisfy every C, return false
// - If LT
// - If LT.semver is greater than any < or <= comp in C, return false
// - If LT is <=, and LT.semver does not satisfy every C, return false
// - If any C is a = range, and GT or LT are set, return false
// - Else return true
const subset = (sub, dom, options) => {
if (sub === dom)
return true
sub = new Range(sub, options)
dom = new Range(dom, options)
let sawNonNull = false
OUTER: for (const simpleSub of sub.set) {
for (const simpleDom of dom.set) {
const isSub = simpleSubset(simpleSub, simpleDom, options)
sawNonNull = sawNonNull || isSub !== null
if (isSub)
continue OUTER
}
// the null set is a subset of everything, but null simple ranges in
// a complex range should be ignored. so if we saw a non-null range,
// then we know this isn't a subset, but if EVERY simple range was null,
// then it is a subset.
if (sawNonNull)
return false
}
return true
}
const simpleSubset = (sub, dom, options) => {
if (sub === dom)
return true
if (sub.length === 1 && sub[0].semver === ANY)
return dom.length === 1 && dom[0].semver === ANY
const eqSet = new Set()
let gt, lt
for (const c of sub) {
if (c.operator === '>' || c.operator === '>=')
gt = higherGT(gt, c, options)
else if (c.operator === '<' || c.operator === '<=')
lt = lowerLT(lt, c, options)
else
eqSet.add(c.semver)
}
if (eqSet.size > 1)
return null
let gtltComp
if (gt && lt) {
gtltComp = compare(gt.semver, lt.semver, options)
if (gtltComp > 0)
return null
else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<='))
return null
}
// will iterate one or zero times
for (const eq of eqSet) {
if (gt && !satisfies(eq, String(gt), options))
return null
if (lt && !satisfies(eq, String(lt), options))
return null
for (const c of dom) {
if (!satisfies(eq, String(c), options))
return false
}
return true
}
let higher, lower
let hasDomLT, hasDomGT
for (const c of dom) {
hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='
hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='
if (gt) {
if (c.operator === '>' || c.operator === '>=') {
higher = higherGT(gt, c, options)
if (higher === c && higher !== gt)
return false
} else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options))
return false
}
if (lt) {
if (c.operator === '<' || c.operator === '<=') {
lower = lowerLT(lt, c, options)
if (lower === c && lower !== lt)
return false
} else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options))
return false
}
if (!c.operator && (lt || gt) && gtltComp !== 0)
return false
}
// if there was a < or >, and nothing in the dom, then must be false
// UNLESS it was limited by another range in the other direction.
// Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0
if (gt && hasDomLT && !lt && gtltComp !== 0)
return false
if (lt && hasDomGT && !gt && gtltComp !== 0)
return false
return true
}
// >=1.2.3 is lower than >1.2.3
const higherGT = (a, b, options) => {
if (!a)
return b
const comp = compare(a.semver, b.semver, options)
return comp > 0 ? a
: comp < 0 ? b
: b.operator === '>' && a.operator === '>=' ? b
: a
}
// <=1.2.3 is higher than <1.2.3
const lowerLT = (a, b, options) => {
if (!a)
return b
const comp = compare(a.semver, b.semver, options)
return comp < 0 ? a
: comp > 0 ? b
: b.operator === '<' && a.operator === '<=' ? b
: a
}
module.exports = subset
/***/ })
/******/ ]);