Precise DOM morphing
morphing typescript dom

Set up test framework

+4802 -103
+2
.gitignore
··· 1 + node_modules 2 + .DS_Store
+116
dist/morphlite.js
··· 1 + export function morph(from, to) { 2 + const idMap = new Map(); 3 + if (isElement(from) && isElement(to)) { 4 + populateIdMapForNode(from, idMap); 5 + populateIdMapForNode(to, idMap); 6 + } 7 + morphNodes(from, to, idMap); 8 + } 9 + function morphNodes(from, to, idMap, insertBefore, parent) { 10 + if (parent && insertBefore && insertBefore !== from) 11 + parent.insertBefore(to, insertBefore); 12 + if (isText(from) && isText(to)) { 13 + if (from.textContent !== to.textContent) 14 + from.textContent = to.textContent; 15 + } 16 + else if (isElement(from) && isElement(to)) { 17 + if (from.tagName === to.tagName) { 18 + if (to.attributes.length > 0) 19 + morphAttributes(from, to); 20 + if (to.childNodes.length > 0) 21 + morphChildNodes(from, to, idMap); 22 + } 23 + else 24 + from.replaceWith(to.cloneNode(true)); 25 + } 26 + else { 27 + throw new Error(`Cannot morph nodes of different types: from is ${from.constructor.name}, to is ${to.constructor.name}`); 28 + } 29 + } 30 + function morphAttributes(from, to) { 31 + for (const { name } of from.attributes) 32 + to.hasAttribute(name) || from.removeAttribute(name); 33 + for (const { name, value } of to.attributes) 34 + from.getAttribute(name) !== value && from.setAttribute(name, value); 35 + if (isInput(from) && isInput(to)) 36 + from.value = to.value; 37 + if (isOption(from) && isOption(to)) 38 + from.selected = to.selected; 39 + if (isTextArea(from) && isTextArea(to)) 40 + from.value = to.value; 41 + } 42 + function morphChildNodes(from, to, idMap) { 43 + var _a; 44 + for (let i = 0; i < to.childNodes.length; i++) { 45 + const childA = [...from.childNodes].at(i); 46 + const childB = [...to.childNodes].at(i); 47 + if (childA && childB) 48 + morphChildNode(childA, childB, idMap, from); 49 + else if (childB) 50 + from.appendChild(childB.cloneNode(true)); 51 + } 52 + console.log("Got here ", from.childNodes.length, to.childNodes.length, from.childNodes[0]); 53 + while (from.childNodes.length > to.childNodes.length) 54 + (_a = from.lastChild) === null || _a === void 0 ? void 0 : _a.remove(); 55 + } 56 + function morphChildNode(from, to, idMap, parent) { 57 + if (isElement(from) && isElement(to)) { 58 + let current = from; 59 + let nextBestMatch = null; 60 + while (current && isElement(current)) { 61 + if (current.id !== "" && current.id === to.id) { 62 + morphNodes(current, to, idMap, from, parent); 63 + break; 64 + } 65 + else { 66 + const setA = idMap.get(current); 67 + const setB = idMap.get(to); 68 + if (setA && setB && numberOfItemsInCommon(setA, setB) > 0) { 69 + return morphNodes(current, to, idMap, from, parent); 70 + } 71 + else if (!nextBestMatch && current.tagName === to.tagName) { 72 + nextBestMatch = current; 73 + } 74 + } 75 + current = current.nextSibling; 76 + } 77 + if (nextBestMatch) 78 + morphNodes(nextBestMatch, to, idMap, from, parent); 79 + else 80 + from.replaceWith(to.cloneNode(true)); 81 + } 82 + else 83 + morphNodes(from, to, idMap); 84 + } 85 + function populateIdMapForNode(node, idMap) { 86 + const parent = node.parentElement; 87 + const elements = node.querySelectorAll("[id]"); 88 + for (const element of elements) { 89 + if (element.id === "") 90 + continue; 91 + let current = element; 92 + while (current && current !== parent) { 93 + const idSet = idMap.get(current); 94 + idSet ? idSet.add(element.id) : idMap.set(current, new Set([element.id])); 95 + current = current.parentElement; 96 + } 97 + } 98 + } 99 + function numberOfItemsInCommon(a, b) { 100 + return [...a].filter((item) => b.has(item)).length; 101 + } 102 + function isElement(node) { 103 + return node.nodeType === 1; 104 + } 105 + function isText(node) { 106 + return node.nodeType === 3; 107 + } 108 + function isInput(element) { 109 + return element.localName === "input"; 110 + } 111 + function isOption(element) { 112 + return element.localName === "option"; 113 + } 114 + function isTextArea(element) { 115 + return element.localName === "textarea"; 116 + }
-95
morphlite.ts
··· 1 - type IdSet = Set<string>; 2 - type IdMap = Map<Node, IdSet>; 3 - 4 - export default function tinyMorph(from: Node, to: Node): void { 5 - const idMap: IdMap = new Map(); 6 - 7 - if (from instanceof Element && to instanceof Element) { 8 - populateIdMapForNode(from, idMap); 9 - populateIdMapForNode(to, idMap); 10 - } 11 - 12 - morph(from, to, idMap); 13 - } 14 - 15 - function morph(from: Node, to: Node, idMap: IdMap, insertBefore?: Node, parent?: Node): void { 16 - if (parent && insertBefore && insertBefore !== from) parent.insertBefore(to, insertBefore); 17 - 18 - if (from instanceof Text && to instanceof Text) { 19 - from.textContent = to.textContent; 20 - } else if (from instanceof Element && to instanceof Element) { 21 - if (from.tagName === to.tagName) { 22 - if (to.attributes.length > 0) morphAttributes(from, to); 23 - if (to.childNodes.length > 0) morphChildNodes(from, to, idMap); 24 - } else from.replaceWith(to.cloneNode(true)); 25 - } 26 - } 27 - 28 - function morphAttributes(from: Element, to: Element): void { 29 - for (const { name } of from.attributes) to.hasAttribute(name) || from.removeAttribute(name); 30 - for (const { name, value } of to.attributes) from.getAttribute(name) !== value && from.setAttribute(name, value); 31 - 32 - if (from instanceof HTMLInputElement && to instanceof HTMLInputElement) from.value = to.value; 33 - if (from instanceof HTMLOptionElement && to instanceof HTMLOptionElement) from.selected = to.selected; 34 - if (from instanceof HTMLTextAreaElement && to instanceof HTMLTextAreaElement) from.value = to.value; 35 - } 36 - 37 - function morphChildNodes(from: Element, to: Element, idMap: IdMap): void { 38 - for (let i = 0; i < to.childNodes.length; i++) { 39 - const childA = from.childNodes[i] as ChildNode | undefined; 40 - const childB = to.childNodes[i] as ChildNode | undefined; 41 - 42 - if (childA && childB) morphChildNode(childA, childB, idMap, from); 43 - else if (childB) from.appendChild(childB.cloneNode(true)); 44 - } 45 - 46 - while (from.childNodes.length > to.childNodes.length) from.lastChild?.remove(); 47 - } 48 - 49 - function morphChildNode(from: ChildNode, to: ChildNode, idMap: IdMap, parent: Element): void { 50 - if (from instanceof Element && to instanceof Element) { 51 - let current: ChildNode | null = from; 52 - let nextBestMatch: ChildNode | null = null; 53 - 54 - while (current && current instanceof Element) { 55 - if (current.id !== "" && current.id === to.id) { 56 - morph(current, to, idMap, from, parent); 57 - break; 58 - } else { 59 - const setA = idMap.get(current) as IdSet | undefined; 60 - const setB = idMap.get(to) as IdSet | undefined; 61 - 62 - if (setA && setB && numberOfItemsInCommon(setA, setB) > 0) { 63 - return morph(current, to, idMap, from, parent); 64 - } else if (!nextBestMatch && current.tagName === to.tagName) { 65 - nextBestMatch = current; 66 - } 67 - } 68 - 69 - current = current.nextSibling; 70 - } 71 - 72 - if (nextBestMatch) morph(nextBestMatch, to, idMap, from, parent); 73 - else from.replaceWith(to.cloneNode(true)); 74 - } else morph(from, to, idMap); 75 - } 76 - 77 - function populateIdMapForNode(node: ParentNode, idMap: IdMap): void { 78 - const parent: HTMLElement | null = node.parentElement; 79 - const elements: NodeListOf<Element> = node.querySelectorAll("[id]"); 80 - 81 - for (const element of elements) { 82 - if (element.id === "") continue; 83 - let current: Element | null = element; 84 - 85 - while (current && current !== parent) { 86 - const idSet: IdSet | undefined = idMap.get(current); 87 - idSet ? idSet.add(element.id) : idMap.set(current, new Set([element.id])); 88 - current = current.parentElement; 89 - } 90 - } 91 - } 92 - 93 - function numberOfItemsInCommon<T>(a: Set<T>, b: Set<T>): number { 94 - return [...a].filter((item) => b.has(item)).length; 95 - }
+4491
package-lock.json
··· 1 + { 2 + "name": "morphlite", 3 + "version": "0.0.1", 4 + "lockfileVersion": 3, 5 + "requires": true, 6 + "packages": { 7 + "": { 8 + "name": "morphlite", 9 + "version": "0.0.1", 10 + "license": "MIT", 11 + "devDependencies": { 12 + "@open-wc/testing": "^3.0.0-next.5", 13 + "@web/test-runner": "^0.18.0", 14 + "typescript": "^5.3.3" 15 + } 16 + }, 17 + "node_modules/@75lb/deep-merge": { 18 + "version": "1.1.1", 19 + "resolved": "https://registry.npmjs.org/@75lb/deep-merge/-/deep-merge-1.1.1.tgz", 20 + "integrity": "sha512-xvgv6pkMGBA6GwdyJbNAnDmfAIR/DfWhrj9jgWh3TY7gRm3KO46x/GPjRg6wJ0nOepwqrNxFfojebh0Df4h4Tw==", 21 + "dev": true, 22 + "dependencies": { 23 + "lodash.assignwith": "^4.2.0", 24 + "typical": "^7.1.1" 25 + }, 26 + "engines": { 27 + "node": ">=12.17" 28 + } 29 + }, 30 + "node_modules/@75lb/deep-merge/node_modules/typical": { 31 + "version": "7.1.1", 32 + "resolved": "https://registry.npmjs.org/typical/-/typical-7.1.1.tgz", 33 + "integrity": "sha512-T+tKVNs6Wu7IWiAce5BgMd7OZfNYUndHwc5MknN+UHOudi7sGZzuHdCadllRuqJ3fPtgFtIH9+lt9qRv6lmpfA==", 34 + "dev": true, 35 + "engines": { 36 + "node": ">=12.17" 37 + } 38 + }, 39 + "node_modules/@babel/code-frame": { 40 + "version": "7.23.5", 41 + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", 42 + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", 43 + "dev": true, 44 + "dependencies": { 45 + "@babel/highlight": "^7.23.4", 46 + "chalk": "^2.4.2" 47 + }, 48 + "engines": { 49 + "node": ">=6.9.0" 50 + } 51 + }, 52 + "node_modules/@babel/helper-validator-identifier": { 53 + "version": "7.22.20", 54 + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", 55 + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", 56 + "dev": true, 57 + "engines": { 58 + "node": ">=6.9.0" 59 + } 60 + }, 61 + "node_modules/@babel/highlight": { 62 + "version": "7.23.4", 63 + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", 64 + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", 65 + "dev": true, 66 + "dependencies": { 67 + "@babel/helper-validator-identifier": "^7.22.20", 68 + "chalk": "^2.4.2", 69 + "js-tokens": "^4.0.0" 70 + }, 71 + "engines": { 72 + "node": ">=6.9.0" 73 + } 74 + }, 75 + "node_modules/@esm-bundle/chai": { 76 + "version": "4.3.4", 77 + "resolved": "https://registry.npmjs.org/@esm-bundle/chai/-/chai-4.3.4.tgz", 78 + "integrity": "sha512-6Tx35wWiNw7X0nLY9RMx8v3EL8SacCFW+eEZOE9Hc+XxmU5HFE2AFEg+GehUZpiyDGwVvPH75ckGlqC7coIPnA==", 79 + "dev": true, 80 + "dependencies": { 81 + "@types/chai": "^4.2.12" 82 + } 83 + }, 84 + "node_modules/@jridgewell/resolve-uri": { 85 + "version": "3.1.2", 86 + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 87 + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 88 + "dev": true, 89 + "engines": { 90 + "node": ">=6.0.0" 91 + } 92 + }, 93 + "node_modules/@jridgewell/sourcemap-codec": { 94 + "version": "1.4.15", 95 + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", 96 + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", 97 + "dev": true 98 + }, 99 + "node_modules/@jridgewell/trace-mapping": { 100 + "version": "0.3.22", 101 + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", 102 + "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", 103 + "dev": true, 104 + "dependencies": { 105 + "@jridgewell/resolve-uri": "^3.1.0", 106 + "@jridgewell/sourcemap-codec": "^1.4.14" 107 + } 108 + }, 109 + "node_modules/@lit-labs/ssr-dom-shim": { 110 + "version": "1.2.0", 111 + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.0.tgz", 112 + "integrity": "sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==", 113 + "dev": true 114 + }, 115 + "node_modules/@lit/reactive-element": { 116 + "version": "2.0.4", 117 + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz", 118 + "integrity": "sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==", 119 + "dev": true, 120 + "dependencies": { 121 + "@lit-labs/ssr-dom-shim": "^1.2.0" 122 + } 123 + }, 124 + "node_modules/@nodelib/fs.scandir": { 125 + "version": "2.1.5", 126 + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 127 + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 128 + "dev": true, 129 + "dependencies": { 130 + "@nodelib/fs.stat": "2.0.5", 131 + "run-parallel": "^1.1.9" 132 + }, 133 + "engines": { 134 + "node": ">= 8" 135 + } 136 + }, 137 + "node_modules/@nodelib/fs.stat": { 138 + "version": "2.0.5", 139 + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 140 + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 141 + "dev": true, 142 + "engines": { 143 + "node": ">= 8" 144 + } 145 + }, 146 + "node_modules/@nodelib/fs.walk": { 147 + "version": "1.2.8", 148 + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 149 + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 150 + "dev": true, 151 + "dependencies": { 152 + "@nodelib/fs.scandir": "2.1.5", 153 + "fastq": "^1.6.0" 154 + }, 155 + "engines": { 156 + "node": ">= 8" 157 + } 158 + }, 159 + "node_modules/@open-wc/chai-dom-equals": { 160 + "version": "0.12.36", 161 + "resolved": "https://registry.npmjs.org/@open-wc/chai-dom-equals/-/chai-dom-equals-0.12.36.tgz", 162 + "integrity": "sha512-Gt1fa37h4rtWPQGETSU4n1L678NmMi9KwHM1sH+JCGcz45rs8DBPx7MUVeGZ+HxRlbEI5t9LU2RGGv6xT2OlyA==", 163 + "dev": true, 164 + "dependencies": { 165 + "@open-wc/semantic-dom-diff": "^0.13.16", 166 + "@types/chai": "^4.1.7" 167 + } 168 + }, 169 + "node_modules/@open-wc/chai-dom-equals/node_modules/@open-wc/semantic-dom-diff": { 170 + "version": "0.13.21", 171 + "resolved": "https://registry.npmjs.org/@open-wc/semantic-dom-diff/-/semantic-dom-diff-0.13.21.tgz", 172 + "integrity": "sha512-BONpjHcGX2zFa9mfnwBCLEmlDsOHzT+j6Qt1yfK3MzFXFtAykfzFjAgaxPetu0YbBlCfXuMlfxI4vlRGCGMvFg==", 173 + "dev": true 174 + }, 175 + "node_modules/@open-wc/dedupe-mixin": { 176 + "version": "1.4.0", 177 + "resolved": "https://registry.npmjs.org/@open-wc/dedupe-mixin/-/dedupe-mixin-1.4.0.tgz", 178 + "integrity": "sha512-Sj7gKl1TLcDbF7B6KUhtvr+1UCxdhMbNY5KxdU5IfMFWqL8oy1ZeAcCANjoB1TL0AJTcPmcCFsCbHf8X2jGDUA==", 179 + "dev": true 180 + }, 181 + "node_modules/@open-wc/scoped-elements": { 182 + "version": "2.2.4", 183 + "resolved": "https://registry.npmjs.org/@open-wc/scoped-elements/-/scoped-elements-2.2.4.tgz", 184 + "integrity": "sha512-12X4F4QGPWcvPbxAiJ4v8wQFCOu+laZHRGfTrkoj+3JzACCtuxHG49YbuqVzQ135QPKCuhP9wA0kpGGEfUegyg==", 185 + "dev": true, 186 + "dependencies": { 187 + "@lit/reactive-element": "^1.0.0 || ^2.0.0", 188 + "@open-wc/dedupe-mixin": "^1.4.0" 189 + } 190 + }, 191 + "node_modules/@open-wc/semantic-dom-diff": { 192 + "version": "0.19.9", 193 + "resolved": "https://registry.npmjs.org/@open-wc/semantic-dom-diff/-/semantic-dom-diff-0.19.9.tgz", 194 + "integrity": "sha512-iUL0OPA6PeLQVEEJ/gsgkEiwOGgK4E1KS//zTB+u+OAh0NifNTfxDxIHQa7rEGvplaq2b2zztT2yyzOzj+MlAA==", 195 + "dev": true, 196 + "dependencies": { 197 + "@types/chai": "^4.3.1", 198 + "@web/test-runner-commands": "^0.6.5" 199 + } 200 + }, 201 + "node_modules/@open-wc/semantic-dom-diff/node_modules/@web/browser-logs": { 202 + "version": "0.2.6", 203 + "resolved": "https://registry.npmjs.org/@web/browser-logs/-/browser-logs-0.2.6.tgz", 204 + "integrity": "sha512-CNjNVhd4FplRY8PPWIAt02vAowJAVcOoTNrR/NNb/o9pka7yI9qdjpWrWhEbPr2pOXonWb52AeAgdK66B8ZH7w==", 205 + "dev": true, 206 + "dependencies": { 207 + "errorstacks": "^2.2.0" 208 + }, 209 + "engines": { 210 + "node": ">=10.0.0" 211 + } 212 + }, 213 + "node_modules/@open-wc/semantic-dom-diff/node_modules/@web/dev-server-core": { 214 + "version": "0.4.1", 215 + "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.4.1.tgz", 216 + "integrity": "sha512-KdYwejXZwIZvb6tYMCqU7yBiEOPfKLQ3V9ezqqEz8DA9V9R3oQWaowckvCpFB9IxxPfS/P8/59OkdzGKQjcIUw==", 217 + "dev": true, 218 + "dependencies": { 219 + "@types/koa": "^2.11.6", 220 + "@types/ws": "^7.4.0", 221 + "@web/parse5-utils": "^1.3.1", 222 + "chokidar": "^3.4.3", 223 + "clone": "^2.1.2", 224 + "es-module-lexer": "^1.0.0", 225 + "get-stream": "^6.0.0", 226 + "is-stream": "^2.0.0", 227 + "isbinaryfile": "^5.0.0", 228 + "koa": "^2.13.0", 229 + "koa-etag": "^4.0.0", 230 + "koa-send": "^5.0.1", 231 + "koa-static": "^5.0.0", 232 + "lru-cache": "^6.0.0", 233 + "mime-types": "^2.1.27", 234 + "parse5": "^6.0.1", 235 + "picomatch": "^2.2.2", 236 + "ws": "^7.4.2" 237 + }, 238 + "engines": { 239 + "node": ">=10.0.0" 240 + } 241 + }, 242 + "node_modules/@open-wc/semantic-dom-diff/node_modules/@web/parse5-utils": { 243 + "version": "1.3.1", 244 + "resolved": "https://registry.npmjs.org/@web/parse5-utils/-/parse5-utils-1.3.1.tgz", 245 + "integrity": "sha512-haCgDchZrAOB9EhBJ5XqiIjBMsS/exsM5Ru7sCSyNkXVEJWskyyKuKMFk66BonnIGMPpDtqDrTUfYEis5Zi3XA==", 246 + "dev": true, 247 + "dependencies": { 248 + "@types/parse5": "^6.0.1", 249 + "parse5": "^6.0.1" 250 + }, 251 + "engines": { 252 + "node": ">=10.0.0" 253 + } 254 + }, 255 + "node_modules/@open-wc/semantic-dom-diff/node_modules/@web/test-runner-commands": { 256 + "version": "0.6.6", 257 + "resolved": "https://registry.npmjs.org/@web/test-runner-commands/-/test-runner-commands-0.6.6.tgz", 258 + "integrity": "sha512-2DcK/+7f8QTicQpGFq/TmvKHDK/6Zald6rn1zqRlmj3pcH8fX6KHNVMU60Za9QgAKdorMBPfd8dJwWba5otzdw==", 259 + "dev": true, 260 + "dependencies": { 261 + "@web/test-runner-core": "^0.10.29", 262 + "mkdirp": "^1.0.4" 263 + }, 264 + "engines": { 265 + "node": ">=12.0.0" 266 + } 267 + }, 268 + "node_modules/@open-wc/semantic-dom-diff/node_modules/@web/test-runner-core": { 269 + "version": "0.10.29", 270 + "resolved": "https://registry.npmjs.org/@web/test-runner-core/-/test-runner-core-0.10.29.tgz", 271 + "integrity": "sha512-0/ZALYaycEWswHhpyvl5yqo0uIfCmZe8q14nGPi1dMmNiqLcHjyFGnuIiLexI224AW74ljHcHllmDlXK9FUKGA==", 272 + "dev": true, 273 + "dependencies": { 274 + "@babel/code-frame": "^7.12.11", 275 + "@types/babel__code-frame": "^7.0.2", 276 + "@types/co-body": "^6.1.0", 277 + "@types/convert-source-map": "^2.0.0", 278 + "@types/debounce": "^1.2.0", 279 + "@types/istanbul-lib-coverage": "^2.0.3", 280 + "@types/istanbul-reports": "^3.0.0", 281 + "@web/browser-logs": "^0.2.6", 282 + "@web/dev-server-core": "^0.4.1", 283 + "chokidar": "^3.4.3", 284 + "cli-cursor": "^3.1.0", 285 + "co-body": "^6.1.0", 286 + "convert-source-map": "^2.0.0", 287 + "debounce": "^1.2.0", 288 + "dependency-graph": "^0.11.0", 289 + "globby": "^11.0.1", 290 + "ip": "^1.1.5", 291 + "istanbul-lib-coverage": "^3.0.0", 292 + "istanbul-lib-report": "^3.0.0", 293 + "istanbul-reports": "^3.0.2", 294 + "log-update": "^4.0.0", 295 + "nanocolors": "^0.2.1", 296 + "nanoid": "^3.1.25", 297 + "open": "^8.0.2", 298 + "picomatch": "^2.2.2", 299 + "source-map": "^0.7.3" 300 + }, 301 + "engines": { 302 + "node": ">=12.0.0" 303 + } 304 + }, 305 + "node_modules/@open-wc/semantic-dom-diff/node_modules/ip": { 306 + "version": "1.1.9", 307 + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.9.tgz", 308 + "integrity": "sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==", 309 + "dev": true 310 + }, 311 + "node_modules/@open-wc/semantic-dom-diff/node_modules/lru-cache": { 312 + "version": "6.0.0", 313 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 314 + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 315 + "dev": true, 316 + "dependencies": { 317 + "yallist": "^4.0.0" 318 + }, 319 + "engines": { 320 + "node": ">=10" 321 + } 322 + }, 323 + "node_modules/@open-wc/testing": { 324 + "version": "3.0.0-next.5", 325 + "resolved": "https://registry.npmjs.org/@open-wc/testing/-/testing-3.0.0-next.5.tgz", 326 + "integrity": "sha512-n2NrCGql3daWKOuyvdwKqdnm2ArOch+U7yIuvLZGTwtlMXlvZjOAln3CKZCWEmN5lXcgIAb5czeY7CzOmP8QWg==", 327 + "dev": true, 328 + "dependencies": { 329 + "@esm-bundle/chai": "^4.3.4", 330 + "@open-wc/chai-dom-equals": "^0.12.36", 331 + "@open-wc/semantic-dom-diff": "^0.19.5-next.2", 332 + "@open-wc/testing-helpers": "^2.0.0-next.2", 333 + "@types/chai": "^4.2.11", 334 + "@types/chai-dom": "^0.0.9", 335 + "@types/sinon-chai": "^3.2.3", 336 + "chai-a11y-axe": "^1.3.2-next.0" 337 + } 338 + }, 339 + "node_modules/@open-wc/testing-helpers": { 340 + "version": "2.3.2", 341 + "resolved": "https://registry.npmjs.org/@open-wc/testing-helpers/-/testing-helpers-2.3.2.tgz", 342 + "integrity": "sha512-uZMGC/C1m5EiwQsff6KMmCW25TYMQlJt4ilAWIjnelWGFg9HPUiLnlFvAas3ESUP+4OXLO8Oft7p4mHvbYvAEQ==", 343 + "dev": true, 344 + "dependencies": { 345 + "@open-wc/scoped-elements": "^2.2.4", 346 + "lit": "^2.0.0 || ^3.0.0", 347 + "lit-html": "^2.0.0 || ^3.0.0" 348 + } 349 + }, 350 + "node_modules/@puppeteer/browsers": { 351 + "version": "1.4.6", 352 + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.4.6.tgz", 353 + "integrity": "sha512-x4BEjr2SjOPowNeiguzjozQbsc6h437ovD/wu+JpaenxVLm3jkgzHY2xOslMTp50HoTvQreMjiexiGQw1sqZlQ==", 354 + "dev": true, 355 + "dependencies": { 356 + "debug": "4.3.4", 357 + "extract-zip": "2.0.1", 358 + "progress": "2.0.3", 359 + "proxy-agent": "6.3.0", 360 + "tar-fs": "3.0.4", 361 + "unbzip2-stream": "1.4.3", 362 + "yargs": "17.7.1" 363 + }, 364 + "bin": { 365 + "browsers": "lib/cjs/main-cli.js" 366 + }, 367 + "engines": { 368 + "node": ">=16.3.0" 369 + }, 370 + "peerDependencies": { 371 + "typescript": ">= 4.7.4" 372 + }, 373 + "peerDependenciesMeta": { 374 + "typescript": { 375 + "optional": true 376 + } 377 + } 378 + }, 379 + "node_modules/@rollup/plugin-node-resolve": { 380 + "version": "15.2.3", 381 + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz", 382 + "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==", 383 + "dev": true, 384 + "dependencies": { 385 + "@rollup/pluginutils": "^5.0.1", 386 + "@types/resolve": "1.20.2", 387 + "deepmerge": "^4.2.2", 388 + "is-builtin-module": "^3.2.1", 389 + "is-module": "^1.0.0", 390 + "resolve": "^1.22.1" 391 + }, 392 + "engines": { 393 + "node": ">=14.0.0" 394 + }, 395 + "peerDependencies": { 396 + "rollup": "^2.78.0||^3.0.0||^4.0.0" 397 + }, 398 + "peerDependenciesMeta": { 399 + "rollup": { 400 + "optional": true 401 + } 402 + } 403 + }, 404 + "node_modules/@rollup/pluginutils": { 405 + "version": "5.1.0", 406 + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", 407 + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", 408 + "dev": true, 409 + "dependencies": { 410 + "@types/estree": "^1.0.0", 411 + "estree-walker": "^2.0.2", 412 + "picomatch": "^2.3.1" 413 + }, 414 + "engines": { 415 + "node": ">=14.0.0" 416 + }, 417 + "peerDependencies": { 418 + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" 419 + }, 420 + "peerDependenciesMeta": { 421 + "rollup": { 422 + "optional": true 423 + } 424 + } 425 + }, 426 + "node_modules/@rollup/rollup-android-arm-eabi": { 427 + "version": "4.12.0", 428 + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.0.tgz", 429 + "integrity": "sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==", 430 + "cpu": [ 431 + "arm" 432 + ], 433 + "dev": true, 434 + "optional": true, 435 + "os": [ 436 + "android" 437 + ] 438 + }, 439 + "node_modules/@rollup/rollup-android-arm64": { 440 + "version": "4.12.0", 441 + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.0.tgz", 442 + "integrity": "sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==", 443 + "cpu": [ 444 + "arm64" 445 + ], 446 + "dev": true, 447 + "optional": true, 448 + "os": [ 449 + "android" 450 + ] 451 + }, 452 + "node_modules/@rollup/rollup-darwin-arm64": { 453 + "version": "4.12.0", 454 + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.0.tgz", 455 + "integrity": "sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==", 456 + "cpu": [ 457 + "arm64" 458 + ], 459 + "dev": true, 460 + "optional": true, 461 + "os": [ 462 + "darwin" 463 + ] 464 + }, 465 + "node_modules/@rollup/rollup-darwin-x64": { 466 + "version": "4.12.0", 467 + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.0.tgz", 468 + "integrity": "sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==", 469 + "cpu": [ 470 + "x64" 471 + ], 472 + "dev": true, 473 + "optional": true, 474 + "os": [ 475 + "darwin" 476 + ] 477 + }, 478 + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 479 + "version": "4.12.0", 480 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.0.tgz", 481 + "integrity": "sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==", 482 + "cpu": [ 483 + "arm" 484 + ], 485 + "dev": true, 486 + "optional": true, 487 + "os": [ 488 + "linux" 489 + ] 490 + }, 491 + "node_modules/@rollup/rollup-linux-arm64-gnu": { 492 + "version": "4.12.0", 493 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.0.tgz", 494 + "integrity": "sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==", 495 + "cpu": [ 496 + "arm64" 497 + ], 498 + "dev": true, 499 + "optional": true, 500 + "os": [ 501 + "linux" 502 + ] 503 + }, 504 + "node_modules/@rollup/rollup-linux-arm64-musl": { 505 + "version": "4.12.0", 506 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.0.tgz", 507 + "integrity": "sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==", 508 + "cpu": [ 509 + "arm64" 510 + ], 511 + "dev": true, 512 + "optional": true, 513 + "os": [ 514 + "linux" 515 + ] 516 + }, 517 + "node_modules/@rollup/rollup-linux-riscv64-gnu": { 518 + "version": "4.12.0", 519 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.0.tgz", 520 + "integrity": "sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==", 521 + "cpu": [ 522 + "riscv64" 523 + ], 524 + "dev": true, 525 + "optional": true, 526 + "os": [ 527 + "linux" 528 + ] 529 + }, 530 + "node_modules/@rollup/rollup-linux-x64-gnu": { 531 + "version": "4.12.0", 532 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.0.tgz", 533 + "integrity": "sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==", 534 + "cpu": [ 535 + "x64" 536 + ], 537 + "dev": true, 538 + "optional": true, 539 + "os": [ 540 + "linux" 541 + ] 542 + }, 543 + "node_modules/@rollup/rollup-linux-x64-musl": { 544 + "version": "4.12.0", 545 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.0.tgz", 546 + "integrity": "sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==", 547 + "cpu": [ 548 + "x64" 549 + ], 550 + "dev": true, 551 + "optional": true, 552 + "os": [ 553 + "linux" 554 + ] 555 + }, 556 + "node_modules/@rollup/rollup-win32-arm64-msvc": { 557 + "version": "4.12.0", 558 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.0.tgz", 559 + "integrity": "sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==", 560 + "cpu": [ 561 + "arm64" 562 + ], 563 + "dev": true, 564 + "optional": true, 565 + "os": [ 566 + "win32" 567 + ] 568 + }, 569 + "node_modules/@rollup/rollup-win32-ia32-msvc": { 570 + "version": "4.12.0", 571 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.0.tgz", 572 + "integrity": "sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==", 573 + "cpu": [ 574 + "ia32" 575 + ], 576 + "dev": true, 577 + "optional": true, 578 + "os": [ 579 + "win32" 580 + ] 581 + }, 582 + "node_modules/@rollup/rollup-win32-x64-msvc": { 583 + "version": "4.12.0", 584 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.0.tgz", 585 + "integrity": "sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==", 586 + "cpu": [ 587 + "x64" 588 + ], 589 + "dev": true, 590 + "optional": true, 591 + "os": [ 592 + "win32" 593 + ] 594 + }, 595 + "node_modules/@tootallnate/quickjs-emscripten": { 596 + "version": "0.23.0", 597 + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", 598 + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", 599 + "dev": true 600 + }, 601 + "node_modules/@types/accepts": { 602 + "version": "1.3.7", 603 + "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.7.tgz", 604 + "integrity": "sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==", 605 + "dev": true, 606 + "dependencies": { 607 + "@types/node": "*" 608 + } 609 + }, 610 + "node_modules/@types/babel__code-frame": { 611 + "version": "7.0.6", 612 + "resolved": "https://registry.npmjs.org/@types/babel__code-frame/-/babel__code-frame-7.0.6.tgz", 613 + "integrity": "sha512-Anitqkl3+KrzcW2k77lRlg/GfLZLWXBuNgbEcIOU6M92yw42vsd3xV/Z/yAHEj8m+KUjL6bWOVOFqX8PFPJ4LA==", 614 + "dev": true 615 + }, 616 + "node_modules/@types/body-parser": { 617 + "version": "1.19.5", 618 + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", 619 + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", 620 + "dev": true, 621 + "dependencies": { 622 + "@types/connect": "*", 623 + "@types/node": "*" 624 + } 625 + }, 626 + "node_modules/@types/chai": { 627 + "version": "4.3.12", 628 + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.12.tgz", 629 + "integrity": "sha512-zNKDHG/1yxm8Il6uCCVsm+dRdEsJlFoDu73X17y09bId6UwoYww+vFBsAcRzl8knM1sab3Dp1VRikFQwDOtDDw==", 630 + "dev": true 631 + }, 632 + "node_modules/@types/chai-dom": { 633 + "version": "0.0.9", 634 + "resolved": "https://registry.npmjs.org/@types/chai-dom/-/chai-dom-0.0.9.tgz", 635 + "integrity": "sha512-jj4F2NJog2/GBYsyJ8+NvhnWUBbPY4MUAKLdPJE6+568rw12GGXvj0ycUuP5nndVrnJgozmJAoMTvxvjJATXWw==", 636 + "dev": true, 637 + "dependencies": { 638 + "@types/chai": "*" 639 + } 640 + }, 641 + "node_modules/@types/co-body": { 642 + "version": "6.1.3", 643 + "resolved": "https://registry.npmjs.org/@types/co-body/-/co-body-6.1.3.tgz", 644 + "integrity": "sha512-UhuhrQ5hclX6UJctv5m4Rfp52AfG9o9+d9/HwjxhVB5NjXxr5t9oKgJxN8xRHgr35oo8meUEHUPFWiKg6y71aA==", 645 + "dev": true, 646 + "dependencies": { 647 + "@types/node": "*", 648 + "@types/qs": "*" 649 + } 650 + }, 651 + "node_modules/@types/command-line-args": { 652 + "version": "5.2.3", 653 + "resolved": "https://registry.npmjs.org/@types/command-line-args/-/command-line-args-5.2.3.tgz", 654 + "integrity": "sha512-uv0aG6R0Y8WHZLTamZwtfsDLVRnOa+n+n5rEvFWL5Na5gZ8V2Teab/duDPFzIIIhs9qizDpcavCusCLJZu62Kw==", 655 + "dev": true 656 + }, 657 + "node_modules/@types/connect": { 658 + "version": "3.4.38", 659 + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", 660 + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", 661 + "dev": true, 662 + "dependencies": { 663 + "@types/node": "*" 664 + } 665 + }, 666 + "node_modules/@types/content-disposition": { 667 + "version": "0.5.8", 668 + "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.8.tgz", 669 + "integrity": "sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg==", 670 + "dev": true 671 + }, 672 + "node_modules/@types/convert-source-map": { 673 + "version": "2.0.3", 674 + "resolved": "https://registry.npmjs.org/@types/convert-source-map/-/convert-source-map-2.0.3.tgz", 675 + "integrity": "sha512-ag0BfJLZf6CQz8VIuRIEYQ5Ggwk/82uvTQf27RcpyDNbY0Vw49LIPqAxk5tqYfrCs9xDaIMvl4aj7ZopnYL8bA==", 676 + "dev": true 677 + }, 678 + "node_modules/@types/cookies": { 679 + "version": "0.9.0", 680 + "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.9.0.tgz", 681 + "integrity": "sha512-40Zk8qR147RABiQ7NQnBzWzDcjKzNrntB5BAmeGCb2p/MIyOE+4BVvc17wumsUqUw00bJYqoXFHYygQnEFh4/Q==", 682 + "dev": true, 683 + "dependencies": { 684 + "@types/connect": "*", 685 + "@types/express": "*", 686 + "@types/keygrip": "*", 687 + "@types/node": "*" 688 + } 689 + }, 690 + "node_modules/@types/debounce": { 691 + "version": "1.2.4", 692 + "resolved": "https://registry.npmjs.org/@types/debounce/-/debounce-1.2.4.tgz", 693 + "integrity": "sha512-jBqiORIzKDOToaF63Fm//haOCHuwQuLa2202RK4MozpA6lh93eCBc+/8+wZn5OzjJt3ySdc+74SXWXB55Ewtyw==", 694 + "dev": true 695 + }, 696 + "node_modules/@types/estree": { 697 + "version": "1.0.5", 698 + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", 699 + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", 700 + "dev": true 701 + }, 702 + "node_modules/@types/express": { 703 + "version": "4.17.21", 704 + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", 705 + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", 706 + "dev": true, 707 + "dependencies": { 708 + "@types/body-parser": "*", 709 + "@types/express-serve-static-core": "^4.17.33", 710 + "@types/qs": "*", 711 + "@types/serve-static": "*" 712 + } 713 + }, 714 + "node_modules/@types/express-serve-static-core": { 715 + "version": "4.17.43", 716 + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.43.tgz", 717 + "integrity": "sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==", 718 + "dev": true, 719 + "dependencies": { 720 + "@types/node": "*", 721 + "@types/qs": "*", 722 + "@types/range-parser": "*", 723 + "@types/send": "*" 724 + } 725 + }, 726 + "node_modules/@types/http-assert": { 727 + "version": "1.5.5", 728 + "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.5.tgz", 729 + "integrity": "sha512-4+tE/lwdAahgZT1g30Jkdm9PzFRde0xwxBNUyRsCitRvCQB90iuA2uJYdUnhnANRcqGXaWOGY4FEoxeElNAK2g==", 730 + "dev": true 731 + }, 732 + "node_modules/@types/http-errors": { 733 + "version": "2.0.4", 734 + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", 735 + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", 736 + "dev": true 737 + }, 738 + "node_modules/@types/istanbul-lib-coverage": { 739 + "version": "2.0.6", 740 + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", 741 + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", 742 + "dev": true 743 + }, 744 + "node_modules/@types/istanbul-lib-report": { 745 + "version": "3.0.3", 746 + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", 747 + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", 748 + "dev": true, 749 + "dependencies": { 750 + "@types/istanbul-lib-coverage": "*" 751 + } 752 + }, 753 + "node_modules/@types/istanbul-reports": { 754 + "version": "3.0.4", 755 + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", 756 + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", 757 + "dev": true, 758 + "dependencies": { 759 + "@types/istanbul-lib-report": "*" 760 + } 761 + }, 762 + "node_modules/@types/keygrip": { 763 + "version": "1.0.6", 764 + "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.6.tgz", 765 + "integrity": "sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==", 766 + "dev": true 767 + }, 768 + "node_modules/@types/koa": { 769 + "version": "2.15.0", 770 + "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.15.0.tgz", 771 + "integrity": "sha512-7QFsywoE5URbuVnG3loe03QXuGajrnotr3gQkXcEBShORai23MePfFYdhz90FEtBBpkyIYQbVD+evKtloCgX3g==", 772 + "dev": true, 773 + "dependencies": { 774 + "@types/accepts": "*", 775 + "@types/content-disposition": "*", 776 + "@types/cookies": "*", 777 + "@types/http-assert": "*", 778 + "@types/http-errors": "*", 779 + "@types/keygrip": "*", 780 + "@types/koa-compose": "*", 781 + "@types/node": "*" 782 + } 783 + }, 784 + "node_modules/@types/koa-compose": { 785 + "version": "3.2.8", 786 + "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.8.tgz", 787 + "integrity": "sha512-4Olc63RY+MKvxMwVknCUDhRQX1pFQoBZ/lXcRLP69PQkEpze/0cr8LNqJQe5NFb/b19DWi2a5bTi2VAlQzhJuA==", 788 + "dev": true, 789 + "dependencies": { 790 + "@types/koa": "*" 791 + } 792 + }, 793 + "node_modules/@types/mime": { 794 + "version": "1.3.5", 795 + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", 796 + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", 797 + "dev": true 798 + }, 799 + "node_modules/@types/node": { 800 + "version": "20.11.20", 801 + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.20.tgz", 802 + "integrity": "sha512-7/rR21OS+fq8IyHTgtLkDK949uzsa6n8BkziAKtPVpugIkO6D+/ooXMvzXxDnZrmtXVfjb1bKQafYpb8s89LOg==", 803 + "dev": true, 804 + "dependencies": { 805 + "undici-types": "~5.26.4" 806 + } 807 + }, 808 + "node_modules/@types/parse5": { 809 + "version": "6.0.3", 810 + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", 811 + "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==", 812 + "dev": true 813 + }, 814 + "node_modules/@types/qs": { 815 + "version": "6.9.11", 816 + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz", 817 + "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==", 818 + "dev": true 819 + }, 820 + "node_modules/@types/range-parser": { 821 + "version": "1.2.7", 822 + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", 823 + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", 824 + "dev": true 825 + }, 826 + "node_modules/@types/resolve": { 827 + "version": "1.20.2", 828 + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", 829 + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", 830 + "dev": true 831 + }, 832 + "node_modules/@types/send": { 833 + "version": "0.17.4", 834 + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", 835 + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", 836 + "dev": true, 837 + "dependencies": { 838 + "@types/mime": "^1", 839 + "@types/node": "*" 840 + } 841 + }, 842 + "node_modules/@types/serve-static": { 843 + "version": "1.15.5", 844 + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", 845 + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", 846 + "dev": true, 847 + "dependencies": { 848 + "@types/http-errors": "*", 849 + "@types/mime": "*", 850 + "@types/node": "*" 851 + } 852 + }, 853 + "node_modules/@types/sinon": { 854 + "version": "17.0.3", 855 + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.3.tgz", 856 + "integrity": "sha512-j3uovdn8ewky9kRBG19bOwaZbexJu/XjtkHyjvUgt4xfPFz18dcORIMqnYh66Fx3Powhcr85NT5+er3+oViapw==", 857 + "dev": true, 858 + "dependencies": { 859 + "@types/sinonjs__fake-timers": "*" 860 + } 861 + }, 862 + "node_modules/@types/sinon-chai": { 863 + "version": "3.2.12", 864 + "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.12.tgz", 865 + "integrity": "sha512-9y0Gflk3b0+NhQZ/oxGtaAJDvRywCa5sIyaVnounqLvmf93yBF4EgIRspePtkMs3Tr844nCclYMlcCNmLCvjuQ==", 866 + "dev": true, 867 + "dependencies": { 868 + "@types/chai": "*", 869 + "@types/sinon": "*" 870 + } 871 + }, 872 + "node_modules/@types/sinonjs__fake-timers": { 873 + "version": "8.1.5", 874 + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz", 875 + "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==", 876 + "dev": true 877 + }, 878 + "node_modules/@types/trusted-types": { 879 + "version": "2.0.7", 880 + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", 881 + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", 882 + "dev": true 883 + }, 884 + "node_modules/@types/ws": { 885 + "version": "7.4.7", 886 + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", 887 + "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", 888 + "dev": true, 889 + "dependencies": { 890 + "@types/node": "*" 891 + } 892 + }, 893 + "node_modules/@types/yauzl": { 894 + "version": "2.10.3", 895 + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", 896 + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", 897 + "dev": true, 898 + "optional": true, 899 + "dependencies": { 900 + "@types/node": "*" 901 + } 902 + }, 903 + "node_modules/@web/browser-logs": { 904 + "version": "0.4.0", 905 + "resolved": "https://registry.npmjs.org/@web/browser-logs/-/browser-logs-0.4.0.tgz", 906 + "integrity": "sha512-/EBiDAUCJ2DzZhaFxTPRIznEPeafdLbXShIL6aTu7x73x7ZoxSDv7DGuTsh2rWNMUa4+AKli4UORrpyv6QBOiA==", 907 + "dev": true, 908 + "dependencies": { 909 + "errorstacks": "^2.2.0" 910 + }, 911 + "engines": { 912 + "node": ">=18.0.0" 913 + } 914 + }, 915 + "node_modules/@web/config-loader": { 916 + "version": "0.3.1", 917 + "resolved": "https://registry.npmjs.org/@web/config-loader/-/config-loader-0.3.1.tgz", 918 + "integrity": "sha512-IYjHXUgSGGNpO3YJQ9foLcazbJlAWDdJGRe9be7aOhon0Nd6Na5JIOJAej7jsMu76fKHr4b4w2LfIdNQ4fJ8pA==", 919 + "dev": true, 920 + "engines": { 921 + "node": ">=18.0.0" 922 + } 923 + }, 924 + "node_modules/@web/dev-server": { 925 + "version": "0.4.3", 926 + "resolved": "https://registry.npmjs.org/@web/dev-server/-/dev-server-0.4.3.tgz", 927 + "integrity": "sha512-vf2ZVjdTj8ExrMSYagyHD+snRue9oRetynxd1p0P7ndEpZDKeNLYsvkJyo0pNU6moBxHmXnYeC5VrAT4E3+lNg==", 928 + "dev": true, 929 + "dependencies": { 930 + "@babel/code-frame": "^7.12.11", 931 + "@types/command-line-args": "^5.0.0", 932 + "@web/config-loader": "^0.3.0", 933 + "@web/dev-server-core": "^0.7.1", 934 + "@web/dev-server-rollup": "^0.6.1", 935 + "camelcase": "^6.2.0", 936 + "command-line-args": "^5.1.1", 937 + "command-line-usage": "^7.0.1", 938 + "debounce": "^1.2.0", 939 + "deepmerge": "^4.2.2", 940 + "ip": "^2.0.1", 941 + "nanocolors": "^0.2.1", 942 + "open": "^8.0.2", 943 + "portfinder": "^1.0.32" 944 + }, 945 + "bin": { 946 + "wds": "dist/bin.js", 947 + "web-dev-server": "dist/bin.js" 948 + }, 949 + "engines": { 950 + "node": ">=18.0.0" 951 + } 952 + }, 953 + "node_modules/@web/dev-server-core": { 954 + "version": "0.7.1", 955 + "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.7.1.tgz", 956 + "integrity": "sha512-alHd2j0f4e1ekqYDR8lWScrzR7D5gfsUZq3BP3De9bkFWM3AELINCmqqlVKmCtlkAdEc9VyQvNiEqrxraOdc2A==", 957 + "dev": true, 958 + "dependencies": { 959 + "@types/koa": "^2.11.6", 960 + "@types/ws": "^7.4.0", 961 + "@web/parse5-utils": "^2.1.0", 962 + "chokidar": "^3.4.3", 963 + "clone": "^2.1.2", 964 + "es-module-lexer": "^1.0.0", 965 + "get-stream": "^6.0.0", 966 + "is-stream": "^2.0.0", 967 + "isbinaryfile": "^5.0.0", 968 + "koa": "^2.13.0", 969 + "koa-etag": "^4.0.0", 970 + "koa-send": "^5.0.1", 971 + "koa-static": "^5.0.0", 972 + "lru-cache": "^8.0.4", 973 + "mime-types": "^2.1.27", 974 + "parse5": "^6.0.1", 975 + "picomatch": "^2.2.2", 976 + "ws": "^7.4.2" 977 + }, 978 + "engines": { 979 + "node": ">=18.0.0" 980 + } 981 + }, 982 + "node_modules/@web/dev-server-rollup": { 983 + "version": "0.6.1", 984 + "resolved": "https://registry.npmjs.org/@web/dev-server-rollup/-/dev-server-rollup-0.6.1.tgz", 985 + "integrity": "sha512-vhtsQ8qu1pBHailOBOYJwZnYDc1Lmx6ZAd2j+y5PD2ck0R1LmVsZ7dZK8hDCpkvpvlu2ndURjL9tbzdcsBRJmg==", 986 + "dev": true, 987 + "dependencies": { 988 + "@rollup/plugin-node-resolve": "^15.0.1", 989 + "@web/dev-server-core": "^0.7.0", 990 + "nanocolors": "^0.2.1", 991 + "parse5": "^6.0.1", 992 + "rollup": "^4.4.0", 993 + "whatwg-url": "^11.0.0" 994 + }, 995 + "engines": { 996 + "node": ">=18.0.0" 997 + } 998 + }, 999 + "node_modules/@web/parse5-utils": { 1000 + "version": "2.1.0", 1001 + "resolved": "https://registry.npmjs.org/@web/parse5-utils/-/parse5-utils-2.1.0.tgz", 1002 + "integrity": "sha512-GzfK5disEJ6wEjoPwx8AVNwUe9gYIiwc+x//QYxYDAFKUp4Xb1OJAGLc2l2gVrSQmtPGLKrTRcW90Hv4pEq1qA==", 1003 + "dev": true, 1004 + "dependencies": { 1005 + "@types/parse5": "^6.0.1", 1006 + "parse5": "^6.0.1" 1007 + }, 1008 + "engines": { 1009 + "node": ">=18.0.0" 1010 + } 1011 + }, 1012 + "node_modules/@web/test-runner": { 1013 + "version": "0.18.0", 1014 + "resolved": "https://registry.npmjs.org/@web/test-runner/-/test-runner-0.18.0.tgz", 1015 + "integrity": "sha512-aAlQrdSqwCie1mxuSK5kM0RYDJZL4Q0Hd5LeXn1on3OtHLtgztL4dZzzNSuAWablR2/Vuve3ChwDDxmYSTqXRg==", 1016 + "dev": true, 1017 + "dependencies": { 1018 + "@web/browser-logs": "^0.4.0", 1019 + "@web/config-loader": "^0.3.0", 1020 + "@web/dev-server": "^0.4.0", 1021 + "@web/test-runner-chrome": "^0.15.0", 1022 + "@web/test-runner-commands": "^0.9.0", 1023 + "@web/test-runner-core": "^0.13.0", 1024 + "@web/test-runner-mocha": "^0.9.0", 1025 + "camelcase": "^6.2.0", 1026 + "command-line-args": "^5.1.1", 1027 + "command-line-usage": "^7.0.1", 1028 + "convert-source-map": "^2.0.0", 1029 + "diff": "^5.0.0", 1030 + "globby": "^11.0.1", 1031 + "nanocolors": "^0.2.1", 1032 + "portfinder": "^1.0.32", 1033 + "source-map": "^0.7.3" 1034 + }, 1035 + "bin": { 1036 + "web-test-runner": "dist/bin.js", 1037 + "wtr": "dist/bin.js" 1038 + }, 1039 + "engines": { 1040 + "node": ">=18.0.0" 1041 + } 1042 + }, 1043 + "node_modules/@web/test-runner-chrome": { 1044 + "version": "0.15.0", 1045 + "resolved": "https://registry.npmjs.org/@web/test-runner-chrome/-/test-runner-chrome-0.15.0.tgz", 1046 + "integrity": "sha512-ZqkTJGQ57FDz3lWw+9CKfHuTV64S9GzBy5+0siSQulEVPfGiTzpksx9DohtA3BCLXdbEq4OHg40/XIQJomlc9w==", 1047 + "dev": true, 1048 + "dependencies": { 1049 + "@web/test-runner-core": "^0.13.0", 1050 + "@web/test-runner-coverage-v8": "^0.8.0", 1051 + "async-mutex": "0.4.0", 1052 + "chrome-launcher": "^0.15.0", 1053 + "puppeteer-core": "^20.0.0" 1054 + }, 1055 + "engines": { 1056 + "node": ">=18.0.0" 1057 + } 1058 + }, 1059 + "node_modules/@web/test-runner-commands": { 1060 + "version": "0.9.0", 1061 + "resolved": "https://registry.npmjs.org/@web/test-runner-commands/-/test-runner-commands-0.9.0.tgz", 1062 + "integrity": "sha512-zeLI6QdH0jzzJMDV5O42Pd8WLJtYqovgdt0JdytgHc0d1EpzXDsc7NTCJSImboc2NcayIsWAvvGGeRF69SMMYg==", 1063 + "dev": true, 1064 + "dependencies": { 1065 + "@web/test-runner-core": "^0.13.0", 1066 + "mkdirp": "^1.0.4" 1067 + }, 1068 + "engines": { 1069 + "node": ">=18.0.0" 1070 + } 1071 + }, 1072 + "node_modules/@web/test-runner-core": { 1073 + "version": "0.13.1", 1074 + "resolved": "https://registry.npmjs.org/@web/test-runner-core/-/test-runner-core-0.13.1.tgz", 1075 + "integrity": "sha512-2hESALx/UFsAzK+ApWXAkFp2eCmwcs2yj1v4YjwV8F38sQumJ40P3px3BMjFwkOYDORtQOicW0RUeSw1g3BMLA==", 1076 + "dev": true, 1077 + "dependencies": { 1078 + "@babel/code-frame": "^7.12.11", 1079 + "@types/babel__code-frame": "^7.0.2", 1080 + "@types/co-body": "^6.1.0", 1081 + "@types/convert-source-map": "^2.0.0", 1082 + "@types/debounce": "^1.2.0", 1083 + "@types/istanbul-lib-coverage": "^2.0.3", 1084 + "@types/istanbul-reports": "^3.0.0", 1085 + "@web/browser-logs": "^0.4.0", 1086 + "@web/dev-server-core": "^0.7.0", 1087 + "chokidar": "^3.4.3", 1088 + "cli-cursor": "^3.1.0", 1089 + "co-body": "^6.1.0", 1090 + "convert-source-map": "^2.0.0", 1091 + "debounce": "^1.2.0", 1092 + "dependency-graph": "^0.11.0", 1093 + "globby": "^11.0.1", 1094 + "ip": "^2.0.1", 1095 + "istanbul-lib-coverage": "^3.0.0", 1096 + "istanbul-lib-report": "^3.0.1", 1097 + "istanbul-reports": "^3.0.2", 1098 + "log-update": "^4.0.0", 1099 + "nanocolors": "^0.2.1", 1100 + "nanoid": "^3.1.25", 1101 + "open": "^8.0.2", 1102 + "picomatch": "^2.2.2", 1103 + "source-map": "^0.7.3" 1104 + }, 1105 + "engines": { 1106 + "node": ">=18.0.0" 1107 + } 1108 + }, 1109 + "node_modules/@web/test-runner-coverage-v8": { 1110 + "version": "0.8.0", 1111 + "resolved": "https://registry.npmjs.org/@web/test-runner-coverage-v8/-/test-runner-coverage-v8-0.8.0.tgz", 1112 + "integrity": "sha512-PskiucYpjUtgNfR2zF2AWqWwjXL7H3WW/SnCAYmzUrtob7X9o/+BjdyZ4wKbOxWWSbJO4lEdGIDLu+8X2Xw+lA==", 1113 + "dev": true, 1114 + "dependencies": { 1115 + "@web/test-runner-core": "^0.13.0", 1116 + "istanbul-lib-coverage": "^3.0.0", 1117 + "lru-cache": "^8.0.4", 1118 + "picomatch": "^2.2.2", 1119 + "v8-to-istanbul": "^9.0.1" 1120 + }, 1121 + "engines": { 1122 + "node": ">=18.0.0" 1123 + } 1124 + }, 1125 + "node_modules/@web/test-runner-mocha": { 1126 + "version": "0.9.0", 1127 + "resolved": "https://registry.npmjs.org/@web/test-runner-mocha/-/test-runner-mocha-0.9.0.tgz", 1128 + "integrity": "sha512-ZL9F6FXd0DBQvo/h/+mSfzFTSRVxzV9st/AHhpgABtUtV/AIpVE9to6+xdkpu6827kwjezdpuadPfg+PlrBWqQ==", 1129 + "dev": true, 1130 + "dependencies": { 1131 + "@web/test-runner-core": "^0.13.0" 1132 + }, 1133 + "engines": { 1134 + "node": ">=18.0.0" 1135 + } 1136 + }, 1137 + "node_modules/accepts": { 1138 + "version": "1.3.8", 1139 + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 1140 + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 1141 + "dev": true, 1142 + "dependencies": { 1143 + "mime-types": "~2.1.34", 1144 + "negotiator": "0.6.3" 1145 + }, 1146 + "engines": { 1147 + "node": ">= 0.6" 1148 + } 1149 + }, 1150 + "node_modules/agent-base": { 1151 + "version": "7.1.0", 1152 + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", 1153 + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", 1154 + "dev": true, 1155 + "dependencies": { 1156 + "debug": "^4.3.4" 1157 + }, 1158 + "engines": { 1159 + "node": ">= 14" 1160 + } 1161 + }, 1162 + "node_modules/ansi-escapes": { 1163 + "version": "4.3.2", 1164 + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", 1165 + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", 1166 + "dev": true, 1167 + "dependencies": { 1168 + "type-fest": "^0.21.3" 1169 + }, 1170 + "engines": { 1171 + "node": ">=8" 1172 + }, 1173 + "funding": { 1174 + "url": "https://github.com/sponsors/sindresorhus" 1175 + } 1176 + }, 1177 + "node_modules/ansi-regex": { 1178 + "version": "5.0.1", 1179 + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1180 + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 1181 + "dev": true, 1182 + "engines": { 1183 + "node": ">=8" 1184 + } 1185 + }, 1186 + "node_modules/ansi-styles": { 1187 + "version": "3.2.1", 1188 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 1189 + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 1190 + "dev": true, 1191 + "dependencies": { 1192 + "color-convert": "^1.9.0" 1193 + }, 1194 + "engines": { 1195 + "node": ">=4" 1196 + } 1197 + }, 1198 + "node_modules/anymatch": { 1199 + "version": "3.1.3", 1200 + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 1201 + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 1202 + "dev": true, 1203 + "dependencies": { 1204 + "normalize-path": "^3.0.0", 1205 + "picomatch": "^2.0.4" 1206 + }, 1207 + "engines": { 1208 + "node": ">= 8" 1209 + } 1210 + }, 1211 + "node_modules/array-back": { 1212 + "version": "3.1.0", 1213 + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", 1214 + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", 1215 + "dev": true, 1216 + "engines": { 1217 + "node": ">=6" 1218 + } 1219 + }, 1220 + "node_modules/array-union": { 1221 + "version": "2.1.0", 1222 + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 1223 + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 1224 + "dev": true, 1225 + "engines": { 1226 + "node": ">=8" 1227 + } 1228 + }, 1229 + "node_modules/ast-types": { 1230 + "version": "0.13.4", 1231 + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", 1232 + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", 1233 + "dev": true, 1234 + "dependencies": { 1235 + "tslib": "^2.0.1" 1236 + }, 1237 + "engines": { 1238 + "node": ">=4" 1239 + } 1240 + }, 1241 + "node_modules/astral-regex": { 1242 + "version": "2.0.0", 1243 + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", 1244 + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", 1245 + "dev": true, 1246 + "engines": { 1247 + "node": ">=8" 1248 + } 1249 + }, 1250 + "node_modules/async": { 1251 + "version": "2.6.4", 1252 + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", 1253 + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", 1254 + "dev": true, 1255 + "dependencies": { 1256 + "lodash": "^4.17.14" 1257 + } 1258 + }, 1259 + "node_modules/async-mutex": { 1260 + "version": "0.4.0", 1261 + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.4.0.tgz", 1262 + "integrity": "sha512-eJFZ1YhRR8UN8eBLoNzcDPcy/jqjsg6I1AP+KvWQX80BqOSW1oJPJXDylPUEeMr2ZQvHgnQ//Lp6f3RQ1zI7HA==", 1263 + "dev": true, 1264 + "dependencies": { 1265 + "tslib": "^2.4.0" 1266 + } 1267 + }, 1268 + "node_modules/axe-core": { 1269 + "version": "4.8.4", 1270 + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.8.4.tgz", 1271 + "integrity": "sha512-CZLSKisu/bhJ2awW4kJndluz2HLZYIHh5Uy1+ZwDRkJi69811xgIXXfdU9HSLX0Th+ILrHj8qfL/5wzamsFtQg==", 1272 + "dev": true, 1273 + "engines": { 1274 + "node": ">=4" 1275 + } 1276 + }, 1277 + "node_modules/b4a": { 1278 + "version": "1.6.6", 1279 + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", 1280 + "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==", 1281 + "dev": true 1282 + }, 1283 + "node_modules/bare-events": { 1284 + "version": "2.2.0", 1285 + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.0.tgz", 1286 + "integrity": "sha512-Yyyqff4PIFfSuthCZqLlPISTWHmnQxoPuAvkmgzsJEmG3CesdIv6Xweayl0JkCZJSB2yYIdJyEz97tpxNhgjbg==", 1287 + "dev": true, 1288 + "optional": true 1289 + }, 1290 + "node_modules/base64-js": { 1291 + "version": "1.5.1", 1292 + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 1293 + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 1294 + "dev": true, 1295 + "funding": [ 1296 + { 1297 + "type": "github", 1298 + "url": "https://github.com/sponsors/feross" 1299 + }, 1300 + { 1301 + "type": "patreon", 1302 + "url": "https://www.patreon.com/feross" 1303 + }, 1304 + { 1305 + "type": "consulting", 1306 + "url": "https://feross.org/support" 1307 + } 1308 + ] 1309 + }, 1310 + "node_modules/basic-ftp": { 1311 + "version": "5.0.4", 1312 + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.4.tgz", 1313 + "integrity": "sha512-8PzkB0arJFV4jJWSGOYR+OEic6aeKMu/osRhBULN6RY0ykby6LKhbmuQ5ublvaas5BOwboah5D87nrHyuh8PPA==", 1314 + "dev": true, 1315 + "engines": { 1316 + "node": ">=10.0.0" 1317 + } 1318 + }, 1319 + "node_modules/binary-extensions": { 1320 + "version": "2.2.0", 1321 + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 1322 + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 1323 + "dev": true, 1324 + "engines": { 1325 + "node": ">=8" 1326 + } 1327 + }, 1328 + "node_modules/braces": { 1329 + "version": "3.0.2", 1330 + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 1331 + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 1332 + "dev": true, 1333 + "dependencies": { 1334 + "fill-range": "^7.0.1" 1335 + }, 1336 + "engines": { 1337 + "node": ">=8" 1338 + } 1339 + }, 1340 + "node_modules/buffer": { 1341 + "version": "5.7.1", 1342 + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 1343 + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 1344 + "dev": true, 1345 + "funding": [ 1346 + { 1347 + "type": "github", 1348 + "url": "https://github.com/sponsors/feross" 1349 + }, 1350 + { 1351 + "type": "patreon", 1352 + "url": "https://www.patreon.com/feross" 1353 + }, 1354 + { 1355 + "type": "consulting", 1356 + "url": "https://feross.org/support" 1357 + } 1358 + ], 1359 + "dependencies": { 1360 + "base64-js": "^1.3.1", 1361 + "ieee754": "^1.1.13" 1362 + } 1363 + }, 1364 + "node_modules/buffer-crc32": { 1365 + "version": "0.2.13", 1366 + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 1367 + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", 1368 + "dev": true, 1369 + "engines": { 1370 + "node": "*" 1371 + } 1372 + }, 1373 + "node_modules/builtin-modules": { 1374 + "version": "3.3.0", 1375 + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", 1376 + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", 1377 + "dev": true, 1378 + "engines": { 1379 + "node": ">=6" 1380 + }, 1381 + "funding": { 1382 + "url": "https://github.com/sponsors/sindresorhus" 1383 + } 1384 + }, 1385 + "node_modules/bytes": { 1386 + "version": "3.1.2", 1387 + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 1388 + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", 1389 + "dev": true, 1390 + "engines": { 1391 + "node": ">= 0.8" 1392 + } 1393 + }, 1394 + "node_modules/cache-content-type": { 1395 + "version": "1.0.1", 1396 + "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", 1397 + "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", 1398 + "dev": true, 1399 + "dependencies": { 1400 + "mime-types": "^2.1.18", 1401 + "ylru": "^1.2.0" 1402 + }, 1403 + "engines": { 1404 + "node": ">= 6.0.0" 1405 + } 1406 + }, 1407 + "node_modules/call-bind": { 1408 + "version": "1.0.7", 1409 + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", 1410 + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", 1411 + "dev": true, 1412 + "dependencies": { 1413 + "es-define-property": "^1.0.0", 1414 + "es-errors": "^1.3.0", 1415 + "function-bind": "^1.1.2", 1416 + "get-intrinsic": "^1.2.4", 1417 + "set-function-length": "^1.2.1" 1418 + }, 1419 + "engines": { 1420 + "node": ">= 0.4" 1421 + }, 1422 + "funding": { 1423 + "url": "https://github.com/sponsors/ljharb" 1424 + } 1425 + }, 1426 + "node_modules/camelcase": { 1427 + "version": "6.3.0", 1428 + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", 1429 + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", 1430 + "dev": true, 1431 + "engines": { 1432 + "node": ">=10" 1433 + }, 1434 + "funding": { 1435 + "url": "https://github.com/sponsors/sindresorhus" 1436 + } 1437 + }, 1438 + "node_modules/chai-a11y-axe": { 1439 + "version": "1.5.0", 1440 + "resolved": "https://registry.npmjs.org/chai-a11y-axe/-/chai-a11y-axe-1.5.0.tgz", 1441 + "integrity": "sha512-V/Vg/zJDr9aIkaHJ2KQu7lGTQQm5ZOH4u1k5iTMvIXuSVlSuUo0jcSpSqf9wUn9zl6oQXa4e4E0cqH18KOgKlQ==", 1442 + "dev": true, 1443 + "dependencies": { 1444 + "axe-core": "^4.3.3" 1445 + } 1446 + }, 1447 + "node_modules/chalk": { 1448 + "version": "2.4.2", 1449 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 1450 + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 1451 + "dev": true, 1452 + "dependencies": { 1453 + "ansi-styles": "^3.2.1", 1454 + "escape-string-regexp": "^1.0.5", 1455 + "supports-color": "^5.3.0" 1456 + }, 1457 + "engines": { 1458 + "node": ">=4" 1459 + } 1460 + }, 1461 + "node_modules/chalk-template": { 1462 + "version": "0.4.0", 1463 + "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", 1464 + "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", 1465 + "dev": true, 1466 + "dependencies": { 1467 + "chalk": "^4.1.2" 1468 + }, 1469 + "engines": { 1470 + "node": ">=12" 1471 + }, 1472 + "funding": { 1473 + "url": "https://github.com/chalk/chalk-template?sponsor=1" 1474 + } 1475 + }, 1476 + "node_modules/chalk-template/node_modules/ansi-styles": { 1477 + "version": "4.3.0", 1478 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1479 + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1480 + "dev": true, 1481 + "dependencies": { 1482 + "color-convert": "^2.0.1" 1483 + }, 1484 + "engines": { 1485 + "node": ">=8" 1486 + }, 1487 + "funding": { 1488 + "url": "https://github.com/chalk/ansi-styles?sponsor=1" 1489 + } 1490 + }, 1491 + "node_modules/chalk-template/node_modules/chalk": { 1492 + "version": "4.1.2", 1493 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1494 + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1495 + "dev": true, 1496 + "dependencies": { 1497 + "ansi-styles": "^4.1.0", 1498 + "supports-color": "^7.1.0" 1499 + }, 1500 + "engines": { 1501 + "node": ">=10" 1502 + }, 1503 + "funding": { 1504 + "url": "https://github.com/chalk/chalk?sponsor=1" 1505 + } 1506 + }, 1507 + "node_modules/chalk-template/node_modules/color-convert": { 1508 + "version": "2.0.1", 1509 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1510 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1511 + "dev": true, 1512 + "dependencies": { 1513 + "color-name": "~1.1.4" 1514 + }, 1515 + "engines": { 1516 + "node": ">=7.0.0" 1517 + } 1518 + }, 1519 + "node_modules/chalk-template/node_modules/color-name": { 1520 + "version": "1.1.4", 1521 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1522 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1523 + "dev": true 1524 + }, 1525 + "node_modules/chalk-template/node_modules/has-flag": { 1526 + "version": "4.0.0", 1527 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1528 + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1529 + "dev": true, 1530 + "engines": { 1531 + "node": ">=8" 1532 + } 1533 + }, 1534 + "node_modules/chalk-template/node_modules/supports-color": { 1535 + "version": "7.2.0", 1536 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1537 + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1538 + "dev": true, 1539 + "dependencies": { 1540 + "has-flag": "^4.0.0" 1541 + }, 1542 + "engines": { 1543 + "node": ">=8" 1544 + } 1545 + }, 1546 + "node_modules/chokidar": { 1547 + "version": "3.6.0", 1548 + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", 1549 + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", 1550 + "dev": true, 1551 + "dependencies": { 1552 + "anymatch": "~3.1.2", 1553 + "braces": "~3.0.2", 1554 + "glob-parent": "~5.1.2", 1555 + "is-binary-path": "~2.1.0", 1556 + "is-glob": "~4.0.1", 1557 + "normalize-path": "~3.0.0", 1558 + "readdirp": "~3.6.0" 1559 + }, 1560 + "engines": { 1561 + "node": ">= 8.10.0" 1562 + }, 1563 + "funding": { 1564 + "url": "https://paulmillr.com/funding/" 1565 + }, 1566 + "optionalDependencies": { 1567 + "fsevents": "~2.3.2" 1568 + } 1569 + }, 1570 + "node_modules/chrome-launcher": { 1571 + "version": "0.15.2", 1572 + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", 1573 + "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", 1574 + "dev": true, 1575 + "dependencies": { 1576 + "@types/node": "*", 1577 + "escape-string-regexp": "^4.0.0", 1578 + "is-wsl": "^2.2.0", 1579 + "lighthouse-logger": "^1.0.0" 1580 + }, 1581 + "bin": { 1582 + "print-chrome-path": "bin/print-chrome-path.js" 1583 + }, 1584 + "engines": { 1585 + "node": ">=12.13.0" 1586 + } 1587 + }, 1588 + "node_modules/chrome-launcher/node_modules/escape-string-regexp": { 1589 + "version": "4.0.0", 1590 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 1591 + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 1592 + "dev": true, 1593 + "engines": { 1594 + "node": ">=10" 1595 + }, 1596 + "funding": { 1597 + "url": "https://github.com/sponsors/sindresorhus" 1598 + } 1599 + }, 1600 + "node_modules/chromium-bidi": { 1601 + "version": "0.4.16", 1602 + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.16.tgz", 1603 + "integrity": "sha512-7ZbXdWERxRxSwo3txsBjjmc/NLxqb1Bk30mRb0BMS4YIaiV6zvKZqL/UAH+DdqcDYayDWk2n/y8klkBDODrPvA==", 1604 + "dev": true, 1605 + "dependencies": { 1606 + "mitt": "3.0.0" 1607 + }, 1608 + "peerDependencies": { 1609 + "devtools-protocol": "*" 1610 + } 1611 + }, 1612 + "node_modules/cli-cursor": { 1613 + "version": "3.1.0", 1614 + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", 1615 + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", 1616 + "dev": true, 1617 + "dependencies": { 1618 + "restore-cursor": "^3.1.0" 1619 + }, 1620 + "engines": { 1621 + "node": ">=8" 1622 + } 1623 + }, 1624 + "node_modules/cliui": { 1625 + "version": "8.0.1", 1626 + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", 1627 + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", 1628 + "dev": true, 1629 + "dependencies": { 1630 + "string-width": "^4.2.0", 1631 + "strip-ansi": "^6.0.1", 1632 + "wrap-ansi": "^7.0.0" 1633 + }, 1634 + "engines": { 1635 + "node": ">=12" 1636 + } 1637 + }, 1638 + "node_modules/cliui/node_modules/ansi-styles": { 1639 + "version": "4.3.0", 1640 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1641 + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1642 + "dev": true, 1643 + "dependencies": { 1644 + "color-convert": "^2.0.1" 1645 + }, 1646 + "engines": { 1647 + "node": ">=8" 1648 + }, 1649 + "funding": { 1650 + "url": "https://github.com/chalk/ansi-styles?sponsor=1" 1651 + } 1652 + }, 1653 + "node_modules/cliui/node_modules/color-convert": { 1654 + "version": "2.0.1", 1655 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1656 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1657 + "dev": true, 1658 + "dependencies": { 1659 + "color-name": "~1.1.4" 1660 + }, 1661 + "engines": { 1662 + "node": ">=7.0.0" 1663 + } 1664 + }, 1665 + "node_modules/cliui/node_modules/color-name": { 1666 + "version": "1.1.4", 1667 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1668 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1669 + "dev": true 1670 + }, 1671 + "node_modules/cliui/node_modules/wrap-ansi": { 1672 + "version": "7.0.0", 1673 + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 1674 + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 1675 + "dev": true, 1676 + "dependencies": { 1677 + "ansi-styles": "^4.0.0", 1678 + "string-width": "^4.1.0", 1679 + "strip-ansi": "^6.0.0" 1680 + }, 1681 + "engines": { 1682 + "node": ">=10" 1683 + }, 1684 + "funding": { 1685 + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 1686 + } 1687 + }, 1688 + "node_modules/clone": { 1689 + "version": "2.1.2", 1690 + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", 1691 + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", 1692 + "dev": true, 1693 + "engines": { 1694 + "node": ">=0.8" 1695 + } 1696 + }, 1697 + "node_modules/co": { 1698 + "version": "4.6.0", 1699 + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", 1700 + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", 1701 + "dev": true, 1702 + "engines": { 1703 + "iojs": ">= 1.0.0", 1704 + "node": ">= 0.12.0" 1705 + } 1706 + }, 1707 + "node_modules/co-body": { 1708 + "version": "6.1.0", 1709 + "resolved": "https://registry.npmjs.org/co-body/-/co-body-6.1.0.tgz", 1710 + "integrity": "sha512-m7pOT6CdLN7FuXUcpuz/8lfQ/L77x8SchHCF4G0RBTJO20Wzmhn5Sp4/5WsKy8OSpifBSUrmg83qEqaDHdyFuQ==", 1711 + "dev": true, 1712 + "dependencies": { 1713 + "inflation": "^2.0.0", 1714 + "qs": "^6.5.2", 1715 + "raw-body": "^2.3.3", 1716 + "type-is": "^1.6.16" 1717 + } 1718 + }, 1719 + "node_modules/color-convert": { 1720 + "version": "1.9.3", 1721 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1722 + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1723 + "dev": true, 1724 + "dependencies": { 1725 + "color-name": "1.1.3" 1726 + } 1727 + }, 1728 + "node_modules/color-name": { 1729 + "version": "1.1.3", 1730 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1731 + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 1732 + "dev": true 1733 + }, 1734 + "node_modules/command-line-args": { 1735 + "version": "5.2.1", 1736 + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", 1737 + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", 1738 + "dev": true, 1739 + "dependencies": { 1740 + "array-back": "^3.1.0", 1741 + "find-replace": "^3.0.0", 1742 + "lodash.camelcase": "^4.3.0", 1743 + "typical": "^4.0.0" 1744 + }, 1745 + "engines": { 1746 + "node": ">=4.0.0" 1747 + } 1748 + }, 1749 + "node_modules/command-line-usage": { 1750 + "version": "7.0.1", 1751 + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.1.tgz", 1752 + "integrity": "sha512-NCyznE//MuTjwi3y84QVUGEOT+P5oto1e1Pk/jFPVdPPfsG03qpTIl3yw6etR+v73d0lXsoojRpvbru2sqePxQ==", 1753 + "dev": true, 1754 + "dependencies": { 1755 + "array-back": "^6.2.2", 1756 + "chalk-template": "^0.4.0", 1757 + "table-layout": "^3.0.0", 1758 + "typical": "^7.1.1" 1759 + }, 1760 + "engines": { 1761 + "node": ">=12.20.0" 1762 + } 1763 + }, 1764 + "node_modules/command-line-usage/node_modules/array-back": { 1765 + "version": "6.2.2", 1766 + "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", 1767 + "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", 1768 + "dev": true, 1769 + "engines": { 1770 + "node": ">=12.17" 1771 + } 1772 + }, 1773 + "node_modules/command-line-usage/node_modules/typical": { 1774 + "version": "7.1.1", 1775 + "resolved": "https://registry.npmjs.org/typical/-/typical-7.1.1.tgz", 1776 + "integrity": "sha512-T+tKVNs6Wu7IWiAce5BgMd7OZfNYUndHwc5MknN+UHOudi7sGZzuHdCadllRuqJ3fPtgFtIH9+lt9qRv6lmpfA==", 1777 + "dev": true, 1778 + "engines": { 1779 + "node": ">=12.17" 1780 + } 1781 + }, 1782 + "node_modules/content-disposition": { 1783 + "version": "0.5.4", 1784 + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", 1785 + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", 1786 + "dev": true, 1787 + "dependencies": { 1788 + "safe-buffer": "5.2.1" 1789 + }, 1790 + "engines": { 1791 + "node": ">= 0.6" 1792 + } 1793 + }, 1794 + "node_modules/content-type": { 1795 + "version": "1.0.5", 1796 + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", 1797 + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", 1798 + "dev": true, 1799 + "engines": { 1800 + "node": ">= 0.6" 1801 + } 1802 + }, 1803 + "node_modules/convert-source-map": { 1804 + "version": "2.0.0", 1805 + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", 1806 + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", 1807 + "dev": true 1808 + }, 1809 + "node_modules/cookies": { 1810 + "version": "0.9.1", 1811 + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.9.1.tgz", 1812 + "integrity": "sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==", 1813 + "dev": true, 1814 + "dependencies": { 1815 + "depd": "~2.0.0", 1816 + "keygrip": "~1.1.0" 1817 + }, 1818 + "engines": { 1819 + "node": ">= 0.8" 1820 + } 1821 + }, 1822 + "node_modules/cross-fetch": { 1823 + "version": "4.0.0", 1824 + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", 1825 + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", 1826 + "dev": true, 1827 + "dependencies": { 1828 + "node-fetch": "^2.6.12" 1829 + } 1830 + }, 1831 + "node_modules/data-uri-to-buffer": { 1832 + "version": "6.0.2", 1833 + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", 1834 + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", 1835 + "dev": true, 1836 + "engines": { 1837 + "node": ">= 14" 1838 + } 1839 + }, 1840 + "node_modules/debounce": { 1841 + "version": "1.2.1", 1842 + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", 1843 + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", 1844 + "dev": true 1845 + }, 1846 + "node_modules/debug": { 1847 + "version": "4.3.4", 1848 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1849 + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1850 + "dev": true, 1851 + "dependencies": { 1852 + "ms": "2.1.2" 1853 + }, 1854 + "engines": { 1855 + "node": ">=6.0" 1856 + }, 1857 + "peerDependenciesMeta": { 1858 + "supports-color": { 1859 + "optional": true 1860 + } 1861 + } 1862 + }, 1863 + "node_modules/deep-equal": { 1864 + "version": "1.0.1", 1865 + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", 1866 + "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==", 1867 + "dev": true 1868 + }, 1869 + "node_modules/deepmerge": { 1870 + "version": "4.3.1", 1871 + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", 1872 + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", 1873 + "dev": true, 1874 + "engines": { 1875 + "node": ">=0.10.0" 1876 + } 1877 + }, 1878 + "node_modules/define-data-property": { 1879 + "version": "1.1.4", 1880 + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", 1881 + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", 1882 + "dev": true, 1883 + "dependencies": { 1884 + "es-define-property": "^1.0.0", 1885 + "es-errors": "^1.3.0", 1886 + "gopd": "^1.0.1" 1887 + }, 1888 + "engines": { 1889 + "node": ">= 0.4" 1890 + }, 1891 + "funding": { 1892 + "url": "https://github.com/sponsors/ljharb" 1893 + } 1894 + }, 1895 + "node_modules/define-lazy-prop": { 1896 + "version": "2.0.0", 1897 + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", 1898 + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", 1899 + "dev": true, 1900 + "engines": { 1901 + "node": ">=8" 1902 + } 1903 + }, 1904 + "node_modules/degenerator": { 1905 + "version": "5.0.1", 1906 + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", 1907 + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", 1908 + "dev": true, 1909 + "dependencies": { 1910 + "ast-types": "^0.13.4", 1911 + "escodegen": "^2.1.0", 1912 + "esprima": "^4.0.1" 1913 + }, 1914 + "engines": { 1915 + "node": ">= 14" 1916 + } 1917 + }, 1918 + "node_modules/delegates": { 1919 + "version": "1.0.0", 1920 + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", 1921 + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", 1922 + "dev": true 1923 + }, 1924 + "node_modules/depd": { 1925 + "version": "2.0.0", 1926 + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 1927 + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", 1928 + "dev": true, 1929 + "engines": { 1930 + "node": ">= 0.8" 1931 + } 1932 + }, 1933 + "node_modules/dependency-graph": { 1934 + "version": "0.11.0", 1935 + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", 1936 + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", 1937 + "dev": true, 1938 + "engines": { 1939 + "node": ">= 0.6.0" 1940 + } 1941 + }, 1942 + "node_modules/destroy": { 1943 + "version": "1.2.0", 1944 + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", 1945 + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", 1946 + "dev": true, 1947 + "engines": { 1948 + "node": ">= 0.8", 1949 + "npm": "1.2.8000 || >= 1.4.16" 1950 + } 1951 + }, 1952 + "node_modules/devtools-protocol": { 1953 + "version": "0.0.1147663", 1954 + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1147663.tgz", 1955 + "integrity": "sha512-hyWmRrexdhbZ1tcJUGpO95ivbRhWXz++F4Ko+n21AY5PNln2ovoJw+8ZMNDTtip+CNFQfrtLVh/w4009dXO/eQ==", 1956 + "dev": true 1957 + }, 1958 + "node_modules/diff": { 1959 + "version": "5.2.0", 1960 + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", 1961 + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", 1962 + "dev": true, 1963 + "engines": { 1964 + "node": ">=0.3.1" 1965 + } 1966 + }, 1967 + "node_modules/dir-glob": { 1968 + "version": "3.0.1", 1969 + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 1970 + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 1971 + "dev": true, 1972 + "dependencies": { 1973 + "path-type": "^4.0.0" 1974 + }, 1975 + "engines": { 1976 + "node": ">=8" 1977 + } 1978 + }, 1979 + "node_modules/ee-first": { 1980 + "version": "1.1.1", 1981 + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 1982 + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", 1983 + "dev": true 1984 + }, 1985 + "node_modules/emoji-regex": { 1986 + "version": "8.0.0", 1987 + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1988 + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1989 + "dev": true 1990 + }, 1991 + "node_modules/encodeurl": { 1992 + "version": "1.0.2", 1993 + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 1994 + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", 1995 + "dev": true, 1996 + "engines": { 1997 + "node": ">= 0.8" 1998 + } 1999 + }, 2000 + "node_modules/end-of-stream": { 2001 + "version": "1.4.4", 2002 + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 2003 + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 2004 + "dev": true, 2005 + "dependencies": { 2006 + "once": "^1.4.0" 2007 + } 2008 + }, 2009 + "node_modules/errorstacks": { 2010 + "version": "2.4.1", 2011 + "resolved": "https://registry.npmjs.org/errorstacks/-/errorstacks-2.4.1.tgz", 2012 + "integrity": "sha512-jE4i0SMYevwu/xxAuzhly/KTwtj0xDhbzB6m1xPImxTkw8wcCbgarOQPfCVMi5JKVyW7in29pNJCCJrry3Ynnw==", 2013 + "dev": true 2014 + }, 2015 + "node_modules/es-define-property": { 2016 + "version": "1.0.0", 2017 + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", 2018 + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", 2019 + "dev": true, 2020 + "dependencies": { 2021 + "get-intrinsic": "^1.2.4" 2022 + }, 2023 + "engines": { 2024 + "node": ">= 0.4" 2025 + } 2026 + }, 2027 + "node_modules/es-errors": { 2028 + "version": "1.3.0", 2029 + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", 2030 + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", 2031 + "dev": true, 2032 + "engines": { 2033 + "node": ">= 0.4" 2034 + } 2035 + }, 2036 + "node_modules/es-module-lexer": { 2037 + "version": "1.4.1", 2038 + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", 2039 + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", 2040 + "dev": true 2041 + }, 2042 + "node_modules/escalade": { 2043 + "version": "3.1.2", 2044 + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", 2045 + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", 2046 + "dev": true, 2047 + "engines": { 2048 + "node": ">=6" 2049 + } 2050 + }, 2051 + "node_modules/escape-html": { 2052 + "version": "1.0.3", 2053 + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 2054 + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", 2055 + "dev": true 2056 + }, 2057 + "node_modules/escape-string-regexp": { 2058 + "version": "1.0.5", 2059 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 2060 + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 2061 + "dev": true, 2062 + "engines": { 2063 + "node": ">=0.8.0" 2064 + } 2065 + }, 2066 + "node_modules/escodegen": { 2067 + "version": "2.1.0", 2068 + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", 2069 + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", 2070 + "dev": true, 2071 + "dependencies": { 2072 + "esprima": "^4.0.1", 2073 + "estraverse": "^5.2.0", 2074 + "esutils": "^2.0.2" 2075 + }, 2076 + "bin": { 2077 + "escodegen": "bin/escodegen.js", 2078 + "esgenerate": "bin/esgenerate.js" 2079 + }, 2080 + "engines": { 2081 + "node": ">=6.0" 2082 + }, 2083 + "optionalDependencies": { 2084 + "source-map": "~0.6.1" 2085 + } 2086 + }, 2087 + "node_modules/escodegen/node_modules/source-map": { 2088 + "version": "0.6.1", 2089 + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 2090 + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 2091 + "dev": true, 2092 + "optional": true, 2093 + "engines": { 2094 + "node": ">=0.10.0" 2095 + } 2096 + }, 2097 + "node_modules/esprima": { 2098 + "version": "4.0.1", 2099 + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 2100 + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 2101 + "dev": true, 2102 + "bin": { 2103 + "esparse": "bin/esparse.js", 2104 + "esvalidate": "bin/esvalidate.js" 2105 + }, 2106 + "engines": { 2107 + "node": ">=4" 2108 + } 2109 + }, 2110 + "node_modules/estraverse": { 2111 + "version": "5.3.0", 2112 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 2113 + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 2114 + "dev": true, 2115 + "engines": { 2116 + "node": ">=4.0" 2117 + } 2118 + }, 2119 + "node_modules/estree-walker": { 2120 + "version": "2.0.2", 2121 + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 2122 + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 2123 + "dev": true 2124 + }, 2125 + "node_modules/esutils": { 2126 + "version": "2.0.3", 2127 + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 2128 + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 2129 + "dev": true, 2130 + "engines": { 2131 + "node": ">=0.10.0" 2132 + } 2133 + }, 2134 + "node_modules/etag": { 2135 + "version": "1.8.1", 2136 + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 2137 + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", 2138 + "dev": true, 2139 + "engines": { 2140 + "node": ">= 0.6" 2141 + } 2142 + }, 2143 + "node_modules/extract-zip": { 2144 + "version": "2.0.1", 2145 + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", 2146 + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", 2147 + "dev": true, 2148 + "dependencies": { 2149 + "debug": "^4.1.1", 2150 + "get-stream": "^5.1.0", 2151 + "yauzl": "^2.10.0" 2152 + }, 2153 + "bin": { 2154 + "extract-zip": "cli.js" 2155 + }, 2156 + "engines": { 2157 + "node": ">= 10.17.0" 2158 + }, 2159 + "optionalDependencies": { 2160 + "@types/yauzl": "^2.9.1" 2161 + } 2162 + }, 2163 + "node_modules/extract-zip/node_modules/get-stream": { 2164 + "version": "5.2.0", 2165 + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 2166 + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 2167 + "dev": true, 2168 + "dependencies": { 2169 + "pump": "^3.0.0" 2170 + }, 2171 + "engines": { 2172 + "node": ">=8" 2173 + }, 2174 + "funding": { 2175 + "url": "https://github.com/sponsors/sindresorhus" 2176 + } 2177 + }, 2178 + "node_modules/fast-fifo": { 2179 + "version": "1.3.2", 2180 + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", 2181 + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", 2182 + "dev": true 2183 + }, 2184 + "node_modules/fast-glob": { 2185 + "version": "3.3.2", 2186 + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", 2187 + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", 2188 + "dev": true, 2189 + "dependencies": { 2190 + "@nodelib/fs.stat": "^2.0.2", 2191 + "@nodelib/fs.walk": "^1.2.3", 2192 + "glob-parent": "^5.1.2", 2193 + "merge2": "^1.3.0", 2194 + "micromatch": "^4.0.4" 2195 + }, 2196 + "engines": { 2197 + "node": ">=8.6.0" 2198 + } 2199 + }, 2200 + "node_modules/fastq": { 2201 + "version": "1.17.1", 2202 + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", 2203 + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", 2204 + "dev": true, 2205 + "dependencies": { 2206 + "reusify": "^1.0.4" 2207 + } 2208 + }, 2209 + "node_modules/fd-slicer": { 2210 + "version": "1.1.0", 2211 + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", 2212 + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", 2213 + "dev": true, 2214 + "dependencies": { 2215 + "pend": "~1.2.0" 2216 + } 2217 + }, 2218 + "node_modules/fill-range": { 2219 + "version": "7.0.1", 2220 + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 2221 + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 2222 + "dev": true, 2223 + "dependencies": { 2224 + "to-regex-range": "^5.0.1" 2225 + }, 2226 + "engines": { 2227 + "node": ">=8" 2228 + } 2229 + }, 2230 + "node_modules/find-replace": { 2231 + "version": "3.0.0", 2232 + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", 2233 + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", 2234 + "dev": true, 2235 + "dependencies": { 2236 + "array-back": "^3.0.1" 2237 + }, 2238 + "engines": { 2239 + "node": ">=4.0.0" 2240 + } 2241 + }, 2242 + "node_modules/fresh": { 2243 + "version": "0.5.2", 2244 + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 2245 + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", 2246 + "dev": true, 2247 + "engines": { 2248 + "node": ">= 0.6" 2249 + } 2250 + }, 2251 + "node_modules/fs-extra": { 2252 + "version": "11.2.0", 2253 + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", 2254 + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", 2255 + "dev": true, 2256 + "dependencies": { 2257 + "graceful-fs": "^4.2.0", 2258 + "jsonfile": "^6.0.1", 2259 + "universalify": "^2.0.0" 2260 + }, 2261 + "engines": { 2262 + "node": ">=14.14" 2263 + } 2264 + }, 2265 + "node_modules/fsevents": { 2266 + "version": "2.3.3", 2267 + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 2268 + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 2269 + "dev": true, 2270 + "hasInstallScript": true, 2271 + "optional": true, 2272 + "os": [ 2273 + "darwin" 2274 + ], 2275 + "engines": { 2276 + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 2277 + } 2278 + }, 2279 + "node_modules/function-bind": { 2280 + "version": "1.1.2", 2281 + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", 2282 + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", 2283 + "dev": true, 2284 + "funding": { 2285 + "url": "https://github.com/sponsors/ljharb" 2286 + } 2287 + }, 2288 + "node_modules/get-caller-file": { 2289 + "version": "2.0.5", 2290 + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 2291 + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 2292 + "dev": true, 2293 + "engines": { 2294 + "node": "6.* || 8.* || >= 10.*" 2295 + } 2296 + }, 2297 + "node_modules/get-intrinsic": { 2298 + "version": "1.2.4", 2299 + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", 2300 + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", 2301 + "dev": true, 2302 + "dependencies": { 2303 + "es-errors": "^1.3.0", 2304 + "function-bind": "^1.1.2", 2305 + "has-proto": "^1.0.1", 2306 + "has-symbols": "^1.0.3", 2307 + "hasown": "^2.0.0" 2308 + }, 2309 + "engines": { 2310 + "node": ">= 0.4" 2311 + }, 2312 + "funding": { 2313 + "url": "https://github.com/sponsors/ljharb" 2314 + } 2315 + }, 2316 + "node_modules/get-stream": { 2317 + "version": "6.0.1", 2318 + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", 2319 + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", 2320 + "dev": true, 2321 + "engines": { 2322 + "node": ">=10" 2323 + }, 2324 + "funding": { 2325 + "url": "https://github.com/sponsors/sindresorhus" 2326 + } 2327 + }, 2328 + "node_modules/get-uri": { 2329 + "version": "6.0.3", 2330 + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", 2331 + "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", 2332 + "dev": true, 2333 + "dependencies": { 2334 + "basic-ftp": "^5.0.2", 2335 + "data-uri-to-buffer": "^6.0.2", 2336 + "debug": "^4.3.4", 2337 + "fs-extra": "^11.2.0" 2338 + }, 2339 + "engines": { 2340 + "node": ">= 14" 2341 + } 2342 + }, 2343 + "node_modules/glob-parent": { 2344 + "version": "5.1.2", 2345 + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 2346 + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 2347 + "dev": true, 2348 + "dependencies": { 2349 + "is-glob": "^4.0.1" 2350 + }, 2351 + "engines": { 2352 + "node": ">= 6" 2353 + } 2354 + }, 2355 + "node_modules/globby": { 2356 + "version": "11.1.0", 2357 + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", 2358 + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", 2359 + "dev": true, 2360 + "dependencies": { 2361 + "array-union": "^2.1.0", 2362 + "dir-glob": "^3.0.1", 2363 + "fast-glob": "^3.2.9", 2364 + "ignore": "^5.2.0", 2365 + "merge2": "^1.4.1", 2366 + "slash": "^3.0.0" 2367 + }, 2368 + "engines": { 2369 + "node": ">=10" 2370 + }, 2371 + "funding": { 2372 + "url": "https://github.com/sponsors/sindresorhus" 2373 + } 2374 + }, 2375 + "node_modules/gopd": { 2376 + "version": "1.0.1", 2377 + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", 2378 + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", 2379 + "dev": true, 2380 + "dependencies": { 2381 + "get-intrinsic": "^1.1.3" 2382 + }, 2383 + "funding": { 2384 + "url": "https://github.com/sponsors/ljharb" 2385 + } 2386 + }, 2387 + "node_modules/graceful-fs": { 2388 + "version": "4.2.11", 2389 + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 2390 + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 2391 + "dev": true 2392 + }, 2393 + "node_modules/has-flag": { 2394 + "version": "3.0.0", 2395 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 2396 + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 2397 + "dev": true, 2398 + "engines": { 2399 + "node": ">=4" 2400 + } 2401 + }, 2402 + "node_modules/has-property-descriptors": { 2403 + "version": "1.0.2", 2404 + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", 2405 + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", 2406 + "dev": true, 2407 + "dependencies": { 2408 + "es-define-property": "^1.0.0" 2409 + }, 2410 + "funding": { 2411 + "url": "https://github.com/sponsors/ljharb" 2412 + } 2413 + }, 2414 + "node_modules/has-proto": { 2415 + "version": "1.0.3", 2416 + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", 2417 + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", 2418 + "dev": true, 2419 + "engines": { 2420 + "node": ">= 0.4" 2421 + }, 2422 + "funding": { 2423 + "url": "https://github.com/sponsors/ljharb" 2424 + } 2425 + }, 2426 + "node_modules/has-symbols": { 2427 + "version": "1.0.3", 2428 + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 2429 + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 2430 + "dev": true, 2431 + "engines": { 2432 + "node": ">= 0.4" 2433 + }, 2434 + "funding": { 2435 + "url": "https://github.com/sponsors/ljharb" 2436 + } 2437 + }, 2438 + "node_modules/has-tostringtag": { 2439 + "version": "1.0.2", 2440 + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", 2441 + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", 2442 + "dev": true, 2443 + "dependencies": { 2444 + "has-symbols": "^1.0.3" 2445 + }, 2446 + "engines": { 2447 + "node": ">= 0.4" 2448 + }, 2449 + "funding": { 2450 + "url": "https://github.com/sponsors/ljharb" 2451 + } 2452 + }, 2453 + "node_modules/hasown": { 2454 + "version": "2.0.1", 2455 + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", 2456 + "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", 2457 + "dev": true, 2458 + "dependencies": { 2459 + "function-bind": "^1.1.2" 2460 + }, 2461 + "engines": { 2462 + "node": ">= 0.4" 2463 + } 2464 + }, 2465 + "node_modules/html-escaper": { 2466 + "version": "2.0.2", 2467 + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", 2468 + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", 2469 + "dev": true 2470 + }, 2471 + "node_modules/http-assert": { 2472 + "version": "1.5.0", 2473 + "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", 2474 + "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", 2475 + "dev": true, 2476 + "dependencies": { 2477 + "deep-equal": "~1.0.1", 2478 + "http-errors": "~1.8.0" 2479 + }, 2480 + "engines": { 2481 + "node": ">= 0.8" 2482 + } 2483 + }, 2484 + "node_modules/http-errors": { 2485 + "version": "1.8.1", 2486 + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", 2487 + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", 2488 + "dev": true, 2489 + "dependencies": { 2490 + "depd": "~1.1.2", 2491 + "inherits": "2.0.4", 2492 + "setprototypeof": "1.2.0", 2493 + "statuses": ">= 1.5.0 < 2", 2494 + "toidentifier": "1.0.1" 2495 + }, 2496 + "engines": { 2497 + "node": ">= 0.6" 2498 + } 2499 + }, 2500 + "node_modules/http-errors/node_modules/depd": { 2501 + "version": "1.1.2", 2502 + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 2503 + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", 2504 + "dev": true, 2505 + "engines": { 2506 + "node": ">= 0.6" 2507 + } 2508 + }, 2509 + "node_modules/http-proxy-agent": { 2510 + "version": "7.0.2", 2511 + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", 2512 + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", 2513 + "dev": true, 2514 + "dependencies": { 2515 + "agent-base": "^7.1.0", 2516 + "debug": "^4.3.4" 2517 + }, 2518 + "engines": { 2519 + "node": ">= 14" 2520 + } 2521 + }, 2522 + "node_modules/https-proxy-agent": { 2523 + "version": "7.0.4", 2524 + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", 2525 + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", 2526 + "dev": true, 2527 + "dependencies": { 2528 + "agent-base": "^7.0.2", 2529 + "debug": "4" 2530 + }, 2531 + "engines": { 2532 + "node": ">= 14" 2533 + } 2534 + }, 2535 + "node_modules/iconv-lite": { 2536 + "version": "0.4.24", 2537 + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 2538 + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 2539 + "dev": true, 2540 + "dependencies": { 2541 + "safer-buffer": ">= 2.1.2 < 3" 2542 + }, 2543 + "engines": { 2544 + "node": ">=0.10.0" 2545 + } 2546 + }, 2547 + "node_modules/ieee754": { 2548 + "version": "1.2.1", 2549 + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 2550 + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 2551 + "dev": true, 2552 + "funding": [ 2553 + { 2554 + "type": "github", 2555 + "url": "https://github.com/sponsors/feross" 2556 + }, 2557 + { 2558 + "type": "patreon", 2559 + "url": "https://www.patreon.com/feross" 2560 + }, 2561 + { 2562 + "type": "consulting", 2563 + "url": "https://feross.org/support" 2564 + } 2565 + ] 2566 + }, 2567 + "node_modules/ignore": { 2568 + "version": "5.3.1", 2569 + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", 2570 + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", 2571 + "dev": true, 2572 + "engines": { 2573 + "node": ">= 4" 2574 + } 2575 + }, 2576 + "node_modules/inflation": { 2577 + "version": "2.1.0", 2578 + "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.1.0.tgz", 2579 + "integrity": "sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ==", 2580 + "dev": true, 2581 + "engines": { 2582 + "node": ">= 0.8.0" 2583 + } 2584 + }, 2585 + "node_modules/inherits": { 2586 + "version": "2.0.4", 2587 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 2588 + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 2589 + "dev": true 2590 + }, 2591 + "node_modules/ip": { 2592 + "version": "2.0.1", 2593 + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz", 2594 + "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==", 2595 + "dev": true 2596 + }, 2597 + "node_modules/ip-address": { 2598 + "version": "9.0.5", 2599 + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", 2600 + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", 2601 + "dev": true, 2602 + "dependencies": { 2603 + "jsbn": "1.1.0", 2604 + "sprintf-js": "^1.1.3" 2605 + }, 2606 + "engines": { 2607 + "node": ">= 12" 2608 + } 2609 + }, 2610 + "node_modules/is-binary-path": { 2611 + "version": "2.1.0", 2612 + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 2613 + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 2614 + "dev": true, 2615 + "dependencies": { 2616 + "binary-extensions": "^2.0.0" 2617 + }, 2618 + "engines": { 2619 + "node": ">=8" 2620 + } 2621 + }, 2622 + "node_modules/is-builtin-module": { 2623 + "version": "3.2.1", 2624 + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", 2625 + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", 2626 + "dev": true, 2627 + "dependencies": { 2628 + "builtin-modules": "^3.3.0" 2629 + }, 2630 + "engines": { 2631 + "node": ">=6" 2632 + }, 2633 + "funding": { 2634 + "url": "https://github.com/sponsors/sindresorhus" 2635 + } 2636 + }, 2637 + "node_modules/is-core-module": { 2638 + "version": "2.13.1", 2639 + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", 2640 + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", 2641 + "dev": true, 2642 + "dependencies": { 2643 + "hasown": "^2.0.0" 2644 + }, 2645 + "funding": { 2646 + "url": "https://github.com/sponsors/ljharb" 2647 + } 2648 + }, 2649 + "node_modules/is-docker": { 2650 + "version": "2.2.1", 2651 + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", 2652 + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", 2653 + "dev": true, 2654 + "bin": { 2655 + "is-docker": "cli.js" 2656 + }, 2657 + "engines": { 2658 + "node": ">=8" 2659 + }, 2660 + "funding": { 2661 + "url": "https://github.com/sponsors/sindresorhus" 2662 + } 2663 + }, 2664 + "node_modules/is-extglob": { 2665 + "version": "2.1.1", 2666 + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 2667 + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 2668 + "dev": true, 2669 + "engines": { 2670 + "node": ">=0.10.0" 2671 + } 2672 + }, 2673 + "node_modules/is-fullwidth-code-point": { 2674 + "version": "3.0.0", 2675 + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 2676 + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 2677 + "dev": true, 2678 + "engines": { 2679 + "node": ">=8" 2680 + } 2681 + }, 2682 + "node_modules/is-generator-function": { 2683 + "version": "1.0.10", 2684 + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", 2685 + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", 2686 + "dev": true, 2687 + "dependencies": { 2688 + "has-tostringtag": "^1.0.0" 2689 + }, 2690 + "engines": { 2691 + "node": ">= 0.4" 2692 + }, 2693 + "funding": { 2694 + "url": "https://github.com/sponsors/ljharb" 2695 + } 2696 + }, 2697 + "node_modules/is-glob": { 2698 + "version": "4.0.3", 2699 + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 2700 + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 2701 + "dev": true, 2702 + "dependencies": { 2703 + "is-extglob": "^2.1.1" 2704 + }, 2705 + "engines": { 2706 + "node": ">=0.10.0" 2707 + } 2708 + }, 2709 + "node_modules/is-module": { 2710 + "version": "1.0.0", 2711 + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", 2712 + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", 2713 + "dev": true 2714 + }, 2715 + "node_modules/is-number": { 2716 + "version": "7.0.0", 2717 + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 2718 + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 2719 + "dev": true, 2720 + "engines": { 2721 + "node": ">=0.12.0" 2722 + } 2723 + }, 2724 + "node_modules/is-stream": { 2725 + "version": "2.0.1", 2726 + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", 2727 + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", 2728 + "dev": true, 2729 + "engines": { 2730 + "node": ">=8" 2731 + }, 2732 + "funding": { 2733 + "url": "https://github.com/sponsors/sindresorhus" 2734 + } 2735 + }, 2736 + "node_modules/is-wsl": { 2737 + "version": "2.2.0", 2738 + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", 2739 + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", 2740 + "dev": true, 2741 + "dependencies": { 2742 + "is-docker": "^2.0.0" 2743 + }, 2744 + "engines": { 2745 + "node": ">=8" 2746 + } 2747 + }, 2748 + "node_modules/isbinaryfile": { 2749 + "version": "5.0.2", 2750 + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.2.tgz", 2751 + "integrity": "sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg==", 2752 + "dev": true, 2753 + "engines": { 2754 + "node": ">= 18.0.0" 2755 + }, 2756 + "funding": { 2757 + "url": "https://github.com/sponsors/gjtorikian/" 2758 + } 2759 + }, 2760 + "node_modules/istanbul-lib-coverage": { 2761 + "version": "3.2.2", 2762 + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", 2763 + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", 2764 + "dev": true, 2765 + "engines": { 2766 + "node": ">=8" 2767 + } 2768 + }, 2769 + "node_modules/istanbul-lib-report": { 2770 + "version": "3.0.1", 2771 + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", 2772 + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", 2773 + "dev": true, 2774 + "dependencies": { 2775 + "istanbul-lib-coverage": "^3.0.0", 2776 + "make-dir": "^4.0.0", 2777 + "supports-color": "^7.1.0" 2778 + }, 2779 + "engines": { 2780 + "node": ">=10" 2781 + } 2782 + }, 2783 + "node_modules/istanbul-lib-report/node_modules/has-flag": { 2784 + "version": "4.0.0", 2785 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 2786 + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 2787 + "dev": true, 2788 + "engines": { 2789 + "node": ">=8" 2790 + } 2791 + }, 2792 + "node_modules/istanbul-lib-report/node_modules/supports-color": { 2793 + "version": "7.2.0", 2794 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2795 + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2796 + "dev": true, 2797 + "dependencies": { 2798 + "has-flag": "^4.0.0" 2799 + }, 2800 + "engines": { 2801 + "node": ">=8" 2802 + } 2803 + }, 2804 + "node_modules/istanbul-reports": { 2805 + "version": "3.1.7", 2806 + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", 2807 + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", 2808 + "dev": true, 2809 + "dependencies": { 2810 + "html-escaper": "^2.0.0", 2811 + "istanbul-lib-report": "^3.0.0" 2812 + }, 2813 + "engines": { 2814 + "node": ">=8" 2815 + } 2816 + }, 2817 + "node_modules/js-tokens": { 2818 + "version": "4.0.0", 2819 + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 2820 + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 2821 + "dev": true 2822 + }, 2823 + "node_modules/jsbn": { 2824 + "version": "1.1.0", 2825 + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", 2826 + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", 2827 + "dev": true 2828 + }, 2829 + "node_modules/jsonfile": { 2830 + "version": "6.1.0", 2831 + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", 2832 + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", 2833 + "dev": true, 2834 + "dependencies": { 2835 + "universalify": "^2.0.0" 2836 + }, 2837 + "optionalDependencies": { 2838 + "graceful-fs": "^4.1.6" 2839 + } 2840 + }, 2841 + "node_modules/keygrip": { 2842 + "version": "1.1.0", 2843 + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", 2844 + "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", 2845 + "dev": true, 2846 + "dependencies": { 2847 + "tsscmp": "1.0.6" 2848 + }, 2849 + "engines": { 2850 + "node": ">= 0.6" 2851 + } 2852 + }, 2853 + "node_modules/koa": { 2854 + "version": "2.15.0", 2855 + "resolved": "https://registry.npmjs.org/koa/-/koa-2.15.0.tgz", 2856 + "integrity": "sha512-KEL/vU1knsoUvfP4MC4/GthpQrY/p6dzwaaGI6Rt4NQuFqkw3qrvsdYF5pz3wOfi7IGTvMPHC9aZIcUKYFNxsw==", 2857 + "dev": true, 2858 + "dependencies": { 2859 + "accepts": "^1.3.5", 2860 + "cache-content-type": "^1.0.0", 2861 + "content-disposition": "~0.5.2", 2862 + "content-type": "^1.0.4", 2863 + "cookies": "~0.9.0", 2864 + "debug": "^4.3.2", 2865 + "delegates": "^1.0.0", 2866 + "depd": "^2.0.0", 2867 + "destroy": "^1.0.4", 2868 + "encodeurl": "^1.0.2", 2869 + "escape-html": "^1.0.3", 2870 + "fresh": "~0.5.2", 2871 + "http-assert": "^1.3.0", 2872 + "http-errors": "^1.6.3", 2873 + "is-generator-function": "^1.0.7", 2874 + "koa-compose": "^4.1.0", 2875 + "koa-convert": "^2.0.0", 2876 + "on-finished": "^2.3.0", 2877 + "only": "~0.0.2", 2878 + "parseurl": "^1.3.2", 2879 + "statuses": "^1.5.0", 2880 + "type-is": "^1.6.16", 2881 + "vary": "^1.1.2" 2882 + }, 2883 + "engines": { 2884 + "node": "^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4" 2885 + } 2886 + }, 2887 + "node_modules/koa-compose": { 2888 + "version": "4.1.0", 2889 + "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", 2890 + "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==", 2891 + "dev": true 2892 + }, 2893 + "node_modules/koa-convert": { 2894 + "version": "2.0.0", 2895 + "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz", 2896 + "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==", 2897 + "dev": true, 2898 + "dependencies": { 2899 + "co": "^4.6.0", 2900 + "koa-compose": "^4.1.0" 2901 + }, 2902 + "engines": { 2903 + "node": ">= 10" 2904 + } 2905 + }, 2906 + "node_modules/koa-etag": { 2907 + "version": "4.0.0", 2908 + "resolved": "https://registry.npmjs.org/koa-etag/-/koa-etag-4.0.0.tgz", 2909 + "integrity": "sha512-1cSdezCkBWlyuB9l6c/IFoe1ANCDdPBxkDkRiaIup40xpUub6U/wwRXoKBZw/O5BifX9OlqAjYnDyzM6+l+TAg==", 2910 + "dev": true, 2911 + "dependencies": { 2912 + "etag": "^1.8.1" 2913 + } 2914 + }, 2915 + "node_modules/koa-send": { 2916 + "version": "5.0.1", 2917 + "resolved": "https://registry.npmjs.org/koa-send/-/koa-send-5.0.1.tgz", 2918 + "integrity": "sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==", 2919 + "dev": true, 2920 + "dependencies": { 2921 + "debug": "^4.1.1", 2922 + "http-errors": "^1.7.3", 2923 + "resolve-path": "^1.4.0" 2924 + }, 2925 + "engines": { 2926 + "node": ">= 8" 2927 + } 2928 + }, 2929 + "node_modules/koa-static": { 2930 + "version": "5.0.0", 2931 + "resolved": "https://registry.npmjs.org/koa-static/-/koa-static-5.0.0.tgz", 2932 + "integrity": "sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==", 2933 + "dev": true, 2934 + "dependencies": { 2935 + "debug": "^3.1.0", 2936 + "koa-send": "^5.0.0" 2937 + }, 2938 + "engines": { 2939 + "node": ">= 7.6.0" 2940 + } 2941 + }, 2942 + "node_modules/koa-static/node_modules/debug": { 2943 + "version": "3.2.7", 2944 + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 2945 + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 2946 + "dev": true, 2947 + "dependencies": { 2948 + "ms": "^2.1.1" 2949 + } 2950 + }, 2951 + "node_modules/lighthouse-logger": { 2952 + "version": "1.4.2", 2953 + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", 2954 + "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", 2955 + "dev": true, 2956 + "dependencies": { 2957 + "debug": "^2.6.9", 2958 + "marky": "^1.2.2" 2959 + } 2960 + }, 2961 + "node_modules/lighthouse-logger/node_modules/debug": { 2962 + "version": "2.6.9", 2963 + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 2964 + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 2965 + "dev": true, 2966 + "dependencies": { 2967 + "ms": "2.0.0" 2968 + } 2969 + }, 2970 + "node_modules/lighthouse-logger/node_modules/ms": { 2971 + "version": "2.0.0", 2972 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 2973 + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", 2974 + "dev": true 2975 + }, 2976 + "node_modules/lit": { 2977 + "version": "3.1.2", 2978 + "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.2.tgz", 2979 + "integrity": "sha512-VZx5iAyMtX7CV4K8iTLdCkMaYZ7ipjJZ0JcSdJ0zIdGxxyurjIn7yuuSxNBD7QmjvcNJwr0JS4cAdAtsy7gZ6w==", 2980 + "dev": true, 2981 + "dependencies": { 2982 + "@lit/reactive-element": "^2.0.4", 2983 + "lit-element": "^4.0.4", 2984 + "lit-html": "^3.1.2" 2985 + } 2986 + }, 2987 + "node_modules/lit-element": { 2988 + "version": "4.0.4", 2989 + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.0.4.tgz", 2990 + "integrity": "sha512-98CvgulX6eCPs6TyAIQoJZBCQPo80rgXR+dVBs61cstJXqtI+USQZAbA4gFHh6L/mxBx9MrgPLHLsUgDUHAcCQ==", 2991 + "dev": true, 2992 + "dependencies": { 2993 + "@lit-labs/ssr-dom-shim": "^1.2.0", 2994 + "@lit/reactive-element": "^2.0.4", 2995 + "lit-html": "^3.1.2" 2996 + } 2997 + }, 2998 + "node_modules/lit-html": { 2999 + "version": "3.1.2", 3000 + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.1.2.tgz", 3001 + "integrity": "sha512-3OBZSUrPnAHoKJ9AMjRL/m01YJxQMf+TMHanNtTHG68ubjnZxK0RFl102DPzsw4mWnHibfZIBJm3LWCZ/LmMvg==", 3002 + "dev": true, 3003 + "dependencies": { 3004 + "@types/trusted-types": "^2.0.2" 3005 + } 3006 + }, 3007 + "node_modules/lodash": { 3008 + "version": "4.17.21", 3009 + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 3010 + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 3011 + "dev": true 3012 + }, 3013 + "node_modules/lodash.assignwith": { 3014 + "version": "4.2.0", 3015 + "resolved": "https://registry.npmjs.org/lodash.assignwith/-/lodash.assignwith-4.2.0.tgz", 3016 + "integrity": "sha512-ZznplvbvtjK2gMvnQ1BR/zqPFZmS6jbK4p+6Up4xcRYA7yMIwxHCfbTcrYxXKzzqLsQ05eJPVznEW3tuwV7k1g==", 3017 + "dev": true 3018 + }, 3019 + "node_modules/lodash.camelcase": { 3020 + "version": "4.3.0", 3021 + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", 3022 + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", 3023 + "dev": true 3024 + }, 3025 + "node_modules/log-update": { 3026 + "version": "4.0.0", 3027 + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", 3028 + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", 3029 + "dev": true, 3030 + "dependencies": { 3031 + "ansi-escapes": "^4.3.0", 3032 + "cli-cursor": "^3.1.0", 3033 + "slice-ansi": "^4.0.0", 3034 + "wrap-ansi": "^6.2.0" 3035 + }, 3036 + "engines": { 3037 + "node": ">=10" 3038 + }, 3039 + "funding": { 3040 + "url": "https://github.com/sponsors/sindresorhus" 3041 + } 3042 + }, 3043 + "node_modules/lru-cache": { 3044 + "version": "8.0.5", 3045 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", 3046 + "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", 3047 + "dev": true, 3048 + "engines": { 3049 + "node": ">=16.14" 3050 + } 3051 + }, 3052 + "node_modules/make-dir": { 3053 + "version": "4.0.0", 3054 + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", 3055 + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", 3056 + "dev": true, 3057 + "dependencies": { 3058 + "semver": "^7.5.3" 3059 + }, 3060 + "engines": { 3061 + "node": ">=10" 3062 + }, 3063 + "funding": { 3064 + "url": "https://github.com/sponsors/sindresorhus" 3065 + } 3066 + }, 3067 + "node_modules/marky": { 3068 + "version": "1.2.5", 3069 + "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz", 3070 + "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==", 3071 + "dev": true 3072 + }, 3073 + "node_modules/media-typer": { 3074 + "version": "0.3.0", 3075 + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 3076 + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", 3077 + "dev": true, 3078 + "engines": { 3079 + "node": ">= 0.6" 3080 + } 3081 + }, 3082 + "node_modules/merge2": { 3083 + "version": "1.4.1", 3084 + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 3085 + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 3086 + "dev": true, 3087 + "engines": { 3088 + "node": ">= 8" 3089 + } 3090 + }, 3091 + "node_modules/micromatch": { 3092 + "version": "4.0.5", 3093 + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 3094 + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 3095 + "dev": true, 3096 + "dependencies": { 3097 + "braces": "^3.0.2", 3098 + "picomatch": "^2.3.1" 3099 + }, 3100 + "engines": { 3101 + "node": ">=8.6" 3102 + } 3103 + }, 3104 + "node_modules/mime-db": { 3105 + "version": "1.52.0", 3106 + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 3107 + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 3108 + "dev": true, 3109 + "engines": { 3110 + "node": ">= 0.6" 3111 + } 3112 + }, 3113 + "node_modules/mime-types": { 3114 + "version": "2.1.35", 3115 + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 3116 + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 3117 + "dev": true, 3118 + "dependencies": { 3119 + "mime-db": "1.52.0" 3120 + }, 3121 + "engines": { 3122 + "node": ">= 0.6" 3123 + } 3124 + }, 3125 + "node_modules/mimic-fn": { 3126 + "version": "2.1.0", 3127 + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 3128 + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 3129 + "dev": true, 3130 + "engines": { 3131 + "node": ">=6" 3132 + } 3133 + }, 3134 + "node_modules/minimist": { 3135 + "version": "1.2.8", 3136 + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", 3137 + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", 3138 + "dev": true, 3139 + "funding": { 3140 + "url": "https://github.com/sponsors/ljharb" 3141 + } 3142 + }, 3143 + "node_modules/mitt": { 3144 + "version": "3.0.0", 3145 + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", 3146 + "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==", 3147 + "dev": true 3148 + }, 3149 + "node_modules/mkdirp": { 3150 + "version": "1.0.4", 3151 + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", 3152 + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", 3153 + "dev": true, 3154 + "bin": { 3155 + "mkdirp": "bin/cmd.js" 3156 + }, 3157 + "engines": { 3158 + "node": ">=10" 3159 + } 3160 + }, 3161 + "node_modules/mkdirp-classic": { 3162 + "version": "0.5.3", 3163 + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", 3164 + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", 3165 + "dev": true 3166 + }, 3167 + "node_modules/ms": { 3168 + "version": "2.1.2", 3169 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 3170 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 3171 + "dev": true 3172 + }, 3173 + "node_modules/nanocolors": { 3174 + "version": "0.2.13", 3175 + "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.13.tgz", 3176 + "integrity": "sha512-0n3mSAQLPpGLV9ORXT5+C/D4mwew7Ebws69Hx4E2sgz2ZA5+32Q80B9tL8PbL7XHnRDiAxH/pnrUJ9a4fkTNTA==", 3177 + "dev": true 3178 + }, 3179 + "node_modules/nanoid": { 3180 + "version": "3.3.7", 3181 + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", 3182 + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", 3183 + "dev": true, 3184 + "funding": [ 3185 + { 3186 + "type": "github", 3187 + "url": "https://github.com/sponsors/ai" 3188 + } 3189 + ], 3190 + "bin": { 3191 + "nanoid": "bin/nanoid.cjs" 3192 + }, 3193 + "engines": { 3194 + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 3195 + } 3196 + }, 3197 + "node_modules/negotiator": { 3198 + "version": "0.6.3", 3199 + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 3200 + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", 3201 + "dev": true, 3202 + "engines": { 3203 + "node": ">= 0.6" 3204 + } 3205 + }, 3206 + "node_modules/netmask": { 3207 + "version": "2.0.2", 3208 + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", 3209 + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", 3210 + "dev": true, 3211 + "engines": { 3212 + "node": ">= 0.4.0" 3213 + } 3214 + }, 3215 + "node_modules/node-fetch": { 3216 + "version": "2.7.0", 3217 + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", 3218 + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", 3219 + "dev": true, 3220 + "dependencies": { 3221 + "whatwg-url": "^5.0.0" 3222 + }, 3223 + "engines": { 3224 + "node": "4.x || >=6.0.0" 3225 + }, 3226 + "peerDependencies": { 3227 + "encoding": "^0.1.0" 3228 + }, 3229 + "peerDependenciesMeta": { 3230 + "encoding": { 3231 + "optional": true 3232 + } 3233 + } 3234 + }, 3235 + "node_modules/node-fetch/node_modules/tr46": { 3236 + "version": "0.0.3", 3237 + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 3238 + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", 3239 + "dev": true 3240 + }, 3241 + "node_modules/node-fetch/node_modules/webidl-conversions": { 3242 + "version": "3.0.1", 3243 + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 3244 + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", 3245 + "dev": true 3246 + }, 3247 + "node_modules/node-fetch/node_modules/whatwg-url": { 3248 + "version": "5.0.0", 3249 + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 3250 + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 3251 + "dev": true, 3252 + "dependencies": { 3253 + "tr46": "~0.0.3", 3254 + "webidl-conversions": "^3.0.0" 3255 + } 3256 + }, 3257 + "node_modules/normalize-path": { 3258 + "version": "3.0.0", 3259 + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 3260 + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 3261 + "dev": true, 3262 + "engines": { 3263 + "node": ">=0.10.0" 3264 + } 3265 + }, 3266 + "node_modules/object-inspect": { 3267 + "version": "1.13.1", 3268 + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", 3269 + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", 3270 + "dev": true, 3271 + "funding": { 3272 + "url": "https://github.com/sponsors/ljharb" 3273 + } 3274 + }, 3275 + "node_modules/on-finished": { 3276 + "version": "2.4.1", 3277 + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", 3278 + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 3279 + "dev": true, 3280 + "dependencies": { 3281 + "ee-first": "1.1.1" 3282 + }, 3283 + "engines": { 3284 + "node": ">= 0.8" 3285 + } 3286 + }, 3287 + "node_modules/once": { 3288 + "version": "1.4.0", 3289 + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 3290 + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 3291 + "dev": true, 3292 + "dependencies": { 3293 + "wrappy": "1" 3294 + } 3295 + }, 3296 + "node_modules/onetime": { 3297 + "version": "5.1.2", 3298 + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 3299 + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 3300 + "dev": true, 3301 + "dependencies": { 3302 + "mimic-fn": "^2.1.0" 3303 + }, 3304 + "engines": { 3305 + "node": ">=6" 3306 + }, 3307 + "funding": { 3308 + "url": "https://github.com/sponsors/sindresorhus" 3309 + } 3310 + }, 3311 + "node_modules/only": { 3312 + "version": "0.0.2", 3313 + "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", 3314 + "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==", 3315 + "dev": true 3316 + }, 3317 + "node_modules/open": { 3318 + "version": "8.4.2", 3319 + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", 3320 + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", 3321 + "dev": true, 3322 + "dependencies": { 3323 + "define-lazy-prop": "^2.0.0", 3324 + "is-docker": "^2.1.1", 3325 + "is-wsl": "^2.2.0" 3326 + }, 3327 + "engines": { 3328 + "node": ">=12" 3329 + }, 3330 + "funding": { 3331 + "url": "https://github.com/sponsors/sindresorhus" 3332 + } 3333 + }, 3334 + "node_modules/pac-proxy-agent": { 3335 + "version": "7.0.1", 3336 + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz", 3337 + "integrity": "sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==", 3338 + "dev": true, 3339 + "dependencies": { 3340 + "@tootallnate/quickjs-emscripten": "^0.23.0", 3341 + "agent-base": "^7.0.2", 3342 + "debug": "^4.3.4", 3343 + "get-uri": "^6.0.1", 3344 + "http-proxy-agent": "^7.0.0", 3345 + "https-proxy-agent": "^7.0.2", 3346 + "pac-resolver": "^7.0.0", 3347 + "socks-proxy-agent": "^8.0.2" 3348 + }, 3349 + "engines": { 3350 + "node": ">= 14" 3351 + } 3352 + }, 3353 + "node_modules/pac-resolver": { 3354 + "version": "7.0.1", 3355 + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", 3356 + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", 3357 + "dev": true, 3358 + "dependencies": { 3359 + "degenerator": "^5.0.0", 3360 + "netmask": "^2.0.2" 3361 + }, 3362 + "engines": { 3363 + "node": ">= 14" 3364 + } 3365 + }, 3366 + "node_modules/parse5": { 3367 + "version": "6.0.1", 3368 + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", 3369 + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", 3370 + "dev": true 3371 + }, 3372 + "node_modules/parseurl": { 3373 + "version": "1.3.3", 3374 + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 3375 + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", 3376 + "dev": true, 3377 + "engines": { 3378 + "node": ">= 0.8" 3379 + } 3380 + }, 3381 + "node_modules/path-is-absolute": { 3382 + "version": "1.0.1", 3383 + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 3384 + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 3385 + "dev": true, 3386 + "engines": { 3387 + "node": ">=0.10.0" 3388 + } 3389 + }, 3390 + "node_modules/path-parse": { 3391 + "version": "1.0.7", 3392 + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 3393 + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 3394 + "dev": true 3395 + }, 3396 + "node_modules/path-type": { 3397 + "version": "4.0.0", 3398 + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 3399 + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 3400 + "dev": true, 3401 + "engines": { 3402 + "node": ">=8" 3403 + } 3404 + }, 3405 + "node_modules/pend": { 3406 + "version": "1.2.0", 3407 + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 3408 + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", 3409 + "dev": true 3410 + }, 3411 + "node_modules/picomatch": { 3412 + "version": "2.3.1", 3413 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 3414 + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 3415 + "dev": true, 3416 + "engines": { 3417 + "node": ">=8.6" 3418 + }, 3419 + "funding": { 3420 + "url": "https://github.com/sponsors/jonschlinkert" 3421 + } 3422 + }, 3423 + "node_modules/portfinder": { 3424 + "version": "1.0.32", 3425 + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", 3426 + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", 3427 + "dev": true, 3428 + "dependencies": { 3429 + "async": "^2.6.4", 3430 + "debug": "^3.2.7", 3431 + "mkdirp": "^0.5.6" 3432 + }, 3433 + "engines": { 3434 + "node": ">= 0.12.0" 3435 + } 3436 + }, 3437 + "node_modules/portfinder/node_modules/debug": { 3438 + "version": "3.2.7", 3439 + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 3440 + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 3441 + "dev": true, 3442 + "dependencies": { 3443 + "ms": "^2.1.1" 3444 + } 3445 + }, 3446 + "node_modules/portfinder/node_modules/mkdirp": { 3447 + "version": "0.5.6", 3448 + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", 3449 + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", 3450 + "dev": true, 3451 + "dependencies": { 3452 + "minimist": "^1.2.6" 3453 + }, 3454 + "bin": { 3455 + "mkdirp": "bin/cmd.js" 3456 + } 3457 + }, 3458 + "node_modules/progress": { 3459 + "version": "2.0.3", 3460 + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 3461 + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 3462 + "dev": true, 3463 + "engines": { 3464 + "node": ">=0.4.0" 3465 + } 3466 + }, 3467 + "node_modules/proxy-agent": { 3468 + "version": "6.3.0", 3469 + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.0.tgz", 3470 + "integrity": "sha512-0LdR757eTj/JfuU7TL2YCuAZnxWXu3tkJbg4Oq3geW/qFNT/32T0sp2HnZ9O0lMR4q3vwAt0+xCA8SR0WAD0og==", 3471 + "dev": true, 3472 + "dependencies": { 3473 + "agent-base": "^7.0.2", 3474 + "debug": "^4.3.4", 3475 + "http-proxy-agent": "^7.0.0", 3476 + "https-proxy-agent": "^7.0.0", 3477 + "lru-cache": "^7.14.1", 3478 + "pac-proxy-agent": "^7.0.0", 3479 + "proxy-from-env": "^1.1.0", 3480 + "socks-proxy-agent": "^8.0.1" 3481 + }, 3482 + "engines": { 3483 + "node": ">= 14" 3484 + } 3485 + }, 3486 + "node_modules/proxy-agent/node_modules/lru-cache": { 3487 + "version": "7.18.3", 3488 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", 3489 + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", 3490 + "dev": true, 3491 + "engines": { 3492 + "node": ">=12" 3493 + } 3494 + }, 3495 + "node_modules/proxy-from-env": { 3496 + "version": "1.1.0", 3497 + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 3498 + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", 3499 + "dev": true 3500 + }, 3501 + "node_modules/pump": { 3502 + "version": "3.0.0", 3503 + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 3504 + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 3505 + "dev": true, 3506 + "dependencies": { 3507 + "end-of-stream": "^1.1.0", 3508 + "once": "^1.3.1" 3509 + } 3510 + }, 3511 + "node_modules/punycode": { 3512 + "version": "2.3.1", 3513 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", 3514 + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", 3515 + "dev": true, 3516 + "engines": { 3517 + "node": ">=6" 3518 + } 3519 + }, 3520 + "node_modules/puppeteer-core": { 3521 + "version": "20.9.0", 3522 + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.9.0.tgz", 3523 + "integrity": "sha512-H9fYZQzMTRrkboEfPmf7m3CLDN6JvbxXA3qTtS+dFt27tR+CsFHzPsT6pzp6lYL6bJbAPaR0HaPO6uSi+F94Pg==", 3524 + "dev": true, 3525 + "dependencies": { 3526 + "@puppeteer/browsers": "1.4.6", 3527 + "chromium-bidi": "0.4.16", 3528 + "cross-fetch": "4.0.0", 3529 + "debug": "4.3.4", 3530 + "devtools-protocol": "0.0.1147663", 3531 + "ws": "8.13.0" 3532 + }, 3533 + "engines": { 3534 + "node": ">=16.3.0" 3535 + }, 3536 + "peerDependencies": { 3537 + "typescript": ">= 4.7.4" 3538 + }, 3539 + "peerDependenciesMeta": { 3540 + "typescript": { 3541 + "optional": true 3542 + } 3543 + } 3544 + }, 3545 + "node_modules/puppeteer-core/node_modules/ws": { 3546 + "version": "8.13.0", 3547 + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", 3548 + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", 3549 + "dev": true, 3550 + "engines": { 3551 + "node": ">=10.0.0" 3552 + }, 3553 + "peerDependencies": { 3554 + "bufferutil": "^4.0.1", 3555 + "utf-8-validate": ">=5.0.2" 3556 + }, 3557 + "peerDependenciesMeta": { 3558 + "bufferutil": { 3559 + "optional": true 3560 + }, 3561 + "utf-8-validate": { 3562 + "optional": true 3563 + } 3564 + } 3565 + }, 3566 + "node_modules/qs": { 3567 + "version": "6.11.2", 3568 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", 3569 + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", 3570 + "dev": true, 3571 + "dependencies": { 3572 + "side-channel": "^1.0.4" 3573 + }, 3574 + "engines": { 3575 + "node": ">=0.6" 3576 + }, 3577 + "funding": { 3578 + "url": "https://github.com/sponsors/ljharb" 3579 + } 3580 + }, 3581 + "node_modules/queue-microtask": { 3582 + "version": "1.2.3", 3583 + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 3584 + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 3585 + "dev": true, 3586 + "funding": [ 3587 + { 3588 + "type": "github", 3589 + "url": "https://github.com/sponsors/feross" 3590 + }, 3591 + { 3592 + "type": "patreon", 3593 + "url": "https://www.patreon.com/feross" 3594 + }, 3595 + { 3596 + "type": "consulting", 3597 + "url": "https://feross.org/support" 3598 + } 3599 + ] 3600 + }, 3601 + "node_modules/queue-tick": { 3602 + "version": "1.0.1", 3603 + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", 3604 + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", 3605 + "dev": true 3606 + }, 3607 + "node_modules/raw-body": { 3608 + "version": "2.5.2", 3609 + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", 3610 + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", 3611 + "dev": true, 3612 + "dependencies": { 3613 + "bytes": "3.1.2", 3614 + "http-errors": "2.0.0", 3615 + "iconv-lite": "0.4.24", 3616 + "unpipe": "1.0.0" 3617 + }, 3618 + "engines": { 3619 + "node": ">= 0.8" 3620 + } 3621 + }, 3622 + "node_modules/raw-body/node_modules/http-errors": { 3623 + "version": "2.0.0", 3624 + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", 3625 + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 3626 + "dev": true, 3627 + "dependencies": { 3628 + "depd": "2.0.0", 3629 + "inherits": "2.0.4", 3630 + "setprototypeof": "1.2.0", 3631 + "statuses": "2.0.1", 3632 + "toidentifier": "1.0.1" 3633 + }, 3634 + "engines": { 3635 + "node": ">= 0.8" 3636 + } 3637 + }, 3638 + "node_modules/raw-body/node_modules/statuses": { 3639 + "version": "2.0.1", 3640 + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 3641 + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", 3642 + "dev": true, 3643 + "engines": { 3644 + "node": ">= 0.8" 3645 + } 3646 + }, 3647 + "node_modules/readdirp": { 3648 + "version": "3.6.0", 3649 + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 3650 + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 3651 + "dev": true, 3652 + "dependencies": { 3653 + "picomatch": "^2.2.1" 3654 + }, 3655 + "engines": { 3656 + "node": ">=8.10.0" 3657 + } 3658 + }, 3659 + "node_modules/require-directory": { 3660 + "version": "2.1.1", 3661 + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 3662 + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 3663 + "dev": true, 3664 + "engines": { 3665 + "node": ">=0.10.0" 3666 + } 3667 + }, 3668 + "node_modules/resolve": { 3669 + "version": "1.22.8", 3670 + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", 3671 + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", 3672 + "dev": true, 3673 + "dependencies": { 3674 + "is-core-module": "^2.13.0", 3675 + "path-parse": "^1.0.7", 3676 + "supports-preserve-symlinks-flag": "^1.0.0" 3677 + }, 3678 + "bin": { 3679 + "resolve": "bin/resolve" 3680 + }, 3681 + "funding": { 3682 + "url": "https://github.com/sponsors/ljharb" 3683 + } 3684 + }, 3685 + "node_modules/resolve-path": { 3686 + "version": "1.4.0", 3687 + "resolved": "https://registry.npmjs.org/resolve-path/-/resolve-path-1.4.0.tgz", 3688 + "integrity": "sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w==", 3689 + "dev": true, 3690 + "dependencies": { 3691 + "http-errors": "~1.6.2", 3692 + "path-is-absolute": "1.0.1" 3693 + }, 3694 + "engines": { 3695 + "node": ">= 0.8" 3696 + } 3697 + }, 3698 + "node_modules/resolve-path/node_modules/depd": { 3699 + "version": "1.1.2", 3700 + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 3701 + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", 3702 + "dev": true, 3703 + "engines": { 3704 + "node": ">= 0.6" 3705 + } 3706 + }, 3707 + "node_modules/resolve-path/node_modules/http-errors": { 3708 + "version": "1.6.3", 3709 + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", 3710 + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", 3711 + "dev": true, 3712 + "dependencies": { 3713 + "depd": "~1.1.2", 3714 + "inherits": "2.0.3", 3715 + "setprototypeof": "1.1.0", 3716 + "statuses": ">= 1.4.0 < 2" 3717 + }, 3718 + "engines": { 3719 + "node": ">= 0.6" 3720 + } 3721 + }, 3722 + "node_modules/resolve-path/node_modules/inherits": { 3723 + "version": "2.0.3", 3724 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 3725 + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", 3726 + "dev": true 3727 + }, 3728 + "node_modules/resolve-path/node_modules/setprototypeof": { 3729 + "version": "1.1.0", 3730 + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", 3731 + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", 3732 + "dev": true 3733 + }, 3734 + "node_modules/restore-cursor": { 3735 + "version": "3.1.0", 3736 + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", 3737 + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", 3738 + "dev": true, 3739 + "dependencies": { 3740 + "onetime": "^5.1.0", 3741 + "signal-exit": "^3.0.2" 3742 + }, 3743 + "engines": { 3744 + "node": ">=8" 3745 + } 3746 + }, 3747 + "node_modules/reusify": { 3748 + "version": "1.0.4", 3749 + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 3750 + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 3751 + "dev": true, 3752 + "engines": { 3753 + "iojs": ">=1.0.0", 3754 + "node": ">=0.10.0" 3755 + } 3756 + }, 3757 + "node_modules/rollup": { 3758 + "version": "4.12.0", 3759 + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.12.0.tgz", 3760 + "integrity": "sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==", 3761 + "dev": true, 3762 + "dependencies": { 3763 + "@types/estree": "1.0.5" 3764 + }, 3765 + "bin": { 3766 + "rollup": "dist/bin/rollup" 3767 + }, 3768 + "engines": { 3769 + "node": ">=18.0.0", 3770 + "npm": ">=8.0.0" 3771 + }, 3772 + "optionalDependencies": { 3773 + "@rollup/rollup-android-arm-eabi": "4.12.0", 3774 + "@rollup/rollup-android-arm64": "4.12.0", 3775 + "@rollup/rollup-darwin-arm64": "4.12.0", 3776 + "@rollup/rollup-darwin-x64": "4.12.0", 3777 + "@rollup/rollup-linux-arm-gnueabihf": "4.12.0", 3778 + "@rollup/rollup-linux-arm64-gnu": "4.12.0", 3779 + "@rollup/rollup-linux-arm64-musl": "4.12.0", 3780 + "@rollup/rollup-linux-riscv64-gnu": "4.12.0", 3781 + "@rollup/rollup-linux-x64-gnu": "4.12.0", 3782 + "@rollup/rollup-linux-x64-musl": "4.12.0", 3783 + "@rollup/rollup-win32-arm64-msvc": "4.12.0", 3784 + "@rollup/rollup-win32-ia32-msvc": "4.12.0", 3785 + "@rollup/rollup-win32-x64-msvc": "4.12.0", 3786 + "fsevents": "~2.3.2" 3787 + } 3788 + }, 3789 + "node_modules/run-parallel": { 3790 + "version": "1.2.0", 3791 + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 3792 + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 3793 + "dev": true, 3794 + "funding": [ 3795 + { 3796 + "type": "github", 3797 + "url": "https://github.com/sponsors/feross" 3798 + }, 3799 + { 3800 + "type": "patreon", 3801 + "url": "https://www.patreon.com/feross" 3802 + }, 3803 + { 3804 + "type": "consulting", 3805 + "url": "https://feross.org/support" 3806 + } 3807 + ], 3808 + "dependencies": { 3809 + "queue-microtask": "^1.2.2" 3810 + } 3811 + }, 3812 + "node_modules/safe-buffer": { 3813 + "version": "5.2.1", 3814 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 3815 + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 3816 + "dev": true, 3817 + "funding": [ 3818 + { 3819 + "type": "github", 3820 + "url": "https://github.com/sponsors/feross" 3821 + }, 3822 + { 3823 + "type": "patreon", 3824 + "url": "https://www.patreon.com/feross" 3825 + }, 3826 + { 3827 + "type": "consulting", 3828 + "url": "https://feross.org/support" 3829 + } 3830 + ] 3831 + }, 3832 + "node_modules/safer-buffer": { 3833 + "version": "2.1.2", 3834 + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 3835 + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 3836 + "dev": true 3837 + }, 3838 + "node_modules/semver": { 3839 + "version": "7.6.0", 3840 + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", 3841 + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", 3842 + "dev": true, 3843 + "dependencies": { 3844 + "lru-cache": "^6.0.0" 3845 + }, 3846 + "bin": { 3847 + "semver": "bin/semver.js" 3848 + }, 3849 + "engines": { 3850 + "node": ">=10" 3851 + } 3852 + }, 3853 + "node_modules/semver/node_modules/lru-cache": { 3854 + "version": "6.0.0", 3855 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 3856 + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 3857 + "dev": true, 3858 + "dependencies": { 3859 + "yallist": "^4.0.0" 3860 + }, 3861 + "engines": { 3862 + "node": ">=10" 3863 + } 3864 + }, 3865 + "node_modules/set-function-length": { 3866 + "version": "1.2.1", 3867 + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", 3868 + "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", 3869 + "dev": true, 3870 + "dependencies": { 3871 + "define-data-property": "^1.1.2", 3872 + "es-errors": "^1.3.0", 3873 + "function-bind": "^1.1.2", 3874 + "get-intrinsic": "^1.2.3", 3875 + "gopd": "^1.0.1", 3876 + "has-property-descriptors": "^1.0.1" 3877 + }, 3878 + "engines": { 3879 + "node": ">= 0.4" 3880 + } 3881 + }, 3882 + "node_modules/setprototypeof": { 3883 + "version": "1.2.0", 3884 + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 3885 + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", 3886 + "dev": true 3887 + }, 3888 + "node_modules/side-channel": { 3889 + "version": "1.0.5", 3890 + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.5.tgz", 3891 + "integrity": "sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==", 3892 + "dev": true, 3893 + "dependencies": { 3894 + "call-bind": "^1.0.6", 3895 + "es-errors": "^1.3.0", 3896 + "get-intrinsic": "^1.2.4", 3897 + "object-inspect": "^1.13.1" 3898 + }, 3899 + "engines": { 3900 + "node": ">= 0.4" 3901 + }, 3902 + "funding": { 3903 + "url": "https://github.com/sponsors/ljharb" 3904 + } 3905 + }, 3906 + "node_modules/signal-exit": { 3907 + "version": "3.0.7", 3908 + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 3909 + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 3910 + "dev": true 3911 + }, 3912 + "node_modules/slash": { 3913 + "version": "3.0.0", 3914 + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 3915 + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 3916 + "dev": true, 3917 + "engines": { 3918 + "node": ">=8" 3919 + } 3920 + }, 3921 + "node_modules/slice-ansi": { 3922 + "version": "4.0.0", 3923 + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", 3924 + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", 3925 + "dev": true, 3926 + "dependencies": { 3927 + "ansi-styles": "^4.0.0", 3928 + "astral-regex": "^2.0.0", 3929 + "is-fullwidth-code-point": "^3.0.0" 3930 + }, 3931 + "engines": { 3932 + "node": ">=10" 3933 + }, 3934 + "funding": { 3935 + "url": "https://github.com/chalk/slice-ansi?sponsor=1" 3936 + } 3937 + }, 3938 + "node_modules/slice-ansi/node_modules/ansi-styles": { 3939 + "version": "4.3.0", 3940 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 3941 + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 3942 + "dev": true, 3943 + "dependencies": { 3944 + "color-convert": "^2.0.1" 3945 + }, 3946 + "engines": { 3947 + "node": ">=8" 3948 + }, 3949 + "funding": { 3950 + "url": "https://github.com/chalk/ansi-styles?sponsor=1" 3951 + } 3952 + }, 3953 + "node_modules/slice-ansi/node_modules/color-convert": { 3954 + "version": "2.0.1", 3955 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 3956 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 3957 + "dev": true, 3958 + "dependencies": { 3959 + "color-name": "~1.1.4" 3960 + }, 3961 + "engines": { 3962 + "node": ">=7.0.0" 3963 + } 3964 + }, 3965 + "node_modules/slice-ansi/node_modules/color-name": { 3966 + "version": "1.1.4", 3967 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 3968 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 3969 + "dev": true 3970 + }, 3971 + "node_modules/smart-buffer": { 3972 + "version": "4.2.0", 3973 + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", 3974 + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", 3975 + "dev": true, 3976 + "engines": { 3977 + "node": ">= 6.0.0", 3978 + "npm": ">= 3.0.0" 3979 + } 3980 + }, 3981 + "node_modules/socks": { 3982 + "version": "2.8.1", 3983 + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.1.tgz", 3984 + "integrity": "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==", 3985 + "dev": true, 3986 + "dependencies": { 3987 + "ip-address": "^9.0.5", 3988 + "smart-buffer": "^4.2.0" 3989 + }, 3990 + "engines": { 3991 + "node": ">= 10.0.0", 3992 + "npm": ">= 3.0.0" 3993 + } 3994 + }, 3995 + "node_modules/socks-proxy-agent": { 3996 + "version": "8.0.2", 3997 + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", 3998 + "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", 3999 + "dev": true, 4000 + "dependencies": { 4001 + "agent-base": "^7.0.2", 4002 + "debug": "^4.3.4", 4003 + "socks": "^2.7.1" 4004 + }, 4005 + "engines": { 4006 + "node": ">= 14" 4007 + } 4008 + }, 4009 + "node_modules/source-map": { 4010 + "version": "0.7.4", 4011 + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", 4012 + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", 4013 + "dev": true, 4014 + "engines": { 4015 + "node": ">= 8" 4016 + } 4017 + }, 4018 + "node_modules/sprintf-js": { 4019 + "version": "1.1.3", 4020 + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", 4021 + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", 4022 + "dev": true 4023 + }, 4024 + "node_modules/statuses": { 4025 + "version": "1.5.0", 4026 + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 4027 + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", 4028 + "dev": true, 4029 + "engines": { 4030 + "node": ">= 0.6" 4031 + } 4032 + }, 4033 + "node_modules/stream-read-all": { 4034 + "version": "3.0.1", 4035 + "resolved": "https://registry.npmjs.org/stream-read-all/-/stream-read-all-3.0.1.tgz", 4036 + "integrity": "sha512-EWZT9XOceBPlVJRrYcykW8jyRSZYbkb/0ZK36uLEmoWVO5gxBOnntNTseNzfREsqxqdfEGQrD8SXQ3QWbBmq8A==", 4037 + "dev": true, 4038 + "engines": { 4039 + "node": ">=10" 4040 + } 4041 + }, 4042 + "node_modules/streamx": { 4043 + "version": "2.16.1", 4044 + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.16.1.tgz", 4045 + "integrity": "sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==", 4046 + "dev": true, 4047 + "dependencies": { 4048 + "fast-fifo": "^1.1.0", 4049 + "queue-tick": "^1.0.1" 4050 + }, 4051 + "optionalDependencies": { 4052 + "bare-events": "^2.2.0" 4053 + } 4054 + }, 4055 + "node_modules/string-width": { 4056 + "version": "4.2.3", 4057 + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 4058 + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 4059 + "dev": true, 4060 + "dependencies": { 4061 + "emoji-regex": "^8.0.0", 4062 + "is-fullwidth-code-point": "^3.0.0", 4063 + "strip-ansi": "^6.0.1" 4064 + }, 4065 + "engines": { 4066 + "node": ">=8" 4067 + } 4068 + }, 4069 + "node_modules/strip-ansi": { 4070 + "version": "6.0.1", 4071 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 4072 + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 4073 + "dev": true, 4074 + "dependencies": { 4075 + "ansi-regex": "^5.0.1" 4076 + }, 4077 + "engines": { 4078 + "node": ">=8" 4079 + } 4080 + }, 4081 + "node_modules/supports-color": { 4082 + "version": "5.5.0", 4083 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 4084 + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 4085 + "dev": true, 4086 + "dependencies": { 4087 + "has-flag": "^3.0.0" 4088 + }, 4089 + "engines": { 4090 + "node": ">=4" 4091 + } 4092 + }, 4093 + "node_modules/supports-preserve-symlinks-flag": { 4094 + "version": "1.0.0", 4095 + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 4096 + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 4097 + "dev": true, 4098 + "engines": { 4099 + "node": ">= 0.4" 4100 + }, 4101 + "funding": { 4102 + "url": "https://github.com/sponsors/ljharb" 4103 + } 4104 + }, 4105 + "node_modules/table-layout": { 4106 + "version": "3.0.2", 4107 + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-3.0.2.tgz", 4108 + "integrity": "sha512-rpyNZYRw+/C+dYkcQ3Pr+rLxW4CfHpXjPDnG7lYhdRoUcZTUt+KEsX+94RGp/aVp/MQU35JCITv2T/beY4m+hw==", 4109 + "dev": true, 4110 + "dependencies": { 4111 + "@75lb/deep-merge": "^1.1.1", 4112 + "array-back": "^6.2.2", 4113 + "command-line-args": "^5.2.1", 4114 + "command-line-usage": "^7.0.0", 4115 + "stream-read-all": "^3.0.1", 4116 + "typical": "^7.1.1", 4117 + "wordwrapjs": "^5.1.0" 4118 + }, 4119 + "bin": { 4120 + "table-layout": "bin/cli.js" 4121 + }, 4122 + "engines": { 4123 + "node": ">=12.17" 4124 + } 4125 + }, 4126 + "node_modules/table-layout/node_modules/array-back": { 4127 + "version": "6.2.2", 4128 + "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", 4129 + "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", 4130 + "dev": true, 4131 + "engines": { 4132 + "node": ">=12.17" 4133 + } 4134 + }, 4135 + "node_modules/table-layout/node_modules/typical": { 4136 + "version": "7.1.1", 4137 + "resolved": "https://registry.npmjs.org/typical/-/typical-7.1.1.tgz", 4138 + "integrity": "sha512-T+tKVNs6Wu7IWiAce5BgMd7OZfNYUndHwc5MknN+UHOudi7sGZzuHdCadllRuqJ3fPtgFtIH9+lt9qRv6lmpfA==", 4139 + "dev": true, 4140 + "engines": { 4141 + "node": ">=12.17" 4142 + } 4143 + }, 4144 + "node_modules/tar-fs": { 4145 + "version": "3.0.4", 4146 + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", 4147 + "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", 4148 + "dev": true, 4149 + "dependencies": { 4150 + "mkdirp-classic": "^0.5.2", 4151 + "pump": "^3.0.0", 4152 + "tar-stream": "^3.1.5" 4153 + } 4154 + }, 4155 + "node_modules/tar-stream": { 4156 + "version": "3.1.7", 4157 + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", 4158 + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", 4159 + "dev": true, 4160 + "dependencies": { 4161 + "b4a": "^1.6.4", 4162 + "fast-fifo": "^1.2.0", 4163 + "streamx": "^2.15.0" 4164 + } 4165 + }, 4166 + "node_modules/through": { 4167 + "version": "2.3.8", 4168 + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 4169 + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", 4170 + "dev": true 4171 + }, 4172 + "node_modules/to-regex-range": { 4173 + "version": "5.0.1", 4174 + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 4175 + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 4176 + "dev": true, 4177 + "dependencies": { 4178 + "is-number": "^7.0.0" 4179 + }, 4180 + "engines": { 4181 + "node": ">=8.0" 4182 + } 4183 + }, 4184 + "node_modules/toidentifier": { 4185 + "version": "1.0.1", 4186 + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 4187 + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", 4188 + "dev": true, 4189 + "engines": { 4190 + "node": ">=0.6" 4191 + } 4192 + }, 4193 + "node_modules/tr46": { 4194 + "version": "3.0.0", 4195 + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", 4196 + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", 4197 + "dev": true, 4198 + "dependencies": { 4199 + "punycode": "^2.1.1" 4200 + }, 4201 + "engines": { 4202 + "node": ">=12" 4203 + } 4204 + }, 4205 + "node_modules/tslib": { 4206 + "version": "2.6.2", 4207 + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", 4208 + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", 4209 + "dev": true 4210 + }, 4211 + "node_modules/tsscmp": { 4212 + "version": "1.0.6", 4213 + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", 4214 + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", 4215 + "dev": true, 4216 + "engines": { 4217 + "node": ">=0.6.x" 4218 + } 4219 + }, 4220 + "node_modules/type-fest": { 4221 + "version": "0.21.3", 4222 + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", 4223 + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", 4224 + "dev": true, 4225 + "engines": { 4226 + "node": ">=10" 4227 + }, 4228 + "funding": { 4229 + "url": "https://github.com/sponsors/sindresorhus" 4230 + } 4231 + }, 4232 + "node_modules/type-is": { 4233 + "version": "1.6.18", 4234 + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 4235 + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 4236 + "dev": true, 4237 + "dependencies": { 4238 + "media-typer": "0.3.0", 4239 + "mime-types": "~2.1.24" 4240 + }, 4241 + "engines": { 4242 + "node": ">= 0.6" 4243 + } 4244 + }, 4245 + "node_modules/typescript": { 4246 + "version": "5.3.3", 4247 + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", 4248 + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", 4249 + "dev": true, 4250 + "bin": { 4251 + "tsc": "bin/tsc", 4252 + "tsserver": "bin/tsserver" 4253 + }, 4254 + "engines": { 4255 + "node": ">=14.17" 4256 + } 4257 + }, 4258 + "node_modules/typical": { 4259 + "version": "4.0.0", 4260 + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", 4261 + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", 4262 + "dev": true, 4263 + "engines": { 4264 + "node": ">=8" 4265 + } 4266 + }, 4267 + "node_modules/unbzip2-stream": { 4268 + "version": "1.4.3", 4269 + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", 4270 + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", 4271 + "dev": true, 4272 + "dependencies": { 4273 + "buffer": "^5.2.1", 4274 + "through": "^2.3.8" 4275 + } 4276 + }, 4277 + "node_modules/undici-types": { 4278 + "version": "5.26.5", 4279 + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", 4280 + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", 4281 + "dev": true 4282 + }, 4283 + "node_modules/universalify": { 4284 + "version": "2.0.1", 4285 + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", 4286 + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", 4287 + "dev": true, 4288 + "engines": { 4289 + "node": ">= 10.0.0" 4290 + } 4291 + }, 4292 + "node_modules/unpipe": { 4293 + "version": "1.0.0", 4294 + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 4295 + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", 4296 + "dev": true, 4297 + "engines": { 4298 + "node": ">= 0.8" 4299 + } 4300 + }, 4301 + "node_modules/v8-to-istanbul": { 4302 + "version": "9.2.0", 4303 + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", 4304 + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", 4305 + "dev": true, 4306 + "dependencies": { 4307 + "@jridgewell/trace-mapping": "^0.3.12", 4308 + "@types/istanbul-lib-coverage": "^2.0.1", 4309 + "convert-source-map": "^2.0.0" 4310 + }, 4311 + "engines": { 4312 + "node": ">=10.12.0" 4313 + } 4314 + }, 4315 + "node_modules/vary": { 4316 + "version": "1.1.2", 4317 + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 4318 + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", 4319 + "dev": true, 4320 + "engines": { 4321 + "node": ">= 0.8" 4322 + } 4323 + }, 4324 + "node_modules/webidl-conversions": { 4325 + "version": "7.0.0", 4326 + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", 4327 + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", 4328 + "dev": true, 4329 + "engines": { 4330 + "node": ">=12" 4331 + } 4332 + }, 4333 + "node_modules/whatwg-url": { 4334 + "version": "11.0.0", 4335 + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", 4336 + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", 4337 + "dev": true, 4338 + "dependencies": { 4339 + "tr46": "^3.0.0", 4340 + "webidl-conversions": "^7.0.0" 4341 + }, 4342 + "engines": { 4343 + "node": ">=12" 4344 + } 4345 + }, 4346 + "node_modules/wordwrapjs": { 4347 + "version": "5.1.0", 4348 + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-5.1.0.tgz", 4349 + "integrity": "sha512-JNjcULU2e4KJwUNv6CHgI46UvDGitb6dGryHajXTDiLgg1/RiGoPSDw4kZfYnwGtEXf2ZMeIewDQgFGzkCB2Sg==", 4350 + "dev": true, 4351 + "engines": { 4352 + "node": ">=12.17" 4353 + } 4354 + }, 4355 + "node_modules/wrap-ansi": { 4356 + "version": "6.2.0", 4357 + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", 4358 + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", 4359 + "dev": true, 4360 + "dependencies": { 4361 + "ansi-styles": "^4.0.0", 4362 + "string-width": "^4.1.0", 4363 + "strip-ansi": "^6.0.0" 4364 + }, 4365 + "engines": { 4366 + "node": ">=8" 4367 + } 4368 + }, 4369 + "node_modules/wrap-ansi/node_modules/ansi-styles": { 4370 + "version": "4.3.0", 4371 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 4372 + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 4373 + "dev": true, 4374 + "dependencies": { 4375 + "color-convert": "^2.0.1" 4376 + }, 4377 + "engines": { 4378 + "node": ">=8" 4379 + }, 4380 + "funding": { 4381 + "url": "https://github.com/chalk/ansi-styles?sponsor=1" 4382 + } 4383 + }, 4384 + "node_modules/wrap-ansi/node_modules/color-convert": { 4385 + "version": "2.0.1", 4386 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 4387 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 4388 + "dev": true, 4389 + "dependencies": { 4390 + "color-name": "~1.1.4" 4391 + }, 4392 + "engines": { 4393 + "node": ">=7.0.0" 4394 + } 4395 + }, 4396 + "node_modules/wrap-ansi/node_modules/color-name": { 4397 + "version": "1.1.4", 4398 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 4399 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 4400 + "dev": true 4401 + }, 4402 + "node_modules/wrappy": { 4403 + "version": "1.0.2", 4404 + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 4405 + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 4406 + "dev": true 4407 + }, 4408 + "node_modules/ws": { 4409 + "version": "7.5.9", 4410 + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", 4411 + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", 4412 + "dev": true, 4413 + "engines": { 4414 + "node": ">=8.3.0" 4415 + }, 4416 + "peerDependencies": { 4417 + "bufferutil": "^4.0.1", 4418 + "utf-8-validate": "^5.0.2" 4419 + }, 4420 + "peerDependenciesMeta": { 4421 + "bufferutil": { 4422 + "optional": true 4423 + }, 4424 + "utf-8-validate": { 4425 + "optional": true 4426 + } 4427 + } 4428 + }, 4429 + "node_modules/y18n": { 4430 + "version": "5.0.8", 4431 + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 4432 + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 4433 + "dev": true, 4434 + "engines": { 4435 + "node": ">=10" 4436 + } 4437 + }, 4438 + "node_modules/yallist": { 4439 + "version": "4.0.0", 4440 + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 4441 + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 4442 + "dev": true 4443 + }, 4444 + "node_modules/yargs": { 4445 + "version": "17.7.1", 4446 + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", 4447 + "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", 4448 + "dev": true, 4449 + "dependencies": { 4450 + "cliui": "^8.0.1", 4451 + "escalade": "^3.1.1", 4452 + "get-caller-file": "^2.0.5", 4453 + "require-directory": "^2.1.1", 4454 + "string-width": "^4.2.3", 4455 + "y18n": "^5.0.5", 4456 + "yargs-parser": "^21.1.1" 4457 + }, 4458 + "engines": { 4459 + "node": ">=12" 4460 + } 4461 + }, 4462 + "node_modules/yargs-parser": { 4463 + "version": "21.1.1", 4464 + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", 4465 + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", 4466 + "dev": true, 4467 + "engines": { 4468 + "node": ">=12" 4469 + } 4470 + }, 4471 + "node_modules/yauzl": { 4472 + "version": "2.10.0", 4473 + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", 4474 + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", 4475 + "dev": true, 4476 + "dependencies": { 4477 + "buffer-crc32": "~0.2.3", 4478 + "fd-slicer": "~1.1.0" 4479 + } 4480 + }, 4481 + "node_modules/ylru": { 4482 + "version": "1.3.2", 4483 + "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.3.2.tgz", 4484 + "integrity": "sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==", 4485 + "dev": true, 4486 + "engines": { 4487 + "node": ">= 4.0.0" 4488 + } 4489 + } 4490 + } 4491 + }
+19
package.json
··· 1 + { 2 + "name": "morphlite", 3 + "version": "0.0.1", 4 + "description": "Morphlite is an attempt to create a DOM morphing function in less than 100 lines of code to use with [HTMZ](https://leanrada.com/htmz/) in small projects.", 5 + "main": "dist/morphlite.js", 6 + "scripts": { 7 + "test": "web-test-runner test/**/*.test.js --node-resolve", 8 + "build": "tsc", 9 + "watch": "tsc -w", 10 + "test:watch": "npm run test -- --watch" 11 + }, 12 + "author": "Joel Drapper", 13 + "license": "MIT", 14 + "devDependencies": { 15 + "@open-wc/testing": "^3.0.0-next.5", 16 + "@web/test-runner": "^0.18.0", 17 + "typescript": "^5.3.3" 18 + } 19 + }
+120
src/morphlite.ts
··· 1 + type IdSet = Set<string>; 2 + type IdMap = Map<Node, IdSet>; 3 + 4 + export function morph(from: Node, to: Node): void { 5 + const idMap: IdMap = new Map(); 6 + 7 + if (isElement(from) && isElement(to)) { 8 + populateIdMapForNode(from, idMap); 9 + populateIdMapForNode(to, idMap); 10 + } 11 + 12 + morphNodes(from, to, idMap); 13 + } 14 + 15 + function morphNodes(from: Node, to: Node, idMap: IdMap, insertBefore?: Node, parent?: Node): void { 16 + if (parent && insertBefore && insertBefore !== from) parent.insertBefore(to, insertBefore); 17 + 18 + if (isText(from) && isText(to)) { 19 + if (from.textContent !== to.textContent) from.textContent = to.textContent; 20 + } else if (isElement(from) && isElement(to)) { 21 + if (from.tagName === to.tagName) { 22 + if (to.attributes.length > 0) morphAttributes(from, to); 23 + if (to.childNodes.length > 0) morphChildNodes(from, to, idMap); 24 + } else from.replaceWith(to.cloneNode(true)); 25 + } else { 26 + throw new Error( 27 + `Cannot morph nodes of different types: from is ${from.constructor.name}, to is ${to.constructor.name}`, 28 + ); 29 + } 30 + } 31 + 32 + function morphAttributes(from: Element, to: Element): void { 33 + for (const { name } of from.attributes) to.hasAttribute(name) || from.removeAttribute(name); 34 + for (const { name, value } of to.attributes) from.getAttribute(name) !== value && from.setAttribute(name, value); 35 + 36 + if (isInput(from) && isInput(to)) from.value = to.value; 37 + if (isOption(from) && isOption(to)) from.selected = to.selected; 38 + if (isTextArea(from) && isTextArea(to)) from.value = to.value; 39 + } 40 + 41 + function morphChildNodes(from: Element, to: Element, idMap: IdMap): void { 42 + for (let i = 0; i < to.childNodes.length; i++) { 43 + const childA = [...from.childNodes].at(i); 44 + const childB = [...to.childNodes].at(i); 45 + 46 + if (childA && childB) morphChildNode(childA, childB, idMap, from); 47 + else if (childB) from.appendChild(childB.cloneNode(true)); 48 + } 49 + 50 + console.log("Got here ", from.childNodes.length, to.childNodes.length, from.childNodes[0]); 51 + while (from.childNodes.length > to.childNodes.length) from.lastChild?.remove(); 52 + } 53 + 54 + function morphChildNode(from: ChildNode, to: ChildNode, idMap: IdMap, parent: Element): void { 55 + if (isElement(from) && isElement(to)) { 56 + let current: ChildNode | null = from; 57 + let nextBestMatch: ChildNode | null = null; 58 + 59 + while (current && isElement(current)) { 60 + if (current.id !== "" && current.id === to.id) { 61 + morphNodes(current, to, idMap, from, parent); 62 + break; 63 + } else { 64 + const setA = idMap.get(current); 65 + const setB = idMap.get(to); 66 + 67 + if (setA && setB && numberOfItemsInCommon(setA, setB) > 0) { 68 + return morphNodes(current, to, idMap, from, parent); 69 + } else if (!nextBestMatch && current.tagName === to.tagName) { 70 + nextBestMatch = current; 71 + } 72 + } 73 + 74 + current = current.nextSibling; 75 + } 76 + 77 + if (nextBestMatch) morphNodes(nextBestMatch, to, idMap, from, parent); 78 + else from.replaceWith(to.cloneNode(true)); 79 + } else morphNodes(from, to, idMap); 80 + } 81 + 82 + function populateIdMapForNode(node: ParentNode, idMap: IdMap): void { 83 + const parent: HTMLElement | null = node.parentElement; 84 + const elements: NodeListOf<Element> = node.querySelectorAll("[id]"); 85 + 86 + for (const element of elements) { 87 + if (element.id === "") continue; 88 + let current: Element | null = element; 89 + 90 + while (current && current !== parent) { 91 + const idSet: IdSet | undefined = idMap.get(current); 92 + idSet ? idSet.add(element.id) : idMap.set(current, new Set([element.id])); 93 + current = current.parentElement; 94 + } 95 + } 96 + } 97 + 98 + function numberOfItemsInCommon<T>(a: Set<T>, b: Set<T>): number { 99 + return [...a].filter((item) => b.has(item)).length; 100 + } 101 + 102 + function isElement(node: Node): node is Element { 103 + return node.nodeType === 1; 104 + } 105 + 106 + function isText(node: Node): node is Text { 107 + return node.nodeType === 3; 108 + } 109 + 110 + function isInput(element: Element): element is HTMLInputElement { 111 + return element.localName === "input"; 112 + } 113 + 114 + function isOption(element: Element): element is HTMLOptionElement { 115 + return element.localName === "option"; 116 + } 117 + 118 + function isTextArea(element: Element): element is HTMLTextAreaElement { 119 + return element.localName === "textarea"; 120 + }
+22
test/something.test.js
··· 1 + import { fixture, html, expect } from "@open-wc/testing"; 2 + import { morph } from "../"; 3 + 4 + describe("my-test", () => { 5 + it("works", async () => { 6 + const a = await fixture(html`<h1></h1>`); 7 + const b = await fixture(html`<h1>Hello</h1>`); 8 + 9 + morph(a, b); 10 + 11 + expect(a.textContent).to.equal(b.textContent); 12 + }); 13 + 14 + it("removes elements", async () => { 15 + const a = await fixture(html`<h1><div></div></h1>`); 16 + const b = await fixture(html`<h1></h1>`); 17 + 18 + morph(a, b); 19 + 20 + expect(a.outerHTML).to.equal(b.outerHTML); 21 + }); 22 + });
+16 -8
tsconfig.json
··· 1 1 { 2 - "compilerOptions": { 3 - "noEmit": true, 4 - "strict": true, 5 - "target": "es2015", 6 - "noImplicitOverride": true, 7 - "allowUnreachableCode": false 8 - }, 9 - "include": ["app/frontend/entrypoints/**/*"] 2 + "compilerOptions": { 3 + "lib": ["dom", "esnext", "dom.iterable"], 4 + "module": "esnext", 5 + "moduleResolution": "node", 6 + "noUnusedLocals": true, 7 + "rootDir": "src", 8 + "strict": true, 9 + "target": "es2015", 10 + "removeComments": true, 11 + "outDir": "dist", 12 + "baseUrl": ".", 13 + "noEmit": false, 14 + "declaration": false, 15 + "esModuleInterop": true, 16 + "allowSyntheticDefaultImports": true 17 + } 10 18 }
+16
web-test-runner.config.mjs
··· 1 + const filteredLogs = [ 2 + "Lit is in dev mode. Not recommended for production! See https://lit.dev/msg/dev-mode for more information.", 3 + ]; 4 + 5 + const filterBrowserLogs = (log) => { 6 + for (const arg of log.args) { 7 + if (typeof arg === "string" && filteredLogs.some((l) => arg.includes(l))) { 8 + return false; 9 + } 10 + } 11 + return true; 12 + }; 13 + 14 + export default { 15 + filterBrowserLogs, 16 + };