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 */ 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 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 attribute’s 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 attribute’s 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 node’s root is range’s * root, and (node, 0) is after range’s start, and (node, node’s length) is * before range’s 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 it’s an inclusive * ancestor of the live range’s 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 node’s 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 range’s end, or if range’s root is not equal to * node’s root, set range’s end to bp. * 4.2. Set range’s 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 node’s 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 range’s start, or if range’s root is not equal * to node’s root, set range’s start to bp. * 4.2. Set range’s 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 node’s 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 node’s index. * 4. Set range’s start to boundary point (parent, index). * 5. Set range’s 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 * range’s start node’s 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 range’s 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 node’s 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 node’s 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 node’s 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 node’s 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 node’s 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 child’s 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 range’s 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 range’s start node’s 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 range’s 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 node’s 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 child’s 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 range’s 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 range’s 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 range’s start node if referenceNode is null, and * referenceNode’s 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 range’s start node is a Text node, set referenceNode to the result * of splitting it with offset range’s 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 node’s parent is not null, remove node from its parent. */ if (node._parent !== null) { MutationAlgorithm_1.mutation_remove(node, node._parent); } /** * 10. Let newOffset be parent’s length if referenceNode is null, and * referenceNode’s index otherwise. */ var newOffset = (referenceNode === null ? TreeAlgorithm_1.tree_nodeLength(parent) : TreeAlgorithm_1.tree_index(referenceNode)); /** * 11. Increase newOffset by node’s 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 range’s 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__(584); const installer_2 = __webpack_require__(144); const installer_3 = __webpack_require__(393); var JavaDistribution; (function (JavaDistribution) { JavaDistribution["Adopt"] = "adopt"; JavaDistribution["Zulu"] = "zulu"; JavaDistribution["JdkFile"] = "jdkfile"; })(JavaDistribution || (JavaDistribution = {})); function getJavaDistribution(distributionName, installerOptions, jdkFile) { switch (distributionName) { case JavaDistribution.JdkFile: return new installer_2.LocalDistribution(installerOptions, jdkFile); case JavaDistribution.Adopt: return new installer_1.AdoptDistribution(installerOptions); case JavaDistribution.Zulu: return new installer_3.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 node’s 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, * node’s 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 node’s data after offset code units. * 6. Let delete offset be offset + data’s length. * 7. Starting from delete offset code units, remove count code units from * node’s 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 data’s * 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 data’s 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 node’s 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 node’s 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 node’s * 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 node’s 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 attribute’s * local name, attribute’s namespace, and attribute’s 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 attribute’s local name, attribute’s value, value, and * attribute’s 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, attribute’s local name, * attribute’s value, value, and attribute’s namespace. * 4. Set attribute’s 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 attribute’s * local name, attribute’s 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 attribute’s local name, null, attribute’s value, and * attribute’s 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, attribute’s local name, * null, attribute’s value, and attribute’s namespace. */ if (DOMImpl_1.dom.features.steps) { DOMAlgorithm_1.dom_runAttributeChangeSteps(element, attribute._localName, null, attribute._value, attribute._namespace); } /** * 4. Append attribute to element’s attribute list. * 5. Set attribute’s 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 attribute’s * local name, attribute’s namespace, and attribute’s 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 attribute’s local name, attribute’s value, null, * and attribute’s 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, attribute’s local name, * attribute’s value, null, and attribute’s namespace. */ if (DOMImpl_1.dom.features.steps) { DOMAlgorithm_1.dom_runAttributeChangeSteps(element, attribute._localName, attribute._value, null, attribute._namespace); } /** * 3. Remove attribute from element’s attribute list. * 5. Set attribute’s 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 oldAttr’s * local name, oldAttr’s namespace, and oldAttr’s 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 oldAttr’s local name, oldAttr’s value, newAttr’s value, * and oldAttr’s 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, oldAttr’s local name, * oldAttr’s value, newAttr’s value, and oldAttr’s 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 element’s attribute list. * 5. Set oldAttr’s element to null. * 6. Set newAttr’s 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 element’s 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 element’s 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 attr’s 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 attr’s element is neither null nor element, throw an * "InUseAttributeError" DOMException. * 2. Let oldAttr be the result of getting an attribute given attr’s * namespace, attr’s 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 element’s 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 definition’s 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 definition’s constructor. * 6.1.2. Set result to the result of constructing C, with no arguments. * 6.1.3. Assert: result’s custom element state and custom element definition * are initialized. * 6.1.4. Assert: result’s 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 result’s 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 result’s parent is not null, then throw a * "NotSupportedError" DOMException. * 6.1.8. If result’s node document is not document, then throw a * "NotSupportedError" DOMException. * 6.1.9. If result’s 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 result’s namespace prefix to prefix. * 6.1.11. Set result’s 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 result’s * 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 element’s parent is null, return null. * Return the result of pre-inserting node into element’s parent before * element. * - "afterbegin" * Return the result of pre-inserting node into element before element’s * first child. * - "beforeend" * Return the result of pre-inserting node into element before null. * - "afterend" * If element’s parent is null, return null. * Return the result of pre-inserting node into element’s parent before element’s 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 object’s 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 attribute’s 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 * attribute’s 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 object’s serialize steps are to return the result of * running get an attribute value given the associated element and the * associated attribute’s 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() { var _a, _b; 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}`); core.info((_a = foundJava === null || foundJava === void 0 ? void 0 : foundJava.version) !== null && _a !== void 0 ? _a : ''); core.info((_b = javaRelease.version) !== null && _b !== void 0 ? _b : ''); 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) { const cleanVersion = semver_1.default.clean(version); return `${cleanVersion}-ea`; } return version; } 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) .filter(item => item.endsWith('-ea') === !this.stable); const satisfiedVersions = availableVersions .filter(item => util_1.isVersionSatisfies(this.version, item.replace(/-ea$/, ''))) .sort(semver_1.default.rcompare); if (!satisfiedVersions || satisfiedVersions.length === 0) { return null; } const javaPath = util_1.getToolcachePath(this.toolcacheFolderName, satisfiedVersions[0], this.architecture); if (!javaPath) { return null; } return { version: util_1.getVersionFromToolcachePath(javaPath), path: javaPath }; } 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 object’s attribute list’s * size, then return null. * 2. Otherwise, return context object’s 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 object’s 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 container’s 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 node’s parent. * 2. If parent is null, then throw an "InvalidNodeTypeError" DOMException. * 3. Set the start of the context object to boundary point * (parent, node’s 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 node’s parent. * 2. If parent is null, then throw an "InvalidNodeTypeError" DOMException. * 3. Set the start of the context object to boundary point * (parent, node’s 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 node’s parent. * 2. If parent is null, then throw an "InvalidNodeTypeError" DOMException. * 3. Set the end of the context object to boundary point * (parent, node’s 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 node’s parent. * 2. If parent is null, then throw an "InvalidNodeTypeError" DOMException. * 3. Set the end of the context object to boundary point * (parent, node’s 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 object’s root is not the same as sourceRange’s 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 object’s start. Let other point be * sourceRange’s start. * - START_TO_END: * Let this point be the context object’s end. Let other point be * sourceRange’s start. * - END_TO_END: * Let this point be the context object’s end. Let other point be * sourceRange’s end. * - END_TO_START: * Let this point be the context object’s start. Let other point be * sourceRange’s 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 object’s 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 node’s 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 node’s 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 node’s root is different from the context object’s 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 node’s 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 node’s root is different from the context object’s root, then throw * a "WrongDocumentError" DOMException. * 2. If node is a doctype, then throw an "InvalidNodeTypeError" DOMException. * 3. If offset is greater than node’s 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 node’s root is different from the context object’s root, return false. */ if (algorithm_1.tree_rootNode(node) !== algorithm_1.range_root(this)) { return false; } /** * 2. Let parent be node’s parent. * 3. If parent is null, return true. */ var parent = node._parent; if (parent === null) return true; /** * 4. Let offset be node’s 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 object’s start node is the context object’s end node * and it is a Text node, then return the substring of that Text node’s data * beginning at the context object’s start offset and ending at the context * object’s 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 object’s start node is a Text node, then append the * substring of that node’s data from the context object’s 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 object’s end node is a Text node, then append the * substring of that node’s data from its start until the context object’s * 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 a’s length; * otherwise null. * 2.2. Let bCodeUnit be the ith code unit of b if i is less than b’s 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 input’s length and whose * bytes have the same values as input’s 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 doesn’t 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 list’s 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+003E GREATER-THAN SIGN). */ markup += ""; /** * 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 "". */ return ""; }; /** * 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 "&". * 4. Replace any occurrences of "<" in markup by "<". * 5. Replace any occurrences of ">" in markup by ">". * 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 += "&"; else if (c === "<") result += "<"; else if (c === ">") result += ">"; 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 "" (U+003E GREATER-THAN SIGN) to markup. * 11. Return the value of markup. */ return node.publicId && node.systemId ? "" : node.publicId ? "" : node.systemId ? "" : ""; }; /** * 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+003F QUESTION MARK, U+003E GREATER-THAN SIGN). * 4. Return the value of markup. */ return ""; }; /** * 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 ""; }; /** * 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 "&" * - """ with """ * - "<" with "<" * - ">" with ">" * 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 += """; else if (c === "&") result += "&"; else if (c === "<") result += "<"; else if (c === ">") result += ">"; 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+003E GREATER-THAN SIGN). */ markup += ""; /** * 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 options’s 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 options’s passive and * once to options’s 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 * worker’s script resource’s has ever been evaluated flag is set, and * listener’s 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 listener’s callback is null, then return. */ if (listener.callback === null) return; /** * 3. If eventTarget’s event listener list does not contain an event listener * whose type is listener’s type, callback is listener’s callback, and capture * is listener’s capture, then append listener to eventTarget’s 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 * worker’s 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 listener’s removed to true and remove listener from eventTarget’s * 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 eventTarget’s 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 agent’s mutation * observers. */ function observer_queueAMutationObserverMicrotask() { /** * 1. If the surrounding agent’s mutation observer microtask queued is true, * then return. * 2. Set the surrounding agent’s 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 agent’s mutation observers. */ function observer_notifyMutationObservers() { var e_1, _a, e_2, _b; /** * 1. Set the surrounding agent’s mutation observer microtask queued to false. * 2. Let notifySet be a clone of the surrounding agent’s mutation observers. * 3. Let signalSet be a clone of the surrounding agent’s signal slots. * 4. Empty the surrounding agent’s 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 mo’s record queue. * 5.2. Empty mo’s record queue. */ var records = infra_1.list.clone(mo._recordQueue); infra_1.list.empty(mo._recordQueue); /** * 5.3. For each node of mo’s node list, remove all transient registered * observers whose observer is mo from node’s 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 mo’s 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 node’s * 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 registered’s options. * 3.2. If none of the following are true * - node is not target and options’s subtree is false * - type is "attributes" and options’s attributes is not true * - type is "attributes", options’s attributeFilter is present, and * options’s attributeFilter does not contain name or namespace is * non-null * - type is "characterData" and options’s characterData is not true * - type is "childList" and options’s 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 registered’s 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 options’s attributeOldValue * is true, or type is "characterData" and options’s * 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 observer’s 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, node’s previous * sibling Text node, if any, and its contiguous Text nodes, and node’s 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, node’s * previous sibling exclusive Text node, if any, and its contiguous * exclusive Text nodes, and node’s 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 node’s 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 node’s data to new data. * 6. Let parent be node’s 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 node’s 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 attribute’s element is null, then set attribute’s value to value. * 2. Otherwise, change attribute from attribute’s 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 object’s 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 object’s 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. document’s origin is context object’s associated document’s origin. */ document._origin = this._associatedDocument._origin; /** * 7. document’s 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 doc’s 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. doc’s origin is context object’s associated document’s 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 mo’s relevant agent’s 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 options’s attributeOldValue or attributeFilter is present * and options’s attributes is omitted, then set options’s attributes * to true. * 2. If options’s characterDataOldValue is present and options’s * characterData is omitted, then set options’s characterData to true. * 3. If none of options’s childList, attributes, and characterData is * true, then throw a TypeError. * 4. If options’s attributeOldValue is true and options’s attributes is * false, then throw a TypeError. * 5. If options’s attributeFilter is present and options’s attributes is * false, then throw a TypeError. * 6. If options’s characterDataOldValue is true and options’s 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 target’s registered observer list, if * registered’s 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 object’s node list, remove all * transient registered observers whose source is registered from node’s * 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 registered’s 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 target’s registered observer list. * 8.2. Append target to the context object’s 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 object’s node list, remove any * registered observer from node’s 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 object’s record queue. */ this._recordQueue = []; }; /** @inheritdoc */ MutationObserverImpl.prototype.takeRecords = function () { /** * 1. Let records be a clone of the context object’s record queue. * 2. Empty the context object’s 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 slot’s relevant agent’s 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 slotable’s parent is null, then return null. * 2. Let shadow be slotable’s parent’s shadow root. * 3. If shadow is null, then return null. * 4. If the open flag is set and shadow’s mode is not "open", then * return null. * 5. Return the first slot in tree order in shadow’s descendants whose name * is slotable’s 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 slot’s 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 slot’s root’s 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 slot’s 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 slot’s 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 slot’s assigned nodes to slotables. * 4. For each slotable in slotables, set slotable’s 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 root’s 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() + ""; return markup; }; /** @inheritdoc */ XMLCBWriter.prototype.docType = function (name, publicId, systemId) { var markup = this._beginLine(); if (publicId && systemId) { markup += ""; } else if (publicId) { markup += ""; } else if (systemId) { markup += ""; } else { markup += ""; } return markup; }; /** @inheritdoc */ XMLCBWriter.prototype.comment = function (data) { return this._beginLine() + ""; }; /** @inheritdoc */ XMLCBWriter.prototype.text = function (data) { return this._beginLine() + data; }; /** @inheritdoc */ XMLCBWriter.prototype.instruction = function (target, data) { if (data) { return this._beginLine() + ""; } else { return this._beginLine() + ""; } }; /** @inheritdoc */ XMLCBWriter.prototype.cdata = function (data) { return this._beginLine() + ""; }; /** @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 ">"; } else if (this._writerOptions.spaceBeforeSlash) { return " />"; } else { return "/>"; } } else { return ">"; } }; /** @inheritdoc */ XMLCBWriter.prototype.closeTag = function (name) { return this._beginLine() + ""; }; /** @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 attribute’s 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 sequence’s 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 a’s length; otherwise null. * 2.3. Let bByte be the ith byte of b if i is less than b’s 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 input’s length and whose code points have the same values as * input’s 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 iterator’s reference. * 2. Let beforeNode be iterator’s 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 iterator’s 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 iterator’s 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 iterator’s reference to node. * 5. Set iterator’s 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 nodeIterator’s * reference, or toBeRemovedNode is nodeIterator’s root, then return. */ if (toBeRemovedNode === nodeIterator._root || !TreeAlgorithm_1.tree_isAncestorOf(nodeIterator._reference, toBeRemovedNode, true)) { return; } /** * 2. If nodeIterator’s pointer before reference is true, then: */ if (nodeIterator._pointerBeforeReference) { /** * 2.1. Let next be toBeRemovedNode’s first following node that is an * inclusive descendant of nodeIterator’s 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 nodeIterator’s reference to next * and return. */ nodeIterator._reference = nextNode; return; } else if (nextNode === null) { /** * 2.3. Otherwise, set nodeIterator’s pointer before reference to false. */ nodeIterator._pointerBeforeReference = false; return; } } } /** * 3. Set nodeIterator’s reference to toBeRemovedNode’s parent, if * toBeRemovedNode’s previous sibling is null, and to the inclusive * descendant of toBeRemovedNode’s 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 slot’s 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 element’s name to the * empty string. * 1.5. Otherwise, set element’s name to value. * 1.6. Run assign slotables for a tree with element’s 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 slotable’s 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 element’s name to * the empty string. * 1.5. Otherwise, set element’s name to value. * 1.6. If element is assigned, then run assign slotables for element’s * 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 element’s ID. * 2. Otherwise, if localName is id, namespace is null, then set element’s * 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 child’s 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 attribute’s 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 attribute’s local name, namespace is null, * and value is null, then empty token set. * 2. Otherwise, if localName is associated attribute’s 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 object’s token set’s * 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 object’s token set’s * size, then return null. * 2. Return context object’s 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 * object’s 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 object’s 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 object’s 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 object’s 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 object’s 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 * object’s 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 object’s token set does not contain token, then return * false. */ if (!this._tokenSet.has(token)) return false; /** * 4. Replace token in context object’s 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 object’s * 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 attribute’s 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 event’s 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 object’s path. * 3. If path is empty, then return composedPath. * 4. Let currentTarget be the context object’s 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 path’s 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 path’s 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 object’s 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 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 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+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+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 "". */ 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 "&". * 4. Replace any occurrences of "<" in markup by "<". * 5. Replace any occurrences of ">" in markup by ">". * 6. Return the value of markup. */ var markup = ""; if (noDoubleEncoding) { markup = node.data.replace(/(?!&(lt|gt|amp|apos|quot);)&/g, '&') .replace(//g, '>'); } else { for (var i = 0; i < node.data.length; i++) { var c = node.data[i]; if (c === "&") markup += "&"; else if (c === "<") markup += "<"; else if (c === ">") markup += ">"; 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 "" (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+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 "&" * - """ with """ * - "<" with "<" * - ">" with ">" * 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, '&') .replace(//g, '>') .replace(/"/g, '"'); } else { var result = ""; for (var i = 0; i < value.length; i++) { var c = value[i]; if (c === "\"") result += """; else if (c === "&") result += "&"; else if (c === "<") result += "<"; else if (c === ">") result += ">"; 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 traverser’s active flag is set, then throw an "InvalidStateError" * DOMException. */ if (traverser._activeFlag) { throw new DOMException_1.InvalidStateError(); } /** * 2. Let n be node’s nodeType attribute value − 1. */ var n = node._nodeType - 1; /** * 3. If the nth bit (where 0 is the least significant bit) of traverser’s * whatToShow is not set, then return FILTER_SKIP. */ var mask = 1 << n; if ((traverser.whatToShow & mask) === 0) { return interfaces_1.FilterResult.Skip; } /** * 4. If traverser’s filter is null, then return FILTER_ACCEPT. */ if (!traverser.filter) { return interfaces_1.FilterResult.Accept; } /** * 5. Set traverser’s active flag. */ traverser._activeFlag = true; /** * 6. Let result be the return value of call a user object’s operation with * traverser’s filter, "acceptNode", and « node ». If this throws an * exception, then unset traverser’s 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 traverser’s 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 node’s next sibling. * 4. Adopt node into parent’s 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 node’s 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 child’s previous sibling or parent’s 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 parent’s children. * 7.2. Otherwise, insert node into parent’s children before child’s * 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 node’s 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 child’s previous sibling or parent’s 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 parent’s children. * 7.2. Otherwise, insert node into parent’s children before child’s * 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 child’s 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 child’s next sibling. * 8. If reference child is node, set it to node’s next sibling. * 8. Let previousSibling be child’s previous sibling. */ var referenceChild = child._nextSibling; if (referenceChild === node) referenceChild = node._nextSibling; var previousSibling = child._previousSibling; /** * 10. Adopt node into parent’s node document. * 11. Let removedNodes be the empty list. */ DocumentAlgorithm_1.document_adopt(node, parent._nodeDocument); var removedNodes = []; /** * 12. If child’s 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 node’s 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 parent’s node document. */ if (node !== null) { DocumentAlgorithm_1.document_adopt(node, parent._nodeDocument); } /** * 2. Let removedNodes be parent’s children. */ var removedNodes = Array.from(parent._children); /** * 3. Let addedNodes be the empty list. * 4. If node is DocumentFragment node, then set addedNodes to node’s * 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 parent’s 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 child’s 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 node’s 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 root’s node document is * node’s 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 node’s previous sibling. * 8. Let oldNextSibling be node’s 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 parent’s 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 node’s 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 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); } } /** * 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 node’s * 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 attribute’s 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 attribute’s getter and documentURI attribute’s 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 attribute’s getter must return "BackCompat" if context * object’s 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 attribute’s getter, charset attribute’s getter, and * inputEncoding attribute’s getter, must return context object’s * encoding’s 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 attribute’s 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 attribute’s 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 attribute’s 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 options’s 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 object’s 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 iterator’s root and iterator’s reference to root. * 3. Set iterator’s pointer before reference to true. * 4. Set iterator’s whatToShow to whatToShow. * 5. Set iterator’s 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 walker’s root and walker’s current to root. * 3. Set walker’s whatToShow to whatToShow. * 4. Set walker’s 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 document’s get the parent algorithm, given an event, returns null if * event’s type attribute value is "load" or document does not have a * browsing context, and the document’s 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 options’s 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 node’s node document. * 2. If node’s 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 node’s shadow-including inclusive * descendants: */ var inclusiveDescendant = TreeAlgorithm_1.tree_getFirstDescendantNode(node, true, true); while (inclusiveDescendant !== null) { /** * 3.1.1. Set inclusiveDescendant’s node document to document. * 3.1.2. If inclusiveDescendant is an element, then set the node * document of each attribute in inclusiveDescendant’s 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 node’s 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 parent’s 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 node’s 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, * node’s local name, node’s namespace, node’s namespace prefix, * and node’s is value, with the synchronous custom elements flag unset. * 2.2. For each attribute in node’s 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 copy’s encoding, content type, URL, origin, type, and mode, to those * of node. * - DocumentType * Set copy’s name, public ID, and system ID, to those of node. * - Attr * Set copy’s namespace, namespace prefix, local name, and value, to * those of node. * - Text * - Comment * Set copy’s data, to that of node. * - ProcessingInstruction * Set copy’s 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 copy’s node document and document to copy, if copy is a document, * and set copy’s 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 B’s 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 list’s 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 B’s 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 root’s 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 root’s node document’s 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 element’s 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 element’s first such attribute’s * 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 element’s 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*/g, '>'); } else { for (var i = 0; i < node.data.length; i++) { var c = node.data[i]; if (c === "&") markup += "&"; else if (c === "<") markup += "<"; else if (c === ">") markup += ">"; 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, '&') .replace(//g, '>') .replace(/"/g, '"'); } else { var result = ""; for (var i = 0; i < value.length; i++) { var c = value[i]; if (c === "\"") result += """; else if (c === "&") result += "&"; else if (c === "<") result += "<"; else if (c === ">") result += ">"; 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 object’s 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 root’s get the parent algorithm, given an event, returns null * if event’s composed flag is unset and shadow root is the root of * event’s path’s first struct’s invocation target, and shadow root’s 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 = 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); class AdoptDistribution extends base_installer_1.JavaBase { constructor(installerOptions) { super('Adopt', installerOptions); } 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 }; }); } 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`, `jvm_impl=hotspot`, 'sort_method=DEFAULT', 'sort_order=DESC', `os=${platform}`, `architecture=${arch}`, `image_type=${imageType}`, `release_type=${releaseType}` ].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* 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 object’s relevant global object is a * ServiceWorkerGlobalScope object and its associated service worker’s * script resource’s 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 object’s 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 event’s dispatch flag is set, or if its initialized flag is not * set, then throw an "InvalidStateError" DOMException. * 2. Initialize event’s 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 object’s current. * 2. While node is non-null and is not the context object’s root: */ var node = this._current; while (node !== null && node !== this._root) { /** * 2.1. Set node to node’s parent. * 2.2. If node is non-null and filtering node within the context object * returns FILTER_ACCEPT, then set the context object’s 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 object’s current. * 2. While node is not the context object’s root: */ var node = this._current; while (node !== this._root) { /** * 2.1. Let sibling be node’s 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 node’s 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 object’s * current to node and return node. */ if (result === interfaces_1.FilterResult.Accept) { this._current = node; return node; } /** * 2.2.5. Set sibling to node’s previous sibling. */ sibling = node._previousSibling; } /** * 2.3. If node is the context object’s root or node’s parent is null, * then return null. */ if (node === this._root || node._parent === null) { return null; } /** * 2.4. Set node to node’s parent. */ node = node._parent; /** * 2.5. If the return value of filtering node within the context object is * FILTER_ACCEPT, then set the context object’s 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 object’s 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 object’s * 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 object’s root, then return null. */ if (temporary === this._root) { return null; } /** * 3.4.2. Set sibling to temporary’s 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 temporary’s 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 object’s 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 isn’t 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 init’s startContainer or endContainer is a DocumentType or Attr * node, then throw an "InvalidNodeTypeError" DOMException. * 2. Let staticRange be a new StaticRange object. * 3. Set staticRange’s start to (init’s startContainer, init’s startOffset) * and end to (init’s endContainer, init’s 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 object’s 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 attr’s 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 attr’s 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 object’s 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 object’s * 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 object’s 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 object’s 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 object’s 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 object’s 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 object’s 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 object’s local name is a valid custom element name, * or context object’s is value is not null, then: * 3.1. Let definition be the result of looking up a custom element * definition given context object’s node document, its namespace, its * local name, and its is value. * 3.2. If definition is not null and definition’s 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 * object’s node document, host is context object, and mode is init’s mode. * 6. Set context object’s 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 object’s 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 object’s 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 object’s 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 element’s 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 object’s 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 walker’s current. * 2. Set node to node’s first child if type is first, and node’s 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 walker’s 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 node’s first child if type is first, and node’s * 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 node’s next sibling if type is first, and * node’s 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 node’s parent. * 3.4.4. If parent is null, walker’s root, or walker’s 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 walker’s 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 node’s next sibling if type is next, and node’s * 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 walker’s 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 node’s first child if type is next, and node’s * last child if type is previous. * 3.2.5. If result is FILTER_REJECT or sibling is null, then set * sibling to node’s next sibling if type is next, and node’s 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 node’s parent. * 3.4. If node is null or walker’s 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 signal’s aborted flag is set, then return. * 2. Append algorithm to signal’s 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 signal’s 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 signal’s aborted flag is set, then return. * 2. Set signal’s aborted flag. * 3. For each algorithm in signal’s abort algorithms: run algorithm. * 4. Empty signal’s 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 data’s 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 data’s 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 += ""; this._endLine(); }; /** @inheritdoc */ XMLWriter.prototype.docType = function (name, publicId, systemId) { this._beginLine(); if (publicId && systemId) { this._refs.markup += ""; } else if (publicId) { this._refs.markup += ""; } else if (systemId) { this._refs.markup += ""; } else { this._refs.markup += ""; } 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 += ">"; } 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 += ""; } 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 += ""; this._endLine(); } }; /** @inheritdoc */ XMLWriter.prototype.comment = function (data) { this._beginLine(); this._refs.markup += ""; this._endLine(); }; /** @inheritdoc */ XMLWriter.prototype.instruction = function (target, data) { this._beginLine(); this._refs.markup += ""; 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 url’s scheme and U+003A (:) concatenated. */ var output = url.scheme + ':'; /** * 2. If url’s 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 url’s username to output. * 2.2.2. If url’s password is not the empty string, then append U+003A (:), * followed by url’s password, to output. * 2.2.3. Append U+0040 (@) to output. */ output += url.username; if (url.password !== '') { output += ':' + url.password; } output += '@'; } /** * 2.3. Append url’s host, serialized, to output. * 2.4. If url’s port is non-null, append U+003A (:) followed by url’s 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 url’s host is null and url’s scheme is "file", append "//" to output. */ output += '//'; } /** * 4. If url’s cannot-be-a-base-URL flag is set, append url’s path[0] to * output. * 5. Otherwise, then for each string in url’s 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 url’s query is non-null, append U+003F (?), followed by url’s * query, to output. * 7. If the exclude fragment flag is unset and url’s fragment is non-null, * append U+0023 (#), followed by url’s 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 address’s 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 address’s 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 url’s scheme is not "blob", return url. * 4. Set url’s 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 url’s scheme is a special scheme and buffer is not a * special scheme, then return. * 2.1.2. If url’s 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 url’s 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 url’s scheme to buffer. */ url.scheme = buffer; /** * 2.3. If state override is given, then: * 2.3.1. If url’s port is url’s scheme’s default port, then set * url’s 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 url’s 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 base’s * scheme is equal to url’s 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 url’s cannot-be-a-base-URL flag, append an * empty string to url’s 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 base’s cannot-be-a-base-URL flag is set * and c is not U+0023 (#), validation error, return failure. * 2. Otherwise, if base’s cannot-be-a-base-URL flag is set and * c is U+0023 (#), set url’s scheme to base’s scheme, url’s path to * a copy of base’s path, url’s query to base’s query, url’s * fragment to the empty string, set url’s cannot-be-a-base-URL * flag, and set state to fragment state. * 3. Otherwise, if base’s 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 url’s scheme to base’s 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 url’s username to base’s username, url’s password to base’s * password, url’s host to base’s host, url’s port to base’s port, * url’s path to a copy of base’s path, and url’s query to base’s * 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 url’s username to base’s username, url’s password to base’s * password, url’s host to base’s host, url’s port to base’s port, * url’s path to a copy of base’s path, url’s 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 url’s username to base’s username, url’s password to base’s * password, url’s host to base’s host, url’s port to base’s port, * url’s path to a copy of base’s path, url’s query to base’s * query, url’s 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 url’s username to base’s username, url’s password to * base’s password, url’s host to base’s host, url’s port to * base’s port, url’s path to a copy of base’s path, and then * remove url’s path’s 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 url’s username to base’s username, url’s password * to base’s password, url’s host to base’s host, url’s port to base’s * 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 url’s password. * 1.4.4. Otherwise, append encodedCodePoints to url’s 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 url’s 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 url’s 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 url’s 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 url’s 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 url’s port to null, if port is url’s scheme’s 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 url’s 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 base’s scheme is "file", * switch on c: */ switch (walker.c()) { case EOF: /** * Set url’s host to base’s host, url’s path to a copy of base’s * path, and url’s query to base’s query. */ url.host = baseURL.host; url.path = infra_1.list.clone(baseURL.path); url.query = baseURL.query; break; case '?': /** * Set url’s host to base’s host, url’s path to a copy of base’s * path, url’s 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 url’s host to base’s host, url’s path to a copy of base’s * path, url’s query to base’s query, url’s 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 url’s host to base’s * host, url’s path to a copy of base’s path, and then shorten * url’s 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, base’s scheme is "file", and the * substring from pointer in input does not start with a Windows * drive letter, then: * 2.1.1. If base’s path[0] is a normalized Windows drive letter, * then append base’s path[0] to url’s path. * _Note:_ is a (platform-independent) Windows drive letter * quirk. Both url’s and base’s host are null under these conditions * and therefore not copied. * 2.1.2. Otherwise, set url’s host to base’s 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 url’s 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 url’s 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 url’s 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 url’s 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 url’s path, * and then if neither c is U+002F (/), nor url is special and c is * U+005C (\), append the empty string to url’s 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 url’s 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 url’s scheme is "file", url’s path is empty, and * buffer is a Windows drive letter, then: * 1.4.1.1. If url’s host is neither the empty string nor null, * validation error, set url’s 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 url’s path. */ url.path.push(buffer); } /** * 1.5. Set buffer to the empty string. */ buffer = ""; /** * 1.6. If url’s scheme is "file" and c is the EOF code point, * U+003F (?), or U+0023 (#), then while url’s path’s size is * greater than 1 and url’s path[0] is the empty string, validation * error, remove the first item from url’s 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 url’s query to the empty string * and state to query state. * 1.8. If c is U+0023 (#), then set url’s 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 url’s query to the empty string and * state to query state. * 2. Otherwise, if c is U+0023 (#), then set url’s 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 url’s * 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 * - url’s 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 * url’s 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 url’s 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 url’s query. * 3.5.2. Otherwise, append a code point whose value is byte to * url’s 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 url’s 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 url’s 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 url’s 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 url’s 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 url’s 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 url’s path. * 2. If path is empty, then return. * 3. If url’s scheme is "file", path’s size is 1, and path[0] is a * normalized Windows drive letter, then return. * 4. Remove path’s 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 * tuple’s name, using encoding. */ var name = urlEncodedByteSerializer(util_1.utf8Encode(tuple[0])); /** * 4.2. Let value be tuple’s value. */ var value = tuple[1]; /** * TODO: * 4.3. If value is a file, then set value to value’s 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 URL’s origin is the origin returned by running these steps, switching * on URL’s scheme: * "blob" * 1. If URL’s blob URL entry is non-null, then return URL’s blob URL * entry’s environment’s origin. * 2. Let url be the result of parsing URL’s path[0]. * 3. Return a new opaque origin, if url is failure, and url’s origin * otherwise. * "ftp" * "http" * "https" * "ws" * "wss" * Return a tuple consisting of URL’s scheme, URL’s host, URL’s 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 URL’s blob URL entry’s environment’s 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 attribute’s 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 eventInterface’s * 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 event’s 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 event’s initialized flag. * 3. Initialize event’s 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 event’s 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 event’s type attribute to the empty string. * 7. Initialize event’s timeStamp attribute to a DOMHighResTimeStamp * representing the high resolution time from the time origin to now. * 8. Initialize event’s isTrusted attribute to false. * 9. Unset event’s 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 attribute’s 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 attribute’s 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 data’s 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 B’s root has a non-null host and * A is a host-including inclusive ancestor of B’s root’s 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. 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 attribute’s 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 attribute’s 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 attribute’s 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 attribute’s 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 object’s node document. * 2. Pre-insert node into context object before the context object’s 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 object’s 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 attribute’s getter must return node document’s 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 attribute’s 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 attribute’s getter must return null, if the context * object is a document, and the context object’s 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 * object’s shadow-including root if options’s composed is true, * and context object’s root otherwise. */ return algorithm_1.tree_rootNode(this, !!options && options.composed); }; Object.defineProperty(NodeImpl.prototype, "parentNode", { /** * Returns the parent node. */ get: function () { /** * The parentNode attribute’s getter must return the context object’s 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 attribute’s getter must return the context object’s * 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 attribute’s 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 attribute’s getter must return the context object’s first * child. */ return this._firstChild; }, enumerable: true, configurable: true }); Object.defineProperty(NodeImpl.prototype, "lastChild", { /** * Returns the last child node. */ get: function () { /** * The lastChild attribute’s getter must return the context object’s last * child. */ return this._lastChild; }, enumerable: true, configurable: true }); Object.defineProperty(NodeImpl.prototype, "previousSibling", { /** * Returns the previous sibling node. */ get: function () { /** * The previousSibling attribute’s getter must return the context object’s * 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 attribute’s getter must return the context object’s * 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 node’s 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 node’s 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 node’s 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 currentNode’s parent and * start offset is currentNode’s index, set its start node to node and * its start offset to length. * 6.4. For each live range whose end node is currentNode’s parent and * end offset is currentNode’s 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 currentNode’s length to length. * 6.6. Set currentNode to its next sibling. */ length += algorithm_1.tree_nodeLength(currentNode); currentNode = currentNode._nextSibling; } } /** * 7. Remove node’s 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. * attr1’s 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 * attr1’s 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 attr2’s 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 node2’s 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 node1’s root is not node2’s 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 node’s get the parent algorithm, given an event, returns the node’s * assigned slot, if node is assigned, and node’s 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 object’s 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 object’s 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 object’s node document. */ var node = algorithm_1.parentNode_convertNodesIntoANode(nodes, context._nodeDocument); /** * 5. If viablePreviousSibling is null, set it to parent’s first child, * and to viablePreviousSibling’s 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 object’s 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 object’s 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 object’s 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 object’s 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 object’s 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 object’s node document. */ var node = algorithm_1.parentNode_convertNodesIntoANode(nodes, context._nodeDocument); /** * 5. If context object’s 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 object’s parent is null, then return. * 2. Remove the context object from context object’s 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 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 /***/ }) /******/ ]);