From cecf77ee337e879b22cddc68b90fe7066f568f8f Mon Sep 17 00:00:00 2001 From: confused-Techie Date: Sun, 26 Feb 2023 03:30:07 -0800 Subject: [PATCH 01/85] Initial setup and docs for auto-updating --- .../chromium-elements-shim.js | 44 + .../chromium-elements-shim.mjs | 11 + packages/autocomplete-html/package-lock.json | 16512 +++++++++++++++- packages/autocomplete-html/package.json | 7 +- packages/autocomplete-html/update2.js | 127 + 5 files changed, 16699 insertions(+), 2 deletions(-) create mode 100644 packages/autocomplete-html/chromium-elements-shim.js create mode 100644 packages/autocomplete-html/chromium-elements-shim.mjs create mode 100644 packages/autocomplete-html/update2.js diff --git a/packages/autocomplete-html/chromium-elements-shim.js b/packages/autocomplete-html/chromium-elements-shim.js new file mode 100644 index 000000000..4f7d575fe --- /dev/null +++ b/packages/autocomplete-html/chromium-elements-shim.js @@ -0,0 +1,44 @@ +require = require("esm")(module) +module.exports = require("./chromium-elements-shim.mjs") + +/** +Used to aid in the automatic updating of our `completions.json` + +So while this, coupled with `chromium-elements-shim.mjs` is a rather ugly solution +heres why this exists: + +Essentially, we need the values declared within `DOMPinnedProperties.ts`. +Those values will be essential in creating our final `completions.json` + +But the problems with using this file in the regular JavaScript the `update.js` +file is created in are three fold: + +1) This file, obviously, is TypeScript +2) This file is an ECMAScript Module +3) While this is a TypeScript file there's no `./dist` folder or compiled version + readily available, instead relying on custom built tooling to transpile. + +So while this solution is ugly, essentially we make it so we can simply +`require()` this file within our JavaScript. + +We literally use `const chromiumElementsShim = require("./chromium-elements-shim.js");` +Then just have to call `chromiumElementsShim.bootstrap()` to transpile the file. + +We require this file, which then loads `esm` which allows us to import a ESM +module in a CommonJS module by making a small shim. Exporting it as CommonJS. + +But the file is still TypeScript. So we use `ts-import` in `chromium-elements-shim.mjs` +to read the file from disk, and transpile it, finally exporting the async function +that actually does the transpiling. + +So from here we import that module, and shim it. + +A word of caution, we are specifically using the older version of `ts-import` +because this was the version that was used before the developer upgraded the Node +version supported. Which beyond this they use `node:fs` to import the FS Module, +which isn't supported on the version of Pulsar we are currently using. + +So once we upgrade our version of NodeJS we will also be able to upgrade `ts-import` +to it's latest version. That will also mean we have to rewrite `chromium-elements-shim.mjs` +as the API has completely changed since the specific version we are using. +*/ diff --git a/packages/autocomplete-html/chromium-elements-shim.mjs b/packages/autocomplete-html/chromium-elements-shim.mjs new file mode 100644 index 000000000..b633dcff5 --- /dev/null +++ b/packages/autocomplete-html/chromium-elements-shim.mjs @@ -0,0 +1,11 @@ +import * as tsImport from 'ts-import'; + +export const bootstrap = async () => { + const filePath = "./node_modules/chrome-devtools-frontend/front_end/models/javascript_metadata/DOMPinnedProperties.ts"; + const compiled = await tsImport.default.tsImport.compile(filePath); + + return compiled; +}; + +// Used to aid in the automated process of updating `completions.json` +// More information in `chromium-elements-shim.js` diff --git a/packages/autocomplete-html/package-lock.json b/packages/autocomplete-html/package-lock.json index b089e5931..281a7a090 100644 --- a/packages/autocomplete-html/package-lock.json +++ b/packages/autocomplete-html/package-lock.json @@ -9,12 +9,489 @@ "version": "0.8.9", "license": "MIT", "devDependencies": { - "request": "^2.53.0" + "@webref/elements": "^2.1.0", + "chrome-devtools-frontend": "^1.0.1070764", + "content": "github:mdn/content", + "esm": "^3.2.25", + "request": "^2.53.0", + "ts-import": "^2.0.40" }, "engines": { "atom": ">=0.174.0 <2.0.0" } }, + "node_modules/@caporal/core": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@caporal/core/-/core-2.0.2.tgz", + "integrity": "sha512-o3J5aZINFWkkL+sL0DUs1dPHJjaetAAdwMRLbJ4U8aJW3K81E323IFMkFNYcOwTiPVhNzllC3USxZbU6xWFjFg==", + "dev": true, + "dependencies": { + "@types/glob": "^7.1.1", + "@types/lodash": "4.14.149", + "@types/node": "13.9.3", + "@types/table": "5.0.0", + "@types/tabtab": "^3.0.1", + "@types/wrap-ansi": "^3.0.0", + "chalk": "3.0.0", + "glob": "^7.1.6", + "lodash": "4.17.15", + "table": "5.4.6", + "tabtab": "^3.0.2", + "winston": "3.2.1", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@caporal/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@caporal/core/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@caporal/core/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@caporal/core/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@fast-csv/parse": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/@fast-csv/parse/-/parse-4.3.6.tgz", + "integrity": "sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==", + "dev": true, + "dependencies": { + "@types/node": "^14.0.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.groupby": "^4.6.0", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0", + "lodash.isundefined": "^3.0.1", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/@fast-csv/parse/node_modules/@types/node": { + "version": "14.18.36", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz", + "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==", + "dev": true + }, + "node_modules/@mdn/bcd-utils-api": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@mdn/bcd-utils-api/-/bcd-utils-api-0.0.3.tgz", + "integrity": "sha512-plyZoNOtKGKPoMkQQ/KXziQswzrhO1rdrjslcM7J2TRCOAlusnmjhPf3NKyvv7mDm0nqHex+l8Chq2TUj8tehw==", + "dev": true, + "dependencies": { + "@mdn/browser-compat-data": "latest" + } + }, + "node_modules/@mdn/browser-compat-data": { + "version": "5.2.38", + "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.2.38.tgz", + "integrity": "sha512-hV93KGiz3WSExunjoWPHp2Z+a9gI2W+kz8IhPzeOhtMl0eDaeguYyEoE7N45wGnKyh3j2zCA7KmwZrQkpoqyxA==", + "dev": true + }, + "node_modules/@mdn/yari": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/@mdn/yari/-/yari-2.5.3.tgz", + "integrity": "sha512-VwTBJnAkDtctbfDwMZXydySOBOpscjxXZ+/fdDvBH+yG0cClMVTJTZYrS5sCLngh/jBwTwcn3PqVt/tGf7hElQ==", + "dev": true, + "dependencies": { + "@caporal/core": "^2.0.2", + "@fast-csv/parse": "^4.3.6", + "@mdn/bcd-utils-api": "^0.0.3", + "@mdn/browser-compat-data": "^5.2.38", + "@mozilla/glean": "1.3.0", + "@use-it/interval": "^1.0.0", + "@webref/css": "^5.4.4", + "accept-language-parser": "^1.5.0", + "async": "^3.2.4", + "chalk": "^5.2.0", + "cheerio": "^1.0.0-rc.12", + "cli-progress": "^3.12.0", + "compression": "^1.7.4", + "cookie": "^0.5.0", + "cookie-parser": "^1.4.6", + "css-tree": "^2.3.1", + "dayjs": "^1.11.7", + "dexie": "^3.2.3", + "dotenv": "^16.0.3", + "ejs": "^3.1.8", + "express": "^4.18.2", + "fdir": "^6.0.1", + "file-type": "^18.2.1", + "front-matter": "^4.0.2", + "fs-extra": "^11.1.0", + "got": "^12.5.3", + "html-react-parser": "^3.0.9", + "http-proxy-middleware": "^2.0.6", + "image-size": "^1.0.2", + "image-type": "^4.1.0", + "imagemin": "^8.0.1", + "imagemin-gifsicle": "^7.0.0", + "imagemin-mozjpeg": "^10.0.0", + "imagemin-pngquant": "^9.0.2", + "imagemin-svgo": "^10.0.1", + "inquirer": "^9.1.4", + "is-svg": "^4.3.2", + "js-yaml": "^4.1.0", + "loglevel": "^1.8.1", + "lru-cache": "^7.17.0", + "md5-file": "^5.0.0", + "mdast-util-from-markdown": "^1.3.0", + "mdast-util-phrasing": "^3.0.1", + "mdn-data": "^2.0.31", + "open": "^8.4.2", + "open-editor": "^4.0.0", + "prism-svelte": "^0.5.0", + "prismjs": "^1.29.0", + "react-modal": "^3.16.1", + "read-chunk": "^4.0.3", + "rehype-format": "^4.0.1", + "rehype-raw": "^6.1.1", + "rehype-stringify": "^9.0.3", + "remark-gfm": "^3.0.1", + "remark-parse": "^10.0.1", + "remark-rehype": "^10.1.0", + "sanitize-filename": "^1.6.3", + "send": "^0.18.0", + "source-map-support": "^0.5.21", + "tempy": "^3.0.0", + "unified": "^10.1.2", + "unist-builder": "^3.0.1", + "unist-util-visit": "^4.1.2", + "web-specs": "^2.50.0" + }, + "bin": { + "yari-build": "build/cli.js", + "yari-filecheck": "filecheck/cli.js", + "yari-server": "server/index.js", + "yari-tool": "tool/cli.js" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@mozilla/glean": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@mozilla/glean/-/glean-1.3.0.tgz", + "integrity": "sha512-2bEhpV8Tf4U/KEAJvaesVhe8SXk089jeDCHicEiBbznsRiIElHZVku7t7QHJI16oTqJEf/wHqjTDSQI9Wl3p3A==", + "dev": true, + "dependencies": { + "fflate": "^0.7.1", + "jose": "^4.0.4", + "tslib": "^2.3.1", + "uuid": "^9.0.0" + }, + "bin": { + "glean": "dist/cli/cli.js" + }, + "engines": { + "node": ">=12.20.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@mozilla/glean/node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@sindresorhus/is": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.3.0.tgz", + "integrity": "sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "dev": true, + "dependencies": { + "defer-to-connect": "^2.0.1" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", + "dev": true + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "dev": true, + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/hast": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz", + "integrity": "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.10", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.10.tgz", + "integrity": "sha512-Qs5aULi+zV1bwKAg5z1PWnDXWmsn+LxIvUGv6E2+OOMYhclZMO+OXd9pYVf2gLykf2I7IV2u7oTHwChPNsvJ7g==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/lodash": { + "version": "4.14.149", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.149.tgz", + "integrity": "sha512-ijGqzZt/b7BfzcK9vTrS6MFljQRPn5BFWOx8oE0GYxribu6uV+aA9zZuXI1zc/etK9E8nrgdoF2+LgUw7+9tJQ==", + "dev": true + }, + "node_modules/@types/mdast": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", + "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true + }, + "node_modules/@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "13.9.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.3.tgz", + "integrity": "sha512-01s+ac4qerwd6RHD+mVbOEsraDHSgUaefQlEdBbUolnQFjKwCr7luvAlEwW1RFojh67u0z4OUTjPn9LEl4zIkA==", + "dev": true + }, + "node_modules/@types/parse5": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", + "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==", + "dev": true + }, + "node_modules/@types/table": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/table/-/table-5.0.0.tgz", + "integrity": "sha512-fQLtGLZXor264zUPWI95WNDsZ3QV43/c0lJpR/h1hhLJumXRmHNsrvBfEzW2YMhb0EWCsn4U6h82IgwsajAuTA==", + "dev": true + }, + "node_modules/@types/tabtab": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/tabtab/-/tabtab-3.0.2.tgz", + "integrity": "sha512-d8aOSJPS3SEGZevyr7vbAVUNPWGFmdFlk13vbPPK87vz+gYGM57L8T11k4wK2mOgQYZjEVYQEqmCTvupPoQBWw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/triple-beam": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.2.tgz", + "integrity": "sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g==", + "dev": true + }, + "node_modules/@types/unist": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", + "dev": true + }, + "node_modules/@types/wrap-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz", + "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==", + "dev": true + }, + "node_modules/@use-it/interval": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@use-it/interval/-/interval-1.0.0.tgz", + "integrity": "sha512-WQFcnSt/xM/mS8ZtJ0ut5lhPrl+V0HDPPcI/J0eUClsfiD+/r8A7IeW/pVcfpSVGWRmN3+WnjNteWuKyWs2WZg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/@webref/css": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/@webref/css/-/css-5.4.4.tgz", + "integrity": "sha512-x+WAreAVNfSaLWBux9y/9QTKMDpiUbcZZKh72JOFVtm7ZQqmi5/m4YlbYNCu+GjCvuMWOtgwiBx7qf7OvWWykA==", + "dev": true, + "peerDependencies": { + "css-tree": "^2.2.1" + } + }, + "node_modules/@webref/elements": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@webref/elements/-/elements-2.1.0.tgz", + "integrity": "sha512-voCK9fWmUyWG55GNrHyowrdxI3zg/zLWfmZxWVNI94KjINcgnW0oi6amR3ZofIPbw26Eaqj7JrgAX0CADvDCyQ==", + "dev": true + }, + "node_modules/accept-language-parser": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/accept-language-parser/-/accept-language-parser-1.5.0.tgz", + "integrity": "sha512-QhyTbMLYo0BBGg1aWbeMG4ekWtds/31BrEU+DONOg/7ax23vxpL03Pb7/zBmha2v7vdD3AyzZVWBVGEZxKOXWw==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -31,6 +508,110 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/ansi-escapes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.0.0.tgz", + "integrity": "sha512-IG23inYII3dWlU2EyiAiGj6Bwal5GzsgPMwjYGvc1HPE2dgbj4ZB5ToWBKSquKw74nB3TIuOwaI6/jSULzfgrw==", + "dev": true, + "dependencies": { + "type-fest": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/archive-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz", + "integrity": "sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==", + "dev": true, + "dependencies": { + "file-type": "^4.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/archive-type/node_modules/file-type": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", + "integrity": "sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/array-union": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", + "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/asn1": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", @@ -49,6 +630,21 @@ "node": ">=0.8" } }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -70,6 +666,42 @@ "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", "dev": true }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -79,12 +711,989 @@ "tweetnacl": "^0.14.3" } }, + "node_modules/bin-build": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bin-build/-/bin-build-3.0.0.tgz", + "integrity": "sha512-jcUOof71/TNAI2uM5uoUaDq2ePcVBQ3R/qhxAz1rX7UfvduAL/RXD3jXzvn8cVcDJdGVkiR1shal3OH0ImpuhA==", + "dev": true, + "dependencies": { + "decompress": "^4.0.0", + "download": "^6.2.2", + "execa": "^0.7.0", + "p-map-series": "^1.0.0", + "tempfile": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-build/node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "dev": true, + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/bin-build/node_modules/execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", + "dev": true, + "dependencies": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-build/node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-build/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/bin-build/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bin-build/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bin-build/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/bin-check": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-4.1.0.tgz", + "integrity": "sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==", + "dev": true, + "dependencies": { + "execa": "^0.7.0", + "executable": "^4.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-check/node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "dev": true, + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/bin-check/node_modules/execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", + "dev": true, + "dependencies": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-check/node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-check/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/bin-check/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bin-check/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bin-check/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/bin-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-3.1.0.tgz", + "integrity": "sha512-Mkfm4iE1VFt4xd4vH+gx+0/71esbfus2LsnCGe8Pi4mndSPyT+NGES/Eg99jx8/lUGWfu3z2yuB/bt5UB+iVbQ==", + "dev": true, + "dependencies": { + "execa": "^1.0.0", + "find-versions": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/bin-version-check": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-4.0.0.tgz", + "integrity": "sha512-sR631OrhC+1f8Cvs8WyVWOA33Y8tgwjETNPyyD/myRBXLkfS/vl74FmH/lFcRl9KY3zwGh7jFhvyk9vV3/3ilQ==", + "dev": true, + "dependencies": { + "bin-version": "^3.0.0", + "semver": "^5.6.0", + "semver-truncate": "^1.1.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/bin-wrapper": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bin-wrapper/-/bin-wrapper-4.1.0.tgz", + "integrity": "sha512-hfRmo7hWIXPkbpi0ZltboCMVrU+0ClXR/JgbCKKjlDjQf6igXa7OwdqNcFWQZPZTgiY7ZpzE3+LjjkLiTN2T7Q==", + "dev": true, + "dependencies": { + "bin-check": "^4.1.0", + "bin-version-check": "^4.0.0", + "download": "^7.1.0", + "import-lazy": "^3.1.0", + "os-filter-obj": "^2.0.0", + "pify": "^4.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/bin-wrapper/node_modules/@sindresorhus/is": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-wrapper/node_modules/cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==", + "dev": true, + "dependencies": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + } + }, + "node_modules/bin-wrapper/node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bin-wrapper/node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-wrapper/node_modules/download": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/download/-/download-7.1.0.tgz", + "integrity": "sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ==", + "dev": true, + "dependencies": { + "archive-type": "^4.0.0", + "caw": "^2.0.1", + "content-disposition": "^0.5.2", + "decompress": "^4.2.0", + "ext-name": "^5.0.0", + "file-type": "^8.1.0", + "filenamify": "^2.0.0", + "get-stream": "^3.0.0", + "got": "^8.3.1", + "make-dir": "^1.2.0", + "p-event": "^2.1.0", + "pify": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/bin-wrapper/node_modules/download/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-wrapper/node_modules/file-type": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-8.1.0.tgz", + "integrity": "sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/bin-wrapper/node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-wrapper/node_modules/got": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", + "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.4.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-wrapper/node_modules/got/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-wrapper/node_modules/http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "dev": true + }, + "node_modules/bin-wrapper/node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bin-wrapper/node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "dev": true + }, + "node_modules/bin-wrapper/node_modules/keyv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", + "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/bin-wrapper/node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bin-wrapper/node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-wrapper/node_modules/normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "dev": true, + "dependencies": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-wrapper/node_modules/p-cancelable": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", + "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-wrapper/node_modules/p-event": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-2.3.1.tgz", + "integrity": "sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==", + "dev": true, + "dependencies": { + "p-timeout": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/bin-wrapper/node_modules/p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "dev": true, + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-wrapper/node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "dev": true, + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/bin-wrapper/node_modules/sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", + "dev": true, + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bl": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", + "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", + "dev": true, + "dependencies": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "dependencies": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", + "dev": true + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "dev": true, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/cacheable-request": { + "version": "10.2.8", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.8.tgz", + "integrity": "sha512-IDVO5MJ4LItE6HKFQTqT2ocAQsisOoCTUDu1ddCmnhyiwFQjXNPp4081Xj23N4tO+AFEFNzGuNEf/c8Gwwt15A==", + "dev": true, + "dependencies": { + "@types/http-cache-semantics": "^4.0.1", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.2", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", "dev": true }, + "node_modules/caw": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz", + "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==", + "dev": true, + "dependencies": { + "get-proxy": "^2.0.0", + "isurl": "^1.0.0-alpha5", + "tunnel-agent": "^0.6.0", + "url-to-options": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "dev": true, + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/chrome-devtools-frontend": { + "version": "1.0.1070764", + "resolved": "https://registry.npmjs.org/chrome-devtools-frontend/-/chrome-devtools-frontend-1.0.1070764.tgz", + "integrity": "sha512-MJCZgLZlKgIpE+gemtc1a9ejPopTA2Rj1iEdRnxl8YON7V13Po4W1vKo+YrVcqUbNpVAaQ5NnZLQQOmnIRTXZg==", + "dev": true + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "dev": true, + "dependencies": { + "restore-cursor": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-progress": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz", + "integrity": "sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==", + "dev": true, + "dependencies": { + "string-width": "^4.2.3" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-spinners": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", + "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", + "dev": true, + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.0.0.tgz", + "integrity": "sha512-ZksGS2xpa/bYkNzN3BAw1wEjsLV/ZKOf/CCrJ/QOBsxx6fOARIkwTutxp1XIOIohi6HKmOFjMoK/XaqDVUpEEw==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + } + }, + "node_modules/clone-response/node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dev": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "node_modules/colornames": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/colornames/-/colornames-1.1.1.tgz", + "integrity": "sha512-/pyV40IrsdulWv+wFPmERh9k/mjsPZ64yUMDmWrtj/k1nmgrzzIENWKdaVKyBbvFdQWqkcaRxr+polCo3VMe7A==", + "dev": true + }, + "node_modules/colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "dev": true, + "dependencies": { + "color": "^3.1.3", + "text-hex": "1.0.x" + } + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -97,12 +1706,297 @@ "node": ">= 0.8" } }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/content": { + "version": "1.0.0", + "resolved": "git+ssh://git@github.com/mdn/content.git#1d50cddbcd49bea9ddf7e8f725e2136de1e985c8", + "dev": true, + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@mdn/yari": "2.5.3", + "cross-env": "7.0.3", + "env-cmd": "10.1.0", + "husky": "8.0.3", + "lint-staged": "13.1.2", + "markdownlint-cli2": "0.6.0", + "markdownlint-rule-search-replace": "1.0.9", + "prettier": "2.8.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-parser": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", + "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", + "dev": true, + "dependencies": { + "cookie": "0.4.1", + "cookie-signature": "1.0.6" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/cookie-parser/node_modules/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", "dev": true }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "dev": true, + "dependencies": { + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-tree/node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, "node_modules/dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -115,6 +2009,245 @@ "node": ">=0.10" } }, + "node_modules/dayjs": { + "version": "1.11.7", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", + "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==", + "dev": true + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "dev": true, + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/decompress": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", + "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", + "dev": true, + "dependencies": { + "decompress-tar": "^4.0.0", + "decompress-tarbz2": "^4.0.0", + "decompress-targz": "^4.0.0", + "decompress-unzip": "^4.0.1", + "graceful-fs": "^4.1.10", + "make-dir": "^1.0.0", + "pify": "^2.3.0", + "strip-dirs": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-tar": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "dev": true, + "dependencies": { + "file-type": "^5.2.0", + "is-stream": "^1.1.0", + "tar-stream": "^1.5.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tar/node_modules/file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tarbz2": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "dev": true, + "dependencies": { + "decompress-tar": "^4.1.0", + "file-type": "^6.1.0", + "is-stream": "^1.1.0", + "seek-bzip": "^1.0.5", + "unbzip2-stream": "^1.0.9" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tarbz2/node_modules/file-type": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-targz": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "dev": true, + "dependencies": { + "decompress-tar": "^4.1.1", + "file-type": "^5.2.0", + "is-stream": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-targz/node_modules/file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-unzip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", + "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==", + "dev": true, + "dependencies": { + "file-type": "^3.8.0", + "get-stream": "^2.2.0", + "pify": "^2.3.0", + "yauzl": "^2.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-unzip/node_modules/file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-unzip/node_modules/get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==", + "dev": true, + "dependencies": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-unzip/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -124,6 +2257,294 @@ "node": ">=0.4.0" } }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/dexie": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/dexie/-/dexie-3.2.3.tgz", + "integrity": "sha512-iHayBd4UYryDCVUNa3PMsJMEnd8yjyh5p7a+RFeC8i8n476BC9wMhVvqiImq5zJZJf5Tuer+s4SSj+AA3x+ZbQ==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/diagnostics": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/diagnostics/-/diagnostics-1.1.1.tgz", + "integrity": "sha512-8wn1PmdunLJ9Tqbx+Fx/ZEuHfJf4NKSN2ZBj7SJC/OWRWha843+WsTjqMe1B5E3p28jqBlp+mJ2fPVxPyNgYKQ==", + "dev": true, + "dependencies": { + "colorspace": "1.1.x", + "enabled": "1.0.x", + "kuler": "1.0.x" + } + }, + "node_modules/diff": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", + "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", + "dev": true, + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.1" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/download": { + "version": "6.2.5", + "resolved": "https://registry.npmjs.org/download/-/download-6.2.5.tgz", + "integrity": "sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA==", + "dev": true, + "dependencies": { + "caw": "^2.0.0", + "content-disposition": "^0.5.2", + "decompress": "^4.0.0", + "ext-name": "^5.0.0", + "file-type": "5.2.0", + "filenamify": "^2.0.0", + "get-stream": "^3.0.0", + "got": "^7.0.0", + "make-dir": "^1.0.0", + "p-event": "^1.0.0", + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/download/node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/download/node_modules/file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/download/node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/download/node_modules/got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "dev": true, + "dependencies": { + "decompress-response": "^3.2.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-plain-obj": "^1.1.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^1.1.1", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "url-parse-lax": "^1.0.0", + "url-to-options": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/download/node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/download/node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/download/node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/download/node_modules/p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/download/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/download/node_modules/prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/download/node_modules/url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==", + "dev": true, + "dependencies": { + "prepend-http": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/duplexer3": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", + "dev": true + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -134,12 +2555,384 @@ "safer-buffer": "^2.1.0" } }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "dev": true, + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/enabled": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-1.0.2.tgz", + "integrity": "sha512-nnzgVSpB35qKrUN8358SjO1bYAmxoThECTWw9s3J0x5G8A9hokKHVDFzBjVpCoSryo6MhN8woVyascN5jheaNA==", + "dev": true, + "dependencies": { + "env-variable": "0.0.x" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/entities": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", + "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-cmd": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/env-cmd/-/env-cmd-10.1.0.tgz", + "integrity": "sha512-mMdWTT9XKN7yNth/6N6g2GuKuJTsKMDHlQFUDacb/heQRRWOTIZ42t1rMHnQu4jYxU1ajdTeJM+9eEETlqToMA==", + "dev": true, + "dependencies": { + "commander": "^4.0.0", + "cross-spawn": "^7.0.0" + }, + "bin": { + "env-cmd": "bin/env-cmd.js" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/env-editor": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-1.1.0.tgz", + "integrity": "sha512-7AXskzN6T7Q9TFcKAGJprUbpQa4i1VsAetO9rdBqbGMGlragTziBgWt4pVYJMBWHQlLoX0buy6WFikzPH4Qjpw==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-variable": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/env-variable/-/env-variable-0.0.6.tgz", + "integrity": "sha512-bHz59NlBbtS0NhftmR8+ExBEekE7br0e01jw+kk0NDro7TtZzBYZ5ScGPs3OmwnpyfHTHOtr1Y6uedCdrIldtg==", + "dev": true + }, + "node_modules/es6-promisify": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.1.1.tgz", + "integrity": "sha512-HBL8I3mIki5C1Cc9QjKUenHtnG0A5/xA8Q/AllRcfiwl2CZFXGK7ddBiCoRwAix4i2KxcQfjtIVcrVbB3vbmwg==", + "dev": true + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/execa/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/execa/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/execa/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "dependencies": { + "pify": "^2.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/executable/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/exenv": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", + "integrity": "sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==", + "dev": true + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ext-list": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", + "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", + "dev": true, + "dependencies": { + "mime-db": "^1.28.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ext-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", + "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "dev": true, + "dependencies": { + "ext-list": "^2.0.0", + "sort-keys-length": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -155,12 +2948,236 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, + "node_modules/fast-xml-parser": { + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.21.1.tgz", + "integrity": "sha512-FTFVjYoBOZTJekiUsawGsSYV9QL0A+zDYCRj7y34IO6Jg+2IMYEtQa+bbictpdpV8dHxXywqU7C0gRDEOFtBFg==", + "dev": true, + "dependencies": { + "strnum": "^1.0.4" + }, + "bin": { + "xml2js": "cli.js" + }, + "funding": { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/fdir": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.0.1.tgz", + "integrity": "sha512-bdrUUb0eYQrPRlaAtlSRoLs7sp6yKEwbMQuUgwvi/14TnaqhM/deSZUrC5ic+yjm5nEPPWE61oWpTTxQFQMmLA==", + "dev": true, + "peerDependencies": { + "picomatch": "2.x" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", + "dev": true + }, + "node_modules/fflate": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.7.4.tgz", + "integrity": "sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==", + "dev": true + }, + "node_modules/figures": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", + "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^5.0.0", + "is-unicode-supported": "^1.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/file-type": { + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-18.2.1.tgz", + "integrity": "sha512-Yw5MtnMv7vgD2/6Bjmmuegc8bQEVA9GmAyaR18bMYWKqsWDG9wgYZ1j4I6gNMF5Y5JBDcUcjRQqNQx7Y8uotcg==", + "dev": true, + "dependencies": { + "readable-web-to-node-stream": "^3.0.2", + "strtok3": "^7.0.0", + "token-types": "^5.0.1" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/filenamify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-2.1.0.tgz", + "integrity": "sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==", + "dev": true, + "dependencies": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.0", + "trim-repeated": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-versions": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz", + "integrity": "sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==", + "dev": true, + "dependencies": { + "semver-regex": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -184,6 +3201,174 @@ "node": ">= 0.12" } }, + "node_modules/form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "dev": true, + "engines": { + "node": ">= 14.17" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "node_modules/from2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/from2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/from2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/front-matter": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz", + "integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==", + "dev": true, + "dependencies": { + "js-yaml": "^3.13.1" + } + }, + "node_modules/front-matter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/front-matter/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", + "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proxy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", + "integrity": "sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==", + "dev": true, + "dependencies": { + "npm-conf": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -193,6 +3378,169 @@ "assert-plus": "^1.0.0" } }, + "node_modules/gifsicle": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/gifsicle/-/gifsicle-5.3.0.tgz", + "integrity": "sha512-FJTpgdj1Ow/FITB7SVza5HlzXa+/lqEY0tHQazAJbuAdvyJtkH4wIdsR2K414oaTwRXHFLLF+tYbipj+OpYg+Q==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "bin-build": "^3.0.0", + "bin-wrapper": "^4.0.0", + "execa": "^5.0.0" + }, + "bin": { + "gifsicle": "cli.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/imagemin/gisicle-bin?sponsor=1" + } + }, + "node_modules/gifsicle/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/gifsicle/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gifsicle/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globby": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", + "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", + "dev": true, + "dependencies": { + "array-union": "^3.0.1", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.7", + "ignore": "^5.1.9", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/got": { + "version": "12.5.3", + "resolved": "https://registry.npmjs.org/got/-/got-12.5.3.tgz", + "integrity": "sha512-8wKnb9MGU8IPGRIo+/ukTy9XLJBwDiCpIf5TVzQ9Cpol50eMTpBq2GAuDsuDIz7hTYmZgMgC1e9ydr6kSDWs3w==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.1", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, "node_modules/har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -216,6 +3564,382 @@ "node": ">=6" } }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "dev": true, + "dependencies": { + "has-symbol-support-x": "^1.4.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/hast-util-embedded": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hast-util-embedded/-/hast-util-embedded-2.0.1.tgz", + "integrity": "sha512-QUdSOP1/o+/TxXtpPFXR2mUg2P+ySrmlX7QjwHZCXqMFyYk7YmcGSvqRW+4XgXAoHifdE1t2PwFaQK33TqVjSw==", + "dev": true, + "dependencies": { + "hast-util-is-element": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.2.tgz", + "integrity": "sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==", + "dev": true, + "dependencies": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0", + "hastscript": "^7.0.0", + "property-information": "^6.0.0", + "vfile": "^5.0.0", + "vfile-location": "^4.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-has-property": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-2.0.1.tgz", + "integrity": "sha512-X2+RwZIMTMKpXUzlotatPzWj8bspCymtXH3cfG3iQKV+wPF53Vgaqxi/eLqGck0wKq1kS9nvoB1wchbCPEL8sg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-body-ok-link": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-body-ok-link/-/hast-util-is-body-ok-link-2.0.0.tgz", + "integrity": "sha512-S58hCexyKdD31vMsErvgLfflW6vYWo/ixRLPJTtkOvLld24vyI8vmYmkgLA5LG3la2ME7nm7dLGdm48gfLRBfw==", + "dev": true, + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-has-property": "^2.0.0", + "hast-util-is-element": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-element": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-2.1.3.tgz", + "integrity": "sha512-O1bKah6mhgEq2WtVMk+Ta5K7pPMqsBBlmzysLdcwKVrqzZQ0CHqUPiIVspNhAG1rvxpvJjtGee17XfauZYKqVA==", + "dev": true, + "dependencies": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz", + "integrity": "sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==", + "dev": true, + "dependencies": { + "@types/hast": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-phrasing": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hast-util-phrasing/-/hast-util-phrasing-2.0.2.tgz", + "integrity": "sha512-yGkCfPkkfCyiLfK6KEl/orMDr/zgCnq/NaO9HfULx6/Zga5fso5eqQA5Ov/JZVqACygvw9shRYWgXNcG2ilo7w==", + "dev": true, + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-embedded": "^2.0.0", + "hast-util-has-property": "^2.0.0", + "hast-util-is-body-ok-link": "^2.0.0", + "hast-util-is-element": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-7.2.3.tgz", + "integrity": "sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==", + "dev": true, + "dependencies": { + "@types/hast": "^2.0.0", + "@types/parse5": "^6.0.0", + "hast-util-from-parse5": "^7.0.0", + "hast-util-to-parse5": "^7.0.0", + "html-void-elements": "^2.0.0", + "parse5": "^6.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0", + "vfile": "^5.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/hast-util-to-html": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-8.0.4.tgz", + "integrity": "sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==", + "dev": true, + "dependencies": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-raw": "^7.0.0", + "hast-util-whitespace": "^2.0.0", + "html-void-elements": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-7.1.0.tgz", + "integrity": "sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==", + "dev": true, + "dependencies": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", + "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.2.0.tgz", + "integrity": "sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==", + "dev": true, + "dependencies": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^3.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/html-dom-parser": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/html-dom-parser/-/html-dom-parser-3.1.3.tgz", + "integrity": "sha512-fI0yyNlIeSboxU+jnrA4v8qj4+M8SI9/q6AKYdwCY2qki22UtKCDTxvagHniECu7sa5/o2zFRdLleA67035lsA==", + "dev": true, + "dependencies": { + "domhandler": "5.0.3", + "htmlparser2": "8.0.1" + } + }, + "node_modules/html-react-parser": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/html-react-parser/-/html-react-parser-3.0.9.tgz", + "integrity": "sha512-gOPZmaCMXNYu7Y9+58k2tLhTMXQ+QN8ctNFijzLuBxJaLZ6TsN+tUpN+MhbI+6nGaBCRGT2rpw6y/AqkTFZckg==", + "dev": true, + "dependencies": { + "domhandler": "5.0.3", + "html-dom-parser": "3.1.3", + "react-property": "2.0.0", + "style-to-js": "1.1.3" + }, + "peerDependencies": { + "react": "0.14 || 15 || 16 || 17 || 18" + } + }, + "node_modules/html-void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz", + "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/html-whitespace-sensitive-tag-names": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-whitespace-sensitive-tag-names/-/html-whitespace-sensitive-tag-names-2.0.0.tgz", + "integrity": "sha512-SQdIvTTtnHAx72xGUIUudvVOCjeWvV1U7rvSFnNGxTGRw3ZC7RES4Gw6dm1nMYD60TXvm6zjk/bWqgNc5pjQaw==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/htmlparser2": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz", + "integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "entities": "^4.3.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, "node_modules/http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -231,24 +3955,953 @@ "npm": ">=1.3.7" } }, + "node_modules/http2-wrapper": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", + "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", + "dev": true, + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/husky": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", + "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", + "dev": true, + "bin": { + "husky": "lib/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", + "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", + "dev": true, + "dependencies": { + "queue": "6.0.2" + }, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/image-type": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/image-type/-/image-type-4.1.0.tgz", + "integrity": "sha512-CFJMJ8QK8lJvRlTCEgarL4ro6hfDQKif2HjSvYCdQZESaIPV4v9imrf7BQHK+sQeTeNeMpWciR9hyC/g8ybXEg==", + "dev": true, + "dependencies": { + "file-type": "^10.10.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/image-type/node_modules/file-type": { + "version": "10.11.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-10.11.0.tgz", + "integrity": "sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/imagemin": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-8.0.1.tgz", + "integrity": "sha512-Q/QaPi+5HuwbZNtQRqUVk6hKacI6z9iWiCSQBisAv7uBynZwO7t1svkryKl7+iSQbkU/6t9DWnHz04cFs2WY7w==", + "dev": true, + "dependencies": { + "file-type": "^16.5.3", + "globby": "^12.0.0", + "graceful-fs": "^4.2.8", + "junk": "^3.1.0", + "p-pipe": "^4.0.0", + "replace-ext": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/imagemin-gifsicle": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/imagemin-gifsicle/-/imagemin-gifsicle-7.0.0.tgz", + "integrity": "sha512-LaP38xhxAwS3W8PFh4y5iQ6feoTSF+dTAXFRUEYQWYst6Xd+9L/iPk34QGgK/VO/objmIlmq9TStGfVY2IcHIA==", + "dev": true, + "dependencies": { + "execa": "^1.0.0", + "gifsicle": "^5.0.0", + "is-gif": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/imagemin/imagemin-gifsicle?sponsor=1" + } + }, + "node_modules/imagemin-mozjpeg": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/imagemin-mozjpeg/-/imagemin-mozjpeg-10.0.0.tgz", + "integrity": "sha512-DK85QNOjS3/GzWYfNB3CACMZD10sIQgFDv1+WTOnZljgltQTEyATjdyUVyjKu5q4sCESQdwvwq7WEZzJ5fFjlg==", + "dev": true, + "dependencies": { + "execa": "^6.0.0", + "is-jpg": "^3.0.0", + "mozjpeg": "^8.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/imagemin-mozjpeg/node_modules/execa": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", + "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^3.0.1", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/imagemin-mozjpeg/node_modules/human-signals": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", + "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "dev": true, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/imagemin-mozjpeg/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imagemin-mozjpeg/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imagemin-mozjpeg/node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imagemin-mozjpeg/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imagemin-mozjpeg/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imagemin-mozjpeg/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imagemin-pngquant": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/imagemin-pngquant/-/imagemin-pngquant-9.0.2.tgz", + "integrity": "sha512-cj//bKo8+Frd/DM8l6Pg9pws1pnDUjgb7ae++sUX1kUVdv2nrngPykhiUOgFeE0LGY/LmUbCf4egCHC4YUcZSg==", + "dev": true, + "dependencies": { + "execa": "^4.0.0", + "is-png": "^2.0.0", + "is-stream": "^2.0.0", + "ow": "^0.17.0", + "pngquant-bin": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/imagemin-pngquant/node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/imagemin-pngquant/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imagemin-pngquant/node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/imagemin-pngquant/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imagemin-pngquant/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/imagemin-svgo": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/imagemin-svgo/-/imagemin-svgo-10.0.1.tgz", + "integrity": "sha512-v27/UTGkb3vrm5jvjsMGQ2oxaDfSOTBfJOgmFO2fYepx05bY1IqWCK13aDytVR+l9w9eOlq0NMCLbxJlghYb2g==", + "dev": true, + "dependencies": { + "is-svg": "^4.3.1", + "svgo": "^2.5.0" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sindresorhus/imagemin-svgo?sponsor=1" + } + }, + "node_modules/imagemin/node_modules/file-type": { + "version": "16.5.4", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", + "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", + "dev": true, + "dependencies": { + "readable-web-to-node-stream": "^3.0.0", + "strtok3": "^6.2.4", + "token-types": "^4.1.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, + "node_modules/imagemin/node_modules/peek-readable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", + "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/imagemin/node_modules/strtok3": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", + "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", + "dev": true, + "dependencies": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^4.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/imagemin/node_modules/token-types": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", + "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", + "dev": true, + "dependencies": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/import-lazy": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-3.1.0.tgz", + "integrity": "sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==", + "dev": true + }, + "node_modules/inquirer": { + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.1.4.tgz", + "integrity": "sha512-9hiJxE5gkK/cM2d1mTEnuurGTAoHebbkX0BYl3h7iEg7FYfuNIom+nDfBCSWtvSnoSrWCeBxqqBZu26xdlJlXA==", + "dev": true, + "dependencies": { + "ansi-escapes": "^6.0.0", + "chalk": "^5.1.2", + "cli-cursor": "^4.0.0", + "cli-width": "^4.0.0", + "external-editor": "^3.0.3", + "figures": "^5.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^6.1.2", + "run-async": "^2.4.0", + "rxjs": "^7.5.7", + "string-width": "^5.1.2", + "strip-ansi": "^7.0.1", + "through": "^2.3.6", + "wrap-ansi": "^8.0.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/inquirer/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/inquirer/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/inquirer/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inquirer/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/into-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", + "integrity": "sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==", + "dev": true, + "dependencies": { + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-gif": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-gif/-/is-gif-3.0.0.tgz", + "integrity": "sha512-IqJ/jlbw5WJSNfwQ/lHEDXF8rxhRgF6ythk2oiEvhpG29F704eX9NO6TvPfMiq9DrbwgcEDnETYNcZDPewQoVw==", + "dev": true, + "dependencies": { + "file-type": "^10.4.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-gif/node_modules/file-type": { + "version": "10.11.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-10.11.0.tgz", + "integrity": "sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-jpg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-jpg/-/is-jpg-3.0.0.tgz", + "integrity": "sha512-Vcd67KWHZblEKEBrtP25qLZ8wN9ICoAhl1pKUqD7SM7hf2qtuRl7loDgP5Zigh2oN/+7uj+KVyC0eRJvgOEFeQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==", + "dev": true + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", + "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-png": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-png/-/is-png-2.0.0.tgz", + "integrity": "sha512-4KPGizaVGj2LK7xwJIz8o5B2ubu1D/vcQsgOGFEDlpcvgZHto4gBnyd0ig7Ws+67ixmwKoNmu0hYnpo6AaKb5g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-retry-allowed": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-svg": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-4.3.2.tgz", + "integrity": "sha512-mM90duy00JGMyjqIVHu9gNTjywdZV+8qNasX8cm/EEYZ53PHDgajvbBwNVvty5dwSAxLUD3p3bdo+7sR/UMrpw==", + "dev": true, + "dependencies": { + "fast-xml-parser": "^3.19.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, + "node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, "node_modules/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", "dev": true }, + "node_modules/isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "dev": true, + "dependencies": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/jake": { + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "dev": true, + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jake/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jake/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jose": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.12.0.tgz", + "integrity": "sha512-wW1u3cK81b+SFcHjGC8zw87yuyUweEFe0UJirrXEw1NasW00eF7sZjeG3SLBGz001ozxQ46Y9sofDvhBmWFtXQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", "dev": true }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, "node_modules/json-schema": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", @@ -267,6 +4920,18 @@ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "dev": true }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, "node_modules/jsprim": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", @@ -282,6 +4947,1705 @@ "node": ">=0.6.0" } }, + "node_modules/junk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", + "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/keyv": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/kuler": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-1.0.1.tgz", + "integrity": "sha512-J9nVUucG1p/skKul6DU3PUZrhs0LPulNaeUOox0IyXDi8S4CztTHs1gQphhuZmzXG7VOQSf6NJfKuzteQLv9gQ==", + "dev": true, + "dependencies": { + "colornames": "^1.1.1" + } + }, + "node_modules/lilconfig": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", + "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/line-column-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/line-column-path/-/line-column-path-3.0.0.tgz", + "integrity": "sha512-Atocnm7Wr9nuvAn97yEPQa3pcQI5eLQGBz+m6iTb+CVw+IOzYB9MrYK7jI7BfC9ISnT4Fu0eiwhAScV//rp4Hw==", + "dev": true, + "dependencies": { + "type-fest": "^2.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/line-column-path/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/linkify-it": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", + "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", + "dev": true, + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/lint-staged": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.1.2.tgz", + "integrity": "sha512-K9b4FPbWkpnupvK3WXZLbgu9pchUJ6N7TtVZjbaPsoizkqFUDkUReUL25xdrCljJs7uLUF3tZ7nVPeo/6lp+6w==", + "dev": true, + "dependencies": { + "cli-truncate": "^3.1.0", + "colorette": "^2.0.19", + "commander": "^9.4.1", + "debug": "^4.3.4", + "execa": "^6.1.0", + "lilconfig": "2.0.6", + "listr2": "^5.0.5", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-inspect": "^1.12.2", + "pidtree": "^0.6.0", + "string-argv": "^0.3.1", + "yaml": "^2.1.3" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/lint-staged/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/lint-staged/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/lint-staged/node_modules/execa": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", + "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^3.0.1", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/human-signals": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", + "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "dev": true, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/lint-staged/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/lint-staged/node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.7.tgz", + "integrity": "sha512-MD+qXHPmtivrHIDRwPYdfNkrzqDiuaKU/rfBcec3WMyMF3xylQj3jMq344OtvQxz7zaCFViRAeqlr2AFhPvXHw==", + "dev": true, + "dependencies": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.19", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.8.0", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } + } + }, + "node_modules/listr2/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/listr2/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/listr2/node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/listr2/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/listr2/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/listr2/node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/listr2/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/listr2/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", + "dev": true + }, + "node_modules/lodash.groupby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz", + "integrity": "sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==", + "dev": true + }, + "node_modules/lodash.isfunction": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", + "dev": true + }, + "node_modules/lodash.isnil": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lodash.isnil/-/lodash.isnil-4.0.0.tgz", + "integrity": "sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==", + "dev": true + }, + "node_modules/lodash.isundefined": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", + "integrity": "sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==", + "dev": true + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", + "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", + "dev": true, + "dependencies": { + "chalk": "^5.0.0", + "is-unicode-supported": "^1.1.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-update/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-update/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/logform": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.5.1.tgz", + "integrity": "sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg==", + "dev": true, + "dependencies": { + "@colors/colors": "1.5.0", + "@types/triple-beam": "^1.3.2", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + } + }, + "node_modules/logform/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/loglevel": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", + "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" + } + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.17.0.tgz", + "integrity": "sha512-zSxlVVwOabhVyTi6E8gYv2cr6bXK+8ifYz5/uyJb9feXX6NACVDwY4p5Ut3WC3Ivo/QhpARHU3iujx2xGAYHbQ==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/make-dir/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/markdown-it": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.1.tgz", + "integrity": "sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1", + "entities": "~3.0.1", + "linkify-it": "^4.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/markdown-it/node_modules/entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/markdown-table": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz", + "integrity": "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/markdownlint": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.27.0.tgz", + "integrity": "sha512-HtfVr/hzJJmE0C198F99JLaeada+646B5SaG2pVoEakLFI6iRGsvMqrnnrflq8hm1zQgwskEgqSnhDW11JBp0w==", + "dev": true, + "dependencies": { + "markdown-it": "13.0.1" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/markdownlint-cli2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.6.0.tgz", + "integrity": "sha512-Bv20r6WGdcHMWi8QvAFZ3CBunf4i4aYmVdTfpAvXODI/1k3f09DZZ0i0LcX9ZMhlVxjoOzbVDz1NWyKc5hwTqg==", + "dev": true, + "dependencies": { + "globby": "13.1.3", + "markdownlint": "0.27.0", + "markdownlint-cli2-formatter-default": "0.0.3", + "micromatch": "4.0.5", + "strip-json-comments": "5.0.0", + "yaml": "2.2.1" + }, + "bin": { + "markdownlint-cli2": "markdownlint-cli2.js", + "markdownlint-cli2-config": "markdownlint-cli2-config.js", + "markdownlint-cli2-fix": "markdownlint-cli2-fix.js" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/markdownlint-cli2-formatter-default": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/markdownlint-cli2-formatter-default/-/markdownlint-cli2-formatter-default-0.0.3.tgz", + "integrity": "sha512-QEAJitT5eqX1SNboOD+SO/LNBpu4P4je8JlR02ug2cLQAqmIhh8IJnSK7AcaHBHhNADqdGydnPpQOpsNcEEqCw==", + "dev": true, + "peerDependencies": { + "markdownlint-cli2": ">=0.0.4" + } + }, + "node_modules/markdownlint-cli2/node_modules/globby": { + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", + "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", + "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdownlint-cli2/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdownlint-rule-helpers": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/markdownlint-rule-helpers/-/markdownlint-rule-helpers-0.18.0.tgz", + "integrity": "sha512-UEdWfsoLr8ylXxfh4fzY5P6lExN+7Un7LbfqDXPlq5VLwwEDFdcZ7EMXoaEKNzncBKG/KWrt2sVt7KiCJgPyMQ==", + "dev": true, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/markdownlint-rule-search-replace": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/markdownlint-rule-search-replace/-/markdownlint-rule-search-replace-1.0.9.tgz", + "integrity": "sha512-Qrd+wPvCoED1XFR1uL9PdA8ktOGDtCFHPtw7IVzh2TQbLRRHa2MY/moO9jpLj2maexVevIYH9DS0NLWdU3W1Cg==", + "dev": true, + "dependencies": { + "markdownlint-rule-helpers": "~0.18.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/md5-file": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-5.0.0.tgz", + "integrity": "sha512-xbEFXCYVWrSx/gEKS1VPlg84h/4L20znVIulKw6kMfmBUAZNAnF00eczz9ICMl+/hjQGo5KSXRxbL/47X3rmMw==", + "dev": true, + "bin": { + "md5-file": "cli.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/mdast-util-definitions": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz", + "integrity": "sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.2.tgz", + "integrity": "sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.0.tgz", + "integrity": "sha512-HN3W1gRIuN/ZW295c7zi7g9lVBllMgZE40RxCX37wrTPWXCWtpvOZdfnuK+1WNpvZje6XuJeI3Wnb4TJEUem+g==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "mdast-util-to-string": "^3.1.0", + "micromark": "^3.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-decode-string": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-2.0.2.tgz", + "integrity": "sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==", + "dev": true, + "dependencies": { + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-gfm-autolink-literal": "^1.0.0", + "mdast-util-gfm-footnote": "^1.0.0", + "mdast-util-gfm-strikethrough": "^1.0.0", + "mdast-util-gfm-table": "^1.0.0", + "mdast-util-gfm-task-list-item": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.3.tgz", + "integrity": "sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "ccount": "^2.0.0", + "mdast-util-find-and-replace": "^2.0.0", + "micromark-util-character": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.2.tgz", + "integrity": "sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0", + "micromark-util-normalize-identifier": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.3.tgz", + "integrity": "sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.7.tgz", + "integrity": "sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-to-markdown": "^1.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.2.tgz", + "integrity": "sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz", + "integrity": "sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz", + "integrity": "sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==", + "dev": true, + "dependencies": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-definitions": "^5.0.0", + "micromark-util-sanitize-uri": "^1.1.0", + "trim-lines": "^3.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz", + "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^3.0.0", + "mdast-util-to-string": "^3.0.0", + "micromark-util-decode-string": "^1.0.0", + "unist-util-visit": "^4.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.1.tgz", + "integrity": "sha512-tGvhT94e+cVnQt8JWE9/b3cUQZWS732TJxXHktvP+BYo62PpYD53Ls/6cC60rW21dW+txxiM4zMdc6abASvZKA==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdn-data": { + "version": "2.0.31", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.31.tgz", + "integrity": "sha512-BoMtKzFjk2+b5QDi1QtS4XBZtwd1WIBVQSVe9Q6iIgQP+m6KhlbukWM8bp7rYgWXOXzp/cBqgHWU7az4hGV1WA==", + "dev": true + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "dev": true + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromark": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.1.0.tgz", + "integrity": "sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz", + "integrity": "sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-factory-destination": "^1.0.0", + "micromark-factory-label": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-factory-title": "^1.0.0", + "micromark-factory-whitespace": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-html-tag-name": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-2.0.1.tgz", + "integrity": "sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==", + "dev": true, + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^1.0.0", + "micromark-extension-gfm-footnote": "^1.0.0", + "micromark-extension-gfm-strikethrough": "^1.0.0", + "micromark-extension-gfm-table": "^1.0.0", + "micromark-extension-gfm-tagfilter": "^1.0.0", + "micromark-extension-gfm-task-list-item": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-types": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.3.tgz", + "integrity": "sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==", + "dev": true, + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.4.tgz", + "integrity": "sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==", + "dev": true, + "dependencies": { + "micromark-core-commonmark": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.4.tgz", + "integrity": "sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==", + "dev": true, + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.5.tgz", + "integrity": "sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==", + "dev": true, + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.1.tgz", + "integrity": "sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==", + "dev": true, + "dependencies": { + "micromark-util-types": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.3.tgz", + "integrity": "sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==", + "dev": true, + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz", + "integrity": "sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz", + "integrity": "sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz", + "integrity": "sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz", + "integrity": "sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz", + "integrity": "sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.1.0.tgz", + "integrity": "sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz", + "integrity": "sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz", + "integrity": "sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz", + "integrity": "sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz", + "integrity": "sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz", + "integrity": "sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz", + "integrity": "sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-html-tag-name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz", + "integrity": "sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz", + "integrity": "sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz", + "integrity": "sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.1.0.tgz", + "integrity": "sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz", + "integrity": "sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz", + "integrity": "sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-types": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.0.2.tgz", + "integrity": "sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/micromark/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -303,6 +6667,189 @@ "node": ">= 0.6" } }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mozjpeg": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/mozjpeg/-/mozjpeg-8.0.0.tgz", + "integrity": "sha512-Ca2Yhah9hG0Iutgsn8MOrAl37P9ThnKsJatjXoWdUO+8X8GeG/6ahvHZrTyqvbs6leMww1SauWUCao/L9qBuFQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "bin-build": "^3.0.0", + "bin-wrapper": "^4.0.0" + }, + "bin": { + "mozjpeg": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-conf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", + "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "dev": true, + "dependencies": { + "config-chain": "^1.1.11", + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-conf/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, "node_modules/oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", @@ -312,18 +6859,681 @@ "node": "*" } }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/one-time": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz", + "integrity": "sha512-qAMrwuk2xLEutlASoiPiAMW3EN3K96Ka/ilSXYr6qR1zSVXw2j7+yDSqGTC4T9apfLYxM3tLLjKvgPdAUK7kYQ==", + "dev": true + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open-editor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/open-editor/-/open-editor-4.0.0.tgz", + "integrity": "sha512-5mKZ98iFdkivozt5XTCOspoKbL3wtYu6oOoVxfWQ0qUX9NYsK8pdkHE7VUHXr+CwyC3nf6mV0S5FPsMS65innw==", + "dev": true, + "dependencies": { + "env-editor": "^1.0.0", + "execa": "^5.1.1", + "line-column-path": "^3.0.0", + "open": "^8.4.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open-editor/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/open-editor/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open-editor/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/options-defaults": { + "version": "2.0.40", + "resolved": "https://registry.npmjs.org/options-defaults/-/options-defaults-2.0.40.tgz", + "integrity": "sha512-a0oW0AMaP/Uqk1gU7s3unE83wzs/MACy3wsCnNREn4wqp4KCcxRdulRjf0d2FeIxENbGJ4EBGtHTQ6J30XB6Cw==", + "dev": true + }, + "node_modules/ora": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/ora/-/ora-6.1.2.tgz", + "integrity": "sha512-EJQ3NiP5Xo94wJXIzAyOtSb0QEIAUu7m8t6UZ9krbz0vAJqr92JpcK/lEXg91q6B9pEGqrykkd2EQplnifDSBw==", + "dev": true, + "dependencies": { + "bl": "^5.0.0", + "chalk": "^5.0.0", + "cli-cursor": "^4.0.0", + "cli-spinners": "^2.6.1", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^1.1.0", + "log-symbols": "^5.1.0", + "strip-ansi": "^7.0.1", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/os-filter-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-2.0.0.tgz", + "integrity": "sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==", + "dev": true, + "dependencies": { + "arch": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ow": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/ow/-/ow-0.17.0.tgz", + "integrity": "sha512-i3keDzDQP5lWIe4oODyDFey1qVrq2hXKTuTH2VpqwpYtzPiKZt2ziRI4NBQmgW40AnV5Euz17OyWweCb+bNEQA==", + "dev": true, + "dependencies": { + "type-fest": "^0.11.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ow/node_modules/type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "dev": true, + "engines": { + "node": ">=12.20" + } + }, + "node_modules/p-event": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-1.3.0.tgz", + "integrity": "sha512-hV1zbA7gwqPVFcapfeATaNjQ3J0NuzorHPyG8GPL9g/Y/TplWVBVoCKCXL6Ej2zscrCEv195QNWJXuBH6XZuzA==", + "dev": true, + "dependencies": { + "p-timeout": "^1.1.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-is-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-1.0.0.tgz", + "integrity": "sha512-4k9LlvY6Bo/1FcIdV33wqZQES0Py+iKISU9Uc8p8AjWoZPnFKMpVIVD3s0EYn4jzLh1I+WeUZkJ0Yoa4Qfw3Kg==", + "dev": true, + "dependencies": { + "p-reduce": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-pipe": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-4.0.0.tgz", + "integrity": "sha512-HkPfFklpZQPUKBFXzKFB6ihLriIHxnmuQdK9WmLDwe4hf2PdhhfWT/FJa+pc3bA1ywvKXtedxIRmd4Y7BTXE4w==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha512-3Tx1T3oM1xO/Y8Gj0sWyE78EIJZ+t+aEmXUdvQgvGmSMri7aPTHoovbXEreWKkL5j21Er60XAWLTzKbAKYOujQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-timeout": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", + "integrity": "sha512-gb0ryzr+K2qFqFv6qi3khoeqMZF/+ajxQipEF6NteZVnvz9tzdsfAVj3lYtn1gAXvH5lfLwfxEII799gt/mRIA==", + "dev": true, + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "dev": true, + "dependencies": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/peek-readable": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", + "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", "dev": true }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pngquant-bin": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/pngquant-bin/-/pngquant-bin-6.0.1.tgz", + "integrity": "sha512-Q3PUyolfktf+hYio6wsg3SanQzEU/v8aICg/WpzxXcuCMRb7H2Q81okfpcEztbMvw25ILjd3a87doj2N9kvbpQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "bin-build": "^3.0.0", + "bin-wrapper": "^4.0.1", + "execa": "^4.0.0" + }, + "bin": { + "pngquant": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/pngquant-bin/node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/pngquant-bin/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pngquant-bin/node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/pngquant-bin/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pngquant-bin/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/prettier": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", + "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prism-svelte": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/prism-svelte/-/prism-svelte-0.5.0.tgz", + "integrity": "sha512-db91Bf3pRGKDPz1lAqLFSJXeW13mulUJxhycysFpfXV5MIK7RgWWK2E5aPAa71s8TCzQUXxF5JOV42/iOs6QkA==", + "dev": true + }, + "node_modules/prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/property-information": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.2.0.tgz", + "integrity": "sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", "dev": true }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -342,6 +7552,340 @@ "node": ">=0.6" } }, + "node_modules/query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dev": true, + "dependencies": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "dev": true, + "dependencies": { + "inherits": "~2.0.3" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dev": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dev": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==", + "dev": true + }, + "node_modules/react-modal": { + "version": "3.16.1", + "resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.16.1.tgz", + "integrity": "sha512-VStHgI3BVcGo7OXczvnJN7yT2TWHJPDXZWyI/a0ssFNhGZWsPmB8cF0z33ewDXq4VfYMO1vXgiv/g8Nj9NDyWg==", + "dev": true, + "dependencies": { + "exenv": "^1.2.0", + "prop-types": "^15.7.2", + "react-lifecycles-compat": "^3.0.0", + "warning": "^4.0.3" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "react": "^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18", + "react-dom": "^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18" + } + }, + "node_modules/react-property": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/react-property/-/react-property-2.0.0.tgz", + "integrity": "sha512-kzmNjIgU32mO4mmH5+iUyrqlpFQhF8K2k7eZ4fdLSOPFrD1XgEuSBv9LDEgxRXTMBqMd8ppT0x6TIzqE5pdGdw==", + "dev": true + }, + "node_modules/read-chunk": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-4.0.3.tgz", + "integrity": "sha512-wOYymxRWkxn3MlStSt7LxrMLRvynHKjzHVQPTCBbT29ViUwsT3EE09dE5iMDDGYQTL/s5TQZvBLuJTeZFeGQ4g==", + "dev": true, + "dependencies": { + "pify": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-chunk/node_modules/pify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/readable-stream": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", + "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readable-web-to-node-stream": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", + "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", + "dev": true, + "dependencies": { + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/rehype-format": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/rehype-format/-/rehype-format-4.0.1.tgz", + "integrity": "sha512-HA92WeqFri00yiClrz54IIpM9no2DH9Mgy5aFmInNODoAYn+hN42a6oqJTIie2nj0HwFyV7JvOYx5YHBphN8mw==", + "dev": true, + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-embedded": "^2.0.0", + "hast-util-is-element": "^2.0.0", + "hast-util-phrasing": "^2.0.0", + "hast-util-whitespace": "^2.0.0", + "html-whitespace-sensitive-tag-names": "^2.0.0", + "rehype-minify-whitespace": "^5.0.0", + "unified": "^10.0.0", + "unist-util-visit-parents": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-minify-whitespace": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/rehype-minify-whitespace/-/rehype-minify-whitespace-5.0.1.tgz", + "integrity": "sha512-PPp4lWJiBPlePI/dv1BeYktbwkfgXkrK59MUa+tYbMPgleod+4DvFK2PLU0O0O60/xuhHfiR9GUIUlXTU8sRIQ==", + "dev": true, + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-embedded": "^2.0.0", + "hast-util-is-element": "^2.0.0", + "hast-util-whitespace": "^2.0.0", + "unified": "^10.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-raw": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-6.1.1.tgz", + "integrity": "sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ==", + "dev": true, + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-raw": "^7.2.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-stringify": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-9.0.3.tgz", + "integrity": "sha512-kWiZ1bgyWlgOxpqD5HnxShKAdXtb2IUljn3hQAhySeak6IOQPPt6DeGnsIh4ixm7yKJWzm8TXFuC/lPfcWHJqw==", + "dev": true, + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-to-html": "^8.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-3.0.1.tgz", + "integrity": "sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-gfm": "^2.0.0", + "micromark-extension-gfm": "^2.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.1.tgz", + "integrity": "sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz", + "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==", + "dev": true, + "dependencies": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-to-hast": "^12.1.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/replace-ext": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz", + "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, "node_modules/request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -374,6 +7918,118 @@ "node": ">= 6" } }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, + "node_modules/responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "dev": true, + "dependencies": { + "lowercase-keys": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -394,12 +8050,292 @@ } ] }, + "node_modules/safe-stable-stringify": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.2.tgz", + "integrity": "sha512-gMxvPJYhP0O9n2pvcfYfIuYgbledAOJFcqRThtPRmjscaipiwcwPPKLytpVzMkG2HAN87Qmo2d4PtGiri1dSLA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, + "node_modules/sanitize-filename": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dev": true, + "dependencies": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dev": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/seek-bzip": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", + "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", + "dev": true, + "dependencies": { + "commander": "^2.8.1" + }, + "bin": { + "seek-bunzip": "bin/seek-bunzip", + "seek-table": "bin/seek-bzip-table" + } + }, + "node_modules/seek-bzip/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/semver-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz", + "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/semver-truncate": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz", + "integrity": "sha512-V1fGg9i4CL3qesB6U0L6XAm4xOJiHmt4QAacazumuasc03BvtFGIMCduv01JWQ69Nv+JST9TqhSCiJoxoY031w==", + "dev": true, + "dependencies": { + "semver": "^5.3.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", + "dev": true, + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-keys-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", + "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==", + "dev": true, + "dependencies": { + "sort-keys": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-keys/node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, "node_modules/sshpk": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", @@ -425,6 +8361,947 @@ "node": ">=0.10.0" } }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", + "dev": true + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "dev": true, + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", + "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", + "dev": true, + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", + "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "dev": true, + "dependencies": { + "is-natural-number": "^4.0.1" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.0.tgz", + "integrity": "sha512-V1LGY4UUo0jgwC+ELQ2BNWfPa17TIuwBLg+j1AA/9RPzKINl1lhxVEu2r+ZTTO8aetIsUzE5Qj6LMSBkoGYKKw==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-outer/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "dev": true + }, + "node_modules/strtok3": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", + "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==", + "dev": true, + "dependencies": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^5.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/style-to-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.3.tgz", + "integrity": "sha512-zKI5gN/zb7LS/Vm0eUwjmjrXWw8IMtyA8aPBJZdYiQTXj4+wQ3IucOLIOnF7zCHxvW8UhIGh/uZh/t9zEHXNTQ==", + "dev": true, + "dependencies": { + "style-to-object": "0.4.1" + } + }, + "node_modules/style-to-object": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.1.tgz", + "integrity": "sha512-HFpbb5gr2ypci7Qw+IOhnP2zOU7e77b+rzM+wTzXzfi1PrtBCX0E7Pk4wL4iTLnhzZ+JgEGAhX81ebTg/aYjQw==", + "dev": true, + "dependencies": { + "inline-style-parser": "0.1.1" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/svgo/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/svgo/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/svgo/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/svgo/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/svgo/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/svgo/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/svgo/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "node_modules/table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "dependencies": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/table/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/table/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/table/node_modules/astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/table/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/table/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/table/node_modules/slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/table/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/table/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tabtab": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tabtab/-/tabtab-3.0.2.tgz", + "integrity": "sha512-jANKmUe0sIQc/zTALTBy186PoM/k6aPrh3A7p6AaAfF6WPSbTx1JYeGIGH162btpH+mmVEXln+UxwViZHO2Jhg==", + "dev": true, + "dependencies": { + "debug": "^4.0.1", + "es6-promisify": "^6.0.0", + "inquirer": "^6.0.0", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "untildify": "^3.0.3" + } + }, + "node_modules/tabtab/node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tabtab/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tabtab/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tabtab/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tabtab/node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tabtab/node_modules/cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "node_modules/tabtab/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/tabtab/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/tabtab/node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tabtab/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tabtab/node_modules/inquirer": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/tabtab/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tabtab/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tabtab/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/tabtab/node_modules/mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", + "dev": true + }, + "node_modules/tabtab/node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tabtab/node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tabtab/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/tabtab/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tabtab/node_modules/string-width/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tabtab/node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tabtab/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tabtab/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tabtab/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "dev": true, + "dependencies": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/tar-stream/node_modules/bl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", + "dev": true, + "dependencies": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/tar-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/tar-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tempfile": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", + "integrity": "sha512-ZOn6nJUgvgC09+doCEF3oB+r3ag7kUvlsXEGX069QRD60p+P3uP7XG9N2/at+EyIRGSN//ZY3LyEotA1YpmjuA==", + "dev": true, + "dependencies": { + "temp-dir": "^1.0.0", + "uuid": "^3.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tempy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.0.0.tgz", + "integrity": "sha512-B2I9X7+o2wOaW4r/CWMkpOO9mdiTRCxXNgob6iGvPmfPWgH/KyUD6Uy5crtWBxIBe3YrNZKR2lSzv1JJKWD4vA==", + "dev": true, + "dependencies": { + "is-stream": "^3.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^2.12.2", + "unique-string": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", + "dev": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/token-types": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", + "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", + "dev": true, + "dependencies": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, "node_modules/tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", @@ -438,6 +9315,80 @@ "node": ">=0.8" } }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/trim-repeated/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==", + "dev": true + }, + "node_modules/trough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", + "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", + "dev": true, + "dependencies": { + "utf8-byte-length": "^1.0.1" + } + }, + "node_modules/ts-import": { + "version": "2.0.40", + "resolved": "https://registry.npmjs.org/ts-import/-/ts-import-2.0.40.tgz", + "integrity": "sha512-yTP9fSDaBL1LvcN7/taRHbcQoazk7cLrDOEPyIDUVKLNYTMhaDkvZhfUwp41iXe+GlAFL6l87ZoGABWZRdIfjg==", + "dev": true, + "dependencies": { + "options-defaults": "^2.0.39" + }, + "engines": { + "node": ">=14.14.0" + } + }, + "node_modules/tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "dev": true + }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -456,6 +9407,232 @@ "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", "dev": true }, + "node_modules/type-fest": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.6.0.tgz", + "integrity": "sha512-RqTRtKTzvPpNdDUp1dVkKQRunlPITk4mXeqFlAZoJsS+fLRn8AdPK0TcQDumGayhU7fjlBfiBjsq3pe3rIfXZQ==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dev": true, + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "node_modules/unbzip2-stream/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/unified": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", + "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unique-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "dev": true, + "dependencies": { + "crypto-random-string": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unist-builder": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-3.0.1.tgz", + "integrity": "sha512-gnpOw7DIpCA0vpr6NqdPvTWnlPTApCTRzr+38E6hCWx3rz/cjo83SsKIlS1Z+L5ttScQ2AwutNnb8+tAvpb6qQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-generated": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz", + "integrity": "sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.0.tgz", + "integrity": "sha512-Glt17jWwZeyqrFqOK0pF1Ded5U3yzJnFr8CG1GMjCWTp9zDo2p+cmD6pWbZU8AgM5WU3IzRv6+rBwhzsGh6hBQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz", + "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/untildify": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-3.0.3.tgz", + "integrity": "sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -465,6 +9642,48 @@ "punycode": "^2.1.0" } }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "dev": true, + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/utf8-byte-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", + "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==", + "dev": true + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", @@ -475,6 +9694,33 @@ "uuid": "bin/uuid" } }, + "node_modules/uvu": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", + "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", + "dev": true, + "dependencies": { + "dequal": "^2.0.0", + "diff": "^5.0.0", + "kleur": "^4.0.3", + "sade": "^1.7.3" + }, + "bin": { + "uvu": "bin.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -488,9 +9734,670 @@ "core-util-is": "1.0.2", "extsprintf": "^1.2.0" } + }, + "node_modules/vfile": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", + "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.1.0.tgz", + "integrity": "sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dev": true, + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/web-specs": { + "version": "2.50.0", + "resolved": "https://registry.npmjs.org/web-specs/-/web-specs-2.50.0.tgz", + "integrity": "sha512-IlzosEoCs2Kn4w0QKC6xrRy9Ca7HwpdoC54ilzbUGdaeyyXFuSuszZIkChM0pO8YSX4swxFfBoixRZJnCxTYDQ==", + "dev": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/winston": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.2.1.tgz", + "integrity": "sha512-zU6vgnS9dAWCEKg/QYigd6cgMVVNwyTzKs81XZtTFuRwJOcDdBg7AU0mXVyNbs7O5RH2zdv+BdNZUlx7mXPuOw==", + "dev": true, + "dependencies": { + "async": "^2.6.1", + "diagnostics": "^1.1.1", + "is-stream": "^1.1.0", + "logform": "^2.1.1", + "one-time": "0.0.4", + "readable-stream": "^3.1.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.3.0" + }, + "engines": { + "node": ">= 6.4.0" + } + }, + "node_modules/winston-transport": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", + "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "dev": true, + "dependencies": { + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 6.4.0" + } + }, + "node_modules/winston/node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + }, + "node_modules/yaml": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", + "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } } }, "dependencies": { + "@caporal/core": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@caporal/core/-/core-2.0.2.tgz", + "integrity": "sha512-o3J5aZINFWkkL+sL0DUs1dPHJjaetAAdwMRLbJ4U8aJW3K81E323IFMkFNYcOwTiPVhNzllC3USxZbU6xWFjFg==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "@types/lodash": "4.14.149", + "@types/node": "13.9.3", + "@types/table": "5.0.0", + "@types/tabtab": "^3.0.1", + "@types/wrap-ansi": "^3.0.0", + "chalk": "3.0.0", + "glob": "^7.1.6", + "lodash": "4.17.15", + "table": "5.4.6", + "tabtab": "^3.0.2", + "winston": "3.2.1", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true + }, + "@fast-csv/parse": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/@fast-csv/parse/-/parse-4.3.6.tgz", + "integrity": "sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==", + "dev": true, + "requires": { + "@types/node": "^14.0.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.groupby": "^4.6.0", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0", + "lodash.isundefined": "^3.0.1", + "lodash.uniq": "^4.5.0" + }, + "dependencies": { + "@types/node": { + "version": "14.18.36", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz", + "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==", + "dev": true + } + } + }, + "@mdn/bcd-utils-api": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@mdn/bcd-utils-api/-/bcd-utils-api-0.0.3.tgz", + "integrity": "sha512-plyZoNOtKGKPoMkQQ/KXziQswzrhO1rdrjslcM7J2TRCOAlusnmjhPf3NKyvv7mDm0nqHex+l8Chq2TUj8tehw==", + "dev": true, + "requires": { + "@mdn/browser-compat-data": "latest" + } + }, + "@mdn/browser-compat-data": { + "version": "5.2.38", + "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.2.38.tgz", + "integrity": "sha512-hV93KGiz3WSExunjoWPHp2Z+a9gI2W+kz8IhPzeOhtMl0eDaeguYyEoE7N45wGnKyh3j2zCA7KmwZrQkpoqyxA==", + "dev": true + }, + "@mdn/yari": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/@mdn/yari/-/yari-2.5.3.tgz", + "integrity": "sha512-VwTBJnAkDtctbfDwMZXydySOBOpscjxXZ+/fdDvBH+yG0cClMVTJTZYrS5sCLngh/jBwTwcn3PqVt/tGf7hElQ==", + "dev": true, + "requires": { + "@caporal/core": "^2.0.2", + "@fast-csv/parse": "^4.3.6", + "@mdn/bcd-utils-api": "^0.0.3", + "@mdn/browser-compat-data": "^5.2.38", + "@mozilla/glean": "1.3.0", + "@use-it/interval": "^1.0.0", + "@webref/css": "^5.4.4", + "accept-language-parser": "^1.5.0", + "async": "^3.2.4", + "chalk": "^5.2.0", + "cheerio": "^1.0.0-rc.12", + "cli-progress": "^3.12.0", + "compression": "^1.7.4", + "cookie": "^0.5.0", + "cookie-parser": "^1.4.6", + "css-tree": "^2.3.1", + "dayjs": "^1.11.7", + "dexie": "^3.2.3", + "dotenv": "^16.0.3", + "ejs": "^3.1.8", + "express": "^4.18.2", + "fdir": "^6.0.1", + "file-type": "^18.2.1", + "front-matter": "^4.0.2", + "fs-extra": "^11.1.0", + "got": "^12.5.3", + "html-react-parser": "^3.0.9", + "http-proxy-middleware": "^2.0.6", + "image-size": "^1.0.2", + "image-type": "^4.1.0", + "imagemin": "^8.0.1", + "imagemin-gifsicle": "^7.0.0", + "imagemin-mozjpeg": "^10.0.0", + "imagemin-pngquant": "^9.0.2", + "imagemin-svgo": "^10.0.1", + "inquirer": "^9.1.4", + "is-svg": "^4.3.2", + "js-yaml": "^4.1.0", + "loglevel": "^1.8.1", + "lru-cache": "^7.17.0", + "md5-file": "^5.0.0", + "mdast-util-from-markdown": "^1.3.0", + "mdast-util-phrasing": "^3.0.1", + "mdn-data": "^2.0.31", + "open": "^8.4.2", + "open-editor": "^4.0.0", + "prism-svelte": "^0.5.0", + "prismjs": "^1.29.0", + "react-modal": "^3.16.1", + "read-chunk": "^4.0.3", + "rehype-format": "^4.0.1", + "rehype-raw": "^6.1.1", + "rehype-stringify": "^9.0.3", + "remark-gfm": "^3.0.1", + "remark-parse": "^10.0.1", + "remark-rehype": "^10.1.0", + "sanitize-filename": "^1.6.3", + "send": "^0.18.0", + "source-map-support": "^0.5.21", + "tempy": "^3.0.0", + "unified": "^10.1.2", + "unist-builder": "^3.0.1", + "unist-util-visit": "^4.1.2", + "web-specs": "^2.50.0" + } + }, + "@mozilla/glean": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@mozilla/glean/-/glean-1.3.0.tgz", + "integrity": "sha512-2bEhpV8Tf4U/KEAJvaesVhe8SXk089jeDCHicEiBbznsRiIElHZVku7t7QHJI16oTqJEf/wHqjTDSQI9Wl3p3A==", + "dev": true, + "requires": { + "fflate": "^0.7.1", + "jose": "^4.0.4", + "tslib": "^2.3.1", + "uuid": "^9.0.0" + }, + "dependencies": { + "uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "dev": true + } + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@sindresorhus/is": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.3.0.tgz", + "integrity": "sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==", + "dev": true + }, + "@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "dev": true, + "requires": { + "defer-to-connect": "^2.0.1" + } + }, + "@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", + "dev": true + }, + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true + }, + "@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "dev": true, + "requires": { + "@types/ms": "*" + } + }, + "@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/hast": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz", + "integrity": "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "dev": true + }, + "@types/http-proxy": { + "version": "1.17.10", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.10.tgz", + "integrity": "sha512-Qs5aULi+zV1bwKAg5z1PWnDXWmsn+LxIvUGv6E2+OOMYhclZMO+OXd9pYVf2gLykf2I7IV2u7oTHwChPNsvJ7g==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/lodash": { + "version": "4.14.149", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.149.tgz", + "integrity": "sha512-ijGqzZt/b7BfzcK9vTrS6MFljQRPn5BFWOx8oE0GYxribu6uV+aA9zZuXI1zc/etK9E8nrgdoF2+LgUw7+9tJQ==", + "dev": true + }, + "@types/mdast": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", + "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true + }, + "@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "dev": true + }, + "@types/node": { + "version": "13.9.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.3.tgz", + "integrity": "sha512-01s+ac4qerwd6RHD+mVbOEsraDHSgUaefQlEdBbUolnQFjKwCr7luvAlEwW1RFojh67u0z4OUTjPn9LEl4zIkA==", + "dev": true + }, + "@types/parse5": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", + "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==", + "dev": true + }, + "@types/table": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/table/-/table-5.0.0.tgz", + "integrity": "sha512-fQLtGLZXor264zUPWI95WNDsZ3QV43/c0lJpR/h1hhLJumXRmHNsrvBfEzW2YMhb0EWCsn4U6h82IgwsajAuTA==", + "dev": true + }, + "@types/tabtab": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/tabtab/-/tabtab-3.0.2.tgz", + "integrity": "sha512-d8aOSJPS3SEGZevyr7vbAVUNPWGFmdFlk13vbPPK87vz+gYGM57L8T11k4wK2mOgQYZjEVYQEqmCTvupPoQBWw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/triple-beam": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.2.tgz", + "integrity": "sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g==", + "dev": true + }, + "@types/unist": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", + "dev": true + }, + "@types/wrap-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz", + "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==", + "dev": true + }, + "@use-it/interval": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@use-it/interval/-/interval-1.0.0.tgz", + "integrity": "sha512-WQFcnSt/xM/mS8ZtJ0ut5lhPrl+V0HDPPcI/J0eUClsfiD+/r8A7IeW/pVcfpSVGWRmN3+WnjNteWuKyWs2WZg==", + "dev": true, + "requires": {} + }, + "@webref/css": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/@webref/css/-/css-5.4.4.tgz", + "integrity": "sha512-x+WAreAVNfSaLWBux9y/9QTKMDpiUbcZZKh72JOFVtm7ZQqmi5/m4YlbYNCu+GjCvuMWOtgwiBx7qf7OvWWykA==", + "dev": true, + "requires": {} + }, + "@webref/elements": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@webref/elements/-/elements-2.1.0.tgz", + "integrity": "sha512-voCK9fWmUyWG55GNrHyowrdxI3zg/zLWfmZxWVNI94KjINcgnW0oi6amR3ZofIPbw26Eaqj7JrgAX0CADvDCyQ==", + "dev": true + }, + "accept-language-parser": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/accept-language-parser/-/accept-language-parser-1.5.0.tgz", + "integrity": "sha512-QhyTbMLYo0BBGg1aWbeMG4ekWtds/31BrEU+DONOg/7ax23vxpL03Pb7/zBmha2v7vdD3AyzZVWBVGEZxKOXWw==", + "dev": true + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -503,6 +10410,68 @@ "uri-js": "^4.2.2" } }, + "ansi-escapes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.0.0.tgz", + "integrity": "sha512-IG23inYII3dWlU2EyiAiGj6Bwal5GzsgPMwjYGvc1HPE2dgbj4ZB5ToWBKSquKw74nB3TIuOwaI6/jSULzfgrw==", + "dev": true, + "requires": { + "type-fest": "^3.0.0" + } + }, + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true + }, + "archive-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz", + "integrity": "sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==", + "dev": true, + "requires": { + "file-type": "^4.2.0" + }, + "dependencies": { + "file-type": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", + "integrity": "sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ==", + "dev": true + } + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "array-union": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", + "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", + "dev": true + }, "asn1": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", @@ -518,6 +10487,18 @@ "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "dev": true }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -536,6 +10517,24 @@ "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", "dev": true }, + "bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -545,12 +10544,793 @@ "tweetnacl": "^0.14.3" } }, + "bin-build": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bin-build/-/bin-build-3.0.0.tgz", + "integrity": "sha512-jcUOof71/TNAI2uM5uoUaDq2ePcVBQ3R/qhxAz1rX7UfvduAL/RXD3jXzvn8cVcDJdGVkiR1shal3OH0ImpuhA==", + "dev": true, + "requires": { + "decompress": "^4.0.0", + "download": "^6.2.2", + "execa": "^0.7.0", + "p-map-series": "^1.0.0", + "tempfile": "^2.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "bin-check": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-4.1.0.tgz", + "integrity": "sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==", + "dev": true, + "requires": { + "execa": "^0.7.0", + "executable": "^4.1.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "bin-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-3.1.0.tgz", + "integrity": "sha512-Mkfm4iE1VFt4xd4vH+gx+0/71esbfus2LsnCGe8Pi4mndSPyT+NGES/Eg99jx8/lUGWfu3z2yuB/bt5UB+iVbQ==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "find-versions": "^3.0.0" + } + }, + "bin-version-check": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-4.0.0.tgz", + "integrity": "sha512-sR631OrhC+1f8Cvs8WyVWOA33Y8tgwjETNPyyD/myRBXLkfS/vl74FmH/lFcRl9KY3zwGh7jFhvyk9vV3/3ilQ==", + "dev": true, + "requires": { + "bin-version": "^3.0.0", + "semver": "^5.6.0", + "semver-truncate": "^1.1.2" + } + }, + "bin-wrapper": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bin-wrapper/-/bin-wrapper-4.1.0.tgz", + "integrity": "sha512-hfRmo7hWIXPkbpi0ZltboCMVrU+0ClXR/JgbCKKjlDjQf6igXa7OwdqNcFWQZPZTgiY7ZpzE3+LjjkLiTN2T7Q==", + "dev": true, + "requires": { + "bin-check": "^4.1.0", + "bin-version-check": "^4.0.0", + "download": "^7.1.0", + "import-lazy": "^3.1.0", + "os-filter-obj": "^2.0.0", + "pify": "^4.0.1" + }, + "dependencies": { + "@sindresorhus/is": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", + "dev": true + }, + "cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==", + "dev": true, + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + }, + "dependencies": { + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==", + "dev": true + } + } + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "download": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/download/-/download-7.1.0.tgz", + "integrity": "sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ==", + "dev": true, + "requires": { + "archive-type": "^4.0.0", + "caw": "^2.0.1", + "content-disposition": "^0.5.2", + "decompress": "^4.2.0", + "ext-name": "^5.0.0", + "file-type": "^8.1.0", + "filenamify": "^2.0.0", + "get-stream": "^3.0.0", + "got": "^8.3.1", + "make-dir": "^1.2.0", + "p-event": "^2.1.0", + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + } + } + }, + "file-type": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-8.1.0.tgz", + "integrity": "sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true + }, + "got": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", + "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", + "dev": true, + "requires": { + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.4.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + } + } + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "dev": true + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "dev": true + }, + "keyv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", + "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true + }, + "normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "dev": true, + "requires": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + } + }, + "p-cancelable": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", + "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", + "dev": true + }, + "p-event": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-2.3.1.tgz", + "integrity": "sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==", + "dev": true, + "requires": { + "p-timeout": "^2.0.1" + } + }, + "p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "dev": true, + "requires": { + "p-finally": "^1.0.0" + } + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "dev": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + } + } + }, + "bl": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", + "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", + "dev": true, + "requires": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", + "dev": true + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true + }, + "cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "dev": true + }, + "cacheable-request": { + "version": "10.2.8", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.8.tgz", + "integrity": "sha512-IDVO5MJ4LItE6HKFQTqT2ocAQsisOoCTUDu1ddCmnhyiwFQjXNPp4081Xj23N4tO+AFEFNzGuNEf/c8Gwwt15A==", + "dev": true, + "requires": { + "@types/http-cache-semantics": "^4.0.1", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.2", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", "dev": true }, + "caw": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz", + "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==", + "dev": true, + "requires": { + "get-proxy": "^2.0.0", + "isurl": "^1.0.0-alpha5", + "tunnel-agent": "^0.6.0", + "url-to-options": "^1.0.1" + } + }, + "ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "dev": true + }, + "chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "dev": true + }, + "character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "dev": true + }, + "character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "dev": true + }, + "character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dev": true + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "dev": true, + "requires": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + } + }, + "cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + } + }, + "chrome-devtools-frontend": { + "version": "1.0.1070764", + "resolved": "https://registry.npmjs.org/chrome-devtools-frontend/-/chrome-devtools-frontend-1.0.1070764.tgz", + "integrity": "sha512-MJCZgLZlKgIpE+gemtc1a9ejPopTA2Rj1iEdRnxl8YON7V13Po4W1vKo+YrVcqUbNpVAaQ5NnZLQQOmnIRTXZg==", + "dev": true + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "dev": true, + "requires": { + "restore-cursor": "^4.0.0" + } + }, + "cli-progress": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz", + "integrity": "sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==", + "dev": true, + "requires": { + "string-width": "^4.2.3" + } + }, + "cli-spinners": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", + "dev": true + }, + "cli-truncate": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", + "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", + "dev": true, + "requires": { + "slice-ansi": "^5.0.0", + "string-width": "^5.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + } + } + }, + "cli-width": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.0.0.tgz", + "integrity": "sha512-ZksGS2xpa/bYkNzN3BAw1wEjsLV/ZKOf/CCrJ/QOBsxx6fOARIkwTutxp1XIOIohi6HKmOFjMoK/XaqDVUpEEw==", + "dev": true + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + }, + "dependencies": { + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true + } + } + }, + "color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dev": true, + "requires": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "colornames": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/colornames/-/colornames-1.1.1.tgz", + "integrity": "sha512-/pyV40IrsdulWv+wFPmERh9k/mjsPZ64yUMDmWrtj/k1nmgrzzIENWKdaVKyBbvFdQWqkcaRxr+polCo3VMe7A==", + "dev": true + }, + "colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "dev": true, + "requires": { + "color": "^3.1.3", + "text-hex": "1.0.x" + } + }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -560,12 +11340,233 @@ "delayed-stream": "~1.0.0" } }, + "comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "dev": true + }, + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "content": { + "version": "git+ssh://git@github.com/mdn/content.git#1d50cddbcd49bea9ddf7e8f725e2136de1e985c8", + "dev": true, + "from": "content@github:mdn/content", + "requires": { + "@mdn/yari": "2.5.3", + "cross-env": "7.0.3", + "env-cmd": "10.1.0", + "husky": "8.0.3", + "lint-staged": "13.1.2", + "markdownlint-cli2": "0.6.0", + "markdownlint-rule-search-replace": "1.0.9", + "prettier": "2.8.4" + } + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true + }, + "cookie-parser": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", + "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", + "dev": true, + "requires": { + "cookie": "0.4.1", + "cookie-signature": "1.0.6" + }, + "dependencies": { + "cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "dev": true + } + } + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", "dev": true }, + "cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypto-random-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "dev": true, + "requires": { + "type-fest": "^1.0.1" + }, + "dependencies": { + "type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true + } + } + }, + "css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + } + }, + "css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "requires": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "dependencies": { + "mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true + } + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + }, + "dependencies": { + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + } + } + }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -575,12 +11576,413 @@ "assert-plus": "^1.0.0" } }, + "dayjs": { + "version": "1.11.7", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", + "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "dev": true, + "requires": { + "character-entities": "^2.0.0" + } + }, + "decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true + }, + "decompress": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", + "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", + "dev": true, + "requires": { + "decompress-tar": "^4.0.0", + "decompress-tarbz2": "^4.0.0", + "decompress-targz": "^4.0.0", + "decompress-unzip": "^4.0.1", + "graceful-fs": "^4.1.10", + "make-dir": "^1.0.0", + "pify": "^2.3.0", + "strip-dirs": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + } + } + }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "requires": { + "mimic-response": "^3.1.0" + }, + "dependencies": { + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true + } + } + }, + "decompress-tar": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "dev": true, + "requires": { + "file-type": "^5.2.0", + "is-stream": "^1.1.0", + "tar-stream": "^1.5.2" + }, + "dependencies": { + "file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", + "dev": true + } + } + }, + "decompress-tarbz2": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "dev": true, + "requires": { + "decompress-tar": "^4.1.0", + "file-type": "^6.1.0", + "is-stream": "^1.1.0", + "seek-bzip": "^1.0.5", + "unbzip2-stream": "^1.0.9" + }, + "dependencies": { + "file-type": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", + "dev": true + } + } + }, + "decompress-targz": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "dev": true, + "requires": { + "decompress-tar": "^4.1.1", + "file-type": "^5.2.0", + "is-stream": "^1.1.0" + }, + "dependencies": { + "file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", + "dev": true + } + } + }, + "decompress-unzip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", + "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==", + "dev": true, + "requires": { + "file-type": "^3.8.0", + "get-stream": "^2.2.0", + "pify": "^2.3.0", + "yauzl": "^2.4.2" + }, + "dependencies": { + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==", + "dev": true + }, + "get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + } + } + }, + "defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true + }, + "dexie": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/dexie/-/dexie-3.2.3.tgz", + "integrity": "sha512-iHayBd4UYryDCVUNa3PMsJMEnd8yjyh5p7a+RFeC8i8n476BC9wMhVvqiImq5zJZJf5Tuer+s4SSj+AA3x+ZbQ==", + "dev": true + }, + "diagnostics": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/diagnostics/-/diagnostics-1.1.1.tgz", + "integrity": "sha512-8wn1PmdunLJ9Tqbx+Fx/ZEuHfJf4NKSN2ZBj7SJC/OWRWha843+WsTjqMe1B5E3p28jqBlp+mJ2fPVxPyNgYKQ==", + "dev": true, + "requires": { + "colorspace": "1.1.x", + "enabled": "1.0.x", + "kuler": "1.0.x" + } + }, + "diff": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "requires": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "requires": { + "domelementtype": "^2.3.0" + } + }, + "domutils": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", + "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", + "dev": true, + "requires": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.1" + } + }, + "dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "dev": true + }, + "download": { + "version": "6.2.5", + "resolved": "https://registry.npmjs.org/download/-/download-6.2.5.tgz", + "integrity": "sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA==", + "dev": true, + "requires": { + "caw": "^2.0.0", + "content-disposition": "^0.5.2", + "decompress": "^4.0.0", + "ext-name": "^5.0.0", + "file-type": "5.2.0", + "filenamify": "^2.0.0", + "get-stream": "^3.0.0", + "got": "^7.0.0", + "make-dir": "^1.0.0", + "p-event": "^1.0.0", + "pify": "^3.0.0" + }, + "dependencies": { + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true + }, + "got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "dev": true, + "requires": { + "decompress-response": "^3.2.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-plain-obj": "^1.1.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^1.1.1", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "url-parse-lax": "^1.0.0", + "url-to-options": "^1.0.1" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true + }, + "p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", + "dev": true + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==", + "dev": true, + "requires": { + "prepend-http": "^1.0.1" + } + } + } + }, + "duplexer3": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", + "dev": true + }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -591,12 +11993,299 @@ "safer-buffer": "^2.1.0" } }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "dev": true, + "requires": { + "jake": "^10.8.5" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "enabled": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-1.0.2.tgz", + "integrity": "sha512-nnzgVSpB35qKrUN8358SjO1bYAmxoThECTWw9s3J0x5G8A9hokKHVDFzBjVpCoSryo6MhN8woVyascN5jheaNA==", + "dev": true, + "requires": { + "env-variable": "0.0.x" + } + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "entities": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", + "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", + "dev": true + }, + "env-cmd": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/env-cmd/-/env-cmd-10.1.0.tgz", + "integrity": "sha512-mMdWTT9XKN7yNth/6N6g2GuKuJTsKMDHlQFUDacb/heQRRWOTIZ42t1rMHnQu4jYxU1ajdTeJM+9eEETlqToMA==", + "dev": true, + "requires": { + "commander": "^4.0.0", + "cross-spawn": "^7.0.0" + } + }, + "env-editor": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-1.1.0.tgz", + "integrity": "sha512-7AXskzN6T7Q9TFcKAGJprUbpQa4i1VsAetO9rdBqbGMGlragTziBgWt4pVYJMBWHQlLoX0buy6WFikzPH4Qjpw==", + "dev": true + }, + "env-variable": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/env-variable/-/env-variable-0.0.6.tgz", + "integrity": "sha512-bHz59NlBbtS0NhftmR8+ExBEekE7br0e01jw+kk0NDro7TtZzBYZ5ScGPs3OmwnpyfHTHOtr1Y6uedCdrIldtg==", + "dev": true + }, + "es6-promisify": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.1.1.tgz", + "integrity": "sha512-HBL8I3mIki5C1Cc9QjKUenHtnG0A5/xA8Q/AllRcfiwl2CZFXGK7ddBiCoRwAix4i2KxcQfjtIVcrVbB3vbmwg==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true + }, + "esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "dev": true + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "requires": { + "pify": "^2.2.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + } + } + }, + "exenv": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", + "integrity": "sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==", + "dev": true + }, + "express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + } + } + }, + "ext-list": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", + "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", + "dev": true, + "requires": { + "mime-db": "^1.28.0" + } + }, + "ext-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", + "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "dev": true, + "requires": { + "ext-list": "^2.0.0", + "sort-keys-length": "^1.0.0" + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -609,12 +12298,177 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, + "fast-xml-parser": { + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.21.1.tgz", + "integrity": "sha512-FTFVjYoBOZTJekiUsawGsSYV9QL0A+zDYCRj7y34IO6Jg+2IMYEtQa+bbictpdpV8dHxXywqU7C0gRDEOFtBFg==", + "dev": true, + "requires": { + "strnum": "^1.0.4" + } + }, + "fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "fdir": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.0.1.tgz", + "integrity": "sha512-bdrUUb0eYQrPRlaAtlSRoLs7sp6yKEwbMQuUgwvi/14TnaqhM/deSZUrC5ic+yjm5nEPPWE61oWpTTxQFQMmLA==", + "dev": true, + "requires": {} + }, + "fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", + "dev": true + }, + "fflate": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.7.4.tgz", + "integrity": "sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==", + "dev": true + }, + "figures": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", + "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", + "dev": true, + "requires": { + "escape-string-regexp": "^5.0.0", + "is-unicode-supported": "^1.2.0" + } + }, + "file-type": { + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-18.2.1.tgz", + "integrity": "sha512-Yw5MtnMv7vgD2/6Bjmmuegc8bQEVA9GmAyaR18bMYWKqsWDG9wgYZ1j4I6gNMF5Y5JBDcUcjRQqNQx7Y8uotcg==", + "dev": true, + "requires": { + "readable-web-to-node-stream": "^3.0.2", + "strtok3": "^7.0.0", + "token-types": "^5.0.1" + } + }, + "filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "requires": { + "minimatch": "^5.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "dev": true + }, + "filenamify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-2.1.0.tgz", + "integrity": "sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==", + "dev": true, + "requires": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.0", + "trim-repeated": "^1.0.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + } + }, + "find-versions": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz", + "integrity": "sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==", + "dev": true, + "requires": { + "semver-regex": "^2.0.0" + } + }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -632,6 +12486,151 @@ "mime-types": "^2.1.12" } }, + "form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "dev": true + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "front-matter": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz", + "integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==", + "dev": true, + "requires": { + "js-yaml": "^3.13.1" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + } + } + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "fs-extra": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", + "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-proxy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", + "integrity": "sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==", + "dev": true, + "requires": { + "npm-conf": "^1.1.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -641,6 +12640,121 @@ "assert-plus": "^1.0.0" } }, + "gifsicle": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/gifsicle/-/gifsicle-5.3.0.tgz", + "integrity": "sha512-FJTpgdj1Ow/FITB7SVza5HlzXa+/lqEY0tHQazAJbuAdvyJtkH4wIdsR2K414oaTwRXHFLLF+tYbipj+OpYg+Q==", + "dev": true, + "requires": { + "bin-build": "^3.0.0", + "bin-wrapper": "^4.0.0", + "execa": "^5.0.0" + }, + "dependencies": { + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + } + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globby": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", + "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", + "dev": true, + "requires": { + "array-union": "^3.0.1", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.7", + "ignore": "^5.1.9", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "dependencies": { + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true + } + } + }, + "got": { + "version": "12.5.3", + "resolved": "https://registry.npmjs.org/got/-/got-12.5.3.tgz", + "integrity": "sha512-8wKnb9MGU8IPGRIo+/ukTy9XLJBwDiCpIf5TVzQ9Cpol50eMTpBq2GAuDsuDIz7hTYmZgMgC1e9ydr6kSDWs3w==", + "dev": true, + "requires": { + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.1", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -657,6 +12771,283 @@ "har-schema": "^2.0.0" } }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", + "dev": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "dev": true, + "requires": { + "has-symbol-support-x": "^1.4.1" + } + }, + "hast-util-embedded": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hast-util-embedded/-/hast-util-embedded-2.0.1.tgz", + "integrity": "sha512-QUdSOP1/o+/TxXtpPFXR2mUg2P+ySrmlX7QjwHZCXqMFyYk7YmcGSvqRW+4XgXAoHifdE1t2PwFaQK33TqVjSw==", + "dev": true, + "requires": { + "hast-util-is-element": "^2.0.0" + } + }, + "hast-util-from-parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.2.tgz", + "integrity": "sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==", + "dev": true, + "requires": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0", + "hastscript": "^7.0.0", + "property-information": "^6.0.0", + "vfile": "^5.0.0", + "vfile-location": "^4.0.0", + "web-namespaces": "^2.0.0" + } + }, + "hast-util-has-property": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-2.0.1.tgz", + "integrity": "sha512-X2+RwZIMTMKpXUzlotatPzWj8bspCymtXH3cfG3iQKV+wPF53Vgaqxi/eLqGck0wKq1kS9nvoB1wchbCPEL8sg==", + "dev": true + }, + "hast-util-is-body-ok-link": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-body-ok-link/-/hast-util-is-body-ok-link-2.0.0.tgz", + "integrity": "sha512-S58hCexyKdD31vMsErvgLfflW6vYWo/ixRLPJTtkOvLld24vyI8vmYmkgLA5LG3la2ME7nm7dLGdm48gfLRBfw==", + "dev": true, + "requires": { + "@types/hast": "^2.0.0", + "hast-util-has-property": "^2.0.0", + "hast-util-is-element": "^2.0.0" + } + }, + "hast-util-is-element": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-2.1.3.tgz", + "integrity": "sha512-O1bKah6mhgEq2WtVMk+Ta5K7pPMqsBBlmzysLdcwKVrqzZQ0CHqUPiIVspNhAG1rvxpvJjtGee17XfauZYKqVA==", + "dev": true, + "requires": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0" + } + }, + "hast-util-parse-selector": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz", + "integrity": "sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==", + "dev": true, + "requires": { + "@types/hast": "^2.0.0" + } + }, + "hast-util-phrasing": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hast-util-phrasing/-/hast-util-phrasing-2.0.2.tgz", + "integrity": "sha512-yGkCfPkkfCyiLfK6KEl/orMDr/zgCnq/NaO9HfULx6/Zga5fso5eqQA5Ov/JZVqACygvw9shRYWgXNcG2ilo7w==", + "dev": true, + "requires": { + "@types/hast": "^2.0.0", + "hast-util-embedded": "^2.0.0", + "hast-util-has-property": "^2.0.0", + "hast-util-is-body-ok-link": "^2.0.0", + "hast-util-is-element": "^2.0.0" + } + }, + "hast-util-raw": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-7.2.3.tgz", + "integrity": "sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==", + "dev": true, + "requires": { + "@types/hast": "^2.0.0", + "@types/parse5": "^6.0.0", + "hast-util-from-parse5": "^7.0.0", + "hast-util-to-parse5": "^7.0.0", + "html-void-elements": "^2.0.0", + "parse5": "^6.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0", + "vfile": "^5.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + } + } + }, + "hast-util-to-html": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-8.0.4.tgz", + "integrity": "sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==", + "dev": true, + "requires": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-raw": "^7.0.0", + "hast-util-whitespace": "^2.0.0", + "html-void-elements": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + } + }, + "hast-util-to-parse5": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-7.1.0.tgz", + "integrity": "sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==", + "dev": true, + "requires": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + } + }, + "hast-util-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", + "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==", + "dev": true + }, + "hastscript": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.2.0.tgz", + "integrity": "sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==", + "dev": true, + "requires": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^3.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + } + }, + "html-dom-parser": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/html-dom-parser/-/html-dom-parser-3.1.3.tgz", + "integrity": "sha512-fI0yyNlIeSboxU+jnrA4v8qj4+M8SI9/q6AKYdwCY2qki22UtKCDTxvagHniECu7sa5/o2zFRdLleA67035lsA==", + "dev": true, + "requires": { + "domhandler": "5.0.3", + "htmlparser2": "8.0.1" + } + }, + "html-react-parser": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/html-react-parser/-/html-react-parser-3.0.9.tgz", + "integrity": "sha512-gOPZmaCMXNYu7Y9+58k2tLhTMXQ+QN8ctNFijzLuBxJaLZ6TsN+tUpN+MhbI+6nGaBCRGT2rpw6y/AqkTFZckg==", + "dev": true, + "requires": { + "domhandler": "5.0.3", + "html-dom-parser": "3.1.3", + "react-property": "2.0.0", + "style-to-js": "1.1.3" + } + }, + "html-void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz", + "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==", + "dev": true + }, + "html-whitespace-sensitive-tag-names": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-whitespace-sensitive-tag-names/-/html-whitespace-sensitive-tag-names-2.0.0.tgz", + "integrity": "sha512-SQdIvTTtnHAx72xGUIUudvVOCjeWvV1U7rvSFnNGxTGRw3ZC7RES4Gw6dm1nMYD60TXvm6zjk/bWqgNc5pjQaw==", + "dev": true + }, + "htmlparser2": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz", + "integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==", + "dev": true, + "requires": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "entities": "^4.3.0" + } + }, + "http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "requires": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + } + }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -668,24 +13059,654 @@ "sshpk": "^1.7.0" } }, + "http2-wrapper": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", + "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", + "dev": true, + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "husky": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", + "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true + }, + "image-size": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", + "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", + "dev": true, + "requires": { + "queue": "6.0.2" + } + }, + "image-type": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/image-type/-/image-type-4.1.0.tgz", + "integrity": "sha512-CFJMJ8QK8lJvRlTCEgarL4ro6hfDQKif2HjSvYCdQZESaIPV4v9imrf7BQHK+sQeTeNeMpWciR9hyC/g8ybXEg==", + "dev": true, + "requires": { + "file-type": "^10.10.0" + }, + "dependencies": { + "file-type": { + "version": "10.11.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-10.11.0.tgz", + "integrity": "sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==", + "dev": true + } + } + }, + "imagemin": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-8.0.1.tgz", + "integrity": "sha512-Q/QaPi+5HuwbZNtQRqUVk6hKacI6z9iWiCSQBisAv7uBynZwO7t1svkryKl7+iSQbkU/6t9DWnHz04cFs2WY7w==", + "dev": true, + "requires": { + "file-type": "^16.5.3", + "globby": "^12.0.0", + "graceful-fs": "^4.2.8", + "junk": "^3.1.0", + "p-pipe": "^4.0.0", + "replace-ext": "^2.0.0", + "slash": "^3.0.0" + }, + "dependencies": { + "file-type": { + "version": "16.5.4", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", + "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", + "dev": true, + "requires": { + "readable-web-to-node-stream": "^3.0.0", + "strtok3": "^6.2.4", + "token-types": "^4.1.1" + } + }, + "peek-readable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", + "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==", + "dev": true + }, + "strtok3": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", + "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", + "dev": true, + "requires": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^4.1.0" + } + }, + "token-types": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", + "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", + "dev": true, + "requires": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + } + } + } + }, + "imagemin-gifsicle": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/imagemin-gifsicle/-/imagemin-gifsicle-7.0.0.tgz", + "integrity": "sha512-LaP38xhxAwS3W8PFh4y5iQ6feoTSF+dTAXFRUEYQWYst6Xd+9L/iPk34QGgK/VO/objmIlmq9TStGfVY2IcHIA==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "gifsicle": "^5.0.0", + "is-gif": "^3.0.0" + } + }, + "imagemin-mozjpeg": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/imagemin-mozjpeg/-/imagemin-mozjpeg-10.0.0.tgz", + "integrity": "sha512-DK85QNOjS3/GzWYfNB3CACMZD10sIQgFDv1+WTOnZljgltQTEyATjdyUVyjKu5q4sCESQdwvwq7WEZzJ5fFjlg==", + "dev": true, + "requires": { + "execa": "^6.0.0", + "is-jpg": "^3.0.0", + "mozjpeg": "^8.0.0" + }, + "dependencies": { + "execa": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", + "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^3.0.1", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + } + }, + "human-signals": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", + "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "dev": true + }, + "is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true + }, + "mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true + }, + "npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "requires": { + "path-key": "^4.0.0" + } + }, + "onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "requires": { + "mimic-fn": "^4.0.0" + } + }, + "path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true + }, + "strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true + } + } + }, + "imagemin-pngquant": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/imagemin-pngquant/-/imagemin-pngquant-9.0.2.tgz", + "integrity": "sha512-cj//bKo8+Frd/DM8l6Pg9pws1pnDUjgb7ae++sUX1kUVdv2nrngPykhiUOgFeE0LGY/LmUbCf4egCHC4YUcZSg==", + "dev": true, + "requires": { + "execa": "^4.0.0", + "is-png": "^2.0.0", + "is-stream": "^2.0.0", + "ow": "^0.17.0", + "pngquant-bin": "^6.0.0" + }, + "dependencies": { + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + } + } + }, + "imagemin-svgo": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/imagemin-svgo/-/imagemin-svgo-10.0.1.tgz", + "integrity": "sha512-v27/UTGkb3vrm5jvjsMGQ2oxaDfSOTBfJOgmFO2fYepx05bY1IqWCK13aDytVR+l9w9eOlq0NMCLbxJlghYb2g==", + "dev": true, + "requires": { + "is-svg": "^4.3.1", + "svgo": "^2.5.0" + } + }, + "import-lazy": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-3.1.0.tgz", + "integrity": "sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==", + "dev": true + }, + "inquirer": { + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.1.4.tgz", + "integrity": "sha512-9hiJxE5gkK/cM2d1mTEnuurGTAoHebbkX0BYl3h7iEg7FYfuNIom+nDfBCSWtvSnoSrWCeBxqqBZu26xdlJlXA==", + "dev": true, + "requires": { + "ansi-escapes": "^6.0.0", + "chalk": "^5.1.2", + "cli-cursor": "^4.0.0", + "cli-width": "^4.0.0", + "external-editor": "^3.0.3", + "figures": "^5.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^6.1.2", + "run-async": "^2.4.0", + "rxjs": "^7.5.7", + "string-width": "^5.1.2", + "strip-ansi": "^7.0.1", + "through": "^2.3.6", + "wrap-ansi": "^8.0.1" + }, + "dependencies": { + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, + "into-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", + "integrity": "sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==", + "dev": true, + "requires": { + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" + } + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + }, + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + }, + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true + }, + "is-gif": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-gif/-/is-gif-3.0.0.tgz", + "integrity": "sha512-IqJ/jlbw5WJSNfwQ/lHEDXF8rxhRgF6ythk2oiEvhpG29F704eX9NO6TvPfMiq9DrbwgcEDnETYNcZDPewQoVw==", + "dev": true, + "requires": { + "file-type": "^10.4.0" + }, + "dependencies": { + "file-type": { + "version": "10.11.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-10.11.0.tgz", + "integrity": "sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==", + "dev": true + } + } + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "dev": true + }, + "is-jpg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-jpg/-/is-jpg-3.0.0.tgz", + "integrity": "sha512-Vcd67KWHZblEKEBrtP25qLZ8wN9ICoAhl1pKUqD7SM7hf2qtuRl7loDgP5Zigh2oN/+7uj+KVyC0eRJvgOEFeQ==", + "dev": true + }, + "is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", + "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", + "dev": true + }, + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true + }, + "is-png": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-png/-/is-png-2.0.0.tgz", + "integrity": "sha512-4KPGizaVGj2LK7xwJIz8o5B2ubu1D/vcQsgOGFEDlpcvgZHto4gBnyd0ig7Ws+67ixmwKoNmu0hYnpo6AaKb5g==", + "dev": true + }, + "is-retry-allowed": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true + }, + "is-svg": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-4.3.2.tgz", + "integrity": "sha512-mM90duy00JGMyjqIVHu9gNTjywdZV+8qNasX8cm/EEYZ53PHDgajvbBwNVvty5dwSAxLUD3p3bdo+7sR/UMrpw==", + "dev": true, + "requires": { + "fast-xml-parser": "^3.19.0" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, + "is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", "dev": true }, + "isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "dev": true, + "requires": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + } + }, + "jake": { + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "dev": true, + "requires": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "jose": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.12.0.tgz", + "integrity": "sha512-wW1u3cK81b+SFcHjGC8zw87yuyUweEFe0UJirrXEw1NasW00eF7sZjeG3SLBGz001ozxQ46Y9sofDvhBmWFtXQ==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", "dev": true }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, "json-schema": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", @@ -704,6 +13725,16 @@ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "dev": true }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, "jsprim": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", @@ -716,6 +13747,1150 @@ "verror": "1.10.0" } }, + "junk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", + "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", + "dev": true + }, + "keyv": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", + "dev": true, + "requires": { + "json-buffer": "3.0.1" + } + }, + "kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true + }, + "kuler": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-1.0.1.tgz", + "integrity": "sha512-J9nVUucG1p/skKul6DU3PUZrhs0LPulNaeUOox0IyXDi8S4CztTHs1gQphhuZmzXG7VOQSf6NJfKuzteQLv9gQ==", + "dev": true, + "requires": { + "colornames": "^1.1.1" + } + }, + "lilconfig": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", + "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", + "dev": true + }, + "line-column-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/line-column-path/-/line-column-path-3.0.0.tgz", + "integrity": "sha512-Atocnm7Wr9nuvAn97yEPQa3pcQI5eLQGBz+m6iTb+CVw+IOzYB9MrYK7jI7BfC9ISnT4Fu0eiwhAScV//rp4Hw==", + "dev": true, + "requires": { + "type-fest": "^2.0.0" + }, + "dependencies": { + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true + } + } + }, + "linkify-it": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", + "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", + "dev": true, + "requires": { + "uc.micro": "^1.0.1" + } + }, + "lint-staged": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.1.2.tgz", + "integrity": "sha512-K9b4FPbWkpnupvK3WXZLbgu9pchUJ6N7TtVZjbaPsoizkqFUDkUReUL25xdrCljJs7uLUF3tZ7nVPeo/6lp+6w==", + "dev": true, + "requires": { + "cli-truncate": "^3.1.0", + "colorette": "^2.0.19", + "commander": "^9.4.1", + "debug": "^4.3.4", + "execa": "^6.1.0", + "lilconfig": "2.0.6", + "listr2": "^5.0.5", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-inspect": "^1.12.2", + "pidtree": "^0.6.0", + "string-argv": "^0.3.1", + "yaml": "^2.1.3" + }, + "dependencies": { + "commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "execa": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", + "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^3.0.1", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + } + }, + "human-signals": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", + "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "dev": true + }, + "is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true + }, + "mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "requires": { + "path-key": "^4.0.0" + } + }, + "onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "requires": { + "mimic-fn": "^4.0.0" + } + }, + "path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true + }, + "strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true + } + } + }, + "listr2": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.7.tgz", + "integrity": "sha512-MD+qXHPmtivrHIDRwPYdfNkrzqDiuaKU/rfBcec3WMyMF3xylQj3jMq344OtvQxz7zaCFViRAeqlr2AFhPvXHw==", + "dev": true, + "requires": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.19", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.8.0", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "requires": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", + "dev": true + }, + "lodash.groupby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz", + "integrity": "sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==", + "dev": true + }, + "lodash.isfunction": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", + "dev": true + }, + "lodash.isnil": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lodash.isnil/-/lodash.isnil-4.0.0.tgz", + "integrity": "sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==", + "dev": true + }, + "lodash.isundefined": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", + "integrity": "sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "log-symbols": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", + "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", + "dev": true, + "requires": { + "chalk": "^5.0.0", + "is-unicode-supported": "^1.1.0" + } + }, + "log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } + } + }, + "logform": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.5.1.tgz", + "integrity": "sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg==", + "dev": true, + "requires": { + "@colors/colors": "1.5.0", + "@types/triple-beam": "^1.3.2", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "loglevel": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", + "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==", + "dev": true + }, + "longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "dev": true + }, + "lru-cache": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.17.0.tgz", + "integrity": "sha512-zSxlVVwOabhVyTi6E8gYv2cr6bXK+8ifYz5/uyJb9feXX6NACVDwY4p5Ut3WC3Ivo/QhpARHU3iujx2xGAYHbQ==", + "dev": true + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + } + } + }, + "markdown-it": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.1.tgz", + "integrity": "sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==", + "dev": true, + "requires": { + "argparse": "^2.0.1", + "entities": "~3.0.1", + "linkify-it": "^4.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "dependencies": { + "entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "dev": true + } + } + }, + "markdown-table": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz", + "integrity": "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==", + "dev": true + }, + "markdownlint": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.27.0.tgz", + "integrity": "sha512-HtfVr/hzJJmE0C198F99JLaeada+646B5SaG2pVoEakLFI6iRGsvMqrnnrflq8hm1zQgwskEgqSnhDW11JBp0w==", + "dev": true, + "requires": { + "markdown-it": "13.0.1" + } + }, + "markdownlint-cli2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.6.0.tgz", + "integrity": "sha512-Bv20r6WGdcHMWi8QvAFZ3CBunf4i4aYmVdTfpAvXODI/1k3f09DZZ0i0LcX9ZMhlVxjoOzbVDz1NWyKc5hwTqg==", + "dev": true, + "requires": { + "globby": "13.1.3", + "markdownlint": "0.27.0", + "markdownlint-cli2-formatter-default": "0.0.3", + "micromatch": "4.0.5", + "strip-json-comments": "5.0.0", + "yaml": "2.2.1" + }, + "dependencies": { + "globby": { + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", + "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", + "dev": true, + "requires": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + } + }, + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true + } + } + }, + "markdownlint-cli2-formatter-default": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/markdownlint-cli2-formatter-default/-/markdownlint-cli2-formatter-default-0.0.3.tgz", + "integrity": "sha512-QEAJitT5eqX1SNboOD+SO/LNBpu4P4je8JlR02ug2cLQAqmIhh8IJnSK7AcaHBHhNADqdGydnPpQOpsNcEEqCw==", + "dev": true, + "requires": {} + }, + "markdownlint-rule-helpers": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/markdownlint-rule-helpers/-/markdownlint-rule-helpers-0.18.0.tgz", + "integrity": "sha512-UEdWfsoLr8ylXxfh4fzY5P6lExN+7Un7LbfqDXPlq5VLwwEDFdcZ7EMXoaEKNzncBKG/KWrt2sVt7KiCJgPyMQ==", + "dev": true + }, + "markdownlint-rule-search-replace": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/markdownlint-rule-search-replace/-/markdownlint-rule-search-replace-1.0.9.tgz", + "integrity": "sha512-Qrd+wPvCoED1XFR1uL9PdA8ktOGDtCFHPtw7IVzh2TQbLRRHa2MY/moO9jpLj2maexVevIYH9DS0NLWdU3W1Cg==", + "dev": true, + "requires": { + "markdownlint-rule-helpers": "~0.18.0" + } + }, + "md5-file": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-5.0.0.tgz", + "integrity": "sha512-xbEFXCYVWrSx/gEKS1VPlg84h/4L20znVIulKw6kMfmBUAZNAnF00eczz9ICMl+/hjQGo5KSXRxbL/47X3rmMw==", + "dev": true + }, + "mdast-util-definitions": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz", + "integrity": "sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "unist-util-visit": "^4.0.0" + } + }, + "mdast-util-find-and-replace": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.2.tgz", + "integrity": "sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.0.0" + } + }, + "mdast-util-from-markdown": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.0.tgz", + "integrity": "sha512-HN3W1gRIuN/ZW295c7zi7g9lVBllMgZE40RxCX37wrTPWXCWtpvOZdfnuK+1WNpvZje6XuJeI3Wnb4TJEUem+g==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "mdast-util-to-string": "^3.1.0", + "micromark": "^3.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-decode-string": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "uvu": "^0.5.0" + } + }, + "mdast-util-gfm": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-2.0.2.tgz", + "integrity": "sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==", + "dev": true, + "requires": { + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-gfm-autolink-literal": "^1.0.0", + "mdast-util-gfm-footnote": "^1.0.0", + "mdast-util-gfm-strikethrough": "^1.0.0", + "mdast-util-gfm-table": "^1.0.0", + "mdast-util-gfm-task-list-item": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + } + }, + "mdast-util-gfm-autolink-literal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.3.tgz", + "integrity": "sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "ccount": "^2.0.0", + "mdast-util-find-and-replace": "^2.0.0", + "micromark-util-character": "^1.0.0" + } + }, + "mdast-util-gfm-footnote": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.2.tgz", + "integrity": "sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0", + "micromark-util-normalize-identifier": "^1.0.0" + } + }, + "mdast-util-gfm-strikethrough": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.3.tgz", + "integrity": "sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0" + } + }, + "mdast-util-gfm-table": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.7.tgz", + "integrity": "sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-to-markdown": "^1.3.0" + } + }, + "mdast-util-gfm-task-list-item": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.2.tgz", + "integrity": "sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0" + } + }, + "mdast-util-phrasing": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz", + "integrity": "sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "unist-util-is": "^5.0.0" + } + }, + "mdast-util-to-hast": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz", + "integrity": "sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==", + "dev": true, + "requires": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-definitions": "^5.0.0", + "micromark-util-sanitize-uri": "^1.1.0", + "trim-lines": "^3.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0" + } + }, + "mdast-util-to-markdown": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz", + "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^3.0.0", + "mdast-util-to-string": "^3.0.0", + "micromark-util-decode-string": "^1.0.0", + "unist-util-visit": "^4.0.0", + "zwitch": "^2.0.0" + } + }, + "mdast-util-to-string": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.1.tgz", + "integrity": "sha512-tGvhT94e+cVnQt8JWE9/b3cUQZWS732TJxXHktvP+BYo62PpYD53Ls/6cC60rW21dW+txxiM4zMdc6abASvZKA==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0" + } + }, + "mdn-data": { + "version": "2.0.31", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.31.tgz", + "integrity": "sha512-BoMtKzFjk2+b5QDi1QtS4XBZtwd1WIBVQSVe9Q6iIgQP+m6KhlbukWM8bp7rYgWXOXzp/cBqgHWU7az4hGV1WA==", + "dev": true + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true + }, + "micromark": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.1.0.tgz", + "integrity": "sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==", + "dev": true, + "requires": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "micromark-core-commonmark": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz", + "integrity": "sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==", + "dev": true, + "requires": { + "decode-named-character-reference": "^1.0.0", + "micromark-factory-destination": "^1.0.0", + "micromark-factory-label": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-factory-title": "^1.0.0", + "micromark-factory-whitespace": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-html-tag-name": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "micromark-extension-gfm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-2.0.1.tgz", + "integrity": "sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==", + "dev": true, + "requires": { + "micromark-extension-gfm-autolink-literal": "^1.0.0", + "micromark-extension-gfm-footnote": "^1.0.0", + "micromark-extension-gfm-strikethrough": "^1.0.0", + "micromark-extension-gfm-table": "^1.0.0", + "micromark-extension-gfm-tagfilter": "^1.0.0", + "micromark-extension-gfm-task-list-item": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-extension-gfm-autolink-literal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.3.tgz", + "integrity": "sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==", + "dev": true, + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-extension-gfm-footnote": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.4.tgz", + "integrity": "sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==", + "dev": true, + "requires": { + "micromark-core-commonmark": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-extension-gfm-strikethrough": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.4.tgz", + "integrity": "sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==", + "dev": true, + "requires": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-extension-gfm-table": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.5.tgz", + "integrity": "sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==", + "dev": true, + "requires": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-extension-gfm-tagfilter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.1.tgz", + "integrity": "sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==", + "dev": true, + "requires": { + "micromark-util-types": "^1.0.0" + } + }, + "micromark-extension-gfm-task-list-item": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.3.tgz", + "integrity": "sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==", + "dev": true, + "requires": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-factory-destination": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz", + "integrity": "sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==", + "dev": true, + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-factory-label": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz", + "integrity": "sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==", + "dev": true, + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-factory-space": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz", + "integrity": "sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==", + "dev": true, + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-factory-title": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz", + "integrity": "sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==", + "dev": true, + "requires": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-factory-whitespace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz", + "integrity": "sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==", + "dev": true, + "requires": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-character": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.1.0.tgz", + "integrity": "sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==", + "dev": true, + "requires": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-chunked": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz", + "integrity": "sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==", + "dev": true, + "requires": { + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-classify-character": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz", + "integrity": "sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==", + "dev": true, + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-combine-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz", + "integrity": "sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==", + "dev": true, + "requires": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-decode-numeric-character-reference": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz", + "integrity": "sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==", + "dev": true, + "requires": { + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-decode-string": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz", + "integrity": "sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==", + "dev": true, + "requires": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-encode": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz", + "integrity": "sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==", + "dev": true + }, + "micromark-util-html-tag-name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz", + "integrity": "sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==", + "dev": true + }, + "micromark-util-normalize-identifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz", + "integrity": "sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==", + "dev": true, + "requires": { + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-resolve-all": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz", + "integrity": "sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==", + "dev": true, + "requires": { + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-sanitize-uri": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.1.0.tgz", + "integrity": "sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg==", + "dev": true, + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-subtokenize": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz", + "integrity": "sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==", + "dev": true, + "requires": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-util-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz", + "integrity": "sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==", + "dev": true + }, + "micromark-util-types": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.0.2.tgz", + "integrity": "sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -731,24 +14906,624 @@ "mime-db": "1.52.0" } }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mimic-response": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "mozjpeg": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/mozjpeg/-/mozjpeg-8.0.0.tgz", + "integrity": "sha512-Ca2Yhah9hG0Iutgsn8MOrAl37P9ThnKsJatjXoWdUO+8X8GeG/6ahvHZrTyqvbs6leMww1SauWUCao/L9qBuFQ==", + "dev": true, + "requires": { + "bin-build": "^3.0.0", + "bin-wrapper": "^4.0.0" + } + }, + "mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-url": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "dev": true + }, + "npm-conf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", + "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "dev": true, + "requires": { + "config-chain": "^1.1.11", + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "requires": { + "path-key": "^2.0.0" + }, + "dependencies": { + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true + } + } + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "dev": true }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, + "object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "one-time": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz", + "integrity": "sha512-qAMrwuk2xLEutlASoiPiAMW3EN3K96Ka/ilSXYr6qR1zSVXw2j7+yDSqGTC4T9apfLYxM3tLLjKvgPdAUK7kYQ==", + "dev": true + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "open-editor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/open-editor/-/open-editor-4.0.0.tgz", + "integrity": "sha512-5mKZ98iFdkivozt5XTCOspoKbL3wtYu6oOoVxfWQ0qUX9NYsK8pdkHE7VUHXr+CwyC3nf6mV0S5FPsMS65innw==", + "dev": true, + "requires": { + "env-editor": "^1.0.0", + "execa": "^5.1.1", + "line-column-path": "^3.0.0", + "open": "^8.4.0" + }, + "dependencies": { + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + } + } + }, + "options-defaults": { + "version": "2.0.40", + "resolved": "https://registry.npmjs.org/options-defaults/-/options-defaults-2.0.40.tgz", + "integrity": "sha512-a0oW0AMaP/Uqk1gU7s3unE83wzs/MACy3wsCnNREn4wqp4KCcxRdulRjf0d2FeIxENbGJ4EBGtHTQ6J30XB6Cw==", + "dev": true + }, + "ora": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/ora/-/ora-6.1.2.tgz", + "integrity": "sha512-EJQ3NiP5Xo94wJXIzAyOtSb0QEIAUu7m8t6UZ9krbz0vAJqr92JpcK/lEXg91q6B9pEGqrykkd2EQplnifDSBw==", + "dev": true, + "requires": { + "bl": "^5.0.0", + "chalk": "^5.0.0", + "cli-cursor": "^4.0.0", + "cli-spinners": "^2.6.1", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^1.1.0", + "log-symbols": "^5.1.0", + "strip-ansi": "^7.0.1", + "wcwidth": "^1.0.1" + } + }, + "os-filter-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-2.0.0.tgz", + "integrity": "sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==", + "dev": true, + "requires": { + "arch": "^2.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true + }, + "ow": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/ow/-/ow-0.17.0.tgz", + "integrity": "sha512-i3keDzDQP5lWIe4oODyDFey1qVrq2hXKTuTH2VpqwpYtzPiKZt2ziRI4NBQmgW40AnV5Euz17OyWweCb+bNEQA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + } + } + }, + "p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "dev": true + }, + "p-event": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-1.3.0.tgz", + "integrity": "sha512-hV1zbA7gwqPVFcapfeATaNjQ3J0NuzorHPyG8GPL9g/Y/TplWVBVoCKCXL6Ej2zscrCEv195QNWJXuBH6XZuzA==", + "dev": true, + "requires": { + "p-timeout": "^1.1.1" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true + }, + "p-is-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg==", + "dev": true + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-map-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-1.0.0.tgz", + "integrity": "sha512-4k9LlvY6Bo/1FcIdV33wqZQES0Py+iKISU9Uc8p8AjWoZPnFKMpVIVD3s0EYn4jzLh1I+WeUZkJ0Yoa4Qfw3Kg==", + "dev": true, + "requires": { + "p-reduce": "^1.0.0" + } + }, + "p-pipe": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-4.0.0.tgz", + "integrity": "sha512-HkPfFklpZQPUKBFXzKFB6ihLriIHxnmuQdK9WmLDwe4hf2PdhhfWT/FJa+pc3bA1ywvKXtedxIRmd4Y7BTXE4w==", + "dev": true + }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha512-3Tx1T3oM1xO/Y8Gj0sWyE78EIJZ+t+aEmXUdvQgvGmSMri7aPTHoovbXEreWKkL5j21Er60XAWLTzKbAKYOujQ==", + "dev": true + }, + "p-timeout": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", + "integrity": "sha512-gb0ryzr+K2qFqFv6qi3khoeqMZF/+ajxQipEF6NteZVnvz9tzdsfAVj3lYtn1gAXvH5lfLwfxEII799gt/mRIA==", + "dev": true, + "requires": { + "p-finally": "^1.0.0" + } + }, + "parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "requires": { + "entities": "^4.4.0" + } + }, + "parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "dev": true, + "requires": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "peek-readable": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", + "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==", + "dev": true + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", "dev": true }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pngquant-bin": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/pngquant-bin/-/pngquant-bin-6.0.1.tgz", + "integrity": "sha512-Q3PUyolfktf+hYio6wsg3SanQzEU/v8aICg/WpzxXcuCMRb7H2Q81okfpcEztbMvw25ILjd3a87doj2N9kvbpQ==", + "dev": true, + "requires": { + "bin-build": "^3.0.0", + "bin-wrapper": "^4.0.1", + "execa": "^4.0.0" + }, + "dependencies": { + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + } + } + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "dev": true + }, + "prettier": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", + "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", + "dev": true + }, + "prism-svelte": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/prism-svelte/-/prism-svelte-0.5.0.tgz", + "integrity": "sha512-db91Bf3pRGKDPz1lAqLFSJXeW13mulUJxhycysFpfXV5MIK7RgWWK2E5aPAa71s8TCzQUXxF5JOV42/iOs6QkA==", + "dev": true + }, + "prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "property-information": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.2.0.tgz", + "integrity": "sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==", + "dev": true + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, "psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", "dev": true }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -761,6 +15536,246 @@ "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "dev": true }, + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dev": true, + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "dev": true, + "requires": { + "inherits": "~2.0.3" + } + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + } + } + }, + "react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dev": true, + "peer": true, + "requires": { + "loose-envify": "^1.1.0" + } + }, + "react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dev": true, + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==", + "dev": true + }, + "react-modal": { + "version": "3.16.1", + "resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.16.1.tgz", + "integrity": "sha512-VStHgI3BVcGo7OXczvnJN7yT2TWHJPDXZWyI/a0ssFNhGZWsPmB8cF0z33ewDXq4VfYMO1vXgiv/g8Nj9NDyWg==", + "dev": true, + "requires": { + "exenv": "^1.2.0", + "prop-types": "^15.7.2", + "react-lifecycles-compat": "^3.0.0", + "warning": "^4.0.3" + } + }, + "react-property": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/react-property/-/react-property-2.0.0.tgz", + "integrity": "sha512-kzmNjIgU32mO4mmH5+iUyrqlpFQhF8K2k7eZ4fdLSOPFrD1XgEuSBv9LDEgxRXTMBqMd8ppT0x6TIzqE5pdGdw==", + "dev": true + }, + "read-chunk": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-4.0.3.tgz", + "integrity": "sha512-wOYymxRWkxn3MlStSt7LxrMLRvynHKjzHVQPTCBbT29ViUwsT3EE09dE5iMDDGYQTL/s5TQZvBLuJTeZFeGQ4g==", + "dev": true, + "requires": { + "pify": "^5.0.0" + }, + "dependencies": { + "pify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "dev": true + } + } + }, + "readable-stream": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", + "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readable-web-to-node-stream": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", + "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", + "dev": true, + "requires": { + "readable-stream": "^3.6.0" + } + }, + "rehype-format": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/rehype-format/-/rehype-format-4.0.1.tgz", + "integrity": "sha512-HA92WeqFri00yiClrz54IIpM9no2DH9Mgy5aFmInNODoAYn+hN42a6oqJTIie2nj0HwFyV7JvOYx5YHBphN8mw==", + "dev": true, + "requires": { + "@types/hast": "^2.0.0", + "hast-util-embedded": "^2.0.0", + "hast-util-is-element": "^2.0.0", + "hast-util-phrasing": "^2.0.0", + "hast-util-whitespace": "^2.0.0", + "html-whitespace-sensitive-tag-names": "^2.0.0", + "rehype-minify-whitespace": "^5.0.0", + "unified": "^10.0.0", + "unist-util-visit-parents": "^5.0.0" + } + }, + "rehype-minify-whitespace": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/rehype-minify-whitespace/-/rehype-minify-whitespace-5.0.1.tgz", + "integrity": "sha512-PPp4lWJiBPlePI/dv1BeYktbwkfgXkrK59MUa+tYbMPgleod+4DvFK2PLU0O0O60/xuhHfiR9GUIUlXTU8sRIQ==", + "dev": true, + "requires": { + "@types/hast": "^2.0.0", + "hast-util-embedded": "^2.0.0", + "hast-util-is-element": "^2.0.0", + "hast-util-whitespace": "^2.0.0", + "unified": "^10.0.0", + "unist-util-is": "^5.0.0" + } + }, + "rehype-raw": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-6.1.1.tgz", + "integrity": "sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ==", + "dev": true, + "requires": { + "@types/hast": "^2.0.0", + "hast-util-raw": "^7.2.0", + "unified": "^10.0.0" + } + }, + "rehype-stringify": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-9.0.3.tgz", + "integrity": "sha512-kWiZ1bgyWlgOxpqD5HnxShKAdXtb2IUljn3hQAhySeak6IOQPPt6DeGnsIh4ixm7yKJWzm8TXFuC/lPfcWHJqw==", + "dev": true, + "requires": { + "@types/hast": "^2.0.0", + "hast-util-to-html": "^8.0.0", + "unified": "^10.0.0" + } + }, + "remark-gfm": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-3.0.1.tgz", + "integrity": "sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "mdast-util-gfm": "^2.0.0", + "micromark-extension-gfm": "^2.0.0", + "unified": "^10.0.0" + } + }, + "remark-parse": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.1.tgz", + "integrity": "sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "unified": "^10.0.0" + } + }, + "remark-rehype": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz", + "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==", + "dev": true, + "requires": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-to-hast": "^12.1.0", + "unified": "^10.0.0" + } + }, + "replace-ext": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz", + "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==", + "dev": true + }, "request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -789,18 +15804,321 @@ "uuid": "^3.3.2" } }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, + "responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "dev": true, + "requires": { + "lowercase-keys": "^3.0.0" + } + }, + "restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rxjs": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + }, + "sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "requires": { + "mri": "^1.1.0" + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true }, + "safe-stable-stringify": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.2.tgz", + "integrity": "sha512-gMxvPJYhP0O9n2pvcfYfIuYgbledAOJFcqRThtPRmjscaipiwcwPPKLytpVzMkG2HAN87Qmo2d4PtGiri1dSLA==", + "dev": true + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, + "sanitize-filename": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dev": true, + "requires": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dev": true, + "peer": true, + "requires": { + "loose-envify": "^1.1.0" + } + }, + "seek-bzip": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", + "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", + "dev": true, + "requires": { + "commander": "^2.8.1" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "semver-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz", + "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==", + "dev": true + }, + "semver-truncate": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz", + "integrity": "sha512-V1fGg9i4CL3qesB6U0L6XAm4xOJiHmt4QAacazumuasc03BvtFGIMCduv01JWQ69Nv+JST9TqhSCiJoxoY031w==", + "dev": true, + "requires": { + "semver": "^5.3.0" + } + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + }, + "dependencies": { + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true + } + } + }, + "sort-keys-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", + "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==", + "dev": true, + "requires": { + "sort-keys": "^1.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, "sshpk": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", @@ -818,6 +16136,732 @@ "tweetnacl": "~0.14.0" } }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "dev": true + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "stringify-entities": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", + "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", + "dev": true, + "requires": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + } + }, + "strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "strip-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", + "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "dev": true, + "requires": { + "is-natural-number": "^4.0.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-json-comments": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.0.tgz", + "integrity": "sha512-V1LGY4UUo0jgwC+ELQ2BNWfPa17TIuwBLg+j1AA/9RPzKINl1lhxVEu2r+ZTTO8aetIsUzE5Qj6LMSBkoGYKKw==", + "dev": true + }, + "strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.2" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + } + } + }, + "strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "dev": true + }, + "strtok3": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", + "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==", + "dev": true, + "requires": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^5.0.0" + } + }, + "style-to-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.3.tgz", + "integrity": "sha512-zKI5gN/zb7LS/Vm0eUwjmjrXWw8IMtyA8aPBJZdYiQTXj4+wQ3IucOLIOnF7zCHxvW8UhIGh/uZh/t9zEHXNTQ==", + "dev": true, + "requires": { + "style-to-object": "0.4.1" + } + }, + "style-to-object": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.1.tgz", + "integrity": "sha512-HFpbb5gr2ypci7Qw+IOhnP2zOU7e77b+rzM+wTzXzfi1PrtBCX0E7Pk4wL4iTLnhzZ+JgEGAhX81ebTg/aYjQw==", + "dev": true, + "requires": { + "inline-style-parser": "0.1.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "requires": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + } + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "tabtab": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tabtab/-/tabtab-3.0.2.tgz", + "integrity": "sha512-jANKmUe0sIQc/zTALTBy186PoM/k6aPrh3A7p6AaAfF6WPSbTx1JYeGIGH162btpH+mmVEXln+UxwViZHO2Jhg==", + "dev": true, + "requires": { + "debug": "^4.0.1", + "es6-promisify": "^6.0.0", + "inquirer": "^6.0.0", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "untildify": "^3.0.3" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "inquirer": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", + "dev": true + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "dev": true, + "requires": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + }, + "dependencies": { + "bl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", + "dev": true, + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", + "dev": true + }, + "tempfile": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", + "integrity": "sha512-ZOn6nJUgvgC09+doCEF3oB+r3ag7kUvlsXEGX069QRD60p+P3uP7XG9N2/at+EyIRGSN//ZY3LyEotA1YpmjuA==", + "dev": true, + "requires": { + "temp-dir": "^1.0.0", + "uuid": "^3.0.1" + } + }, + "tempy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.0.0.tgz", + "integrity": "sha512-B2I9X7+o2wOaW4r/CWMkpOO9mdiTRCxXNgob6iGvPmfPWgH/KyUD6Uy5crtWBxIBe3YrNZKR2lSzv1JJKWD4vA==", + "dev": true, + "requires": { + "is-stream": "^3.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^2.12.2", + "unique-string": "^3.0.0" + }, + "dependencies": { + "is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true + }, + "temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "dev": true + }, + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true + } + } + }, + "text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "token-types": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", + "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", + "dev": true, + "requires": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + } + }, "tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", @@ -828,6 +16872,65 @@ "punycode": "^2.1.1" } }, + "trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "dev": true + }, + "trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.2" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + } + } + }, + "triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==", + "dev": true + }, + "trough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", + "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", + "dev": true + }, + "truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", + "dev": true, + "requires": { + "utf8-byte-length": "^1.0.1" + } + }, + "ts-import": { + "version": "2.0.40", + "resolved": "https://registry.npmjs.org/ts-import/-/ts-import-2.0.40.tgz", + "integrity": "sha512-yTP9fSDaBL1LvcN7/taRHbcQoazk7cLrDOEPyIDUVKLNYTMhaDkvZhfUwp41iXe+GlAFL6l87ZoGABWZRdIfjg==", + "dev": true, + "requires": { + "options-defaults": "^2.0.39" + } + }, + "tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "dev": true + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -843,6 +16946,160 @@ "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", "dev": true }, + "type-fest": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.6.0.tgz", + "integrity": "sha512-RqTRtKTzvPpNdDUp1dVkKQRunlPITk4mXeqFlAZoJsS+fLRn8AdPK0TcQDumGayhU7fjlBfiBjsq3pe3rIfXZQ==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, + "unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dev": true, + "requires": { + "buffer": "^5.2.1", + "through": "^2.3.8" + }, + "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + } + } + }, + "unified": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", + "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" + }, + "dependencies": { + "is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true + } + } + }, + "unique-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "dev": true, + "requires": { + "crypto-random-string": "^4.0.0" + } + }, + "unist-builder": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-3.0.1.tgz", + "integrity": "sha512-gnpOw7DIpCA0vpr6NqdPvTWnlPTApCTRzr+38E6hCWx3rz/cjo83SsKIlS1Z+L5ttScQ2AwutNnb8+tAvpb6qQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0" + } + }, + "unist-util-generated": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz", + "integrity": "sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==", + "dev": true + }, + "unist-util-is": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.0.tgz", + "integrity": "sha512-Glt17jWwZeyqrFqOK0pF1Ded5U3yzJnFr8CG1GMjCWTp9zDo2p+cmD6pWbZU8AgM5WU3IzRv6+rBwhzsGh6hBQ==", + "dev": true + }, + "unist-util-position": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz", + "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0" + } + }, + "unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0" + } + }, + "unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + } + }, + "unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "untildify": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-3.0.3.tgz", + "integrity": "sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA==", + "dev": true + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -852,12 +17109,63 @@ "punycode": "^2.1.0" } }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "dev": true, + "requires": { + "prepend-http": "^2.0.0" + } + }, + "url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==", + "dev": true + }, + "utf8-byte-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", + "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true + }, "uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true }, + "uvu": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", + "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", + "dev": true, + "requires": { + "dequal": "^2.0.0", + "diff": "^5.0.0", + "kleur": "^4.0.3", + "sade": "^1.7.3" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true + }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -868,6 +17176,208 @@ "core-util-is": "1.0.2", "extsprintf": "^1.2.0" } + }, + "vfile": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", + "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + } + }, + "vfile-location": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.1.0.tgz", + "integrity": "sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "vfile": "^5.0.0" + } + }, + "vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + } + }, + "warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "dev": true + }, + "web-specs": { + "version": "2.50.0", + "resolved": "https://registry.npmjs.org/web-specs/-/web-specs-2.50.0.tgz", + "integrity": "sha512-IlzosEoCs2Kn4w0QKC6xrRy9Ca7HwpdoC54ilzbUGdaeyyXFuSuszZIkChM0pO8YSX4swxFfBoixRZJnCxTYDQ==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "winston": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.2.1.tgz", + "integrity": "sha512-zU6vgnS9dAWCEKg/QYigd6cgMVVNwyTzKs81XZtTFuRwJOcDdBg7AU0mXVyNbs7O5RH2zdv+BdNZUlx7mXPuOw==", + "dev": true, + "requires": { + "async": "^2.6.1", + "diagnostics": "^1.1.1", + "is-stream": "^1.1.0", + "logform": "^2.1.1", + "one-time": "0.0.4", + "readable-stream": "^3.1.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.3.0" + }, + "dependencies": { + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + } + } + }, + "winston-transport": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", + "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "dev": true, + "requires": { + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + }, + "yaml": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", + "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", + "dev": true + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "dev": true } } } diff --git a/packages/autocomplete-html/package.json b/packages/autocomplete-html/package.json index 5a0eafd85..34cc7f012 100644 --- a/packages/autocomplete-html/package.json +++ b/packages/autocomplete-html/package.json @@ -16,6 +16,11 @@ } }, "devDependencies": { - "request": "^2.53.0" + "@webref/elements": "^2.1.0", + "chrome-devtools-frontend": "^1.0.1070764", + "content": "github:mdn/content", + "esm": "^3.2.25", + "request": "^2.53.0", + "ts-import": "^2.0.40" } } diff --git a/packages/autocomplete-html/update2.js b/packages/autocomplete-html/update2.js new file mode 100644 index 000000000..5555527ed --- /dev/null +++ b/packages/autocomplete-html/update2.js @@ -0,0 +1,127 @@ +/** + This file will manage the updating of `autocomplete-html` `completions.json` + We will partially utilize `@webref/elements` .listAll() function that returns + a full list of HTML Elements along with a defined `interface`. + To be able to use this `interface` in any meaningful way, we will utilize + the dataset of Attributes that apply to each `interface` from Chromiums DevTools + resource 'https://github.com/ChromeDevTools/devtools-frontend' + Finally from here we will utilize https://github.com/mdn/content to parse + the Markdown docs of MDN's website to retreive descriptions for each element. + ============================================================================== + ============================================================================== + Now for a summary of our `completions.json` file we aim to generate. + There are two top level elements, `tags` and `attributes`, both objects. + Within `tags` we expect the following: + "tags": { + "a": { + "attributes": [ "href", "hreflang", "media", "rel", "target", "type" ], + "description": "....." + } + }; + + When an entry contains no `attributes` there is no empty array, the element + simply doesn't exist. + + The `attributes` object contains keys of different elements that themselves + are objects that can contain several valid keys. + - global: Seems to be used exclusively for Global Attributes. Is a boolean + which when false, the key does not appear. + - type: A ?type? for the attribute. It's meaning is not immediately known. + Nor a way to reliabley programatically collect it. Some discovered values: + * cssStyle: Exclusively used for `class` attribute + * boolean: Attributes that only accept `true` or `false` + * flag: For attributes that don't require or accept values. eg autoplay + * cssId: Exclusively used for the `id` attribute + * color: Exclusively used for the `bgcolor` attribute + * style: Exclusively used for the `style` attribute + - description: A text description of the attribute + - attribOption: A string array of valid values that can exist within the attribute. + Such as the case with `rel` where only so many valid options exist. + ============================================================================== + ============================================================================== + A quick check in for the structure of `@webref/elements` `listAll()` return. + This will return an object, where each top level key is a HTML spec name. + Then within each will be some information on the spec, and `elements` an array + of objects that will contain the `name` of our element, and it's interface name. + { + "css-masking-1": { + "spec": {}, + "elements": [ + { "name": "clipPath", "interface": "SVGClipPathElement" }, + { "name": "mask", "interface": "SVGMaskElement" } + ] + } + }; + + The `interface` here should match a return that we can receive from DevTools data. + ============================================================================== + ============================================================================== + DevTools data then, is an object where the top level key is that of an `interface` + This interface can be retreived from `@webref/elements` or may be declared + internally. + Then within each `interface` object several possible values: + - inheritance: The value is a string. 'An inherited Type.' An additional + applicable interface. + - includes: An array of strings. 'A set of Types to also include properties from.' + Additional interfaces to includes properties of. + - props: An object list of valid properties for the interface. Each prop + iteself may contain values or may be empty. Possible values: + * global: Only present when `global: true`, otherwise a global + Attribute value. + * specs: A number. Refers to `SPECS` exported from the same DevTools + source code. Where values are `html`, `dom`, `cssom`. + We likely will not find any use here. + To view the structure of this file visit: + https://github.com/ChromeDevTools/devtools-frontend/blob/main/front_end/models/javascript_metadata/DOMPinnedProperties.ts + ============================================================================== + ============================================================================== + Finally with the topics covered above we are able to collect all the data needed. + The only value that is not being retreived or covered here is: + - `type`: The type defined within our `completions` attributes. Now the global + attribute could be retreived by looking for the value from the DevTools data + or could be known that when we find MDNs documentation for it, the global + attribute docs reside in a different folder than the rest of the docs. But + for all other types we may need to keep a manual list of where it applies. + Most types only apply to a single attribute so would be simple, but + `boolean` and `flag` types may have to be manually maintained. + - `attribOption`: The valid values to pass an attribute currently + does not have any consistent method to retreive valid values. + Ideally this can be found within the `@webref` data, or alternatively may be + collected from MDNs `web/html/attributes` documents. But may prove to be difficult + to reliably parse. + + A note is that further research shows that MDNs attributes documentation cannot + be created the same way as one would expect. That is by the folder names + within the `web/html/attributes` folder. Instead we may have to parse + a table of values from `attributes/index.md` as that contains many items and links + to unwritten pages. + */ + +const chromiumElementsShim = require("./chromium-elements-shim.js"); +const elements = require("@webref/elements"); +const fs = require("fs"); + +async function update() { + const chromiumElements = await chromiumElementsShim.bootstrap(); + const htmlElementsRaw = await elements.listAll(); + + const fullArrayHtmlElements = buildHtmlElementsArray(htmlElementsRaw); + + +} + +function buildHtmlElementsArray(elements) { + let elementArray = []; + + for (const spec in elements) { + if (Array.isArray(elements[spec].elements)) { + for (const ele of elements[spec].elements) { + elementArray.push(ele); + } + } + } + + return elementArray; +} + +update(); From f1d0bacd9388197fb08ae299d53c82af6142c517 Mon Sep 17 00:00:00 2001 From: confused-Techie Date: Sun, 26 Feb 2023 13:11:28 -0800 Subject: [PATCH 02/85] Ability to resolve interface tags --- packages/autocomplete-html/update2.js | 63 +++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/packages/autocomplete-html/update2.js b/packages/autocomplete-html/update2.js index 5555527ed..257f0c3a3 100644 --- a/packages/autocomplete-html/update2.js +++ b/packages/autocomplete-html/update2.js @@ -101,12 +101,17 @@ const chromiumElementsShim = require("./chromium-elements-shim.js"); const elements = require("@webref/elements"); const fs = require("fs"); +let GLOBAL_ATTRIBUTES = []; + async function update() { const chromiumElements = await chromiumElementsShim.bootstrap(); const htmlElementsRaw = await elements.listAll(); const fullArrayHtmlElements = buildHtmlElementsArray(htmlElementsRaw); + const tagsWithAttrs = matchElementInterface(fullArrayHtmlElements, chromiumElements.DOMPinnedProperties); + // tagsWithAttrs gives us an already built object for tags. Without description. + } @@ -124,4 +129,62 @@ function buildHtmlElementsArray(elements) { return elementArray; } +function matchElementInterface(elements, domProperties) { + let outElements = {}; + + for (const ele of elements) { + let tags = resolveElementInterfaceAttrs(ele, domProperties); + + outElements[ele.name] = {}; + + if (tags.length > 0) { + outElements[ele.name].attributes = tags; + } + + } + + return outElements; +} + +function resolveElementInterfaceAttrs(element, domProperties) { + let attrs = []; + let interfaceArray = []; + + if (typeof element.interface === "string") { + interfaceArray.push(element.interface); + } + + // Now to loop through every interface and resolve the tags within. + while (interfaceArray.length > 0) { + let interface = interfaceArray[0]; + console.log(`Searching domProperties for ${interface}`); + if (domProperties[interface]) { + // First add all immediate props + for (const prop in domProperties[interface].props) { + attrs.push(prop); + + // Then add any needed values to our global attributes + if (domProperties[interface].props[prop].global && !GLOBAL_ATTRIBUTES.includes(prop)) { + GLOBAL_ATTRIBUTES.push(prop); + } + } + // Now resolve any additional interfaces, by adding them to our existing array + if (typeof domProperties[interface].inheritance === "string") { + interfaceArray.push(domProperties[interface].inheritance); + } + if (Array.isArray(domProperties[interface].includes)) { + interfaceArray = interfaceArray.concat(domProperties[interface].includes); + } + } + // Now we have done everything needed for this one interface to be resolved, + // so we can just remove the first element of the array and let the while + // loop continue + interfaceArray.shift(); + } + + // Return our final list of attributes + return attrs; +} + + update(); From d3ccc0f68b816d56efb8ccccc4ea983b8dce3cb2 Mon Sep 17 00:00:00 2001 From: confused-Techie Date: Sun, 26 Feb 2023 15:01:53 -0800 Subject: [PATCH 03/85] Ability to get description of Elements from MDN --- packages/autocomplete-html/update2.js | 77 +++++++++++++++++++++++++-- 1 file changed, 74 insertions(+), 3 deletions(-) diff --git a/packages/autocomplete-html/update2.js b/packages/autocomplete-html/update2.js index 257f0c3a3..8f0f8c98b 100644 --- a/packages/autocomplete-html/update2.js +++ b/packages/autocomplete-html/update2.js @@ -110,8 +110,9 @@ async function update() { const fullArrayHtmlElements = buildHtmlElementsArray(htmlElementsRaw); const tagsWithAttrs = matchElementInterface(fullArrayHtmlElements, chromiumElements.DOMPinnedProperties); - // tagsWithAttrs gives us an already built object for tags. Without description. - + // tagsWithAttrs gives us an already built object for tags. Including their description. + fs.writeFileSync("./tmp-working.json", JSON.stringify(tagsWithAttrs, null, 2)); + console.log(GLOBAL_ATTRIBUTES); } @@ -141,6 +142,9 @@ function matchElementInterface(elements, domProperties) { outElements[ele.name].attributes = tags; } + let desc = getElementDescription(ele.name); + outElements[ele.name].description = desc; + } return outElements; @@ -157,7 +161,7 @@ function resolveElementInterfaceAttrs(element, domProperties) { // Now to loop through every interface and resolve the tags within. while (interfaceArray.length > 0) { let interface = interfaceArray[0]; - console.log(`Searching domProperties for ${interface}`); + if (domProperties[interface]) { // First add all immediate props for (const prop in domProperties[interface].props) { @@ -186,5 +190,72 @@ function resolveElementInterfaceAttrs(element, domProperties) { return attrs; } +function getElementDescription(element) { + // We will gather a description by checking if there's a document written + // on MDN for our Element and then extract a summary from there. + + // Some elements are similar enough they exist in a single folder of a different + // name. So we will manually intervein in those cases. + + const substitueElements = { + "h1": "heading_elements", + "h2": "heading_elements", + "h3": "heading_elements", + "h4": "heading_elements", + "h5": "heading_elements", + "h6": "heading_elements" + }; + + if (substitueElements[element]) { + element = substitueElements[element]; + } + + let file; + + // First lets find the file, but when not initially found, we will continue + // to search valid locations. Since MDN has content of valid tags seperated + // by essentially the spec they exist in. + if (fs.existsSync(`./node_modules/content/files/en-us/web/html/element/${element}/index.md`)) { + file = fs.readFileSync(`./node_modules/content/files/en-us/web/html/element/${element}/index.md`, { encoding: "utf8" }); + } else if (fs.existsSync(`./node_modules/content/files/en-us/web/svg/element/${element}/index.md`)) { + file = fs.readFileSync(`./node_modules/content/files/en-us/web/svg/element/${element}/index.md`, { encoding: "utf8" }); + } else if (fs.existsSync(`./node_modules/content/files/en-us/web/mathml/element/${element}/index.md`)) { + file = fs.readFileSync(`./node_modules/content/files/en-us/web/mathml/element/${element}/index.md`, { encoding: "utf8" }); + } + + if (typeof file === "string") { + // Now lets parse the file, as long as it was assigned at some point in + // the above checks. + + // This logic is largely borrowed from `autocomplete-css` update.js Which does the same thing. + let breaks = file.split("---"); + + // The first two breaks should be the yaml metadata block + let data = breaks[2].replace(/\{\{\S+\}\}\{\{\S+\}\}/gm, "") + .replace(/\{\{HTMLSidebar\}\}/gm, "") // Used when within `web/html` + .replace(/\{\{SVGRef\}\}/gm, "") // used when within `web/svg` + .replace(/\{\{MathMLRef\}\}/gm, ""); // used when within `web/mathml` + + let summaryRaw = data.split("\n"); + // In case the first few lines is an empty line break + for (let i = 0; i < summaryRaw.length; i++) { + if (summaryRaw[i].length > 1) { + return summaryRaw[i] + .replace(/\{\{\S+\("(\S+)"\)\}\}/g, '$1') + .replace(/\*/g, "") + .replace(/\`/g, "") + .replace(/\{/g, "") + .replace(/\}/g, "") + .replace(/\"/g, "") + .replace(/\[([A-Za-z0-9-_* ]+)\]\(\S+\)/g, '$1'); + } + } + } else { + // No proper file was ever found. Return an empty description + return ""; + } + +} + update(); From 2007e9c8e32e68939017f157ea6432681dabb0fe Mon Sep 17 00:00:00 2001 From: confused-Techie Date: Sun, 26 Feb 2023 15:28:54 -0800 Subject: [PATCH 04/85] Final implementation, and final cleanup --- packages/autocomplete-html/README.md | 2 +- packages/autocomplete-html/completions.json | 26100 +++++++++++++++- .../fetch-global-attribute-docs.js | 113 - packages/autocomplete-html/fetch-tag-docs.js | 120 - packages/autocomplete-html/package-lock.json | 621 - packages/autocomplete-html/package.json | 4 +- packages/autocomplete-html/update.js | 73 - .../{ => update}/chromium-elements-shim.js | 0 .../{ => update}/chromium-elements-shim.mjs | 0 .../update/curated-attributes.json | 1217 + .../{update2.js => update/update.js} | 32 +- 11 files changed, 26789 insertions(+), 1493 deletions(-) delete mode 100644 packages/autocomplete-html/fetch-global-attribute-docs.js delete mode 100644 packages/autocomplete-html/fetch-tag-docs.js delete mode 100644 packages/autocomplete-html/update.js rename packages/autocomplete-html/{ => update}/chromium-elements-shim.js (100%) rename packages/autocomplete-html/{ => update}/chromium-elements-shim.mjs (100%) create mode 100644 packages/autocomplete-html/update/curated-attributes.json rename packages/autocomplete-html/{update2.js => update/update.js} (86%) diff --git a/packages/autocomplete-html/README.md b/packages/autocomplete-html/README.md index a0ec28f69..25e865edb 100644 --- a/packages/autocomplete-html/README.md +++ b/packages/autocomplete-html/README.md @@ -7,4 +7,4 @@ Descriptions are powered by [MDN](https://developer.mozilla.org). ![html-completions](https://cloud.githubusercontent.com/assets/2766036/25668197/ffd24928-2ff3-11e7-85fc-b327ac2287e6.gif) -You can update the prebuilt list of tags and attributes names and values by running the `update.js` file at the root of the repository and then checking-in the changed `completions.json` file. +You can update the prebuilt list of tags and attributes names and values by running `npm run update` at the root of the package and then checking-in the changed `completions.json` file. diff --git a/packages/autocomplete-html/completions.json b/packages/autocomplete-html/completions.json index e576f825c..f4caf7c31 100644 --- a/packages/autocomplete-html/completions.json +++ b/packages/autocomplete-html/completions.json @@ -1,702 +1,25678 @@ { "tags": { - "a": { + "clipPath": { + "description": "The SVG element defines a clipping path, to be used by the clip-path property." + }, + "mask": { + "description": "The element defines an alpha mask for compositing the current object into the background. A mask is used/referenced using the mask property." + }, + "filter": { + "description": "The SVG element defines a custom filter effect by grouping atomic filter primitives. It is never rendered itself, but must be used by the filter attribute on SVG elements, or the filter CSS property for SVG/HTML elements." + }, + "feBlend": { + "description": "The SVG filter primitive composes two objects together ruled by a certain blending mode. This is similar to what is known from image editing software when blending two layers. The mode is defined by the mode attribute." + }, + "feColorMatrix": { + "description": "The SVG filter element changes colors based on a transformation matrix. Every pixel's color value [R,G,B,A] is matrix multiplied by a 5 by 5 color matrix to create new color [R',G',B',A']." + }, + "feComponentTransfer": { + "description": "The SVG filter primitive performs color-component-wise remapping of data for each pixel. It allows operations like brightness adjustment, contrast adjustment, color balance or thresholding." + }, + "feFuncR": { + "description": "The SVG filter primitive defines the transfer function for the red component of the input graphic of its parent feComponentTransfer element." + }, + "feFuncG": { + "description": "The SVG filter primitive defines the transfer function for the green component of the input graphic of its parent feComponentTransfer element." + }, + "feFuncB": { + "description": "The SVG filter primitive defines the transfer function for the blue component of the input graphic of its parent feComponentTransfer element." + }, + "feFuncA": { + "description": "The SVG filter primitive defines the transfer function for the alpha component of the input graphic of its parent feComponentTransfer element." + }, + "feComposite": { + "description": "The SVG filter primitive performs the combination of two input images pixel-wise in image space using one of the Porter-Duff compositing operations: over, in, atop, out, xor, lighter, or arithmetic." + }, + "feConvolveMatrix": { + "description": "The SVG filter primitive applies a matrix convolution filter effect. A convolution combines pixels in the input image with neighboring pixels to produce a resulting image. A wide variety of imaging operations can be achieved through convolutions, including blurring, edge detection, sharpening, embossing and beveling." + }, + "feDiffuseLighting": { + "description": "The SVG filter primitive lights an image using the alpha channel as a bump map. The resulting image, which is an RGBA opaque image, depends on the light color, light position and surface geometry of the input bump map." + }, + "feDisplacementMap": { + "description": "The SVG filter primitive uses the pixel values from the image from in2 to spatially displace the image from in." + }, + "feDropShadow": { + "description": "The SVG filter primitive creates a drop shadow of the input image. It can only be used inside a SVGElement('filter') element." + }, + "feFlood": { + "description": "The SVG filter primitive fills the filter subregion with the color and opacity defined by flood-color and flood-opacity." + }, + "feGaussianBlur": { + "description": "The SVG filter primitive blurs the input image by the amount specified in stdDeviation, which defines the bell-curve." + }, + "feImage": { + "description": "The SVG filter primitive fetches image data from an external source and provides the pixel data as output (meaning if the external source is an SVG image, it is rasterized.)" + }, + "feMerge": { + "description": "The SVG element allows filter effects to be applied concurrently instead of sequentially. This is achieved by other filters storing their output via the SVGAttr(result) attribute and then accessing it in a SVGElement(feMergeNode) child." + }, + "feMergeNode": { + "description": "The feMergeNode takes the result of another filter to be processed by its parent SVGElement(feMerge) ." + }, + "feMorphology": { + "description": "The SVG filter primitive is used to erode or dilate the input image. Its usefulness lies especially in fattening or thinning effects." + }, + "feOffset": { + "description": "The SVG filter primitive allows to offset the input image. The input image as a whole is offset by the values specified in the dx and dy attributes." + }, + "feSpecularLighting": { + "description": "The SVG filter primitive lights a source graphic using the alpha channel as a bump map. The resulting image is an RGBA image based on the light color. The lighting calculation follows the standard specular component of the Phong lighting model. The resulting image depends on the light color, light position and surface geometry of the input bump map. The result of the lighting calculation is added. The filter primitive assumes that the viewer is at infinity in the z direction." + }, + "feTile": { + "description": "The SVG filter primitive allows to fill a target rectangle with a repeated, tiled pattern of an input image. The effect is similar to the one of a pattern." + }, + "feTurbulence": { + "description": "The SVG filter primitive creates an image using the Perlin turbulence function. It allows the synthesis of artificial textures like clouds or marble. The resulting image will fill the entire filter primitive subregion." + }, + "feDistantLight": { + "description": "The filter primitive defines a distant light source that can be used within a lighting filter primitive: feDiffuseLighting or feSpecularLighting." + }, + "fePointLight": { + "description": "The filter primitive defines a light source which allows to create a point light effect. It that can be used within a lighting filter primitive: feDiffuseLighting or feSpecularLighting." + }, + "feSpotLight": { + "description": "The SVG filter primitive defines a light source that can be used to create a spotlight effect." + }, + "html": { "attributes": [ - "href", - "hreflang", - "media", - "rel", - "target", - "type" + "version", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" ], - "description": "Creates a hyperlink to other web pages, files, locations within the same page, email addresses, or any other URL." + "description": "The HTML element represents the root (top-level element) of an HTML document, so it is also referred to as the _root element_. All other elements must be descendants of this element." }, - "abbr": { - "description": "Represents an abbreviation and optionally provides a full description for it." - }, - "address": { - "description": "Indicates that the enclosed HTML provides contact information for a person or people, or for an organization." - }, - "area": { + "head": { "attributes": [ - "alt", - "coords", - "href", - "hreflang", - "media", - "rel", - "shape", - "target", - "type" + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" ], - "description": "Defines a hot-spot region on an image, and optionally associates it with a hypertext link." + "description": "The HTML element contains machine-readable information (metadata) about the document, like its title, scripts, and style sheets." }, - "article": { - "description": "Represents a self-contained composition in a document, page, application, or site, which is intended to be independently distributable or reusable (e." - }, - "aside": { - "description": "Represents a portion of a document whose content is only indirectly related to the document's main content." - }, - "audio": { - "attributes": [ - "autoplay", - "controls", - "loop", - "mediagroup", - "muted", - "preload", - "src" - ], - "description": "Used to embed sound content in documents." - }, - "b": { - "description": "Represents a span of text stylistically different from normal text, without conveying any special importance or relevance, and that is typically rendered in boldface." + "title": { + "description": "The HTML element defines the document's title that is shown in a glossary(Browser, browser)'s title bar or a page's tab. It only contains text; tags within the element are ignored." }, "base": { "attributes": [ "href", - "target" + "target", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" ], - "description": "Specifies the base URL to use for all relative URLs contained within a document." + "description": "The <base> HTML element specifies the base URL to use for all _relative_ URLs in a document. There can be only one <base> element in a document." }, - "bdi": { - "description": "Isolates a span of text that might be formatted in a different direction from other text outside it." - }, - "bdo": { - "description": "Used to override the current directionality of text." - }, - "big": { - "description": "The big element is obsolete. Avoid using it and update existing code if possible." - }, - "blockquote": { + "link": { "attributes": [ - "cite" + "href", + "crossOrigin", + "rel", + "as", + "relList", + "media", + "integrity", + "hreflang", + "type", + "sizes", + "imageSrcset", + "imageSizes", + "referrerPolicy", + "blocking", + "disabled", + "charset", + "rev", + "target", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "sheet", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" ], - "description": "Indicates that the enclosed text is an extended quotation." + "description": "The <link> HTML element specifies relationships between the current document and an external resource." + }, + "meta": { + "attributes": [ + "name", + "httpEquiv", + "content", + "media", + "scheme", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <meta> HTML element represents Metadata,metadata that cannot be represented by other HTML meta-related elements, like base, link, script, style or title." + }, + "style": { + "description": "The <style> HTML element contains style information for a document, or part of a document. It contains CSS, which is applied to the contents of the document containing the <style> element." }, "body": { "attributes": [ + "text", + "link", + "vLink", + "aLink", + "bgColor", + "background", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", "onafterprint", "onbeforeprint", "onbeforeunload", "onhashchange", + "onlanguagechange", "onmessage", + "onmessageerror", "onoffline", "ononline", "onpagehide", "onpageshow", "onpopstate", - "onredo", - "onresize", + "onrejectionhandled", "onstorage", - "onundo", - "onunload" - ], - "description": "Represents the content of an HTML document." - }, - "br": { - "description": "Produces a line break in text (carriage-return)." - }, - "button": { - "attributes": [ + "onunhandledrejection", + "onunload", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", "autofocus", - "disabled", - "form", - "formaction", - "formenctype", - "formmethod", - "formnovalidate", - "formtarget", - "name", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <body> HTML element represents the content of an HTML document. There can be only one <body> element in a document." + }, + "article": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <article> HTML element represents a self-contained composition in a document, page, application, or site, which is intended to be independently distributable or reusable (e.g., in syndication). Examples include: a forum post, a magazine or newspaper article, or a blog entry, a product card, a user-submitted comment, an interactive widget or gadget, or any other independent item of content." + }, + "section": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <section> HTML element represents a generic standalone section of a document, which doesn't have a more specific semantic element to represent it. Sections should always have a heading, with very few exceptions." + }, + "nav": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <nav> HTML element represents a section of a page whose purpose is to provide navigation links, either within the current document or to other documents. Common examples of navigation sections are menus, tables of contents, and indexes." + }, + "aside": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <aside> HTML element represents a portion of a document whose content is only indirectly related to the document's main content. Asides are frequently presented as sidebars or call-out boxes." + }, + "h1": { + "attributes": [ + "align", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <h1> to <h6> HTML elements represent six levels of section headings. <h1> is the highest section level and <h6> is the lowest." + }, + "h2": { + "attributes": [ + "align", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <h1> to <h6> HTML elements represent six levels of section headings. <h1> is the highest section level and <h6> is the lowest." + }, + "h3": { + "attributes": [ + "align", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <h1> to <h6> HTML elements represent six levels of section headings. <h1> is the highest section level and <h6> is the lowest." + }, + "h4": { + "attributes": [ + "align", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <h1> to <h6> HTML elements represent six levels of section headings. <h1> is the highest section level and <h6> is the lowest." + }, + "h5": { + "attributes": [ + "align", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <h1> to <h6> HTML elements represent six levels of section headings. <h1> is the highest section level and <h6> is the lowest." + }, + "h6": { + "attributes": [ + "align", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <h1> to <h6> HTML elements represent six levels of section headings. <h1> is the highest section level and <h6> is the lowest." + }, + "hgroup": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <hgroup> HTML element represents a heading and related content. It groups a single [<h1>–<h6>](/en-US/docs/Web/HTML/Element/Heading_Elements) element with one or more [<p>](/en-US/docs/Web/HTML/Element/p)." + }, + "header": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <header> HTML element represents introductory content, typically a group of introductory or navigational aids. It may contain some heading elements but also a logo, a search form, an author name, and other elements." + }, + "footer": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <footer> HTML element represents a footer for its nearest ancestor sectioning content or sectioning root element. A <footer> typically contains information about the author of the section, copyright data or links to related documents." + }, + "address": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <address> HTML element indicates that the enclosed HTML provides contact information for a person or people, or for an organization." + }, + "p": { + "attributes": [ + "align", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <p> HTML element represents a paragraph. Paragraphs are usually represented in visual media as blocks of text separated from adjacent blocks by blank lines and/or first-line indentation, but HTML paragraphs can be any structural grouping of related content, such as images or form fields." + }, + "hr": { + "attributes": [ + "align", + "color", + "noShade", + "size", + "width", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <hr> HTML element represents a thematic break between paragraph-level elements: for example, a change of scene in a story, or a shift of topic within a section." + }, + "pre": { + "attributes": [ + "width", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <pre> HTML element represents preformatted text which is to be presented exactly as written in the HTML file. The text is typically rendered using a non-proportional, or monospaced, font. Whitespace inside this element is displayed as written." + }, + "blockquote": { + "attributes": [ + "cite", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <blockquote> HTML element indicates that the enclosed text is an extended quotation. Usually, this is rendered visually by indentation (see Notes for how to change it). A URL for the source of the quotation may be given using the cite attribute, while a text representation of the source can be given using the cite element." + }, + "ol": { + "attributes": [ + "reversed", + "start", "type", - "value" + "compact", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" ], - "description": "Represents a clickable button, which can be used in forms, or anywhere in a document that needs simple, standard button functionality." + "description": "The <ol> HTML element represents an ordered list of items — typically rendered as a numbered list." }, - "canvas": { + "ul": { "attributes": [ - "height", - "width" + "compact", + "type", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" ], - "description": "Use the HTML canvas element with either the canvas scripting API or the WebGL API to draw graphics and animations." + "description": "The <ul> HTML element represents an unordered list of items, typically rendered as a bulleted list." }, - "caption": { - "description": "Represents the title of a table." - }, - "cite": { - "description": "Represents a reference to a creative work." - }, - "code": { - "description": "Displays its contents styled in a fashion intended to indicate that the text is a short fragment of computer code." - }, - "col": { + "menu": { "attributes": [ - "span" + "compact", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" ], - "description": "Defines a column within a table and is used for defining common semantics on all common cells." + "description": "The <menu> HTML element is described in the HTML specification as a semantic alternative to ul, but treated by browsers (and exposed through the accessibility tree) as no different than ul. It represents an unordered list of items (which are represented by li elements)." }, - "colgroup": { + "li": { "attributes": [ - "span" + "value", + "type", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" ], - "description": "Defines a group of columns within a table." + "description": "The <li> HTML element is used to represent an item in a list. It must be contained in a parent element: an ordered list (ol), an unordered list (ul), or a menu (menu). In menus and unordered lists, list items are usually displayed using bullet points. In ordered lists, they are usually displayed with an ascending counter on the left, such as a number or letter." }, - "command": { + "dl": { "attributes": [ - "checked", - "disabled", - "icon", - "label", - "radiogroup", - "type" + "compact", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" ], - "description": "The command element is obsolete. Avoid using it and update existing code if possible." + "description": "The <dl> HTML element represents a description list. The element encloses a list of groups of terms (specified using the dt element) and descriptions (provided by dd elements). Common uses for this element are to implement a glossary or to display metadata (a list of key-value pairs)." }, - "datalist": { - "description": "Contains a set of option elements that represent the values available for other controls." + "dt": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <dt> HTML element specifies a term in a description or definition list, and as such must be used inside a dl element. It is usually followed by a dd element; however, multiple <dt> elements in a row indicate several terms that are all defined by the immediate next dd element." }, "dd": { - "description": "Provides the details about or the definition of the preceding term (dt) in a description list (dl)." + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <dd> HTML element provides the description, definition, or value for the preceding term (dt) in a description list (dl)." + }, + "figure": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <figure> HTML element represents self-contained content, potentially with an optional caption, which is specified using the figcaption element. The figure, its caption, and its contents are referenced as a single unit." + }, + "figcaption": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <figcaption> HTML element represents a caption or legend describing the rest of the contents of its parent figure element." + }, + "main": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <main> HTML element represents the dominant content of the body of a document. The main content area consists of content that is directly related to or expands upon the central topic of a document, or the central functionality of an application." + }, + "div": { + "attributes": [ + "align", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <div> HTML element is the generic container for flow content. It has no effect on the content or layout until styled in some way using CSS (e.g. styling is directly applied to it, or some kind of layout model like Flexbox is applied to its parent element)." + }, + "a": { + "description": "The <a> HTML element (or _anchor_ element), with its href attribute, creates a hyperlink to web pages, files, email addresses, locations in the same page, or anything else a URL can address." + }, + "em": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <em> HTML element marks text that has stress emphasis. The <em> element can be nested, with each level of nesting indicating a greater degree of emphasis." + }, + "strong": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <strong> HTML element indicates that its contents have strong importance, seriousness, or urgency. Browsers typically render the contents in bold type." + }, + "small": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <small> HTML element represents side-comments and small print, like copyright and legal text, independent of its styled presentation. By default, it renders text within it one font-size smaller, such as from small to x-small." + }, + "s": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <s> HTML element renders text with a strikethrough, or a line through it. Use the <s> element to represent things that are no longer relevant or no longer accurate. However, <s> is not appropriate when indicating document edits; for that, use the del and ins elements, as appropriate." + }, + "cite": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <cite> HTML element is used to mark up the title of a cited creative work. The reference may be in an abbreviated form according to context-appropriate conventions related to citation metadata." + }, + "q": { + "attributes": [ + "cite", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <q> HTML element indicates that the enclosed text is a short inline quotation. Most modern browsers implement this by surrounding the text in quotation marks. This element is intended for short quotations that don't require paragraph breaks; for long quotations use the blockquote element." + }, + "dfn": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <dfn> HTML element is used to indicate the term being defined within the context of a definition phrase or sentence. The ancestor p element, the dd pairing, or the nearest section ancestor of the <dfn> element, is considered to be the definition of the term." + }, + "abbr": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <abbr> HTML element represents an abbreviation or acronym." + }, + "ruby": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <ruby> HTML element represents small annotations that are rendered above, below, or next to base text, usually used for showing the pronunciation of East Asian characters. It can also be used for annotating other kinds of text, but this usage is less common." + }, + "rt": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <rt> HTML element specifies the ruby text component of a ruby annotation, which is used to provide pronunciation, translation, or transliteration information for East Asian typography. The <rt> element must always be contained within a ruby element." + }, + "rp": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <rp> HTML element is used to provide fall-back parentheses for browsers that do not support display of ruby annotations using the HTMLElement(ruby) element. One <rp> element should enclose each of the opening and closing parentheses that wrap the rt element that contains the annotation's text." + }, + "data": { + "attributes": [ + "value", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <data> HTML element links a given piece of content with a machine-readable translation. If the content is time- or date-related, the time element must be used." + }, + "time": { + "attributes": [ + "dateTime", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <time> HTML element represents a specific period in time. It may include the datetime attribute to translate dates into machine-readable format, allowing for better search engine results or custom features such as reminders." + }, + "code": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <code> HTML element displays its contents styled in a fashion intended to indicate that the text is a short fragment of computer code. By default, the content text is displayed using the Glossary(user agent, user agent's) default monospace font." + }, + "var": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <var> HTML element represents the name of a variable in a mathematical expression or a programming context. It's typically presented using an italicized version of the current typeface, although that behavior is browser-dependent." + }, + "samp": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <samp> HTML element is used to enclose inline text which represents sample (or quoted) output from a computer program. Its contents are typically rendered using the browser's default monospaced font (such as Courier or Lucida Console)." + }, + "kbd": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <kbd> HTML element represents a span of inline text denoting textual user input from a keyboard, voice input, or any other text entry device. By convention, the Glossary(user agent) defaults to rendering the contents of a <kbd> element using its default monospace font, although this is not mandated by the HTML standard." + }, + "sub": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <sub> HTML element specifies inline text which should be displayed as subscript for solely typographical reasons. Subscripts are typically rendered with a lowered baseline using smaller text." + }, + "sup": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <sup> HTML element specifies inline text which is to be displayed as superscript for solely typographical reasons. Superscripts are usually rendered with a raised baseline using smaller text." + }, + "i": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <i> HTML element represents a range of text that is set off from the normal text for some reason, such as idiomatic text, technical terms, taxonomical designations, among others. Historically, these have been presented using italicized type, which is the original source of the <i> naming of this element." + }, + "b": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <b> HTML element is used to draw the reader's attention to the element's contents, which are not otherwise granted special importance. This was formerly known as the Boldface element, and most browsers still draw the text in boldface. However, you should not use <b> for styling text or granting importance. If you wish to create boldface text, you should use the CSS font-weight property. If you wish to indicate an element is of special importance, you should use the strong element." + }, + "u": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <u> HTML element represents a span of inline text which should be rendered in a way that indicates that it has a non-textual annotation. This is rendered by default as a simple solid underline, but may be altered using CSS." + }, + "mark": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <mark> HTML element represents text which is marked or highlighted for reference or notation purposes due to the marked passage's relevance in the enclosing context." + }, + "bdi": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <bdi> HTML element tells the browser's bidirectional algorithm to treat the text it contains in isolation from its surrounding text. It's particularly useful when a website dynamically inserts some text and doesn't know the directionality of the text being inserted." + }, + "bdo": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <bdo> HTML element overrides the current directionality of text, so that the text within is rendered in a different direction." + }, + "span": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <span> HTML element is a generic inline container for phrasing content, which does not inherently represent anything. It can be used to group elements for styling purposes (using the class or id attributes), or because they share attribute values, such as lang. It should be used only when no other semantic element is appropriate. <span> is very much like a div element, but div is a block-level element whereas a <span> is an inline element." + }, + "br": { + "attributes": [ + "clear", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <br> HTML element produces a line break in text (carriage-return). It is useful for writing a poem or an address, where the division of lines is significant." + }, + "wbr": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <wbr> HTML element represents a word break opportunity—a position within text where the browser may optionally break a line, though its line-breaking rules would not otherwise create a break at that location." + }, + "ins": { + "attributes": [ + "cite", + "dateTime", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <ins> HTML element represents a range of text that has been added to a document. You can use the del element to similarly represent a range of text that has been deleted from the document." }, "del": { "attributes": [ "cite", - "datetime" + "dateTime", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" ], - "description": "Represents a range of text that has been deleted from a document." + "description": "The <del> HTML element represents a range of text that has been deleted from a document. This can be used when rendering track changes or source code diff information, for example. The ins element can be used for the opposite purpose: to indicate text that has been added to the document." }, - "details": { + "picture": { "attributes": [ - "open" + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" ], - "description": "Used as a disclosure widget from which the user can retrieve additional information." + "description": "The <picture> HTML element contains zero or more source elements and one img element to offer alternative versions of an image for different display/device scenarios." }, - "dfn": { - "description": "Represents the defining instance of a term." - }, - "dialog": { + "source": { "attributes": [ - "open" - ], - "description": "Represents a dialog box or other interactive component, such as an inspector or window." - }, - "div": { - "description": "The generic container for flow content and does not inherently represent anything." - }, - "dl": { - "description": "Represents a description list." - }, - "dt": { - "description": "Specifies a term in a description or definition list, and as such must be used inside a dl element." - }, - "em": { - "description": "Marks text that has stress emphasis." - }, - "embed": { - "attributes": [ - "height", "src", "type", - "width" - ], - "description": "Embeds external content at the specified point in the document." - }, - "fieldset": { - "attributes": [ - "disabled", - "form", - "name" - ], - "description": "Used to group several controls as well as labels (label) within a web form." - }, - "figcaption": { - "description": "Represents a caption or a legend associated with a figure or an illustration described by the rest of the data of the figure element which is its immediate ancestor." - }, - "figure": { - "description": "Represents self-contained content, frequently with a caption (figcaption), and is typically referenced as a single unit." - }, - "footer": { - "description": "Represents a footer for its nearest sectioning content or sectioning root element." - }, - "form": { - "attributes": [ - "accept-charset", - "action", - "autocomplete", - "enctype", - "method", - "name", - "novalidate", - "target" - ], - "description": "Represents a document section that contains interactive controls to submit information to a web server." - }, - "h1": { - "description": "The HTML h1 – h6 elements represent six levels of section headings." - }, - "h2": { - "description": "The HTML h1 – h6 elements represent six levels of section headings." - }, - "h3": { - "description": "The HTML h1 – h6 elements represent six levels of section headings." - }, - "h4": { - "description": "The HTML h1 – h6 elements represent six levels of section headings." - }, - "h5": { - "description": "The HTML h1 – h6 elements represent six levels of section headings." - }, - "h6": { - "description": "The HTML h1 – h6 elements represent six levels of section headings." - }, - "head": { - "description": "Provides general information (metadata) about the document, including its title and links to its scripts and style sheets." - }, - "header": { - "description": "Represents introductory content, typically a group of introductory or navigational aids." - }, - "hgroup": { - "description": "Represents a multi-level heading for a section of a document." - }, - "hr": { - "description": "Represents a thematic break between paragraph-level elements (for example, a change of scene in a story, or a shift of topic with a section); historically, this has been presented as a horizontal rule or line." - }, - "html": { - "attributes": [ - "manifest", - "xml:lang", - "xmlns" - ], - "description": "Represents the root (top-level element) of an HTML document, so it is also referred to as the root element." - }, - "i": { - "description": "Represents a range of text that is set off from the normal text for some reason, for example, technical terms, foreign language phrases, or fictional character thoughts." - }, - "iframe": { - "attributes": [ + "srcset", + "sizes", + "media", + "width", "height", - "name", - "sandbox", - "seamless", - "src", - "srcdoc", - "width" + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" ], - "description": "Represents a nested browsing context, effectively embedding another HTML page into the current page." + "description": "The <source> HTML element specifies multiple media resources for the picture, the audio element, or the video element. It is a glossary(void element), meaning that it has no content and does not have a closing tag. It is commonly used to offer the same media content in multiple file formats in order to provide compatibility with a broad range of browsers given their differing support for image file formats and media file formats." }, - "ilayer": {}, "img": { "attributes": [ "alt", - "height", - "ismap", - "longdesc", "src", - "usemap", - "width" + "srcset", + "sizes", + "crossOrigin", + "useMap", + "isMap", + "width", + "height", + "naturalWidth", + "naturalHeight", + "complete", + "currentSrc", + "referrerPolicy", + "decoding", + "loading", + "name", + "lowsrc", + "align", + "hspace", + "vspace", + "longDesc", + "border", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" ], - "description": "Embeds an image into the document." + "description": "The <img> HTML element embeds an image into the document." + }, + "iframe": { + "attributes": [ + "src", + "srcdoc", + "name", + "sandbox", + "allow", + "allowFullscreen", + "width", + "height", + "referrerPolicy", + "loading", + "contentDocument", + "contentWindow", + "align", + "scrolling", + "frameBorder", + "longDesc", + "marginHeight", + "marginWidth", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <iframe> HTML element represents a nested Glossary(browsing context), embedding another HTML page into the current one." + }, + "embed": { + "attributes": [ + "src", + "type", + "width", + "height", + "align", + "name", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <embed> HTML element embeds external content at the specified point in the document. This content is provided by an external application or other source of interactive content such as a browser plug-in." + }, + "object": { + "attributes": [ + "data", + "type", + "name", + "form", + "width", + "height", + "contentDocument", + "contentWindow", + "willValidate", + "validity", + "validationMessage", + "align", + "archive", + "code", + "declare", + "hspace", + "standby", + "vspace", + "codeBase", + "codeType", + "useMap", + "border", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <object> HTML element represents an external resource, which can be treated as an image, a nested browsing context, or a resource to be handled by a plugin." + }, + "video": { + "attributes": [ + "width", + "height", + "videoWidth", + "videoHeight", + "poster", + "playsInline", + "error", + "src", + "srcObject", + "currentSrc", + "crossOrigin", + "networkState", + "preload", + "buffered", + "readyState", + "seeking", + "currentTime", + "duration", + "paused", + "defaultPlaybackRate", + "playbackRate", + "preservesPitch", + "played", + "seekable", + "ended", + "autoplay", + "loop", + "controls", + "volume", + "muted", + "defaultMuted", + "audioTracks", + "videoTracks", + "textTracks", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <video> HTML element embeds a media player which supports video playback into the document. You can use <video> for audio content as well, but the audio element may provide a more appropriate user experience." + }, + "audio": { + "attributes": [ + "error", + "src", + "srcObject", + "currentSrc", + "crossOrigin", + "networkState", + "preload", + "buffered", + "readyState", + "seeking", + "currentTime", + "duration", + "paused", + "defaultPlaybackRate", + "playbackRate", + "preservesPitch", + "played", + "seekable", + "ended", + "autoplay", + "loop", + "controls", + "volume", + "muted", + "defaultMuted", + "audioTracks", + "videoTracks", + "textTracks", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <audio> HTML element is used to embed sound content in documents. It may contain one or more audio sources, represented using the src attribute or the source element: the browser will choose the most suitable one. It can also be the destination for streamed media, using a MediaStream." + }, + "track": { + "attributes": [ + "kind", + "src", + "srclang", + "label", + "default", + "readyState", + "track", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <track> HTML element is used as a child of the media elements, audio and video. It lets you specify timed text tracks (or time-based data), for example to automatically handle subtitles. The tracks are formatted in WebVTT format (.vtt files) — Web Video Text Tracks." + }, + "map": { + "attributes": [ + "name", + "areas", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <map> HTML element is used with area elements to define an image map (a clickable link area)." + }, + "area": { + "attributes": [ + "alt", + "coords", + "shape", + "target", + "download", + "ping", + "rel", + "relList", + "referrerPolicy", + "noHref", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "href", + "origin", + "protocol", + "username", + "password", + "host", + "hostname", + "port", + "pathname", + "search", + "hash", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <area> HTML element defines an area inside an image map that has predefined clickable areas. An _image map_ allows geometric areas on an image to be associated with Glossary(Hyperlink, hypertext links)." + }, + "table": { + "attributes": [ + "caption", + "tHead", + "tFoot", + "tBodies", + "rows", + "align", + "border", + "frame", + "rules", + "summary", + "width", + "bgColor", + "cellPadding", + "cellSpacing", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <table> HTML element represents tabular data — that is, information presented in a two-dimensional table comprised of rows and columns of cells containing data." + }, + "caption": { + "attributes": [ + "align", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <caption> HTML element specifies the caption (or title) of a table." + }, + "colgroup": { + "attributes": [ + "span", + "align", + "ch", + "chOff", + "vAlign", + "width", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <colgroup> HTML element defines a group of columns within a table." + }, + "col": { + "attributes": [ + "span", + "align", + "ch", + "chOff", + "vAlign", + "width", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <col> HTML element defines a column within a table and is used for defining common semantics on all common cells. It is generally found within a colgroup element." + }, + "tbody": { + "attributes": [ + "rows", + "align", + "ch", + "chOff", + "vAlign", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <tbody> HTML element encapsulates a set of table rows (tr elements), indicating that they comprise the body of the table (table)." + }, + "thead": { + "attributes": [ + "rows", + "align", + "ch", + "chOff", + "vAlign", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <thead> HTML element defines a set of rows defining the head of the columns of the table." + }, + "tfoot": { + "attributes": [ + "rows", + "align", + "ch", + "chOff", + "vAlign", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <tfoot> HTML element defines a set of rows summarizing the columns of the table." + }, + "tr": { + "attributes": [ + "rowIndex", + "sectionRowIndex", + "cells", + "align", + "ch", + "chOff", + "vAlign", + "bgColor", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <tr> HTML element defines a row of cells in a table. The row's cells can then be established using a mix of td (data cell) and th (header cell) elements." + }, + "td": { + "attributes": [ + "colSpan", + "rowSpan", + "headers", + "cellIndex", + "scope", + "abbr", + "align", + "axis", + "height", + "width", + "ch", + "chOff", + "noWrap", + "vAlign", + "bgColor", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <td> HTML element defines a cell of a table that contains data. It participates in the _table model_." + }, + "th": { + "attributes": [ + "colSpan", + "rowSpan", + "headers", + "cellIndex", + "scope", + "abbr", + "align", + "axis", + "height", + "width", + "ch", + "chOff", + "noWrap", + "vAlign", + "bgColor", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <th> HTML element defines a cell as header of a group of table cells. The exact nature of this group is defined by the htmlattrxref(scope, th) and htmlattrxref(headers, th) attributes." + }, + "form": { + "attributes": [ + "acceptCharset", + "action", + "autocomplete", + "enctype", + "encoding", + "method", + "name", + "noValidate", + "target", + "rel", + "relList", + "elements", + "length", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <form> HTML element represents a document section containing interactive controls for submitting information." + }, + "label": { + "attributes": [ + "form", + "htmlFor", + "control", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <label> HTML element represents a caption for an item in a user interface." }, "input": { "attributes": [ "accept", "alt", "autocomplete", - "autofocus", + "defaultChecked", "checked", - "dirname", + "dirName", "disabled", "form", - "formaction", - "formenctype", - "formmethod", - "formnovalidate", - "formtarget", + "files", + "formAction", + "formEnctype", + "formMethod", + "formNoValidate", + "formTarget", "height", + "indeterminate", "list", "max", - "maxlength", + "maxLength", "min", + "minLength", "multiple", "name", "pattern", "placeholder", - "readonly", + "readOnly", "required", "size", "src", "step", "type", + "defaultValue", "value", - "width" - ], - "description": "Used to create interactive controls for web-based forms in order to accept data from the user." - }, - "ins": { - "attributes": [ - "cite", - "datetime" - ], - "description": "Represents a range of text that has been added to a document." - }, - "kbd": { - "description": "Represents user input and produces an inline element displayed in the browser's default monospace font." - }, - "keygen": { - "attributes": [ - "autofocus", - "challenge", - "disabled", - "form", - "keytype", - "name" - ], - "description": "The keygen element is deprecated. Avoid using it and update existing code if possible." - }, - "label": { - "attributes": [ - "for", - "form" - ], - "description": "Represents a caption for an item in a user interface." - }, - "legend": { - "description": "Represents a caption for the content of its parent fieldset." - }, - "li": { - "attributes": [ - "value" - ], - "description": "Used to represent an item in a list." - }, - "link": { - "attributes": [ - "disabled", - "href", - "hreflang", - "media", - "rel", - "sizes", - "type" - ], - "description": "Specifies relationships between the current document and an external resource." - }, - "main": { - "description": "Represents the main content of the body of a document, portion of a document, or application." - }, - "map": { - "attributes": [ - "name" - ], - "description": "Used with area elements to define an image map (a clickable link area)." - }, - "mark": { - "description": "Represents highlighted text, i." - }, - "marquee": { - "attributes": [ + "valueAsDate", + "valueAsNumber", + "width", + "willValidate", + "validity", + "validationMessage", + "labels", + "selectionStart", + "selectionEnd", + "selectionDirection", "align", - "behavior", - "bgcolor", - "direction", - "height", - "hspace", - "loop", - "scrollamount", - "scrolldelay", - "truespeed", - "vspace", - "width" + "useMap", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" ], - "description": "The marquee element is obsolete. Avoid using it and update existing code if possible." + "description": "The <input> HTML element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and Glossary(user agent). The <input> element is one of the most powerful and complex in all of HTML due to the sheer number of combinations of input types and attributes." }, - "menu": { - "attributes": [ - "label", - "type" - ], - "description": "Represents a group of commands that a user can perform or activate." - }, - "meta": { - "attributes": [ - "charset", - "content", - "http-equiv", - "name" - ], - "description": "Represents metadata that cannot be represented by other HTML meta-related elements, like base, link, script, style or title." - }, - "meter": { + "button": { "attributes": [ + "disabled", "form", - "high", - "low", - "max", - "min", - "optimum", - "value" - ], - "description": "Represents either a scalar value within a known range or a fractional value." - }, - "nav": { - "description": "Represents a section of a page whose purpose is to provide navigation links, either within the current document or to other documents." - }, - "noscript": { - "description": "Defines a section of HTML to be inserted if a script type on the page is unsupported or if scripting is currently turned off in the browser." - }, - "object": { - "attributes": [ - "archive", - "codebase", - "codetype", - "data", - "declare", - "form", - "height", + "formAction", + "formEnctype", + "formMethod", + "formNoValidate", + "formTarget", "name", - "standby", "type", - "usemap", - "width" + "value", + "willValidate", + "validity", + "validationMessage", + "labels", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" ], - "description": "Represents an external resource, which can be treated as an image, a nested browsing context, or a resource to be handled by a plugin." - }, - "ol": { - "attributes": [ - "reversed", - "start", - "type" - ], - "description": "Represents an ordered list of items, typically rendered as a numbered list." - }, - "optgroup": { - "attributes": [ - "disabled", - "label" - ], - "description": "Creates a grouping of options within a select element." - }, - "option": { - "attributes": [ - "disabled", - "label", - "selected", - "value" - ], - "description": "Used to define an item contained in a select, an optgroup, or a datalist element." - }, - "output": { - "attributes": [ - "for", - "form", - "name" - ], - "description": "Represents the result of a calculation or user action." - }, - "p": { - "description": "Represents a paragraph of text." - }, - "param": { - "attributes": [ - "name", - "value" - ], - "description": "Defines parameters for an object element." - }, - "pre": { - "description": "Represents preformatted text which is to be presented exactly as written in the HTML file." - }, - "progress": { - "attributes": [ - "form", - "max", - "value" - ], - "description": "Displays an indicator showing the completion progress of a task, typically displayed as a progress bar." - }, - "q": { - "attributes": [ - "cite" - ], - "description": "Indicates that the enclosed text is a short inline quotation." - }, - "rp": { - "description": "The HTML Ruby Fallback Parenthesis (rp) element is used to provide fall-back parentheses for browsers that do not support display of ruby annotations using the ruby element." - }, - "rt": { - "description": "The HTML Ruby Text (rt) element specifies the ruby text component of a ruby annotation, which is used to provide pronunciation, translation, or transliteration information for East Asian typography." - }, - "ruby": { - "description": "Represents a ruby annotation." - }, - "samp": { - "description": "An element intended to identify sample output from a computer program." - }, - "script": { - "attributes": [ - "async", - "charset", - "defer", - "src", - "type" - ], - "description": "Used to embed or reference executable code; this is typically used to embed or refer to JavaScript code." - }, - "section": { - "description": "Represents a standalone section — which doesn't have a more specific semantic element to represent it — contained within an HTML document." + "description": "The <button> HTML element is an interactive element activated by a user with a mouse, keyboard, finger, voice command, or other assistive technology. Once activated, it then performs an action, such as submitting a form or opening a dialog." }, "select": { "attributes": [ - "autofocus", + "autocomplete", "disabled", "form", "multiple", "name", "required", - "size" + "size", + "type", + "options", + "length", + "selectedOptions", + "selectedIndex", + "value", + "willValidate", + "validity", + "validationMessage", + "labels", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" ], - "description": "Represents a control that provides a menu of options:" + "description": "The <select> HTML element represents a control that provides a menu of options." }, - "small": { - "description": "Makes the text font size one size smaller (for example, from large to medium, or from small to x-small) down to the browser's minimum font size." - }, - "source": { + "datalist": { "attributes": [ - "media", - "src", - "type" + "options", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" ], - "description": "Specifies multiple media resources for the picture, the audio element, or the video element." + "description": "The <datalist> HTML element contains a set of option elements that represent the permissible or recommended options available to choose from within other controls." }, - "span": { - "description": "A generic inline container for phrasing content, which does not inherently represent anything." - }, - "strong": { - "description": "Gives text strong importance and is typically displayed in bold." - }, - "style": { + "optgroup": { "attributes": [ "disabled", - "media", - "scoped", - "type" - ], - "description": "Contains style information for a document, or part of a document." - }, - "sub": { - "description": "Defines a span of text that should be displayed, for typographic reasons, lower, and often smaller, than the main span of text." - }, - "summary": { - "description": "Used as a summary, caption, or legend for the content of a details element." - }, - "sup": { - "description": "Defines a span of text that should be displayed, for typographic reasons, higher, and often smaller, than the main span of text." - }, - "table": { - "attributes": [ - "border" - ], - "description": "Represents tabular data — that is, information presented in a two-dimensional table comprised of rows and columns of cells containing data." - }, - "tbody": { - "description": "Groups one or more tr elements as the body of a table element." - }, - "td": { - "attributes": [ - "colspan", - "headers", - "rowspan" - ], - "description": "Defines a cell of a table that contains data." - }, - "template": { - "attributes": [ - "content" - ], - "description": "A mechanism for holding client-side content that is not to be rendered when a page is loaded but may subsequently be instantiated during runtime using JavaScript." - }, - "textarea": { - "attributes": [ + "label", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", "autofocus", - "cols", - "dirname", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <optgroup> HTML element creates a grouping of options within a select element." + }, + "option": { + "attributes": [ "disabled", "form", "label", - "maxlength", + "defaultSelected", + "selected", + "value", + "text", + "index", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <option> HTML element is used to define an item contained in a select, an optgroup, or a datalist element. As such, <option> can represent menu items in popups and other lists of items in an HTML document." + }, + "textarea": { + "attributes": [ + "autocomplete", + "cols", + "dirName", + "disabled", + "form", + "maxLength", + "minLength", "name", "placeholder", - "readonly", + "readOnly", "required", "rows", - "wrap" + "wrap", + "type", + "defaultValue", + "value", + "textLength", + "willValidate", + "validity", + "validationMessage", + "labels", + "selectionStart", + "selectionEnd", + "selectionDirection", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" ], - "description": "Represents a multi-line plain-text editing control." + "description": "The <textarea> HTML element represents a multi-line plain-text editing control, useful when you want to allow users to enter a sizeable amount of free-form text, for example a comment on a review or feedback form." }, - "tfoot": { - "description": "Defines a set of rows summarizing the columns of the table." - }, - "th": { + "output": { "attributes": [ - "colspan", - "headers", - "rowspan", - "scope" + "htmlFor", + "form", + "name", + "type", + "defaultValue", + "value", + "willValidate", + "validity", + "validationMessage", + "labels", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" ], - "description": "Defines a cell as header of a group of table cells." + "description": "The <output> HTML element is a container element into which a site or app can inject the results of a calculation or the outcome of a user action." }, - "thead": { - "description": "Defines a set of rows defining the head of the columns of the table." - }, - "time": { + "progress": { "attributes": [ - "datetime", - "pubdate" + "value", + "max", + "position", + "labels", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" ], - "description": "Represents either a time on a 24-hour clock or a precise date in the Gregorian calendar (with optional time and timezone information)." + "description": "The <progress> HTML element displays an indicator showing the completion progress of a task, typically displayed as a progress bar." }, - "title": { - "description": "Defines the title of the document, shown in a browser's title bar or on the page's tab." - }, - "tr": { - "description": "Specifies that the markup contained inside the tr block comprises one row of a table, inside which the th and td elements create header and data cells, respectively, within the row." - }, - "track": { + "meter": { "attributes": [ - "default", - "kind", - "label", + "value", + "min", + "max", + "low", + "high", + "optimum", + "labels", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <meter> HTML element represents either a scalar value within a known range or a fractional value." + }, + "fieldset": { + "attributes": [ + "disabled", + "form", + "name", + "type", + "elements", + "willValidate", + "validity", + "validationMessage", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <fieldset> HTML element is used to group several controls as well as labels (label) within a web form." + }, + "legend": { + "attributes": [ + "form", + "align", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <legend> HTML element represents a caption for the content of its parent fieldset." + }, + "details": { + "attributes": [ + "open", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <details> HTML element creates a disclosure widget in which information is visible only when the widget is toggled into an open state. A summary or label must be provided using the summary element." + }, + "summary": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <summary> HTML element specifies a summary, caption, or legend for a details element's disclosure box. Clicking the <summary> element toggles the state of the parent <details> element open and closed." + }, + "dialog": { + "attributes": [ + "open", + "returnValue", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <dialog> HTML element represents a dialog box or other interactive component, such as a dismissible alert, inspector, or subwindow." + }, + "script": { + "description": "The <script> HTML element is used to embed executable code or data; this is typically used to embed or refer to JavaScript code. The <script> element can also be used with other languages, such as WebGL's GLSL shader programming language and JSON." + }, + "noscript": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <noscript> HTML element defines a section of HTML to be inserted if a script type on the page is unsupported or if scripting is currently turned off in the browser." + }, + "template": { + "attributes": [ + "content", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <template> HTML element is a mechanism for holding HTML that is not to be rendered immediately when a page is loaded but may be instantiated subsequently during runtime using JavaScript." + }, + "slot": { + "attributes": [ + "name", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <slot> HTML element—part of the Web Components technology suite—is a placeholder inside a web component that you can fill with your own markup, which lets you create separate DOM trees and present them together." + }, + "canvas": { + "attributes": [ + "width", + "height", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "Use the HTML <canvas> element with either the canvas scripting API or the WebGL API to draw graphics and animations." + }, + "applet": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The obsolete HTML Applet Element (<applet>) embeds a Java applet into the document; this element has been deprecated in favor of object." + }, + "acronym": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "## Summary" + }, + "bgsound": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <bgsound> HTML element is deprecated. It sets up a sound file to play in the background while the page is used; use audio instead." + }, + "dir": { + "attributes": [ + "compact", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <dir> HTML element is used as a container for a directory of files and/or folders, potentially with styles and icons applied by the Glossary(user agent). Do not use this obsolete element; instead, you should use the ul element for lists, including lists of files." + }, + "frame": { + "attributes": [ + "name", + "scrolling", "src", - "srclang" + "frameBorder", + "longDesc", + "noResize", + "contentDocument", + "contentWindow", + "marginHeight", + "marginWidth", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" ], - "description": "Used as a child of the media elements audio and video." + "description": "The <frame> HTML element defines a particular area in which another HTML document can be displayed. A frame should be used within a frameset." + }, + "frameset": { + "attributes": [ + "cols", + "rows", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "onafterprint", + "onbeforeprint", + "onbeforeunload", + "onhashchange", + "onlanguagechange", + "onmessage", + "onmessageerror", + "onoffline", + "ononline", + "onpagehide", + "onpageshow", + "onpopstate", + "onrejectionhandled", + "onstorage", + "onunhandledrejection", + "onunload", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <frameset> HTML element is used to contain frame elements." + }, + "noframes": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <noframes> HTML element provides content to be presented in browsers that don't support (or have disabled support for) the frame element. Although most commonly-used browsers support frames, there are exceptions, including certain special-use browsers including some mobile browsers, as well as text-mode browsers." + }, + "isindex": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "" + }, + "keygen": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <keygen> HTML element exists to facilitate generation of key material, and submission of the public key as part of an HTML form. This mechanism is designed for use with Web-based certificate management systems. It is expected that the <keygen> element will be used in an HTML form along with other information needed to construct a certificate request, and that the result of the process will be a signed certificate." + }, + "listing": { + "attributes": [ + "width", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "" + }, + "menuitem": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <menuitem> HTML element represents a command that a user is able to invoke through a popup menu. This includes context menus, as well as menus that might be attached to a menu button." + }, + "nextid": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "" + }, + "noembed": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <noembed> HTML element is an obsolete, non-standard way to provide alternative, or fallback, content for browsers that do not support the embed element or do not support the type of embedded content an author wishes to use. This element was deprecated in HTML 4.01 and above in favor of placing fallback content between the opening and closing tags of an object element." + }, + "param": { + "attributes": [ + "name", + "value", + "type", + "valueType", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <param> HTML element defines parameters for an object element." + }, + "plaintext": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <plaintext> HTML element renders everything following the start tag as raw text, ignoring any following HTML. There is no closing tag, since everything after it is considered raw text." + }, + "rb": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <rb> HTML element is used to delimit the base text component of a HTMLElement(ruby) annotation, i.e. the text that is being annotated. One <rb> element should wrap each separate atomic segment of the base text." + }, + "rtc": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <rtc> HTML element embraces semantic annotations of characters presented in a ruby of rb elements used inside of HTMLElement(ruby) element. rb elements can have both pronunciation (rt) and semantic (rtc) annotations." + }, + "strike": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <strike> HTML element places a strikethrough (horizontal line) over text." + }, + "xmp": { + "attributes": [ + "width", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "## Summary" + }, + "basefont": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "" + }, + "big": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <big> HTML deprecated element renders the enclosed text at a font size one level larger than the surrounding text (medium becomes large, for example). The size is capped at the browser's maximum permitted font size." + }, + "blink": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <blink> HTML element is a non-standard element which causes the enclosed text to flash slowly." + }, + "center": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <center> HTML element is a block-level element that displays its block-level or inline contents centered horizontally within its containing element. The container is usually, but isn't required to be, body." + }, + "font": { + "attributes": [ + "color", + "face", + "size", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <font> HTML element defines the font size, color and face for its content." + }, + "marquee": { + "attributes": [ + "behavior", + "bgColor", + "direction", + "height", + "hspace", + "loop", + "scrollAmount", + "scrollDelay", + "trueSpeed", + "vspace", + "width", + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <marquee> HTML element is used to insert a scrolling area of text. You can control what happens when the text reaches the edges of its content area using its attributes." + }, + "multicol": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "" + }, + "nobr": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <nobr> HTML element prevents the text it contains from automatically wrapping across multiple lines, potentially resulting in the user having to scroll horizontally to see the entire width of the text." + }, + "spacer": { + "attributes": [ + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" + ], + "description": "The <spacer> HTML element is an obsolete HTML element which allowed insertion of empty spaces on pages. It was devised by Netscape to accomplish the same effect as a single-pixel layout image, which was something web designers used to use to add white spaces to web pages without actually using an image. However, <spacer> is no longer supported by any major browser and the same effects can now be achieved using simple CSS." }, "tt": { - "description": "The tt element is obsolete. Avoid using it and update existing code if possible." - }, - "ul": { - "description": "Represents an unordered list of items, typically rendered as a bulleted list." - }, - "var": { - "description": "Represents a variable in a mathematical expression or a programming context." - }, - "video": { "attributes": [ - "autoplay", - "controls", - "height", - "loop", - "mediagroup", - "muted", - "poster", - "preload", - "src", - "width" + "title", + "lang", + "translate", + "dir", + "hidden", + "inert", + "accessKey", + "accessKeyLabel", + "draggable", + "spellcheck", + "autocapitalize", + "innerText", + "outerText", + "namespaceURI", + "prefix", + "localName", + "tagName", + "id", + "className", + "classList", + "slot", + "attributes", + "shadowRoot", + "onabort", + "onauxclick", + "onbeforematch", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextlost", + "oncontextmenu", + "oncontextrestored", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onformdata", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmouseenter", + "onmouseleave", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onsecuritypolicyviolation", + "onseeked", + "onseeking", + "onselect", + "onslotchange", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onvolumechange", + "onwaiting", + "onwebkitanimationend", + "onwebkitanimationiteration", + "onwebkitanimationstart", + "onwebkittransitionend", + "onwheel", + "ongotpointercapture", + "onlostpointercapture", + "onpointerdown", + "onpointermove", + "onpointerrawupdate", + "onpointerup", + "onpointercancel", + "onpointerover", + "onpointerout", + "onpointerenter", + "onpointerleave", + "oncopy", + "oncut", + "onpaste", + "contentEditable", + "enterKeyHint", + "isContentEditable", + "inputMode", + "dataset", + "nonce", + "autofocus", + "tabIndex", + "style", + "nodeType", + "nodeName", + "baseURI", + "isConnected", + "ownerDocument", + "parentNode", + "parentElement", + "childNodes", + "firstChild", + "lastChild", + "previousSibling", + "nextSibling", + "nodeValue", + "textContent", + "children", + "firstElementChild", + "lastElementChild", + "childElementCount", + "previousElementSibling", + "nextElementSibling", + "assignedSlot", + "role", + "ariaAtomic", + "ariaAutoComplete", + "ariaBusy", + "ariaChecked", + "ariaColCount", + "ariaColIndex", + "ariaColIndexText", + "ariaColSpan", + "ariaCurrent", + "ariaDescription", + "ariaDisabled", + "ariaExpanded", + "ariaHasPopup", + "ariaHidden", + "ariaInvalid", + "ariaKeyShortcuts", + "ariaLabel", + "ariaLevel", + "ariaLive", + "ariaModal", + "ariaMultiLine", + "ariaMultiSelectable", + "ariaOrientation", + "ariaPlaceholder", + "ariaPosInSet", + "ariaPressed", + "ariaReadOnly", + "ariaRequired", + "ariaRoleDescription", + "ariaRowCount", + "ariaRowIndex", + "ariaRowIndexText", + "ariaRowSpan", + "ariaSelected", + "ariaSetSize", + "ariaSort", + "ariaValueMax", + "ariaValueMin", + "ariaValueNow", + "ariaValueText" ], - "description": "Use the HTML video element to embed video content in a document." + "description": "The <tt> HTML element creates inline text which is presented using the Glossary(user agent, user agent's) default monospace font face. This element was created for the purpose of rendering text as it would be displayed on a fixed-width display such as a teletype, text-only screen, or line printer." }, - "wbr": { - "description": "Represents a word break opportunity—a position within text where the browser may optionally break a line, though its line-breaking rules would not otherwise create a break at that location." + "math": { + "attributes": [ + "style" + ], + "description": "The <math> MathML element is the top-level MathML element, used to write a single mathematical formula. It can be placed in HTML content where flow content is permitted." + }, + "mtext": { + "attributes": [ + "style" + ], + "description": "The <mtext> MathML element is used to render arbitrary text with _no_ notational meaning, such as comments or annotations." + }, + "mi": { + "attributes": [ + "style" + ], + "description": "The <mi> MathML element indicates that the content should be rendered as an identifier such as function names, variables or symbolic constants. You can also have arbitrary text in it to mark up terms." + }, + "mn": { + "attributes": [ + "style" + ], + "description": "The <mn> MathML element represents a numeric literal which is normally a sequence of digits with a possible separator (a dot or a comma). However, it is also allowed to have arbitrary text in it which is actually a numeric quantity, for example eleven." + }, + "mo": { + "attributes": [ + "style" + ], + "description": "The <mo> MathML element represents an operator in a broad sense. Besides operators in strict mathematical meaning, this element also includes operators like parentheses, separators like comma and semicolon, or absolute value bars." + }, + "mspace": { + "attributes": [ + "style" + ], + "description": "The <mspace> MathML element is used to display a blank space, whose size is set by its attributes." + }, + "ms": { + "attributes": [ + "style" + ], + "description": "The <ms> MathML element represents a string literal meant to be interpreted by programming languages and computer algebra systems." + }, + "mrow": { + "attributes": [ + "style" + ], + "description": "The <mrow> MathML element is used to group sub-expressions, which usually contain one or more operators with their respective operands (such as MathMLElement(mi) and MathMLElement(mn) ). This element renders as a horizontal row containing its arguments." + }, + "mfrac": { + "attributes": [ + "style" + ], + "description": "The <mfrac> MathML element is used to display fractions. It can also be used" + }, + "msqrt": { + "attributes": [ + "style" + ], + "description": "The <msqrt> MathML element is used to display square roots (no index is displayed). The square root accepts only one argument, which leads to the following syntax: <msqrt> base </msqrt>." + }, + "mroot": { + "attributes": [ + "style" + ], + "description": "The <mroot> MathML element is used to display roots with an explicit index. Two arguments are accepted, which leads to the syntax: <mroot> base index </mroot>." + }, + "mstyle": { + "attributes": [ + "style" + ], + "description": "The <mstyle> MathML element is used to change the style of its children." + }, + "merror": { + "attributes": [ + "style" + ], + "description": "The <merror> MathML element is used to display contents as error messages. The intent of this element is to provide a standard way for programs that generate MathML from other input to report syntax errors." + }, + "mpadded": { + "attributes": [ + "style" + ], + "description": "The <mpadded> MathML element is used to add extra padding and to set the general adjustment of position and size of enclosed contents." + }, + "mphantom": { + "attributes": [ + "style" + ], + "description": "The <mphantom> MathML element is rendered invisibly, but dimensions (such as height, width, and baseline position) are still kept." + }, + "msub": { + "attributes": [ + "style" + ], + "description": "The <msub> MathML element is used to attach a subscript to an expression." + }, + "msup": { + "attributes": [ + "style" + ], + "description": "The <msup> MathML element is used to attach a superscript to an expression." + }, + "msubsup": { + "attributes": [ + "style" + ], + "description": "The <msubsup> MathML element is used to attach both a subscript and a superscript, together, to an expression." + }, + "munder": { + "attributes": [ + "style" + ], + "description": "The <munder> MathML element is used to attach an accent or a limit under an expression. It uses the following syntax: <munder> base underscript </munder>" + }, + "mover": { + "attributes": [ + "style" + ], + "description": "The <mover> MathML element is used to attach an accent or a limit over an expression. Use the following syntax: <mover> base overscript </mover>" + }, + "munderover": { + "attributes": [ + "style" + ], + "description": "The <munderover> MathML element is used to attach accents or limits both under and over an expression." + }, + "mmultiscripts": { + "attributes": [ + "style" + ], + "description": "The <mmultiscripts> MathML element is used to attach an arbitrary number of subscripts and superscripts to an expression at once, generalizing the MathMLElement(msubsup) element. Scripts can be either prescripts (placed before the expression) or postscripts (placed after it)." + }, + "mprescripts": { + "attributes": [ + "style" + ], + "description": "" + }, + "mtable": { + "attributes": [ + "style" + ], + "description": "The <mtable> MathML element allows you to create tables or matrices. Its children are MathMLElement(mtr) elements (representing rows), each of them having MathMLElement(mtd) elements as its children (representing cells). These elements are similar to HTMLElement(table) , HTMLElement(tr) and HTMLElement(td) elements of HTML." + }, + "mtr": { + "attributes": [ + "style" + ], + "description": "The <mtr> MathML element represents a row in a table or a matrix. It may only appear in a MathMLElement(mtable) element and its children are MathMLElement(mtd) elements representing cells. This element is similar to the HTMLElement(tr) element of HTML." + }, + "mtd": { + "attributes": [ + "style" + ], + "description": "The <mtd> MathML element represents a cell in a table or a matrix. It may only appear in a MathMLElement(mtr) element. This element is similar to the HTMLElement(td) element of HTML." + }, + "maction": { + "attributes": [ + "style" + ], + "description": "The <maction> MathML element allows to bind actions to mathematical expressions. By default, only the first child is rendered but some browsers may take into account actiontype and selection attributes to implement custom behaviors." + }, + "semantics": { + "attributes": [ + "style" + ], + "description": "The <semantics> MathML element associates annotations with a MathML expression, for example its text source as a lightweight markup language or mathematical meaning expressed in a special XML dialect. Typically, its structure is:" + }, + "annotation": { + "attributes": [ + "style" + ], + "description": "" + }, + "annotation-xml": { + "attributes": [ + "style" + ], + "description": "" + }, + "model": { + "description": "" + }, + "portal": { + "description": "The <portal> HTML element enables the embedding of another HTML page into the current one for the purposes of allowing smoother navigation into new pages." + }, + "animate": { + "description": "The SVG <animate> element provides a way to animate an attribute of an element over time." + }, + "set": { + "description": "The SVG <set> element provides a simple means of just setting the value of an attribute for a specified duration." + }, + "discard": { + "description": "The <discard> SVG element allows authors to specify the time at which particular elements are to be discarded, thereby reducing the resources required by an SVG user agent. This is particularly useful to help SVG viewers conserve memory while displaying long-running documents." + }, + "animateMotion": { + "description": "The SVG <animateMotion> element provides a way to define how an element moves along a motion path." + }, + "mpath": { + "description": "The <mpath> sub-element for the animateMotion element provides the ability to reference an external path element as the definition of a motion path." + }, + "animateTransform": { + "description": "The animateTransform element animates a transformation attribute on its target element, thereby allowing animations to control translation, scaling, rotation, and/or skewing." + }, + "svg": { + "description": "The svg element is a container that defines a new coordinate system and viewport. It is used as the outermost element of SVG documents, but it can also be used to embed an SVG fragment inside an SVG or HTML document." + }, + "g": { + "description": "The <g> SVG element is a container used to group other SVG elements." + }, + "defs": { + "description": "The <defs> element is used to store graphical objects that will be used at a later time. Objects created inside a <defs> element are not rendered directly. To display them you have to reference them (with a use element for example)." + }, + "desc": { + "description": "The <desc> element provides an accessible, long-text description of any SVG container element or graphics element." + }, + "symbol": { + "description": "The <symbol> element is used to define graphical template objects which can be instantiated by a use element." + }, + "use": { + "description": "The <use> element takes nodes from within the SVG document, and duplicates them somewhere else." + }, + "image": { + "description": "The <image> HTML element is an ancient and poorly supported precursor to the img element." + }, + "switch": { + "description": "The <switch> SVG element evaluates any requiredFeatures, requiredExtensions and systemLanguage attributes on its direct child elements in order, and then renders the first child where these attributes evaluate to true." + }, + "path": { + "description": "The <path> SVG element is the generic element to define a shape. All the basic shapes can be created with a path element." + }, + "rect": { + "description": "The <rect> element is a basic SVG shape that draws rectangles, defined by their position, width, and height. The rectangles may have their corners rounded." + }, + "circle": { + "description": "The <circle> SVG element is an SVG basic shape, used to draw circles based on a center point and a radius." + }, + "ellipse": { + "description": "The <ellipse> element is an SVG basic shape, used to create ellipses based on a center coordinate, and both their x and y radius." + }, + "line": { + "description": "The <line> element is an SVG basic shape used to create a line connecting two points." + }, + "polyline": { + "description": "The <polyline> SVG element is an SVG basic shape that creates straight lines connecting several points. Typically a polyline is used to create open shapes as the last point doesn't have to be connected to the first point. For closed shapes see the polygon element." + }, + "polygon": { + "description": "The <polygon> element defines a closed shape consisting of a set of connected straight line segments. The last point is connected to the first point." + }, + "text": { + "description": "The SVG <text> element draws a graphics element consisting of text. It's possible to apply a gradient, pattern, clipping path, mask, or filter to <text>, like any other SVG graphics element." + }, + "tspan": { + "description": "The SVG <tspan> element defines a subtext within a SVGElement('text') element or another <tspan> element. It allows for adjustment of the style and/or position of that subtext as needed." + }, + "textPath": { + "description": "To render text along the shape of a path, enclose the text in a <textPath> element that has an href attribute with a reference to the path element." + }, + "marker": { + "description": "The <marker> element defines a graphic used for drawing arrowheads or polymarkers on a given path, line, polyline or polygon element." + }, + "linearGradient": { + "description": "The <linearGradient> element lets authors define linear gradients to apply to other SVG elements." + }, + "radialGradient": { + "description": "The <radialGradient> element lets authors define radial gradients that can be applied to fill or stroke of graphical elements." + }, + "stop": { + "description": "The SVG <stop> element defines a color and its position to use on a gradient. This element is always a child of a linearGradient or radialGradient element." + }, + "pattern": { + "description": "The <pattern> element defines a graphics object which can be redrawn at repeated x- and y-coordinate intervals (tiled) to cover an area." + }, + "view": { + "description": "A view is a defined way to view the image, like a zoom level or a detail view." + }, + "metadata": { + "description": "The <metadata> SVG element adds metadata to SVG content. Metadata is structured information about data. The contents of <metadata> should be elements from other XML Glossary(namespace, namespaces) such as RDF, FOAF, etc." + }, + "foreignObject": { + "description": "The <foreignObject> SVG element includes elements from a different XML namespace. In the context of a browser, it is most likely (X)HTML." } }, "attributes": { @@ -1916,4 +26892,4 @@ "xml:lang": {}, "xmlns": {} } -} +} \ No newline at end of file diff --git a/packages/autocomplete-html/fetch-global-attribute-docs.js b/packages/autocomplete-html/fetch-global-attribute-docs.js deleted file mode 100644 index 84eae6b47..000000000 --- a/packages/autocomplete-html/fetch-global-attribute-docs.js +++ /dev/null @@ -1,113 +0,0 @@ -const path = require('path') -const fs = require('fs') -const request = require('request') - -const mdnHTMLURL = 'https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes' -const mdnJSONAPI = 'https://developer.mozilla.org/en-US/search.json?topic=html&highlight=false' -const AttributesURL = 'https://raw.githubusercontent.com/adobe/brackets/master/src/extensions/default/HTMLCodeHints/HtmlAttributes.json' - -const fetch = () => { - const attributesPromise = new Promise((resolve) => { - request({json: true, url: AttributesURL}, (error, response, attributes) => { - if (error) { - console.error(error.message) - resolve(null) - } - - if (response.statusCode !== 200) { - console.error(`Request for HtmlAttributes.json failed: ${response.statusCode}`) - resolve(null) - } - - resolve(attributes) - }) - }) - - attributesPromise.then((attributes) => { - if (!attributes) return - - const MAX = 10 - const queue = [] - for (let attribute in attributes) { - // MDN is missing docs for aria attributes and on* event handlers - const options = attributes[attribute] - if (options.global && !attribute.startsWith('aria') && !attribute.startsWith('on') && (attribute !== 'role')) { - queue.push(attribute) - } - } - const running = [] - const docs = {} - - return new Promise((resolve) => { - const checkEnd = () => { - if ((queue.length === 0) && (running.length === 0)) resolve(docs) - } - - const removeRunning = (attributeName) => { - const index = running.indexOf(attributeName) - if (index > -1) { running.splice(index, 1) } - } - - const runNext = () => { - checkEnd() - if (queue.length !== 0) { - const attributeName = queue.pop() - running.push(attributeName) - run(attributeName) - } - } - - var run = (attributeName) => { - const url = `${mdnJSONAPI}&q=${attributeName}` - request({json: true, url}, (error, response, searchResults) => { - if (!error && response.statusCode === 200) { - handleRequest(attributeName, searchResults) - } else { - console.error(`Req failed ${url}; ${response.statusCode}, ${error}`) - } - removeRunning(attributeName) - runNext() - }) - } - - var handleRequest = (attributeName, searchResults) => { - if (searchResults.documents) { - for (let doc of searchResults.documents) { - if (doc.url === `${mdnHTMLURL}/${attributeName}`) { - docs[attributeName] = filterExcerpt(attributeName, doc.excerpt) - return - } - } - } - console.log(`Could not find documentation for ${attributeName}`) - } - - for (let i = 0; i <= MAX; i++) runNext() - }) - }) -} - -var filterExcerpt = (attributeName, excerpt) => { - const beginningPattern = /^the [a-z-]+ global attribute (is )?(\w+)/i - excerpt = excerpt.replace(beginningPattern, (match) => { - const matches = beginningPattern.exec(match) - const firstWord = matches[2] - return firstWord[0].toUpperCase() + firstWord.slice(1) - }) - const periodIndex = excerpt.indexOf('.') - if (periodIndex > -1) { excerpt = excerpt.slice(0, periodIndex + 1) } - return excerpt -} - -// Save a file if run from the command line -if (require.main === module) { - fetch().then((docs) => { - if (docs) { - fs.writeFileSync(path.join(__dirname, 'global-attribute-docs.json'), `${JSON.stringify(docs, null, ' ')}\n`) - } else { - console.error('No docs') - } - }) -} - -module.exports = fetch diff --git a/packages/autocomplete-html/fetch-tag-docs.js b/packages/autocomplete-html/fetch-tag-docs.js deleted file mode 100644 index fb464b211..000000000 --- a/packages/autocomplete-html/fetch-tag-docs.js +++ /dev/null @@ -1,120 +0,0 @@ -/* - * decaffeinate suggestions: - * DS102: Remove unnecessary code created because of implicit returns - * DS202: Simplify dynamic range loops - * DS207: Consider shorter variations of null checks - * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md - */ -const path = require('path') -const fs = require('fs') -const request = require('request') - -const mdnHTMLURL = 'https://developer.mozilla.org/en-US/docs/Web/HTML/Element' -const mdnJSONAPI = 'https://developer.mozilla.org/en-US/search.json?topic=html&highlight=false' -const TagsURL = 'https://raw.githubusercontent.com/adobe/brackets/master/src/extensions/default/HTMLCodeHints/HtmlTags.json' - -const fetch = () => { - const tagsPromise = new Promise((resolve) => { - request({json: true, url: TagsURL}, (error, response, tags) => { - if (error != null) { - console.error(error.message) - resolve(null) - } - - if (response.statusCode !== 200) { - console.error(`Request for HtmlTags.json failed: ${response.statusCode}`) - resolve(null) - } - - resolve(tags) - }) - }) - - return tagsPromise.then((tags) => { - if (!tags) return - - const MAX = 10 - const queue = Object.keys(tags) - const running = [] - const docs = {} - - return new Promise((resolve) => { - const checkEnd = () => { - if ((queue.length === 0) && (running.length === 0)) resolve(docs) - } - - const removeRunning = (tagName) => { - const index = running.indexOf(tagName) - if (index > -1) { return running.splice(index, 1) } - } - - const runNext = () => { - checkEnd() - if (queue.length !== 0) { - const tagName = queue.pop() - running.push(tagName) - run(tagName) - } - } - - var run = (tagName) => { - const url = `${mdnJSONAPI}&q=${tagName}` - request({json: true, url}, (error, response, searchResults) => { - if ((error == null) && (response.statusCode === 200)) { - handleRequest(tagName, searchResults) - } else { - console.error(`Req failed ${url}; ${response.statusCode}, ${error}`) - } - removeRunning(tagName) - runNext() - }) - } - - var handleRequest = (tagName, searchResults) => { - if (searchResults.documents != null) { - for (let doc of searchResults.documents) { - // MDN groups h1 through h6 under a single "Heading Elements" page - if ((doc.url === `${mdnHTMLURL}/${tagName}`) || (/^h\d$/.test(tagName) && (doc.url === `${mdnHTMLURL}/Heading_Elements`))) { - if (doc.tags.includes('Obsolete')) { - docs[tagName] = `The ${tagName} element is obsolete. Avoid using it and update existing code if possible.` - } else if (doc.tags.includes('Deprecated')) { - docs[tagName] = `The ${tagName} element is deprecated. Avoid using it and update existing code if possible.` - } else { - docs[tagName] = filterExcerpt(tagName, doc.excerpt) - } - return - } - } - } - console.log(`Could not find documentation for ${tagName}`) - } - - for (let i = 0; i <= MAX; i++) { runNext() } - }) - }) -} - -var filterExcerpt = (tagName, excerpt) => { - const beginningPattern = /^the html [a-z-]+ element (\([^)]+\) )?(is )?(\w+)/i - excerpt = excerpt.replace(beginningPattern, (match) => { - const matches = beginningPattern.exec(match) - const firstWord = matches[3] - return firstWord[0].toUpperCase() + firstWord.slice(1) - }) - const periodIndex = excerpt.indexOf('.') - if (periodIndex > -1) { excerpt = excerpt.slice(0, periodIndex + 1) } - return excerpt -} - -// Save a file if run from the command line -if (require.main === module) { - fetch().then((docs) => { - if (docs != null) { - fs.writeFileSync(path.join(__dirname, 'tag-docs.json'), `${JSON.stringify(docs, null, ' ')}\n`) - } else { - console.error('No docs') - } - }) -} - -module.exports = fetch diff --git a/packages/autocomplete-html/package-lock.json b/packages/autocomplete-html/package-lock.json index 281a7a090..e2a54c3b3 100644 --- a/packages/autocomplete-html/package-lock.json +++ b/packages/autocomplete-html/package-lock.json @@ -13,7 +13,6 @@ "chrome-devtools-frontend": "^1.0.1070764", "content": "github:mdn/content", "esm": "^3.2.25", - "request": "^2.53.0", "ts-import": "^2.0.40" }, "engines": { @@ -612,24 +611,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -645,27 +626,6 @@ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true - }, "node_modules/bail": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", @@ -702,15 +662,6 @@ } ] }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, "node_modules/bin-build": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bin-build/-/bin-build-3.0.0.tgz", @@ -1391,12 +1342,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true - }, "node_modules/caw": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz", @@ -1694,18 +1639,6 @@ "text-hex": "1.0.x" } }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/comma-separated-tokens": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", @@ -1997,18 +1930,6 @@ "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", "dev": true }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/dayjs": { "version": "1.11.7", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", @@ -2248,15 +2169,6 @@ "node": ">=8" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -2545,16 +2457,6 @@ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -2933,15 +2835,6 @@ "node": ">=4" } }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true, - "engines": [ - "node >=0.6.0" - ] - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -3178,29 +3071,6 @@ } } }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, "node_modules/form-data-encoder": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", @@ -3369,15 +3239,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - } - }, "node_modules/gifsicle": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/gifsicle/-/gifsicle-5.3.0.tgz", @@ -3541,29 +3402,6 @@ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dev": true, - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -3940,21 +3778,6 @@ } } }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, "node_modules/http2-wrapper": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", @@ -4735,12 +4558,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true - }, "node_modules/is-unicode-supported": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", @@ -4777,12 +4594,6 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true - }, "node_modules/isurl": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", @@ -4890,36 +4701,18 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true - }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true - }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true - }, "node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -4932,21 +4725,6 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/junk": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", @@ -6850,15 +6628,6 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -7272,12 +7041,6 @@ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true - }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -7518,12 +7281,6 @@ "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", "dev": true }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -7543,15 +7300,6 @@ "node": ">=6" } }, - "node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, "node_modules/query-string": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", @@ -7886,38 +7634,6 @@ "node": ">= 10" } }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dev": true, - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -8336,31 +8052,6 @@ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, - "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dev": true, - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/stable": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", @@ -9302,19 +8993,6 @@ "url": "https://github.com/sponsors/Borewit" } }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, "node_modules/trim-lines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", @@ -9401,12 +9079,6 @@ "node": "*" } }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true - }, "node_modules/type-fest": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.6.0.tgz", @@ -9721,20 +9393,6 @@ "node": ">= 0.8" } }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, "node_modules/vfile": { "version": "5.3.7", "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", @@ -10472,21 +10130,6 @@ "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", "dev": true }, - "asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true - }, "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -10499,24 +10142,6 @@ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true - }, "bail": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", @@ -10535,15 +10160,6 @@ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, "bin-build": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bin-build/-/bin-build-3.0.0.tgz", @@ -11097,12 +10713,6 @@ "get-intrinsic": "^1.0.2" } }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true - }, "caw": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz", @@ -11331,15 +10941,6 @@ "text-hex": "1.0.x" } }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, "comma-separated-tokens": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", @@ -11567,15 +11168,6 @@ } } }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, "dayjs": { "version": "1.11.7", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", @@ -11763,12 +11355,6 @@ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true - }, "depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -11983,16 +11569,6 @@ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -12286,12 +11862,6 @@ "tmp": "^0.0.33" } }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true - }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -12469,23 +12039,6 @@ "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, "form-data-encoder": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", @@ -12631,15 +12184,6 @@ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, "gifsicle": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/gifsicle/-/gifsicle-5.3.0.tgz", @@ -12755,22 +12299,6 @@ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "dev": true - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "dev": true, - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -13048,17 +12576,6 @@ "micromatch": "^4.0.2" } }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, "http2-wrapper": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", @@ -13577,12 +13094,6 @@ "fast-xml-parser": "^3.19.0" } }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true - }, "is-unicode-supported": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", @@ -13610,12 +13121,6 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true - }, "isurl": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", @@ -13695,36 +13200,18 @@ "argparse": "^2.0.1" } }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true - }, "json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true - }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true - }, "jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -13735,18 +13222,6 @@ "universalify": "^2.0.0" } }, - "jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, "junk": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", @@ -15038,12 +14513,6 @@ "boolbase": "^1.0.0" } }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -15334,12 +14803,6 @@ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true - }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -15508,12 +14971,6 @@ "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", "dev": true }, - "psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -15530,12 +14987,6 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, - "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true - }, "query-string": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", @@ -15776,34 +15227,6 @@ "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==", "dev": true }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -16119,23 +15542,6 @@ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, - "sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, "stable": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", @@ -16862,16 +16268,6 @@ "ieee754": "^1.2.1" } }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, "trim-lines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", @@ -16940,12 +16336,6 @@ "safe-buffer": "^5.0.1" } }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true - }, "type-fest": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.6.0.tgz", @@ -17166,17 +16556,6 @@ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, "vfile": { "version": "5.3.7", "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", diff --git a/packages/autocomplete-html/package.json b/packages/autocomplete-html/package.json index 34cc7f012..660dd992e 100644 --- a/packages/autocomplete-html/package.json +++ b/packages/autocomplete-html/package.json @@ -8,6 +8,9 @@ "engines": { "atom": ">=0.174.0 <2.0.0" }, + "scripts": { + "update": "node ./update/update.js" + }, "providedServices": { "autocomplete.provider": { "versions": { @@ -20,7 +23,6 @@ "chrome-devtools-frontend": "^1.0.1070764", "content": "github:mdn/content", "esm": "^3.2.25", - "request": "^2.53.0", "ts-import": "^2.0.40" } } diff --git a/packages/autocomplete-html/update.js b/packages/autocomplete-html/update.js deleted file mode 100644 index 05e94622b..000000000 --- a/packages/autocomplete-html/update.js +++ /dev/null @@ -1,73 +0,0 @@ -const path = require('path') -const fs = require('fs') -const request = require('request') -const fetchTagDescriptions = require('./fetch-tag-docs') -const fetchGlobalAttributeDescriptions = require('./fetch-global-attribute-docs') - -const TagsURL = 'https://raw.githubusercontent.com/adobe/brackets/master/src/extensions/default/HTMLCodeHints/HtmlTags.json' -const AttributesURL = 'https://raw.githubusercontent.com/adobe/brackets/master/src/extensions/default/HTMLCodeHints/HtmlAttributes.json' - -const tagsPromise = new Promise((resolve) => { - request({json: true, url: TagsURL}, (error, response, tags) => { - if (error != null) { - console.error(error.message) - resolve(null) - } - - if (response.statusCode !== 200) { - console.error(`Request for HtmlTags.json failed: ${response.statusCode}`) - resolve(null) - } - - for (let tag in tags) { - const options = tags[tag] - if ((options.attributes != null ? options.attributes.length : undefined) === 0) { delete options.attributes } - } - - resolve(tags) - }) -}) - -const tagDescriptionsPromise = fetchTagDescriptions() - -const attributesPromise = new Promise((resolve) => { - return request({json: true, url: AttributesURL}, (error, response, attributes) => { - if (error != null) { - console.error(error.message) - resolve(null) - } - - if (response.statusCode !== 200) { - console.error(`Request for HtmlAttributes.json failed: ${response.statusCode}`) - resolve(null) - } - - for (let attribute in attributes) { - const options = attributes[attribute] - if ((options.attribOption != null ? options.attribOption.length : undefined) === 0) { delete options.attribOption } - } - - resolve(attributes) - }) -}) - -const globalAttributeDescriptionsPromise = fetchGlobalAttributeDescriptions() - -Promise.all([tagsPromise, tagDescriptionsPromise, attributesPromise, globalAttributeDescriptionsPromise]).then((values) => { - const tags = values[0] - const tagDescriptions = values[1] - const attributes = values[2] - const attributeDescriptions = values[3] - - for (let tag in tags) { - tags[tag].description = tagDescriptions[tag] - } - - for (let attribute in attributes) { - const options = attributes[attribute] - if (options.global) { attributes[attribute].description = attributeDescriptions[attribute] } - } - - const completions = {tags, attributes} - fs.writeFileSync(path.join(__dirname, 'completions.json'), `${JSON.stringify(completions, null, ' ')}\n`) -}) diff --git a/packages/autocomplete-html/chromium-elements-shim.js b/packages/autocomplete-html/update/chromium-elements-shim.js similarity index 100% rename from packages/autocomplete-html/chromium-elements-shim.js rename to packages/autocomplete-html/update/chromium-elements-shim.js diff --git a/packages/autocomplete-html/chromium-elements-shim.mjs b/packages/autocomplete-html/update/chromium-elements-shim.mjs similarity index 100% rename from packages/autocomplete-html/chromium-elements-shim.mjs rename to packages/autocomplete-html/update/chromium-elements-shim.mjs diff --git a/packages/autocomplete-html/update/curated-attributes.json b/packages/autocomplete-html/update/curated-attributes.json new file mode 100644 index 000000000..fbd2e5338 --- /dev/null +++ b/packages/autocomplete-html/update/curated-attributes.json @@ -0,0 +1,1217 @@ +{ + "accesskey": { + "global": "true", + "description": "Provides a hint for generating a keyboard shortcut for the current element." + }, + "class": { + "global": "true", + "type": "cssStyle", + "description": "A space-separated list of the classes of the element." + }, + "contenteditable": { + "global": "true", + "type": "boolean", + "description": "An enumerated attribute indicating if the element should be editable by the user." + }, + "contextmenu": { + "global": "true", + "description": "The id of a menu to use as the contextual menu for this element." + }, + "dir": { + "attribOption": [ + "ltr", + "rtl" + ], + "global": "true", + "description": "An enumerated attribute indicates the directionality of the element's text." + }, + "draggable": { + "attribOption": [ + "auto", + "false", + "true" + ], + "global": "true", + "description": "An enumerated attribute that indicates whether the element can be dragged, using the HTML Drag and Drop API." + }, + "dropzone": { + "attribOption": [ + "copy", + "move", + "link" + ], + "global": "true", + "description": "An enumerated attribute indicating what types of content can be dropped on an element, using the Drag and Drop API." + }, + "hidden": { + "type": "flag", + "global": "true", + "description": "A Boolean attribute indicating that the element is not yet, or is no longer, relevant." + }, + "id": { + "global": "true", + "type": "cssId", + "description": "Defines a unique identifier (ID) which must be unique in the whole document." + }, + "lang": { + "attribOption": [ + "ab", + "aa", + "af", + "sq", + "am", + "ar", + "an", + "hy", + "as", + "ay", + "az", + "ba", + "eu", + "bn", + "dz", + "bh", + "bi", + "br", + "bg", + "my", + "be", + "km", + "ca", + "zh", + "co", + "hr", + "cs", + "da", + "nl", + "en", + "eo", + "et", + "fo", + "fa", + "fi", + "fr", + "fy", + "gl", + "gd", + "gv", + "ka", + "de", + "el", + "kl", + "gn", + "gu", + "ht", + "ha", + "he", + "hi", + "hu", + "is", + "io", + "id", + "ia", + "ie", + "iu", + "ik", + "ga", + "it", + "ja", + "jv", + "kn", + "ks", + "kk", + "rw", + "ky", + "rn", + "ko", + "ku", + "lo", + "la", + "lv", + "li", + "ln", + "lt", + "mk", + "mg", + "ms", + "ml", + "mt", + "mi", + "mr", + "mo", + "mn", + "na", + "ne", + "no", + "oc", + "or", + "om", + "ps", + "pl", + "pt", + "pa", + "qu", + "rm", + "ro", + "ru", + "sz", + "sm", + "sg", + "sa", + "sr", + "sh", + "st", + "tn", + "sn", + "ii", + "sd", + "si", + "ss", + "sk", + "sl", + "so", + "es", + "su", + "sw", + "sv", + "tl", + "tg", + "ta", + "tt", + "te", + "th", + "bo", + "ti", + "to", + "ts", + "tr", + "tk", + "tw", + "ug", + "uk", + "ur", + "uz", + "vi", + "vo", + "wa", + "cy", + "wo", + "xh", + "yi", + "yo", + "zu" + ], + "global": "true", + "description": "Participates in defining the language of the element, the language that its non-editable elements are written in or the language that the editable elements should be written in." + }, + "role": { + "attribOption": [ + "alert", + "alertdialog", + "article", + "application", + "banner", + "button", + "checkbox", + "columnheader", + "combobox", + "complementary", + "contentinfo", + "definition", + "directory", + "dialog", + "document", + "form", + "grid", + "gridcell", + "group", + "heading", + "img", + "link", + "list", + "listbox", + "listitem", + "log", + "main", + "marquee", + "math", + "menu", + "menubar", + "menuitem", + "menuitemcheckbox", + "menuitemradio", + "navigation", + "note", + "option", + "presentation", + "progressbar", + "radio", + "radiogroup", + "region", + "row", + "rowgroup", + "rowheader", + "scrollbar", + "search", + "separator", + "slider", + "spinbutton", + "status", + "tab", + "tablist", + "tabpanel", + "textbox", + "timer", + "toolbar", + "tooltip", + "tree", + "treegrid", + "treeitem" + ], + "global": "true" + }, + "spellcheck": { + "global": "true", + "type": "boolean", + "description": "An enumerated attribute defines whether the element may be checked for spelling errors." + }, + "style": { + "global": "true", + "type": "style", + "description": "Contains CSS styling declarations to be applied to the element." + }, + "tabindex": { + "global": "true", + "description": "Indicates if its element can be focused, and if/where it participates in sequential keyboard navigation (usually with the Tab key, hence the name)." + }, + "title": { + "global": "true", + "description": "Contains text representing advisory information, related to the element it belongs to." + }, + "onabort": { + "global": "true" + }, + "onblur": { + "global": "true" + }, + "oncanplay": { + "global": "true" + }, + "oncanplaythrough": { + "global": "true" + }, + "onchange": { + "global": "true" + }, + "onclick": { + "global": "true" + }, + "oncontextmenu": { + "global": "true" + }, + "oncuechange": { + "global": "true" + }, + "ondblclick": { + "global": "true" + }, + "ondrag": { + "global": "true" + }, + "ondragend": { + "global": "true" + }, + "ondragenter": { + "global": "true" + }, + "ondragleave": { + "global": "true" + }, + "ondragover": { + "global": "true" + }, + "ondragstart": { + "global": "true" + }, + "ondrop": { + "global": "true" + }, + "ondurationchange": { + "global": "true" + }, + "onemptied": { + "global": "true" + }, + "onended": { + "global": "true" + }, + "onerror": { + "global": "true" + }, + "onfocus": { + "global": "true" + }, + "oninput": { + "global": "true" + }, + "oninvalid": { + "global": "true" + }, + "onkeydown": { + "global": "true" + }, + "onkeypress": { + "global": "true" + }, + "onkeyup": { + "global": "true" + }, + "onload": { + "global": "true" + }, + "onloadeddata": { + "global": "true" + }, + "onloadedmetadata": { + "global": "true" + }, + "onloadstart": { + "global": "true" + }, + "onmousedown": { + "global": "true" + }, + "onmousemove": { + "global": "true" + }, + "onmouseout": { + "global": "true" + }, + "onmouseover": { + "global": "true" + }, + "onmouseup": { + "global": "true" + }, + "onmousewheel": { + "global": "true" + }, + "onpause": { + "global": "true" + }, + "onplay": { + "global": "true" + }, + "onplaying": { + "global": "true" + }, + "onprogress": { + "global": "true" + }, + "onratechange": { + "global": "true" + }, + "onreadystatechange": { + "global": "true" + }, + "onreset": { + "global": "true" + }, + "onscroll": { + "global": "true" + }, + "onseeked": { + "global": "true" + }, + "onseeking": { + "global": "true" + }, + "onselect": { + "global": "true" + }, + "onshow": { + "global": "true" + }, + "onstalled": { + "global": "true" + }, + "onsubmit": { + "global": "true" + }, + "onsuspend": { + "global": "true" + }, + "ontimeupdate": { + "global": "true" + }, + "onvolumechange": { + "global": "true" + }, + "onwaiting": { + "global": "true" + }, + "aria-autocomplete": { + "attribOption": [ + "inline", + "list", + "both", + "none" + ] + }, + "aria-activedescendant": { + "global": "true" + }, + "aria-atomic": { + "attribOption": [ + "true", + "false" + ], + "global": "true", + "type": "boolean" + }, + "aria-busy": { + "global": "true", + "type": "boolean" + }, + "aria-checked": { + "attribOption": [ + "true", + "false", + "mixed", + "undefined" + ] + }, + "aria-controls": { + "global": "true" + }, + "aria-describedby": { + "global": "true" + }, + "aria-disabled": { + "attribOption": [ + "true", + "false" + ], + "global": "true" + }, + "aria-dropeffect": { + "attribOption": [ + "copy", + "move", + "link", + "execute", + "popup", + "none" + ], + "global": "true" + }, + "aria-expanded": { + "attribOption": [ + "true", + "false", + "undefined" + ] + }, + "aria-flowto": { + "global": "true" + }, + "aria-grabbed": { + "attribOption": [ + "true", + "false", + "undefined" + ], + "global": "true" + }, + "aria-haspopup": { + "attribOption": [ + "true", + "false" + ], + "global": "true", + "type": "boolean" + }, + "aria-hidden": { + "attribOption": [ + "true", + "false" + ], + "global": "true", + "type": "boolean" + }, + "aria-invalid": { + "attribOption": [ + "grammar", + "false", + "spelling", + "true" + ], + "global": "true" + }, + "aria-label": { + "global": "true" + }, + "aria-labelledby": { + "global": "true" + }, + "aria-level": {}, + "aria-live": { + "attribOption": [ + "off", + "polite", + "assertive" + ], + "global": "true" + }, + "aria-multiline": { + "attribOption": [ + "true", + "false" + ], + "type": "boolean" + }, + "aria-multiselectable": { + "attribOption": [ + "true", + "false" + ], + "type": "boolean" + }, + "aria-orientation": { + "attribOption": [ + "vertical", + "horizontal" + ] + }, + "aria-owns": { + "global": "true" + }, + "aria-posinset": {}, + "aria-pressed": { + "attribOption": [ + "true", + "false", + "mixed", + "undefined" + ] + }, + "aria-readonly": { + "attribOption": [ + "true", + "false" + ] + }, + "aria-relevant": { + "attribOption": [ + "additions", + "removals", + "text", + "all", + "additions text" + ], + "global": "true" + }, + "aria-required": { + "attribOption": [ + "true", + "false" + ], + "type": "boolean" + }, + "aria-selected": { + "attribOption": [ + "true", + "false", + "undefined" + ] + }, + "aria-setsize": {}, + "aria-sort": { + "attribOption": [ + "ascending", + "descending", + "none", + "other" + ] + }, + "aria-valuemax": {}, + "aria-valuemin": {}, + "aria-valuenow": {}, + "aria-valuetext": {}, + "accept": { + "attribOption": [ + "text/html", + "text/plain", + "application/msword", + "application/msexcel", + "application/postscript", + "application/x-zip-compressed", + "application/pdf", + "application/rtf", + "video/x-msvideo", + "video/quicktime", + "video/x-mpeg2", + "audio/x-pn/realaudio", + "audio/x-mpeg", + "audio/x-waw", + "audio/x-aiff", + "audio/basic", + "image/tiff", + "image/jpeg", + "image/gif", + "image/x-png", + "image/x-photo-cd", + "image/x-MS-bmp", + "image/x-rgb", + "image/x-portable-pixmap", + "image/x-portable-greymap", + "image/x-portablebitmap" + ] + }, + "accept-charset": {}, + "action": {}, + "align": {}, + "alt": {}, + "archive": {}, + "async": { + "type": "flag" + }, + "autocomplete": { + "attribOption": [ + "additional-name", + "address-level1", + "address-level2", + "address-level3", + "address-level4", + "address-line1", + "address-line2", + "address-line3", + "bday", + "bday-year", + "bday-day", + "bday-month", + "billing", + "cc-additional-name", + "cc-csc", + "cc-exp", + "cc-exp-month", + "cc-exp-year", + "cc-family-name", + "cc-given-name", + "cc-name", + "cc-number", + "cc-type", + "country", + "country-name", + "current-password", + "email", + "family-name", + "fax", + "given-name", + "home", + "honorific-prefix", + "honorific-suffix", + "impp", + "language", + "mobile", + "name", + "new-password", + "nickname", + "off", + "on", + "organization", + "organization-title", + "pager", + "photo", + "postal-code", + "sex", + "shipping", + "street-address", + "tel-area-code", + "tel", + "tel-country-code", + "tel-extension", + "tel-local", + "tel-local-prefix", + "tel-local-suffix", + "tel-national", + "transaction-amount", + "transaction-currency", + "url", + "username", + "work" + ] + }, + "autofocus": { + "type": "flag" + }, + "autoplay": { + "type": "flag" + }, + "behavior": { + "attribOption": [ + "scroll", + "slide", + "alternate" + ] + }, + "bgcolor": { + "type": "color" + }, + "border": {}, + "challenge": {}, + "charset": { + "attribOption": [ + "iso-8859-1", + "utf-8", + "shift_jis", + "euc-jp", + "big5", + "gb2312", + "euc-kr", + "din_66003-kr", + "ns_4551-1-kr", + "sen_850200_b", + "csISO2022jp", + "hz-gb-2312", + "ibm852", + "ibm866", + "irv", + "iso-2022-kr", + "iso-8859-2", + "iso-8859-3", + "iso-8859-4", + "iso-8859-5", + "iso-8859-6", + "iso-8859-7", + "iso-8859-8", + "iso-8859-9", + "koi8-r", + "ks_c_5601", + "windows-1250", + "windows-1251", + "windows-1252", + "windows-1253", + "windows-1254", + "windows-1255", + "windows-1256", + "windows-1257", + "windows-1258", + "windows-874", + "x-euc", + "asmo-708", + "dos-720", + "dos-862", + "dos-874", + "cp866", + "cp1256" + ] + }, + "checked": { + "type": "flag" + }, + "cite": {}, + "codebase": {}, + "codetype": {}, + "cols": {}, + "colspan": {}, + "content": {}, + "controls": { + "type": "flag" + }, + "coords": {}, + "data": {}, + "datetime": {}, + "declare": { + "type": "flag" + }, + "default": { + "type": "flag" + }, + "defer": { + "type": "flag" + }, + "direction": { + "attribOption": [ + "left", + "right", + "up", + "down" + ] + }, + "dirname": {}, + "disabled": { + "type": "flag" + }, + "enctype": { + "attribOption": [ + "application/x-www-form-urlencoded", + "multipart/form-data", + "text/plain" + ] + }, + "for": {}, + "form": {}, + "formaction": {}, + "formenctype": { + "attribOption": [ + "application/x-www-form-urlencoded", + "multipart/form-data", + "text/plain" + ] + }, + "formmethod": { + "attribOption": [ + "get", + "post" + ] + }, + "formnovalidate": { + "type": "flag" + }, + "formtarget": { + "attribOption": [ + "_blank", + "_parent", + "_self", + "_top" + ] + }, + "headers": {}, + "height": {}, + "high": {}, + "href": {}, + "hreflang": {}, + "hspace": {}, + "http-equiv": { + "attribOption": [ + "content-type", + "default-style", + "refresh" + ] + }, + "icon": {}, + "ismap": { + "type": "flag" + }, + "keytype": { + "attribOption": [ + "dsa", + "ec", + "rsa" + ] + }, + "kind": { + "attribOption": [ + "captions", + "chapters", + "descriptions", + "metadata", + "subtitles" + ] + }, + "label": {}, + "list": {}, + "longdesc": {}, + "loop": { + "type": "flag" + }, + "low": {}, + "manifest": {}, + "max": {}, + "maxlength": {}, + "media": { + "attribOption": [ + "screen", + "tty", + "tv", + "projection", + "handheld", + "print", + "aural", + "braille", + "embossed", + "speech", + "all", + "width", + "min-width", + "max-width", + "height", + "min-height", + "max-height", + "device-width", + "min-device-width", + "max-device-width", + "device-height", + "min-device-height", + "max-device-height", + "orientation", + "aspect-ratio", + "min-aspect-ratio", + "max-aspect-ratio", + "device-aspect-ratio", + "min-device-aspect-ratio", + "max-device-aspect-ratio", + "color", + "min-color", + "max-color", + "color-index", + "min-color-index", + "max-color-index", + "monochrome", + "min-monochrome", + "max-monochrome", + "resolution", + "min-resolution", + "max-resolution", + "scan", + "grid" + ], + "allowMultipleValues": "true" + }, + "mediagroup": {}, + "method": { + "attribOption": [ + "get", + "post" + ] + }, + "min": {}, + "multiple": { + "type": "flag" + }, + "muted": { + "type": "flag" + }, + "name": {}, + "meta/name": { + "attribOption": [ + "application-name", + "author", + "description", + "generator", + "keywords" + ] + }, + "novalidate": { + "type": "flag" + }, + "open": { + "type": "flag" + }, + "optimum": {}, + "pattern": {}, + "placeholder": {}, + "poster": {}, + "preload": { + "attribOption": [ + "auto", + "metadata", + "none" + ] + }, + "pubdate": {}, + "radiogroup": {}, + "rel": { + "attribOption": [ + "alternate", + "author", + "bookmark", + "help", + "license", + "next", + "nofollow", + "noreferrer", + "prefetch", + "prev", + "search", + "sidebar", + "tag", + "external" + ] + }, + "link/rel": { + "attribOption": [ + "alternate", + "author", + "help", + "icon", + "license", + "next", + "pingback", + "prefetch", + "prev", + "search", + "sidebar", + "stylesheet", + "tag" + ] + }, + "readonly": { + "type": "flag" + }, + "required": { + "type": "flag" + }, + "reversed": { + "type": "flag" + }, + "rows": {}, + "rowspan": {}, + "sandbox": { + "attribOption": [ + "allow-forms", + "allow-same-origin", + "allow-scripts", + "allow-top-navigation" + ] + }, + "seamless": { + "type": "flag" + }, + "selected": { + "type": "flag" + }, + "scope": { + "attribOption": [ + "col", + "colgroup", + "row", + "rowgroup" + ] + }, + "scoped": { + "type": "boolean" + }, + "scrollamount": {}, + "scrolldelay": {}, + "shape": { + "attribOption": [ + "circle", + "default", + "poly", + "rect" + ] + }, + "size": {}, + "sizes": { + "attribOption": [ + "any" + ] + }, + "span": {}, + "src": {}, + "srcdoc": {}, + "srclang": {}, + "standby": {}, + "start": {}, + "step": {}, + "target": { + "attribOption": [ + "_blank", + "_parent", + "_self", + "_top" + ] + }, + "truespeed": { + "type": "flag" + }, + "type": {}, + "button/type": { + "attribOption": [ + "button", + "reset", + "submit" + ] + }, + "command/type": { + "attribOption": [ + "command", + "checkbox", + "radio" + ] + }, + "link/type": { + "attribOption": [ + "text/css" + ] + }, + "menu/type": { + "attribOption": [ + "context", + "list", + "toolbar" + ] + }, + "ol/type": { + "attribOption": [ + "1", + "a", + "A", + "i", + "I" + ] + }, + "script/type": { + "attribOption": [ + "text/javascript", + "text/ecmascript", + "text/jscript", + "text/livescript", + "text/tcl", + "text/x-javascript", + "text/x-ecmascript", + "application/x-javascript", + "application/x-ecmascript", + "application/javascript", + "application/ecmascript", + "text/babel", + "text/jsx" + ] + }, + "style/type": { + "attribOption": [ + "text/css" + ] + }, + "input/type": { + "attribOption": [ + "button", + "checkbox", + "color", + "date", + "datetime", + "datetime-local", + "email", + "file", + "hidden", + "image", + "month", + "number", + "password", + "radio", + "range", + "reset", + "search", + "submit", + "tel", + "text", + "time", + "url", + "week" + ] + }, + "usemap": {}, + "value": {}, + "vspace": {}, + "width": {}, + "wrap": { + "attribOption": [ + "hard", + "soft" + ] + }, + "xml:lang": {}, + "xmlns": {} +} diff --git a/packages/autocomplete-html/update2.js b/packages/autocomplete-html/update/update.js similarity index 86% rename from packages/autocomplete-html/update2.js rename to packages/autocomplete-html/update/update.js index 8f0f8c98b..a75e23b65 100644 --- a/packages/autocomplete-html/update2.js +++ b/packages/autocomplete-html/update/update.js @@ -95,9 +95,24 @@ within the `web/html/attributes` folder. Instead we may have to parse a table of values from `attributes/index.md` as that contains many items and links to unwritten pages. + ============================================================================== + ============================================================================== + The last note of our implementation. + The provided attributes used within our `completions.json` seem interesting. + The majority of them are only attributes that are not suggested via tags we have. + Additionally all of the information, like mentioned earlier, would be rather + difficult to automatically collect. Since we have no reliable way to obtain `type`, + `global` values. With only the `description` being acheivable. But considering + that this list is non-exhustive, and is explicitely items not included above + it leads me to beleive that this list has been manually curated since inception. + And rather than attempt to manually curate all of it's unique parts with only + descriptions and global status being manual, while increasing the size ten-fold + to include all possible attributes, it may be best to leave as is, and reinsert + it into our completions during update time. */ const chromiumElementsShim = require("./chromium-elements-shim.js"); +const curatedAttributes = require("./curated-attributes.json"); const elements = require("@webref/elements"); const fs = require("fs"); @@ -111,9 +126,22 @@ async function update() { const tagsWithAttrs = matchElementInterface(fullArrayHtmlElements, chromiumElements.DOMPinnedProperties); // tagsWithAttrs gives us an already built object for tags. Including their description. - fs.writeFileSync("./tmp-working.json", JSON.stringify(tagsWithAttrs, null, 2)); - console.log(GLOBAL_ATTRIBUTES); + // Like mentioned in the docs above, instead of manually curate and organize + // several aspects of the attributes portion of the file + // we will simply just insert the manually curated file itself, allowing for any + // change to occur to it later on as needed, as no good data source specifies + // what is needed to create it. + + const completion = { + tags: tagsWithAttrs, + attributes: curatedAttributes + }; + + // Now to write our file + fs.writeFileSync("./completions.json", JSON.stringify(completion, null, 2)); + + console.log("Updated all `autocomplete-html` completions."); } function buildHtmlElementsArray(elements) { From 3c8c8a0a99ecc321632659cfffe6eb53f8e28423 Mon Sep 17 00:00:00 2001 From: confused_techie <dev@lhbasics.com> Date: Mon, 27 Feb 2023 15:42:26 -0800 Subject: [PATCH 05/85] Update packages/autocomplete-html/update/update.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Maurício Szabo <mauricioszabo@users.noreply.github.com> --- packages/autocomplete-html/update/update.js | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/packages/autocomplete-html/update/update.js b/packages/autocomplete-html/update/update.js index a75e23b65..0f85efb28 100644 --- a/packages/autocomplete-html/update/update.js +++ b/packages/autocomplete-html/update/update.js @@ -225,17 +225,8 @@ function getElementDescription(element) { // Some elements are similar enough they exist in a single folder of a different // name. So we will manually intervein in those cases. - const substitueElements = { - "h1": "heading_elements", - "h2": "heading_elements", - "h3": "heading_elements", - "h4": "heading_elements", - "h5": "heading_elements", - "h6": "heading_elements" - }; - - if (substitueElements[element]) { - element = substitueElements[element]; + if (element.match(/^h[1-6]$/)) { + element = 'heading_elements'; } let file; From 748e7f676c46f4f6325a2d97404405c332da75b1 Mon Sep 17 00:00:00 2001 From: confused-Techie <dev@lhbasics.com> Date: Mon, 27 Feb 2023 16:23:54 -0800 Subject: [PATCH 06/85] Added additional suggestions manually MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Maurício Szabo <mauricioszabo@users.noreply.github.com> --- packages/autocomplete-html/update/update.js | 23 +++++++++++---------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/packages/autocomplete-html/update/update.js b/packages/autocomplete-html/update/update.js index a75e23b65..a8c45c9f4 100644 --- a/packages/autocomplete-html/update/update.js +++ b/packages/autocomplete-html/update/update.js @@ -243,12 +243,12 @@ function getElementDescription(element) { // First lets find the file, but when not initially found, we will continue // to search valid locations. Since MDN has content of valid tags seperated // by essentially the spec they exist in. - if (fs.existsSync(`./node_modules/content/files/en-us/web/html/element/${element}/index.md`)) { - file = fs.readFileSync(`./node_modules/content/files/en-us/web/html/element/${element}/index.md`, { encoding: "utf8" }); - } else if (fs.existsSync(`./node_modules/content/files/en-us/web/svg/element/${element}/index.md`)) { - file = fs.readFileSync(`./node_modules/content/files/en-us/web/svg/element/${element}/index.md`, { encoding: "utf8" }); - } else if (fs.existsSync(`./node_modules/content/files/en-us/web/mathml/element/${element}/index.md`)) { - file = fs.readFileSync(`./node_modules/content/files/en-us/web/mathml/element/${element}/index.md`, { encoding: "utf8" }); + const filePath = [ "html", "svg", "mathml" ].map(path => + `./node_modules/content/files/en-us/web/${path}/element/${element}/index.md` + ).find(f => fs.existsSync(f)); + + if (filePath) { + file = fs.readFileSync(filePath, { encoding: "utf8" }); } if (typeof file === "string") { @@ -270,12 +270,13 @@ function getElementDescription(element) { if (summaryRaw[i].length > 1) { return summaryRaw[i] .replace(/\{\{\S+\("(\S+)"\)\}\}/g, '$1') - .replace(/\*/g, "") - .replace(/\`/g, "") - .replace(/\{/g, "") - .replace(/\}/g, "") - .replace(/\"/g, "") + // ^ Parses special MDN Markdown Links. + // eg. {{htmlattrxref("title")}} => title + // Where we still want to keep the text within + .replace(/[\*\`\{\}\"]/g, "") // Removes special Markdown based characters .replace(/\[([A-Za-z0-9-_* ]+)\]\(\S+\)/g, '$1'); + // ^ Parses Markdown links, extracting only the linked text + // eg. [HTML](/en-US/docs/Web/HTML) => HTML } } } else { From 31b297e08a74dc721e3098cde6b6be89c4372e4b Mon Sep 17 00:00:00 2001 From: confused-Techie <dev@lhbasics.com> Date: Mon, 27 Feb 2023 19:01:11 -0800 Subject: [PATCH 07/85] Some testing, and object validation, less verbose description --- packages/autocomplete-html/package-lock.json | 7242 +++++++++++++++++ packages/autocomplete-html/package.json | 5 +- packages/autocomplete-html/update/update.js | 150 +- .../autocomplete-html/update/update.test.js | 34 + packages/autocomplete-html/update/validate.js | 77 + 5 files changed, 7412 insertions(+), 96 deletions(-) create mode 100644 packages/autocomplete-html/update/update.test.js create mode 100644 packages/autocomplete-html/update/validate.js diff --git a/packages/autocomplete-html/package-lock.json b/packages/autocomplete-html/package-lock.json index e2a54c3b3..f21159400 100644 --- a/packages/autocomplete-html/package-lock.json +++ b/packages/autocomplete-html/package-lock.json @@ -13,12 +13,664 @@ "chrome-devtools-frontend": "^1.0.1070764", "content": "github:mdn/content", "esm": "^3.2.25", + "jest": "^29.4.3", + "joi": "^17.8.3", "ts-import": "^2.0.40" }, "engines": { "atom": ">=0.174.0 <2.0.0" } }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz", + "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.0.tgz", + "integrity": "sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.21.0", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.21.0", + "@babel/helpers": "^7.21.0", + "@babel/parser": "^7.21.0", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/@babel/core/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/core/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.21.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.1.tgz", + "integrity": "sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.21.0", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", + "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.2", + "@babel/types": "^7.21.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", + "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.2.tgz", + "integrity": "sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", + "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.2.tgz", + "integrity": "sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.21.1", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.21.2", + "@babel/types": "^7.21.2", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/traverse/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@babel/types": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.2.tgz", + "integrity": "sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, "node_modules/@caporal/core": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/@caporal/core/-/core-2.0.2.tgz", @@ -119,6 +771,707 @@ "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==", "dev": true }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "dev": true + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.4.3.tgz", + "integrity": "sha512-W/o/34+wQuXlgqlPYTansOSiBnuxrTv61dEVkA6HNmpcgHLUjfaUbdqt6oVvOzaawwo9IdW9QOtMgQ1ScSZC4A==", + "dev": true, + "dependencies": { + "@jest/types": "^29.4.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.4.3", + "jest-util": "^29.4.3", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/console/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/core": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.4.3.tgz", + "integrity": "sha512-56QvBq60fS4SPZCuM7T+7scNrkGIe7Mr6PVIXUpu48ouvRaWOFqRPV91eifvFM0ay2HmfswXiGf97NGUN5KofQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.4.3", + "@jest/reporters": "^29.4.3", + "@jest/test-result": "^29.4.3", + "@jest/transform": "^29.4.3", + "@jest/types": "^29.4.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.4.3", + "jest-config": "^29.4.3", + "jest-haste-map": "^29.4.3", + "jest-message-util": "^29.4.3", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.4.3", + "jest-resolve-dependencies": "^29.4.3", + "jest-runner": "^29.4.3", + "jest-runtime": "^29.4.3", + "jest-snapshot": "^29.4.3", + "jest-util": "^29.4.3", + "jest-validate": "^29.4.3", + "jest-watcher": "^29.4.3", + "micromatch": "^4.0.4", + "pretty-format": "^29.4.3", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/core/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@jest/core/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/core/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/core/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@jest/environment": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.4.3.tgz", + "integrity": "sha512-dq5S6408IxIa+lr54zeqce+QgI+CJT4nmmA+1yzFgtcsGK8c/EyiUb9XQOgz3BMKrRDfKseeOaxj2eO8LlD3lA==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^29.4.3", + "@jest/types": "^29.4.3", + "@types/node": "*", + "jest-mock": "^29.4.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.4.3.tgz", + "integrity": "sha512-iktRU/YsxEtumI9zsPctYUk7ptpC+AVLLk1Ax3AsA4g1C+8OOnKDkIQBDHtD5hA/+VtgMd5AWI5gNlcAlt2vxQ==", + "dev": true, + "dependencies": { + "expect": "^29.4.3", + "jest-snapshot": "^29.4.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.4.3.tgz", + "integrity": "sha512-/6JWbkxHOP8EoS8jeeTd9dTfc9Uawi+43oLKHfp6zzux3U2hqOOVnV3ai4RpDYHOccL6g+5nrxpoc8DmJxtXVQ==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.4.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.4.3.tgz", + "integrity": "sha512-4Hote2MGcCTWSD2gwl0dwbCpBRHhE6olYEuTj8FMowdg3oQWNKr2YuxenPQYZ7+PfqPY1k98wKDU4Z+Hvd4Tiw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.4.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.4.3", + "jest-mock": "^29.4.3", + "jest-util": "^29.4.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.4.3.tgz", + "integrity": "sha512-8BQ/5EzfOLG7AaMcDh7yFCbfRLtsc+09E1RQmRBI4D6QQk4m6NSK/MXo+3bJrBN0yU8A2/VIcqhvsOLFmziioA==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.4.3", + "@jest/expect": "^29.4.3", + "@jest/types": "^29.4.3", + "jest-mock": "^29.4.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.4.3.tgz", + "integrity": "sha512-sr2I7BmOjJhyqj9ANC6CTLsL4emMoka7HkQpcoMRlhCbQJjz2zsRzw0BDPiPyEFDXAbxKgGFYuQZiSJ1Y6YoTg==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.4.3", + "@jest/test-result": "^29.4.3", + "@jest/transform": "^29.4.3", + "@jest/types": "^29.4.3", + "@jridgewell/trace-mapping": "^0.3.15", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.4.3", + "jest-util": "^29.4.3", + "jest-worker": "^29.4.3", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/reporters/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/schemas": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", + "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.25.16" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz", + "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.15", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.4.3.tgz", + "integrity": "sha512-Oi4u9NfBolMq9MASPwuWTlC5WvmNRwI4S8YrQg5R5Gi47DYlBe3sh7ILTqi/LGrK1XUE4XY9KZcQJTH1WJCLLA==", + "dev": true, + "dependencies": { + "@jest/console": "^29.4.3", + "@jest/types": "^29.4.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.4.3.tgz", + "integrity": "sha512-yi/t2nES4GB4G0mjLc0RInCq/cNr9dNwJxcGg8sslajua5Kb4kmozAc+qPLzplhBgfw1vLItbjyHzUN92UXicw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.4.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.4.3", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.4.3.tgz", + "integrity": "sha512-8u0+fBGWolDshsFgPQJESkDa72da/EVwvL+II0trN2DR66wMwiQ9/CihaGfHdlLGFzbBZwMykFtxuwFdZqlKwg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.4.3", + "@jridgewell/trace-mapping": "^0.3.15", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.4.3", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.4.3", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/transform/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/types": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.4.3.tgz", + "integrity": "sha512-bPYfw8V65v17m2Od1cv44FH+SiKW7w2Xu7trhcdTLUmSv85rfKsP+qXSjO4KGJr4dtPSzl/gvslZBXctf1qGEA==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.4.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, "node_modules/@mdn/bcd-utils-api": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/@mdn/bcd-utils-api/-/bcd-utils-api-0.0.3.tgz", @@ -278,6 +1631,33 @@ "node": ">= 8" } }, + "node_modules/@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "dev": true + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true + }, + "node_modules/@sinclair/typebox": { + "version": "0.25.24", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", + "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", + "dev": true + }, "node_modules/@sindresorhus/is": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.3.0.tgz", @@ -290,6 +1670,24 @@ "url": "https://github.com/sindresorhus/is?sponsor=1" } }, + "node_modules/@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz", + "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^2.0.0" + } + }, "node_modules/@szmarczak/http-timer": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", @@ -317,6 +1715,47 @@ "node": ">=10.13.0" } }, + "node_modules/@types/babel__core": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", + "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz", + "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.3.0" + } + }, "node_modules/@types/debug": { "version": "4.1.7", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", @@ -336,6 +1775,15 @@ "@types/node": "*" } }, + "node_modules/@types/graceful-fs": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", + "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/hast": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz", @@ -360,6 +1808,30 @@ "@types/node": "*" } }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, "node_modules/@types/lodash": { "version": "4.14.149", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.149.tgz", @@ -399,6 +1871,18 @@ "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==", "dev": true }, + "node_modules/@types/prettier": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", + "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", + "dev": true + }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, "node_modules/@types/table": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/@types/table/-/table-5.0.0.tgz", @@ -432,6 +1916,21 @@ "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==", "dev": true }, + "node_modules/@types/yargs": { + "version": "17.0.22", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.22.tgz", + "integrity": "sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, "node_modules/@use-it/interval": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@use-it/interval/-/interval-1.0.0.tgz", @@ -546,6 +2045,19 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/arch": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", @@ -626,6 +2138,146 @@ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true }, + "node_modules/babel-jest": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.4.3.tgz", + "integrity": "sha512-o45Wyn32svZE+LnMVWv/Z4x0SwtLbh4FyGcYtR20kIWd+rdrDZ9Fzq8Ml3MYLD+mZvEdzCjZsCnYZ2jpJyQ+Nw==", + "dev": true, + "dependencies": { + "@jest/transform": "^29.4.3", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.4.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/babel-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.4.3.tgz", + "integrity": "sha512-mB6q2q3oahKphy5V7CpnNqZOCkxxZ9aokf1eh82Dy3jQmg4xvM1tGrh5y6BQUJh4a3Pj9+eLfwvAZ7VNKg7H8Q==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.4.3.tgz", + "integrity": "sha512-gWx6COtSuma6n9bw+8/F+2PCXrIgxV/D1TJFnp6OyBK2cxPWg0K9p/sriNYeifKjpUkMViWQ09DSWtzJQRETsw==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^29.4.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/bail": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", @@ -1232,6 +2884,43 @@ "node": ">=8" } }, + "node_modules/browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, "node_modules/buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", @@ -1342,6 +3031,40 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001458", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001458.tgz", + "integrity": "sha512-lQ1VlUUq5q9ro9X+5gOEyH7i3vm+AYVT1WDCVB69XOZ17KZRhnZ9J0Sqz7wTHQaLBJccNCHq8/Ww5LlOIZbB0w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, "node_modules/caw": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz", @@ -1379,6 +3102,15 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/character-entities": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", @@ -1459,6 +3191,27 @@ "integrity": "sha512-MJCZgLZlKgIpE+gemtc1a9ejPopTA2Rj1iEdRnxl8YON7V13Po4W1vKo+YrVcqUbNpVAaQ5NnZLQQOmnIRTXZg==", "dev": true }, + "node_modules/ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true + }, "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -1555,6 +3308,91 @@ "node": ">= 12" } }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cliui/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/cliui/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", @@ -1582,6 +3420,22 @@ "node": ">=4" } }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, "node_modules/color": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", @@ -1750,6 +3604,12 @@ "node": ">= 0.6" } }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, "node_modules/cookie": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", @@ -2139,6 +3999,21 @@ "node": ">=0.10.0" } }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", + "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/defaults": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", @@ -2197,6 +4072,15 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/dexie": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/dexie/-/dexie-3.2.3.tgz", @@ -2226,6 +4110,15 @@ "node": ">=0.3.1" } }, + "node_modules/diff-sequences": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", + "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -2478,6 +4371,24 @@ "node": ">=0.10.0" } }, + "node_modules/electron-to-chromium": { + "version": "1.4.313", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.313.tgz", + "integrity": "sha512-QckB9OVqr2oybjIrbMI99uF+b9+iTja5weFe0ePbqLb5BHqXOJUO1SG6kDj/1WtWPRIBr51N153AEq8m7HuIaA==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -2557,12 +4468,36 @@ "integrity": "sha512-bHz59NlBbtS0NhftmR8+ExBEekE7br0e01jw+kk0NDro7TtZzBYZ5ScGPs3OmwnpyfHTHOtr1Y6uedCdrIldtg==", "dev": true }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-ex/node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, "node_modules/es6-promisify": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.1.1.tgz", "integrity": "sha512-HBL8I3mIki5C1Cc9QjKUenHtnG0A5/xA8Q/AllRcfiwl2CZFXGK7ddBiCoRwAix4i2KxcQfjtIVcrVbB3vbmwg==", "dev": true }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -2733,6 +4668,31 @@ "integrity": "sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==", "dev": true }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.4.3.tgz", + "integrity": "sha512-uC05+Q7eXECFpgDrHdXA4k2rpMyStAYPItEDLyQDo5Ta7fVkJnNA/4zh/OIVkVVNZ1oOK1PipQoyNjuZ6sz6Dg==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^29.4.3", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.4.3", + "jest-message-util": "^29.4.3", + "jest-util": "^29.4.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/express": { "version": "4.18.2", "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", @@ -2888,6 +4848,15 @@ "reusify": "^1.0.4" } }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, "node_modules/fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", @@ -3039,6 +5008,19 @@ "node": ">= 0.8" } }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/find-versions": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz", @@ -3195,12 +5177,44 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/get-intrinsic": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", @@ -3215,6 +5229,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/get-proxy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", @@ -3339,6 +5362,15 @@ "node": ">= 6" } }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/globby": { "version": "12.2.0", "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", @@ -3664,6 +5696,12 @@ "htmlparser2": "8.0.1" } }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, "node_modules/html-react-parser": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/html-react-parser/-/html-react-parser-3.0.9.tgz", @@ -4227,6 +6265,34 @@ "node": ">=6" } }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, "node_modules/indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", @@ -4387,6 +6453,18 @@ "node": ">=4" } }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -4423,6 +6501,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/is-gif": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-gif/-/is-gif-3.0.0.tgz", @@ -4594,6 +6681,128 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/istanbul-lib-report/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/isurl": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", @@ -4674,6 +6883,1392 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/jest": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.4.3.tgz", + "integrity": "sha512-XvK65feuEFGZT8OO0fB/QAQS+LGHvQpaadkH5p47/j3Ocqq3xf2pK9R+G0GzgfuhXVxEv76qCOOcMb5efLk6PA==", + "dev": true, + "dependencies": { + "@jest/core": "^29.4.3", + "@jest/types": "^29.4.3", + "import-local": "^3.0.2", + "jest-cli": "^29.4.3" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.4.3.tgz", + "integrity": "sha512-Vn5cLuWuwmi2GNNbokPOEcvrXGSGrqVnPEZV7rC6P7ck07Dyw9RFnvWglnupSh+hGys0ajGtw/bc2ZgweljQoQ==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-changed-files/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/jest-changed-files/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-changed-files/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.4.3.tgz", + "integrity": "sha512-Vw/bVvcexmdJ7MLmgdT3ZjkJ3LKu8IlpefYokxiqoZy6OCQ2VAm6Vk3t/qHiAGUXbdbJKJWnc8gH3ypTbB/OBw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.4.3", + "@jest/expect": "^29.4.3", + "@jest/test-result": "^29.4.3", + "@jest/types": "^29.4.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.4.3", + "jest-matcher-utils": "^29.4.3", + "jest-message-util": "^29.4.3", + "jest-runtime": "^29.4.3", + "jest-snapshot": "^29.4.3", + "jest-util": "^29.4.3", + "p-limit": "^3.1.0", + "pretty-format": "^29.4.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-circus/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-cli": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.4.3.tgz", + "integrity": "sha512-PiiAPuFNfWWolCE6t3ZrDXQc6OsAuM3/tVW0u27UWc1KE+n/HSn5dSE6B2juqN7WP+PP0jAcnKtGmI4u8GMYCg==", + "dev": true, + "dependencies": { + "@jest/core": "^29.4.3", + "@jest/test-result": "^29.4.3", + "@jest/types": "^29.4.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^29.4.3", + "jest-util": "^29.4.3", + "jest-validate": "^29.4.3", + "prompts": "^2.0.1", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-config": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.4.3.tgz", + "integrity": "sha512-eCIpqhGnIjdUCXGtLhz4gdDoxKSWXKjzNcc5r+0S1GKOp2fwOipx5mRcwa9GB/ArsxJ1jlj2lmlD9bZAsBxaWQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.4.3", + "@jest/types": "^29.4.3", + "babel-jest": "^29.4.3", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.4.3", + "jest-environment-node": "^29.4.3", + "jest-get-type": "^29.4.3", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.4.3", + "jest-runner": "^29.4.3", + "jest-util": "^29.4.3", + "jest-validate": "^29.4.3", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.4.3", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-config/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-diff": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.4.3.tgz", + "integrity": "sha512-YB+ocenx7FZ3T5O9lMVMeLYV4265socJKtkwgk/6YUz/VsEzYDkiMuMhWzZmxm3wDRQvayJu/PjkjjSkjoHsCA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.4.3", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.4.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-docblock": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", + "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.4.3.tgz", + "integrity": "sha512-1ElHNAnKcbJb/b+L+7j0/w7bDvljw4gTv1wL9fYOczeJrbTbkMGQ5iQPFJ3eFQH19VPTx1IyfePdqSpePKss7Q==", + "dev": true, + "dependencies": { + "@jest/types": "^29.4.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.4.3", + "jest-util": "^29.4.3", + "pretty-format": "^29.4.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-each/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-environment-node": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.4.3.tgz", + "integrity": "sha512-gAiEnSKF104fsGDXNkwk49jD/0N0Bqu2K9+aMQXA6avzsA9H3Fiv1PW2D+gzbOSR705bWd2wJZRFEFpV0tXISg==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.4.3", + "@jest/fake-timers": "^29.4.3", + "@jest/types": "^29.4.3", + "@types/node": "*", + "jest-mock": "^29.4.3", + "jest-util": "^29.4.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", + "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.4.3.tgz", + "integrity": "sha512-eZIgAS8tvm5IZMtKlR8Y+feEOMfo2pSQkmNbufdbMzMSn9nitgGxF1waM/+LbryO3OkMcKS98SUb+j/cQxp/vQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.4.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.4.3", + "jest-worker": "^29.4.3", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.4.3.tgz", + "integrity": "sha512-9yw4VC1v2NspMMeV3daQ1yXPNxMgCzwq9BocCwYrRgXe4uaEJPAN0ZK37nFBhcy3cUwEVstFecFLaTHpF7NiGA==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.4.3", + "pretty-format": "^29.4.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.4.3.tgz", + "integrity": "sha512-TTciiXEONycZ03h6R6pYiZlSkvYgT0l8aa49z/DLSGYjex4orMUcafuLXYyyEDWB1RKglq00jzwY00Ei7yFNVg==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.4.3", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.4.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-message-util": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.4.3.tgz", + "integrity": "sha512-1Y8Zd4ZCN7o/QnWdMmT76If8LuDv23Z1DRovBj/vcSFNlGCJGoO8D1nJDw1AdyAGUk0myDLFGN5RbNeJyCRGCw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.4.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.4.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-mock": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.4.3.tgz", + "integrity": "sha512-LjFgMg+xed9BdkPMyIJh+r3KeHt1klXPJYBULXVVAkbTaaKjPX1o1uVCAZADMEp/kOxGTwy/Ot8XbvgItOrHEg==", + "dev": true, + "dependencies": { + "@jest/types": "^29.4.3", + "@types/node": "*", + "jest-util": "^29.4.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", + "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.4.3.tgz", + "integrity": "sha512-GPokE1tzguRyT7dkxBim4wSx6E45S3bOQ7ZdKEG+Qj0Oac9+6AwJPCk0TZh5Vu0xzeX4afpb+eDmgbmZFFwpOw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.4.3", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.4.3", + "jest-validate": "^29.4.3", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.4.3.tgz", + "integrity": "sha512-uvKMZAQ3nmXLH7O8WAOhS5l0iWyT3WmnJBdmIHiV5tBbdaDZ1wqtNX04FONGoaFvSOSHBJxnwAVnSn1WHdGVaw==", + "dev": true, + "dependencies": { + "jest-regex-util": "^29.4.3", + "jest-snapshot": "^29.4.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-resolve/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runner": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.4.3.tgz", + "integrity": "sha512-GWPTEiGmtHZv1KKeWlTX9SIFuK19uLXlRQU43ceOQ2hIfA5yPEJC7AMkvFKpdCHx6pNEdOD+2+8zbniEi3v3gA==", + "dev": true, + "dependencies": { + "@jest/console": "^29.4.3", + "@jest/environment": "^29.4.3", + "@jest/test-result": "^29.4.3", + "@jest/transform": "^29.4.3", + "@jest/types": "^29.4.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.4.3", + "jest-environment-node": "^29.4.3", + "jest-haste-map": "^29.4.3", + "jest-leak-detector": "^29.4.3", + "jest-message-util": "^29.4.3", + "jest-resolve": "^29.4.3", + "jest-runtime": "^29.4.3", + "jest-util": "^29.4.3", + "jest-watcher": "^29.4.3", + "jest-worker": "^29.4.3", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runner/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/jest-runtime": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.4.3.tgz", + "integrity": "sha512-F5bHvxSH+LvLV24vVB3L8K467dt3y3dio6V3W89dUz9nzvTpqd/HcT9zfYKL2aZPvD63vQFgLvaUX/UpUhrP6Q==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.4.3", + "@jest/fake-timers": "^29.4.3", + "@jest/globals": "^29.4.3", + "@jest/source-map": "^29.4.3", + "@jest/test-result": "^29.4.3", + "@jest/transform": "^29.4.3", + "@jest/types": "^29.4.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.4.3", + "jest-message-util": "^29.4.3", + "jest-mock": "^29.4.3", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.4.3", + "jest-snapshot": "^29.4.3", + "jest-util": "^29.4.3", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runtime/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-snapshot": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.4.3.tgz", + "integrity": "sha512-NGlsqL0jLPDW91dz304QTM/SNO99lpcSYYAjNiX0Ou+sSGgkanKBcSjCfp/pqmiiO1nQaOyLp6XQddAzRcx3Xw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.4.3", + "@jest/transform": "^29.4.3", + "@jest/types": "^29.4.3", + "@types/babel__traverse": "^7.0.6", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.4.3", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.4.3", + "jest-get-type": "^29.4.3", + "jest-haste-map": "^29.4.3", + "jest-matcher-utils": "^29.4.3", + "jest-message-util": "^29.4.3", + "jest-util": "^29.4.3", + "natural-compare": "^1.4.0", + "pretty-format": "^29.4.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-snapshot/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/jest-util": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.4.3.tgz", + "integrity": "sha512-ToSGORAz4SSSoqxDSylWX8JzkOQR7zoBtNRsA7e+1WUX5F8jrOwaNpuh1YfJHJKDHXLHmObv5eOjejUd+/Ws+Q==", + "dev": true, + "dependencies": { + "@jest/types": "^29.4.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-validate": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.4.3.tgz", + "integrity": "sha512-J3u5v7aPQoXPzaar6GndAVhdQcZr/3osWSgTeKg5v574I9ybX/dTyH0AJFb5XgXIB7faVhf+rS7t4p3lL9qFaw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.4.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.4.3", + "leven": "^3.1.0", + "pretty-format": "^29.4.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-validate/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-watcher": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.4.3.tgz", + "integrity": "sha512-zwlXH3DN3iksoIZNk73etl1HzKyi5FuQdYLnkQKm5BW4n8HpoG59xSwpVdFrnh60iRRaRBGw0gcymIxjJENPcA==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.4.3", + "@jest/types": "^29.4.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.4.3", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-watcher/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-watcher/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-watcher/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-watcher/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-worker": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.4.3.tgz", + "integrity": "sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.4.3", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/joi": { + "version": "17.8.3", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.8.3.tgz", + "integrity": "sha512-q5Fn6Tj/jR8PfrLrx4fpGH4v9qM6o+vDUfD4/3vxxyg34OmKcNqYZ1qn2mpLza96S8tL0p0rIw2gOZX+/cTg9w==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, "node_modules/jose": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/jose/-/jose-4.12.0.tgz", @@ -4701,18 +8296,48 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -4761,6 +8386,15 @@ "colornames": "^1.1.1" } }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/lilconfig": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", @@ -4797,6 +8431,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, "node_modules/linkify-it": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", @@ -5115,6 +8755,18 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/lodash": { "version": "4.17.15", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", @@ -5399,6 +9051,15 @@ "node": ">=4" } }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, "node_modules/markdown-it": { "version": "13.0.1", "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.1.tgz", @@ -6537,6 +10198,12 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -6552,6 +10219,18 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "dev": true + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -6895,6 +10574,48 @@ "node": ">=4" } }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-map": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", @@ -6955,6 +10676,33 @@ "node": ">=4" } }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/parse5": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", @@ -6989,6 +10737,15 @@ "node": ">= 0.8" } }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -7007,6 +10764,12 @@ "node": ">=8" } }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, "node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -7101,6 +10864,27 @@ "node": ">=0.10.0" } }, + "node_modules/pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/pngquant-bin": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/pngquant-bin/-/pngquant-bin-6.0.1.tgz", @@ -7214,6 +10998,38 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/pretty-format": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.3.tgz", + "integrity": "sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.4.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-format/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, "node_modules/prism-svelte": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/prism-svelte/-/prism-svelte-0.5.0.tgz", @@ -7235,6 +11051,28 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prompts/node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -7634,18 +11472,74 @@ "node": ">= 10" } }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "dev": true }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/resolve-alpn": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", "dev": true }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.0.tgz", + "integrity": "sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/responselike": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", @@ -7950,6 +11844,12 @@ "is-arrayish": "^0.3.1" } }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -8068,6 +11968,27 @@ "node": "*" } }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -8104,6 +12025,40 @@ "node": ">=0.6.19" } }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-length/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-length/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -8177,6 +12132,15 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-dirs": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", @@ -8290,6 +12254,18 @@ "node": ">=8" } }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/svgo": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", @@ -8916,6 +12892,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/text-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", @@ -8949,12 +12939,27 @@ "node": ">=0.6.0" } }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, "node_modules/to-buffer": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", "dev": true }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -9079,6 +13084,15 @@ "node": "*" } }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/type-fest": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.6.0.tgz", @@ -9305,6 +13319,32 @@ "node": ">=4" } }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -9384,6 +13424,26 @@ "node": ">=8" } }, + "node_modules/v8-to-istanbul": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -9437,6 +13497,15 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, "node_modules/warning": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", @@ -9603,6 +13672,19 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -9612,6 +13694,15 @@ "node": ">=0.4" } }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", @@ -9627,6 +13718,33 @@ "node": ">= 14" } }, + "node_modules/yargs": { + "version": "17.7.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", + "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", @@ -9637,6 +13755,18 @@ "fd-slicer": "~1.1.0" } }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/zwitch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", @@ -9649,6 +13779,496 @@ } }, "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/compat-data": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz", + "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==", + "dev": true + }, + "@babel/core": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.0.tgz", + "integrity": "sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.21.0", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.21.0", + "@babel/helpers": "^7.21.0", + "@babel/parser": "^7.21.0", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "dependencies": { + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.21.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.1.tgz", + "integrity": "sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==", + "dev": true, + "requires": { + "@babel/types": "^7.21.0", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/helper-compilation-targets": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true + }, + "@babel/helper-function-name": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "dev": true, + "requires": { + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", + "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.2", + "@babel/types": "^7.21.2" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true + }, + "@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "requires": { + "@babel/types": "^7.20.2" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "dev": true + }, + "@babel/helpers": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", + "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", + "dev": true, + "requires": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0" + } + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.2.tgz", + "integrity": "sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==", + "dev": true + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", + "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + } + }, + "@babel/traverse": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.2.tgz", + "integrity": "sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.21.1", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.21.2", + "@babel/types": "^7.21.2", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.2.tgz", + "integrity": "sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, "@caporal/core": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/@caporal/core/-/core-2.0.2.tgz", @@ -9735,6 +14355,544 @@ } } }, + "@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "dev": true + }, + "@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jest/console": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.4.3.tgz", + "integrity": "sha512-W/o/34+wQuXlgqlPYTansOSiBnuxrTv61dEVkA6HNmpcgHLUjfaUbdqt6oVvOzaawwo9IdW9QOtMgQ1ScSZC4A==", + "dev": true, + "requires": { + "@jest/types": "^29.4.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.4.3", + "jest-util": "^29.4.3", + "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "@jest/core": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.4.3.tgz", + "integrity": "sha512-56QvBq60fS4SPZCuM7T+7scNrkGIe7Mr6PVIXUpu48ouvRaWOFqRPV91eifvFM0ay2HmfswXiGf97NGUN5KofQ==", + "dev": true, + "requires": { + "@jest/console": "^29.4.3", + "@jest/reporters": "^29.4.3", + "@jest/test-result": "^29.4.3", + "@jest/transform": "^29.4.3", + "@jest/types": "^29.4.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.4.3", + "jest-config": "^29.4.3", + "jest-haste-map": "^29.4.3", + "jest-message-util": "^29.4.3", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.4.3", + "jest-resolve-dependencies": "^29.4.3", + "jest-runner": "^29.4.3", + "jest-runtime": "^29.4.3", + "jest-snapshot": "^29.4.3", + "jest-util": "^29.4.3", + "jest-validate": "^29.4.3", + "jest-watcher": "^29.4.3", + "micromatch": "^4.0.4", + "pretty-format": "^29.4.3", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } + } + }, + "@jest/environment": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.4.3.tgz", + "integrity": "sha512-dq5S6408IxIa+lr54zeqce+QgI+CJT4nmmA+1yzFgtcsGK8c/EyiUb9XQOgz3BMKrRDfKseeOaxj2eO8LlD3lA==", + "dev": true, + "requires": { + "@jest/fake-timers": "^29.4.3", + "@jest/types": "^29.4.3", + "@types/node": "*", + "jest-mock": "^29.4.3" + } + }, + "@jest/expect": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.4.3.tgz", + "integrity": "sha512-iktRU/YsxEtumI9zsPctYUk7ptpC+AVLLk1Ax3AsA4g1C+8OOnKDkIQBDHtD5hA/+VtgMd5AWI5gNlcAlt2vxQ==", + "dev": true, + "requires": { + "expect": "^29.4.3", + "jest-snapshot": "^29.4.3" + } + }, + "@jest/expect-utils": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.4.3.tgz", + "integrity": "sha512-/6JWbkxHOP8EoS8jeeTd9dTfc9Uawi+43oLKHfp6zzux3U2hqOOVnV3ai4RpDYHOccL6g+5nrxpoc8DmJxtXVQ==", + "dev": true, + "requires": { + "jest-get-type": "^29.4.3" + } + }, + "@jest/fake-timers": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.4.3.tgz", + "integrity": "sha512-4Hote2MGcCTWSD2gwl0dwbCpBRHhE6olYEuTj8FMowdg3oQWNKr2YuxenPQYZ7+PfqPY1k98wKDU4Z+Hvd4Tiw==", + "dev": true, + "requires": { + "@jest/types": "^29.4.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.4.3", + "jest-mock": "^29.4.3", + "jest-util": "^29.4.3" + } + }, + "@jest/globals": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.4.3.tgz", + "integrity": "sha512-8BQ/5EzfOLG7AaMcDh7yFCbfRLtsc+09E1RQmRBI4D6QQk4m6NSK/MXo+3bJrBN0yU8A2/VIcqhvsOLFmziioA==", + "dev": true, + "requires": { + "@jest/environment": "^29.4.3", + "@jest/expect": "^29.4.3", + "@jest/types": "^29.4.3", + "jest-mock": "^29.4.3" + } + }, + "@jest/reporters": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.4.3.tgz", + "integrity": "sha512-sr2I7BmOjJhyqj9ANC6CTLsL4emMoka7HkQpcoMRlhCbQJjz2zsRzw0BDPiPyEFDXAbxKgGFYuQZiSJ1Y6YoTg==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.4.3", + "@jest/test-result": "^29.4.3", + "@jest/transform": "^29.4.3", + "@jest/types": "^29.4.3", + "@jridgewell/trace-mapping": "^0.3.15", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.4.3", + "jest-util": "^29.4.3", + "jest-worker": "^29.4.3", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "@jest/schemas": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", + "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.25.16" + } + }, + "@jest/source-map": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz", + "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.15", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + } + }, + "@jest/test-result": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.4.3.tgz", + "integrity": "sha512-Oi4u9NfBolMq9MASPwuWTlC5WvmNRwI4S8YrQg5R5Gi47DYlBe3sh7ILTqi/LGrK1XUE4XY9KZcQJTH1WJCLLA==", + "dev": true, + "requires": { + "@jest/console": "^29.4.3", + "@jest/types": "^29.4.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.4.3.tgz", + "integrity": "sha512-yi/t2nES4GB4G0mjLc0RInCq/cNr9dNwJxcGg8sslajua5Kb4kmozAc+qPLzplhBgfw1vLItbjyHzUN92UXicw==", + "dev": true, + "requires": { + "@jest/test-result": "^29.4.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.4.3", + "slash": "^3.0.0" + } + }, + "@jest/transform": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.4.3.tgz", + "integrity": "sha512-8u0+fBGWolDshsFgPQJESkDa72da/EVwvL+II0trN2DR66wMwiQ9/CihaGfHdlLGFzbBZwMykFtxuwFdZqlKwg==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.4.3", + "@jridgewell/trace-mapping": "^0.3.15", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.4.3", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.4.3", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "@jest/types": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.4.3.tgz", + "integrity": "sha512-bPYfw8V65v17m2Od1cv44FH+SiKW7w2Xu7trhcdTLUmSv85rfKsP+qXSjO4KGJr4dtPSzl/gvslZBXctf1qGEA==", + "dev": true, + "requires": { + "@jest/schemas": "^29.4.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, "@mdn/bcd-utils-api": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/@mdn/bcd-utils-api/-/bcd-utils-api-0.0.3.tgz", @@ -9868,12 +15026,57 @@ "fastq": "^1.6.0" } }, + "@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "dev": true + }, + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true + }, + "@sinclair/typebox": { + "version": "0.25.24", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", + "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", + "dev": true + }, "@sindresorhus/is": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.3.0.tgz", "integrity": "sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==", "dev": true }, + "@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz", + "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==", + "dev": true, + "requires": { + "@sinonjs/commons": "^2.0.0" + } + }, "@szmarczak/http-timer": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", @@ -9895,6 +15098,47 @@ "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", "dev": true }, + "@types/babel__core": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", + "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", + "dev": true, + "requires": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz", + "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, "@types/debug": { "version": "4.1.7", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", @@ -9914,6 +15158,15 @@ "@types/node": "*" } }, + "@types/graceful-fs": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", + "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/hast": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz", @@ -9938,6 +15191,30 @@ "@types/node": "*" } }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, "@types/lodash": { "version": "4.14.149", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.149.tgz", @@ -9977,6 +15254,18 @@ "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==", "dev": true }, + "@types/prettier": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", + "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", + "dev": true + }, + "@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, "@types/table": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/@types/table/-/table-5.0.0.tgz", @@ -10010,6 +15299,21 @@ "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==", "dev": true }, + "@types/yargs": { + "version": "17.0.22", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.22.tgz", + "integrity": "sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, "@use-it/interval": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@use-it/interval/-/interval-1.0.0.tgz", @@ -10089,6 +15393,16 @@ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, "arch": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", @@ -10142,6 +15456,112 @@ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true }, + "babel-jest": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.4.3.tgz", + "integrity": "sha512-o45Wyn32svZE+LnMVWv/Z4x0SwtLbh4FyGcYtR20kIWd+rdrDZ9Fzq8Ml3MYLD+mZvEdzCjZsCnYZ2jpJyQ+Nw==", + "dev": true, + "requires": { + "@jest/transform": "^29.4.3", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.4.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.4.3.tgz", + "integrity": "sha512-mB6q2q3oahKphy5V7CpnNqZOCkxxZ9aokf1eh82Dy3jQmg4xvM1tGrh5y6BQUJh4a3Pj9+eLfwvAZ7VNKg7H8Q==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.4.3.tgz", + "integrity": "sha512-gWx6COtSuma6n9bw+8/F+2PCXrIgxV/D1TJFnp6OyBK2cxPWg0K9p/sriNYeifKjpUkMViWQ09DSWtzJQRETsw==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^29.4.3", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, "bail": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", @@ -10632,6 +16052,27 @@ "fill-range": "^7.0.1" } }, + "browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, "buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", @@ -10713,6 +16154,24 @@ "get-intrinsic": "^1.0.2" } }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001458", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001458.tgz", + "integrity": "sha512-lQ1VlUUq5q9ro9X+5gOEyH7i3vm+AYVT1WDCVB69XOZ17KZRhnZ9J0Sqz7wTHQaLBJccNCHq8/Ww5LlOIZbB0w==", + "dev": true + }, "caw": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz", @@ -10737,6 +16196,12 @@ "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", "dev": true }, + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true + }, "character-entities": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", @@ -10796,6 +16261,18 @@ "integrity": "sha512-MJCZgLZlKgIpE+gemtc1a9ejPopTA2Rj1iEdRnxl8YON7V13Po4W1vKo+YrVcqUbNpVAaQ5NnZLQQOmnIRTXZg==", "dev": true }, + "ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true + }, + "cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true + }, "clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -10861,6 +16338,69 @@ "integrity": "sha512-ZksGS2xpa/bYkNzN3BAw1wEjsLV/ZKOf/CCrJ/QOBsxx6fOARIkwTutxp1XIOIohi6HKmOFjMoK/XaqDVUpEEw==", "dev": true }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, "clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", @@ -10884,6 +16424,18 @@ } } }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true + }, + "collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, "color": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", @@ -11031,6 +16583,12 @@ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, "cookie": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", @@ -11334,6 +16892,18 @@ } } }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, + "deepmerge": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", + "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", + "dev": true + }, "defaults": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", @@ -11373,6 +16943,12 @@ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, "dexie": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/dexie/-/dexie-3.2.3.tgz", @@ -11396,6 +16972,12 @@ "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", "dev": true }, + "diff-sequences": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", + "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", + "dev": true + }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -11584,6 +17166,18 @@ "jake": "^10.8.5" } }, + "electron-to-chromium": { + "version": "1.4.313", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.313.tgz", + "integrity": "sha512-QckB9OVqr2oybjIrbMI99uF+b9+iTja5weFe0ePbqLb5BHqXOJUO1SG6kDj/1WtWPRIBr51N153AEq8m7HuIaA==", + "dev": true + }, + "emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true + }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -11642,12 +17236,35 @@ "integrity": "sha512-bHz59NlBbtS0NhftmR8+ExBEekE7br0e01jw+kk0NDro7TtZzBYZ5ScGPs3OmwnpyfHTHOtr1Y6uedCdrIldtg==", "dev": true }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + } + } + }, "es6-promisify": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.1.1.tgz", "integrity": "sha512-HBL8I3mIki5C1Cc9QjKUenHtnG0A5/xA8Q/AllRcfiwl2CZFXGK7ddBiCoRwAix4i2KxcQfjtIVcrVbB3vbmwg==", "dev": true }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -11776,6 +17393,25 @@ "integrity": "sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==", "dev": true }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true + }, + "expect": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.4.3.tgz", + "integrity": "sha512-uC05+Q7eXECFpgDrHdXA4k2rpMyStAYPItEDLyQDo5Ta7fVkJnNA/4zh/OIVkVVNZ1oOK1PipQoyNjuZ6sz6Dg==", + "dev": true, + "requires": { + "@jest/expect-utils": "^29.4.3", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.4.3", + "jest-message-util": "^29.4.3", + "jest-util": "^29.4.3" + } + }, "express": { "version": "4.18.2", "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", @@ -11905,6 +17541,15 @@ "reusify": "^1.0.4" } }, + "fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, "fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", @@ -12024,6 +17669,16 @@ "unpipe": "~1.0.0" } }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, "find-versions": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz", @@ -12152,12 +17807,31 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, "get-intrinsic": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", @@ -12169,6 +17843,12 @@ "has-symbols": "^1.0.3" } }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, "get-proxy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", @@ -12252,6 +17932,12 @@ "is-glob": "^4.0.1" } }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, "globby": { "version": "12.2.0", "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", @@ -12497,6 +18183,12 @@ "htmlparser2": "8.0.1" } }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, "html-react-parser": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/html-react-parser/-/html-react-parser-3.0.9.tgz", @@ -12866,6 +18558,22 @@ "integrity": "sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==", "dev": true }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, "indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", @@ -12987,6 +18695,15 @@ "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", "dev": true }, + "is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -13005,6 +18722,12 @@ "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", "dev": true }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, "is-gif": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-gif/-/is-gif-3.0.0.tgz", @@ -13121,6 +18844,99 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, "isurl": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", @@ -13179,6 +18995,1039 @@ } } }, + "jest": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.4.3.tgz", + "integrity": "sha512-XvK65feuEFGZT8OO0fB/QAQS+LGHvQpaadkH5p47/j3Ocqq3xf2pK9R+G0GzgfuhXVxEv76qCOOcMb5efLk6PA==", + "dev": true, + "requires": { + "@jest/core": "^29.4.3", + "@jest/types": "^29.4.3", + "import-local": "^3.0.2", + "jest-cli": "^29.4.3" + } + }, + "jest-changed-files": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.4.3.tgz", + "integrity": "sha512-Vn5cLuWuwmi2GNNbokPOEcvrXGSGrqVnPEZV7rC6P7ck07Dyw9RFnvWglnupSh+hGys0ajGtw/bc2ZgweljQoQ==", + "dev": true, + "requires": { + "execa": "^5.0.0", + "p-limit": "^3.1.0" + }, + "dependencies": { + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + } + } + }, + "jest-circus": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.4.3.tgz", + "integrity": "sha512-Vw/bVvcexmdJ7MLmgdT3ZjkJ3LKu8IlpefYokxiqoZy6OCQ2VAm6Vk3t/qHiAGUXbdbJKJWnc8gH3ypTbB/OBw==", + "dev": true, + "requires": { + "@jest/environment": "^29.4.3", + "@jest/expect": "^29.4.3", + "@jest/test-result": "^29.4.3", + "@jest/types": "^29.4.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.4.3", + "jest-matcher-utils": "^29.4.3", + "jest-message-util": "^29.4.3", + "jest-runtime": "^29.4.3", + "jest-snapshot": "^29.4.3", + "jest-util": "^29.4.3", + "p-limit": "^3.1.0", + "pretty-format": "^29.4.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "jest-cli": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.4.3.tgz", + "integrity": "sha512-PiiAPuFNfWWolCE6t3ZrDXQc6OsAuM3/tVW0u27UWc1KE+n/HSn5dSE6B2juqN7WP+PP0jAcnKtGmI4u8GMYCg==", + "dev": true, + "requires": { + "@jest/core": "^29.4.3", + "@jest/test-result": "^29.4.3", + "@jest/types": "^29.4.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^29.4.3", + "jest-util": "^29.4.3", + "jest-validate": "^29.4.3", + "prompts": "^2.0.1", + "yargs": "^17.3.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "jest-config": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.4.3.tgz", + "integrity": "sha512-eCIpqhGnIjdUCXGtLhz4gdDoxKSWXKjzNcc5r+0S1GKOp2fwOipx5mRcwa9GB/ArsxJ1jlj2lmlD9bZAsBxaWQ==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.4.3", + "@jest/types": "^29.4.3", + "babel-jest": "^29.4.3", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.4.3", + "jest-environment-node": "^29.4.3", + "jest-get-type": "^29.4.3", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.4.3", + "jest-runner": "^29.4.3", + "jest-util": "^29.4.3", + "jest-validate": "^29.4.3", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.4.3", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + } + } + }, + "jest-diff": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.4.3.tgz", + "integrity": "sha512-YB+ocenx7FZ3T5O9lMVMeLYV4265socJKtkwgk/6YUz/VsEzYDkiMuMhWzZmxm3wDRQvayJu/PjkjjSkjoHsCA==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^29.4.3", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.4.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "jest-docblock": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", + "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.4.3.tgz", + "integrity": "sha512-1ElHNAnKcbJb/b+L+7j0/w7bDvljw4gTv1wL9fYOczeJrbTbkMGQ5iQPFJ3eFQH19VPTx1IyfePdqSpePKss7Q==", + "dev": true, + "requires": { + "@jest/types": "^29.4.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.4.3", + "jest-util": "^29.4.3", + "pretty-format": "^29.4.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "jest-environment-node": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.4.3.tgz", + "integrity": "sha512-gAiEnSKF104fsGDXNkwk49jD/0N0Bqu2K9+aMQXA6avzsA9H3Fiv1PW2D+gzbOSR705bWd2wJZRFEFpV0tXISg==", + "dev": true, + "requires": { + "@jest/environment": "^29.4.3", + "@jest/fake-timers": "^29.4.3", + "@jest/types": "^29.4.3", + "@types/node": "*", + "jest-mock": "^29.4.3", + "jest-util": "^29.4.3" + } + }, + "jest-get-type": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", + "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", + "dev": true + }, + "jest-haste-map": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.4.3.tgz", + "integrity": "sha512-eZIgAS8tvm5IZMtKlR8Y+feEOMfo2pSQkmNbufdbMzMSn9nitgGxF1waM/+LbryO3OkMcKS98SUb+j/cQxp/vQ==", + "dev": true, + "requires": { + "@jest/types": "^29.4.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.4.3", + "jest-worker": "^29.4.3", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + } + }, + "jest-leak-detector": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.4.3.tgz", + "integrity": "sha512-9yw4VC1v2NspMMeV3daQ1yXPNxMgCzwq9BocCwYrRgXe4uaEJPAN0ZK37nFBhcy3cUwEVstFecFLaTHpF7NiGA==", + "dev": true, + "requires": { + "jest-get-type": "^29.4.3", + "pretty-format": "^29.4.3" + } + }, + "jest-matcher-utils": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.4.3.tgz", + "integrity": "sha512-TTciiXEONycZ03h6R6pYiZlSkvYgT0l8aa49z/DLSGYjex4orMUcafuLXYyyEDWB1RKglq00jzwY00Ei7yFNVg==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^29.4.3", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.4.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "jest-message-util": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.4.3.tgz", + "integrity": "sha512-1Y8Zd4ZCN7o/QnWdMmT76If8LuDv23Z1DRovBj/vcSFNlGCJGoO8D1nJDw1AdyAGUk0myDLFGN5RbNeJyCRGCw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.4.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.4.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "jest-mock": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.4.3.tgz", + "integrity": "sha512-LjFgMg+xed9BdkPMyIJh+r3KeHt1klXPJYBULXVVAkbTaaKjPX1o1uVCAZADMEp/kOxGTwy/Ot8XbvgItOrHEg==", + "dev": true, + "requires": { + "@jest/types": "^29.4.3", + "@types/node": "*", + "jest-util": "^29.4.3" + } + }, + "jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "requires": {} + }, + "jest-regex-util": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", + "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", + "dev": true + }, + "jest-resolve": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.4.3.tgz", + "integrity": "sha512-GPokE1tzguRyT7dkxBim4wSx6E45S3bOQ7ZdKEG+Qj0Oac9+6AwJPCk0TZh5Vu0xzeX4afpb+eDmgbmZFFwpOw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.4.3", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.4.3", + "jest-validate": "^29.4.3", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "jest-resolve-dependencies": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.4.3.tgz", + "integrity": "sha512-uvKMZAQ3nmXLH7O8WAOhS5l0iWyT3WmnJBdmIHiV5tBbdaDZ1wqtNX04FONGoaFvSOSHBJxnwAVnSn1WHdGVaw==", + "dev": true, + "requires": { + "jest-regex-util": "^29.4.3", + "jest-snapshot": "^29.4.3" + } + }, + "jest-runner": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.4.3.tgz", + "integrity": "sha512-GWPTEiGmtHZv1KKeWlTX9SIFuK19uLXlRQU43ceOQ2hIfA5yPEJC7AMkvFKpdCHx6pNEdOD+2+8zbniEi3v3gA==", + "dev": true, + "requires": { + "@jest/console": "^29.4.3", + "@jest/environment": "^29.4.3", + "@jest/test-result": "^29.4.3", + "@jest/transform": "^29.4.3", + "@jest/types": "^29.4.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.4.3", + "jest-environment-node": "^29.4.3", + "jest-haste-map": "^29.4.3", + "jest-leak-detector": "^29.4.3", + "jest-message-util": "^29.4.3", + "jest-resolve": "^29.4.3", + "jest-runtime": "^29.4.3", + "jest-util": "^29.4.3", + "jest-watcher": "^29.4.3", + "jest-worker": "^29.4.3", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + } + } + }, + "jest-runtime": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.4.3.tgz", + "integrity": "sha512-F5bHvxSH+LvLV24vVB3L8K467dt3y3dio6V3W89dUz9nzvTpqd/HcT9zfYKL2aZPvD63vQFgLvaUX/UpUhrP6Q==", + "dev": true, + "requires": { + "@jest/environment": "^29.4.3", + "@jest/fake-timers": "^29.4.3", + "@jest/globals": "^29.4.3", + "@jest/source-map": "^29.4.3", + "@jest/test-result": "^29.4.3", + "@jest/transform": "^29.4.3", + "@jest/types": "^29.4.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.4.3", + "jest-message-util": "^29.4.3", + "jest-mock": "^29.4.3", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.4.3", + "jest-snapshot": "^29.4.3", + "jest-util": "^29.4.3", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "jest-snapshot": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.4.3.tgz", + "integrity": "sha512-NGlsqL0jLPDW91dz304QTM/SNO99lpcSYYAjNiX0Ou+sSGgkanKBcSjCfp/pqmiiO1nQaOyLp6XQddAzRcx3Xw==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.4.3", + "@jest/transform": "^29.4.3", + "@jest/types": "^29.4.3", + "@types/babel__traverse": "^7.0.6", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.4.3", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.4.3", + "jest-get-type": "^29.4.3", + "jest-haste-map": "^29.4.3", + "jest-matcher-utils": "^29.4.3", + "jest-message-util": "^29.4.3", + "jest-util": "^29.4.3", + "natural-compare": "^1.4.0", + "pretty-format": "^29.4.3", + "semver": "^7.3.5" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "jest-util": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.4.3.tgz", + "integrity": "sha512-ToSGORAz4SSSoqxDSylWX8JzkOQR7zoBtNRsA7e+1WUX5F8jrOwaNpuh1YfJHJKDHXLHmObv5eOjejUd+/Ws+Q==", + "dev": true, + "requires": { + "@jest/types": "^29.4.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "jest-validate": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.4.3.tgz", + "integrity": "sha512-J3u5v7aPQoXPzaar6GndAVhdQcZr/3osWSgTeKg5v574I9ybX/dTyH0AJFb5XgXIB7faVhf+rS7t4p3lL9qFaw==", + "dev": true, + "requires": { + "@jest/types": "^29.4.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.4.3", + "leven": "^3.1.0", + "pretty-format": "^29.4.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "jest-watcher": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.4.3.tgz", + "integrity": "sha512-zwlXH3DN3iksoIZNk73etl1HzKyi5FuQdYLnkQKm5BW4n8HpoG59xSwpVdFrnh60iRRaRBGw0gcymIxjJENPcA==", + "dev": true, + "requires": { + "@jest/test-result": "^29.4.3", + "@jest/types": "^29.4.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.4.3", + "string-length": "^4.0.1" + }, + "dependencies": { + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } + } + }, + "jest-worker": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.4.3.tgz", + "integrity": "sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA==", + "dev": true, + "requires": { + "@types/node": "*", + "jest-util": "^29.4.3", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "joi": { + "version": "17.8.3", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.8.3.tgz", + "integrity": "sha512-q5Fn6Tj/jR8PfrLrx4fpGH4v9qM6o+vDUfD4/3vxxyg34OmKcNqYZ1qn2mpLza96S8tL0p0rIw2gOZX+/cTg9w==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, "jose": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/jose/-/jose-4.12.0.tgz", @@ -13200,18 +20049,36 @@ "argparse": "^2.0.1" } }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, "json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, "jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -13252,6 +20119,12 @@ "colornames": "^1.1.1" } }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, "lilconfig": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", @@ -13275,6 +20148,12 @@ } } }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, "linkify-it": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", @@ -13488,6 +20367,15 @@ } } }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, "lodash": { "version": "4.17.15", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", @@ -13701,6 +20589,15 @@ } } }, + "makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "requires": { + "tmpl": "1.0.5" + } + }, "markdown-it": { "version": "13.0.1", "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.1.tgz", @@ -14445,6 +21342,12 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, "negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -14457,6 +21360,18 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node-releases": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "dev": true + }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -14703,6 +21618,35 @@ "integrity": "sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg==", "dev": true }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + }, + "dependencies": { + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + } + } + }, "p-map": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", @@ -14742,6 +21686,24 @@ "p-finally": "^1.0.0" } }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, "parse5": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", @@ -14767,6 +21729,12 @@ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -14779,6 +21747,12 @@ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -14842,6 +21816,21 @@ "pinkie": "^2.0.0" } }, + "pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, "pngquant-bin": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/pngquant-bin/-/pngquant-bin-6.0.1.tgz", @@ -14914,6 +21903,31 @@ "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", "dev": true }, + "pretty-format": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.3.tgz", + "integrity": "sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==", + "dev": true, + "requires": { + "@jest/schemas": "^29.4.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + } + } + }, "prism-svelte": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/prism-svelte/-/prism-svelte-0.5.0.tgz", @@ -14932,6 +21946,24 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "dependencies": { + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + } + } + }, "prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -15227,18 +22259,56 @@ "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==", "dev": true }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "dev": true }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, "resolve-alpn": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", "dev": true }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "resolve.exports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.0.tgz", + "integrity": "sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg==", + "dev": true + }, "responselike": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", @@ -15466,6 +22536,12 @@ "is-arrayish": "^0.3.1" } }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -15554,6 +22630,23 @@ "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", "dev": true }, + "stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, "statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -15581,6 +22674,33 @@ "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", "dev": true }, + "string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -15634,6 +22754,12 @@ "ansi-regex": "^6.0.1" } }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, "strip-dirs": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", @@ -15721,6 +22847,12 @@ "has-flag": "^4.0.0" } }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, "svgo": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", @@ -16210,6 +23342,17 @@ } } }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, "text-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", @@ -16237,12 +23380,24 @@ "os-tmpdir": "~1.0.2" } }, + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, "to-buffer": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", "dev": true }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -16336,6 +23491,12 @@ "safe-buffer": "^5.0.1" } }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, "type-fest": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.6.0.tgz", @@ -16490,6 +23651,16 @@ "integrity": "sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA==", "dev": true }, + "update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -16550,6 +23721,25 @@ "sade": "^1.7.3" } }, + "v8-to-istanbul": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" + }, + "dependencies": { + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + } + } + }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -16588,6 +23778,15 @@ "unist-util-stringify-position": "^3.0.0" } }, + "walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "requires": { + "makeerror": "1.0.12" + } + }, "warning": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", @@ -16724,12 +23923,28 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", @@ -16742,6 +23957,27 @@ "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", "dev": true }, + "yargs": { + "version": "17.7.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", + "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + }, "yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", @@ -16752,6 +23988,12 @@ "fd-slicer": "~1.1.0" } }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + }, "zwitch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", diff --git a/packages/autocomplete-html/package.json b/packages/autocomplete-html/package.json index 660dd992e..ef2541993 100644 --- a/packages/autocomplete-html/package.json +++ b/packages/autocomplete-html/package.json @@ -9,7 +9,8 @@ "atom": ">=0.174.0 <2.0.0" }, "scripts": { - "update": "node ./update/update.js" + "update": "node ./update/update.js", + "update:test": "jest ./update/update.test.js" }, "providedServices": { "autocomplete.provider": { @@ -23,6 +24,8 @@ "chrome-devtools-frontend": "^1.0.1070764", "content": "github:mdn/content", "esm": "^3.2.25", + "jest": "^29.4.3", + "joi": "^17.8.3", "ts-import": "^2.0.40" } } diff --git a/packages/autocomplete-html/update/update.js b/packages/autocomplete-html/update/update.js index 773316f59..1a10e5048 100644 --- a/packages/autocomplete-html/update/update.js +++ b/packages/autocomplete-html/update/update.js @@ -1,14 +1,13 @@ /** This file will manage the updating of `autocomplete-html` `completions.json` - We will partially utilize `@webref/elements` .listAll() function that returns + We will partially utilize `@webref/elements` `.listAll()` function that returns a full list of HTML Elements along with a defined `interface`. - To be able to use this `interface` in any meaningful way, we will utilize - the dataset of Attributes that apply to each `interface` from Chromiums DevTools - resource 'https://github.com/ChromeDevTools/devtools-frontend' - Finally from here we will utilize https://github.com/mdn/content to parse + To use this `interface` in any meaningful way, we will utilize the dataset + of Attributes that apply to each `interface` from Chromiums DevTools resource + `https://github.com/ChromeDevTools/devtools-frontend`. + Finally from here we will utilize `https://github.com/mdn/content` to parse the Markdown docs of MDN's website to retreive descriptions for each element. - ============================================================================== - ============================================================================== + Now for a summary of our `completions.json` file we aim to generate. There are two top level elements, `tags` and `attributes`, both objects. Within `tags` we expect the following: @@ -37,82 +36,24 @@ - description: A text description of the attribute - attribOption: A string array of valid values that can exist within the attribute. Such as the case with `rel` where only so many valid options exist. - ============================================================================== - ============================================================================== - A quick check in for the structure of `@webref/elements` `listAll()` return. - This will return an object, where each top level key is a HTML spec name. - Then within each will be some information on the spec, and `elements` an array - of objects that will contain the `name` of our element, and it's interface name. - { - "css-masking-1": { - "spec": {}, - "elements": [ - { "name": "clipPath", "interface": "SVGClipPathElement" }, - { "name": "mask", "interface": "SVGMaskElement" } - ] - } - }; - The `interface` here should match a return that we can receive from DevTools data. - ============================================================================== - ============================================================================== - DevTools data then, is an object where the top level key is that of an `interface` - This interface can be retreived from `@webref/elements` or may be declared - internally. - Then within each `interface` object several possible values: - - inheritance: The value is a string. 'An inherited Type.' An additional - applicable interface. - - includes: An array of strings. 'A set of Types to also include properties from.' - Additional interfaces to includes properties of. - - props: An object list of valid properties for the interface. Each prop - iteself may contain values or may be empty. Possible values: - * global: Only present when `global: true`, otherwise a global - Attribute value. - * specs: A number. Refers to `SPECS` exported from the same DevTools - source code. Where values are `html`, `dom`, `cssom`. - We likely will not find any use here. - To view the structure of this file visit: - https://github.com/ChromeDevTools/devtools-frontend/blob/main/front_end/models/javascript_metadata/DOMPinnedProperties.ts - ============================================================================== - ============================================================================== - Finally with the topics covered above we are able to collect all the data needed. - The only value that is not being retreived or covered here is: - - `type`: The type defined within our `completions` attributes. Now the global - attribute could be retreived by looking for the value from the DevTools data - or could be known that when we find MDNs documentation for it, the global - attribute docs reside in a different folder than the rest of the docs. But - for all other types we may need to keep a manual list of where it applies. - Most types only apply to a single attribute so would be simple, but - `boolean` and `flag` types may have to be manually maintained. - - `attribOption`: The valid values to pass an attribute currently - does not have any consistent method to retreive valid values. - Ideally this can be found within the `@webref` data, or alternatively may be - collected from MDNs `web/html/attributes` documents. But may prove to be difficult - to reliably parse. + Although with our data sources mentioned above, we are able to collect nearly + all the data needed. Except the `type` that is defined within our + `completions.json` as well as the `attribOption` within our completions. - A note is that further research shows that MDNs attributes documentation cannot - be created the same way as one would expect. That is by the folder names - within the `web/html/attributes` folder. Instead we may have to parse - a table of values from `attributes/index.md` as that contains many items and links - to unwritten pages. - ============================================================================== - ============================================================================== - The last note of our implementation. - The provided attributes used within our `completions.json` seem interesting. - The majority of them are only attributes that are not suggested via tags we have. - Additionally all of the information, like mentioned earlier, would be rather - difficult to automatically collect. Since we have no reliable way to obtain `type`, - `global` values. With only the `description` being acheivable. But considering - that this list is non-exhustive, and is explicitely items not included above - it leads me to beleive that this list has been manually curated since inception. - And rather than attempt to manually curate all of it's unique parts with only - descriptions and global status being manual, while increasing the size ten-fold - to include all possible attributes, it may be best to leave as is, and reinsert - it into our completions during update time. - */ + Studying these closer reveals that all attributes listing with our `completions.json` + do not appear elsewhere, and are nearly all global attributes. + + In this case since there is no sane way to collect this data, we will leave this + list as a manually maintained section of our `completions.json`. + This does mean that `curated-attributes.json` is a static document that + will require manual updating in the future. Or most ideally, will find a way + to automatically generate the needed data. +*/ const chromiumElementsShim = require("./chromium-elements-shim.js"); const curatedAttributes = require("./curated-attributes.json"); +const validate = require("./validate.js"); const elements = require("@webref/elements"); const fs = require("fs"); @@ -122,6 +63,18 @@ async function update() { const chromiumElements = await chromiumElementsShim.bootstrap(); const htmlElementsRaw = await elements.listAll(); + // Lets then validate our current data + if (!validate.htmlElementsRaw(htmlElementsRaw)) { + console.log(validate.htmlElementsRaw(htmlElementsRaw)); + process.exit(1); + } + + // Then validate the devtools data + if (!validate.devToolsDom(chromiumElements.DOMPinnedProperties)) { + console.log(validate.devToolsDom(chromiumElements.DOMPinnedProperties)); + process.exit(1); + } + const fullArrayHtmlElements = buildHtmlElementsArray(htmlElementsRaw); const tagsWithAttrs = matchElementInterface(fullArrayHtmlElements, chromiumElements.DOMPinnedProperties); @@ -188,24 +141,24 @@ function resolveElementInterfaceAttrs(element, domProperties) { // Now to loop through every interface and resolve the tags within. while (interfaceArray.length > 0) { - let interface = interfaceArray[0]; + let inter = interfaceArray[0]; - if (domProperties[interface]) { + if (domProperties[inter]) { // First add all immediate props - for (const prop in domProperties[interface].props) { + for (const prop in domProperties[inter].props) { attrs.push(prop); // Then add any needed values to our global attributes - if (domProperties[interface].props[prop].global && !GLOBAL_ATTRIBUTES.includes(prop)) { + if (domProperties[inter].props[prop].global && !GLOBAL_ATTRIBUTES.includes(prop)) { GLOBAL_ATTRIBUTES.push(prop); } } // Now resolve any additional interfaces, by adding them to our existing array - if (typeof domProperties[interface].inheritance === "string") { - interfaceArray.push(domProperties[interface].inheritance); + if (typeof domProperties[inter].inheritance === "string") { + interfaceArray.push(domProperties[inter].inheritance); } - if (Array.isArray(domProperties[interface].includes)) { - interfaceArray = interfaceArray.concat(domProperties[interface].includes); + if (Array.isArray(domProperties[inter].includes)) { + interfaceArray = interfaceArray.concat(domProperties[inter].includes); } } // Now we have done everything needed for this one interface to be resolved, @@ -259,15 +212,7 @@ function getElementDescription(element) { // In case the first few lines is an empty line break for (let i = 0; i < summaryRaw.length; i++) { if (summaryRaw[i].length > 1) { - return summaryRaw[i] - .replace(/\{\{\S+\("(\S+)"\)\}\}/g, '$1') - // ^ Parses special MDN Markdown Links. - // eg. {{htmlattrxref("title")}} => title - // Where we still want to keep the text within - .replace(/[\*\`\{\}\"]/g, "") // Removes special Markdown based characters - .replace(/\[([A-Za-z0-9-_* ]+)\]\(\S+\)/g, '$1'); - // ^ Parses Markdown links, extracting only the linked text - // eg. [HTML](/en-US/docs/Web/HTML) => HTML + return sanitizeDescription(summaryRaw[i]); } } } else { @@ -277,5 +222,20 @@ function getElementDescription(element) { } +function sanitizeDescription(input) { + return input + .replace(/\{\{\S+\("(\S+)"\)\}\}/g, '$1') + // ^ Parses special MDN Markdown Links. + // eg. {{htmlattrxref("title")}} => title + // Where we still want to keep the text within + .replace(/[\*\`\{\}\"]/g, "") // Removes special Markdown based characters + .replace(/\[([A-Za-z0-9-_* ]+)\]\(\S+\)/g, '$1'); + // ^ Parses Markdown links, extracting only the linked text + // eg. [HTML](/en-US/docs/Web/HTML) => HTML +} update(); + +module.exports = { + sanitizeDescription, +}; diff --git a/packages/autocomplete-html/update/update.test.js b/packages/autocomplete-html/update/update.test.js new file mode 100644 index 000000000..7e586e982 --- /dev/null +++ b/packages/autocomplete-html/update/update.test.js @@ -0,0 +1,34 @@ +/** + This file aims to run some short simple tests against `update.js`. Focusing + mainly on the Regex used within `sanitizeDescription()` +*/ + +const update = require("./update.js"); + +describe("Parses Descriptions Properly from Markdown", () => { + + test("Extracts Markdown Links text", () => { + const text = "Here is my very important [link](https://github.com/pulsar-edit/pulsar)!"; + + const out = update.sanitizeDescription(text); + + expect(out).toBe("Here is my very important link!"); + }); + + test("Removes some Markdown characters", () => { + const text = "Some *Bolded* text, some **italic** text"; + + const out = update.sanitizeDescription(text); + + expect(out).toBe("Some Bolded text, some italic text"); + }); + + test("Extracts Text from MDNs special Links", () => { + const text = 'What about {{htmlattrxref("this?")}}'; + + const out = update.sanitizeDescription(text); + + expect(out).toBe("What about this?"); + }); + +}); diff --git a/packages/autocomplete-html/update/validate.js b/packages/autocomplete-html/update/validate.js new file mode 100644 index 000000000..3b9ab9212 --- /dev/null +++ b/packages/autocomplete-html/update/validate.js @@ -0,0 +1,77 @@ +const Joi = require("joi"); + +function htmlElementsRaw(obj) { + // Function to validate structure of the `@webref/elements` `.listAll()` + + const innerSchema = Joi.object({ + "spec": Joi.object({ // Details on the spec + "title": Joi.string().required(), // The title of the spec + "url": Joi.string().required(), // URL to the definition of the spec + }).required(), + "elements": Joi.array().items( // the elements object is an array of objects + Joi.object({ + "name": Joi.string().required(), // The name of the element + "interface": Joi.string().optional(), // The optional interface of the element + // ^ The interface name will match one from DevTools data. + "obsolete": Joi.boolean().truthy().optional() + // ^ The optional and uncommon boolean to indicate an element is absolete + }).required() + ).required() + }); + + let valid = true; + let error = []; + + for (const ele in obj) { + // The first key is the name of the spec the element is apart of. + let validation = innerSchema.validate(obj[ele]); + + if (validation.error) { + error.push(validation.error); + valid = false; + } + } + + if (!valid) { + console.log(error); + return false; + } else { + return true; + } +} + +function devToolsDom(obj) { + // Validates the structure of the data returned from Chromiums DevTools + // DOMPinnedProperties + // Read More: https://github.com/ChromeDevTools/devtools-frontend/blob/main/front_end/models/javascript_metadata/DOMPinnedProperties.ts + const innerSchema = Joi.object({ + "inheritance": Joi.string().optional(), // An interface to inherit + "includes": Joi.array().items(Joi.string()), // An array of interfaces included with our current interface + "props": Joi.object(), // An object list of properties. Where the key is the property name + }).unknown(); + + let valid = true; + let error = []; + + for (const inter in obj) { + // The first key is the name of an interface + let validation = innerSchema.validate(obj[inter]); + + if (validation.error) { + error.push(validation.error); + valid = false; + } + } + + if (!valid) { + console.log(error); + return false; + } else { + return true; + } +} + +module.exports = { + htmlElementsRaw, + devToolsDom, +}; From 560e0714d189aefae37f9dff27a44e119326493d Mon Sep 17 00:00:00 2001 From: Spiker985 <7829451+Spiker985@users.noreply.github.com> Date: Thu, 2 Mar 2023 11:11:10 -0500 Subject: [PATCH 08/85] Update Debian maintainer Set to match package.json --- resources/linux/debian/control.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/linux/debian/control.in b/resources/linux/debian/control.in index 33a70ed2b..75cce05e7 100644 --- a/resources/linux/debian/control.in +++ b/resources/linux/debian/control.in @@ -7,6 +7,6 @@ Section: devel Priority: optional Architecture: <%= arch %> Installed-Size: <%= installedSize %> -Maintainer: GitHub <atom@github.com> +Maintainer: Pulsar Community <noreply@pulsar-edit.com> Description: <%= description %> Pulsar is a free and open source text editor that is modern, approachable, and hackable to the core. From b2b73772b861fb0f0c7e1a4c2163113773a98e5b Mon Sep 17 00:00:00 2001 From: Spiker985 <Spiker985@users.noreply.github.com> Date: Thu, 2 Mar 2023 11:30:11 -0500 Subject: [PATCH 09/85] Update linux resource files --- resources/linux/pulsar.desktop.in | 2 +- resources/linux/pulsar.policy | 6 +++--- resources/linux/redhat/pulsar.spec.in | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/resources/linux/pulsar.desktop.in b/resources/linux/pulsar.desktop.in index 0677341dc..0e77d9614 100644 --- a/resources/linux/pulsar.desktop.in +++ b/resources/linux/pulsar.desktop.in @@ -8,4 +8,4 @@ Type=Application StartupNotify=true Categories=GTK;Utility;TextEditor;Development; MimeType=application/javascript;application/json;application/x-httpd-eruby;application/x-httpd-php;application/x-httpd-php3;application/x-httpd-php4;application/x-httpd-php5;application/x-ruby;application/x-bash;application/x-csh;application/x-sh;application/x-zsh;application/x-shellscript;application/x-sql;application/x-tcl;application/xhtml+xml;application/xml;application/xml-dtd;application/xslt+xml;text/coffeescript;text/css;text/html;text/plain;text/xml;text/xml-dtd;text/x-bash;text/x-c++;text/x-c++hdr;text/x-c++src;text/x-c;text/x-chdr;text/x-csh;text/x-csrc;text/x-dsrc;text/x-diff;text/x-go;text/x-java;text/x-java-source;text/x-makefile;text/x-markdown;text/x-objc;text/x-perl;text/x-php;text/x-python;text/x-ruby;text/x-sh;text/x-zsh;text/yaml;inode/directory -StartupWMClass=atom +StartupWMClass=pulsar diff --git a/resources/linux/pulsar.policy b/resources/linux/pulsar.policy index d18e4f527..8024198a6 100644 --- a/resources/linux/pulsar.policy +++ b/resources/linux/pulsar.policy @@ -4,9 +4,9 @@ "http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd"> <policyconfig> <vendor>Pulsar</vendor> - <action id="atom.pkexec.dd"> - <description gettext-domain="atom">Admin privileges required</description> - <message gettext-domain="atom">Please enter your password to save this file</message> + <action id="pulsar.pkexec.dd"> + <description gettext-domain="pulsar">Admin privileges required</description> + <message gettext-domain="pulsar">Please enter your password to save this file</message> <annotate key="org.freedesktop.policykit.exec.path">/bin/dd</annotate> <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate> <defaults> diff --git a/resources/linux/redhat/pulsar.spec.in b/resources/linux/redhat/pulsar.spec.in index 692636821..93dd1022a 100644 --- a/resources/linux/redhat/pulsar.spec.in +++ b/resources/linux/redhat/pulsar.spec.in @@ -3,7 +3,7 @@ Version: <%= version %> Release: 0.1%{?dist} Summary: <%= description %> License: MIT -URL: https://atom.io/ +URL: https://pulsar-edit.dev AutoReqProv: no # Avoid libchromiumcontent.so missing dependency Prefix: <%= installDir %> @@ -25,7 +25,7 @@ Requires: alsa-lib, git-core, (glib2 or kde-cli-tools or xdg-utils), lsb-core-no mkdir -p "%{buildroot}/<%= installDir %>/share/<%= appFileName %>/" cp -r "<%= appName %>"/* "%{buildroot}/<%= installDir %>/share/<%= appFileName %>/" mkdir -p "%{buildroot}/<%= installDir %>/bin/" -ln -sf "../share/<%= appFileName %>/resources/app/apm/node_modules/.bin/apm" "%{buildroot}/<%= installDir %>/bin/<%= apmFileName %>" +ln -sf "../share/<%= appFileName %>/resources/app/ppm/node_modules/.bin/apm" "%{buildroot}/<%= installDir %>/bin/<%= apmFileName %>" cp pulsar.sh "%{buildroot}/<%= installDir %>/bin/<%= appFileName %>" chmod 755 "%{buildroot}/<%= installDir %>/bin/<%= appFileName %>" mkdir -p "%{buildroot}/<%= installDir %>/share/applications/" From cc17877903846267a5c14fd7ea12ee3816b41ed6 Mon Sep 17 00:00:00 2001 From: Spiker985 <Spiker985@users.noreply.github.com> Date: Thu, 2 Mar 2023 13:58:29 -0500 Subject: [PATCH 10/85] Update mac CFBundleIdentifier --- resources/mac/helper-Info.plist | 2 +- resources/mac/pulsar-Info.plist | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/mac/helper-Info.plist b/resources/mac/helper-Info.plist index 970bee33f..a4e2ef22c 100644 --- a/resources/mac/helper-Info.plist +++ b/resources/mac/helper-Info.plist @@ -9,7 +9,7 @@ <key>CFBundleExecutable</key> <string>Pulsar Helper</string> <key>CFBundleIdentifier</key> - <string>com.github.pulsar.helper</string> + <string>dev.pulsar_edit.Pulsar.helper</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleName</key> diff --git a/resources/mac/pulsar-Info.plist b/resources/mac/pulsar-Info.plist index 981c19c6b..1787b4254 100644 --- a/resources/mac/pulsar-Info.plist +++ b/resources/mac/pulsar-Info.plist @@ -7,7 +7,7 @@ <key>CFBundleIconFile</key> <string>pulsar.icns</string> <key>CFBundleIdentifier</key> - <string>com.github.pulsar</string> + <string>dev.pulsar_edit.Pulsar<string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleName</key> From 5ef6ff92beefa5b20c21c5bfe1d08e3dd072a70d Mon Sep 17 00:00:00 2001 From: Spiker985 <Spiker985@users.noreply.github.com> Date: Thu, 2 Mar 2023 15:07:41 -0500 Subject: [PATCH 11/85] Add --no-sandbox to .desktop entry --- resources/linux/pulsar.desktop.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/linux/pulsar.desktop.in b/resources/linux/pulsar.desktop.in index 0e77d9614..771f5df33 100644 --- a/resources/linux/pulsar.desktop.in +++ b/resources/linux/pulsar.desktop.in @@ -2,7 +2,7 @@ Name=<%= appName %> Comment=<%= description %> GenericName=Text Editor -Exec=env ATOM_DISABLE_SHELLING_OUT_FOR_ENVIRONMENT=false <%= installDir %>/bin/<%= appFileName %> %F +Exec=env ATOM_DISABLE_SHELLING_OUT_FOR_ENVIRONMENT=false <%= installDir %>/bin/<%= appFileName %> --no-sandbox %F Icon=<%= iconPath %> Type=Application StartupNotify=true From 1411a80c58c0e556d92e77344f406e0a3e73e973 Mon Sep 17 00:00:00 2001 From: Spiker985 <7829451+Spiker985@users.noreply.github.com> Date: Fri, 3 Mar 2023 22:37:12 -0500 Subject: [PATCH 12/85] Update pulsar.sh to match new CFBundleIdentifier --- pulsar.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pulsar.sh b/pulsar.sh index 7f501f542..ebd4a3893 100755 --- a/pulsar.sh +++ b/pulsar.sh @@ -99,7 +99,7 @@ if [ $OS == 'Mac' ]; then PULSAR_PATH="$HOME/Applications" else # We haven't found an Pulsar.app, use spotlight to search for Pulsar - PULSAR_PATH="$(mdfind "kMDItemCFBundleIdentifier == 'com.github.pulsar'" | grep -v ShipIt | head -1 | xargs -0 dirname)" + PULSAR_PATH="$(mdfind "kMDItemCFBundleIdentifier == 'dev.pulsar_edit.Pulsar'" | grep -v ShipIt | head -1 | xargs -0 dirname)" # Exit if Pulsar can't be found if [ ! -x "$PULSAR_PATH/$ATOM_APP_NAME" ]; then From 3199f9d2dc8dd1021975637d33ee84ade8b90f33 Mon Sep 17 00:00:00 2001 From: Spiker985 <7829451+Spiker985@users.noreply.github.com> Date: Mon, 13 Mar 2023 11:17:30 -0400 Subject: [PATCH 13/85] Update resources/linux/debian/control.in Co-authored-by: confused_techie <dev@lhbasics.com> --- resources/linux/debian/control.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/linux/debian/control.in b/resources/linux/debian/control.in index 75cce05e7..b55bf0ade 100644 --- a/resources/linux/debian/control.in +++ b/resources/linux/debian/control.in @@ -7,6 +7,6 @@ Section: devel Priority: optional Architecture: <%= arch %> Installed-Size: <%= installedSize %> -Maintainer: Pulsar Community <noreply@pulsar-edit.com> +Maintainer: Pulsar Community <admin@pulsar-edit.dev> Description: <%= description %> Pulsar is a free and open source text editor that is modern, approachable, and hackable to the core. From b7648499606c94d671cc4c4b0ecb8636853a832b Mon Sep 17 00:00:00 2001 From: Spiker985 <7829451+Spiker985@users.noreply.github.com> Date: Mon, 13 Mar 2023 11:18:09 -0400 Subject: [PATCH 14/85] Update pulsar.sh Co-authored-by: DeeDeeG <DeeDeeG@users.noreply.github.com> --- pulsar.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pulsar.sh b/pulsar.sh index ebd4a3893..9e9a6293f 100755 --- a/pulsar.sh +++ b/pulsar.sh @@ -99,7 +99,7 @@ if [ $OS == 'Mac' ]; then PULSAR_PATH="$HOME/Applications" else # We haven't found an Pulsar.app, use spotlight to search for Pulsar - PULSAR_PATH="$(mdfind "kMDItemCFBundleIdentifier == 'dev.pulsar_edit.Pulsar'" | grep -v ShipIt | head -1 | xargs -0 dirname)" + PULSAR_PATH="$(mdfind "kMDItemCFBundleIdentifier == 'dev.pulsar-edit.pulsar'" | grep -v ShipIt | head -1 | xargs -0 dirname)" # Exit if Pulsar can't be found if [ ! -x "$PULSAR_PATH/$ATOM_APP_NAME" ]; then From 5b6b6a7d7daa98f7be966ee82b9ea26c3928497d Mon Sep 17 00:00:00 2001 From: Spiker985 <7829451+Spiker985@users.noreply.github.com> Date: Mon, 13 Mar 2023 11:18:27 -0400 Subject: [PATCH 15/85] Update resources/mac/helper-Info.plist Co-authored-by: DeeDeeG <DeeDeeG@users.noreply.github.com> --- resources/mac/helper-Info.plist | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/mac/helper-Info.plist b/resources/mac/helper-Info.plist index a4e2ef22c..1b1548284 100644 --- a/resources/mac/helper-Info.plist +++ b/resources/mac/helper-Info.plist @@ -9,7 +9,7 @@ <key>CFBundleExecutable</key> <string>Pulsar Helper</string> <key>CFBundleIdentifier</key> - <string>dev.pulsar_edit.Pulsar.helper</string> + <string>dev.pulsar-edit.pulsar.helper</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleName</key> From e5d05aab69af04a8a6340ad44df8c1347768668f Mon Sep 17 00:00:00 2001 From: Spiker985 <7829451+Spiker985@users.noreply.github.com> Date: Mon, 13 Mar 2023 11:18:37 -0400 Subject: [PATCH 16/85] Update resources/mac/pulsar-Info.plist Co-authored-by: DeeDeeG <DeeDeeG@users.noreply.github.com> --- resources/mac/pulsar-Info.plist | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/mac/pulsar-Info.plist b/resources/mac/pulsar-Info.plist index 1787b4254..385716ef3 100644 --- a/resources/mac/pulsar-Info.plist +++ b/resources/mac/pulsar-Info.plist @@ -7,7 +7,7 @@ <key>CFBundleIconFile</key> <string>pulsar.icns</string> <key>CFBundleIdentifier</key> - <string>dev.pulsar_edit.Pulsar<string> + <string>dev.pulsar-edit.pulsar<string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleName</key> From c102af1a62eecc52ce82340287a7cf7123b03224 Mon Sep 17 00:00:00 2001 From: Daeraxa <58074586+Daeraxa@users.noreply.github.com> Date: Sun, 19 Mar 2023 17:05:13 +0000 Subject: [PATCH 17/85] Update package.json author (#432) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7f5471f39..dcd1f6ca7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pulsar", - "author": "Pulsar Community <noreply@pulsar-edit.com>", + "author": "Pulsar-Edit <admin@pulsar-edit.dev>", "productName": "Pulsar", "version": "1.102.0-dev", "description": "A Community-led Hyper-Hackable Text Editor", From e0065654b5d34c8bb0f9f827e5d6b7fad6bf4b76 Mon Sep 17 00:00:00 2001 From: Spiker985 <7829451+Spiker985@users.noreply.github.com> Date: Sun, 19 Mar 2023 13:05:39 -0400 Subject: [PATCH 18/85] Update resources/linux/debian/control.in Co-authored-by: Daeraxa <58074586+Daeraxa@users.noreply.github.com> --- resources/linux/debian/control.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/linux/debian/control.in b/resources/linux/debian/control.in index b55bf0ade..58f1b2c5c 100644 --- a/resources/linux/debian/control.in +++ b/resources/linux/debian/control.in @@ -7,6 +7,6 @@ Section: devel Priority: optional Architecture: <%= arch %> Installed-Size: <%= installedSize %> -Maintainer: Pulsar Community <admin@pulsar-edit.dev> +Maintainer: Pulsar-Edit <admin@pulsar-edit.dev> Description: <%= description %> Pulsar is a free and open source text editor that is modern, approachable, and hackable to the core. From b8e321e6af5684d9fa269df20d938256ef73ebbf Mon Sep 17 00:00:00 2001 From: Spiker985 <7829451+Spiker985@users.noreply.github.com> Date: Sun, 19 Mar 2023 13:06:12 -0400 Subject: [PATCH 19/85] Update resources/mac/pulsar-Info.plist Co-authored-by: DeeDeeG <DeeDeeG@users.noreply.github.com> --- resources/mac/pulsar-Info.plist | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/mac/pulsar-Info.plist b/resources/mac/pulsar-Info.plist index 385716ef3..d9b47b6bb 100644 --- a/resources/mac/pulsar-Info.plist +++ b/resources/mac/pulsar-Info.plist @@ -7,7 +7,7 @@ <key>CFBundleIconFile</key> <string>pulsar.icns</string> <key>CFBundleIdentifier</key> - <string>dev.pulsar-edit.pulsar<string> + <string>dev.pulsar-edit.pulsar</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleName</key> From 9f185643797bf459e2af50c6529654d1ecb7e4d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Szabo?= <mauricio.szabo@gmail.com> Date: Mon, 20 Mar 2023 12:02:21 -0300 Subject: [PATCH 20/85] Using second-mate instead of first-mate --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 76f58b1a2..07658225d 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "exception-reporting": "file:packages/exception-reporting", "find-and-replace": "https://github.com/atom-community/find-and-replace/archive/refs/tags/v0.220.1.tar.gz", "find-parent-dir": "^0.3.0", - "first-mate": "7.4.3", + "second-mate": "https://github.com/pulsar-edit/second-mate.git#2d8edc5", "focus-trap": "6.3.0", "fs-admin": "0.19.0", "fs-plus": "^3.1.1", From 129354fe712bc7213cb993b7b9c235520c4ef8d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Szabo?= <mauricio.szabo@gmail.com> Date: Mon, 20 Mar 2023 12:03:00 -0300 Subject: [PATCH 21/85] Lockfile update --- yarn.lock | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 03b68f672..b6065bcd3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3991,7 +3991,7 @@ electron@12.2.3: "@types/node" "^14.6.2" extract-zip "^1.0.3" -emissary@^1, emissary@^1.0.0, emissary@^1.1.0, emissary@^1.2.0, emissary@^1.3.2: +emissary@^1, emissary@^1.0.0, emissary@^1.1.0, emissary@^1.2.0, emissary@^1.3.2, emissary@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/emissary/-/emissary-1.3.3.tgz#a618d92d682b232d31111dc3625a5df661799606" integrity sha512-pD6FWNBSlEOzSJDCTcSGVLgNnGw5fnCvvGMdQ/TN43efeXZ/QTq8+hZoK3OOEXPRNjMmSJmeOnEJh+bWT5O8rQ== @@ -4605,7 +4605,7 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -first-mate@7.4.3, first-mate@^7.4.1: +first-mate@^7.4.1: version "7.4.3" resolved "https://registry.yarnpkg.com/first-mate/-/first-mate-7.4.3.tgz#058b9b6d2f43e38a5f0952669338cff2c46ae2dd" integrity sha512-PtZUpaPmcV5KV4Rw5TfwczEnExN+X1o3Q/G82E4iRJ0tW91fm3Yi7pa5t4cBH8r3D6EyoBKvfpG2jKE+TZ0/nw== @@ -5194,7 +5194,7 @@ graphql@14.5.8: dependencies: iterall "^1.2.2" -grim@2.0.3, grim@^2.0.1, grim@^2.0.2: +grim@2.0.3, grim@^2.0.1, grim@^2.0.2, grim@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/grim/-/grim-2.0.3.tgz#66e575efc4577981d959da0764926b4aaded4b0d" integrity sha512-FM20Ump11qYLK9k9DbL8yzVpy+YBieya1JG15OeH8s+KbHq8kL4SdwRtURwIUHniSxb24EoBUpwKfFjGNVi4/Q== @@ -8503,6 +8503,18 @@ season@^6.0.2: fs-plus "^3.0.0" yargs "^3.23.0" +"second-mate@https://github.com/pulsar-edit/second-mate.git#2d8edc5": + version "8.0.0" + resolved "https://github.com/pulsar-edit/second-mate.git#2d8edc5fe099226ca9c116281d72b1b176ff33d9" + dependencies: + emissary "^1.3.3" + event-kit "^2.5.3" + fs-plus "^3.0.0" + grim "^2.0.3" + season "^6.0.2" + underscore-plus "^1" + vscode-oniguruma "^1.7.0" + selector-kit@^0.1: version "0.1.0" resolved "https://registry.yarnpkg.com/selector-kit/-/selector-kit-0.1.0.tgz#304338fceccea35ec28ffaddb792ab7715633e6f" @@ -9810,6 +9822,11 @@ verror@^1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +vscode-oniguruma@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz#439bfad8fe71abd7798338d1cd3dc53a8beea94b" + integrity sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA== + vscode-ripgrep@1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/vscode-ripgrep/-/vscode-ripgrep-1.9.0.tgz#d6cdea4d290f3c2919472cdcfe2440d5fb1f99db" From ceec7ea914951ace69dfd06a9938fa1aa8806811 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Szabo?= <mauricio.szabo@gmail.com> Date: Mon, 20 Mar 2023 12:03:25 -0300 Subject: [PATCH 22/85] Changes so that second-mate can work --- src/grammar-registry.js | 11 ++++++----- static/index.js | 3 ++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/grammar-registry.js b/src/grammar-registry.js index aa530b6a9..577c748c8 100644 --- a/src/grammar-registry.js +++ b/src/grammar-registry.js @@ -1,7 +1,7 @@ const _ = require('underscore-plus'); const Grim = require('grim'); const CSON = require('season'); -const FirstMate = require('first-mate'); +const SecondMate = require('second-mate'); const { Disposable, CompositeDisposable } = require('event-kit'); const TextMateLanguageMode = require('./text-mate-language-mode'); const TreeSitterLanguageMode = require('./tree-sitter-language-mode'); @@ -20,7 +20,7 @@ module.exports = class GrammarRegistry { constructor({ config } = {}) { this.config = config; this.subscriptions = new CompositeDisposable(); - this.textmateRegistry = new FirstMate.GrammarRegistry({ + this.textmateRegistry = new SecondMate.GrammarRegistry({ maxTokensPerLine: 100, maxLineLength: 1000 }); @@ -264,7 +264,7 @@ module.exports = class GrammarRegistry { if (grammar.contentRegex) { const contentMatch = isTreeSitter ? grammar.contentRegex.test(contents) - : grammar.contentRegex.testSync(contents); + : grammar.contentRegex.findNextMatchSync(contents); if (contentMatch) { score += 0.05; } else { @@ -317,6 +317,7 @@ module.exports = class GrammarRegistry { grammarMatchesPrefix(grammar, contents) { if (contents && grammar.firstLineRegex) { + debugger let escaped = false; let numberOfNewlinesInRegex = 0; for (let character of grammar.firstLineRegex.source) { @@ -339,8 +340,8 @@ module.exports = class GrammarRegistry { .split('\n') .slice(0, numberOfNewlinesInRegex + 1) .join('\n'); - if (grammar.firstLineRegex.testSync) { - return grammar.firstLineRegex.testSync(prefix); + if (grammar.firstLineRegex.findNextMatchSync) { + return grammar.firstLineRegex.findNextMatchSync(prefix); } else { return grammar.firstLineRegex.test(prefix); } diff --git a/static/index.js b/static/index.js index 0d2157b40..9c0ad88a3 100644 --- a/static/index.js +++ b/static/index.js @@ -19,10 +19,11 @@ } StartupTime.addMarker('window:start', startWindowTime); - window.onload = function() { + window.onload = async function() { try { StartupTime.addMarker('window:onload:start'); const startTime = Date.now(); + await require('second-mate').ready process.on('unhandledRejection', function(error, promise) { console.error( From 3c2cc1a4c7bc28149bf1d0ac05475983e6f3b2f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Szabo?= <mauricio.szabo@gmail.com> Date: Mon, 20 Mar 2023 15:47:39 -0300 Subject: [PATCH 23/85] Fixed sercond-mate version --- package.json | 2 +- yarn.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 07658225d..181c07565 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "exception-reporting": "file:packages/exception-reporting", "find-and-replace": "https://github.com/atom-community/find-and-replace/archive/refs/tags/v0.220.1.tar.gz", "find-parent-dir": "^0.3.0", - "second-mate": "https://github.com/pulsar-edit/second-mate.git#2d8edc5", + "second-mate": "https://github.com/pulsar-edit/second-mate.git#8261ea5", "focus-trap": "6.3.0", "fs-admin": "0.19.0", "fs-plus": "^3.1.1", diff --git a/yarn.lock b/yarn.lock index b6065bcd3..d5d16e9b7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8503,9 +8503,9 @@ season@^6.0.2: fs-plus "^3.0.0" yargs "^3.23.0" -"second-mate@https://github.com/pulsar-edit/second-mate.git#2d8edc5": +"second-mate@https://github.com/pulsar-edit/second-mate.git#8261ea5": version "8.0.0" - resolved "https://github.com/pulsar-edit/second-mate.git#2d8edc5fe099226ca9c116281d72b1b176ff33d9" + resolved "https://github.com/pulsar-edit/second-mate.git#8261ea528d4d3877f72a7093f702fd5f0616bb45" dependencies: emissary "^1.3.3" event-kit "^2.5.3" From e9b935b10ea5a6671aabf350cc469fbecc06bcf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Szabo?= <mauricio.szabo@gmail.com> Date: Mon, 20 Mar 2023 16:25:42 -0300 Subject: [PATCH 24/85] Fixed weird bug with another bump --- package.json | 2 +- src/grammar-registry.js | 1 - yarn.lock | 4 ++-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 181c07565..c8dad2de5 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "exception-reporting": "file:packages/exception-reporting", "find-and-replace": "https://github.com/atom-community/find-and-replace/archive/refs/tags/v0.220.1.tar.gz", "find-parent-dir": "^0.3.0", - "second-mate": "https://github.com/pulsar-edit/second-mate.git#8261ea5", + "second-mate": "https://github.com/pulsar-edit/second-mate.git#f79e9e3", "focus-trap": "6.3.0", "fs-admin": "0.19.0", "fs-plus": "^3.1.1", diff --git a/src/grammar-registry.js b/src/grammar-registry.js index 577c748c8..22a141d2d 100644 --- a/src/grammar-registry.js +++ b/src/grammar-registry.js @@ -317,7 +317,6 @@ module.exports = class GrammarRegistry { grammarMatchesPrefix(grammar, contents) { if (contents && grammar.firstLineRegex) { - debugger let escaped = false; let numberOfNewlinesInRegex = 0; for (let character of grammar.firstLineRegex.source) { diff --git a/yarn.lock b/yarn.lock index d5d16e9b7..b2a9af2c4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8503,9 +8503,9 @@ season@^6.0.2: fs-plus "^3.0.0" yargs "^3.23.0" -"second-mate@https://github.com/pulsar-edit/second-mate.git#8261ea5": +"second-mate@https://github.com/pulsar-edit/second-mate.git#f79e9e3": version "8.0.0" - resolved "https://github.com/pulsar-edit/second-mate.git#8261ea528d4d3877f72a7093f702fd5f0616bb45" + resolved "https://github.com/pulsar-edit/second-mate.git#f79e9e3b18f7d4a39aec2213a25db5dcb7720762" dependencies: emissary "^1.3.3" event-kit "^2.5.3" From 0dc1d9282108f57bb4290fd2e9f0e65044d46ee2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Szabo?= <mauricio.szabo@gmail.com> Date: Mon, 20 Mar 2023 16:44:32 -0300 Subject: [PATCH 25/85] Bundling bracket-matcher --- package.json | 2 +- packages/bracket-matcher/CONTRIBUTING.md | 1 + packages/bracket-matcher/LICENSE.md | 20 + packages/bracket-matcher/README.md | 52 + .../keymaps/bracket-matcher.cson | 18 + .../lib/bracket-matcher-view.js | 585 +++++ .../bracket-matcher/lib/bracket-matcher.js | 299 +++ packages/bracket-matcher/lib/main.js | 20 + packages/bracket-matcher/lib/match-manager.js | 60 + .../bracket-matcher/lib/selector-cache.js | 11 + .../lib/self-closing-tags.json | 18 + packages/bracket-matcher/lib/tag-finder.js | 258 +++ .../menus/bracket-matcher.cson | 22 + packages/bracket-matcher/package.json | 68 + .../spec/bracket-matcher-spec.js | 1913 +++++++++++++++++ .../bracket-matcher/spec/close-tag-spec.js | 142 ++ .../spec/fixtures/multiplecursor.md | 6 + .../bracket-matcher/spec/fixtures/sample.html | 15 + .../bracket-matcher/spec/fixtures/sample.js | 13 + .../bracket-matcher/spec/fixtures/sample.xml | 17 + .../bracket-matcher.atom-text-editor.less | 11 + yarn.lock | 3 +- 22 files changed, 3551 insertions(+), 3 deletions(-) create mode 100644 packages/bracket-matcher/CONTRIBUTING.md create mode 100644 packages/bracket-matcher/LICENSE.md create mode 100644 packages/bracket-matcher/README.md create mode 100644 packages/bracket-matcher/keymaps/bracket-matcher.cson create mode 100644 packages/bracket-matcher/lib/bracket-matcher-view.js create mode 100644 packages/bracket-matcher/lib/bracket-matcher.js create mode 100644 packages/bracket-matcher/lib/main.js create mode 100644 packages/bracket-matcher/lib/match-manager.js create mode 100644 packages/bracket-matcher/lib/selector-cache.js create mode 100644 packages/bracket-matcher/lib/self-closing-tags.json create mode 100644 packages/bracket-matcher/lib/tag-finder.js create mode 100644 packages/bracket-matcher/menus/bracket-matcher.cson create mode 100644 packages/bracket-matcher/package.json create mode 100644 packages/bracket-matcher/spec/bracket-matcher-spec.js create mode 100644 packages/bracket-matcher/spec/close-tag-spec.js create mode 100644 packages/bracket-matcher/spec/fixtures/multiplecursor.md create mode 100644 packages/bracket-matcher/spec/fixtures/sample.html create mode 100644 packages/bracket-matcher/spec/fixtures/sample.js create mode 100644 packages/bracket-matcher/spec/fixtures/sample.xml create mode 100644 packages/bracket-matcher/styles/bracket-matcher.atom-text-editor.less diff --git a/package.json b/package.json index c8dad2de5..9028681df 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "base16-tomorrow-dark-theme": "file:packages/base16-tomorrow-dark-theme", "base16-tomorrow-light-theme": "file:packages/base16-tomorrow-light-theme", "bookmarks": "file:packages/bookmarks", - "bracket-matcher": "https://github.com/pulsar-edit/bracket-matcher.git#c877977", + "bracket-matcher": "file:packages/bracket-matcher", "chai": "4.3.4", "clear-cut": "^2.0.2", "coffeescript": "1.12.7", diff --git a/packages/bracket-matcher/CONTRIBUTING.md b/packages/bracket-matcher/CONTRIBUTING.md new file mode 100644 index 000000000..9c8ac3e5b --- /dev/null +++ b/packages/bracket-matcher/CONTRIBUTING.md @@ -0,0 +1 @@ +[See how you can contribute](https://github.com/pulsar-edit/.github/blob/main/CONTRIBUTING.md) diff --git a/packages/bracket-matcher/LICENSE.md b/packages/bracket-matcher/LICENSE.md new file mode 100644 index 000000000..4d231b456 --- /dev/null +++ b/packages/bracket-matcher/LICENSE.md @@ -0,0 +1,20 @@ +Copyright (c) 2014 GitHub Inc. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/packages/bracket-matcher/README.md b/packages/bracket-matcher/README.md new file mode 100644 index 000000000..1b8bac027 --- /dev/null +++ b/packages/bracket-matcher/README.md @@ -0,0 +1,52 @@ +# Bracket Matcher package + +Highlights and jumps between `[]`, `()`, and `{}`. Also highlights matching XML +and HTML tags. + +Autocompletes `[]`, `()`, `{}`, `""`, `''`, `“”`, `‘’`, `«»`, `‹›`, and +backticks by default. + +Use <kbd>ctrl-m</kbd> to jump to the bracket matching the one adjacent to the cursor. +It jumps to the nearest enclosing bracket when there's no adjacent bracket, + +Use <kbd>ctrl-cmd-m</kbd> to select all the text inside the current brackets. + +Use <kbd>alt-cmd-.</kbd> to close the current XML/HTML tag. + +--- +### Configuration + +Matching brackets and quotes are sensibly inserted for you. If you dislike this +functionality, you can disable it from the Bracket Matcher section of the +Settings View. + +#### Custom Pairs + +You can customize matching pairs in Bracket Matcher at any time. You can do so either globally via the Settings View or at the scope level via your `config.cson`. Changes take effect immediately. + +* **Autocomplete Characters** - Comma-separated pairs that the editor will treat as brackets / quotes. Entries in this field override the package defaults. + * For example: `<>, (), []` + +* **Pairs With Extra Newline** - Comma-separated pairs that enhance the editor's auto indent feature. When used, a newline is automatically added between the pair when enter is pressed between them. Note: This feature is meant to be used in combination with brackets defined for indentation by the active language package (`increaseIndentPattern` / `decreaseIndentPattern`). +Example: +``` +fn main() { + | <---- Cursor positioned at one indent level higher +} +``` + +#### Scoped settings +In addition to the global settings, you are also able to add scope-specific modifications to Pulsar in your `config.cson`. This is especially useful for editor rule changes specific to each language. Scope-specific settings override package defaults _and_ global settings. +Example: +```cson +".rust.source": + "bracket-matcher": + autocompleteCharacters: [ + "()" + "[]" + "{}" + "<>" + "\"\"" + "``" + ] +``` diff --git a/packages/bracket-matcher/keymaps/bracket-matcher.cson b/packages/bracket-matcher/keymaps/bracket-matcher.cson new file mode 100644 index 000000000..bf708da70 --- /dev/null +++ b/packages/bracket-matcher/keymaps/bracket-matcher.cson @@ -0,0 +1,18 @@ +'atom-text-editor': + 'ctrl-m': 'bracket-matcher:go-to-matching-bracket' + 'ctrl-]': 'bracket-matcher:remove-brackets-from-selection' + +'.platform-darwin atom-text-editor': + 'ctrl-cmd-m': 'bracket-matcher:select-inside-brackets' + 'alt-cmd-.': 'bracket-matcher:close-tag' + 'ctrl-backspace': 'bracket-matcher:remove-matching-brackets' + +'.platform-linux atom-text-editor': + 'ctrl-alt-,': 'bracket-matcher:select-inside-brackets' + 'ctrl-alt-.': 'bracket-matcher:close-tag' + 'ctrl-alt-backspace': 'bracket-matcher:remove-matching-brackets' + +'.platform-win32 atom-text-editor': + 'ctrl-alt-,': 'bracket-matcher:select-inside-brackets' + 'ctrl-alt-.': 'bracket-matcher:close-tag' + 'ctrl-alt-backspace': 'bracket-matcher:remove-matching-brackets' diff --git a/packages/bracket-matcher/lib/bracket-matcher-view.js b/packages/bracket-matcher/lib/bracket-matcher-view.js new file mode 100644 index 000000000..4290d1968 --- /dev/null +++ b/packages/bracket-matcher/lib/bracket-matcher-view.js @@ -0,0 +1,585 @@ +const {CompositeDisposable} = require('atom') +const _ = require('underscore-plus') +const {Range, Point} = require('atom') +const TagFinder = require('./tag-finder') + +const MAX_ROWS_TO_SCAN = 10000 +const ONE_CHAR_FORWARD_TRAVERSAL = Object.freeze(Point(0, 1)) +const ONE_CHAR_BACKWARD_TRAVERSAL = Object.freeze(Point(0, -1)) +const TWO_CHARS_BACKWARD_TRAVERSAL = Object.freeze(Point(0, -2)) +const MAX_ROWS_TO_SCAN_FORWARD_TRAVERSAL = Object.freeze(Point(MAX_ROWS_TO_SCAN, 0)) +const MAX_ROWS_TO_SCAN_BACKWARD_TRAVERSAL = Object.freeze(Point(-MAX_ROWS_TO_SCAN, 0)) + +module.exports = +class BracketMatcherView { + constructor (editor, editorElement, matchManager) { + this.destroy = this.destroy.bind(this) + this.updateMatch = this.updateMatch.bind(this) + this.editor = editor + this.matchManager = matchManager + this.gutter = this.editor.gutterWithName('line-number') + this.subscriptions = new CompositeDisposable() + this.tagFinder = new TagFinder(this.editor) + this.pairHighlighted = false + this.tagHighlighted = false + + // ranges for possible selection + this.bracket1Range = null + this.bracket2Range = null + + this.subscriptions.add( + this.editor.onDidTokenize(this.updateMatch), + this.editor.getBuffer().onDidChangeText(this.updateMatch), + this.editor.onDidChangeGrammar(this.updateMatch), + this.editor.onDidChangeSelectionRange(this.updateMatch), + this.editor.onDidAddCursor(this.updateMatch), + this.editor.onDidRemoveCursor(this.updateMatch), + + atom.commands.add(editorElement, 'bracket-matcher:go-to-matching-bracket', () => + this.goToMatchingBracket() + ), + + atom.commands.add(editorElement, 'bracket-matcher:go-to-enclosing-bracket', () => + this.gotoPrecedingStartBracket() + ), + + atom.commands.add(editorElement, 'bracket-matcher:select-inside-brackets', () => + this.selectInsideBrackets() + ), + + atom.commands.add(editorElement, 'bracket-matcher:close-tag', () => + this.closeTag() + ), + + atom.commands.add(editorElement, 'bracket-matcher:remove-matching-brackets', () => + this.removeMatchingBrackets() + ), + + atom.commands.add(editorElement, 'bracket-matcher:select-matching-brackets', () => + this.selectMatchingBrackets() + ), + + this.editor.onDidDestroy(this.destroy) + ) + + this.updateMatch() + } + + destroy () { + this.subscriptions.dispose() + } + + updateMatch () { + if (this.pairHighlighted) { + this.editor.destroyMarker(this.startMarker.id) + this.editor.destroyMarker(this.endMarker.id) + } + + this.pairHighlighted = false + this.tagHighlighted = false + + if (!this.editor.getLastSelection().isEmpty()) return + + const {position, matchPosition} = this.findCurrentPair() + + let startRange = null + let endRange = null + let highlightTag = false + let highlightPair = false + if (position && matchPosition) { + this.bracket1Range = (startRange = Range(position, position.traverse(ONE_CHAR_FORWARD_TRAVERSAL))) + this.bracket2Range = (endRange = Range(matchPosition, matchPosition.traverse(ONE_CHAR_FORWARD_TRAVERSAL))) + highlightPair = true + } else { + this.bracket1Range = null + this.bracket2Range = null + if (this.hasSyntaxTree()) { + ({startRange, endRange} = this.findMatchingTagNameRangesWithSyntaxTree()) + } else { + ({startRange, endRange} = this.tagFinder.findMatchingTags()) + if (this.isCursorOnCommentOrString()) return + } + if (startRange) { + highlightTag = true + highlightPair = true + } + } + + if (!highlightTag && !highlightPair) return + + this.startMarker = this.createMarker(startRange) + this.endMarker = this.createMarker(endRange) + this.pairHighlighted = highlightPair + this.tagHighlighted = highlightTag + } + + selectMatchingBrackets () { + if (!this.bracket1Range && !this.bracket2Range) return + this.editor.setSelectedBufferRanges([this.bracket1Range, this.bracket2Range]) + this.matchManager.changeBracketsMode = true + } + + removeMatchingBrackets () { + if (this.editor.hasMultipleCursors()) { + this.editor.backspace() + return + } + + this.editor.transact(() => { + if (this.editor.getLastSelection().isEmpty()) { + this.editor.selectLeft() + } + + const text = this.editor.getSelectedText() + this.editor.moveRight() + + // check if the character to the left is part of a pair + if ( + this.matchManager.pairedCharacters.hasOwnProperty(text) || + this.matchManager.pairedCharactersInverse.hasOwnProperty(text) + ) { + let {position, matchPosition, bracket} = this.findCurrentPair() + + if (position && matchPosition) { + this.editor.setCursorBufferPosition(matchPosition) + this.editor.delete() + // if on the same line and the cursor is in front of an end pair + // offset by one to make up for the missing character + if (position.row === matchPosition.row && this.matchManager.pairedCharactersInverse.hasOwnProperty(bracket)) { + position = position.traverse(ONE_CHAR_BACKWARD_TRAVERSAL) + } + this.editor.setCursorBufferPosition(position) + this.editor.delete() + } else { + this.editor.backspace() + } + } else { + this.editor.backspace() + } + }) + } + + findMatchingEndBracket (startBracketPosition, startBracket, endBracket) { + if (startBracket === endBracket) return + + if (this.hasSyntaxTree()) { + return this.findMatchingEndBracketWithSyntaxTree(startBracketPosition, startBracket, endBracket) + } else { + const scopeDescriptor = this.editor.scopeDescriptorForBufferPosition(startBracketPosition) + if (this.isScopeCommentedOrString(scopeDescriptor.getScopesArray())) return + return this.findMatchingEndBracketWithRegexSearch(startBracketPosition, startBracket, endBracket) + } + } + + findMatchingStartBracket (endBracketPosition, startBracket, endBracket) { + if (startBracket === endBracket) return + + if (this.hasSyntaxTree()) { + return this.findMatchingStartBracketWithSyntaxTree(endBracketPosition, startBracket, endBracket) + } else { + const scopeDescriptor = this.editor.scopeDescriptorForBufferPosition(endBracketPosition) + if (this.isScopeCommentedOrString(scopeDescriptor.getScopesArray())) return + return this.findMatchingStartBracketWithRegexSearch(endBracketPosition, startBracket, endBracket) + } + } + + findMatchingEndBracketWithSyntaxTree (bracketPosition, startBracket, endBracket) { + let result + const bracketEndPosition = bracketPosition.traverse([0, startBracket.length]) + this.editor.buffer.getLanguageMode().getSyntaxNodeContainingRange( + new Range(bracketPosition, bracketEndPosition), + node => { + if (bracketEndPosition.isGreaterThan(node.startPosition) && bracketEndPosition.isLessThan(node.endPosition)) { + const matchNode = node.children.find(child => + bracketEndPosition.isLessThanOrEqual(child.startPosition) && + child.type === endBracket + ) + if (matchNode) result = Point.fromObject(matchNode.startPosition) + return true + } + } + ) + return result + } + + findMatchingStartBracketWithSyntaxTree (bracketPosition, startBracket, endBracket) { + let result + const bracketEndPosition = bracketPosition.traverse([0, startBracket.length]) + this.editor.buffer.getLanguageMode().getSyntaxNodeContainingRange( + new Range(bracketPosition, bracketEndPosition), + node => { + if (bracketPosition.isGreaterThan(node.startPosition)) { + const matchNode = node.children.find(child => + bracketPosition.isGreaterThanOrEqual(child.endPosition) && + child.type === startBracket + ) + if (matchNode) result = Point.fromObject(matchNode.startPosition) + return true + } + } + ) + return result + } + + findMatchingTagNameRangesWithSyntaxTree () { + const position = this.editor.getCursorBufferPosition() + const {startTag, endTag} = this.findContainingTagsWithSyntaxTree(position) + if (startTag && (startTag.range.containsPoint(position) || endTag.range.containsPoint(position))) { + if (startTag === endTag) { + const {range} = startTag.child(1) + return {startRange: range, endRange: range} + } else if (endTag.firstChild.type === '</') { + return { + startRange: startTag.child(1).range, + endRange: endTag.child(1).range + } + } else { + return { + startRange: startTag.child(1).range, + endRange: endTag.child(2).range + } + } + } else { + return {} + } + } + + findMatchingTagsWithSyntaxTree () { + const position = this.editor.getCursorBufferPosition() + const {startTag, endTag} = this.findContainingTagsWithSyntaxTree(position) + if (startTag) { + return {startRange: startTag.range, endRange: endTag.range} + } else { + return {} + } + } + + findContainingTagsWithSyntaxTree (position) { + let startTag, endTag + if (position.column === this.editor.buffer.lineLengthForRow(position.row)) position.column--; + this.editor.buffer.getLanguageMode().getSyntaxNodeAtPosition(position, node => { + if (node.type.includes('element') && node.childCount > 0) { + const {firstChild, lastChild} = node + if ( + firstChild.childCount > 2 && + firstChild.firstChild.type === '<' + ) { + if (lastChild === firstChild && firstChild.lastChild.type === '/>') { + startTag = firstChild + endTag = firstChild + } else if ( + lastChild.childCount > 2 && + (lastChild.firstChild.type === '</' || + lastChild.firstChild.type === '<' && lastChild.child(1).type === '/') + ) { + startTag = firstChild + endTag = lastChild + } + } + return true + } + }) + return {startTag, endTag} + } + + findMatchingEndBracketWithRegexSearch (startBracketPosition, startBracket, endBracket) { + const scanRange = new Range( + startBracketPosition.traverse(ONE_CHAR_FORWARD_TRAVERSAL), + startBracketPosition.traverse(MAX_ROWS_TO_SCAN_FORWARD_TRAVERSAL) + ) + let endBracketPosition = null + let unpairedCount = 0 + this.editor.scanInBufferRange(this.matchManager.pairRegexes[startBracket], scanRange, result => { + if (this.isRangeCommentedOrString(result.range)) return + switch (result.match[0]) { + case startBracket: + unpairedCount++ + break + case endBracket: + unpairedCount-- + if (unpairedCount < 0) { + endBracketPosition = result.range.start + result.stop() + } + break + } + }) + + return endBracketPosition + } + + findMatchingStartBracketWithRegexSearch (endBracketPosition, startBracket, endBracket) { + const scanRange = new Range( + endBracketPosition.traverse(MAX_ROWS_TO_SCAN_BACKWARD_TRAVERSAL), + endBracketPosition + ) + let startBracketPosition = null + let unpairedCount = 0 + this.editor.backwardsScanInBufferRange(this.matchManager.pairRegexes[startBracket], scanRange, result => { + if (this.isRangeCommentedOrString(result.range)) return + switch (result.match[0]) { + case startBracket: + unpairedCount-- + if (unpairedCount < 0) { + startBracketPosition = result.range.start + result.stop() + break + } + break + case endBracket: + unpairedCount++ + } + }) + + return startBracketPosition + } + + findPrecedingStartBracket (cursorPosition) { + if (this.hasSyntaxTree()) { + return this.findPrecedingStartBracketWithSyntaxTree(cursorPosition) + } else { + return this.findPrecedingStartBracketWithRegexSearch(cursorPosition) + } + } + + findPrecedingStartBracketWithSyntaxTree (cursorPosition) { + let result + this.editor.buffer.getLanguageMode().getSyntaxNodeAtPosition(cursorPosition, node => { + for (const child of node.children) { + if (cursorPosition.isLessThanOrEqual(child.startPosition)) break + if ( + child.type in this.matchManager.pairedCharacters || + child.type in this.matchManager.pairedCharactersInverse + ) { + result = Point.fromObject(child.startPosition) + return true + } + } + }) + return result + } + + findPrecedingStartBracketWithRegexSearch (cursorPosition) { + const scanRange = new Range(Point.ZERO, cursorPosition) + const startBracket = _.escapeRegExp(_.keys(this.matchManager.pairedCharacters).join('')) + const endBracket = _.escapeRegExp(_.keys(this.matchManager.pairedCharactersInverse).join('')) + const combinedRegExp = new RegExp(`[${startBracket}${endBracket}]`, 'g') + const startBracketRegExp = new RegExp(`[${startBracket}]`, 'g') + const endBracketRegExp = new RegExp(`[${endBracket}]`, 'g') + let startPosition = null + let unpairedCount = 0 + this.editor.backwardsScanInBufferRange(combinedRegExp, scanRange, result => { + if (this.isRangeCommentedOrString(result.range)) return + if (result.match[0].match(endBracketRegExp)) { + unpairedCount++ + } else if (result.match[0].match(startBracketRegExp)) { + unpairedCount-- + if (unpairedCount < 0) { + startPosition = result.range.start + result.stop() + } + } + }) + + return startPosition + } + + createMarker (bufferRange) { + const marker = this.editor.markBufferRange(bufferRange) + this.editor.decorateMarker(marker, {type: 'highlight', class: 'bracket-matcher', deprecatedRegionClass: 'bracket-matcher'}) + if (atom.config.get('bracket-matcher.highlightMatchingLineNumber', {scope: this.editor.getRootScopeDescriptor()}) && this.gutter) { + this.gutter.decorateMarker(marker, {type: 'highlight', class: 'bracket-matcher', deprecatedRegionClass: 'bracket-matcher'}) + } + return marker + } + + findCurrentPair () { + const currentPosition = this.editor.getCursorBufferPosition() + const previousPosition = currentPosition.traverse(ONE_CHAR_BACKWARD_TRAVERSAL) + const nextPosition = currentPosition.traverse(ONE_CHAR_FORWARD_TRAVERSAL) + const currentCharacter = this.editor.getTextInBufferRange(new Range(currentPosition, nextPosition)) + const previousCharacter = this.editor.getTextInBufferRange(new Range(previousPosition, currentPosition)) + + let position, matchPosition, currentBracket, matchingBracket + if ((matchingBracket = this.matchManager.pairedCharacters[currentCharacter])) { + position = currentPosition + currentBracket = currentCharacter + matchPosition = this.findMatchingEndBracket(position, currentBracket, matchingBracket) + } else if ((matchingBracket = this.matchManager.pairedCharacters[previousCharacter])) { + position = previousPosition + currentBracket = previousCharacter + matchPosition = this.findMatchingEndBracket(position, currentBracket, matchingBracket) + } else if ((matchingBracket = this.matchManager.pairedCharactersInverse[previousCharacter])) { + position = previousPosition + currentBracket = previousCharacter + matchPosition = this.findMatchingStartBracket(position, matchingBracket, currentBracket) + } else if ((matchingBracket = this.matchManager.pairedCharactersInverse[currentCharacter])) { + position = currentPosition + currentBracket = currentCharacter + matchPosition = this.findMatchingStartBracket(position, matchingBracket, currentBracket) + } + + return {position, matchPosition, bracket: currentBracket} + } + + goToMatchingBracket () { + if (!this.pairHighlighted) return this.gotoPrecedingStartBracket() + const position = this.editor.getCursorBufferPosition() + + if (this.tagHighlighted) { + let tagCharacterOffset + let startRange = this.startMarker.getBufferRange() + const tagLength = startRange.end.column - startRange.start.column + let endRange = this.endMarker.getBufferRange() + if (startRange.compare(endRange) > 0) { + [startRange, endRange] = [endRange, startRange] + } + + // include the < + startRange = new Range(startRange.start.traverse(ONE_CHAR_BACKWARD_TRAVERSAL), endRange.end.traverse(ONE_CHAR_BACKWARD_TRAVERSAL)) + // include the </ + endRange = new Range(endRange.start.traverse(TWO_CHARS_BACKWARD_TRAVERSAL), endRange.end.traverse(TWO_CHARS_BACKWARD_TRAVERSAL)) + + if (position.isLessThan(endRange.start)) { + tagCharacterOffset = position.column - startRange.start.column + if (tagCharacterOffset > 0) { tagCharacterOffset++ } + tagCharacterOffset = Math.min(tagCharacterOffset, tagLength + 2) // include </ + this.editor.setCursorBufferPosition(endRange.start.traverse([0, tagCharacterOffset])) + } else { + tagCharacterOffset = position.column - endRange.start.column + if (tagCharacterOffset > 1) { tagCharacterOffset-- } + tagCharacterOffset = Math.min(tagCharacterOffset, tagLength + 1) // include < + this.editor.setCursorBufferPosition(startRange.start.traverse([0, tagCharacterOffset])) + } + } else { + const previousPosition = position.traverse(ONE_CHAR_BACKWARD_TRAVERSAL) + const startPosition = this.startMarker.getStartBufferPosition() + const endPosition = this.endMarker.getStartBufferPosition() + + if (position.isEqual(startPosition)) { + this.editor.setCursorBufferPosition(endPosition.traverse(ONE_CHAR_FORWARD_TRAVERSAL)) + } else if (previousPosition.isEqual(startPosition)) { + this.editor.setCursorBufferPosition(endPosition) + } else if (position.isEqual(endPosition)) { + this.editor.setCursorBufferPosition(startPosition.traverse(ONE_CHAR_FORWARD_TRAVERSAL)) + } else if (previousPosition.isEqual(endPosition)) { + this.editor.setCursorBufferPosition(startPosition) + } + } + } + + gotoPrecedingStartBracket () { + if (this.pairHighlighted) return + + const matchPosition = this.findPrecedingStartBracket(this.editor.getCursorBufferPosition()) + if (matchPosition) { + this.editor.setCursorBufferPosition(matchPosition) + } else { + let startRange, endRange + if (this.hasSyntaxTree()) { + ({startRange, endRange} = this.findMatchingTagsWithSyntaxTree()) + } else { + ({startRange, endRange} = this.tagFinder.findStartEndTags()) + } + + if (startRange) { + if (startRange.compare(endRange) > 0) { + [startRange, endRange] = [endRange, startRange] + } + this.editor.setCursorBufferPosition(startRange.start) + } + } + } + + multiCursorSelect() { + this.editor.getCursorBufferPositions().forEach(position => { + let startPosition = this.findPrecedingStartBracket(position) + if(startPosition) { + const startBracket = this.editor.getTextInRange(Range.fromPointWithDelta(startPosition, 0, 1)) + const endPosition = this.findMatchingEndBracket(startPosition, startBracket, this.matchManager.pairedCharacters[startBracket]) + startPosition = startPosition.traverse([0, 1]) + if (startPosition && endPosition) { + const rangeToSelect = new Range(startPosition, endPosition) + this.editor.addSelectionForBufferRange(rangeToSelect) + } + } else { + let startRange, endRange; + if (this.hasSyntaxTree()) { + ({startRange, endRange} = this.findMatchingTagsWithSyntaxTree()) + } else { + ({startRange, endRange} = this.tagFinder.findStartEndTags(true)) + if (startRange && startRange.compare(endRange) > 0) { + [startRange, endRange] = [endRange, startRange] + } + } + if (startRange) { + const startPosition = startRange.end + const endPosition = endRange.start + const rangeToSelect = new Range(startPosition, endPosition) + this.editor.setSelectedBufferRange(rangeToSelect) + } + } + }) + } + + selectInsideBrackets () { + let endPosition, endRange, startPosition, startRange + if (this.pairHighlighted) { + startRange = this.startMarker.getBufferRange() + endRange = this.endMarker.getBufferRange() + + if (this.tagHighlighted) { + if (this.hasSyntaxTree()) { + ({startRange, endRange} = this.findMatchingTagsWithSyntaxTree()) + } else { + ({startRange, endRange} = this.tagFinder.findStartEndTags(true)) + if (startRange && startRange.compare(endRange) > 0) { + [startRange, endRange] = [endRange, startRange] + } + } + } + startPosition = startRange.end + endPosition = endRange.start + + const rangeToSelect = new Range(startPosition, endPosition) + this.editor.setSelectedBufferRange(rangeToSelect) + } else { + this.multiCursorSelect(); + } + } + + // Insert at the current cursor position a closing tag if there exists an + // open tag that is not closed afterwards. + closeTag () { + const cursorPosition = this.editor.getCursorBufferPosition() + const preFragment = this.editor.getTextInBufferRange([Point.ZERO, cursorPosition]) + const postFragment = this.editor.getTextInBufferRange([cursorPosition, Point.INFINITY]) + + const tag = this.tagFinder.closingTagForFragments(preFragment, postFragment) + if (tag) { + this.editor.insertText(`</${tag}>`) + } + } + + isCursorOnCommentOrString () { + return this.isScopeCommentedOrString(this.editor.getLastCursor().getScopeDescriptor().getScopesArray()) + } + + isRangeCommentedOrString (range) { + return this.isScopeCommentedOrString(this.editor.scopeDescriptorForBufferPosition(range.start).getScopesArray()) + } + + isScopeCommentedOrString (scopesArray) { + for (let scope of scopesArray.reverse()) { + scope = scope.split('.') + if (scope.includes('embedded') && scope.includes('source')) return false + if (scope.includes('comment') || scope.includes('string')) return true + } + + return false + } + + hasSyntaxTree () { + return this.editor.buffer.getLanguageMode().getSyntaxNodeAtPosition + } +} diff --git a/packages/bracket-matcher/lib/bracket-matcher.js b/packages/bracket-matcher/lib/bracket-matcher.js new file mode 100644 index 000000000..c6e84ee6f --- /dev/null +++ b/packages/bracket-matcher/lib/bracket-matcher.js @@ -0,0 +1,299 @@ +const _ = require('underscore-plus') +const {CompositeDisposable} = require('atom') +const SelectorCache = require('./selector-cache') + +module.exports = +class BracketMatcher { + constructor (editor, editorElement, matchManager) { + this.insertText = this.insertText.bind(this) + this.insertNewline = this.insertNewline.bind(this) + this.backspace = this.backspace.bind(this) + this.editor = editor + this.matchManager = matchManager + this.subscriptions = new CompositeDisposable() + this.bracketMarkers = [] + + this.origEditorInsertText = this.editor.insertText.bind(this.editor) + _.adviseBefore(this.editor, 'insertText', this.insertText) + _.adviseBefore(this.editor, 'insertNewline', this.insertNewline) + _.adviseBefore(this.editor, 'backspace', this.backspace) + + this.subscriptions.add( + atom.commands.add(editorElement, 'bracket-matcher:remove-brackets-from-selection', event => { + if (!this.removeBrackets()) event.abortKeyBinding() + }), + + this.editor.onDidDestroy(() => this.unsubscribe()) + ) + } + + insertText (text, options) { + if (!text) return true + if ((options && options.select) || (options && options.undo === 'skip')) return true + + let autoCompleteOpeningBracket, bracketMarker, pair + if (this.matchManager.changeBracketsMode) { + this.matchManager.changeBracketsMode = false + if (this.isClosingBracket(text)) { + text = this.matchManager.pairedCharactersInverse[text] + } + if (this.isOpeningBracket(text)) { + this.editor.mutateSelectedText(selection => { + const selectionText = selection.getText() + if (this.isOpeningBracket(selectionText)) { + selection.insertText(text) + } + if (this.isClosingBracket(selectionText)) { + selection.insertText(this.matchManager.pairedCharacters[text]) + } + }) + return false + } + } + + if (this.wrapSelectionInBrackets(text)) return false + if (this.editor.hasMultipleCursors()) return true + + const cursorBufferPosition = this.editor.getCursorBufferPosition() + const previousCharacters = this.editor.getTextInBufferRange([[cursorBufferPosition.row, 0], cursorBufferPosition]) + const nextCharacter = this.editor.getTextInBufferRange([cursorBufferPosition, cursorBufferPosition.traverse([0, 1])]) + const previousCharacter = previousCharacters.slice(-1) + + const hasWordAfterCursor = /\w/.test(nextCharacter) + const hasWordBeforeCursor = /\w/.test(previousCharacter) + const hasQuoteBeforeCursor = this.isQuote(previousCharacter) && (previousCharacter === text[0]) + const hasEscapeCharacterBeforeCursor = endsWithEscapeCharacter(previousCharacters) + const hasEscapeSequenceBeforeCursor = endsWithEscapeSequence(previousCharacters) + + if (text === '#' && this.isCursorOnInterpolatedString()) { + autoCompleteOpeningBracket = this.getScopedSetting('bracket-matcher.autocompleteBrackets') && !hasEscapeCharacterBeforeCursor + text += '{' + pair = '}' + } else { + autoCompleteOpeningBracket = ( + this.isOpeningBracket(text) && + !hasWordAfterCursor && + this.getScopedSetting('bracket-matcher.autocompleteBrackets') && + !(this.isQuote(text) && (hasWordBeforeCursor || hasQuoteBeforeCursor || hasEscapeSequenceBeforeCursor)) && + !hasEscapeCharacterBeforeCursor + ) + pair = this.matchManager.pairedCharacters[text] + } + + let skipOverExistingClosingBracket = false + if (this.isClosingBracket(text) && (nextCharacter === text) && !hasEscapeCharacterBeforeCursor) { + bracketMarker = this.bracketMarkers.find(marker => marker.isValid() && marker.getBufferRange().end.isEqual(cursorBufferPosition)) + if (bracketMarker || this.getScopedSetting('bracket-matcher.alwaysSkipClosingPairs')) { + skipOverExistingClosingBracket = true + } + } + + if (skipOverExistingClosingBracket) { + if (bracketMarker) bracketMarker.destroy() + _.remove(this.bracketMarkers, bracketMarker) + this.editor.moveRight() + return false + } else if (autoCompleteOpeningBracket) { + this.editor.transact(() => { + this.origEditorInsertText(text + pair) + this.editor.moveLeft() + }) + const range = [cursorBufferPosition, cursorBufferPosition.traverse([0, text.length])] + this.bracketMarkers.push(this.editor.markBufferRange(range)) + return false + } + } + + insertNewline () { + if (this.editor.hasMultipleCursors()) return + if (!this.editor.getLastSelection().isEmpty()) return + + const cursorBufferPosition = this.editor.getCursorBufferPosition() + const previousCharacters = this.editor.getTextInBufferRange([[cursorBufferPosition.row, 0], cursorBufferPosition]) + const nextCharacter = this.editor.getTextInBufferRange([cursorBufferPosition, cursorBufferPosition.traverse([0, 1])]) + const previousCharacter = previousCharacters.slice(-1) + const hasEscapeCharacterBeforeCursor = endsWithEscapeCharacter(previousCharacters) + + if ( + this.matchManager.pairsWithExtraNewline[previousCharacter] === nextCharacter && + !hasEscapeCharacterBeforeCursor + ) { + this.editor.transact(() => { + this.origEditorInsertText('\n\n') + this.editor.moveUp() + if (this.getScopedSetting('editor.autoIndent')) { + const cursorRow = this.editor.getCursorBufferPosition().row + this.editor.autoIndentBufferRows(cursorRow, cursorRow + 1) + } + }) + return false + } + } + + backspace () { + if (this.editor.hasMultipleCursors()) return + if (!this.editor.getLastSelection().isEmpty()) return + + const cursorBufferPosition = this.editor.getCursorBufferPosition() + const previousCharacters = this.editor.getTextInBufferRange([[cursorBufferPosition.row, 0], cursorBufferPosition]) + const nextCharacter = this.editor.getTextInBufferRange([cursorBufferPosition, cursorBufferPosition.traverse([0, 1])]) + const previousCharacter = previousCharacters.slice(-1) + const hasEscapeCharacterBeforeCursor = endsWithEscapeCharacter(previousCharacters) + + if ( + this.matchManager.pairedCharacters[previousCharacter] === nextCharacter && + !hasEscapeCharacterBeforeCursor && + this.getScopedSetting('bracket-matcher.autocompleteBrackets') + ) { + this.editor.transact(() => { + this.editor.moveLeft() + this.editor.delete() + this.editor.delete() + }) + return false + } + } + + removeBrackets () { + let bracketsRemoved = false + this.editor.mutateSelectedText(selection => { + let selectionEnd + if (!this.selectionIsWrappedByMatchingBrackets(selection)) return + + const range = selection.getBufferRange() + const options = {reversed: selection.isReversed()} + const selectionStart = range.start + if (range.start.row === range.end.row) { + selectionEnd = range.end.traverse([0, -2]) + } else { + selectionEnd = range.end.traverse([0, -1]) + } + + const text = selection.getText() + selection.insertText(text.substring(1, text.length - 1)) + selection.setBufferRange([selectionStart, selectionEnd], options) + bracketsRemoved = true + }) + return bracketsRemoved + } + + wrapSelectionInBrackets (bracket) { + let pair + if (bracket === '#') { + if (!this.isCursorOnInterpolatedString()) return false + bracket = '#{' + pair = '}' + } else { + if (!this.isOpeningBracket(bracket)) return false + pair = this.matchManager.pairedCharacters[bracket] + } + + if (!this.editor.selections.some(s => !s.isEmpty())) return false + if (!this.getScopedSetting('bracket-matcher.wrapSelectionsInBrackets')) return false + + let selectionWrapped = false + this.editor.mutateSelectedText(selection => { + let selectionEnd + if (selection.isEmpty()) return + + // Don't wrap in #{} if the selection spans more than one line + if ((bracket === '#{') && !selection.getBufferRange().isSingleLine()) return + + selectionWrapped = true + const range = selection.getBufferRange() + const options = {reversed: selection.isReversed()} + selection.insertText(`${bracket}${selection.getText()}${pair}`) + const selectionStart = range.start.traverse([0, bracket.length]) + if (range.start.row === range.end.row) { + selectionEnd = range.end.traverse([0, bracket.length]) + } else { + selectionEnd = range.end + } + selection.setBufferRange([selectionStart, selectionEnd], options) + }) + + return selectionWrapped + } + + isQuote (string) { + return /['"`]/.test(string) + } + + isCursorOnInterpolatedString () { + const cursor = this.editor.getLastCursor() + const languageMode = this.editor.getBuffer().getLanguageMode() + if (languageMode.getSyntaxNodeAtPosition) { + const node = languageMode.getSyntaxNodeAtPosition( + cursor.getBufferPosition(), + (node, grammar) => grammar.scopeName === 'source.ruby' && /string|symbol/.test(node.type) + ) + if (node) { + const {firstChild} = node + if (firstChild) { + return ['"', ':"', '%('].includes(firstChild.text) + } + } + return false + } else { + if (this.interpolatedStringSelector == null) { + const segments = [ + '*.*.*.interpolated.ruby', + 'string.interpolated.ruby', + 'string.regexp.interpolated.ruby', + 'string.quoted.double.coffee', + 'string.unquoted.heredoc.ruby', + 'string.quoted.double.livescript', + 'string.quoted.double.heredoc.livescript', + 'string.quoted.double.elixir', + 'string.quoted.double.heredoc.elixir', + 'comment.documentation.heredoc.elixir' + ] + this.interpolatedStringSelector = SelectorCache.get(segments.join(' | ')) + } + return this.interpolatedStringSelector.matches(this.editor.getLastCursor().getScopeDescriptor().getScopesArray()) + } + } + + isOpeningBracket (string) { + return this.matchManager.pairedCharacters.hasOwnProperty(string) + } + + isClosingBracket (string) { + return this.matchManager.pairedCharactersInverse.hasOwnProperty(string) + } + + selectionIsWrappedByMatchingBrackets (selection) { + if (selection.isEmpty()) return false + const selectedText = selection.getText() + const firstCharacter = selectedText[0] + const lastCharacter = selectedText[selectedText.length - 1] + return this.matchManager.pairedCharacters[firstCharacter] === lastCharacter + } + + unsubscribe () { + this.subscriptions.dispose() + } + + getScopedSetting (key) { + return atom.config.get(key, {scope: this.editor.getRootScopeDescriptor()}) + } +} + +const BACKSLASHES_REGEX = /(\\+)$/ +const ESCAPE_SEQUENCE_REGEX = /(\\+)[^\\]$/ + +// odd number of backslashes +function endsWithEscapeCharacter (string) { + const backslashesMatch = string.match(BACKSLASHES_REGEX) + return backslashesMatch && backslashesMatch[1].length % 2 === 1 +} + +// even number of backslashes or odd number of backslashes followed by another character +function endsWithEscapeSequence (string) { + const backslashesMatch = string.match(BACKSLASHES_REGEX) + const escapeSequenceMatch = string.match(ESCAPE_SEQUENCE_REGEX) + return ( + (escapeSequenceMatch && escapeSequenceMatch[1].length % 2 === 1) || + (backslashesMatch && backslashesMatch[1].length % 2 === 0) + ) +} diff --git a/packages/bracket-matcher/lib/main.js b/packages/bracket-matcher/lib/main.js new file mode 100644 index 000000000..91f9ea90c --- /dev/null +++ b/packages/bracket-matcher/lib/main.js @@ -0,0 +1,20 @@ +const MatchManager = require('./match-manager') +const BracketMatcherView = require('./bracket-matcher-view') +const BracketMatcher = require('./bracket-matcher') + +module.exports = { + activate () { + const watchedEditors = new WeakSet() + + atom.workspace.observeTextEditors(editor => { + if (watchedEditors.has(editor)) return + + const editorElement = atom.views.getView(editor) + const matchManager = new MatchManager(editor, editorElement) + new BracketMatcherView(editor, editorElement, matchManager) + new BracketMatcher(editor, editorElement, matchManager) + watchedEditors.add(editor) + editor.onDidDestroy(() => watchedEditors.delete(editor)) + }) + } +} diff --git a/packages/bracket-matcher/lib/match-manager.js b/packages/bracket-matcher/lib/match-manager.js new file mode 100644 index 000000000..a052c1dc9 --- /dev/null +++ b/packages/bracket-matcher/lib/match-manager.js @@ -0,0 +1,60 @@ +const _ = require('underscore-plus') +const {CompositeDisposable} = require('atom') + +module.exports = +class MatchManager { + appendPair (pairList, [itemLeft, itemRight]) { + const newPair = {} + newPair[itemLeft] = itemRight + pairList = _.extend(pairList, newPair) + } + + processAutoPairs (autocompletePairs, pairedList, dataFun) { + if (autocompletePairs.length) { + for (let autocompletePair of autocompletePairs) { + const pairArray = autocompletePair.split('') + this.appendPair(pairedList, dataFun(pairArray)) + } + } + } + + updateConfig () { + this.pairedCharacters = {} + this.pairedCharactersInverse = {} + this.pairRegexes = {} + this.pairsWithExtraNewline = {} + this.processAutoPairs(this.getScopedSetting('bracket-matcher.autocompleteCharacters'), this.pairedCharacters, x => [x[0], x[1]]) + this.processAutoPairs(this.getScopedSetting('bracket-matcher.autocompleteCharacters'), this.pairedCharactersInverse, x => [x[1], x[0]]) + this.processAutoPairs(this.getScopedSetting('bracket-matcher.pairsWithExtraNewline'), this.pairsWithExtraNewline, x => [x[0], x[1]]) + for (let startPair in this.pairedCharacters) { + const endPair = this.pairedCharacters[startPair] + this.pairRegexes[startPair] = new RegExp(`[${_.escapeRegExp(startPair + endPair)}]`, 'g') + } + } + + getScopedSetting (key) { + return atom.config.get(key, {scope: this.editor.getRootScopeDescriptor()}) + } + + constructor (editor, editorElement) { + this.destroy = this.destroy.bind(this) + this.editor = editor + this.subscriptions = new CompositeDisposable() + + this.updateConfig() + + // Subscribe to config changes + const scope = this.editor.getRootScopeDescriptor() + this.subscriptions.add( + atom.config.observe('bracket-matcher.autocompleteCharacters', {scope}, () => this.updateConfig()), + atom.config.observe('bracket-matcher.pairsWithExtraNewline', {scope}, () => this.updateConfig()), + this.editor.onDidDestroy(this.destroy) + ) + + this.changeBracketsMode = false + } + + destroy () { + this.subscriptions.dispose() + } +} diff --git a/packages/bracket-matcher/lib/selector-cache.js b/packages/bracket-matcher/lib/selector-cache.js new file mode 100644 index 000000000..3408bcdd4 --- /dev/null +++ b/packages/bracket-matcher/lib/selector-cache.js @@ -0,0 +1,11 @@ +const {ScopeSelector} = require('first-mate') +const cache = {} + +exports.get = function (selector) { + let scopeSelector = cache[selector] + if (!scopeSelector) { + scopeSelector = new ScopeSelector(selector) + cache[selector] = scopeSelector + } + return scopeSelector +} diff --git a/packages/bracket-matcher/lib/self-closing-tags.json b/packages/bracket-matcher/lib/self-closing-tags.json new file mode 100644 index 000000000..17f829e49 --- /dev/null +++ b/packages/bracket-matcher/lib/self-closing-tags.json @@ -0,0 +1,18 @@ +[ + "area", + "base", + "br", + "col", + "command", + "embed", + "hr", + "img", + "input", + "keygen", + "link", + "meta", + "param", + "source", + "track", + "wbr" +] diff --git a/packages/bracket-matcher/lib/tag-finder.js b/packages/bracket-matcher/lib/tag-finder.js new file mode 100644 index 000000000..eda29119c --- /dev/null +++ b/packages/bracket-matcher/lib/tag-finder.js @@ -0,0 +1,258 @@ +const {Range} = require('atom') +const _ = require('underscore-plus') +const SelfClosingTags = require('./self-closing-tags') + +const TAG_SELECTOR_REGEX = /(\b|\.)(meta\.tag|punctuation\.definition\.tag)/ +const COMMENT_SELECTOR_REGEX = /(\b|\.)comment/ + +// Creates a regex to match opening tag with match[1] and closing tags with match[2] +// +// * tagNameRegexStr - a regex string describing how to match the tagname. +// Should not contain capturing match groups. +// +// Returns a {RegExp}. +const generateTagStartOrEndRegex = function (tagNameRegexStr) { + const notSelfClosingTagEnd = "(?:[^>\\/\"']|\"[^\"]*\"|'[^']*')*>" + return new RegExp(`<(${tagNameRegexStr})${notSelfClosingTagEnd}|<\\/(${tagNameRegexStr})>`) +} + +const tagStartOrEndRegex = generateTagStartOrEndRegex('\\w[-\\w]*(?:(?:\\:|\\.)\\w[-\\w]*)*') + +// Helper to find the matching start/end tag for the start/end tag under the +// cursor in XML, HTML, etc. editors. +module.exports = +class TagFinder { + constructor (editor) { + // 1. Tag prefix + // 2. Closing tag (optional) + // 3. Tag name + // 4. Attributes (ids, classes, etc. - optional) + // 5. Tag suffix + // 6. Self-closing tag (optional) + this.editor = editor + this.tagPattern = /(<(\/)?)(.+?)(\s+.*?)?((\/)?>|$)/ + this.wordRegex = /.*?(>|$)/ + } + + patternForTagName (tagName) { + tagName = _.escapeRegExp(tagName) + // 1. Start tag + // 2. Tag name + // 3. Attributes (optional) + // 4. Tag suffix + // 5. Self-closing tag (optional) + // 6. End tag + return new RegExp(`(<(${tagName})(\\s+[^>]*?)?((/)?>))|(</${tagName}[^>]*>)`, 'gi') + } + + isRangeCommented (range) { + return this.scopesForPositionMatchRegex(range.start, COMMENT_SELECTOR_REGEX) + } + + isCursorOnTag () { + return this.scopesForPositionMatchRegex(this.editor.getCursorBufferPosition(), TAG_SELECTOR_REGEX) + } + + scopesForPositionMatchRegex (position, regex) { + const {tokenizedBuffer, buffer} = this.editor + const {grammar} = tokenizedBuffer + let column = 0 + const line = tokenizedBuffer.tokenizedLineForRow(position.row) + if (line == null) { return false } + const lineLength = buffer.lineLengthForRow(position.row) + const scopeIds = line.openScopes.slice() + for (let i = 0; i < line.tags.length; i++) { + const tag = line.tags[i] + if (tag >= 0) { + const nextColumn = column + tag + if ((nextColumn > position.column) || (nextColumn === lineLength)) { break } + column = nextColumn + } else if ((tag & 1) === 1) { + scopeIds.push(tag) + } else { + scopeIds.pop() + } + } + + return scopeIds.some(scopeId => regex.test(grammar.scopeForId(scopeId))) + } + + findStartTag (tagName, endPosition, fullRange = false) { + const scanRange = new Range([0, 0], endPosition) + const pattern = this.patternForTagName(tagName) + let startRange = null + let unpairedCount = 0 + this.editor.backwardsScanInBufferRange(pattern, scanRange, ({match, range, stop}) => { + if (this.isRangeCommented(range)) return + + const [entireMatch, isStartTag, tagName, attributes, suffix, isSelfClosingTag, isEndTag] = match + + if (isSelfClosingTag) return + + if (isStartTag) { + unpairedCount-- + if (unpairedCount < 0) { + stop() + startRange = range + if (!fullRange) { + // Move the start past the initial < + startRange.start = startRange.start.translate([0, 1]) + + // End right after the tag name + startRange.end = startRange.start.translate([0, tagName.length]) + } + } + } else { + unpairedCount++ + } + }) + + return startRange + } + + findEndTag (tagName, startPosition, fullRange = false) { + const scanRange = new Range(startPosition, this.editor.buffer.getEndPosition()) + const pattern = this.patternForTagName(tagName) + let endRange = null + let unpairedCount = 0 + this.editor.scanInBufferRange(pattern, scanRange, ({match, range, stop}) => { + if (this.isRangeCommented(range)) return + + const [entireMatch, isStartTag, tagName, attributes, suffix, isSelfClosingTag, isEndTag] = match + + if (isSelfClosingTag) return + + if (isStartTag) { + unpairedCount++ + } else { + unpairedCount-- + if (unpairedCount < 0) { + stop() + endRange = range + if (!fullRange) { + // Subtract </ and > from range + endRange = range.translate([0, 2], [0, -1]) + } + } + } + }) + + return endRange + } + + findStartEndTags (fullRange = false) { + let ranges = {} + const endPosition = this.editor.getLastCursor().getCurrentWordBufferRange({wordRegex: this.wordRegex}).end + this.editor.backwardsScanInBufferRange(this.tagPattern, [[0, 0], endPosition], ({match, range, stop}) => { + stop() + + const [entireMatch, prefix, isClosingTag, tagName, attributes, suffix, isSelfClosingTag] = Array.from(match) + + let startRange = range + if (!fullRange) { + if (range.start.row === range.end.row) { + // Move the start past the initial < + startRange.start = startRange.start.translate([0, prefix.length]) + // End right after the tag name + startRange.end = startRange.start.translate([0, tagName.length]) + } else { + startRange = Range.fromObject([range.start.translate([0, prefix.length]), [range.start.row, Infinity]]) + } + } + + let endRange + if (isSelfClosingTag) { + endRange = startRange + } else if (isClosingTag) { + endRange = this.findStartTag(tagName, startRange.start, fullRange) + } else { + endRange = this.findEndTag(tagName, startRange.end, fullRange) + } + + if (startRange && endRange) ranges = {startRange, endRange} + }) + + return ranges + } + + findMatchingTags () { + return (this.isCursorOnTag() && this.findStartEndTags()) || {} + } + + // Parses a fragment of html returning the stack (i.e., an array) of open tags + // + // fragment - the fragment of html to be analysed + // stack - an array to be populated (can be non-empty) + // matchExpr - a RegExp describing how to match opening/closing tags + // the opening/closing descriptions must be captured subexpressions + // so that the code can refer to match[1] to check if an opening + // tag has been found, and to match[2] to check if a closing tag + // has been found + // cond - a condition to be checked at each iteration. If the function + // returns false the processing is immediately interrupted. When + // called the current stack is provided to the function. + // + // Returns an array of strings. Each string is a tag that is still to be closed + // (the most recent non closed tag is at the end of the array). + parseFragment (fragment, stack, matchExpr, cond) { + let match = fragment.match(matchExpr) + while (match && cond(stack)) { + if (SelfClosingTags.indexOf(match[1]) === -1) { + const topElem = stack[stack.length - 1] + + if (match[2] && (topElem === match[2])) { + stack.pop() + } else if (match[1]) { + stack.push(match[1]) + } + } + + fragment = fragment.substr(match.index + match[0].length) + match = fragment.match(matchExpr) + } + + return stack + } + + // Parses the given fragment of html code returning the last unclosed tag. + // + // fragment - a string containing a fragment of html code. + // + // Returns an array of strings. Each string is a tag that is still to be closed + // (the most recent non closed tag is at the end of the array). + tagsNotClosedInFragment (fragment) { + return this.parseFragment(fragment, [], tagStartOrEndRegex, () => true) + } + + // Parses the given fragment of html code and returns true if the given tag + // has a matching closing tag in it. If tag is reopened and reclosed in the + // given fragment then the end point of that pair does not count as a matching + // closing tag. + tagDoesNotCloseInFragment (tags, fragment) { + if (tags.length === 0) { return false } + + let stack = tags + const stackLength = stack.length + const tag = tags[tags.length - 1] + const escapedTag = _.escapeRegExp(tag) + stack = this.parseFragment(fragment, stack, generateTagStartOrEndRegex(escapedTag), s => + s.length >= stackLength || s[s.length - 1] === tag + ) + + return (stack.length > 0) && (stack[stack.length - 1] === tag) + } + + // Parses preFragment and postFragment returning the last open tag in + // preFragment that is not closed in postFragment. + // + // Returns a tag name or null if it can't find it. + closingTagForFragments (preFragment, postFragment) { + const tags = this.tagsNotClosedInFragment(preFragment) + const tag = tags[tags.length - 1] + if (this.tagDoesNotCloseInFragment(tags, postFragment)) { + return tag + } else { + return null + } + } +} diff --git a/packages/bracket-matcher/menus/bracket-matcher.cson b/packages/bracket-matcher/menus/bracket-matcher.cson new file mode 100644 index 000000000..a74d146f2 --- /dev/null +++ b/packages/bracket-matcher/menus/bracket-matcher.cson @@ -0,0 +1,22 @@ +'menu': [ + { + 'label': 'Packages' + 'submenu': [ + 'label': 'Bracket Matcher' + 'submenu': [ + { 'label': 'Go To Matching Bracket', 'command': 'bracket-matcher:go-to-matching-bracket' } + { 'label': 'Select Inside Brackets', 'command': 'bracket-matcher:select-inside-brackets' } + { 'label': 'Remove Brackets From Selection', 'command': 'bracket-matcher:remove-brackets-from-selection' } + { 'label': 'Close Current Tag', 'command': 'bracket-matcher:close-tag' } + { 'label': 'Remove Matching Brackets', 'command': 'bracket-matcher:remove-matching-brackets' } + { 'label': 'Select Matching Brackets', 'command': 'bracket-matcher:select-matching-brackets' } + ] + ] + }, + { + 'label': 'Selection' + 'submenu': [ + { 'label': 'Select Inside Brackets', 'command': 'bracket-matcher:select-inside-brackets' } + ] + } +] diff --git a/packages/bracket-matcher/package.json b/packages/bracket-matcher/package.json new file mode 100644 index 000000000..386d714f6 --- /dev/null +++ b/packages/bracket-matcher/package.json @@ -0,0 +1,68 @@ +{ + "name": "bracket-matcher", + "version": "0.92.0", + "main": "./lib/main", + "description": "Highlight the matching bracket for the `(){}[]` character under the cursor. Move the cursor to the matching bracket with `ctrl-m`.", + "repository": "https://github.com/pulsar-edit/bracket-matcher", + "license": "MIT", + "engines": { + "atom": "*" + }, + "dependencies": { + "first-mate": "^7.4.1", + "underscore-plus": "1.x" + }, + "configSchema": { + "autocompleteCharacters": { + "description": "Autocompleted characters treated as matching pairs, such as `()`, and `{}`.", + "type": "array", + "default": [ + "()", + "[]", + "{}", + "\"\"", + "''", + "``", + "“”", + "‘’", + "«»", + "‹›" + ], + "items": { + "type": "string" + } + }, + "pairsWithExtraNewline": { + "description": "Automatically add a newline between the pair when enter is pressed.", + "type": "array", + "default": [ + "()", + "[]", + "{}" + ], + "items": { + "type": "string" + } + }, + "autocompleteBrackets": { + "type": "boolean", + "default": true, + "description": "Autocomplete bracket and quote characters, such as `(` and `)`, and `\"`." + }, + "wrapSelectionsInBrackets": { + "type": "boolean", + "default": true, + "description": "Wrap selected text in brackets or quotes when the editor contains selections and the opening bracket or quote is typed." + }, + "highlightMatchingLineNumber": { + "type": "boolean", + "default": false, + "description": "Highlight the line number of the matching bracket." + }, + "alwaysSkipClosingPairs": { + "type": "boolean", + "default": false, + "description": "Always skip closing pairs in front of the cursor." + } + } +} diff --git a/packages/bracket-matcher/spec/bracket-matcher-spec.js b/packages/bracket-matcher/spec/bracket-matcher-spec.js new file mode 100644 index 000000000..25acce374 --- /dev/null +++ b/packages/bracket-matcher/spec/bracket-matcher-spec.js @@ -0,0 +1,1913 @@ +const {Point, TextBuffer} = require('atom') + +const HAS_NEW_TEXT_BUFFER_VERSION = (new TextBuffer()).getLanguageMode().bufferDidFinishTransaction +const path = require('path') + +describe('bracket matching', () => { + let editorElement, editor, buffer + + beforeEach(() => { + atom.config.set('bracket-matcher.autocompleteBrackets', true) + + waitsForPromise(() => atom.packages.activatePackage('bracket-matcher')) + + waitsForPromise(() => atom.packages.activatePackage('language-javascript')) + + waitsForPromise(() => atom.packages.activatePackage('language-xml')) + + waitsForPromise(() => atom.workspace.open(path.join(__dirname, 'fixtures', 'sample.js'))) + + runs(() => { + editor = atom.workspace.getActiveTextEditor() + editorElement = atom.views.getView(editor) + buffer = editor.getBuffer() + }) + }) + + describe('matching bracket highlighting', () => { + beforeEach(() => { + atom.config.set('bracket-matcher.highlightMatchingLineNumber', true) + }) + + function expectNoHighlights () { + const decorations = editor.getHighlightDecorations().filter(decoration => decoration.properties.class === 'bracket-matcher') + expect(decorations.length).toBe(0) + } + + function expectHighlights (startBufferPosition, endBufferPosition) { + const decorations = editor.getHighlightDecorations().filter(decoration => decoration.properties.class === 'bracket-matcher') + const gutterDecorations = editor.getLineNumberDecorations().filter(gutterDecoration => gutterDecoration.properties.class === 'bracket-matcher') + + startBufferPosition = Point.fromObject(startBufferPosition) + endBufferPosition = Point.fromObject(endBufferPosition) + if (startBufferPosition.isGreaterThan(endBufferPosition)) { + [startBufferPosition, endBufferPosition] = [endBufferPosition, startBufferPosition] + } + decorations.sort((a, b) => a.getMarker().compare(b.getMarker())) + gutterDecorations.sort((a, b) => a.getMarker().compare(b.getMarker())) + + expect(decorations.length).toBe(2) + expect(gutterDecorations.length).toBe(2) + + expect(decorations[0].marker.getStartBufferPosition()).toEqual(startBufferPosition) + expect(decorations[1].marker.getStartBufferPosition()).toEqual(endBufferPosition) + + expect(gutterDecorations[0].marker.getStartBufferPosition()).toEqual(startBufferPosition) + expect(gutterDecorations[1].marker.getStartBufferPosition()).toEqual(endBufferPosition) + } + + describe('when the cursor is before a starting pair', () => { + it('highlights the starting pair and ending pair', () => { + editor.moveToEndOfLine() + editor.moveLeft() + expectHighlights([0, 28], [12, 0]) + }) + }) + + describe('when the cursor is after a starting pair', () => { + it('highlights the starting pair and ending pair', () => { + editor.moveToEndOfLine() + expectHighlights([0, 28], [12, 0]) + }) + }) + + describe('when the cursor is before an ending pair', () => { + it('highlights the starting pair and ending pair', () => { + editor.moveToBottom() + editor.moveLeft() + editor.moveLeft() + expectHighlights([12, 0], [0, 28]) + }) + }) + + describe('when closing multiple pairs', () => { + it('always highlights the inner pair', () => { + editor.setCursorBufferPosition([8, 53]) + expectHighlights([8, 53], [8, 47]) + editor.moveRight() + expectHighlights([8, 53], [8, 47]) + editor.moveRight() + expectHighlights([8, 54], [8, 42]) + }) + }) + + describe('when opening multiple pairs', () => { + it('always highlights the inner pair', () => { + editor.setText('((1 + 1) * 2)') + editor.setCursorBufferPosition([0, 0]) + expectHighlights([0, 0], [0, 12]) + editor.moveRight() + expectHighlights([0, 1], [0, 7]) + editor.moveRight() + expectHighlights([0, 1], [0, 7]) + }) + }) + + describe('when the cursor is after an ending pair', () => { + it('highlights the starting pair and ending pair', () => { + editor.moveToBottom() + editor.moveLeft() + expectHighlights([12, 0], [0, 28]) + }) + }) + + describe('when there are unpaired brackets', () => { + it('highlights the correct start/end pairs', () => { + editor.setText('(()') + editor.setCursorBufferPosition([0, 0]) + expectNoHighlights() + + editor.setCursorBufferPosition([0, 1]) + expectHighlights([0, 1], [0, 2]) + + editor.setCursorBufferPosition([0, 2]) + expectHighlights([0, 1], [0, 2]) + + editor.setText(('())')) + editor.setCursorBufferPosition([0, 0]) + expectHighlights([0, 0], [0, 1]) + + editor.setCursorBufferPosition([0, 1]) + expectHighlights([0, 0], [0, 1]) + + editor.setCursorBufferPosition([0, 2]) + expectHighlights([0, 1], [0, 0]) + + editor.setCursorBufferPosition([0, 3]) + expectNoHighlights() + }) + }) + + describe('when there are commented brackets', () => { + it('highlights the correct start/end pairs', () => { + editor.setText('(//)') + editor.setCursorBufferPosition([0, 0]) + expectNoHighlights() + + editor.setCursorBufferPosition([0, 2]) + expectNoHighlights() + + editor.setCursorBufferPosition([0, 3]) + expectNoHighlights() + + editor.setText('{/*}*/') + editor.setCursorBufferPosition([0, 0]) + expectNoHighlights() + + editor.setCursorBufferPosition([0, 2]) + expectNoHighlights() + + editor.setCursorBufferPosition([0, 3]) + expectNoHighlights() + + editor.setText('[/*]*/]') + editor.setCursorBufferPosition([0, 0]) + expectHighlights([0, 0], [0, 6]) + + editor.setCursorBufferPosition([0, 6]) + expectHighlights([0, 6], [0, 0]) + + editor.setCursorBufferPosition([0, 2]) + expectNoHighlights() + }) + }) + + describe('when there are quoted brackets', () => { + it('highlights the correct start/end pairs', () => { + editor.setText("(')')") + editor.setCursorBufferPosition([0, 0]) + expectHighlights([0, 0], [0, 4]) + + editor.setCursorBufferPosition([0, 5]) + expectHighlights([0, 4], [0, 0]) + + editor.setCursorBufferPosition([0, 2]) + expectNoHighlights() + + editor.setText('["]"]') + editor.setCursorBufferPosition([0, 0]) + expectHighlights([0, 0], [0, 4]) + + editor.setCursorBufferPosition([0, 5]) + expectHighlights([0, 4], [0, 0]) + + editor.setCursorBufferPosition([0, 2]) + expectNoHighlights() + }) + }) + + describe('when there are brackets inside code embedded in a string', () => { + it('highlights the correct start/end pairs', () => { + editor.setText('(`${(1+1)}`)') + editor.setCursorBufferPosition([0, 0]) + expectHighlights([0, 0], [0, 11]) + + editor.setCursorBufferPosition([0, 12]) + expectHighlights([0, 11], [0, 0]) + + editor.setCursorBufferPosition([0, 4]) + expectHighlights([0, 4], [0, 8]) + }) + }) + + describe('when there are brackets inside a string inside code embedded in a string', () => { + it('highlights the correct start/end pairs', () => { + editor.setText("(`${('(1+1)')}`)") + editor.setCursorBufferPosition([0, 0]) + expectHighlights([0, 0], [0, 15]) + + editor.setCursorBufferPosition([0, 16]) + expectHighlights([0, 15], [0, 0]) + + editor.setCursorBufferPosition([0, 6]) + expectNoHighlights() + }) + }) + + describe('when there are brackets in regular expressions', () => { + it('highlights the correct start/end pairs', () => { + editor.setText('(/[)]/)') + editor.setCursorBufferPosition([0, 0]) + expectHighlights([0, 0], [0, 6]) + + editor.setCursorBufferPosition([0, 7]) + expectHighlights([0, 6], [0, 0]) + + editor.setCursorBufferPosition([0, 3]) + expectHighlights([0, 2], [0, 4]) + }) + }) + + describe('when the start character and end character of the pair are equivalent', () => { + it('does not attempt to highlight pairs', () => { + editor.setText("'hello'") + editor.setCursorBufferPosition([0, 0]) + expectNoHighlights() + }) + }) + + describe('when the cursor is moved off a pair', () => { + it('removes the starting pair and ending pair highlights', () => { + editor.moveToEndOfLine() + expectHighlights([0, 28], [12, 0]) + + editor.moveToBeginningOfLine() + expectNoHighlights() + }) + }) + + describe('when the pair moves', () => { + it('repositions the highlights', () => { + editor.moveToEndOfLine() + editor.moveLeft() + expectHighlights([0, 28], [12, 0]) + + editor.deleteToBeginningOfLine() + expectHighlights([0, 0], [12, 0]) + }) + }) + + describe('pair balancing', () => + describe('when a second starting pair preceeds the first ending pair', () => { + it('advances to the second ending pair', () => { + editor.setCursorBufferPosition([8, 42]) + expectHighlights([8, 42], [8, 54]) + }) + }) + ) + + describe('when a cursor is added or destroyed', () => { + it('updates the highlights to use the new cursor', () => { + editor.setCursorBufferPosition([9, 0]) + expectNoHighlights() + + editor.addCursorAtBufferPosition([0, 29]) + expectHighlights([0, 28], [12, 0]) + + editor.addCursorAtBufferPosition([0, 4]) + expectNoHighlights() + + editor.getLastCursor().destroy() + expectHighlights([0, 28], [12, 0]) + }) + }) + + describe('when highlightMatchingLineNumber config is disabled', () => { + it('does not highlight the gutter', () => { + atom.config.set('bracket-matcher.highlightMatchingLineNumber', false) + editor.moveToEndOfLine() + editor.moveLeft() + const gutterDecorations = editor.getLineNumberDecorations().filter(gutterDecoration => gutterDecoration.properties.class === 'bracket-matcher') + expect(gutterDecorations.length).toBe(0) + }) + }) + + describe('when the cursor moves off (clears) a selection next to a starting or ending pair', () => { + it('highlights the starting pair and ending pair', () => { + editor.moveToEndOfLine() + editor.selectLeft() + editor.getLastCursor().clearSelection() + expectHighlights([0, 28], [12, 0]) + }) + }) + + forEachLanguageWithTags(scopeName => { + describe(`${scopeName} tag matching`, () => { + beforeEach(() => { + waitsForPromise(() => atom.packages.activatePackage('language-html')) + waitsForPromise(() => atom.workspace.open(path.join(__dirname, 'fixtures', 'sample.xml'))) + + runs(() => { + editor = atom.workspace.getActiveTextEditor() + editorElement = atom.views.getView(editor) + buffer = editor.buffer + atom.grammars.assignLanguageMode(buffer, scopeName) + buffer.getLanguageMode().syncOperationLimit = Infinity + }) + }) + + describe('when on an opening tag', () => { + it('highlights the opening and closing tag', () => { + buffer.setText(`\ +<test> + <test>text</test> + <!-- </test> --> +</test>\ +` + ) + + editor.setCursorBufferPosition([0, 0]) + expectHighlights([0, 1], [3, 2]) + + editor.setCursorBufferPosition([0, 1]) + expectHighlights([0, 1], [3, 2]) + }) + }) + + describe('when on a closing tag', () => { + it('highlights the opening and closing tag', () => { + buffer.setText(`\ +<test> + <!-- <test> --> + <test>text</test> +</test>\ +` + ) + + editor.setCursorBufferPosition([3, 0]) + expectHighlights([3, 2], [0, 1]) + + editor.setCursorBufferPosition([3, 2]) + expectHighlights([3, 2], [0, 1]) + + buffer.setText(`\ +<test> + <test>text</test> + <test>text</test> +</test>\ +` + ) + + editor.setCursorBufferPosition([1, Infinity]) + expectHighlights([1, 14], [1, 3]) + + editor.setCursorBufferPosition([2, Infinity]) + expectHighlights([2, 14], [2, 3]) + }) + + it('highlights the correct opening tag, skipping self-closing tags', () => { + buffer.setText(`\ +<test> + <test /> +</test>\ +` + ) + + editor.setCursorBufferPosition([2, Infinity]) + expectHighlights([2, 2], [0, 1]) + }) + }) + + describe('when on a self-closing tag', () => { + it('highlights only the self-closing tag', () => { + buffer.setText(`\ +<test> + <test /> +</test>\ +` + ) + + editor.setCursorBufferPosition([1, Infinity]) + expectHighlights([1, 3], [1, 3]) + }) + + it('highlights a self-closing tag without a space', () => { + buffer.setText(`\ +<test> + <test/> +</test>\ +` + ) + + editor.setCursorBufferPosition([1, Infinity]) + expectHighlights([1, 3], [1, 3]) + }) + + it('highlights a self-closing tag with many spaces', () => { + buffer.setText(`\ +<test> + <test /> +</test>\ +` + ) + + editor.setCursorBufferPosition([1, Infinity]) + expectHighlights([1, 3], [1, 3]) + }) + + it('does not catastrophically backtrack when many attributes are present (regression)', () => { + // https://github.com/atom/bracket-matcher/issues/303 + + buffer.setText(`\ +<div style="display: flex; width: 500px; height: 100px; background: blue"> + <div style="min-width: 1em; background: red"> + <div style="background: yellow; position: absolute; left: 0; right: 0; height: 20px" /> + </div> +</div>\ +` + ) + + editor.setCursorBufferPosition([0, 6]) + expectHighlights([0, 1], [4, 2]) + + editor.setCursorBufferPosition([1, 6]) + expectHighlights([1, 3], [3, 4]) + + editor.setCursorBufferPosition([2, 6]) + expectHighlights([2, 5], [2, 5]) + + editor.setCursorBufferPosition([3, 6]) + expectHighlights([3, 4], [1, 3]) + + editor.setCursorBufferPosition([4, 6]) + expectHighlights([4, 2], [0, 1]) + }) + }) + + describe('when the tag spans multiple lines', () => { + it('highlights the opening and closing tag', () => { + buffer.setText(`\ +<div> + <div class="test" + title="test" + > + <div>test</div> + </div> +</div +>\ +` + ) + + editor.setCursorBufferPosition([0, 1]) + expectHighlights([0, 1], [6, 2]) + editor.setCursorBufferPosition([6, 2]) + expectHighlights([6, 2], [0, 1]) + }) + }) + + describe('when the tag has attributes', () => { + it('highlights the opening and closing tags', () => { + buffer.setText(`\ +<test a="test"> + text +</test>\ +` + ) + + editor.setCursorBufferPosition([2, 2]) + expectHighlights([2, 2], [0, 1]) + + editor.setCursorBufferPosition([0, 7]) + expectHighlights([0, 1], [2, 2]) + }) + }) + + describe("when the tag has an attribute with a value of '/'", () => { + it('highlights the opening and closing tags', () => { + buffer.setText(`\ +<test a="/"> + text +</test>\ +` + ) + + editor.setCursorBufferPosition([2, 2]) + expectHighlights([2, 2], [0, 1]) + + editor.setCursorBufferPosition([0, 7]) + expectHighlights([0, 1], [2, 2]) + }) + }) + + describe('when the opening and closing tags are on the same line', () => { + it('highlight the opening and closing tags', () => { + buffer.setText('<test>text</test>') + + editor.setCursorBufferPosition([0, 2]) + expectHighlights([0, 1], [0, 12]) + + editor.setCursorBufferPosition([0, 12]) + expectHighlights([0, 12], [0, 1]) + }) + }) + + describe('when the closing tag is missing', () => { + it('does not highlight anything', () => { + buffer.setText('<test>\ntext\n') + editor.setCursorBufferPosition([0, 10]) + expectNoHighlights() + }) + }) + + describe('when between the opening and closing tag', () => { + it('does not highlight anything', () => { + buffer.setText('<div>\nhi\n</div>\n') + editor.setCursorBufferPosition([1, 0]) + expectNoHighlights() + }) + }) + }) + }) + }) + + describe('when bracket-matcher:go-to-matching-bracket is triggered', () => { + describe('when the cursor is before the starting pair', () => { + it('moves the cursor to after the ending pair', () => { + editor.moveToEndOfLine() + editor.moveLeft() + atom.commands.dispatch(editorElement, 'bracket-matcher:go-to-matching-bracket') + expect(editor.getCursorBufferPosition()).toEqual([12, 1]) + }) + }) + + describe('when the cursor is after the starting pair', () => { + it('moves the cursor to before the ending pair', () => { + editor.moveToEndOfLine() + atom.commands.dispatch(editorElement, 'bracket-matcher:go-to-matching-bracket') + expect(editor.getCursorBufferPosition()).toEqual([12, 0]) + }) + }) + + describe('when the cursor is before the ending pair', () => { + it('moves the cursor to after the starting pair', () => { + editor.setCursorBufferPosition([12, 0]) + atom.commands.dispatch(editorElement, 'bracket-matcher:go-to-matching-bracket') + expect(editor.getCursorBufferPosition()).toEqual([0, 29]) + }) + }) + + describe('when the cursor is after the ending pair', () => { + it('moves the cursor to before the starting pair', () => { + editor.setCursorBufferPosition([12, 1]) + atom.commands.dispatch(editorElement, 'bracket-matcher:go-to-matching-bracket') + expect(editor.getCursorBufferPosition()).toEqual([0, 28]) + }) + }) + + describe('when the cursor is not adjacent to a pair', () => { + describe('when within a `{}` pair', () => { + it('moves the cursor to before the enclosing brace', () => { + editor.setCursorBufferPosition([11, 2]) + atom.commands.dispatch(editorElement, 'bracket-matcher:go-to-matching-bracket') + expect(editor.getCursorBufferPosition()).toEqual([0, 28]) + }) + }) + + describe('when within a `()` pair', () => { + it('moves the cursor to before the enclosing brace', () => { + editor.setCursorBufferPosition([2, 14]) + atom.commands.dispatch(editorElement, 'bracket-matcher:go-to-matching-bracket') + expect(editor.getCursorBufferPosition()).toEqual([2, 7]) + }) + }) + + forEachLanguageWithTags(scopeName => { + describe(`in ${scopeName} files`, () => { + beforeEach(() => { + waitsForPromise(() => atom.workspace.open(path.join(__dirname, 'fixtures', 'sample.xml'))) + + runs(() => { + editor = atom.workspace.getActiveTextEditor() + editorElement = atom.views.getView(editor) + buffer = editor.buffer + atom.grammars.assignLanguageMode(buffer, scopeName) + buffer.getLanguageMode().syncOperationLimit = Infinity + }) + }) + + describe('when within a <tag></tag> pair', () => { + it('moves the cursor to the starting tag', () => { + editor.setCursorBufferPosition([5, 10]) + atom.commands.dispatch(editorElement, 'bracket-matcher:go-to-matching-bracket') + expect(editor.getCursorBufferPosition()).toEqual([4, 9]) + }) + }) + + describe('when on a starting <tag>', () => { + it('moves the cursor to the end </tag>', () => { + editor.setCursorBufferPosition([1, 2]) + atom.commands.dispatch(editorElement, 'bracket-matcher:go-to-matching-bracket') + expect(editor.getCursorBufferPosition()).toEqual([15, 2]) + + editor.setCursorBufferPosition([1, 3]) + atom.commands.dispatch(editorElement, 'bracket-matcher:go-to-matching-bracket') + expect(editor.getCursorBufferPosition()).toEqual([15, 4]) + + editor.setCursorBufferPosition([1, 4]) + atom.commands.dispatch(editorElement, 'bracket-matcher:go-to-matching-bracket') + expect(editor.getCursorBufferPosition()).toEqual([15, 5]) + + editor.setCursorBufferPosition([1, 5]) + atom.commands.dispatch(editorElement, 'bracket-matcher:go-to-matching-bracket') + expect(editor.getCursorBufferPosition()).toEqual([15, 6]) + + editor.setCursorBufferPosition([1, 6]) + atom.commands.dispatch(editorElement, 'bracket-matcher:go-to-matching-bracket') + expect(editor.getCursorBufferPosition()).toEqual([15, 7]) + + editor.setCursorBufferPosition([1, 7]) + atom.commands.dispatch(editorElement, 'bracket-matcher:go-to-matching-bracket') + expect(editor.getCursorBufferPosition()).toEqual([15, 8]) + + editor.setCursorBufferPosition([1, 8]) + atom.commands.dispatch(editorElement, 'bracket-matcher:go-to-matching-bracket') + expect(editor.getCursorBufferPosition()).toEqual([15, 8]) + + editor.setCursorBufferPosition([1, 9]) + atom.commands.dispatch(editorElement, 'bracket-matcher:go-to-matching-bracket') + expect(editor.getCursorBufferPosition()).toEqual([15, 8]) + + editor.setCursorBufferPosition([1, 10]) + atom.commands.dispatch(editorElement, 'bracket-matcher:go-to-matching-bracket') + expect(editor.getCursorBufferPosition()).toEqual([15, 8]) + + editor.setCursorBufferPosition([1, 16]) + atom.commands.dispatch(editorElement, 'bracket-matcher:go-to-matching-bracket') + expect(editor.getCursorBufferPosition()).toEqual([15, 8]) + }) + }) + + describe('when on an ending </tag>', () => { + it('moves the cursor to the start <tag>', () => { + editor.setCursorBufferPosition([15, 2]) + atom.commands.dispatch(editorElement, 'bracket-matcher:go-to-matching-bracket') + expect(editor.getCursorBufferPosition()).toEqual([1, 2]) + + editor.setCursorBufferPosition([15, 3]) + atom.commands.dispatch(editorElement, 'bracket-matcher:go-to-matching-bracket') + expect(editor.getCursorBufferPosition()).toEqual([1, 3]) + + editor.setCursorBufferPosition([15, 4]) + atom.commands.dispatch(editorElement, 'bracket-matcher:go-to-matching-bracket') + expect(editor.getCursorBufferPosition()).toEqual([1, 3]) + + editor.setCursorBufferPosition([15, 5]) + atom.commands.dispatch(editorElement, 'bracket-matcher:go-to-matching-bracket') + expect(editor.getCursorBufferPosition()).toEqual([1, 4]) + + editor.setCursorBufferPosition([15, 6]) + atom.commands.dispatch(editorElement, 'bracket-matcher:go-to-matching-bracket') + expect(editor.getCursorBufferPosition()).toEqual([1, 5]) + + editor.setCursorBufferPosition([15, 7]) + atom.commands.dispatch(editorElement, 'bracket-matcher:go-to-matching-bracket') + expect(editor.getCursorBufferPosition()).toEqual([1, 6]) + + editor.setCursorBufferPosition([15, 8]) + atom.commands.dispatch(editorElement, 'bracket-matcher:go-to-matching-bracket') + expect(editor.getCursorBufferPosition()).toEqual([1, 7]) + + editor.setCursorBufferPosition([15, 9]) + atom.commands.dispatch(editorElement, 'bracket-matcher:go-to-matching-bracket') + expect(editor.getCursorBufferPosition()).toEqual([1, 7]) + }) + }) + }) + }) + }) + }) + + describe('when bracket-matcher:go-to-enclosing-bracket is triggered', () => { + describe('when within a `{}` pair', () => { + it('moves the cursor to before the enclosing brace', () => { + editor.setCursorBufferPosition([11, 2]) + atom.commands.dispatch(editorElement, 'bracket-matcher:go-to-enclosing-bracket') + expect(editor.getCursorBufferPosition()).toEqual([0, 28]) + }) + }) + + describe('when within a `()` pair', () => { + it('moves the cursor to before the enclosing brace', () => { + editor.setCursorBufferPosition([2, 14]) + atom.commands.dispatch(editorElement, 'bracket-matcher:go-to-enclosing-bracket') + expect(editor.getCursorBufferPosition()).toEqual([2, 7]) + }) + }) + + describe('when not within a pair', () => { + it('does not do anything', () => { + editor.setCursorBufferPosition([0, 3]) + atom.commands.dispatch(editorElement, 'bracket-matcher:go-to-enclosing-bracket') + expect(editor.getCursorBufferPosition()).toEqual([0, 3]) + }) + }) + }) + + describe('when bracket-match:select-inside-brackets is triggered', () => { + describe('when the cursor on the left side of a bracket', () => { + it('selects the text inside the brackets', () => { + editor.setCursorBufferPosition([0, 28]) + atom.commands.dispatch(editorElement, 'bracket-matcher:select-inside-brackets') + expect(editor.getSelectedBufferRange()).toEqual([[0, 29], [12, 0]]) + }) + }) + + describe('when the cursor on the right side of a bracket', () => { + it('selects the text inside the brackets', () => { + editor.setCursorBufferPosition([1, 30]) + atom.commands.dispatch(editorElement, 'bracket-matcher:select-inside-brackets') + expect(editor.getSelectedBufferRange()).toEqual([[1, 30], [9, 2]]) + }) + }) + + describe('when the cursor is inside the brackets', () => { + it('selects the text for the closest outer brackets', () => { + editor.setCursorBufferPosition([6, 6]) + atom.commands.dispatch(editorElement, 'bracket-matcher:select-inside-brackets') + expect(editor.getSelectedBufferRange()).toEqual([[4, 29], [7, 4]]) + }) + }) + + describe('when there are no brackets or tags', () => { + it('does not catastrophically backtrack (regression)', () => { + buffer.setText(`${'a'.repeat(500)}\n`.repeat(500)) + editor.setCursorBufferPosition([0, 500]) + + const start = Date.now() + atom.commands.dispatch(editorElement, 'bracket-matcher:select-inside-brackets') + expect(editor.getSelectedBufferRange()).toEqual([[0, 500], [0, 500]]) + expect(Date.now() - start).toBeLessThan(5000) + }) + }) + + it('does not error when a bracket is already highlighted (regression)', () => { + atom.grammars.assignLanguageMode(editor, null) + editor.setText("(ok)") + editor.selectAll() + atom.commands.dispatch(editorElement, 'bracket-matcher:select-inside-brackets') + }) + + describe('when there are multiple cursors', () => { + beforeEach(() => { + waitsForPromise(() => atom.workspace.open(path.join(__dirname, 'fixtures', 'multiplecursor.md'))) + runs(() => { + editor = atom.workspace.getActiveTextEditor() + editorElement = atom.views.getView(editor) + }) + }) + it('selects text inside the multiple cursors', () => { + editor.addCursorAtBufferPosition([0, 6]) + editor.addCursorAtBufferPosition([1, 6]) + editor.addCursorAtBufferPosition([2, 6]) + editor.addCursorAtBufferPosition([3, 6]) + editor.addCursorAtBufferPosition([4, 6]) + + atom.commands.dispatch(editorElement, 'bracket-matcher:select-inside-brackets') + + const selectedRanges = editor.getSelectedBufferRanges(); + expect(selectedRanges.length).toBe(6) + expect(selectedRanges).toEqual([ + [[0, 0], [0, 0]], + [[0, 1], [0, 7]], + [[1, 1], [1, 15]], + [[2, 1], [2, 19]], + [[3, 1], [3, 13]], + [[4, 1], [4, 15]], + ]) + }) + }) + + forEachLanguageWithTags(scopeName => { + describe(`${scopeName} tag matching`, () => { + beforeEach(() => { + waitsForPromise(() => atom.workspace.open(path.join(__dirname, 'fixtures', 'sample.xml'))) + + runs(() => { + editor = atom.workspace.getActiveTextEditor() + editorElement = atom.views.getView(editor) + buffer = editor.buffer + }) + }) + + describe('when the cursor is on a starting tag', () => { + it('selects the text inside the starting/closing tag', () => { + editor.setCursorBufferPosition([4, 9]) + atom.commands.dispatch(editorElement, 'bracket-matcher:select-inside-brackets') + expect(editor.getSelectedBufferRange()).toEqual([[4, 13], [6, 8]]) + }) + }) + + describe('when the cursor is on an ending tag', () => { + it('selects the text inside the starting/closing tag', () => { + editor.setCursorBufferPosition([14, 9]) + atom.commands.dispatch(editorElement, 'bracket-matcher:select-inside-brackets') + expect(editor.getSelectedBufferRange()).toEqual([[10, 9], [14, 4]]) + }) + }) + + describe('when the cursor is inside a tag', () => { + it('selects the text inside the starting/closing tag', () => { + editor.setCursorBufferPosition([12, 8]) + atom.commands.dispatch(editorElement, 'bracket-matcher:select-inside-brackets') + expect(editor.getSelectedBufferRange()).toEqual([[11, 11], [13, 6]]) + }) + }) + + it('does not select attributes inside tags', () => { + editor.setCursorBufferPosition([1, 10]) + atom.commands.dispatch(editorElement, 'bracket-matcher:select-inside-brackets') + expect(editor.getSelectedBufferRange()).toEqual([[1, 17], [15, 2]]) + }) + }) + }) + }) + + describe('when bracket-matcher:remove-matching-brackets is triggered', () => { + describe('when the cursor is not in front of any pair', () => { + it('performs a regular backspace action', () => { + editor.setCursorBufferPosition([0, 1]) + atom.commands.dispatch(editorElement, 'bracket-matcher:remove-matching-brackets') + expect(editor.lineTextForBufferRow(0)).toEqual('ar quicksort = function () {') + expect(editor.getCursorBufferPosition()).toEqual([0, 0]) + }) + }) + + describe('when the cursor is at the beginning of a line', () => { + it('performs a regular backspace action', () => { + editor.setCursorBufferPosition([12, 0]) + atom.commands.dispatch(editorElement, 'bracket-matcher:remove-matching-brackets') + expect(editor.lineTextForBufferRow(11)).toEqual(' return sort(Array.apply(this, arguments));};') + expect(editor.getCursorBufferPosition()).toEqual([11, 44]) + }) + }) + + describe('when the cursor is on the left side of a starting pair', () => { + it('performs a regular backspace action', () => { + editor.setCursorBufferPosition([0, 28]) + atom.commands.dispatch(editorElement, 'bracket-matcher:remove-matching-brackets') + expect(editor.lineTextForBufferRow(0)).toEqual('var quicksort = function (){') + expect(editor.getCursorBufferPosition()).toEqual([0, 27]) + }) + }) + + describe('when the cursor is on the left side of an ending pair', () => { + it('performs a regular backspace action', () => { + editor.setCursorBufferPosition([7, 4]) + atom.commands.dispatch(editorElement, 'bracket-matcher:remove-matching-brackets') + expect(editor.lineTextForBufferRow(7)).toEqual(' }') + expect(editor.getCursorBufferPosition()).toEqual([7, 2]) + }) + }) + + describe('when the cursor is on the right side of a starting pair, the ending pair on another line', () => { + it('removes both pairs', () => { + editor.setCursorBufferPosition([0, 29]) + atom.commands.dispatch(editorElement, 'bracket-matcher:remove-matching-brackets') + expect(editor.lineTextForBufferRow(0)).toEqual('var quicksort = function () ') + expect(editor.lineTextForBufferRow(12)).toEqual(';') + expect(editor.getCursorBufferPosition()).toEqual([0, 28]) + }) + }) + + describe('when the cursor is on the right side of an ending pair, the starting pair on another line', () => { + it('removes both pairs', () => { + editor.setCursorBufferPosition([7, 5]) + atom.commands.dispatch(editorElement, 'bracket-matcher:remove-matching-brackets') + expect(editor.lineTextForBufferRow(4)).toEqual(' while(items.length > 0) ') + expect(editor.lineTextForBufferRow(7)).toEqual(' ') + expect(editor.getCursorBufferPosition()).toEqual([7, 4]) + }) + }) + + describe('when the cursor is on the right side of a starting pair, the ending pair on the same line', () => { + it('removes both pairs', () => { + editor.setCursorBufferPosition([11, 14]) + atom.commands.dispatch(editorElement, 'bracket-matcher:remove-matching-brackets') + expect(editor.lineTextForBufferRow(11)).toEqual(' return sortArray.apply(this, arguments);') + expect(editor.getCursorBufferPosition()).toEqual([11, 13]) + }) + }) + + describe('when the cursor is on the right side of an ending pair, the starting pair on the same line', () => { + it('removes both pairs', () => { + editor.setCursorBufferPosition([11, 43]) + atom.commands.dispatch(editorElement, 'bracket-matcher:remove-matching-brackets') + expect(editor.lineTextForBufferRow(11)).toEqual(' return sortArray.apply(this, arguments);') + expect(editor.getCursorBufferPosition()).toEqual([11, 41]) + }) + }) + + describe('when a starting pair is selected', () => { + it('removes both pairs', () => { + editor.setSelectedBufferRange([[11, 13], [11, 14]]) + atom.commands.dispatch(editorElement, 'bracket-matcher:remove-matching-brackets') + expect(editor.lineTextForBufferRow(11)).toEqual(' return sortArray.apply(this, arguments);') + expect(editor.getCursorBufferPosition()).toEqual([11, 13]) + }) + }) + + describe('when an ending pair is selected', () => { + it('removes both pairs', () => { + editor.setSelectedBufferRange([[11, 42], [11, 43]]) + atom.commands.dispatch(editorElement, 'bracket-matcher:remove-matching-brackets') + expect(editor.lineTextForBufferRow(11)).toEqual(' return sortArray.apply(this, arguments);') + expect(editor.getCursorBufferPosition()).toEqual([11, 41]) + }) + }) + }) + + describe('matching bracket deletion', () => { + beforeEach(() => { + editor.buffer.setText('') + }) + + describe('when selection is not a matching pair of brackets', () => { + it('does not change the text', () => { + editor.insertText('"woah(') + editor.selectAll() + atom.commands.dispatch(editorElement, 'bracket-matcher:remove-brackets-from-selection') + expect(editor.buffer.getText()).toBe('"woah(') + }) + }) + + describe('when selecting a matching pair of brackets', () => { + describe('on the same line', () => { + beforeEach(() => { + editor.buffer.setText('it "does something", :meta => true') + editor.setSelectedBufferRange([[0, 3], [0, 19]]) + atom.commands.dispatch(editorElement, 'bracket-matcher:remove-brackets-from-selection') + }) + + it('removes the brackets', () => { + expect(editor.buffer.getText()).toBe('it does something, :meta => true') + }) + + it('selects the newly unbracketed text', () => { + expect(editor.getSelectedText()).toBe('does something') + }) + }) + + describe('on separate lines', () => { + beforeEach(() => { + editor.buffer.setText('it ("does something" do\nend)') + editor.setSelectedBufferRange([[0, 3], [1, 4]]) + atom.commands.dispatch(editorElement, 'bracket-matcher:remove-brackets-from-selection') + }) + + it('removes the brackets', () => { + expect(editor.buffer.getText()).toBe('it "does something" do\nend') + }) + + it('selects the newly unbracketed text', () => { + expect(editor.getSelectedText()).toBe('"does something" do\nend') + }) + }) + }) + }) + + describe('matching bracket insertion', () => { + beforeEach(() => { + editor.buffer.setText('') + atom.config.set('editor.autoIndent', true) + }) + + describe('when more than one character is inserted', () => { + it('does not insert a matching bracket', () => { + editor.insertText('woah(') + expect(editor.buffer.getText()).toBe('woah(') + }) + }) + + describe('when there is a word character after the cursor', () => { + it('does not insert a matching bracket', () => { + editor.buffer.setText('ab') + editor.setCursorBufferPosition([0, 1]) + editor.insertText('(') + + expect(editor.buffer.getText()).toBe('a(b') + }) + }) + + describe('when autocompleteBrackets configuration is disabled globally', () => { + it('does not insert a matching bracket', () => { + atom.config.set('bracket-matcher.autocompleteBrackets', false) + editor.buffer.setText('}') + editor.setCursorBufferPosition([0, 0]) + editor.insertText('{') + expect(buffer.lineForRow(0)).toBe('{}') + expect(editor.getCursorBufferPosition()).toEqual([0, 1]) + }) + }) + + describe('when autocompleteBrackets configuration is disabled in scope', () => { + it('does not insert a matching bracket', () => { + atom.config.set('bracket-matcher.autocompleteBrackets', true) + atom.config.set('bracket-matcher.autocompleteBrackets', false, {scopeSelector: '.source.js'}) + editor.buffer.setText('}') + editor.setCursorBufferPosition([0, 0]) + editor.insertText('{') + expect(buffer.lineForRow(0)).toBe('{}') + expect(editor.getCursorBufferPosition()).toEqual([0, 1]) + }) + }) + + describe('when autocompleteCharacters configuration is set globally', () => { + it('inserts a matching angle bracket', () => { + atom.config.set('bracket-matcher.autocompleteCharacters', ['<>']) + editor.setCursorBufferPosition([0, 0]) + editor.insertText('<') + expect(buffer.lineForRow(0)).toBe('<>') + expect(editor.getCursorBufferPosition()).toEqual([0, 1]) + }) + }) + + describe('when autocompleteCharacters configuration is set in scope', () => { + it('inserts a matching angle bracket', () => { + atom.config.set('bracket-matcher.autocompleteCharacters', ['<>'], {scopeSelector: '.source.js'}) + editor.setCursorBufferPosition([0, 0]) + editor.insertText('<') + expect(buffer.lineForRow(0)).toBe('<>') + expect(editor.getCursorBufferPosition()).toEqual([0, 1]) + }) + + it('emits a buffer change event after the cursor is in place', () => { + atom.config.set('bracket-matcher.autocompleteCharacters', ['<>'], {scopeSelector: '.source.js'}) + + let lastPosition = null + const sub = editor.getBuffer().onDidChange(() => { + expect(lastPosition).toBeNull() + lastPosition = editor.getLastCursor().getBufferPosition() + }) + + editor.setCursorBufferPosition([0, 0]) + editor.insertText('<') + expect(lastPosition).toEqual([0, 1]) + }) + }) + + describe('when there are multiple cursors', () => { + it('inserts ) at each cursor', () => { + editor.buffer.setText('()\nab\n[]\n12') + editor.setCursorBufferPosition([3, 1]) + editor.addCursorAtBufferPosition([2, 1]) + editor.addCursorAtBufferPosition([1, 1]) + editor.addCursorAtBufferPosition([0, 1]) + editor.insertText(')') + + expect(editor.buffer.getText()).toBe('())\na)b\n[)]\n1)2') + }) + }) + + describe('when there is a non-word character after the cursor', () => { + it('inserts a closing bracket after an opening bracket is inserted', () => { + editor.buffer.setText('}') + editor.setCursorBufferPosition([0, 0]) + editor.insertText('{') + expect(buffer.lineForRow(0)).toBe('{}}') + expect(editor.getCursorBufferPosition()).toEqual([0, 1]) + }) + }) + + describe('when the cursor is at the end of the line', () => { + it('inserts a closing bracket after an opening bracket is inserted', () => { + editor.buffer.setText('') + editor.insertText('{') + expect(buffer.lineForRow(0)).toBe('{}') + expect(editor.getCursorBufferPosition()).toEqual([0, 1]) + + editor.buffer.setText('') + editor.insertText('(') + expect(buffer.lineForRow(0)).toBe('()') + expect(editor.getCursorBufferPosition()).toEqual([0, 1]) + + editor.buffer.setText('') + editor.insertText('[') + expect(buffer.lineForRow(0)).toBe('[]') + expect(editor.getCursorBufferPosition()).toEqual([0, 1]) + + editor.buffer.setText('') + editor.insertText('"') + expect(buffer.lineForRow(0)).toBe('""') + expect(editor.getCursorBufferPosition()).toEqual([0, 1]) + + editor.buffer.setText('') + editor.insertText("'") + expect(buffer.lineForRow(0)).toBe("''") + expect(editor.getCursorBufferPosition()).toEqual([0, 1]) + }) + }) + + describe('when the cursor follows an escape character', () => { + it("doesn't insert a quote to match the escaped quote and overwrites the end quote", () => { + editor.buffer.setText('') + editor.insertText('"') + editor.insertText('\\') + editor.insertText('"') + editor.insertText('"') + expect(buffer.lineForRow(0)).toBe('"\\""') + }) + }) + + describe('when the cursor follows an escape sequence', () => { + it('inserts a matching quote and overwrites it', () => { + editor.buffer.setText('') + editor.insertText('"') + editor.insertText('\\') + editor.insertText('\\') + editor.insertText('"') + expect(buffer.lineForRow(0)).toBe('"\\\\"') + }) + }) + + describe('when the cursor follows a combination of escape characters', () => { + it('correctly decides whether to match the quote or not', () => { + editor.buffer.setText('') + editor.insertText('"') + editor.insertText('\\') + editor.insertText('\\') + editor.insertText('\\') + editor.insertText('"') + expect(buffer.lineForRow(0)).toBe('"\\\\\\""') + + editor.buffer.setText('') + editor.insertText('"') + editor.insertText('\\') + editor.insertText('\\') + editor.insertText('\\') + editor.insertText('\\') + editor.insertText('"') + expect(buffer.lineForRow(0)).toBe('"\\\\\\\\"') + }) + }) + + describe('when the cursor is on a closing bracket and a closing bracket is inserted', () => { + describe('when the closing bracket was there previously', () => { + it('inserts a closing bracket', () => { + editor.insertText('()x') + editor.setCursorBufferPosition([0, 1]) + editor.insertText(')') + expect(buffer.lineForRow(0)).toBe('())x') + expect(editor.getCursorBufferPosition().column).toBe(2) + }) + }) + + describe('when the closing bracket was automatically inserted from inserting an opening bracket', () => { + it('only moves cursor over the closing bracket one time', () => { + editor.insertText('(') + expect(buffer.lineForRow(0)).toBe('()') + editor.setCursorBufferPosition([0, 1]) + editor.insertText(')') + expect(buffer.lineForRow(0)).toBe('()') + expect(editor.getCursorBufferPosition()).toEqual([0, 2]) + + editor.setCursorBufferPosition([0, 1]) + editor.insertText(')') + expect(buffer.lineForRow(0)).toBe('())') + expect(editor.getCursorBufferPosition()).toEqual([0, 2]) + }) + + it('moves cursor over the closing bracket after other text is inserted', () => { + editor.insertText('(') + editor.insertText('ok cool') + expect(buffer.lineForRow(0)).toBe('(ok cool)') + editor.setCursorBufferPosition([0, 8]) + editor.insertText(')') + expect(buffer.lineForRow(0)).toBe('(ok cool)') + expect(editor.getCursorBufferPosition()).toEqual([0, 9]) + }) + + it('works with nested brackets', () => { + editor.insertText('(') + editor.insertText('1') + editor.insertText('(') + editor.insertText('2') + expect(buffer.lineForRow(0)).toBe('(1(2))') + editor.setCursorBufferPosition([0, 4]) + editor.insertText(')') + expect(buffer.lineForRow(0)).toBe('(1(2))') + expect(editor.getCursorBufferPosition()).toEqual([0, 5]) + editor.insertText(')') + expect(buffer.lineForRow(0)).toBe('(1(2))') + expect(editor.getCursorBufferPosition()).toEqual([0, 6]) + }) + + it('works with mixed brackets', () => { + editor.insertText('(') + editor.insertText('}') + expect(buffer.lineForRow(0)).toBe('(})') + editor.insertText(')') + expect(buffer.lineForRow(0)).toBe('(})') + expect(editor.getCursorBufferPosition()).toEqual([0, 3]) + }) + + it('closes brackets with the same begin/end character correctly', () => { + editor.insertText('"') + editor.insertText('ok') + expect(buffer.lineForRow(0)).toBe('"ok"') + expect(editor.getCursorBufferPosition()).toEqual([0, 3]) + editor.insertText('"') + expect(buffer.lineForRow(0)).toBe('"ok"') + expect(editor.getCursorBufferPosition()).toEqual([0, 4]) + }) + }) + }) + + describe('when there is text selected on a single line', () => { + it('wraps the selection with brackets', () => { + editor.setText('text') + editor.moveToBottom() + editor.selectToTop() + editor.selectAll() + editor.insertText('(') + expect(buffer.getText()).toBe('(text)') + expect(editor.getSelectedBufferRange()).toEqual([[0, 1], [0, 5]]) + expect(editor.getLastSelection().isReversed()).toBeTruthy() + }) + + describe('when the bracket-matcher.wrapSelectionsInBrackets is falsy globally', () => { + it('does not wrap the selection in brackets', () => { + atom.config.set('bracket-matcher.wrapSelectionsInBrackets', false) + editor.setText('text') + editor.moveToBottom() + editor.selectToTop() + editor.selectAll() + editor.insertText('(') + expect(buffer.getText()).toBe('(') + expect(editor.getSelectedBufferRange()).toEqual([[0, 1], [0, 1]]) + }) + }) + + describe('when the bracket-matcher.wrapSelectionsInBrackets is falsy in scope', () => { + it('does not wrap the selection in brackets', () => { + atom.config.set('bracket-matcher.wrapSelectionsInBrackets', true) + atom.config.set('bracket-matcher.wrapSelectionsInBrackets', false, {scopeSelector: '.source.js'}) + editor.setText('text') + editor.moveToBottom() + editor.selectToTop() + editor.selectAll() + editor.insertText('(') + expect(buffer.getText()).toBe('(') + expect(editor.getSelectedBufferRange()).toEqual([[0, 1], [0, 1]]) + }) + }) + }) + + describe('when there is text selected on multiple lines', () => { + it('wraps the selection with brackets', () => { + editor.insertText('text\nabcd') + editor.moveToBottom() + editor.selectToTop() + editor.selectAll() + editor.insertText('(') + expect('(text\nabcd)').toBe(buffer.getText()) + expect(editor.getSelectedBufferRange()).toEqual([[0, 1], [1, 4]]) + expect(editor.getLastSelection().isReversed()).toBeTruthy() + }) + + describe('when there are multiple selections', () => { + it('wraps each selection with brackets', () => { + editor.setText('a b\nb c\nc b') + editor.setSelectedBufferRanges([ + [[0, 2], [0, 3]], + [[1, 0], [1, 1]], + [[2, 2], [2, 3]] + ]) + + editor.insertText('"') + expect(editor.getSelectedBufferRanges()).toEqual([ + [[0, 3], [0, 4]], + [[1, 1], [1, 2]], + [[2, 3], [2, 4]] + ]) + + expect(buffer.lineForRow(0)).toBe('a "b"') + expect(buffer.lineForRow(1)).toBe('"b" c') + expect(buffer.lineForRow(2)).toBe('c "b"') + }) + }) + }) + + describe('when inserting a quote', () => { + describe('when a word character is before the cursor', () => { + it('does not automatically insert the closing quote', () => { + editor.buffer.setText('abc') + editor.moveToEndOfLine() + editor.insertText('"') + expect(editor.getText()).toBe('abc"') + + editor.buffer.setText('abc') + editor.moveToEndOfLine() + editor.insertText("'") + expect(editor.getText()).toBe("abc'") + }) + }) + + describe('when an escape character is before the cursor', () => { + it('does not automatically insert the closing quote', () => { + editor.buffer.setText('\\') + editor.moveToEndOfLine() + editor.insertText('"') + expect(editor.getText()).toBe('\\"') + + editor.buffer.setText('\\') + editor.moveToEndOfLine() + editor.insertText("'") + expect(editor.getText()).toBe("\\'") + + editor.buffer.setText('"\\"') + editor.moveToEndOfLine() + editor.insertText('"') + expect(editor.getText()).toBe('"\\""') + + editor.buffer.setText("\"\\'") + editor.moveToEndOfLine() + editor.insertText('"') + expect(editor.getText()).toBe("\"\\'\"") + + editor.buffer.setText("'\\\"") + editor.moveToEndOfLine() + editor.insertText("'") + expect(editor.getText()).toBe("'\\\"'") + + editor.buffer.setText("'\\'") + editor.moveToEndOfLine() + editor.insertText("'") + expect(editor.getText()).toBe("'\\''") + }) + }) + + describe('when an escape sequence is before the cursor', () => { + it('does not create a new quote pair', () => { + editor.buffer.setText('"\\\\"') + editor.moveToEndOfLine() + editor.insertText('"') + expect(editor.getText()).toBe('"\\\\""') + + editor.buffer.setText("'\\\\'") + editor.moveToEndOfLine() + editor.insertText("'") + expect(editor.getText()).toBe("'\\\\''") + }) + }) + + describe('when a combination of escape characters is before the cursor', () => { + it('correctly determines whether it is an escape character or sequence', () => { + editor.buffer.setText('\\\\\\') + editor.moveToEndOfLine() + editor.insertText('"') + expect(editor.getText()).toBe('\\\\\\"') + + editor.buffer.setText('\\\\\\') + editor.moveToEndOfLine() + editor.insertText("'") + expect(editor.getText()).toBe("\\\\\\'") + + editor.buffer.setText('"\\\\\\"') + editor.moveToEndOfLine() + editor.insertText('"') + expect(editor.getText()).toBe('"\\\\\\""') + + editor.buffer.setText("\"\\\\\\'") + editor.moveToEndOfLine() + editor.insertText('"') + expect(editor.getText()).toBe("\"\\\\\\'\"") + + editor.buffer.setText("'\\\\\\\"") + editor.moveToEndOfLine() + editor.insertText("'") + expect(editor.getText()).toBe("'\\\\\\\"'") + + editor.buffer.setText("'\\\\\\'") + editor.moveToEndOfLine() + editor.insertText("'") + expect(editor.getText()).toBe("'\\\\\\''") + }) + }) + + describe('when a quote is before the cursor', () => { + it('does not automatically insert the closing quote', () => { + editor.buffer.setText("''") + editor.moveToEndOfLine() + editor.insertText("'") + expect(editor.getText()).toBe("'''") + + editor.buffer.setText('""') + editor.moveToEndOfLine() + editor.insertText('"') + expect(editor.getText()).toBe('"""') + + editor.buffer.setText('``') + editor.moveToEndOfLine() + editor.insertText('`') + expect(editor.getText()).toBe('```') + + editor.buffer.setText("''") + editor.moveToEndOfLine() + editor.insertText('"') + expect(editor.getText()).toBe("''\"\"") + }) + }) + + describe('when a non word character is before the cursor', () => { + it('automatically inserts the closing quote', () => { + editor.buffer.setText('ab@') + editor.moveToEndOfLine() + editor.insertText('"') + expect(editor.getText()).toBe('ab@""') + expect(editor.getCursorBufferPosition()).toEqual([0, 4]) + }) + }) + + describe('when the cursor is on an empty line', () => { + it('automatically inserts the closing quote', () => { + editor.buffer.setText('') + editor.insertText('"') + expect(editor.getText()).toBe('""') + expect(editor.getCursorBufferPosition()).toEqual([0, 1]) + }) + }) + + describe('when the select option to Editor::insertText is true', () => { + it('does not automatically insert the closing quote', () => { + editor.buffer.setText('') + editor.insertText('"', {select: true}) + expect(editor.getText()).toBe('"') + expect(editor.getCursorBufferPosition()).toEqual([0, 1]) + }) + }) + + describe("when the undo option to Editor::insertText is 'skip'", () => { + it('does not automatically insert the closing quote', () => { + editor.buffer.setText('') + editor.insertText('"', {undo: 'skip'}) + expect(editor.getText()).toBe('"') + expect(editor.getCursorBufferPosition()).toEqual([0, 1]) + }) + }) + }) + + describe('when return is pressed inside a matching pair', () => { + it('puts the cursor on the indented empty line', () => { + editor.insertText('void main() ') + editor.insertText('{') + expect(editor.getText()).toBe('void main() {}') + editor.insertNewline() + expect(editor.getCursorBufferPosition()).toEqual([1, 2]) + expect(buffer.lineForRow(1)).toBe(' ') + expect(buffer.lineForRow(2)).toBe('}') + + editor.setText(' void main() ') + editor.insertText('{') + expect(editor.getText()).toBe(' void main() {}') + editor.insertNewline() + expect(editor.getCursorBufferPosition()).toEqual([1, 4]) + expect(buffer.lineForRow(1)).toBe(' ') + expect(buffer.lineForRow(2)).toBe(' }') + }) + + describe('when undo is triggered', () => { + it('removes both newlines', () => { + editor.insertText('void main() ') + editor.insertText('{') + editor.insertNewline() + editor.undo() + expect(editor.getText()).toBe('void main() {}') + }) + }) + + describe('when editor.autoIndent is disabled', () => { + beforeEach(() => { + atom.config.set('editor.autoIndent', false) + }) + + it('does not auto-indent the empty line and closing bracket', () => { + editor.insertText(' void main() ') + editor.insertText('{') + expect(editor.getText()).toBe(' void main() {}') + editor.insertNewline() + expect(editor.getCursorBufferPosition()).toEqual([1, 0]) + expect(buffer.lineForRow(1)).toBe('') + expect(buffer.lineForRow(2)).toBe('}') + }) + }) + }) + + describe('when in language specific scope', () => { + describe('string interpolation', () => { + beforeEach(() => { + waitsForPromise(() => atom.packages.activatePackage('language-ruby')) + + runs(() => buffer.setPath('foo.rb')) + }) + + it('should insert curly braces inside doubly quoted string', () => { + editor.insertText('foo = ') + editor.insertText('"') + editor.insertText('#') + expect(editor.getText()).toBe('foo = "#{}"') + editor.undo() + expect(editor.getText()).toBe('foo = ""') + }) + + it('should not insert curly braces inside singly quoted string', () => { + editor.insertText('foo = ') + editor.insertText("'") + editor.insertText('#') + expect(editor.getText()).toBe("foo = '#'") + }) + + it('should insert curly braces inside % string', () => { + editor.insertText('foo = %') + editor.insertText('(') + editor.insertText('#') + expect(editor.getText()).toBe('foo = %(#{})') + }) + + it('should not insert curly braces inside non-interpolated % string', () => { + editor.insertText('foo = %q') + editor.insertText('(') + editor.insertText('#') + expect(editor.getText()).toBe('foo = %q(#)') + }) + + it('should insert curly braces inside interpolated symbol', () => { + editor.insertText('foo = :') + editor.insertText('"') + editor.insertText('#') + expect(editor.getText()).toBe('foo = :"#{}"') + }) + + it('wraps the selection in the interpolation brackets when the selection is a single line', () => { + editor.setText('foo = "a bar"') + editor.setSelectedBufferRange([[0, 9], [0, 12]]) + + editor.insertText('#') + // coffeelint: disable=no_interpolation_in_single_quotes + expect(editor.getText()).toBe('foo = "a #{bar}"') + // coffeelint: enable=no_interpolation_in_single_quotes + expect(editor.getSelectedBufferRange()).toEqual([[0, 11], [0, 14]]) + + editor.undo() + expect(editor.getText()).toBe('foo = "a bar"') + expect(editor.getSelectedBufferRange()).toEqual([[0, 9], [0, 12]]) + }) + + it('does not wrap the selection in the interpolation brackets when the selection is mutli-line', () => { + editor.setText('foo = "a bar"\nfoo = "a bar"') + editor.setSelectedBufferRange([[0, 9], [1, 12]]) + + editor.insertText('#') + expect(editor.getText()).toBe('foo = "a #{}"') + expect(editor.getSelectedBufferRange()).toEqual([[0, 11], [0, 11]]) + + editor.undo() + expect(editor.getText()).toBe('foo = "a bar"\nfoo = "a bar"') + expect(editor.getSelectedBufferRange()).toEqual([[0, 9], [1, 12]]) + }) + }) + }) + }) + + describe('matching bracket deletion', () => { + it('deletes the end bracket when it directly precedes a begin bracket that is being backspaced', () => { + buffer.setText('') + editor.setCursorBufferPosition([0, 0]) + editor.insertText('{') + expect(buffer.lineForRow(0)).toBe('{}') + editor.backspace() + expect(buffer.lineForRow(0)).toBe('') + }) + + it('does not delete end bracket even if it directly precedes a begin bracket if autocomplete is turned off globally', () => { + atom.config.set('bracket-matcher.autocompleteBrackets', false) + buffer.setText('') + editor.setCursorBufferPosition([0, 0]) + editor.insertText('{') + expect(buffer.lineForRow(0)).toBe('{') + editor.insertText('}') + expect(buffer.lineForRow(0)).toBe('{}') + editor.setCursorBufferPosition([0, 1]) + editor.backspace() + expect(buffer.lineForRow(0)).toBe('}') + }) + + it('does not delete end bracket even if it directly precedes a begin bracket if autocomplete is turned off in scope', () => { + atom.config.set('bracket-matcher.autocompleteBrackets', true) + atom.config.set('bracket-matcher.autocompleteBrackets', false, {scopeSelector: '.source.js'}) + buffer.setText('') + editor.setCursorBufferPosition([0, 0]) + editor.insertText('{') + expect(buffer.lineForRow(0)).toBe('{') + editor.insertText('}') + expect(buffer.lineForRow(0)).toBe('{}') + editor.setCursorBufferPosition([0, 1]) + editor.backspace() + expect(buffer.lineForRow(0)).toBe('}') + }) + }) + + describe('bracket-matcher:close-tag', () => { + beforeEach(() => { + waitsForPromise(() => atom.workspace.open(path.join(__dirname, 'fixtures', 'sample.html'))) + + runs(() => { + editor = atom.workspace.getActiveTextEditor() + editorElement = atom.views.getView(editor) + buffer = editor.buffer + }) + }) + + it('closes the first unclosed tag', () => { + editor.setCursorBufferPosition([5, 14]) + atom.commands.dispatch(editorElement, 'bracket-matcher:close-tag') + + expect(editor.getCursorBufferPosition()).toEqual([5, 18]) + expect(editor.getTextInRange([[5, 14], [5, 18]])).toEqual('</a>') + }) + + it('closes the following unclosed tags if called repeatedly', () => { + editor.setCursorBufferPosition([5, 14]) + atom.commands.dispatch(editorElement, 'bracket-matcher:close-tag') + atom.commands.dispatch(editorElement, 'bracket-matcher:close-tag') + + expect(editor.getCursorBufferPosition()).toEqual([5, 22]) + expect(editor.getTextInRange([[5, 18], [5, 22]])).toEqual('</p>') + }) + + it('does not close any tag if no unclosed tag can be found at the insertion point', () => { + editor.setCursorBufferPosition([5, 14]) + atom.commands.dispatch(editorElement, 'bracket-matcher:close-tag') + + // closing all currently open tags + atom.commands.dispatch(editorElement, 'bracket-matcher:close-tag') + editor.setCursorBufferPosition([13, 11]) + atom.commands.dispatch(editorElement, 'bracket-matcher:close-tag') + atom.commands.dispatch(editorElement, 'bracket-matcher:close-tag') + editor.setCursorBufferPosition([15, 0]) + atom.commands.dispatch(editorElement, 'bracket-matcher:close-tag') + atom.commands.dispatch(editorElement, 'bracket-matcher:close-tag') + + // positioning on an already closed tag + editor.setCursorBufferPosition([11, 9]) + atom.commands.dispatch(editorElement, 'bracket-matcher:close-tag') + expect(editor.getCursorBufferPosition()).toEqual([11, 9]) + }) + + it('does not get confused in case of nested identical tags -- tag not closing', () => { + editor.setCursorBufferPosition([13, 11]) + atom.commands.dispatch(editorElement, 'bracket-matcher:close-tag') + atom.commands.dispatch(editorElement, 'bracket-matcher:close-tag') + + expect(editor.getCursorBufferPosition()).toEqual([13, 16]) + }) + + it('does not get confused in case of nested identical tags -- tag closing', () => { + editor.setCursorBufferPosition([13, 11]) + atom.commands.dispatch(editorElement, 'bracket-matcher:close-tag') + + expect(editor.getCursorBufferPosition()).toEqual([13, 16]) + expect(editor.getTextInRange([[13, 10], [13, 16]])).toEqual('</div>') + + atom.commands.dispatch(editorElement, 'bracket-matcher:close-tag') + + expect(editor.getCursorBufferPosition()).toEqual([13, 16]) + }) + + it('does not get confused in case of nested self closing tags', () => { + waitsForPromise(() => atom.workspace.open(path.join(__dirname, 'fixtures', 'sample.xml'))) + + runs(() => { + editor = atom.workspace.getActiveTextEditor() + editorElement = atom.views.getView(editor) + + editor.setText(`\ +<bar name="test"> + <foo value="15"/> +\ +` + ) + + editor.setCursorBufferPosition([2, 0]) + atom.commands.dispatch(editorElement, 'bracket-matcher:close-tag') + + expect(editor.getCursorBufferPosition().row).toEqual(2) + expect(editor.getCursorBufferPosition().column).toEqual(6) + expect(editor.getTextInRange([[2, 0], [2, 6]])).toEqual('</bar>') + }) + }) + + it('does not get confused in case of self closing tags after the cursor', () => { + waitsForPromise(() => atom.workspace.open(path.join(__dirname, 'fixtures', 'sample.xml'))) + + runs(() => { + editor = atom.workspace.getActiveTextEditor() + editorElement = atom.views.getView(editor) + + editor.setText(`\ +<bar> + + <bar> + <bar value="foo"/> + </bar> +</bar>\ +` + ) + + editor.setCursorBufferPosition([1, 0]) + atom.commands.dispatch(editorElement, 'bracket-matcher:close-tag') + + expect(editor.getCursorBufferPosition().row).toEqual(1) + expect(editor.getCursorBufferPosition().column).toEqual(0) + expect(editor.getTextInRange([[1, 0], [1, Infinity]])).toEqual('') + }) + }) + + it('does not get confused in case of nested self closing tags with `>` in their attributes', () => { + waitsForPromise(() => atom.workspace.open(path.join(__dirname, 'fixtures', 'sample.xml'))) + + runs(() => { + editor = atom.workspace.getActiveTextEditor() + editorElement = atom.views.getView(editor) + + editor.setText(`\ +<bar name="test"> + <foo bar="test>1" baz="<>" value="15"/> +\ +` + ) + + editor.setCursorBufferPosition([2, 0]) + atom.commands.dispatch(editorElement, 'bracket-matcher:close-tag') + + expect(editor.getCursorBufferPosition().row).toEqual(2) + expect(editor.getCursorBufferPosition().column).toEqual(6) + expect(editor.getTextInRange([[2, 0], [2, 6]])).toEqual('</bar>') + + editor.setText(`\ +<foo value="/>"> +\ +` + ) + + editor.setCursorBufferPosition([1, 0]) + atom.commands.dispatch(editorElement, 'bracket-matcher:close-tag') + + expect(editor.getCursorBufferPosition().row).toEqual(1) + expect(editor.getCursorBufferPosition().column).toEqual(6) + expect(editor.getTextInRange([[1, 0], [1, 6]])).toEqual('</foo>') + }) + }) + + it('does not get confused in case of self closing tags with `>` in their attributes after the cursor', () => { + waitsForPromise(() => atom.workspace.open(path.join(__dirname, 'fixtures', 'sample.xml'))) + + runs(() => { + editor = atom.workspace.getActiveTextEditor() + editorElement = atom.views.getView(editor) + + editor.setText(`\ +<bar> + + <bar> + <bar value="b>z"/> + </bar> +</bar>\ +` + ) + + editor.setCursorBufferPosition([1, 0]) + atom.commands.dispatch(editorElement, 'bracket-matcher:close-tag') + + expect(editor.getCursorBufferPosition().row).toEqual(1) + expect(editor.getCursorBufferPosition().column).toEqual(0) + expect(editor.getTextInRange([[1, 0], [1, Infinity]])).toEqual('') + }) + }) + }) + + describe('when bracket-matcher:select-matching-brackets is triggered', () => { + describe('when the cursor on the left side of an opening bracket', () => { + beforeEach(() => { + editor.setCursorBufferPosition([0, 28]) + atom.commands.dispatch(editorElement, 'bracket-matcher:select-matching-brackets') + }) + + it('selects the brackets', () => { + expect(editor.getSelectedBufferRanges()).toEqual([[[0, 28], [0, 29]], [[12, 0], [12, 1]]]) + }) + + it('select and replace', () => { + editor.insertText('[') + expect(editor.getTextInRange([[0, 28], [0, 29]])).toEqual('[') + expect(editor.getTextInRange([[12, 0], [12, 1]])).toEqual(']') + }) + }) + + describe('when the cursor on the right side of an opening bracket', () => { + beforeEach(() => { + editor.setCursorBufferPosition([1, 30]) + atom.commands.dispatch(editorElement, 'bracket-matcher:select-matching-brackets') + }) + + it('selects the brackets', () => { + expect(editor.getSelectedBufferRanges()).toEqual([[[1, 29], [1, 30]], [[9, 2], [9, 3]]]) + }) + + it('select and replace', () => { + editor.insertText('[') + expect(editor.getTextInRange([[1, 29], [1, 30]])).toEqual('[') + expect(editor.getTextInRange([[9, 2], [9, 3]])).toEqual(']') + }) + }) + + describe('when the cursor on the left side of an closing bracket', () => { + beforeEach(() => { + editor.setCursorBufferPosition([12, 0]) + atom.commands.dispatch(editorElement, 'bracket-matcher:select-matching-brackets') + }) + + it('selects the brackets', () => { + expect(editor.getSelectedBufferRanges()).toEqual([ [[12, 0], [12, 1]], [[0, 28], [0, 29]] ]) + }) + + it('select and replace', () => { + editor.insertText('[') + expect(editor.getTextInRange([[12, 0], [12, 1]])).toEqual(']') + expect(editor.getTextInRange([[0, 28], [0, 29]])).toEqual('[') + }) + }) + + describe("when the cursor isn't near to a bracket", () => { + beforeEach(() => { + editor.setCursorBufferPosition([1, 5]) + atom.commands.dispatch(editorElement, 'bracket-matcher:select-matching-brackets') + }) + + it("doesn't selects the brackets", () => { + expect(editor.getSelectedBufferRanges()).toEqual([[[1, 5], [1, 5]]]) + }) + + it("doesn't select and replace the brackets", () => { + editor.insertText('[') + expect(editor.getTextInRange([[1, 5], [1, 6]])).toEqual('[') + }) + }) + }) + + describe('skipping closed brackets', () => { + beforeEach(() => { + editor.buffer.setText('') + }) + + it('skips over brackets', () => { + editor.insertText('(') + expect(editor.buffer.getText()).toBe('()') + editor.insertText(')') + expect(editor.buffer.getText()).toBe('()') + }) + + it('does not skip over brackets that have already been skipped', () => { + editor.insertText('()') + editor.moveLeft() + editor.insertText(')') + expect(editor.buffer.getText()).toBe('())') + }) + + it('does skip over brackets that have already been skipped when alwaysSkipClosingPairs is set', () => { + atom.config.set('bracket-matcher.alwaysSkipClosingPairs', true) + editor.insertText('()') + editor.moveLeft() + editor.insertText(')') + expect(editor.buffer.getText()).toBe('()') + }) + }) + + function forEachLanguageWithTags (callback) { + // TODO: remove this conditional after 1.33 stable is released. + if (HAS_NEW_TEXT_BUFFER_VERSION) { + ['text.html.basic', 'text.xml'].forEach(callback) + } else { + callback('text.xml') + } + } +}) diff --git a/packages/bracket-matcher/spec/close-tag-spec.js b/packages/bracket-matcher/spec/close-tag-spec.js new file mode 100644 index 000000000..13b86b970 --- /dev/null +++ b/packages/bracket-matcher/spec/close-tag-spec.js @@ -0,0 +1,142 @@ +const TagFinder = require('../lib/tag-finder') +const tagFinder = new TagFinder() + +describe('closeTag', () => { + describe('TagFinder::parseFragment', () => { + let fragment = '' + + beforeEach(() => fragment = '<html><head><body></body>') + + it('returns the last not closed elem in fragment, matching a given pattern', () => { + const stack = tagFinder.parseFragment(fragment, [], /<(\w+)|<\/(\w*)/, () => true) + expect(stack[stack.length - 1]).toBe('head') + }) + + it('stops when cond become true', () => { + const stack = tagFinder.parseFragment(fragment, [], /<(\w+)|<\/(\w*)/, () => false) + expect(stack.length).toBe(0) + }) + + it('uses the given match expression to match tags', () => { + const stack = tagFinder.parseFragment(fragment, [], /<(body)|(notag)/, () => true) + expect(stack[stack.length - 1]).toBe('body') + }) + }) + + describe('TagFinder::tagsNotClosedInFragment', () => { + it('returns the outermost tag not closed in an HTML fragment', () => { + const fragment = '<html><head></head><body><h1><p></p>' + const tags = tagFinder.tagsNotClosedInFragment(fragment) + expect(tags).toEqual(['html', 'body', 'h1']) + }) + + it('is not confused by tag attributes', () => { + const fragment = '<html><head></head><body class="c"><h1 class="p"><p></p>' + const tags = tagFinder.tagsNotClosedInFragment(fragment) + expect(tags).toEqual(['html', 'body', 'h1']) + }) + + it('is not confused by namespace prefixes', () => { + const fragment = '<xhtml:html><xhtml:body><xhtml:h1>' + const tags = tagFinder.tagsNotClosedInFragment(fragment) + expect(tags).toEqual(['xhtml:html', 'xhtml:body', 'xhtml:h1']) + }) + }) + + describe('TagFinder::tagDoesNotCloseInFragment', () => { + it('returns true if the given tag is not closed in the given fragment', () => { + const fragment = '</other1></other2></html>' + expect(tagFinder.tagDoesNotCloseInFragment('body', fragment)).toBe(true) + }) + + it('returns false if the given tag is closed in the given fragment', () => { + const fragment = '</other1></body></html>' + expect(tagFinder.tagDoesNotCloseInFragment(['body'], fragment)).toBe(false) + }) + + it('returns true even if the given tag is re-opened and re-closed', () => { + const fragment = '<other> </other><body></body><html>' + expect(tagFinder.tagDoesNotCloseInFragment(['body'], fragment)).toBe(true) + }) + + it('returns false even if the given tag is re-opened and re-closed before closing', () => { + const fragment = '<other> </other><body></body></body><html>' + expect(tagFinder.tagDoesNotCloseInFragment(['body'], fragment)).toBe(false) + }) + }) + + describe('TagFinder::closingTagForFragments', () => { + it('returns the last opened in preFragment tag that is not closed in postFragment', () => { + const preFragment = '<html><head></head><body><h1></h1><p>' + const postFragment = '</body></html>' + expect(tagFinder.closingTagForFragments(preFragment, postFragment)).toBe('p') + }) + + it('correctly handles empty postFragment', () => { + const preFragment = '<html><head></head><body><h1></h1><p>' + const postFragment = '' + expect(tagFinder.closingTagForFragments(preFragment, postFragment)).toBe('p') + }) + + it('correctly handles malformed tags', () => { + const preFragment = '<html><head></head></htm' + const postFragment = '' + expect(tagFinder.closingTagForFragments(preFragment, postFragment)).toBe('html') + }) + + it('returns null if there is no open tag to be closed', () => { + const preFragment = '<html><head></head><body><h1></h1><p>' + const postFragment = '</p></body></html>' + expect(tagFinder.closingTagForFragments(preFragment, postFragment)).toBe(null) + }) + + it('correctly closes tags containing hyphens', () => { + const preFragment = '<html><head></head><body><h1></h1><my-element>' + const postFragment = '</body></html>' + expect(tagFinder.closingTagForFragments(preFragment, postFragment)).toBe('my-element') + }) + + it('correctly closes tags containing attributes', () => { + const preFragment = '<html><head></head><body class="foo bar"><div>' + const postFragment = '</body></html>' + expect(tagFinder.closingTagForFragments(preFragment, postFragment)).toBe('div') + }) + + it('correctly closes tags containing an XML namespace', () => { + const preFragment = '<html><head></head><body><custom:tag>' + const postFragment = '</body></html>' + expect(tagFinder.closingTagForFragments(preFragment, postFragment)).toBe('custom:tag') + }) + + it('correctly closes tags containing multiple XML namespaces', () => { + // This is not exactly valid syntax but it can't hurt to support it + const preFragment = '<html><head></head><body><custom:custom2:tag>' + const postFragment = '</body></html>' + expect(tagFinder.closingTagForFragments(preFragment, postFragment)).toBe('custom:custom2:tag') + }) + + it('correctly closes tags in the present of JSX tags containing member accesses', () => { + const preFragment = '<Foo><Bar.Baz></Bar.Baz>' + const postFragment = '' + expect(tagFinder.closingTagForFragments(preFragment, postFragment)).toBe('Foo') + }) + + it('correctly closes JSX tags containing member accesses', () => { + const preFragment = '<Foo.Bar><div></div>' + const postFragment = '' + expect(tagFinder.closingTagForFragments(preFragment, postFragment)).toBe('Foo.Bar') + }) + + it('correctly closes JSX tags containing deep member accesses', () => { + const preFragment = '<Foo.Bar.Baz><div></div>' + const postFragment = '' + expect(tagFinder.closingTagForFragments(preFragment, postFragment)).toBe('Foo.Bar.Baz') + }) + + it('correctly closes tags when there are other tags with the same prefix', () => { + const preFragment = '<thead><th>' + const postFragment = '</thead>' + expect(tagFinder.closingTagForFragments(preFragment, postFragment)).toBe('th') + }) + }) +}) diff --git a/packages/bracket-matcher/spec/fixtures/multiplecursor.md b/packages/bracket-matcher/spec/fixtures/multiplecursor.md new file mode 100644 index 000000000..23f4341c3 --- /dev/null +++ b/packages/bracket-matcher/spec/fixtures/multiplecursor.md @@ -0,0 +1,6 @@ +[link-1](http://example.com/) +[another-link-2](http://example.com/) +[yet-another-link-3](http://example.com/) +[final-link-4](http://example.com/) +(different-type) +not anywhere diff --git a/packages/bracket-matcher/spec/fixtures/sample.html b/packages/bracket-matcher/spec/fixtures/sample.html new file mode 100644 index 000000000..0aa11ef31 --- /dev/null +++ b/packages/bracket-matcher/spec/fixtures/sample.html @@ -0,0 +1,15 @@ +<html> +<body> + <div> + <div> + <div> + <p><a> + </div> + </div> + </div> + + <div> + <div> + <div> + </div> + </div> diff --git a/packages/bracket-matcher/spec/fixtures/sample.js b/packages/bracket-matcher/spec/fixtures/sample.js new file mode 100644 index 000000000..fb33b0b43 --- /dev/null +++ b/packages/bracket-matcher/spec/fixtures/sample.js @@ -0,0 +1,13 @@ +var quicksort = function () { + var sort = function(items) { + if (items.length <= 1) return items; + var pivot = items.shift(), current, left = [], right = []; + while(items.length > 0) { + current = items.shift(); + current < pivot ? left.push(current) : right.push(current); + } + return sort(left).concat(pivot).concat(sort(right)); + }; + + return sort(Array.apply(this, arguments)); +}; \ No newline at end of file diff --git a/packages/bracket-matcher/spec/fixtures/sample.xml b/packages/bracket-matcher/spec/fixtures/sample.xml new file mode 100644 index 000000000..e7380888d --- /dev/null +++ b/packages/bracket-matcher/spec/fixtures/sample.xml @@ -0,0 +1,17 @@ +<html> + <body id="bod"> + <div> + <div> + <div> + hello + </div> + </div> + </div> + + <div> + <div> + world + </div> + </div> + </body> +</html> diff --git a/packages/bracket-matcher/styles/bracket-matcher.atom-text-editor.less b/packages/bracket-matcher/styles/bracket-matcher.atom-text-editor.less new file mode 100644 index 000000000..e128622f3 --- /dev/null +++ b/packages/bracket-matcher/styles/bracket-matcher.atom-text-editor.less @@ -0,0 +1,11 @@ +@import "syntax-variables"; + +.bracket-matcher .region { + border-bottom: 1px dotted lime; + position: absolute; +} + +.line-number.bracket-matcher.bracket-matcher { + color: @syntax-gutter-text-color-selected; + background-color: @syntax-gutter-background-color-selected; +} diff --git a/yarn.lock b/yarn.lock index b2a9af2c4..697a8a659 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2659,9 +2659,8 @@ braces@~3.0.2: dependencies: fill-range "^7.0.1" -"bracket-matcher@https://github.com/pulsar-edit/bracket-matcher.git#c877977": +"bracket-matcher@file:packages/bracket-matcher": version "0.92.0" - resolved "https://github.com/pulsar-edit/bracket-matcher.git#c877977ac7e9b7fe43c2100a1880c7ffc119280b" dependencies: first-mate "^7.4.1" underscore-plus "1.x" From 03057610f622892a323be0c8571207bcb8dec08a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Szabo?= <mauricio.szabo@gmail.com> Date: Mon, 20 Mar 2023 16:51:42 -0300 Subject: [PATCH 26/85] Removing ALL references of old first-mate --- .../bracket-matcher/lib/selector-cache.js | 2 +- packages/bracket-matcher/package.json | 1 - .../language-go/spec/language-go-spec.coffee | 58 +++++----- .../spec/language-python-spec.coffee | 100 +++++++++--------- spec/grammar-registry-spec.js | 15 +-- src/text-editor.js | 2 +- src/text-mate-language-mode.js | 16 +-- yarn.lock | 25 +---- 8 files changed, 99 insertions(+), 120 deletions(-) diff --git a/packages/bracket-matcher/lib/selector-cache.js b/packages/bracket-matcher/lib/selector-cache.js index 3408bcdd4..a8cd32882 100644 --- a/packages/bracket-matcher/lib/selector-cache.js +++ b/packages/bracket-matcher/lib/selector-cache.js @@ -1,4 +1,4 @@ -const {ScopeSelector} = require('first-mate') +const {ScopeSelector} = require('second-mate') const cache = {} exports.get = function (selector) { diff --git a/packages/bracket-matcher/package.json b/packages/bracket-matcher/package.json index 386d714f6..38addbd62 100644 --- a/packages/bracket-matcher/package.json +++ b/packages/bracket-matcher/package.json @@ -9,7 +9,6 @@ "atom": "*" }, "dependencies": { - "first-mate": "^7.4.1", "underscore-plus": "1.x" }, "configSchema": { diff --git a/packages/language-go/spec/language-go-spec.coffee b/packages/language-go/spec/language-go-spec.coffee index e2e6255e8..27f2c427b 100644 --- a/packages/language-go/spec/language-go-spec.coffee +++ b/packages/language-go/spec/language-go-spec.coffee @@ -18,45 +18,45 @@ describe 'Go settings', -> it 'matches lines correctly using the increaseIndentPattern', -> increaseIndentRegex = languageMode.increaseIndentRegexForScopeDescriptor(['source.go']) - expect(increaseIndentRegex.testSync(' case true:')).toBeTruthy() - expect(increaseIndentRegex.testSync(' default:')).toBeTruthy() - expect(increaseIndentRegex.testSync('func something() {')).toBeTruthy() - expect(increaseIndentRegex.testSync(' if true {')).toBeTruthy() - expect(increaseIndentRegex.testSync(' else {')).toBeTruthy() - expect(increaseIndentRegex.testSync(' switch {')).toBeTruthy() - expect(increaseIndentRegex.testSync(' switch true {')).toBeTruthy() - expect(increaseIndentRegex.testSync(' select {')).toBeTruthy() - expect(increaseIndentRegex.testSync(' select true {')).toBeTruthy() - expect(increaseIndentRegex.testSync(' for v := range val {')).toBeTruthy() - expect(increaseIndentRegex.testSync(' for i := 0; i < 10; i++ {')).toBeTruthy() - expect(increaseIndentRegex.testSync(' for i := 0; i < 10; i++ {')).toBeTruthy() - expect(increaseIndentRegex.testSync(' type something struct {')).toBeTruthy() - expect(increaseIndentRegex.testSync(' fmt.Printf("some%s",')).toBeTruthy() - expect(increaseIndentRegex.testSync(' aSlice := []string{}{')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync(' case true:')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync(' default:')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync('func something() {')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync(' if true {')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync(' else {')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync(' switch {')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync(' switch true {')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync(' select {')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync(' select true {')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync(' for v := range val {')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync(' for i := 0; i < 10; i++ {')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync(' for i := 0; i < 10; i++ {')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync(' type something struct {')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync(' fmt.Printf("some%s",')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync(' aSlice := []string{}{')).toBeTruthy() it 'matches lines correctly using the decreaseIndentPattern', -> decreaseIndentRegex = languageMode.decreaseIndentRegexForScopeDescriptor(['source.go']) - expect(decreaseIndentRegex.testSync(' case true:')).toBeTruthy() - expect(decreaseIndentRegex.testSync(' default:')).toBeTruthy() - expect(decreaseIndentRegex.testSync(' }')).toBeTruthy() - expect(decreaseIndentRegex.testSync(' },')).toBeTruthy() - expect(decreaseIndentRegex.testSync(' )')).toBeTruthy() - expect(decreaseIndentRegex.testSync(' ),')).toBeTruthy() + expect(decreaseIndentRegex.findNextMatchSync(' case true:')).toBeTruthy() + expect(decreaseIndentRegex.findNextMatchSync(' default:')).toBeTruthy() + expect(decreaseIndentRegex.findNextMatchSync(' }')).toBeTruthy() + expect(decreaseIndentRegex.findNextMatchSync(' },')).toBeTruthy() + expect(decreaseIndentRegex.findNextMatchSync(' )')).toBeTruthy() + expect(decreaseIndentRegex.findNextMatchSync(' ),')).toBeTruthy() it 'matches lines correctly using the decreaseNextIndentPattern', -> decreaseNextIndentRegex = languageMode.decreaseNextIndentRegexForScopeDescriptor(['source.go']) - expect(decreaseNextIndentRegex.testSync(' fmt.Println("something"))')).toBeTruthy() - expect(decreaseNextIndentRegex.testSync(' fmt.Println("something")),')).toBeTruthy() - expect(decreaseNextIndentRegex.testSync(' fmt.Println("something"), "x"),')).toBeTruthy() - expect(decreaseNextIndentRegex.testSync(' fmt.Println(fmt.Sprint("something"))),')).toBeTruthy() - expect(decreaseNextIndentRegex.testSync(' fmt.Println(fmt.Sprint("something"), "x")),')).toBeTruthy() + expect(decreaseNextIndentRegex.findNextMatchSync(' fmt.Println("something"))')).toBeTruthy() + expect(decreaseNextIndentRegex.findNextMatchSync(' fmt.Println("something")),')).toBeTruthy() + expect(decreaseNextIndentRegex.findNextMatchSync(' fmt.Println("something"), "x"),')).toBeTruthy() + expect(decreaseNextIndentRegex.findNextMatchSync(' fmt.Println(fmt.Sprint("something"))),')).toBeTruthy() + expect(decreaseNextIndentRegex.findNextMatchSync(' fmt.Println(fmt.Sprint("something"), "x")),')).toBeTruthy() - expect(decreaseNextIndentRegex.testSync(' fmt.Println("something")')).toBeFalsy() - expect(decreaseNextIndentRegex.testSync(' fmt.Println("something"),')).toBeFalsy() + expect(decreaseNextIndentRegex.findNextMatchSync(' fmt.Println("something")')).toBeFalsy() + expect(decreaseNextIndentRegex.findNextMatchSync(' fmt.Println("something"),')).toBeFalsy() # a line with many (), testing for catastrophic backtracking. # see https://github.com/atom/language-go/issues/78 longLine = 'first.second().third().fourth().fifth().sixth().seventh().eighth().ninth().tenth()' - expect(decreaseNextIndentRegex.testSync(longLine)).toBeFalsy() + expect(decreaseNextIndentRegex.findNextMatchSync(longLine)).toBeFalsy() diff --git a/packages/language-python/spec/language-python-spec.coffee b/packages/language-python/spec/language-python-spec.coffee index e21fb828a..d618352ce 100644 --- a/packages/language-python/spec/language-python-spec.coffee +++ b/packages/language-python/spec/language-python-spec.coffee @@ -18,66 +18,66 @@ describe 'Python settings', -> it 'matches lines correctly using the increaseIndentPattern', -> increaseIndentRegex = languageMode.increaseIndentRegexForScopeDescriptor(['source.python']) - expect(increaseIndentRegex.testSync('for i in range(n):')).toBeTruthy() - expect(increaseIndentRegex.testSync(' for i in range(n):')).toBeTruthy() - expect(increaseIndentRegex.testSync('async for i in range(n):')).toBeTruthy() - expect(increaseIndentRegex.testSync(' async for i in range(n):')).toBeTruthy() - expect(increaseIndentRegex.testSync('class TheClass(Object):')).toBeTruthy() - expect(increaseIndentRegex.testSync(' class TheClass(Object):')).toBeTruthy() - expect(increaseIndentRegex.testSync('def f(x):')).toBeTruthy() - expect(increaseIndentRegex.testSync(' def f(x):')).toBeTruthy() - expect(increaseIndentRegex.testSync('async def f(x):')).toBeTruthy() - expect(increaseIndentRegex.testSync(' async def f(x):')).toBeTruthy() - expect(increaseIndentRegex.testSync('if this_var == that_var:')).toBeTruthy() - expect(increaseIndentRegex.testSync(' if this_var == that_var:')).toBeTruthy() - expect(increaseIndentRegex.testSync('elif this_var == that_var:')).toBeTruthy() - expect(increaseIndentRegex.testSync(' elif this_var == that_var:')).toBeTruthy() - expect(increaseIndentRegex.testSync('else:')).toBeTruthy() - expect(increaseIndentRegex.testSync(' else:')).toBeTruthy() - expect(increaseIndentRegex.testSync('except Exception:')).toBeTruthy() - expect(increaseIndentRegex.testSync(' except Exception:')).toBeTruthy() - expect(increaseIndentRegex.testSync('except Exception as e:')).toBeTruthy() - expect(increaseIndentRegex.testSync(' except Exception as e:')).toBeTruthy() - expect(increaseIndentRegex.testSync('finally:')).toBeTruthy() - expect(increaseIndentRegex.testSync(' finally:')).toBeTruthy() - expect(increaseIndentRegex.testSync('with open("filename") as f:')).toBeTruthy() - expect(increaseIndentRegex.testSync(' with open("filename") as f:')).toBeTruthy() - expect(increaseIndentRegex.testSync('async with open("filename") as f:')).toBeTruthy() - expect(increaseIndentRegex.testSync(' async with open("filename") as f:')).toBeTruthy() - expect(increaseIndentRegex.testSync('while True:')).toBeTruthy() - expect(increaseIndentRegex.testSync(' while True:')).toBeTruthy() - expect(increaseIndentRegex.testSync('\t\t while True:')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync('for i in range(n):')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync(' for i in range(n):')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync('async for i in range(n):')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync(' async for i in range(n):')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync('class TheClass(Object):')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync(' class TheClass(Object):')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync('def f(x):')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync(' def f(x):')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync('async def f(x):')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync(' async def f(x):')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync('if this_var == that_var:')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync(' if this_var == that_var:')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync('elif this_var == that_var:')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync(' elif this_var == that_var:')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync('else:')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync(' else:')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync('except Exception:')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync(' except Exception:')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync('except Exception as e:')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync(' except Exception as e:')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync('finally:')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync(' finally:')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync('with open("filename") as f:')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync(' with open("filename") as f:')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync('async with open("filename") as f:')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync(' async with open("filename") as f:')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync('while True:')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync(' while True:')).toBeTruthy() + expect(increaseIndentRegex.findNextMatchSync('\t\t while True:')).toBeTruthy() it 'does not match lines incorrectly using the increaseIndentPattern', -> increaseIndentRegex = languageMode.increaseIndentRegexForScopeDescriptor(['source.python']) - expect(increaseIndentRegex.testSync('for i in range(n)')).toBeFalsy() - expect(increaseIndentRegex.testSync('class TheClass(Object)')).toBeFalsy() - expect(increaseIndentRegex.testSync('def f(x)')).toBeFalsy() - expect(increaseIndentRegex.testSync('if this_var == that_var')).toBeFalsy() - expect(increaseIndentRegex.testSync('"for i in range(n):"')).toBeFalsy() + expect(increaseIndentRegex.findNextMatchSync('for i in range(n)')).toBeFalsy() + expect(increaseIndentRegex.findNextMatchSync('class TheClass(Object)')).toBeFalsy() + expect(increaseIndentRegex.findNextMatchSync('def f(x)')).toBeFalsy() + expect(increaseIndentRegex.findNextMatchSync('if this_var == that_var')).toBeFalsy() + expect(increaseIndentRegex.findNextMatchSync('"for i in range(n):"')).toBeFalsy() it 'matches lines correctly using the decreaseIndentPattern', -> decreaseIndentRegex = languageMode.decreaseIndentRegexForScopeDescriptor(['source.python']) - expect(decreaseIndentRegex.testSync('elif this_var == that_var:')).toBeTruthy() - expect(decreaseIndentRegex.testSync(' elif this_var == that_var:')).toBeTruthy() - expect(decreaseIndentRegex.testSync('else:')).toBeTruthy() - expect(decreaseIndentRegex.testSync(' else:')).toBeTruthy() - expect(decreaseIndentRegex.testSync('except Exception:')).toBeTruthy() - expect(decreaseIndentRegex.testSync(' except Exception:')).toBeTruthy() - expect(decreaseIndentRegex.testSync('except Exception as e:')).toBeTruthy() - expect(decreaseIndentRegex.testSync(' except Exception as e:')).toBeTruthy() - expect(decreaseIndentRegex.testSync('finally:')).toBeTruthy() - expect(decreaseIndentRegex.testSync(' finally:')).toBeTruthy() - expect(decreaseIndentRegex.testSync('\t\t finally:')).toBeTruthy() + expect(decreaseIndentRegex.findNextMatchSync('elif this_var == that_var:')).toBeTruthy() + expect(decreaseIndentRegex.findNextMatchSync(' elif this_var == that_var:')).toBeTruthy() + expect(decreaseIndentRegex.findNextMatchSync('else:')).toBeTruthy() + expect(decreaseIndentRegex.findNextMatchSync(' else:')).toBeTruthy() + expect(decreaseIndentRegex.findNextMatchSync('except Exception:')).toBeTruthy() + expect(decreaseIndentRegex.findNextMatchSync(' except Exception:')).toBeTruthy() + expect(decreaseIndentRegex.findNextMatchSync('except Exception as e:')).toBeTruthy() + expect(decreaseIndentRegex.findNextMatchSync(' except Exception as e:')).toBeTruthy() + expect(decreaseIndentRegex.findNextMatchSync('finally:')).toBeTruthy() + expect(decreaseIndentRegex.findNextMatchSync(' finally:')).toBeTruthy() + expect(decreaseIndentRegex.findNextMatchSync('\t\t finally:')).toBeTruthy() it 'does not match lines incorrectly using the decreaseIndentPattern', -> decreaseIndentRegex = languageMode.decreaseIndentRegexForScopeDescriptor(['source.python']) # NOTE! This first one is different from most other rote tests here. - expect(decreaseIndentRegex.testSync('else: expression()')).toBeFalsy() - expect(decreaseIndentRegex.testSync('elif this_var == that_var')).toBeFalsy() - expect(decreaseIndentRegex.testSync(' elif this_var == that_var')).toBeFalsy() - expect(decreaseIndentRegex.testSync('else')).toBeFalsy() - expect(decreaseIndentRegex.testSync(' "finally:"')).toBeFalsy() + expect(decreaseIndentRegex.findNextMatchSync('else: expression()')).toBeFalsy() + expect(decreaseIndentRegex.findNextMatchSync('elif this_var == that_var')).toBeFalsy() + expect(decreaseIndentRegex.findNextMatchSync(' elif this_var == that_var')).toBeFalsy() + expect(decreaseIndentRegex.findNextMatchSync('else')).toBeFalsy() + expect(decreaseIndentRegex.findNextMatchSync(' "finally:"')).toBeFalsy() diff --git a/spec/grammar-registry-spec.js b/spec/grammar-registry-spec.js index 05fd98b18..bae333d2f 100644 --- a/spec/grammar-registry-spec.js +++ b/spec/grammar-registry-spec.js @@ -5,13 +5,14 @@ const temp = require('temp').track(); const TextBuffer = require('text-buffer'); const GrammarRegistry = require('../src/grammar-registry'); const TreeSitterGrammar = require('../src/tree-sitter-grammar'); -const FirstMate = require('first-mate'); -const { OnigRegExp } = require('oniguruma'); +const SecondMate = require('second-mate'); +const { OnigScanner } = SecondMate; describe('GrammarRegistry', () => { let grammarRegistry; - beforeEach(() => { + beforeEach(async () => { + await SecondMate.ready grammarRegistry = new GrammarRegistry({ config: atom.config }); expect(subscriptionCount(grammarRegistry)).toBe(1); }); @@ -102,7 +103,7 @@ describe('GrammarRegistry', () => { ); const grammar = grammarRegistry.grammarForId('source.js'); - expect(grammar instanceof FirstMate.Grammar).toBe(true); + expect(grammar instanceof SecondMate.Grammar).toBe(true); expect(grammar.scopeName).toBe('source.js'); grammarRegistry.removeGrammar(grammar); @@ -127,7 +128,7 @@ describe('GrammarRegistry', () => { grammarRegistry.removeGrammar(grammar); expect( - grammarRegistry.grammarForId('source.js') instanceof FirstMate.Grammar + grammarRegistry.grammarForId('source.js') instanceof SecondMate.Grammar ).toBe(true); }); }); @@ -560,7 +561,7 @@ describe('GrammarRegistry', () => { const grammar = grammarRegistry.selectGrammar('test.js'); expect(grammar.scopeName).toBe('source.js'); - expect(grammar instanceof FirstMate.Grammar).toBe(true); + expect(grammar instanceof SecondMate.Grammar).toBe(true); }); it('favors a tree-sitter grammar over a text-mate grammar when `core.useTreeSitterParsers` is true', () => { @@ -766,7 +767,7 @@ describe('GrammarRegistry', () => { grammarRegistry.addGrammar(grammar1); const grammar2 = { name: 'foo++', - contentRegex: new OnigRegExp('.*bar'), + contentRegex: new OnigScanner(['.*bar']), fileTypes: ['foo'] }; grammarRegistry.addGrammar(grammar2); diff --git a/src/text-editor.js b/src/text-editor.js index ecbbd7f7d..5d8b8711c 100644 --- a/src/text-editor.js +++ b/src/text-editor.js @@ -13,7 +13,7 @@ const NullGrammar = require('./null-grammar'); const TextMateLanguageMode = require('./text-mate-language-mode'); const ScopeDescriptor = require('./scope-descriptor'); -const TextMateScopeSelector = require('first-mate').ScopeSelector; +const TextMateScopeSelector = require('second-mate').ScopeSelector; const GutterContainer = require('./gutter-container'); let TextEditorComponent = null; let TextEditorElement = null; diff --git a/src/text-mate-language-mode.js b/src/text-mate-language-mode.js index 13d5ed13f..804a8b403 100644 --- a/src/text-mate-language-mode.js +++ b/src/text-mate-language-mode.js @@ -5,7 +5,7 @@ const TokenizedLine = require('./tokenized-line'); const TokenIterator = require('./token-iterator'); const ScopeDescriptor = require('./scope-descriptor'); const NullGrammar = require('./null-grammar'); -const { OnigRegExp } = require('oniguruma'); +const { OnigScanner } = require('second-mate'); const { toFirstMateScopeId, fromFirstMateScopeId @@ -144,7 +144,7 @@ class TextMateLanguageMode { ); if (!decreaseIndentRegex) return; - if (!decreaseIndentRegex.testSync(line)) return; + if (!decreaseIndentRegex.findNextMatchSync(line)) return; const precedingRow = this.buffer.previousNonBlankRow(bufferRow); if (precedingRow == null) return; @@ -156,14 +156,14 @@ class TextMateLanguageMode { scopeDescriptor ); if (increaseIndentRegex) { - if (!increaseIndentRegex.testSync(precedingLine)) desiredIndentLevel -= 1; + if (!increaseIndentRegex.findNextMatchSync(precedingLine)) desiredIndentLevel -= 1; } const decreaseNextIndentRegex = this.decreaseNextIndentRegexForScopeDescriptor( scopeDescriptor ); if (decreaseNextIndentRegex) { - if (decreaseNextIndentRegex.testSync(precedingLine)) + if (decreaseNextIndentRegex.findNextMatchSync(precedingLine)) desiredIndentLevel -= 1; } @@ -203,17 +203,17 @@ class TextMateLanguageMode { if (!increaseIndentRegex) return desiredIndentLevel; if (!this.isRowCommented(precedingRow)) { - if (increaseIndentRegex && increaseIndentRegex.testSync(precedingLine)) + if (increaseIndentRegex && increaseIndentRegex.findNextMatchSync(precedingLine)) desiredIndentLevel += 1; if ( decreaseNextIndentRegex && - decreaseNextIndentRegex.testSync(precedingLine) + decreaseNextIndentRegex.findNextMatchSync(precedingLine) ) desiredIndentLevel -= 1; } if (!this.buffer.isRowBlank(precedingRow)) { - if (decreaseIndentRegex && decreaseIndentRegex.testSync(line)) + if (decreaseIndentRegex && decreaseIndentRegex.findNextMatchSync(line)) desiredIndentLevel -= 1; } @@ -848,7 +848,7 @@ class TextMateLanguageMode { regexForPattern(pattern) { if (pattern) { if (!this.regexesByPattern[pattern]) { - this.regexesByPattern[pattern] = new OnigRegExp(pattern); + this.regexesByPattern[pattern] = new OnigScanner([pattern]); } return this.regexesByPattern[pattern]; } diff --git a/yarn.lock b/yarn.lock index 697a8a659..090c35d68 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2662,7 +2662,6 @@ braces@~3.0.2: "bracket-matcher@file:packages/bracket-matcher": version "0.92.0" dependencies: - first-mate "^7.4.1" underscore-plus "1.x" browser-stdout@1.3.1: @@ -3990,7 +3989,7 @@ electron@12.2.3: "@types/node" "^14.6.2" extract-zip "^1.0.3" -emissary@^1, emissary@^1.0.0, emissary@^1.1.0, emissary@^1.2.0, emissary@^1.3.2, emissary@^1.3.3: +emissary@^1.0.0, emissary@^1.1.0, emissary@^1.2.0, emissary@^1.3.2, emissary@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/emissary/-/emissary-1.3.3.tgz#a618d92d682b232d31111dc3625a5df661799606" integrity sha512-pD6FWNBSlEOzSJDCTcSGVLgNnGw5fnCvvGMdQ/TN43efeXZ/QTq8+hZoK3OOEXPRNjMmSJmeOnEJh+bWT5O8rQ== @@ -4389,7 +4388,7 @@ etch@^0.12.2, etch@^0.12.6: resolved "https://registry.yarnpkg.com/etch/-/etch-0.12.8.tgz#c24bc9bd3a6148f62204ce8643d2e899b9ecb9de" integrity sha512-dFLRe4wLroVtwzyy1vGlE3BSDZHiL0kZME5XgNGzZIULcYTvVno8vbiIleAesoKJmwWaxDTzG+4eppg2zk14JQ== -event-kit@2.5.3, event-kit@^2.0.0, event-kit@^2.1.0, event-kit@^2.2.0, event-kit@^2.4.0, event-kit@^2.5.3: +event-kit@2.5.3, event-kit@^2.0.0, event-kit@^2.1.0, event-kit@^2.4.0, event-kit@^2.5.3: version "2.5.3" resolved "https://registry.yarnpkg.com/event-kit/-/event-kit-2.5.3.tgz#d47e4bc116ec0aacd00263791fa1a55eb5e79ba1" integrity sha512-b7Qi1JNzY4BfAYfnIRanLk0DOD1gdkWHT4GISIn8Q2tAf3LpU8SP2CMwWaq40imYoKWbtN4ZhbSRxvsnikooZQ== @@ -4604,19 +4603,6 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -first-mate@^7.4.1: - version "7.4.3" - resolved "https://registry.yarnpkg.com/first-mate/-/first-mate-7.4.3.tgz#058b9b6d2f43e38a5f0952669338cff2c46ae2dd" - integrity sha512-PtZUpaPmcV5KV4Rw5TfwczEnExN+X1o3Q/G82E4iRJ0tW91fm3Yi7pa5t4cBH8r3D6EyoBKvfpG2jKE+TZ0/nw== - dependencies: - emissary "^1" - event-kit "^2.2.0" - fs-plus "^3.0.0" - grim "^2.0.1" - oniguruma "^7.2.3" - season "^6.0.2" - underscore-plus "^1" - flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -7421,13 +7407,6 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" -oniguruma@^7.2.3: - version "7.2.3" - resolved "https://registry.yarnpkg.com/oniguruma/-/oniguruma-7.2.3.tgz#e0b0b415302de8cdd6564e57a1a822ac0ab57012" - integrity sha512-PZZcE0yfg8Q1IvaJImh21RUTHl8ep0zwwyoE912KqlWVrsGByjjj29sdACcD1BFyX2bLkfuOJeP+POzAGVWtbA== - dependencies: - nan "^2.14.0" - "open-on-github@file:packages/open-on-github": version "1.3.2" From bae9ed088693d7bc9bb507a682436238d3d9381a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Szabo?= <mauricio.szabo@gmail.com> Date: Mon, 20 Mar 2023 19:49:24 -0300 Subject: [PATCH 27/85] Fixed another case of OnigRegExp API --- src/text-mate-language-mode.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/text-mate-language-mode.js b/src/text-mate-language-mode.js index 804a8b403..aa1b52c9a 100644 --- a/src/text-mate-language-mode.js +++ b/src/text-mate-language-mode.js @@ -812,7 +812,7 @@ class TextMateLanguageMode { if (indentation < startIndentLevel) { break; } else if (indentation === startIndentLevel) { - if (foldEndRegex && foldEndRegex.searchSync(line)) foldEndRow = nextRow; + if (foldEndRegex && foldEndRegex.findNextMatchSync(line)) foldEndRow = nextRow; break; } foldEndRow = nextRow; From 7f1f6483b889a6673502bf0afaaa4424f20b71fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Szabo?= <mauricio.szabo@gmail.com> Date: Mon, 20 Mar 2023 23:02:25 -0300 Subject: [PATCH 28/85] Fixed Clojure tests --- packages/language-clojure/spec/clojure-spec.coffee | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/language-clojure/spec/clojure-spec.coffee b/packages/language-clojure/spec/clojure-spec.coffee index 802858c8d..65a5b176f 100644 --- a/packages/language-clojure/spec/clojure-spec.coffee +++ b/packages/language-clojure/spec/clojure-spec.coffee @@ -295,7 +295,7 @@ describe "Clojure grammar", -> #!/usr/bin/env boot """ for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = """ \x20#!/usr/sbin/boot @@ -306,7 +306,7 @@ describe "Clojure grammar", -> #!\t/usr/bin/env --boot=bar """ for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() it "recognises Emacs modelines", -> valid = """ @@ -325,7 +325,7 @@ describe "Clojure grammar", -> "-*- font:x;foo : bar ; mode : ClojureScript ; bar : foo ; foooooo:baaaaar;fo:ba-*-"; """ for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = """ /* --*clojure-*- */ @@ -343,7 +343,7 @@ describe "Clojure grammar", -> // -*-font:mode;mode:clojure--*- """ for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() it "recognises Vim modelines", -> valid = """ @@ -370,7 +370,7 @@ describe "Clojure grammar", -> # vim:noexpandtab titlestring=hi\|there\\\\ ft=clojure ts=4 """ for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = """ ex: se filetype=clojure: @@ -388,4 +388,4 @@ describe "Clojure grammar", -> # vim:noexpandtab titlestring=hi\\|there\\\\\\ ft=clojure ts=4 """ for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() From 99ef62b9681276fd728cd63bc61b6b61688032fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Szabo?= <mauricio.szabo@gmail.com> Date: Mon, 20 Mar 2023 23:03:01 -0300 Subject: [PATCH 29/85] Fixed CoffeeScript tests --- .../spec/coffee-script-spec.coffee | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/language-coffee-script/spec/coffee-script-spec.coffee b/packages/language-coffee-script/spec/coffee-script-spec.coffee index 138959779..14940c89a 100644 --- a/packages/language-coffee-script/spec/coffee-script-spec.coffee +++ b/packages/language-coffee-script/spec/coffee-script-spec.coffee @@ -1393,7 +1393,7 @@ describe "CoffeeScript grammar", -> #!/usr/bin/env coffee """ for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = """ \x20#!/usr/sbin/coffee @@ -1404,7 +1404,7 @@ describe "CoffeeScript grammar", -> #!\t/usr/bin/env --coffee=bar """ for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() it "recognises Emacs modelines", -> valid = """ @@ -1423,7 +1423,7 @@ describe "CoffeeScript grammar", -> "-*- font:x;foo : bar ; mode : Coffee ; bar : foo ; foooooo:baaaaar;fo:ba-*-"; """ for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = """ /* --*coffee-*- */ @@ -1441,7 +1441,7 @@ describe "CoffeeScript grammar", -> // -*-font:mode;mode:coffee--*- """ for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() it "recognises Vim modelines", -> valid = """ @@ -1468,7 +1468,7 @@ describe "CoffeeScript grammar", -> # vim:noexpandtab titlestring=hi\|there\\\\ ft=cOFFEe ts=4 """ for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = """ ex: se filetype=coffee: @@ -1486,4 +1486,4 @@ describe "CoffeeScript grammar", -> # vim:noexpandtab titlestring=hi\\|there\\\\\\ ft=coffee ts=4 """ for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() From 3e2ff68010da5d88094c50e7f0b3353af1c1a72a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Szabo?= <mauricio.szabo@gmail.com> Date: Mon, 20 Mar 2023 23:05:47 -0300 Subject: [PATCH 30/85] Fixed language tests that depended on OnigRegExp --- .../spec/coffee-script-literate-spec.coffee | 12 ++++++------ packages/language-css/spec/css-spec.coffee | 8 ++++---- packages/language-html/spec/html-spec.coffee | 12 ++++++------ .../spec/javascript-spec.coffee | 12 ++++++------ .../language-perl/spec/grammar-perl6-spec.coffee | 14 +++++++------- packages/language-perl/spec/grammar-spec.coffee | 12 ++++++------ packages/language-php/spec/html-spec.coffee | 16 ++++++++-------- packages/language-python/spec/python-spec.coffee | 4 ++-- packages/language-ruby/spec/ruby-spec.coffee | 12 ++++++------ .../spec/shell-unix-bash-spec.coffee | 12 ++++++------ packages/language-xml/spec/xml-spec.coffee | 12 ++++++------ 11 files changed, 63 insertions(+), 63 deletions(-) diff --git a/packages/language-coffee-script/spec/coffee-script-literate-spec.coffee b/packages/language-coffee-script/spec/coffee-script-literate-spec.coffee index 1ed4d721b..511a02740 100644 --- a/packages/language-coffee-script/spec/coffee-script-literate-spec.coffee +++ b/packages/language-coffee-script/spec/coffee-script-literate-spec.coffee @@ -29,7 +29,7 @@ describe "CoffeeScript (Literate) grammar", -> #!/usr/local/bin/env coffee --literate -w """ for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = """ #!/usr/local/bin/coffee --no-head -literate -w @@ -37,7 +37,7 @@ describe "CoffeeScript (Literate) grammar", -> #!/usr/local/bin/env coffee --illiterate -w=l """ for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() it "recognises Emacs modelines", -> valid = """ @@ -56,7 +56,7 @@ describe "CoffeeScript (Literate) grammar", -> "-*- font:x;foo : bar ; mode : LiTcOFFEe ; bar : foo ; foooooo:baaaaar;fo:ba-*-"; """ for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = """ /* --*litcoffee-*- */ @@ -74,7 +74,7 @@ describe "CoffeeScript (Literate) grammar", -> // -*-font:mode;mode:litcoffee--*- """ for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() it "recognises Vim modelines", -> valid = """ @@ -101,7 +101,7 @@ describe "CoffeeScript (Literate) grammar", -> # vim:noexpandtab titlestring=hi\|there\\\\ ft=litcoffee ts=4 """ for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = """ ex: se filetype=litcoffee: @@ -119,4 +119,4 @@ describe "CoffeeScript (Literate) grammar", -> # vim:noexpandtab titlestring=hi\\|there\\\\\\ ft=litcoffee ts=4 """ for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() diff --git a/packages/language-css/spec/css-spec.coffee b/packages/language-css/spec/css-spec.coffee index e68cd02dd..3fb1b5d6a 100644 --- a/packages/language-css/spec/css-spec.coffee +++ b/packages/language-css/spec/css-spec.coffee @@ -3508,7 +3508,7 @@ describe 'CSS grammar', -> "-*- font:x;foo : bar ; mode : cSS ; bar : foo ; foooooo:baaaaar;fo:ba-*-"; """ for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = """ /* --*css-*- */ @@ -3526,7 +3526,7 @@ describe 'CSS grammar', -> // -*-font:mode;mode:css--*- """ for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() it "recognises Vim modelines", -> valid = """ @@ -3553,7 +3553,7 @@ describe 'CSS grammar', -> # vim:noexpandtab titlestring=hi\|there\\\\ ft=css ts=4 """ for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = """ ex: se filetype=css: @@ -3571,7 +3571,7 @@ describe 'CSS grammar', -> # vim:noexpandtab titlestring=hi\\|there\\\\\\ ft=CSS ts=4 """ for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() describe "Missing supported properties regressions", -> it "recognises place-items property as supported", -> diff --git a/packages/language-html/spec/html-spec.coffee b/packages/language-html/spec/html-spec.coffee index 6880a530b..969e32355 100644 --- a/packages/language-html/spec/html-spec.coffee +++ b/packages/language-html/spec/html-spec.coffee @@ -601,8 +601,8 @@ describe 'TextMate HTML grammar', -> describe 'firstLineMatch', -> it 'recognises HTML5 doctypes', -> - expect(grammar.firstLineRegex.scanner.findNextMatchSync('<!DOCTYPE html>')).not.toBeNull() - expect(grammar.firstLineRegex.scanner.findNextMatchSync('<!doctype HTML>')).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync('<!DOCTYPE html>')).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync('<!doctype HTML>')).not.toBeNull() it 'recognises Emacs modelines', -> valid = ''' @@ -621,7 +621,7 @@ describe 'TextMate HTML grammar', -> "-*- font:x;foo : bar ; mode : HtML ; bar : foo ; foooooo:baaaaar;fo:ba-*-"; ''' for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = ''' /* --*html-*- */ @@ -640,7 +640,7 @@ describe 'TextMate HTML grammar', -> // -*-font:mode;mode:html--*- ''' for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() it 'recognises Vim modelines', -> valid = ''' @@ -667,7 +667,7 @@ describe 'TextMate HTML grammar', -> # vim:noexpandtab titlestring=hi\|there\\\\ ft=html ts=4 ''' for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = ''' ex: se filetype=html: @@ -685,7 +685,7 @@ describe 'TextMate HTML grammar', -> # vim:noexpandtab titlestring=hi\\|there\\\\\\ ft=HTML ts=4 ''' for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() describe 'tags', -> it 'tokenizes style tags as such', -> diff --git a/packages/language-javascript/spec/javascript-spec.coffee b/packages/language-javascript/spec/javascript-spec.coffee index 1d6a9a0b8..0e5202cbd 100644 --- a/packages/language-javascript/spec/javascript-spec.coffee +++ b/packages/language-javascript/spec/javascript-spec.coffee @@ -2400,7 +2400,7 @@ describe "JavaScript grammar", -> #!/usr/bin/env node """ for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = """ \x20#!/usr/sbin/node @@ -2411,7 +2411,7 @@ describe "JavaScript grammar", -> #!\t/usr/bin/env --node=bar """ for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() it "recognises Emacs modelines", -> valid = """ @@ -2430,7 +2430,7 @@ describe "JavaScript grammar", -> "-*- font:x;foo : bar ; mode : jS ; bar : foo ; foooooo:baaaaar;fo:ba-*-"; """ for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = """ /* --*js-*- */ @@ -2448,7 +2448,7 @@ describe "JavaScript grammar", -> // -*-font:mode;mode:js--*- """ for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() it "recognises Vim modelines", -> valid = """ @@ -2475,7 +2475,7 @@ describe "JavaScript grammar", -> # vim:noexpandtab titlestring=hi\|there\\\\ ft=javascript ts=4 """ for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = """ ex: se filetype=javascript: @@ -2493,4 +2493,4 @@ describe "JavaScript grammar", -> # vim:noexpandtab titlestring=hi\\|there\\\\\\ ft=javascript ts=4 """ for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() diff --git a/packages/language-perl/spec/grammar-perl6-spec.coffee b/packages/language-perl/spec/grammar-perl6-spec.coffee index 0993f3788..94a458758 100644 --- a/packages/language-perl/spec/grammar-perl6-spec.coffee +++ b/packages/language-perl/spec/grammar-perl6-spec.coffee @@ -183,7 +183,7 @@ describe "Perl 6 grammar", -> #!/usr/bin/env perl6 """ for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = """ #! pearl6 @@ -200,11 +200,11 @@ describe "Perl 6 grammar", -> #!\t/usr/bin/env --perl6=bar """ for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() it "recognises the Perl6 pragma", -> line = "use v6;" - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() it "recognises Emacs modelines", -> modelines = """ @@ -222,7 +222,7 @@ describe "Perl 6 grammar", -> "-*- font:x;foo : bar ; mode : pErL6 ; bar : foo ; foooooo:baaaaar;fo:ba-*-"; """ for line in modelines.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = """ /* --*perl6-*- */ @@ -241,7 +241,7 @@ describe "Perl 6 grammar", -> """ for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() it "recognises Vim modelines", -> valid = """ @@ -268,7 +268,7 @@ describe "Perl 6 grammar", -> # vim:noexpandtab titlestring=hi\|there\\\\ ft=perl6 ts=4 """ for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = """ ex: se filetype=perl6: @@ -286,7 +286,7 @@ describe "Perl 6 grammar", -> # vim:noexpandtab titlestring=hi\\|there\\\\\\ ft=perl6 ts=4 """ for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() # Local variables: # mode: CoffeeScript diff --git a/packages/language-perl/spec/grammar-spec.coffee b/packages/language-perl/spec/grammar-spec.coffee index dcb4b8329..8d56d8767 100644 --- a/packages/language-perl/spec/grammar-spec.coffee +++ b/packages/language-perl/spec/grammar-spec.coffee @@ -1439,7 +1439,7 @@ Assigned to: @<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<< #!/usr/bin/env perl """ for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = """ #! pearl @@ -1456,7 +1456,7 @@ Assigned to: @<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<< #!\t/usr/bin/env --perl=bar """ for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() it "recognises Emacs modelines", -> valid = """ @@ -1474,7 +1474,7 @@ Assigned to: @<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<< "-*- font:x;foo : bar ; mode : pErL ; bar : foo ; foooooo:baaaaar;fo:ba-*-"; """ for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = """ /* --*perl-*- */ @@ -1491,7 +1491,7 @@ Assigned to: @<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<< // -*-font:mode;mode:perl--*- """ for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() it "recognises Vim modelines", -> valid = """ @@ -1518,7 +1518,7 @@ Assigned to: @<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<< # vim:noexpandtab titlestring=hi\|there\\\\ ft=perl ts=4 """ for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = """ ex: se filetype=perl: @@ -1536,7 +1536,7 @@ Assigned to: @<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<< # vim:noexpandtab titlestring=hi\\|there\\\\\\ ft=perl ts=4 """ for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() # Local variables: # mode: CoffeeScript diff --git a/packages/language-php/spec/html-spec.coffee b/packages/language-php/spec/html-spec.coffee index 814de60ac..b86f91747 100644 --- a/packages/language-php/spec/html-spec.coffee +++ b/packages/language-php/spec/html-spec.coffee @@ -161,11 +161,11 @@ describe 'PHP in HTML', -> <?php namespace foo; ''' for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() # Do not allow matching XML declaration until the grammar scoring system takes into account # the length of the first line match so that longer matches get the priority over shorter matches. - expect(grammar.firstLineRegex.scanner.findNextMatchSync('<?xml version="1.0" encoding="UTF-8"?>')).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync('<?xml version="1.0" encoding="UTF-8"?>')).toBeNull() it 'recognises interpreter directives', -> valid = ''' @@ -184,7 +184,7 @@ describe 'PHP in HTML', -> #!/usr/bin/env php ''' for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = ''' \x20#!/usr/sbin/php @@ -196,7 +196,7 @@ describe 'PHP in HTML', -> #!\t/usr/bin/env --php=bar ''' for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() it 'recognises Emacs modelines', -> valid = ''' @@ -215,7 +215,7 @@ describe 'PHP in HTML', -> "-*- font:x;foo : bar ; mode : php ; bar : foo ; foooooo:baaaaar;fo:ba-*-"; ''' for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = ''' /* --*php-*- */ @@ -233,7 +233,7 @@ describe 'PHP in HTML', -> // -*-font:mode;mode:php--*- ''' for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() it 'recognises Vim modelines', -> valid = ''' @@ -260,7 +260,7 @@ describe 'PHP in HTML', -> # vim:noexpandtab titlestring=hi\|there\\\\ ft=phtml ts=4 ''' for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = ''' ex: se filetype=php: @@ -278,7 +278,7 @@ describe 'PHP in HTML', -> # vim:noexpandtab titlestring=hi\\|there\\\\\\ ft=php ts=4 ''' for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() it 'should tokenize <?php use Some\\Name ?>', -> lines = grammar.tokenizeLines ''' diff --git a/packages/language-python/spec/python-spec.coffee b/packages/language-python/spec/python-spec.coffee index 423f8c17f..ffaac533b 100644 --- a/packages/language-python/spec/python-spec.coffee +++ b/packages/language-python/spec/python-spec.coffee @@ -14,8 +14,8 @@ describe "Python grammar", -> grammar = atom.grammars.grammarForScopeName("source.python") it "recognises shebang on firstline", -> - expect(grammar.firstLineRegex.scanner.findNextMatchSync("#!/usr/bin/env python")).not.toBeNull() - expect(grammar.firstLineRegex.scanner.findNextMatchSync("#! /usr/bin/env python")).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync("#!/usr/bin/env python")).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync("#! /usr/bin/env python")).not.toBeNull() it "parses the grammar", -> expect(grammar).toBeDefined() diff --git a/packages/language-ruby/spec/ruby-spec.coffee b/packages/language-ruby/spec/ruby-spec.coffee index 37b6b53c3..d14cdbec9 100644 --- a/packages/language-ruby/spec/ruby-spec.coffee +++ b/packages/language-ruby/spec/ruby-spec.coffee @@ -964,7 +964,7 @@ describe "TextMate Ruby grammar", -> #!/usr/bin/env ruby """ for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = """ \x20#!/usr/sbin/ruby @@ -975,7 +975,7 @@ describe "TextMate Ruby grammar", -> #!\t/usr/bin/env --ruby=bar """ for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() it "recognises Emacs modelines", -> valid = """ @@ -994,7 +994,7 @@ describe "TextMate Ruby grammar", -> "-*- font:x;foo : bar ; mode : RUBY ; bar : foo ; foooooo:baaaaar;fo:ba-*-"; """ for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = """ /* --*ruby-*- */ @@ -1012,7 +1012,7 @@ describe "TextMate Ruby grammar", -> // -*-font:mode;mode:ruby--*- """ for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() it "recognises Vim modelines", -> valid = """ @@ -1039,7 +1039,7 @@ describe "TextMate Ruby grammar", -> # vim:noexpandtab titlestring=hi\|there\\\\ ft=ruby ts=4 """ for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = """ ex: se filetype=ruby: @@ -1057,4 +1057,4 @@ describe "TextMate Ruby grammar", -> # vim:noexpandtab titlestring=hi\\|there\\\\\\ ft=ruby ts=4 """ for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() diff --git a/packages/language-shellscript/spec/shell-unix-bash-spec.coffee b/packages/language-shellscript/spec/shell-unix-bash-spec.coffee index 8d8af968c..882b405cc 100644 --- a/packages/language-shellscript/spec/shell-unix-bash-spec.coffee +++ b/packages/language-shellscript/spec/shell-unix-bash-spec.coffee @@ -361,7 +361,7 @@ describe "Shell script grammar", -> #!/usr/bin/env bash """ for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = """ \x20#!/usr/sbin/bash @@ -373,7 +373,7 @@ describe "Shell script grammar", -> #!\t/usr/bin/env --bash=bar """ for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() it "recognises Emacs modelines", -> valid = """ @@ -392,7 +392,7 @@ describe "Shell script grammar", -> "-*- font:x;foo : bar ; mode : sH ; bar : foo ; foooooo:baaaaar;fo:ba-*-"; """ for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = """ /* --*sh-*- */ @@ -410,7 +410,7 @@ describe "Shell script grammar", -> // -*-font:mode;mode:sh--*- """ for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() it "recognises Vim modelines", -> valid = """ @@ -437,7 +437,7 @@ describe "Shell script grammar", -> # vim:noexpandtab titlestring=hi\|there\\\\ ft=sh ts=4 """ for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = """ ex: se filetype=sh: @@ -455,4 +455,4 @@ describe "Shell script grammar", -> # vim:noexpandtab titlestring=hi\\|there\\\\\\ ft=sh ts=4 """ for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() diff --git a/packages/language-xml/spec/xml-spec.coffee b/packages/language-xml/spec/xml-spec.coffee index 6320738e5..bbc993136 100644 --- a/packages/language-xml/spec/xml-spec.coffee +++ b/packages/language-xml/spec/xml-spec.coffee @@ -122,7 +122,7 @@ attrName="attrValue"> "-*- font:x;foo : bar ; mode : xMl ; bar : foo ; foooooo:baaaaar;fo:ba-*-"; """ for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = """ /* --*XML-*- */ @@ -140,7 +140,7 @@ attrName="attrValue"> // -*-font:mode;mode:xml--*- """ for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() it "recognises Vim modelines", -> valid = """ @@ -167,7 +167,7 @@ attrName="attrValue"> # vim:noexpandtab titlestring=hi\|there\\\\ ft=xml ts=4 """ for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = """ ex: se filetype=xml: @@ -185,7 +185,7 @@ attrName="attrValue"> # vim:noexpandtab titlestring=hi\\|there\\\\\\ ft=xml ts=4 """ for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() it "recognises a valid XML declaration", -> valid = """ @@ -196,7 +196,7 @@ attrName="attrValue"> <?xml version="1.0" encoding='UTF-8' standalone='no' ?> """ for line in valid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).not.toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).not.toBeNull() invalid = """ <?XML version="1.0"?> @@ -209,4 +209,4 @@ attrName="attrValue"> <?xml version="1.0"> """ for line in invalid.split /\n/ - expect(grammar.firstLineRegex.scanner.findNextMatchSync(line)).toBeNull() + expect(grammar.firstLineRegex.findNextMatchSync(line)).toBeNull() From 68e3986ddca53ba88784cce45dcb9d9a722e32ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Szabo?= <mauricio.szabo@gmail.com> Date: Tue, 21 Mar 2023 15:08:44 -0300 Subject: [PATCH 31/85] Removed weird entry in Perl grammar --- packages/language-perl/grammars/perl.cson | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/language-perl/grammars/perl.cson b/packages/language-perl/grammars/perl.cson index ddc82df93..65c047f6a 100644 --- a/packages/language-perl/grammars/perl.cson +++ b/packages/language-perl/grammars/perl.cson @@ -721,9 +721,6 @@ 'match': '^\\s*(package)\\s+([^\\s;]+)' 'name': 'meta.class.perl' } - { - 'include: "#sub' - } { 'captures': '1': From 97c77febe78b9cecf2673cb8787766f3c74b5b8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Szabo?= <mauricio.szabo@gmail.com> Date: Tue, 21 Mar 2023 19:59:01 -0300 Subject: [PATCH 32/85] Another second-mate bump --- package.json | 2 +- yarn.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 9028681df..6346bc6f8 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "exception-reporting": "file:packages/exception-reporting", "find-and-replace": "https://github.com/atom-community/find-and-replace/archive/refs/tags/v0.220.1.tar.gz", "find-parent-dir": "^0.3.0", - "second-mate": "https://github.com/pulsar-edit/second-mate.git#f79e9e3", + "second-mate": "https://github.com/pulsar-edit/second-mate.git#14aa7bd", "focus-trap": "6.3.0", "fs-admin": "0.19.0", "fs-plus": "^3.1.1", diff --git a/yarn.lock b/yarn.lock index 090c35d68..750a11edf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8481,9 +8481,9 @@ season@^6.0.2: fs-plus "^3.0.0" yargs "^3.23.0" -"second-mate@https://github.com/pulsar-edit/second-mate.git#f79e9e3": +"second-mate@https://github.com/pulsar-edit/second-mate.git#14aa7bd": version "8.0.0" - resolved "https://github.com/pulsar-edit/second-mate.git#f79e9e3b18f7d4a39aec2213a25db5dcb7720762" + resolved "https://github.com/pulsar-edit/second-mate.git#14aa7bd94b90c47aa99f000394301b9573b8898b" dependencies: emissary "^1.3.3" event-kit "^2.5.3" From 7da22ace9e015553680941c23088ab10c8c89c5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Szabo?= <mauricio.szabo@gmail.com> Date: Thu, 23 Mar 2023 13:55:36 -0300 Subject: [PATCH 33/85] Bumped document-register-element to our version --- package.json | 2 +- yarn.lock | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 76f58b1a2..67a170ee4 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "dedent": "^0.7.0", "deprecation-cop": "file:packages/deprecation-cop", "dev-live-reload": "file:packages/dev-live-reload", - "document-register-element": "^1.14.10", + "document-register-element": "https://github.com/pulsar-edit/document-register-element.git#1f5868f", "encoding-selector": "file:packages/encoding-selector", "etch": "0.14.1", "event-kit": "^2.5.3", diff --git a/yarn.lock b/yarn.lock index 03b68f672..b95023f6a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3789,10 +3789,9 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -document-register-element@^1.14.10: +"document-register-element@https://github.com/pulsar-edit/document-register-element.git#1f5868f": version "1.14.10" - resolved "https://registry.yarnpkg.com/document-register-element/-/document-register-element-1.14.10.tgz#a7bd025e6b73bd827fec2d8e90aba755e99387f5" - integrity sha512-w5UA37hEIrs+9pruo2yR5UD13c4UHDlkqqjt4qurnp7QsBI9b1IOi8WXUim+aCqKBsENX3Z/cso7XMOuwJH1Yw== + resolved "https://github.com/pulsar-edit/document-register-element.git#1f5868fba7b6c3a337c777a0396c43a080e1fad3" dom-serializer@^2.0.0: version "2.0.0" From aee7625205ee9235a4454945bd12ce8ad46aae16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Szabo?= <mauricio.szabo@gmail.com> Date: Thu, 23 Mar 2023 13:57:14 -0300 Subject: [PATCH 34/85] Changelog update --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4500e8f9b..02b93434f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,9 @@ ## [Unreleased] +- Fixed some issues with some packages with WebComponents v0 (tablr package +should work now) by internalizing and patching document-register-element + ## 1.103.0 - Added a new feature to Search for Pulsar's settings From 6dd95ecbc5e761f3f0ae5ea1822f5179ac58a145 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Szabo?= <mauricio.szabo@gmail.com> Date: Thu, 23 Mar 2023 13:59:22 -0300 Subject: [PATCH 35/85] Changelog update --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4500e8f9b..6c85c2176 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,9 @@ ## [Unreleased] +- Migrated away from `node-oniguruma` in favor of `vscode-oniguruma` (WASM +version). This fixes issues with Electron 21 + ## 1.103.0 - Added a new feature to Search for Pulsar's settings From 3da357d75f376daf4432a17d8814095f46a70408 Mon Sep 17 00:00:00 2001 From: Mohammad Amin Chitgarha <machitgarha@outlook.com> Date: Fri, 24 Mar 2023 09:55:59 +0330 Subject: [PATCH 36/85] =?UTF-8?q?Fix=20spacing=20of=20PHP's=20"for=20?= =?UTF-8?q?=E2=80=A6"=20snippet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/language-php/snippets/language-php.cson | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/language-php/snippets/language-php.cson b/packages/language-php/snippets/language-php.cson index 50038ddc1..90d190322 100644 --- a/packages/language-php/snippets/language-php.cson +++ b/packages/language-php/snippets/language-php.cson @@ -56,7 +56,7 @@ 'body': 'elseif (${1:condition}) {\n\t${0:// code...}\n}' 'for …': 'prefix': 'for' - 'body': 'for ($${1:i}=${2:0}; $${1:i} < $3; $${1:i}++) {\n\t${0:// code...}\n}' + 'body': 'for ($${1:i} = ${2:0}; $${1:i} < $3; $${1:i}++) {\n\t${0:// code...}\n}' 'foreach …': 'prefix': 'foreach' 'body': 'foreach ($${1:variable} as $${2:key} ${3:=> $${4:value}}) {\n\t${0:// code...}\n}' From 33593f7bc93a0a3fa1e39ef53005832df3ed0a29 Mon Sep 17 00:00:00 2001 From: confused-Techie <dev@lhbasics.com> Date: Sat, 25 Mar 2023 20:03:29 -0700 Subject: [PATCH 37/85] Fix all tests, remove globals from completions attributes --- packages/autocomplete-html/completions.json | 12466 ---------------- packages/autocomplete-html/lib/helpers.js | 2 +- .../autocomplete-html/spec/provider-spec.js | 154 +- packages/autocomplete-html/update/update.js | 36 +- 4 files changed, 121 insertions(+), 12537 deletions(-) diff --git a/packages/autocomplete-html/completions.json b/packages/autocomplete-html/completions.json index f4caf7c31..04f948be2 100644 --- a/packages/autocomplete-html/completions.json +++ b/packages/autocomplete-html/completions.json @@ -87,17 +87,9 @@ "html": { "attributes": [ "version", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -110,86 +102,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -198,10 +110,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -269,17 +178,9 @@ }, "head": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -292,86 +193,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -380,10 +201,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -456,17 +274,9 @@ "attributes": [ "href", "target", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -479,86 +289,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -567,10 +297,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -656,17 +383,9 @@ "charset", "rev", "target", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "sheet", @@ -680,86 +399,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -768,10 +407,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -844,17 +480,9 @@ "content", "media", "scheme", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -867,86 +495,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -955,10 +503,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -1035,17 +580,9 @@ "aLink", "bgColor", "background", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "onafterprint", @@ -1074,86 +611,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -1162,10 +619,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -1233,17 +687,9 @@ }, "article": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -1256,86 +702,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -1344,10 +710,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -1415,17 +778,9 @@ }, "section": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -1438,86 +793,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -1526,10 +801,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -1597,17 +869,9 @@ }, "nav": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -1620,86 +884,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -1708,10 +892,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -1779,17 +960,9 @@ }, "aside": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -1802,86 +975,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -1890,10 +983,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -1962,17 +1052,9 @@ "h1": { "attributes": [ "align", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -1985,86 +1067,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -2073,10 +1075,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -2145,17 +1144,9 @@ "h2": { "attributes": [ "align", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -2168,86 +1159,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -2256,10 +1167,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -2328,17 +1236,9 @@ "h3": { "attributes": [ "align", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -2351,86 +1251,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -2439,10 +1259,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -2511,17 +1328,9 @@ "h4": { "attributes": [ "align", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -2534,86 +1343,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -2622,10 +1351,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -2694,17 +1420,9 @@ "h5": { "attributes": [ "align", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -2717,86 +1435,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -2805,10 +1443,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -2877,17 +1512,9 @@ "h6": { "attributes": [ "align", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -2900,86 +1527,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -2988,10 +1535,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -3059,17 +1603,9 @@ }, "hgroup": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -3082,86 +1618,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -3170,10 +1626,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -3241,17 +1694,9 @@ }, "header": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -3264,86 +1709,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -3352,10 +1717,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -3423,17 +1785,9 @@ }, "footer": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -3446,86 +1800,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -3534,10 +1808,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -3605,17 +1876,9 @@ }, "address": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -3628,86 +1891,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -3716,10 +1899,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -3788,17 +1968,9 @@ "p": { "attributes": [ "align", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -3811,86 +1983,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -3899,10 +1991,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -3975,17 +2064,9 @@ "noShade", "size", "width", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -3998,86 +2079,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -4086,10 +2087,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -4158,17 +2156,9 @@ "pre": { "attributes": [ "width", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -4181,86 +2171,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -4269,10 +2179,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -4341,17 +2248,9 @@ "blockquote": { "attributes": [ "cite", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -4364,86 +2263,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -4452,10 +2271,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -4527,17 +2343,9 @@ "start", "type", "compact", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -4550,86 +2358,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -4638,10 +2366,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -4711,17 +2436,9 @@ "attributes": [ "compact", "type", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -4734,86 +2451,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -4822,10 +2459,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -4894,17 +2528,9 @@ "menu": { "attributes": [ "compact", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -4917,86 +2543,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -5005,10 +2551,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -5078,17 +2621,9 @@ "attributes": [ "value", "type", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -5101,86 +2636,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -5189,10 +2644,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -5261,17 +2713,9 @@ "dl": { "attributes": [ "compact", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -5284,86 +2728,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -5372,10 +2736,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -5443,17 +2804,9 @@ }, "dt": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -5466,86 +2819,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -5554,10 +2827,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -5625,17 +2895,9 @@ }, "dd": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -5648,86 +2910,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -5736,10 +2918,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -5807,17 +2986,9 @@ }, "figure": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -5830,86 +3001,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -5918,10 +3009,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -5989,17 +3077,9 @@ }, "figcaption": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -6012,86 +3092,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -6100,10 +3100,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -6171,17 +3168,9 @@ }, "main": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -6194,86 +3183,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -6282,10 +3191,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -6354,17 +3260,9 @@ "div": { "attributes": [ "align", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -6377,86 +3275,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -6465,10 +3283,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -6539,17 +3354,9 @@ }, "em": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -6562,86 +3369,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -6650,10 +3377,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -6721,17 +3445,9 @@ }, "strong": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -6744,86 +3460,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -6832,10 +3468,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -6903,17 +3536,9 @@ }, "small": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -6926,86 +3551,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -7014,10 +3559,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -7085,17 +3627,9 @@ }, "s": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -7108,86 +3642,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -7196,10 +3650,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -7267,17 +3718,9 @@ }, "cite": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -7290,86 +3733,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -7378,10 +3741,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -7450,17 +3810,9 @@ "q": { "attributes": [ "cite", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -7473,86 +3825,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -7561,10 +3833,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -7632,17 +3901,9 @@ }, "dfn": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -7655,86 +3916,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -7743,10 +3924,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -7814,17 +3992,9 @@ }, "abbr": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -7837,86 +4007,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -7925,10 +4015,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -7996,17 +4083,9 @@ }, "ruby": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -8019,86 +4098,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -8107,10 +4106,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -8178,17 +4174,9 @@ }, "rt": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -8201,86 +4189,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -8289,10 +4197,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -8360,17 +4265,9 @@ }, "rp": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -8383,86 +4280,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -8471,10 +4288,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -8543,17 +4357,9 @@ "data": { "attributes": [ "value", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -8566,86 +4372,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -8654,10 +4380,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -8726,17 +4449,9 @@ "time": { "attributes": [ "dateTime", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -8749,86 +4464,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -8837,10 +4472,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -8908,17 +4540,9 @@ }, "code": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -8931,86 +4555,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -9019,10 +4563,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -9090,17 +4631,9 @@ }, "var": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -9113,86 +4646,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -9201,10 +4654,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -9272,17 +4722,9 @@ }, "samp": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -9295,86 +4737,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -9383,10 +4745,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -9454,17 +4813,9 @@ }, "kbd": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -9477,86 +4828,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -9565,10 +4836,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -9636,17 +4904,9 @@ }, "sub": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -9659,86 +4919,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -9747,10 +4927,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -9818,17 +4995,9 @@ }, "sup": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -9841,86 +5010,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -9929,10 +5018,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -10000,17 +5086,9 @@ }, "i": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -10023,86 +5101,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -10111,10 +5109,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -10182,17 +5177,9 @@ }, "b": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -10205,86 +5192,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -10293,10 +5200,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -10364,17 +5268,9 @@ }, "u": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -10387,86 +5283,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -10475,10 +5291,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -10546,17 +5359,9 @@ }, "mark": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -10569,86 +5374,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -10657,10 +5382,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -10728,17 +5450,9 @@ }, "bdi": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -10751,86 +5465,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -10839,10 +5473,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -10910,17 +5541,9 @@ }, "bdo": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -10933,86 +5556,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -11021,10 +5564,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -11092,17 +5632,9 @@ }, "span": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -11115,86 +5647,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -11203,10 +5655,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -11275,17 +5724,9 @@ "br": { "attributes": [ "clear", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -11298,86 +5739,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -11386,10 +5747,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -11457,17 +5815,9 @@ }, "wbr": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -11480,86 +5830,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -11568,10 +5838,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -11641,17 +5908,9 @@ "attributes": [ "cite", "dateTime", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -11664,86 +5923,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -11752,10 +5931,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -11825,17 +6001,9 @@ "attributes": [ "cite", "dateTime", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -11848,86 +6016,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -11936,10 +6024,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -12007,17 +6092,9 @@ }, "picture": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -12030,86 +6107,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -12118,10 +6115,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -12196,17 +6190,9 @@ "media", "width", "height", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -12219,86 +6205,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -12307,10 +6213,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -12401,17 +6304,9 @@ "vspace", "longDesc", "border", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -12424,86 +6319,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -12512,10 +6327,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -12601,17 +6413,9 @@ "longDesc", "marginHeight", "marginWidth", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -12624,86 +6428,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -12712,10 +6436,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -12789,17 +6510,9 @@ "height", "align", "name", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -12812,86 +6525,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -12900,10 +6533,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -12993,17 +6623,9 @@ "codeType", "useMap", "border", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -13016,86 +6638,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -13104,10 +6646,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -13209,17 +6748,9 @@ "audioTracks", "videoTracks", "textTracks", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -13232,86 +6763,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -13320,10 +6771,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -13419,17 +6867,9 @@ "audioTracks", "videoTracks", "textTracks", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -13442,86 +6882,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -13530,10 +6890,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -13608,17 +6965,9 @@ "default", "readyState", "track", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -13631,86 +6980,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -13719,10 +6988,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -13792,17 +7058,9 @@ "attributes": [ "name", "areas", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -13815,86 +7073,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -13903,10 +7081,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -13984,17 +7159,9 @@ "relList", "referrerPolicy", "noHref", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "href", @@ -14018,86 +7185,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -14106,10 +7193,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -14191,17 +7275,9 @@ "bgColor", "cellPadding", "cellSpacing", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -14214,86 +7290,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -14302,10 +7298,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -14374,17 +7367,9 @@ "caption": { "attributes": [ "align", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -14397,86 +7382,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -14485,10 +7390,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -14562,17 +7464,9 @@ "chOff", "vAlign", "width", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -14585,86 +7479,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -14673,10 +7487,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -14750,17 +7561,9 @@ "chOff", "vAlign", "width", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -14773,86 +7576,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -14861,10 +7584,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -14937,17 +7657,9 @@ "ch", "chOff", "vAlign", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -14960,86 +7672,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -15048,10 +7680,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -15124,17 +7753,9 @@ "ch", "chOff", "vAlign", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -15147,86 +7768,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -15235,10 +7776,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -15311,17 +7849,9 @@ "ch", "chOff", "vAlign", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -15334,86 +7864,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -15422,10 +7872,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -15501,17 +7948,9 @@ "chOff", "vAlign", "bgColor", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -15524,86 +7963,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -15612,10 +7971,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -15698,17 +8054,9 @@ "noWrap", "vAlign", "bgColor", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -15721,86 +8069,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -15809,10 +8077,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -15895,17 +8160,9 @@ "noWrap", "vAlign", "bgColor", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -15918,86 +8175,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -16006,10 +8183,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -16090,17 +8264,9 @@ "relList", "elements", "length", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -16113,86 +8279,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -16201,10 +8287,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -16275,17 +8358,9 @@ "form", "htmlFor", "control", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -16298,86 +8373,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -16386,10 +8381,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -16502,17 +8494,9 @@ "selectionDirection", "align", "useMap", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -16525,86 +8509,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -16613,10 +8517,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -16698,17 +8599,9 @@ "validity", "validationMessage", "labels", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -16721,86 +8614,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -16809,10 +8622,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -16897,17 +8707,9 @@ "validity", "validationMessage", "labels", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -16920,86 +8722,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -17008,10 +8730,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -17080,17 +8799,9 @@ "datalist": { "attributes": [ "options", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -17103,86 +8814,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -17191,10 +8822,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -17264,17 +8892,9 @@ "attributes": [ "disabled", "label", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -17287,86 +8907,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -17375,10 +8915,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -17454,17 +8991,9 @@ "value", "text", "index", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -17477,86 +9006,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -17565,10 +9014,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -17660,17 +9106,9 @@ "selectionStart", "selectionEnd", "selectionDirection", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -17683,86 +9121,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -17771,10 +9129,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -17852,17 +9207,9 @@ "validity", "validationMessage", "labels", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -17875,86 +9222,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -17963,10 +9230,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -18038,17 +9302,9 @@ "max", "position", "labels", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -18061,86 +9317,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -18149,10 +9325,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -18227,17 +9400,9 @@ "high", "optimum", "labels", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -18250,86 +9415,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -18338,10 +9423,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -18417,17 +9499,9 @@ "willValidate", "validity", "validationMessage", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -18440,86 +9514,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -18528,10 +9522,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -18601,17 +9592,9 @@ "attributes": [ "form", "align", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -18624,86 +9607,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -18712,10 +9615,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -18784,17 +9684,9 @@ "details": { "attributes": [ "open", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -18807,86 +9699,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -18895,10 +9707,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -18966,17 +9775,9 @@ }, "summary": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -18989,86 +9790,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -19077,10 +9798,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -19150,17 +9868,9 @@ "attributes": [ "open", "returnValue", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -19173,86 +9883,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -19261,10 +9891,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -19335,17 +9962,9 @@ }, "noscript": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -19358,86 +9977,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -19446,10 +9985,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -19518,17 +10054,9 @@ "template": { "attributes": [ "content", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -19541,86 +10069,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -19629,10 +10077,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -19701,17 +10146,9 @@ "slot": { "attributes": [ "name", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -19724,86 +10161,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -19812,10 +10169,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -19885,17 +10239,9 @@ "attributes": [ "width", "height", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -19908,86 +10254,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -19996,10 +10262,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -20067,17 +10330,9 @@ }, "applet": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -20090,86 +10345,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -20178,10 +10353,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -20249,17 +10421,9 @@ }, "acronym": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -20272,86 +10436,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -20360,10 +10444,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -20431,17 +10512,9 @@ }, "bgsound": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -20454,86 +10527,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -20542,10 +10535,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -20614,17 +10604,9 @@ "dir": { "attributes": [ "compact", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -20637,86 +10619,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -20725,10 +10627,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -20806,17 +10705,9 @@ "contentWindow", "marginHeight", "marginWidth", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -20829,86 +10720,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -20917,10 +10728,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -20990,17 +10798,9 @@ "attributes": [ "cols", "rows", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "onafterprint", @@ -21029,86 +10829,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -21117,10 +10837,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -21188,17 +10905,9 @@ }, "noframes": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -21211,86 +10920,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -21299,10 +10928,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -21370,17 +10996,9 @@ }, "isindex": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -21393,86 +11011,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -21481,10 +11019,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -21552,17 +11087,9 @@ }, "keygen": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -21575,86 +11102,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -21663,10 +11110,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -21735,17 +11179,9 @@ "listing": { "attributes": [ "width", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -21758,86 +11194,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -21846,10 +11202,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -21917,17 +11270,9 @@ }, "menuitem": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -21940,86 +11285,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -22028,10 +11293,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -22099,17 +11361,9 @@ }, "nextid": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -22122,86 +11376,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -22210,10 +11384,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -22281,17 +11452,9 @@ }, "noembed": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -22304,86 +11467,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -22392,10 +11475,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -22467,17 +11547,9 @@ "value", "type", "valueType", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -22490,86 +11562,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -22578,10 +11570,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -22649,17 +11638,9 @@ }, "plaintext": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -22672,86 +11653,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -22760,10 +11661,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -22831,17 +11729,9 @@ }, "rb": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -22854,86 +11744,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -22942,10 +11752,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -23013,17 +11820,9 @@ }, "rtc": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -23036,86 +11835,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -23124,10 +11843,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -23195,17 +11911,9 @@ }, "strike": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -23218,86 +11926,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -23306,10 +11934,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -23378,17 +12003,9 @@ "xmp": { "attributes": [ "width", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -23401,86 +12018,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -23489,10 +12026,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -23560,17 +12094,9 @@ }, "basefont": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -23583,86 +12109,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -23671,10 +12117,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -23742,17 +12185,9 @@ }, "big": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -23765,86 +12200,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -23853,10 +12208,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -23924,17 +12276,9 @@ }, "blink": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -23947,86 +12291,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -24035,10 +12299,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -24106,17 +12367,9 @@ }, "center": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -24129,86 +12382,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -24217,10 +12390,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -24291,17 +12461,9 @@ "color", "face", "size", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -24314,86 +12476,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -24402,10 +12484,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -24484,17 +12563,9 @@ "trueSpeed", "vspace", "width", - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -24507,86 +12578,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -24595,10 +12586,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -24666,17 +12654,9 @@ }, "multicol": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -24689,86 +12669,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -24777,10 +12677,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -24848,17 +12745,9 @@ }, "nobr": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -24871,86 +12760,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -24959,10 +12768,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -25030,17 +12836,9 @@ }, "spacer": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -25053,86 +12851,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -25141,10 +12859,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -25212,17 +12927,9 @@ }, "tt": { "attributes": [ - "title", - "lang", - "translate", - "dir", - "hidden", "inert", "accessKey", "accessKeyLabel", - "draggable", - "spellcheck", - "autocapitalize", "innerText", "outerText", "namespaceURI", @@ -25235,86 +12942,6 @@ "slot", "attributes", "shadowRoot", - "onabort", - "onauxclick", - "onbeforematch", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextlost", - "oncontextmenu", - "oncontextrestored", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onformdata", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onslotchange", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onvolumechange", - "onwaiting", - "onwebkitanimationend", - "onwebkitanimationiteration", - "onwebkitanimationstart", - "onwebkittransitionend", - "onwheel", - "ongotpointercapture", - "onlostpointercapture", - "onpointerdown", - "onpointermove", - "onpointerrawupdate", - "onpointerup", - "onpointercancel", - "onpointerover", - "onpointerout", - "onpointerenter", - "onpointerleave", "oncopy", "oncut", "onpaste", @@ -25323,10 +12950,7 @@ "isContentEditable", "inputMode", "dataset", - "nonce", - "autofocus", "tabIndex", - "style", "nodeType", "nodeName", "baseURI", @@ -25393,183 +13017,93 @@ "description": "The <tt> HTML element creates inline text which is presented using the Glossary(user agent, user agent's) default monospace font face. This element was created for the purpose of rendering text as it would be displayed on a fixed-width display such as a teletype, text-only screen, or line printer." }, "math": { - "attributes": [ - "style" - ], "description": "The <math> MathML element is the top-level MathML element, used to write a single mathematical formula. It can be placed in HTML content where flow content is permitted." }, "mtext": { - "attributes": [ - "style" - ], "description": "The <mtext> MathML element is used to render arbitrary text with _no_ notational meaning, such as comments or annotations." }, "mi": { - "attributes": [ - "style" - ], "description": "The <mi> MathML element indicates that the content should be rendered as an identifier such as function names, variables or symbolic constants. You can also have arbitrary text in it to mark up terms." }, "mn": { - "attributes": [ - "style" - ], "description": "The <mn> MathML element represents a numeric literal which is normally a sequence of digits with a possible separator (a dot or a comma). However, it is also allowed to have arbitrary text in it which is actually a numeric quantity, for example eleven." }, "mo": { - "attributes": [ - "style" - ], "description": "The <mo> MathML element represents an operator in a broad sense. Besides operators in strict mathematical meaning, this element also includes operators like parentheses, separators like comma and semicolon, or absolute value bars." }, "mspace": { - "attributes": [ - "style" - ], "description": "The <mspace> MathML element is used to display a blank space, whose size is set by its attributes." }, "ms": { - "attributes": [ - "style" - ], "description": "The <ms> MathML element represents a string literal meant to be interpreted by programming languages and computer algebra systems." }, "mrow": { - "attributes": [ - "style" - ], "description": "The <mrow> MathML element is used to group sub-expressions, which usually contain one or more operators with their respective operands (such as MathMLElement(mi) and MathMLElement(mn) ). This element renders as a horizontal row containing its arguments." }, "mfrac": { - "attributes": [ - "style" - ], "description": "The <mfrac> MathML element is used to display fractions. It can also be used" }, "msqrt": { - "attributes": [ - "style" - ], "description": "The <msqrt> MathML element is used to display square roots (no index is displayed). The square root accepts only one argument, which leads to the following syntax: <msqrt> base </msqrt>." }, "mroot": { - "attributes": [ - "style" - ], "description": "The <mroot> MathML element is used to display roots with an explicit index. Two arguments are accepted, which leads to the syntax: <mroot> base index </mroot>." }, "mstyle": { - "attributes": [ - "style" - ], "description": "The <mstyle> MathML element is used to change the style of its children." }, "merror": { - "attributes": [ - "style" - ], "description": "The <merror> MathML element is used to display contents as error messages. The intent of this element is to provide a standard way for programs that generate MathML from other input to report syntax errors." }, "mpadded": { - "attributes": [ - "style" - ], "description": "The <mpadded> MathML element is used to add extra padding and to set the general adjustment of position and size of enclosed contents." }, "mphantom": { - "attributes": [ - "style" - ], "description": "The <mphantom> MathML element is rendered invisibly, but dimensions (such as height, width, and baseline position) are still kept." }, "msub": { - "attributes": [ - "style" - ], "description": "The <msub> MathML element is used to attach a subscript to an expression." }, "msup": { - "attributes": [ - "style" - ], "description": "The <msup> MathML element is used to attach a superscript to an expression." }, "msubsup": { - "attributes": [ - "style" - ], "description": "The <msubsup> MathML element is used to attach both a subscript and a superscript, together, to an expression." }, "munder": { - "attributes": [ - "style" - ], "description": "The <munder> MathML element is used to attach an accent or a limit under an expression. It uses the following syntax: <munder> base underscript </munder>" }, "mover": { - "attributes": [ - "style" - ], "description": "The <mover> MathML element is used to attach an accent or a limit over an expression. Use the following syntax: <mover> base overscript </mover>" }, "munderover": { - "attributes": [ - "style" - ], "description": "The <munderover> MathML element is used to attach accents or limits both under and over an expression." }, "mmultiscripts": { - "attributes": [ - "style" - ], "description": "The <mmultiscripts> MathML element is used to attach an arbitrary number of subscripts and superscripts to an expression at once, generalizing the MathMLElement(msubsup) element. Scripts can be either prescripts (placed before the expression) or postscripts (placed after it)." }, "mprescripts": { - "attributes": [ - "style" - ], "description": "" }, "mtable": { - "attributes": [ - "style" - ], "description": "The <mtable> MathML element allows you to create tables or matrices. Its children are MathMLElement(mtr) elements (representing rows), each of them having MathMLElement(mtd) elements as its children (representing cells). These elements are similar to HTMLElement(table) , HTMLElement(tr) and HTMLElement(td) elements of HTML." }, "mtr": { - "attributes": [ - "style" - ], "description": "The <mtr> MathML element represents a row in a table or a matrix. It may only appear in a MathMLElement(mtable) element and its children are MathMLElement(mtd) elements representing cells. This element is similar to the HTMLElement(tr) element of HTML." }, "mtd": { - "attributes": [ - "style" - ], "description": "The <mtd> MathML element represents a cell in a table or a matrix. It may only appear in a MathMLElement(mtr) element. This element is similar to the HTMLElement(td) element of HTML." }, "maction": { - "attributes": [ - "style" - ], "description": "The <maction> MathML element allows to bind actions to mathematical expressions. By default, only the first child is rendered but some browsers may take into account actiontype and selection attributes to implement custom behaviors." }, "semantics": { - "attributes": [ - "style" - ], "description": "The <semantics> MathML element associates annotations with a MathML expression, for example its text source as a lightweight markup language or mathematical meaning expressed in a special XML dialect. Typically, its structure is:" }, "annotation": { - "attributes": [ - "style" - ], "description": "" }, "annotation-xml": { - "attributes": [ - "style" - ], "description": "" }, "model": { diff --git a/packages/autocomplete-html/lib/helpers.js b/packages/autocomplete-html/lib/helpers.js index 0a67e3e22..f2e458c59 100644 --- a/packages/autocomplete-html/lib/helpers.js +++ b/packages/autocomplete-html/lib/helpers.js @@ -109,7 +109,7 @@ function getTagAttributes (tag) { } function getLocalAttributeDocsURL (attribute, tag) { - return `${getTagDocsURL(tag)}#attr-${attribute}` + return `${getTagDocsURL(tag)}#attributes` } function getGlobalAttributeDocsURL (attribute) { diff --git a/packages/autocomplete-html/spec/provider-spec.js b/packages/autocomplete-html/spec/provider-spec.js index 38c2f8346..ee3588df4 100644 --- a/packages/autocomplete-html/spec/provider-spec.js +++ b/packages/autocomplete-html/spec/provider-spec.js @@ -12,6 +12,26 @@ describe('HTML autocompletions', () => { return provider.getSuggestions({editor, bufferPosition, scopeDescriptor, prefix}) } + function isValueInCompletions(value, array, attribute) { + attribute ??= 'text' + let result = []; + for (const i of array) { + result.push(i[attribute]); + } + return result.includes(value); + } + + function getValueInCompletionsIndex(value, array, attribute) { + attribute ??= 'text'; + for (let i = 0; i < array.length; i++) { + if (array[i][attribute] === value) { + return i; + } + } + // We never did find the value in our array + return -1; + } + beforeEach(() => { waitsForPromise(() => atom.packages.activatePackage('autocomplete-html')) waitsForPromise(() => atom.packages.activatePackage('language-html')) @@ -59,9 +79,9 @@ describe('HTML autocompletions', () => { editor.setCursorBufferPosition([0, 1]) const completions = getCompletions() - expect(completions.length).toBe(113) - expect(completions[0].description).toContain('Creates a hyperlink to other web pages') - expect(completions[0].descriptionMoreURL.endsWith('/HTML/Element/a')).toBe(true) + expect(completions.length).toBeGreaterThan(113) // Fun Fact last check this was 232 + expect(completions[0].description.length).toBeGreaterThan(0) + expect(completions[0].descriptionMoreURL.length).toBeGreaterThan(0) for (let completion of completions) { expect(completion.text.length).toBeGreaterThan(0) @@ -75,36 +95,35 @@ describe('HTML autocompletions', () => { editor.setCursorBufferPosition([0, 2]) let completions = getCompletions() - expect(completions.length).toBe(9) + expect(completions.length).toBeGreaterThan(9) // Fun fact last check was 14 - expect(completions[0].text).toBe('datalist') + expect(isValueInCompletions('datalist', completions)).toBe(true) expect(completions[0].type).toBe('tag') - expect(completions[0].descriptionMoreURL.endsWith('/HTML/Element/datalist')).toBe(true) - expect(completions[1].text).toBe('dd') - expect(completions[2].text).toBe('del') - expect(completions[3].text).toBe('details') - expect(completions[4].text).toBe('dfn') - expect(completions[5].text).toBe('dialog') - expect(completions[6].text).toBe('div') - expect(completions[7].text).toBe('dl') - expect(completions[8].text).toBe('dt') + expect(isValueInCompletions('dd', completions)).toBe(true) + expect(isValueInCompletions('del', completions)).toBe(true) + expect(isValueInCompletions('details', completions)).toBe(true) + expect(isValueInCompletions('dfn', completions)).toBe(true) + expect(isValueInCompletions('dialog', completions)).toBe(true) + expect(isValueInCompletions('div', completions)).toBe(true) + expect(isValueInCompletions('dl', completions)).toBe(true) + expect(isValueInCompletions('dt', completions)).toBe(true) editor.setText('<D') editor.setCursorBufferPosition([0, 2]) completions = getCompletions() - expect(completions.length).toBe(9) + expect(completions.length).toBeGreaterThan(9) // Fun fact last check was 14 - expect(completions[0].text).toBe('datalist') + expect(isValueInCompletions('datalist', completions)).toBe(true) expect(completions[0].type).toBe('tag') - expect(completions[1].text).toBe('dd') - expect(completions[2].text).toBe('del') - expect(completions[3].text).toBe('details') - expect(completions[4].text).toBe('dfn') - expect(completions[5].text).toBe('dialog') - expect(completions[6].text).toBe('div') - expect(completions[7].text).toBe('dl') - expect(completions[8].text).toBe('dt') + expect(isValueInCompletions('dd', completions)).toBe(true) + expect(isValueInCompletions('del', completions)).toBe(true) + expect(isValueInCompletions('details', completions)).toBe(true) + expect(isValueInCompletions('dfn', completions)).toBe(true) + expect(isValueInCompletions('dialog', completions)).toBe(true) + expect(isValueInCompletions('div', completions)).toBe(true) + expect(isValueInCompletions('dl', completions)).toBe(true) + expect(isValueInCompletions('dt', completions)).toBe(true) }) it("does not autocomplete tag names if there's a space after the <", () => { @@ -122,15 +141,16 @@ describe('HTML autocompletions', () => { }) it('does not provide a descriptionMoreURL if the tag does not have a unique description', () => { - // ilayer does not have an associated MDN page as of April 27, 2017 + // isindex does not have an associated MDN page as of March 25, 2023 editor.setText('<i') editor.setCursorBufferPosition([0, 2]) const completions = getCompletions() + const loc = getValueInCompletionsIndex('isindex', completions) - expect(completions[2].text).toBe('ilayer') - expect(completions[2].description).toBe('HTML <ilayer> tag') - expect(completions[2].descriptionMoreURL).toBeNull() + expect(isValueInCompletions('isindex', completions)).toBe(true) + expect(completions[loc].description).toBe("HTML <isindex> tag") + expect(completions[loc].descriptionMoreURL).toBeNull() }) it('autocompletes attribute names without a prefix', () => { @@ -138,9 +158,9 @@ describe('HTML autocompletions', () => { editor.setCursorBufferPosition([0, 5]) let completions = getCompletions() - expect(completions.length).toBe(86) - expect(completions[0].description).toContain('Provides a hint for generating a keyboard shortcut') - expect(completions[0].descriptionMoreURL.endsWith('/HTML/Global_attributes/accesskey')).toBe(true) + expect(completions.length).toBeGreaterThan(86) // Fun fact last check this was 264 + expect(completions[0].description.length).toBeGreaterThan(0) + expect(completions[0].descriptionMoreURL.length).toBeGreaterThan(0) for (var completion of completions) { expect(completion.snippet.length).toBeGreaterThan(0) @@ -153,9 +173,9 @@ describe('HTML autocompletions', () => { editor.setCursorBufferPosition([0, 9]) completions = getCompletions() - expect(completions.length).toBe(98) + expect(completions.length).toBeGreaterThan(98) // Last check 274 expect(completions[0].rightLabel).toBe('<marquee>') - expect(completions[0].descriptionMoreURL.endsWith('/HTML/Element/marquee#attr-align')).toBe(true) + expect(completions[0].descriptionMoreURL.endsWith('/HTML/Element/marquee#attributes')).toBe(true) for (completion of completions) { expect(completion.snippet.length).toBeGreaterThan(0) @@ -186,57 +206,59 @@ describe('HTML autocompletions', () => { editor.setCursorBufferPosition([0, 6]) let completions = getCompletions() - expect(completions.length).toBe(3) + expect(completions.length).toBeGreaterThan(3) // Last check 9 - expect(completions[0].snippet).toBe('class="$1"$0') - expect(completions[0].displayText).toBe('class') - expect(completions[0].type).toBe('attribute') - expect(completions[1].displayText).toBe('contenteditable') - expect(completions[2].displayText).toBe('contextmenu') + let loc = getValueInCompletionsIndex('class', completions, 'displayText') + + expect(completions[loc].snippet).toBe('class="$1"$0') + expect(completions[loc].displayText).toBe('class') + expect(completions[loc].type).toBe('attribute') + expect(isValueInCompletions('contenteditable', completions, 'displayText')) + expect(isValueInCompletions('contextmenu', completions, 'displayText')) editor.setText('<div C') editor.setCursorBufferPosition([0, 6]) completions = getCompletions() - expect(completions.length).toBe(3) + expect(completions.length).toBeGreaterThan(3) // Last check 9 - expect(completions[0].displayText).toBe('class') - expect(completions[1].displayText).toBe('contenteditable') - expect(completions[2].displayText).toBe('contextmenu') + expect(isValueInCompletions('class', completions, 'displayText')) + expect(isValueInCompletions('contenteditable', completions, 'displayText')) + expect(isValueInCompletions('contextmenu', completions, 'displayText')) editor.setText('<div c>') editor.setCursorBufferPosition([0, 6]) completions = getCompletions() - expect(completions.length).toBe(3) + expect(completions.length).toBeGreaterThan(3) - expect(completions[0].displayText).toBe('class') - expect(completions[1].displayText).toBe('contenteditable') - expect(completions[2].displayText).toBe('contextmenu') + expect(isValueInCompletions('class', completions, 'displayText')) + expect(isValueInCompletions('contenteditable', completions, 'displayText')) + expect(isValueInCompletions('contextmenu', completions, 'displayText')) editor.setText('<div c></div>') editor.setCursorBufferPosition([0, 6]) completions = getCompletions() - expect(completions.length).toBe(3) + expect(completions.length).toBeGreaterThan(3) - expect(completions[0].displayText).toBe('class') - expect(completions[1].displayText).toBe('contenteditable') - expect(completions[2].displayText).toBe('contextmenu') + expect(isValueInCompletions('class', completions, 'displayText')) + expect(isValueInCompletions('contenteditable', completions, 'displayText')) + expect(isValueInCompletions('contextmenu', completions, 'displayText')) editor.setText('<marquee di') editor.setCursorBufferPosition([0, 12]) completions = getCompletions() - expect(completions[0].displayText).toBe('direction') - expect(completions[1].displayText).toBe('dir') + expect(isValueInCompletions('direction', completions, 'displayText')) + expect(isValueInCompletions('dir', completions, 'displayText')) editor.setText('<marquee dI') editor.setCursorBufferPosition([0, 12]) completions = getCompletions() - expect(completions[0].displayText).toBe('direction') - expect(completions[1].displayText).toBe('dir') + expect(isValueInCompletions('direction', completions, 'displayText')) + expect(isValueInCompletions('dir', completions, 'displayText')) }) it('autocompletes attribute names without a prefix surrounded by whitespace', () => { @@ -245,7 +267,7 @@ describe('HTML autocompletions', () => { const completions = getCompletions() for (let completion of completions) { expect(completion.type).toBe('attribute') } - expect(completions[0].displayText).toBe('autofocus') + expect(isValueInCompletions('autofocus', completions, 'displayText')) }) it('autocompletes attribute names with a prefix surrounded by whitespace', () => { @@ -254,7 +276,7 @@ describe('HTML autocompletions', () => { const completions = getCompletions() for (let completion of completions) { expect(completion.type).toBe('attribute') } - expect(completions[0].displayText).toBe('onabort') + expect(isValueInCompletions('onabort', completions, 'displayText')) }) it("respects the 'flag' type when autocompleting attribute names", () => { @@ -262,7 +284,7 @@ describe('HTML autocompletions', () => { editor.setCursorBufferPosition([0, 8]) const completions = getCompletions() - expect(completions[0].snippet).toBe('autofocus') + expect(isValueInCompletions('autofocus', completions, 'snippet')) }) it('does not autocomplete attribute names in between an attribute name and value', () => { @@ -308,7 +330,7 @@ describe('HTML autocompletions', () => { editor.setCursorBufferPosition([0, 6]) const completions = getCompletions() - expect(completions[0].displayText).toBe('onafterprint') + expect(isValueInCompletions('onafterprint', completions, 'displayText')) }) it('does not provide a descriptionMoreURL if the attribute does not have a unique description', () => { @@ -317,9 +339,11 @@ describe('HTML autocompletions', () => { const completions = getCompletions() - expect(completions[0].displayText).toBe('onabort') - expect(completions[0].description).toBe('Global onabort attribute') - expect(completions[0].descriptionMoreURL).toBeNull() + const loc = getValueInCompletionsIndex('onabort', completions, 'displayText') + + expect(completions[loc].displayText).toBe('onabort') + expect(completions[loc].description).toBe('Global onabort attribute') + expect(completions[loc].descriptionMoreURL).toBeNull() }) it('autocompletes attribute values without a prefix', () => { @@ -332,7 +356,7 @@ describe('HTML autocompletions', () => { expect(completions[0].text).toBe('scroll') expect(completions[0].type).toBe('value') expect(completions[0].description.length).toBeGreaterThan(0) - expect(completions[0].descriptionMoreURL.endsWith('/HTML/Element/marquee#attr-behavior')).toBe(true) + expect(completions[0].descriptionMoreURL.endsWith('/HTML/Element/marquee#attributes')).toBe(true) expect(completions[1].text).toBe('slide') expect(completions[2].text).toBe('alternate') @@ -419,7 +443,7 @@ describe('HTML autocompletions', () => { expect(completions[0].text).toBe('button') expect(completions[0].type).toBe('value') expect(completions[0].description.length).toBeGreaterThan(0) - expect(completions[0].descriptionMoreURL.endsWith('/HTML/Element/button#attr-type')).toBe(true) + expect(completions[0].descriptionMoreURL.endsWith('/HTML/Element/button#attributes')).toBe(true) expect(completions[1].text).toBe('reset') expect(completions[2].text).toBe('submit') @@ -433,7 +457,7 @@ describe('HTML autocompletions', () => { expect(completions[0].text).toBe('alternate') expect(completions[0].type).toBe('value') expect(completions[0].description.length).toBeGreaterThan(0) - expect(completions[0].descriptionMoreURL.endsWith('/HTML/Element/link#attr-rel')).toBe(true) + expect(completions[0].descriptionMoreURL.endsWith('/HTML/Element/link#attributes')).toBe(true) }) it("provides 'true' and 'false' suggestions when autocompleting boolean attributes", () => { diff --git a/packages/autocomplete-html/update/update.js b/packages/autocomplete-html/update/update.js index 1a10e5048..d27c11fe8 100644 --- a/packages/autocomplete-html/update/update.js +++ b/packages/autocomplete-html/update/update.js @@ -94,9 +94,31 @@ async function update() { // Now to write our file fs.writeFileSync("./completions.json", JSON.stringify(completion, null, 2)); + // Now to check if our attributes contains all of the global values that we saw. + const missingGlobals = confirmGlobals(curatedAttributes, GLOBAL_ATTRIBUTES); + + if (missingGlobals.length > 0) { + console.log(missingGlobals); + console.log("Above are the globals found during updating that do not exist in Curated Attributes."); + console.log(`Total Missing Global Attributes: ${missingGlobals.length}`); + } + console.log("Updated all `autocomplete-html` completions."); } +function confirmGlobals(have, want) { + // have is an object, meanwhile want's is an array + let result = []; + + for (const w of want) { + if (typeof have[w] !== "object") { + result.push(w); + } + } + + return result; +} + function buildHtmlElementsArray(elements) { let elementArray = []; @@ -146,11 +168,15 @@ function resolveElementInterfaceAttrs(element, domProperties) { if (domProperties[inter]) { // First add all immediate props for (const prop in domProperties[inter].props) { - attrs.push(prop); - - // Then add any needed values to our global attributes - if (domProperties[inter].props[prop].global && !GLOBAL_ATTRIBUTES.includes(prop)) { - GLOBAL_ATTRIBUTES.push(prop); + if (!domProperties[inter].props[prop].global && inter !== "GlobalEventHandlers") { + // Seems that according to the previous completions.json + // We don't want to include any global values in our individual attributes + attrs.push(prop); + } else { + // We don't want global attributes on our actual completions. But do want them tracked + if (!GLOBAL_ATTRIBUTES.includes(prop)) { + GLOBAL_ATTRIBUTES.push(prop); + } } } // Now resolve any additional interfaces, by adding them to our existing array From be179fcf2202951dab56397a82baebf0ec6db83e Mon Sep 17 00:00:00 2001 From: confused-Techie <dev@lhbasics.com> Date: Sat, 25 Mar 2023 21:01:35 -0700 Subject: [PATCH 38/85] Add `translate` into `curated-attributes` --- packages/autocomplete-html/completions.json | 8 ++++++++ packages/autocomplete-html/update/curated-attributes.json | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/packages/autocomplete-html/completions.json b/packages/autocomplete-html/completions.json index 04f948be2..04d68edde 100644 --- a/packages/autocomplete-html/completions.json +++ b/packages/autocomplete-html/completions.json @@ -14325,6 +14325,14 @@ "_top" ] }, + "translate": { + "attribOption": [ + "no", + "yes" + ], + "global": "true", + "description": "Used to specify whether an element's translatable attribute values and its text node children should be translated." + }, "truespeed": { "type": "flag" }, diff --git a/packages/autocomplete-html/update/curated-attributes.json b/packages/autocomplete-html/update/curated-attributes.json index fbd2e5338..667fb2966 100644 --- a/packages/autocomplete-html/update/curated-attributes.json +++ b/packages/autocomplete-html/update/curated-attributes.json @@ -1114,6 +1114,14 @@ "_top" ] }, + "translate": { + "attribOption": [ + "no", + "yes" + ], + "global": "true", + "description": "Used to specify whether an element's translatable attribute values and its text node children should be translated." + }, "truespeed": { "type": "flag" }, From 4368ba1c232c0ace02a2c526cb2b43544c333bcc Mon Sep 17 00:00:00 2001 From: confused-Techie <dev@lhbasics.com> Date: Sat, 25 Mar 2023 21:07:39 -0700 Subject: [PATCH 39/85] Added `autocapitalize` --- packages/autocomplete-html/completions.json | 12 ++++++++++++ .../autocomplete-html/update/curated-attributes.json | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/packages/autocomplete-html/completions.json b/packages/autocomplete-html/completions.json index 04d68edde..196921cc2 100644 --- a/packages/autocomplete-html/completions.json +++ b/packages/autocomplete-html/completions.json @@ -13887,6 +13887,18 @@ "async": { "type": "flag" }, + "autocapitalize": { + "attribOption": [ + "off", + "none", + "on", + "sentences", + "words", + "characters" + ], + "global": "true", + "description": "Controls whether and how text input is automatically capitalized." + }, "autocomplete": { "attribOption": [ "additional-name", diff --git a/packages/autocomplete-html/update/curated-attributes.json b/packages/autocomplete-html/update/curated-attributes.json index 667fb2966..038e653e3 100644 --- a/packages/autocomplete-html/update/curated-attributes.json +++ b/packages/autocomplete-html/update/curated-attributes.json @@ -676,6 +676,18 @@ "async": { "type": "flag" }, + "autocapitalize": { + "attribOption": [ + "off", + "none", + "on", + "sentences", + "words", + "characters" + ], + "global": "true", + "description": "Controls whether and how text input is automatically capitalized." + }, "autocomplete": { "attribOption": [ "additional-name", From fa8acd4f77f9a0d70ff07206c58fede42c0114d4 Mon Sep 17 00:00:00 2001 From: confused-Techie <dev@lhbasics.com> Date: Sat, 25 Mar 2023 21:19:22 -0700 Subject: [PATCH 40/85] Add `nonce` and all global events --- packages/autocomplete-html/completions.json | 91 +++++++++++++++++++ .../update/curated-attributes.json | 91 +++++++++++++++++++ 2 files changed, 182 insertions(+) diff --git a/packages/autocomplete-html/completions.json b/packages/autocomplete-html/completions.json index 196921cc2..5438c729d 100644 --- a/packages/autocomplete-html/completions.json +++ b/packages/autocomplete-html/completions.json @@ -13502,9 +13502,27 @@ "onabort": { "global": "true" }, + "onauxclick": { + "global": "true" + }, + "onbeforematch": { + "global": "true" + }, "onblur": { "global": "true" }, + "oncancel": { + "global": "true" + }, + "onclose": { + "global": "true" + }, + "oncontextlost": { + "global": "true" + }, + "oncontextrestored": { + "global": "true" + }, "oncanplay": { "global": "true" }, @@ -13562,6 +13580,9 @@ "onfocus": { "global": "true" }, + "onformdata": { + "global": "true" + }, "oninput": { "global": "true" }, @@ -13607,6 +13628,12 @@ "onmousewheel": { "global": "true" }, + "onmouseenter": { + "global": "true" + }, + "onmouseleave": { + "global": "true" + }, "onpause": { "global": "true" }, @@ -13628,6 +13655,9 @@ "onreset": { "global": "true" }, + "onresize": { + "global": "true" + }, "onscroll": { "global": "true" }, @@ -13640,9 +13670,15 @@ "onselect": { "global": "true" }, + "onsecuritypolicyviolation": { + "global": "true" + }, "onshow": { "global": "true" }, + "onslotchange": { + "global": "true" + }, "onstalled": { "global": "true" }, @@ -13655,12 +13691,63 @@ "ontimeupdate": { "global": "true" }, + "ontoggle": { + "global": "true" + }, "onvolumechange": { "global": "true" }, "onwaiting": { "global": "true" }, + "onwebkitanimationend": { + "global": "true" + }, + "onwebkitanimationiteration": { + "global": "true" + }, + "onwebkitanimationstart": { + "global": "true" + }, + "onwebkittransitionend": { + "global": "true" + }, + "onwheel": { + "global": "true" + }, + "ongotpointercapture": { + "global": "true" + }, + "onlostpointercapture": { + "global": "true" + }, + "onpointerdown": { + "global": "true" + }, + "onpointermove": { + "global": "true" + }, + "onpointerrawupdate": { + "global": "true" + }, + "onpointerup": { + "global": "true" + }, + "onpointercancel": { + "global": "true" + }, + "onpointerover": { + "global": "true" + }, + "onpointerout": { + "global": "true" + }, + "onpointerenter": { + "global": "true" + }, + "onpointerleave": { + "global": "true" + }, "aria-autocomplete": { "attribOption": [ "inline", @@ -14443,6 +14530,10 @@ "soft" ] }, + "nonce": { + "global": "true", + "description": "A content attribute defining a cryptographic 'number used once'." + }, "xml:lang": {}, "xmlns": {} } diff --git a/packages/autocomplete-html/update/curated-attributes.json b/packages/autocomplete-html/update/curated-attributes.json index 038e653e3..cdc7499e3 100644 --- a/packages/autocomplete-html/update/curated-attributes.json +++ b/packages/autocomplete-html/update/curated-attributes.json @@ -291,9 +291,27 @@ "onabort": { "global": "true" }, + "onauxclick": { + "global": "true" + }, + "onbeforematch": { + "global": "true" + }, "onblur": { "global": "true" }, + "oncancel": { + "global": "true" + }, + "onclose": { + "global": "true" + }, + "oncontextlost": { + "global": "true" + }, + "oncontextrestored": { + "global": "true" + }, "oncanplay": { "global": "true" }, @@ -351,6 +369,9 @@ "onfocus": { "global": "true" }, + "onformdata": { + "global": "true" + }, "oninput": { "global": "true" }, @@ -396,6 +417,12 @@ "onmousewheel": { "global": "true" }, + "onmouseenter": { + "global": "true" + }, + "onmouseleave": { + "global": "true" + }, "onpause": { "global": "true" }, @@ -417,6 +444,9 @@ "onreset": { "global": "true" }, + "onresize": { + "global": "true" + }, "onscroll": { "global": "true" }, @@ -429,9 +459,15 @@ "onselect": { "global": "true" }, + "onsecuritypolicyviolation": { + "global": "true" + }, "onshow": { "global": "true" }, + "onslotchange": { + "global": "true" + }, "onstalled": { "global": "true" }, @@ -444,12 +480,63 @@ "ontimeupdate": { "global": "true" }, + "ontoggle": { + "global": "true" + }, "onvolumechange": { "global": "true" }, "onwaiting": { "global": "true" }, + "onwebkitanimationend": { + "global": "true" + }, + "onwebkitanimationiteration": { + "global": "true" + }, + "onwebkitanimationstart": { + "global": "true" + }, + "onwebkittransitionend": { + "global": "true" + }, + "onwheel": { + "global": "true" + }, + "ongotpointercapture": { + "global": "true" + }, + "onlostpointercapture": { + "global": "true" + }, + "onpointerdown": { + "global": "true" + }, + "onpointermove": { + "global": "true" + }, + "onpointerrawupdate": { + "global": "true" + }, + "onpointerup": { + "global": "true" + }, + "onpointercancel": { + "global": "true" + }, + "onpointerover": { + "global": "true" + }, + "onpointerout": { + "global": "true" + }, + "onpointerenter": { + "global": "true" + }, + "onpointerleave": { + "global": "true" + }, "aria-autocomplete": { "attribOption": [ "inline", @@ -1232,6 +1319,10 @@ "soft" ] }, + "nonce": { + "global": "true", + "description": "A content attribute defining a cryptographic 'number used once'." + }, "xml:lang": {}, "xmlns": {} } From 4334cd67016e771d7a46904dfb527704950ffa8b Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Sun, 26 Mar 2023 17:00:02 -0700 Subject: [PATCH 41/85] minimal working implementation(???) --- package.json | 2 + src/atom-environment.js | 7 ++ src/config-schema.js | 43 ++++++++ src/i18n.js | 221 ++++++++++++++++++++++++++++++++++++++++ yarn.lock | 54 ++++++++++ 5 files changed, 327 insertions(+) create mode 100644 src/i18n.js diff --git a/package.json b/package.json index 76f58b1a2..b464a38f3 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "dependencies": { "@atom/source-map-support": "^0.3.4", "@babel/core": "7.18.6", + "@formatjs/icu-messageformat-parser": "^2.3.0", "about": "file:packages/about", "archive-view": "file:packages/archive-view", "async": "3.2.4", @@ -77,6 +78,7 @@ "grim": "2.0.3", "image-view": "file:packages/image-view", "incompatible-packages": "file:packages/incompatible-packages", + "intl-messageformat": "^10.3.3", "jasmine-json": "~0.0", "jasmine-reporters": "1.1.0", "jasmine-tagged": "^1.1.4", diff --git a/src/atom-environment.js b/src/atom-environment.js index 1ebb7d493..f25020d8c 100644 --- a/src/atom-environment.js +++ b/src/atom-environment.js @@ -46,6 +46,7 @@ const TextEditorRegistry = require('./text-editor-registry'); const AutoUpdateManager = require('./auto-update-manager'); const StartupTime = require('./startup-time'); const getReleaseChannel = require('./get-release-channel'); +const I18n = require("./i18n"); const packagejson = require("../package.json"); const stat = util.promisify(fs.stat); @@ -201,6 +202,10 @@ class AtomEnvironment { applicationDelegate: this.applicationDelegate }); + this.i18n = new I18n({ + notificationManager: this.notifications + }); + if (this.keymaps.canLoadBundledKeymapsFromMemory()) { this.keymaps.loadBundledKeymaps(); } @@ -307,6 +312,8 @@ class AtomEnvironment { ); this.autoUpdater.initialize(); + this.i18n.initialize({ resourcePath }); + this.protocolHandlerInstaller.initialize(this.config, this.notifications); this.themes.loadBaseStylesheets(); diff --git a/src/config-schema.js b/src/config-schema.js index 10ebc690b..2a651379e 100644 --- a/src/config-schema.js +++ b/src/config-schema.js @@ -377,6 +377,49 @@ const configSchema = { description: 'Use sRGB color profile' } ] + }, + languageSettings: { + type: "object", + description: "These settings currently require a full restart of Pulsar to take effect.", + properties: { + primaryLanguage: { + type: "string", + order: 1, + default: "en", + enum: [ + // TODO, this should probably be moved to i18n.js, and list the files in the + // i18n dir to find available languages, and use Intl.DisplayNames() to + // get the localised name + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames/DisplayNames + { value: "en", description: "English" }, + { value: "en-US", description: "English (US)" }, + { value: "nl-NL", description: "Nederlands (Nederland)" } + ] + }, + fallbackLanguages: { + type: "array", + order: 2, + description: "List of fallback languages, if something can't be found in the primary language. Note; `en` is always the last fallback language, to ensure that things at least show up.", + default: [], + items: { + // Array enum is meh, if you pause for the briefest moment and you + // didn't stop at a valid enum value, the entry you just typed gets yeeted + type: "string" + } + }, + includeNonRegionalSpecificLanguagesAsFallback: { + type: "boolean", + order: 3, + description: "Whether or not to include Non-regional specific as fallback. For example, if a string is not available in `en-US`, but is available in `en`, it would use that as a fallback.", + default: false + }, + prioritiseUserSpecifiedLanguages: { + type: "boolean", + order: 4, + description: "If the setting `Include Non Regional Specific Languages As Fallback` is true, whether or not to prioritise languages that the user specified. For example, if you specify `en-GB` as your default language, `nl-NL` as a fallback, the hierarchy when this is true would be `en-GB, nl-NL, en, nl`, with fallbacks put at the end of the list; otherwise it would be `en-GB, en, nl-NL, nl`, with non-regional-specific languages placed right after the languages they fall back for.", + default: true + } + } } } }, diff --git a/src/i18n.js b/src/i18n.js new file mode 100644 index 000000000..3977d7356 --- /dev/null +++ b/src/i18n.js @@ -0,0 +1,221 @@ +const { CompositeDisposable } = require('atom'); +const { splitKeyPath } = require("key-path-helpers"); +const fs = require("fs"); +const path = require("path"); +const { default: IntlMessageFormat } = require("intl-messageformat"); + +class I18n { + /** + * @param {{ + * notificationManager: import("./notification-manager"); + * }} + */ + constructor({ notificationManager }) { + this.notificationManager = notificationManager; + this.initialized = false; + + /** + * { + * [language id]: { + * string objects without core ns + * } + * } + * + * @type {object} + */ + this.coreStrings = {}; + + /** + * { + * [ns (package id or core)]: { + * [language id]: { + * string objects without core ns + * } + * } + * } + * + * @type {object} + */ + this.registeredStrings = {}; + + this.cachedFormatters = {}; + + // TODO string parse cache (load on init, save on destroy too) + + // TODO atom.packages.onDidDeactivatePackage + + this.t = (key, opts) => { + const path = splitKeyPath(key); + + // primary + const str = this.tSingleLanguage(this.primaryLanguage, path, opts); + if (str) return str; + + // fallbacks + for (const lang of this.fallbackLanguages) { + const str = this.tSingleLanguage(lang, path, opts); + if (str) return str; + } + + // `en` fallback + return this.tSingleLanguage("en", path, opts); + } + } + + initialize({ resourcePath }) { + /** @type {string} */ + this.resourcePath = resourcePath; + this.updateConfigs(); + this.initialized = true; + } + + updateConfigs() { + /** @type {string} */ + this.primaryLanguage = atom.config.get("core.languageSettings.primaryLanguage"); + /** @type {Array<string>} */ + this.fallbackLanguages = atom.config.get("core.languageSettings.fallbackLanguages"); + } + + registerStrings(packageId, strings) { + walkStrings(strings, (path, string, isString) => { + let last = path.pop(); + + if (!this.registeredStrings[packageId]) this.registeredStrings[packageId] = {}; + let obj = travelDownObjectPath(this.registeredStrings[packageId], path); + + if (isString) { + obj[last] = string; + } else if (!obj[last]) { + obj[last] = {}; + } + }); + } + + getT(ns) { + if (!ns) return this.t; + return (key, formats) => this.t(`${ns}.${key}`, formats); + } + + /** + * attempts to translate for a single language, given a preparsed path array. + * @return undefined if the language or string cannot be found, + * and throws an error if the path isn't right. + */ + tSingleLanguage(lang, path, opts) { + const ns = path.unshift(); + if (!ns) throw new Error(`key path seems invalid: [${path.map(p => `"${p}"`).join(", ")}]`); + + const languageObj = this.getLanguageObj(ns, lang); + if (!languageObj) return undefined; + + const str = optionalTravelDownObjectPath(languageObj, path); + if (str) { + return this.format(str, opts); + } else { + return undefined; + } + } + + /** + * gets a language object from a specified namespace + * @return undefined if it can't be found + */ + getLanguageObj(ns, lang) { + return ns === "core" + ? this.getCoreLanguage(lang) + : this.getPkgLanguage(ns, lang); + } + + /** + * gets a language for `core` + * @return undefined if it can't be found + */ + getCoreLanguage(lang) { + const loaded = this.coreStrings[lang]; + if (loaded) return loaded; + + const fetched = this.fetchCoreLanguageFile(lang); + if (!fetched) return undefined; + + this.coreStrings[lang] = fetched; + return fetched; + } + + /** + * gets a language for a specific namespace + * @return undefined if it can't be found + */ + getPkgLanguage(ns, lang) { + const loaded = loaded = this.registeredStrings[ns]?.[lang]; + if (loaded) return loaded; + + const fetched = this.fetchPkgLanguageFile(ns, lang); + if (!fetched) return fetched; + + if (!this.registeredStrings[ns]) this.registeredStrings[ns] = {}; + this.registeredStrings[ns][lang] = fetched; + } + + /** + * fetches a core language from the disk + * @return undefined if it can't be found + */ + fetchCoreLanguageFile(lang) { + // TODO implement this + let filepath = path.join(this.resourcePath, "i18n", `${lang}.json`); + let contents = JSON.parse(fs.readFileSync(filepath)); + + return contents; + } + + /** + * fetches a language for a specific namespace + * @return undefined if it can't be found + */ + fetchPkgLanguageFile(ns, lang) { + // TODO implement this + throw new Error("not implemented yet"); + } + + /** + * formats a string with opts, + * and caches the message formatter for the provided path. + */ + format(path, str, locale, opts) { + // TODO caching + let formatter = new IntlMessageFormat(str, locale, null, { + // requiresOtherClause + }); + return formatter.format(opts); + } +} + +module.exports = I18n; + +/** + * @param {() => void} cb + */ +function walkStrings(strings, cb, accum = []) { + Object.entries(strings).forEach(([k, v]) => { + if (typeof v === "string") cb([...accum, k], v, true); + else if (typeof v === "object") { + cb([...accum, k], null, false); + walkStrings(v, cb, [...accum, k]); + } + }); +} + +function travelDownObjectPath(obj, path) { + for (const pathFragment in path) { + obj = obj[pathFragment]; + } + return obj; +} + +function optionalTravelDownObjectPath(obj, path) { + for (const pathFragment in path) { + obj = obj[pathFragment]; + if (!obj) return undefined; + } + return obj; +} diff --git a/yarn.lock b/yarn.lock index 03b68f672..b0628dd06 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1438,6 +1438,45 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@formatjs/ecma402-abstract@1.14.3": + version "1.14.3" + resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.14.3.tgz#6428f243538a11126180d121ce8d4b2f17465738" + integrity sha512-SlsbRC/RX+/zg4AApWIFNDdkLtFbkq3LNoZWXZCE/nHVKqoIJyaoQyge/I0Y38vLxowUn9KTtXgusLD91+orbg== + dependencies: + "@formatjs/intl-localematcher" "0.2.32" + tslib "^2.4.0" + +"@formatjs/fast-memoize@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-2.0.1.tgz#f15aaa73caad5562899c69bdcad8db82adcd3b0b" + integrity sha512-M2GgV+qJn5WJQAYewz7q2Cdl6fobQa69S1AzSM2y0P68ZDbK5cWrJIcPCO395Of1ksftGZoOt4LYCO/j9BKBSA== + dependencies: + tslib "^2.4.0" + +"@formatjs/icu-messageformat-parser@2.3.0", "@formatjs/icu-messageformat-parser@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.3.0.tgz#8e8fd577c3e39454ef14bba4963f2e1d5f2cc46c" + integrity sha512-xqtlqYAbfJDF4b6e4O828LBNOWXrFcuYadqAbYORlDRwhyJ2bH+xpUBPldZbzRGUN2mxlZ4Ykhm7jvERtmI8NQ== + dependencies: + "@formatjs/ecma402-abstract" "1.14.3" + "@formatjs/icu-skeleton-parser" "1.3.18" + tslib "^2.4.0" + +"@formatjs/icu-skeleton-parser@1.3.18": + version "1.3.18" + resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.18.tgz#7aed3d60e718c8ad6b0e64820be44daa1e29eeeb" + integrity sha512-ND1ZkZfmLPcHjAH1sVpkpQxA+QYfOX3py3SjKWMUVGDow18gZ0WPqz3F+pJLYQMpS2LnnQ5zYR2jPVYTbRwMpg== + dependencies: + "@formatjs/ecma402-abstract" "1.14.3" + tslib "^2.4.0" + +"@formatjs/intl-localematcher@0.2.32": + version "0.2.32" + resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.2.32.tgz#00d4d307cd7d514b298e15a11a369b86c8933ec1" + integrity sha512-k/MEBstff4sttohyEpXxCmC3MqbUn9VvHGlZ8fauLzkbwXmVrEeyzS+4uhrvAk9DWU9/7otYWxyDox4nT/KVLQ== + dependencies: + tslib "^2.4.0" + "@gar/promisify@^1.0.1": version "1.1.3" resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" @@ -5534,6 +5573,16 @@ internal-slot@^1.0.3: has "^1.0.3" side-channel "^1.0.4" +intl-messageformat@^10.3.3: + version "10.3.3" + resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.3.3.tgz#576798d31c9f8d90f9beadaa5a3878b8d30177a2" + integrity sha512-un/f07/g2e/3Q8e1ghDKET+el22Bi49M7O/rHxd597R+oLpPOMykSv5s51cABVfu3FZW+fea4hrzf2MHu1W4hw== + dependencies: + "@formatjs/ecma402-abstract" "1.14.3" + "@formatjs/fast-memoize" "2.0.1" + "@formatjs/icu-messageformat-parser" "2.3.0" + tslib "^2.4.0" + invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" @@ -9517,6 +9566,11 @@ truncate-utf8-bytes@^1.0.0: dependencies: utf8-byte-length "^1.0.1" +tslib@^2.4.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" From a50717775cfa1dab6567aeeb14b1e489e3645e8c Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Sun, 26 Mar 2023 17:24:15 -0700 Subject: [PATCH 42/85] fix some silly bugs --- src/i18n.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/i18n.js b/src/i18n.js index 3977d7356..77c295877 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -102,7 +102,9 @@ class I18n { * and throws an error if the path isn't right. */ tSingleLanguage(lang, path, opts) { - const ns = path.unshift(); + path = [...path]; + + const ns = path.shift(); if (!ns) throw new Error(`key path seems invalid: [${path.map(p => `"${p}"`).join(", ")}]`); const languageObj = this.getLanguageObj(ns, lang); @@ -110,7 +112,7 @@ class I18n { const str = optionalTravelDownObjectPath(languageObj, path); if (str) { - return this.format(str, opts); + return this.format(path, str, lang, opts); } else { return undefined; } @@ -146,7 +148,7 @@ class I18n { * @return undefined if it can't be found */ getPkgLanguage(ns, lang) { - const loaded = loaded = this.registeredStrings[ns]?.[lang]; + const loaded = this.registeredStrings[ns]?.[lang]; if (loaded) return loaded; const fetched = this.fetchPkgLanguageFile(ns, lang); @@ -206,14 +208,14 @@ function walkStrings(strings, cb, accum = []) { } function travelDownObjectPath(obj, path) { - for (const pathFragment in path) { + for (const pathFragment of path) { obj = obj[pathFragment]; } return obj; } function optionalTravelDownObjectPath(obj, path) { - for (const pathFragment in path) { + for (const pathFragment of path) { obj = obj[pathFragment]; if (!obj) return undefined; } From e4a96c1857475d4811b2a8bced690fb307a5e7a9 Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Sun, 26 Mar 2023 18:20:04 -0700 Subject: [PATCH 43/85] autogenerate schema based on translation files available (in core dir) --- src/atom-environment.js | 3 ++- src/i18n.js | 19 ++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/atom-environment.js b/src/atom-environment.js index f25020d8c..fa82d36e4 100644 --- a/src/atom-environment.js +++ b/src/atom-environment.js @@ -203,7 +203,8 @@ class AtomEnvironment { }); this.i18n = new I18n({ - notificationManager: this.notifications + notificationManager: this.notifications, + config: this.config }); if (this.keymaps.canLoadBundledKeymapsFromMemory()) { diff --git a/src/i18n.js b/src/i18n.js index 77c295877..32e117af9 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -10,8 +10,9 @@ class I18n { * notificationManager: import("./notification-manager"); * }} */ - constructor({ notificationManager }) { + constructor({ notificationManager, config }) { this.notificationManager = notificationManager; + this.config = config; this.initialized = false; /** @@ -65,6 +66,22 @@ class I18n { initialize({ resourcePath }) { /** @type {string} */ this.resourcePath = resourcePath; + + const extlen = ".json".length; + const dirpath = path.join(resourcePath, "i18n"); + const dircontents = fs.readdirSync(dirpath); + + this.config.setSchema("core.languageSettings.primaryLanguage", { + type: "string", + order: 1, + default: "en", + enum: dircontents.map(p => p.substring(0, p.length - extlen)) + .map(p => ({ + value: p, + description: new Intl.DisplayNames([p], { type: "language" }).of(p) + })) + }); + this.updateConfigs(); this.initialized = true; } From bd284b3fabe2d3e335bbfb9adc99fbfe88bbedc9 Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Sun, 26 Mar 2023 18:49:07 -0700 Subject: [PATCH 44/85] include i18n dir in the built app --- script/electron-builder.js | 1 + 1 file changed, 1 insertion(+) diff --git a/script/electron-builder.js b/script/electron-builder.js index 0c3d194fb..16a27968c 100644 --- a/script/electron-builder.js +++ b/script/electron-builder.js @@ -55,6 +55,7 @@ let options = { "package.json", "dot-atom/**/*", "exports/**/*", + "i18n/**/*", "resources/**/*", "src/**/*", "static/**/*", From 3fbf7d001705342d235cbe7a99232e7fe65054d5 Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Sun, 26 Mar 2023 19:52:01 -0700 Subject: [PATCH 45/85] add an en file so the setting shows up properly at least --- i18n/en.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 i18n/en.json diff --git a/i18n/en.json b/i18n/en.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/i18n/en.json @@ -0,0 +1 @@ +{} From a397b84b9c50a193f126658b41e2d63920533392 Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Sun, 26 Mar 2023 20:05:24 -0700 Subject: [PATCH 46/85] few tiny changes --- src/i18n.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n.js b/src/i18n.js index 32e117af9..dc2455523 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -28,7 +28,7 @@ class I18n { /** * { - * [ns (package id or core)]: { + * [ns (package id)]: { * [language id]: { * string objects without core ns * } @@ -78,7 +78,7 @@ class I18n { enum: dircontents.map(p => p.substring(0, p.length - extlen)) .map(p => ({ value: p, - description: new Intl.DisplayNames([p], { type: "language" }).of(p) + description: `${new Intl.DisplayNames([p], { type: "language" }).of(p)} (${p})` })) }); From 69722546c8cce3af199365d44b7d4c2d73f82db2 Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Sun, 26 Mar 2023 20:07:03 -0700 Subject: [PATCH 47/85] filter out non `.json` files from the i18n dir --- src/i18n.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/i18n.js b/src/i18n.js index dc2455523..c4b0c67ef 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -67,7 +67,8 @@ class I18n { /** @type {string} */ this.resourcePath = resourcePath; - const extlen = ".json".length; + const ext = ".json"; + const extlen = extlen.length; const dirpath = path.join(resourcePath, "i18n"); const dircontents = fs.readdirSync(dirpath); @@ -75,7 +76,8 @@ class I18n { type: "string", order: 1, default: "en", - enum: dircontents.map(p => p.substring(0, p.length - extlen)) + enum: dircontents.filter(p => p.endsWith(ext)) + .map(p => p.substring(0, p.length - extlen)) .map(p => ({ value: p, description: `${new Intl.DisplayNames([p], { type: "language" }).of(p)} (${p})` From f1a2104a530491db264736d774de0df23e0b4f41 Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Sun, 26 Mar 2023 23:08:44 -0700 Subject: [PATCH 48/85] implement package strings fetching --- src/atom-environment.js | 8 +++++++- src/i18n.js | 40 +++++++++++++++++++++++++++++++--------- 2 files changed, 38 insertions(+), 10 deletions(-) diff --git a/src/atom-environment.js b/src/atom-environment.js index fa82d36e4..ab2d1e9e1 100644 --- a/src/atom-environment.js +++ b/src/atom-environment.js @@ -313,7 +313,13 @@ class AtomEnvironment { ); this.autoUpdater.initialize(); - this.i18n.initialize({ resourcePath }); + this.i18n.initialize({ + configDirPath: this.configDirPath, + devMode, + packages: this.packages, + resourcePath, + safeMode + }); this.protocolHandlerInstaller.initialize(this.config, this.notifications); diff --git a/src/i18n.js b/src/i18n.js index c4b0c67ef..f1d590082 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -1,6 +1,6 @@ const { CompositeDisposable } = require('atom'); const { splitKeyPath } = require("key-path-helpers"); -const fs = require("fs"); +const fs = require("fs-plus"); const path = require("path"); const { default: IntlMessageFormat } = require("intl-messageformat"); @@ -14,6 +14,8 @@ class I18n { this.notificationManager = notificationManager; this.config = config; this.initialized = false; + /** @type {Array<string>} */ + this.packageDirPaths = []; /** * { @@ -63,12 +65,25 @@ class I18n { } } - initialize({ resourcePath }) { + initialize({ configDirPath, devMode, packages, resourcePath, safeMode }) { + /** @type {string} */ + this.configDirPath = configDirPath; + this.packages = packages; /** @type {string} */ this.resourcePath = resourcePath; + // stolen from PackageManager::initialize + this.devMode = devMode; + if (configDirPath != null && !safeMode) { + if (devMode) { + this.packageDirPaths.push(path.join(configDirPath, 'dev', 'packages')); + this.packageDirPaths.push(path.join(resourcePath, 'packages')); + } + this.packageDirPaths.push(path.join(configDirPath, 'packages')); + } + const ext = ".json"; - const extlen = extlen.length; + const extlen = ext.length; const dirpath = path.join(resourcePath, "i18n"); const dircontents = fs.readdirSync(dirpath); @@ -182,7 +197,6 @@ class I18n { * @return undefined if it can't be found */ fetchCoreLanguageFile(lang) { - // TODO implement this let filepath = path.join(this.resourcePath, "i18n", `${lang}.json`); let contents = JSON.parse(fs.readFileSync(filepath)); @@ -194,8 +208,19 @@ class I18n { * @return undefined if it can't be found */ fetchPkgLanguageFile(ns, lang) { - // TODO implement this - throw new Error("not implemented yet"); + // TODO this could probably be optimised + let packages = this.packages.getAvailablePackages(); + // let package = packages.find(p => p.name === ns); + let foundPackage = packages.find(p => p.name === ns); + + const i18nDir = path.join(foundPackage.path, "i18n"); + const langfile = path.join(i18nDir, `${lang}.json`); + + if (!(fs.isDirectorySync(i18nDir) && fs.existsSync(langfile))) return; + + let contents = JSON.parse(fs.readFileSync(langfile)); + + return contents; } /** @@ -213,9 +238,6 @@ class I18n { module.exports = I18n; -/** - * @param {() => void} cb - */ function walkStrings(strings, cb, accum = []) { Object.entries(strings).forEach(([k, v]) => { if (typeof v === "string") cb([...accum, k], v, true); From 83127b43521f415a0ab93be63edd6560d2bc4306 Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Sun, 26 Mar 2023 23:21:35 -0700 Subject: [PATCH 49/85] OwO it begins --- packages/welcome/i18n/en.json | 3 +++ packages/welcome/lib/main.js | 2 ++ packages/welcome/lib/welcome-view.js | 3 ++- 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 packages/welcome/i18n/en.json diff --git a/packages/welcome/i18n/en.json b/packages/welcome/i18n/en.json new file mode 100644 index 000000000..40042e201 --- /dev/null +++ b/packages/welcome/i18n/en.json @@ -0,0 +1,3 @@ +{ + "title": "Welcome" +} diff --git a/packages/welcome/lib/main.js b/packages/welcome/lib/main.js index 6778d5e83..adab0e5c9 100644 --- a/packages/welcome/lib/main.js +++ b/packages/welcome/lib/main.js @@ -2,4 +2,6 @@ import WelcomePackage from './welcome-package'; +export const t = atom.i18n.getT("welcome"); + export default new WelcomePackage(); diff --git a/packages/welcome/lib/welcome-view.js b/packages/welcome/lib/welcome-view.js index b5c143fed..0ba989590 100644 --- a/packages/welcome/lib/welcome-view.js +++ b/packages/welcome/lib/welcome-view.js @@ -3,6 +3,7 @@ import etch from 'etch'; import path from 'path'; +import { t } from "./main"; export default class WelcomeView { constructor(props) { @@ -126,7 +127,7 @@ export default class WelcomeView { } getTitle() { - return 'Welcome'; + return t("title"); } isEqual(other) { From 1fa16d2b5b01595f9238c113220ed7192f419cb1 Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Sun, 26 Mar 2023 23:32:00 -0700 Subject: [PATCH 50/85] remove unused code remnants of before i discovered `PackageManager::getAvailablePackages` --- src/atom-environment.js | 5 +---- src/i18n.js | 16 +--------------- 2 files changed, 2 insertions(+), 19 deletions(-) diff --git a/src/atom-environment.js b/src/atom-environment.js index ab2d1e9e1..0b6ac25a6 100644 --- a/src/atom-environment.js +++ b/src/atom-environment.js @@ -314,11 +314,8 @@ class AtomEnvironment { this.autoUpdater.initialize(); this.i18n.initialize({ - configDirPath: this.configDirPath, - devMode, packages: this.packages, - resourcePath, - safeMode + resourcePath }); this.protocolHandlerInstaller.initialize(this.config, this.notifications); diff --git a/src/i18n.js b/src/i18n.js index f1d590082..08281b0a5 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -14,8 +14,6 @@ class I18n { this.notificationManager = notificationManager; this.config = config; this.initialized = false; - /** @type {Array<string>} */ - this.packageDirPaths = []; /** * { @@ -65,23 +63,11 @@ class I18n { } } - initialize({ configDirPath, devMode, packages, resourcePath, safeMode }) { - /** @type {string} */ - this.configDirPath = configDirPath; + initialize({ packages, resourcePath }) { this.packages = packages; /** @type {string} */ this.resourcePath = resourcePath; - // stolen from PackageManager::initialize - this.devMode = devMode; - if (configDirPath != null && !safeMode) { - if (devMode) { - this.packageDirPaths.push(path.join(configDirPath, 'dev', 'packages')); - this.packageDirPaths.push(path.join(resourcePath, 'packages')); - } - this.packageDirPaths.push(path.join(configDirPath, 'packages')); - } - const ext = ".json"; const extlen = ext.length; const dirpath = path.join(resourcePath, "i18n"); From c9d51b980c5a781d2a8cf67c29d58d3d503433e9 Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Mon, 27 Mar 2023 01:08:18 -0700 Subject: [PATCH 51/85] remove unncessary seperate core strings property --- src/i18n.js | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/src/i18n.js b/src/i18n.js index 08281b0a5..e0818010c 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -15,17 +15,6 @@ class I18n { this.config = config; this.initialized = false; - /** - * { - * [language id]: { - * string objects without core ns - * } - * } - * - * @type {object} - */ - this.coreStrings = {}; - /** * { * [ns (package id)]: { @@ -37,7 +26,7 @@ class I18n { * * @type {object} */ - this.registeredStrings = {}; + this.registeredStrings = { core: {} }; this.cachedFormatters = {}; @@ -153,13 +142,13 @@ class I18n { * @return undefined if it can't be found */ getCoreLanguage(lang) { - const loaded = this.coreStrings[lang]; + const loaded = this.registeredStrings.core[lang] if (loaded) return loaded; const fetched = this.fetchCoreLanguageFile(lang); if (!fetched) return undefined; - this.coreStrings[lang] = fetched; + this.registeredStrings.core[lang] = fetched; return fetched; } From 06336e40ec44ddc183ce6f0a303838a5ecc271fc Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Mon, 27 Mar 2023 01:10:56 -0700 Subject: [PATCH 52/85] oops --- src/i18n.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n.js b/src/i18n.js index e0818010c..182ead720 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -80,9 +80,9 @@ class I18n { updateConfigs() { /** @type {string} */ - this.primaryLanguage = atom.config.get("core.languageSettings.primaryLanguage"); + this.primaryLanguage = this.config.get("core.languageSettings.primaryLanguage"); /** @type {Array<string>} */ - this.fallbackLanguages = atom.config.get("core.languageSettings.fallbackLanguages"); + this.fallbackLanguages = this.config.get("core.languageSettings.fallbackLanguages"); } registerStrings(packageId, strings) { From 04bb71f8e4ac6fc9ddf9098983b57f003217cce3 Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Mon, 27 Mar 2023 15:10:50 -0700 Subject: [PATCH 53/85] this doesn't need to be an array --- src/i18n.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n.js b/src/i18n.js index 182ead720..04581fe5b 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -70,7 +70,7 @@ class I18n { .map(p => p.substring(0, p.length - extlen)) .map(p => ({ value: p, - description: `${new Intl.DisplayNames([p], { type: "language" }).of(p)} (${p})` + description: `${new Intl.DisplayNames(p, { type: "language" }).of(p)} (${p})` })) }); From cdcfc90100d7e7cbfbf3e47e2da7d6e077cbfced Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Tue, 28 Mar 2023 17:53:09 -0700 Subject: [PATCH 54/85] add crowdin.yml file? --- crowdin.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 crowdin.yml diff --git a/crowdin.yml b/crowdin.yml new file mode 100644 index 000000000..f3e0238a1 --- /dev/null +++ b/crowdin.yml @@ -0,0 +1,6 @@ +preserve_hierarchy: true +files: +- source: /i18n/en.json + translation: /i18n/%locale%.json +- source: /packages/**/i18n/en.json + translation: /packages/**/i18n/%locale%.json From 1f60bdac40bd0ffb600358f3a441dd978732a217 Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Tue, 28 Mar 2023 20:42:33 -0700 Subject: [PATCH 55/85] change crowdin PR message to skip the ci --- crowdin.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/crowdin.yml b/crowdin.yml index f3e0238a1..32614a491 100644 --- a/crowdin.yml +++ b/crowdin.yml @@ -1,4 +1,7 @@ preserve_hierarchy: true +commit_message: "[skip ci] Translations from Crowdin" +append_commit_message: false + files: - source: /i18n/en.json translation: /i18n/%locale%.json From 0e8705f8ca181727e9e0bcd6880e39e7e5ceeac3 Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Tue, 28 Mar 2023 22:45:28 -0700 Subject: [PATCH 56/85] add a key fallback --- src/i18n.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/i18n.js b/src/i18n.js index 04581fe5b..df002c6c1 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -48,7 +48,18 @@ class I18n { } // `en` fallback - return this.tSingleLanguage("en", path, opts); + const en_fallback = this.tSingleLanguage("en", path, opts); + if (en_fallback) return en_fallback; + + // key fallback + let string_opts = opts + ? `: { ${ + Object.entries(opts) + .map(o => `"${o[0]}": "${o[1]}"`) + .join(", ") + } }` + : ""; + return `${key}${string_opts}`; } } From 737b7da597ba58d7e64174a2737defea7097a52c Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Wed, 29 Mar 2023 03:34:40 -0700 Subject: [PATCH 57/85] added ability to localise menus In addition to regular `label` key in a menu item, you can now have a `localisedLabel` key. This can either point to a key, or can point to an object, with properties `key` and `opts` for values to interpolate. --- src/atom-environment.js | 36 +++++++++++++++++++----------------- src/menu-helpers.js | 23 ++++++++++++++++------- src/menu-manager.js | 17 ++++++++--------- 3 files changed, 43 insertions(+), 33 deletions(-) diff --git a/src/atom-environment.js b/src/atom-environment.js index 0b6ac25a6..4fa8f8a7b 100644 --- a/src/atom-environment.js +++ b/src/atom-environment.js @@ -148,10 +148,16 @@ class AtomEnvironment { viewRegistry: this.views }); + this.i18n = new I18n({ + notificationManager: this.notifications, + config: this.config + }); + /** @type {MenuManager} */ this.menu = new MenuManager({ + i18n: this.i18n, keymapManager: this.keymaps, - packageManager: this.packages + packageManager: this.packages, }); /** @type {ContextMenuManager} */ @@ -202,11 +208,6 @@ class AtomEnvironment { applicationDelegate: this.applicationDelegate }); - this.i18n = new I18n({ - notificationManager: this.notifications, - config: this.config - }); - if (this.keymaps.canLoadBundledKeymapsFromMemory()) { this.keymaps.loadBundledKeymaps(); } @@ -280,6 +281,18 @@ class AtomEnvironment { this.project.replace(projectSpecification); } + this.packages.initialize({ + devMode, + configDirPath: this.configDirPath, + resourcePath, + safeMode + }); + + this.i18n.initialize({ + packages: this.packages, + resourcePath + }); + this.menu.initialize({ resourcePath }); this.contextMenu.initialize({ resourcePath, devMode }); @@ -293,12 +306,6 @@ class AtomEnvironment { this.commands.attach(this.window); this.styles.initialize({ configDirPath: this.configDirPath }); - this.packages.initialize({ - devMode, - configDirPath: this.configDirPath, - resourcePath, - safeMode - }); this.themes.initialize({ configDirPath: this.configDirPath, resourcePath, @@ -313,11 +320,6 @@ class AtomEnvironment { ); this.autoUpdater.initialize(); - this.i18n.initialize({ - packages: this.packages, - resourcePath - }); - this.protocolHandlerInstaller.initialize(this.config, this.notifications); this.themes.loadBaseStylesheets(); diff --git a/src/menu-helpers.js b/src/menu-helpers.js index b413d558f..1df8d817d 100644 --- a/src/menu-helpers.js +++ b/src/menu-helpers.js @@ -12,8 +12,8 @@ function addItemToMenu(item, menu) { } } -function merge(menu, item, itemSpecificity = Infinity) { - item = cloneMenuItem(item); +function merge(menu, item, t, itemSpecificity = Infinity) { + item = cloneAndLocaliseMenuItem(item, t); ItemSpecificities.set(item, itemSpecificity); const matchingItemIndex = findMatchingItemIndex(menu, item); @@ -25,7 +25,7 @@ function merge(menu, item, itemSpecificity = Infinity) { const matchingItem = menu[matchingItemIndex]; if (item.submenu != null) { for (let submenuItem of item.submenu) { - merge(matchingItem.submenu, submenuItem, itemSpecificity); + merge(matchingItem.submenu, submenuItem, t, itemSpecificity); } } else if ( itemSpecificity && @@ -35,8 +35,9 @@ function merge(menu, item, itemSpecificity = Infinity) { } } + function unmerge(menu, item) { - item = cloneMenuItem(item); + item = cloneAndLocaliseMenuItem(item, t); const matchingItemIndex = findMatchingItemIndex(menu, item); if (matchingItemIndex === -1) { return; @@ -74,11 +75,12 @@ function normalizeLabel(label) { return process.platform === 'darwin' ? label : label.replace(/&/g, ''); } -function cloneMenuItem(item) { +function cloneAndLocaliseMenuItem(item, t) { item = _.pick( item, 'type', 'label', + 'localisedLabel', 'id', 'enabled', 'visible', @@ -95,8 +97,15 @@ function cloneMenuItem(item) { if (item.id === null || item.id === undefined) { item.id = normalizeLabel(item.label); } + if (item.localisedLabel) { + if (typeof item.localisedLabel === "string") { + item.label = t(item.localisedLabel) ?? item.label; + } else { + item.label = t(item.localisedLabel.key, item.localisedLabel.opts) ?? item.label; + } + } if (item.submenu != null) { - item.submenu = item.submenu.map(submenuItem => cloneMenuItem(submenuItem)); + item.submenu = item.submenu.map(submenuItem => cloneAndLocaliseMenuItem(submenuItem, t)); } return item; } @@ -133,6 +142,6 @@ module.exports = { merge, unmerge, normalizeLabel, - cloneMenuItem, + cloneAndLocaliseMenuItem, acceleratorForKeystroke }; diff --git a/src/menu-manager.js b/src/menu-manager.js index c67e33897..3f855d752 100644 --- a/src/menu-manager.js +++ b/src/menu-manager.js @@ -60,8 +60,8 @@ if (buildMetadata) { // // See {::add} for more info about adding menu's directly. module.exports = MenuManager = class MenuManager { - constructor({resourcePath, keymapManager, packageManager}) { - this.resourcePath = resourcePath; + constructor({i18n, keymapManager, packageManager}) { + this.i18n = i18n; this.keymapManager = keymapManager; this.packageManager = packageManager; this.initialized = false; @@ -101,12 +101,11 @@ module.exports = MenuManager = class MenuManager { // added menu items. add(items) { items = _.deepClone(items); - for (let i = 0; i < items.length; i++) { - const item = items[i]; - if (item.label == null) { + for (const item of items) { + if (item.label == null && item.localisedLabel == null) { continue; // TODO: Should we emit a warning here? } - this.merge(this.template, item); + this.merge(this.template, item, this.i18n.t); } this.update(); return new Disposable(() => this.remove(items)); @@ -219,8 +218,8 @@ module.exports = MenuManager = class MenuManager { // Merges an item in a submenu aware way such that new items are always // appended to the bottom of existing menus where possible. - merge(menu, item) { - MenuHelpers.merge(menu, item); + merge(menu, item, t) { + MenuHelpers.merge(menu, item, t); } unmerge(menu, item) { @@ -242,6 +241,7 @@ module.exports = MenuManager = class MenuManager { } sortPackagesMenu() { + // TODO this needs to be fixed to support localised labels const packagesMenu = _.find(this.template, ({id}) => MenuHelpers.normalizeLabel(id) === 'Packages'); if (!(packagesMenu && packagesMenu.submenu != null)) { return; @@ -255,5 +255,4 @@ module.exports = MenuManager = class MenuManager { }); return this.update(); } - }; From 43b943ebd5f611335141070c956c40ba81d46bca Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Wed, 29 Mar 2023 15:32:23 -0700 Subject: [PATCH 58/85] fix version replacer, use this.i18n.t later, --- src/main-process/application-menu.js | 5 +++-- src/menu-helpers.js | 2 +- src/menu-manager.js | 8 ++++---- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main-process/application-menu.js b/src/main-process/application-menu.js index 19afc6779..1225e97fb 100644 --- a/src/main-process/application-menu.js +++ b/src/main-process/application-menu.js @@ -106,9 +106,10 @@ module.exports = class ApplicationMenu { // Replaces VERSION with the current version. substituteVersion(template) { let item = this.flattenMenuTemplate(template).find( - ({ label }) => label === 'VERSION' + ({ label }) => label.includes("VERSION") ); - if (item) item.label = `Version ${this.version}`; + // TODO maybe this can be done with the i18n API instead of custom replace? + if (item) item.label = item.label.replace("VERSION", this.version); } // Sets the proper visible state the update menu items diff --git a/src/menu-helpers.js b/src/menu-helpers.js index 1df8d817d..873092475 100644 --- a/src/menu-helpers.js +++ b/src/menu-helpers.js @@ -36,7 +36,7 @@ function merge(menu, item, t, itemSpecificity = Infinity) { } -function unmerge(menu, item) { +function unmerge(menu, item, t) { item = cloneAndLocaliseMenuItem(item, t); const matchingItemIndex = findMatchingItemIndex(menu, item); if (matchingItemIndex === -1) { diff --git a/src/menu-manager.js b/src/menu-manager.js index 3f855d752..89a34d820 100644 --- a/src/menu-manager.js +++ b/src/menu-manager.js @@ -105,7 +105,7 @@ module.exports = MenuManager = class MenuManager { if (item.label == null && item.localisedLabel == null) { continue; // TODO: Should we emit a warning here? } - this.merge(this.template, item, this.i18n.t); + this.merge(this.template, item); } this.update(); return new Disposable(() => this.remove(items)); @@ -218,12 +218,12 @@ module.exports = MenuManager = class MenuManager { // Merges an item in a submenu aware way such that new items are always // appended to the bottom of existing menus where possible. - merge(menu, item, t) { - MenuHelpers.merge(menu, item, t); + merge(menu, item) { + MenuHelpers.merge(menu, item, this.i18n.t); } unmerge(menu, item) { - MenuHelpers.unmerge(menu, item); + MenuHelpers.unmerge(menu, item, this.i18n.t); } sendToBrowserProcess(template, keystrokesByCommand) { From 5a60fc7637c15322a1005cb425ec95200169df22 Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Wed, 29 Mar 2023 16:28:39 -0700 Subject: [PATCH 59/85] localise menu item labels before checking item ID --- src/menu-helpers.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/menu-helpers.js b/src/menu-helpers.js index 873092475..c956f9db2 100644 --- a/src/menu-helpers.js +++ b/src/menu-helpers.js @@ -94,9 +94,6 @@ function cloneAndLocaliseMenuItem(item, t) { 'beforeGroupContaining', 'afterGroupContaining' ); - if (item.id === null || item.id === undefined) { - item.id = normalizeLabel(item.label); - } if (item.localisedLabel) { if (typeof item.localisedLabel === "string") { item.label = t(item.localisedLabel) ?? item.label; @@ -104,6 +101,9 @@ function cloneAndLocaliseMenuItem(item, t) { item.label = t(item.localisedLabel.key, item.localisedLabel.opts) ?? item.label; } } + if (item.id === null || item.id === undefined) { + item.id = normalizeLabel(item.label); + } if (item.submenu != null) { item.submenu = item.submenu.map(submenuItem => cloneAndLocaliseMenuItem(submenuItem, t)); } From 71b428b824fdf0a972308290074ebfc0ee768610 Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Wed, 29 Mar 2023 17:29:19 -0700 Subject: [PATCH 60/85] extracted strings out of darwin menu --- i18n/en.json | 166 ++++++++++++++++- menus/darwin.cson | 256 +++++++++++++-------------- src/main-process/application-menu.js | 2 +- 3 files changed, 294 insertions(+), 130 deletions(-) diff --git a/i18n/en.json b/i18n/en.json index 0967ef424..c370c96ca 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -1 +1,165 @@ -{} +{ + "menu": { + "pulsar": { + "about": "About Pulsar", + "view-license": "View License", + "version": "Version VERSION", + "restart-and-install-update": "Restart and Install Update", + "check-for-update": "Check for Update", + "checking-for-update": "Checking for Update", + "downloading-update": "Downloading Update", + "preferences": "Preferences", + "config": "Config", + "init-script": "Init Script", + "keymap": "Keymap", + "snippets": "Snippets", + "stylesheet": "Stylesheet", + "install-shell-commands": "Install Shell Commands", + "quit": "Quit Pulsar" + }, + "macos": { + "services": "Services", + "hide-self": "Hide Pulsar", + "hide-others": "Hide Others", + "show-all": "Show All" + }, + "file": { + "self": "File", + "new-window": "New Window", + "new-file": "New File", + "open": "Open...", + "add-project-folder": "Add Project Folder", + "project-history": { + "reopen-project": "Reopen Project", + "clear": "Clear Project History" + }, + "save": "Save", + "save-as": "Save As...", + "save-all": "Save All", + "close-tab": "Close Tab", + "close-pane": "Close Pane", + "close-window": "Close Window" + }, + "edit": { + "self": "Edit", + "undo": "Undo", + "redo": "Redo", + "cut": "Cut", + "copy": "Copy", + "copy-path": "Copy Path", + "paste": "Paste", + "paste-without-reformatting": "Paste Without Reformatting", + "select-all": "Select All", + "toggle-comments": "Toggle Comments", + "lines": { + "self": "Lines", + "indent": "Indent", + "outdent": "Outdent", + "auto-indent": "Auto Indent", + "move-up": "Move Line Up", + "move-down": "Move Line Down", + "duplicate": "Duplicate Lines", + "delete": "Delete Line", + "join": "Join Lines" + }, + "columns": { + "self": "Columns", + "move-selection-left": "Move Selection Left", + "move-selection-right": "Move Selection Right" + }, + "text": { + "self": "Text", + "upper-case": "Upper Case", + "lower-case": "Lower Case", + "delete-to-end-of-word": "Delete to End of Word", + "delete-to-previous-word-boundary": "Delete to Previous Word Boundary", + "delete-to-next-word-boundary": "Delete to Next Word Boundary", + "delete-line": "Delete Line", + "transpose": "Transpose" + }, + "folding": { + "self": "Folding", + "fold": "Fold", + "unfold": "Unfold", + "fold-all": "Fold All", + "unfold-all": "Unfold All", + "fold-level-1": "Fold Level 1", + "fold-level-2": "Fold Level 2", + "fold-level-3": "Fold Level 3", + "fold-level-4": "Fold Level 4", + "fold-level-5": "Fold Level 5", + "fold-level-6": "Fold Level 6", + "fold-level-7": "Fold Level 7", + "fold-level-8": "Fold Level 8", + "fold-level-9": "Fold Level 9" + } + }, + "view": { + "self": "View", + "toggle-full-screen": "Toggle Full Screen", + "panes": { + "self": "Panes", + "split-up": "Split Up", + "split-down": "Split Down", + "split-left": "Split Left", + "split-right": "Split Right", + "focus-next": "Focus Next Pane", + "focus-previous": "Focus Previous Pane", + "focus-above": "Focus Pane Above", + "focus-below": "Focus Pane Below", + "focus-on-left": "Focus Pane On Left", + "focus-on-right": "Focus Pane On Right", + "close": "Close Pane" + }, + "developer": { + "self": "Developer", + "open-in-dev-mode": "Open In Dev Mode", + "reload-window": "Reload Window", + "run-package-specs": "Run Package Specs", + "toggle-dev-tools": "Toggle Developer Tools" + }, + "increase-font-size": "Increase Font Size", + "decrease-font-size": "Decrease Font Size", + "reset-font-size": "Reset Font Size", + "toggle-soft-wrap": "Toggle Soft Wrap" + }, + "selection": { + "self": "Selection", + "add-above": "Add Selection Above", + "add-below": "Add Selection Below", + "single": "Single Selection", + "split-into-lines": "Split into Lines", + "to-top": "Select to Top", + "to-bottom": "Select to Bottom", + "line": "Select Line", + "word": "Select Word", + "to-beginning-of-word": "Select to Beginning of Word", + "to-beginning-of-line": "Select to Beginning of Line", + "to-first-char-of-line": "Select to First Character of Line", + "to-end-of-word": "Select to End of Word", + "to-end-of-line": "Select to End of Line" + }, + "find": { + "self": "Find" + }, + "packages": { + "self": "Packages", + "open-package-manager": "Open Package Manager" + }, + "window": { + "self": "Window", + "minimise": "Minimise", + "zoom": "Zoom", + "bring-all-to-front": "Bring All to Front" + }, + "help": { + "self": "Help", + "terms-of-use": "Terms of Use", + "docs": "Documentation", + "faq": "Frequently Asked Questions", + "community-discussions": "Community Discussions", + "report-issue": "Report Issue", + "search-issues": "Search Issues" + } + } +} diff --git a/menus/darwin.cson b/menus/darwin.cson index b65f67708..5d102da76 100644 --- a/menus/darwin.cson +++ b/menus/darwin.cson @@ -2,227 +2,227 @@ { label: 'Pulsar' submenu: [ - { label: 'About Pulsar', command: 'application:about' } - { label: 'View License', command: 'application:open-license' } - { label: 'VERSION', enabled: false } - { label: 'Restart and Install Update', command: 'application:install-update', visible: false} - { label: 'Check for Update', command: 'application:check-for-update', visible: false} - { label: 'Checking for Update', enabled: false, visible: false} - { label: 'Downloading Update', enabled: false, visible: false} + { localisedLabel: 'core.menu.pulsar.about', command: 'application:about' } + { localisedLabel: 'core.menu.pulsar.view-license', command: 'application:open-license' } + { localisedLabel: 'core.menu.pulsar.version', enabled: false } + { localisedLabel: 'core.menu.pulsar.restart-and-install-update', command: 'application:install-update', visible: false} + { localisedLabel: 'core.menu.pulsar.check-for-update', command: 'application:check-for-update', visible: false} + { localisedLabel: 'core.menu.pulsar.checking-for-update', enabled: false, visible: false} + { localisedLabel: 'core.menu.pulsar.downloading-update', enabled: false, visible: false} { type: 'separator' } - { label: 'Preferences…', command: 'application:show-settings' } + { localisedLabel: 'core.menu.pulsar.preferences', command: 'application:show-settings' } { type: 'separator' } - { label: 'Config…', command: 'application:open-your-config' } - { label: 'Init Script…', command: 'application:open-your-init-script' } - { label: 'Keymap…', command: 'application:open-your-keymap' } - { label: 'Snippets…', command: 'application:open-your-snippets' } - { label: 'Stylesheet…', command: 'application:open-your-stylesheet' } + { localisedLabel: 'core.menu.pulsar.config', command: 'application:open-your-config' } + { localisedLabel: 'core.menu.pulsar.init-script', command: 'application:open-your-init-script' } + { localisedLabel: 'core.menu.pulsar.keymap', command: 'application:open-your-keymap' } + { localisedLabel: 'core.menu.pulsar.snippets', command: 'application:open-your-snippets' } + { localisedLabel: 'core.menu.pulsar.stylesheet', command: 'application:open-your-stylesheet' } { type: 'separator' } - { label: 'Install Shell Commands', command: 'window:install-shell-commands' } + { localisedLabel: 'core.menu.pulsar.install-shell-commands', command: 'window:install-shell-commands' } { type: 'separator' } - { label: 'Services', role: 'services', submenu: [] } + { localisedLabel: 'core.menu.macos.services', role: 'services', submenu: [] } { type: 'separator' } - { label: 'Hide Pulsar', command: 'application:hide' } - { label: 'Hide Others', command: 'application:hide-other-applications' } - { label: 'Show All', command: 'application:unhide-all-applications' } + { localisedLabel: 'core.menu.macos.hide-self', command: 'application:hide' } + { localisedLabel: 'core.menu.macos.hide-others', command: 'application:hide-other-applications' } + { localisedLabel: 'core.menu.macos.show-all', command: 'application:unhide-all-applications' } { type: 'separator' } - { label: 'Quit Pulsar', command: 'application:quit' } + { localisedLabel: 'core.menu.pulsar.quit', command: 'application:quit' } ] } { - label: 'File' + localisedLabel: 'core.menu.file.self' submenu: [ - { label: 'New Window', command: 'application:new-window' } - { label: 'New File', command: 'application:new-file' } - { label: 'Open…', command: 'application:open' } - { label: 'Add Project Folder…', command: 'application:add-project-folder' } + { localisedLabel: 'core.menu.file.new-window', command: 'application:new-window' } + { localisedLabel: 'core.menu.file.new-file', command: 'application:new-file' } + { localisedLabel: 'core.menu.file.open', command: 'application:open' } + { localisedLabel: 'core.menu.file.add-project-folder', command: 'application:add-project-folder' } { - label: 'Reopen Project', + localisedLabel: 'core.menu.file.project-history.reopen-project', submenu: [ - { label: 'Clear Project History', command: 'application:clear-project-history' } + { localisedLabel: 'core.menu.file.project-history.clear', command: 'application:clear-project-history' } { type: 'separator' } ] } - { label: 'Reopen Last Item', command: 'pane:reopen-closed-item' } + { localisedLabel: 'core.menu.file.reopen-last-item', command: 'pane:reopen-closed-item' } { type: 'separator' } - { label: 'Save', command: 'core:save' } - { label: 'Save As…', command: 'core:save-as' } - { label: 'Save All', command: 'window:save-all' } + { localisedLabel: 'core.menu.file.save', command: 'core:save' } + { localisedLabel: 'core.menu.file.save-as', command: 'core:save-as' } + { localisedLabel: 'core.menu.file.save-all', command: 'window:save-all' } { type: 'separator' } - { label: 'Close Tab', command: 'core:close' } - { label: 'Close Pane', command: 'pane:close' } - { label: 'Close Window', command: 'window:close' } + { localisedLabel: 'core.menu.file.close-tab', command: 'core:close' } + { localisedLabel: 'core.menu.file.close-pane', command: 'pane:close' } + { localisedLabel: 'core.menu.file.close-window', command: 'window:close' } ] } { - label: 'Edit' + localisedLabel: 'core.menu.edit.self' submenu: [ - { label: 'Undo', command: 'core:undo' } - { label: 'Redo', command: 'core:redo' } + { localisedLabel: 'core.menu.edit.undo', command: 'core:undo' } + { localisedLabel: 'core.menu.edit.redo', command: 'core:redo' } { type: 'separator' } - { label: 'Cut', command: 'core:cut' } - { label: 'Copy', command: 'core:copy' } - { label: 'Copy Path', command: 'editor:copy-path' } - { label: 'Paste', command: 'core:paste' } - { label: 'Paste Without Reformatting', command: 'editor:paste-without-reformatting' } - { label: 'Select All', command: 'core:select-all' } + { localisedLabel: 'core.menu.edit.cut', command: 'core:cut' } + { localisedLabel: 'core.menu.edit.copy', command: 'core:copy' } + { localisedLabel: 'core.menu.edit.copy-path', command: 'editor:copy-path' } + { localisedLabel: 'core.menu.edit.paste', command: 'core:paste' } + { localisedLabel: 'core.menu.edit.paste-without-reformatting', command: 'editor:paste-without-reformatting' } + { localisedLabel: 'core.menu.edit.select-all', command: 'core:select-all' } { type: 'separator' } - { label: 'Toggle Comments', command: 'editor:toggle-line-comments' } + { localisedLabel: 'core.menu.edit.toggle-comments', command: 'editor:toggle-line-comments' } { - label: 'Lines', + localisedLabel: 'core.menu.edit.lines.self', submenu: [ - { label: 'Indent', command: 'editor:indent-selected-rows' } - { label: 'Outdent', command: 'editor:outdent-selected-rows' } - { label: 'Auto Indent', command: 'editor:auto-indent' } + { localisedLabel: 'core.menu.edit.lines.indent', command: 'editor:indent-selected-rows' } + { localisedLabel: 'core.menu.edit.lines.outdent', command: 'editor:outdent-selected-rows' } + { localisedLabel: 'core.menu.edit.lines.auto-indent', command: 'editor:auto-indent' } { type: 'separator' } - { label: 'Move Line Up', command: 'editor:move-line-up' } - { label: 'Move Line Down', command: 'editor:move-line-down' } - { label: 'Duplicate Lines', command: 'editor:duplicate-lines' } - { label: 'Delete Line', command: 'editor:delete-line' } - { label: 'Join Lines', command: 'editor:join-lines' } + { localisedLabel: 'core.menu.edit.lines.move-up', command: 'editor:move-line-up' } + { localisedLabel: 'core.menu.edit.lines.move-down', command: 'editor:move-line-down' } + { localisedLabel: 'core.menu.edit.lines.duplicate', command: 'editor:duplicate-lines' } + { localisedLabel: 'core.menu.edit.lines.delete', command: 'editor:delete-line' } + { localisedLabel: 'core.menu.edit.lines.join', command: 'editor:join-lines' } ] } { - label: 'Columns', + localisedLabel: 'core.menu.edit.columns.self', submenu: [ - { label: 'Move Selection Left', command: 'editor:move-selection-left' } - { label: 'Move Selection Right', command: 'editor:move-selection-right' } + { localisedLabel: 'core.menu.edit.columns.move-selection-left', command: 'editor:move-selection-left' } + { localisedLabel: 'core.menu.edit.columns.move-selection-right', command: 'editor:move-selection-right' } ] } { - label: 'Text', + localisedLabel: 'core.menu.edit.text.self', submenu: [ - { label: 'Upper Case', command: 'editor:upper-case' } - { label: 'Lower Case', command: 'editor:lower-case' } + { localisedLabel: 'core.menu.edit.text.upper-case', command: 'editor:upper-case' } + { localisedLabel: 'core.menu.edit.text.lower-case', command: 'editor:lower-case' } { type: 'separator' } - { label: 'Delete to End of Word', command: 'editor:delete-to-end-of-word' } - { label: 'Delete to Previous Word Boundary', command: 'editor:delete-to-previous-word-boundary' } - { label: 'Delete to Next Word Boundary', command: 'editor:delete-to-next-word-boundary' } - { label: 'Delete Line', command: 'editor:delete-line' } + { localisedLabel: 'core.menu.edit.text.delete-to-end-of-word', command: 'editor:delete-to-end-of-word' } + { localisedLabel: 'core.menu.edit.text.delete-to-previous-word-boundary', command: 'editor:delete-to-previous-word-boundary' } + { localisedLabel: 'core.menu.edit.text.delete-to-next-word-boundary', command: 'editor:delete-to-next-word-boundary' } + { localisedLabel: 'core.menu.edit.text.delete-line', command: 'editor:delete-line' } { type: 'separator' } - { label: 'Transpose', command: 'editor:transpose' } + { localisedLabel: 'core.menu.edit.text.transpose', command: 'editor:transpose' } ] } { - label: 'Folding', + localisedLabel: 'core.menu.edit.folding.self', submenu: [ - { label: 'Fold', command: 'editor:fold-current-row' } - { label: 'Unfold', command: 'editor:unfold-current-row' } - { label: 'Fold All', command: 'editor:fold-all' } - { label: 'Unfold All', command: 'editor:unfold-all' } + { localisedLabel: 'core.menu.edit.folding.fold', command: 'editor:fold-current-row' } + { localisedLabel: 'core.menu.edit.folding.unfold', command: 'editor:unfold-current-row' } + { localisedLabel: 'core.menu.edit.folding.fold-all', command: 'editor:fold-all' } + { localisedLabel: 'core.menu.edit.folding.unfold-all', command: 'editor:unfold-all' } { type: 'separator' } - { label: 'Fold Level 1', command: 'editor:fold-at-indent-level-1' } - { label: 'Fold Level 2', command: 'editor:fold-at-indent-level-2' } - { label: 'Fold Level 3', command: 'editor:fold-at-indent-level-3' } - { label: 'Fold Level 4', command: 'editor:fold-at-indent-level-4' } - { label: 'Fold Level 5', command: 'editor:fold-at-indent-level-5' } - { label: 'Fold Level 6', command: 'editor:fold-at-indent-level-6' } - { label: 'Fold Level 7', command: 'editor:fold-at-indent-level-7' } - { label: 'Fold Level 8', command: 'editor:fold-at-indent-level-8' } - { label: 'Fold Level 9', command: 'editor:fold-at-indent-level-9' } + { localisedLabel: 'core.menu.edit.folding.fold-level-1', command: 'editor:fold-at-indent-level-1' } + { localisedLabel: 'core.menu.edit.folding.fold-level-2', command: 'editor:fold-at-indent-level-2' } + { localisedLabel: 'core.menu.edit.folding.fold-level-3', command: 'editor:fold-at-indent-level-3' } + { localisedLabel: 'core.menu.edit.folding.fold-level-4', command: 'editor:fold-at-indent-level-4' } + { localisedLabel: 'core.menu.edit.folding.fold-level-5', command: 'editor:fold-at-indent-level-5' } + { localisedLabel: 'core.menu.edit.folding.fold-level-6', command: 'editor:fold-at-indent-level-6' } + { localisedLabel: 'core.menu.edit.folding.fold-level-7', command: 'editor:fold-at-indent-level-7' } + { localisedLabel: 'core.menu.edit.folding.fold-level-8', command: 'editor:fold-at-indent-level-8' } + { localisedLabel: 'core.menu.edit.folding.fold-level-9', command: 'editor:fold-at-indent-level-9' } ] } ] } { - label: 'View' + localisedLabel: 'core.menu.view.self' submenu: [ - { label: 'Toggle Full Screen', command: 'window:toggle-full-screen' } + { localisedLabel: 'core.menu.view.toggle-full-screen', command: 'window:toggle-full-screen' } { - label: 'Panes' + localisedLabel: 'core.menu.view.panes.self' submenu: [ - { label: 'Split Up', command: 'pane:split-up-and-copy-active-item' } - { label: 'Split Down', command: 'pane:split-down-and-copy-active-item' } - { label: 'Split Left', command: 'pane:split-left-and-copy-active-item' } - { label: 'Split Right', command: 'pane:split-right-and-copy-active-item' } + { localisedLabel: 'core.menu.view.panes.split-up', command: 'pane:split-up-and-copy-active-item' } + { localisedLabel: 'core.menu.view.panes.split-down', command: 'pane:split-down-and-copy-active-item' } + { localisedLabel: 'core.menu.view.panes.split-left', command: 'pane:split-left-and-copy-active-item' } + { localisedLabel: 'core.menu.view.panes.split-right', command: 'pane:split-right-and-copy-active-item' } { type: 'separator' } - { label: 'Focus Next Pane', command: 'window:focus-next-pane' } - { label: 'Focus Previous Pane', command: 'window:focus-previous-pane' } + { localisedLabel: 'core.menu.view.panes.focus-next Focus Next Pane', command: 'window:focus-next-pane' } + { localisedLabel: 'core.menu.view.panes.focus-previous Focus Previous Pane', command: 'window:focus-previous-pane' } { type: 'separator' } - { label: 'Focus Pane Above', command: 'window:focus-pane-above' } - { label: 'Focus Pane Below', command: 'window:focus-pane-below' } - { label: 'Focus Pane On Left', command: 'window:focus-pane-on-left' } - { label: 'Focus Pane On Right', command: 'window:focus-pane-on-right' } + { localisedLabel: 'core.menu.view.panes.focus-above', command: 'window:focus-pane-above' } + { localisedLabel: 'core.menu.view.panes.focus-below', command: 'window:focus-pane-below' } + { localisedLabel: 'core.menu.view.panes.focus-on-left', command: 'window:focus-pane-on-left' } + { localisedLabel: 'core.menu.view.panes.focus-on-right', command: 'window:focus-pane-on-right' } { type: 'separator' } - { label: 'Close Pane', command: 'pane:close' } + { localisedLabel: 'core.menu.view.panes.close', command: 'pane:close' } ] } { - label: 'Developer' + localisedLabel: 'core.menu.view.developer.self' submenu: [ - { label: 'Open In Dev Mode…', command: 'application:open-dev' } - { label: 'Reload Window', command: 'window:reload' } - { label: 'Run Package Specs', command: 'window:run-package-specs' } - { label: 'Toggle Developer Tools', command: 'window:toggle-dev-tools' } + { localisedLabel: 'core.menu.view.developer.open-in-dev-mode', command: 'application:open-dev' } + { localisedLabel: 'core.menu.view.developer.reload-window', command: 'window:reload' } + { localisedLabel: 'core.menu.view.developer.run-package-specs', command: 'window:run-package-specs' } + { localisedLabel: 'core.menu.view.developer.toggle-dev-tools', command: 'window:toggle-dev-tools' } ] } { type: 'separator' } - { label: 'Increase Font Size', command: 'window:increase-font-size' } - { label: 'Decrease Font Size', command: 'window:decrease-font-size' } - { label: 'Reset Font Size', command: 'window:reset-font-size' } + { localisedLabel: 'core.menu.view.increase-font-size', command: 'window:increase-font-size' } + { localisedLabel: 'core.menu.view.decrease-font-size', command: 'window:decrease-font-size' } + { localisedLabel: 'core.menu.view.reset-font-size', command: 'window:reset-font-size' } { type: 'separator' } - { label: 'Toggle Soft Wrap', command: 'editor:toggle-soft-wrap' } + { localisedLabel: 'core.menu.view.toggle-soft-wrap', command: 'editor:toggle-soft-wrap' } ] } { - label: 'Selection' + localisedLabel: 'core.menu.selection.self' submenu: [ - { label: 'Add Selection Above', command: 'editor:add-selection-above' } - { label: 'Add Selection Below', command: 'editor:add-selection-below' } - { label: 'Single Selection', command: 'editor:consolidate-selections'} - { label: 'Split into Lines', command: 'editor:split-selections-into-lines'} + { localisedLabel: 'core.menu.selection.add-above', command: 'editor:add-selection-above' } + { localisedLabel: 'core.menu.selection.add-below', command: 'editor:add-selection-below' } + { localisedLabel: 'core.menu.selection.single', command: 'editor:consolidate-selections'} + { localisedLabel: 'core.menu.selection.split-into-lines', command: 'editor:split-selections-into-lines'} { type: 'separator' } - { label: 'Select to Top', command: 'core:select-to-top' } - { label: 'Select to Bottom', command: 'core:select-to-bottom' } + { localisedLabel: 'core.menu.selection.to-top', command: 'core:select-to-top' } + { localisedLabel: 'core.menu.selection.to-bottom', command: 'core:select-to-bottom' } { type: 'separator' } - { label: 'Select Line', command: 'editor:select-line' } - { label: 'Select Word', command: 'editor:select-word' } - { label: 'Select to Beginning of Word', command: 'editor:select-to-beginning-of-word' } - { label: 'Select to Beginning of Line', command: 'editor:select-to-beginning-of-line' } - { label: 'Select to First Character of Line', command: 'editor:select-to-first-character-of-line' } - { label: 'Select to End of Word', command: 'editor:select-to-end-of-word' } - { label: 'Select to End of Line', command: 'editor:select-to-end-of-line' } + { localisedLabel: 'core.menu.selection.line', command: 'editor:select-line' } + { localisedLabel: 'core.menu.selection.word', command: 'editor:select-word' } + { localisedLabel: 'core.menu.selection.to-beginning-of-word', command: 'editor:select-to-beginning-of-word' } + { localisedLabel: 'core.menu.selection.to-beginning-of-line', command: 'editor:select-to-beginning-of-line' } + { localisedLabel: 'core.menu.selection.to-first-char-of-line', command: 'editor:select-to-first-character-of-line' } + { localisedLabel: 'core.menu.selection.to-end-of-word', command: 'editor:select-to-end-of-word' } + { localisedLabel: 'core.menu.selection.to-end-of-line', command: 'editor:select-to-end-of-line' } ] } { - label: 'Find' + localisedLabel: 'core.menu.find.self' submenu: [] } { - label: 'Packages' + localisedLabel: 'core.menu.packages.self' submenu: [ - { label: 'Open Package Manager', command: 'settings-view:view-installed-packages' } + { localisedLabel: 'core.menu.packages.open-package-manager', command: 'settings-view:view-installed-packages' } { type: 'separator' } ] } { - label: 'Window' + localisedLabel: 'core.menu.window.self' role: 'window' submenu: [ - { label: 'Minimize', command: 'application:minimize' } - { label: 'Zoom', command: 'application:zoom' } + { localisedLabel: 'core.menu.window.minimise', command: 'application:minimize' } + { localisedLabel: 'core.menu.window.zoom', command: 'application:zoom' } { type: 'separator' } - { label: 'Bring All to Front', command: 'application:bring-all-windows-to-front' } + { localisedLabel: 'core.menu.window.bring-all-to-front', command: 'application:bring-all-windows-to-front' } ] } { - label: 'Help' + localisedLabel: 'core.menu.help.self' role: 'help' submenu: [ - { label: 'Terms of Use', command: 'application:open-terms-of-use' } - { label: 'Documentation', command: 'application:open-documentation' } - { label: 'Frequently Asked Questions', command: 'application:open-faq' } + { localisedLabel: 'core.menu.help.terms-of-use', command: 'application:open-terms-of-use' } + { localisedLabel: 'core.menu.help.docs', command: 'application:open-documentation' } + { localisedLabel: 'core.menu.help.faq', command: 'application:open-faq' } { type: 'separator' } - { label: 'Community Discussions', command: 'application:open-discussions' } - { label: 'Report Issue', command: 'application:report-issue' } - { label: 'Search Issues', command: 'application:search-issues' } + { localisedLabel: 'core.menu.help.community-discussions', command: 'application:open-discussions' } + { localisedLabel: 'core.menu.help.report-issue', command: 'application:report-issue' } + { localisedLabel: 'core.menu.help.search-issues', command: 'application:search-issues' } { type: 'separator' } ] } diff --git a/src/main-process/application-menu.js b/src/main-process/application-menu.js index 1225e97fb..64286d0ed 100644 --- a/src/main-process/application-menu.js +++ b/src/main-process/application-menu.js @@ -106,7 +106,7 @@ module.exports = class ApplicationMenu { // Replaces VERSION with the current version. substituteVersion(template) { let item = this.flattenMenuTemplate(template).find( - ({ label }) => label.includes("VERSION") + ({ label }) => label?.includes("VERSION") ); // TODO maybe this can be done with the i18n API instead of custom replace? if (item) item.label = item.label.replace("VERSION", this.version); From 97d99a2297eaed36f1c05981b41a87c2d57efb6e Mon Sep 17 00:00:00 2001 From: Chris Oakman <chris@oakmac.com> Date: Thu, 30 Mar 2023 09:30:34 -0500 Subject: [PATCH 61/85] minor - fix markdown links in packages README --- packages/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/README.md b/packages/README.md index 0c8e85798..ab9a2d93a 100644 --- a/packages/README.md +++ b/packages/README.md @@ -16,7 +16,7 @@ See [RFC 003](https://github.com/atom/atom/blob/master/docs/rfcs/003-consolidate | **autocomplete-atom-api** | [`atom/autocomplete-atom-api`][autocomplete-atom-api] | | | **autocomplete-css** | [`./autocomplete-css`](./autocomplete-css) | | | **autocomplete-html** | [`./autocomplete-html`](./autocomplete-html) | | -| **autocomplete-plus** | [`./autocomplete-plus`][./autocomplete-plus] | | +| **autocomplete-plus** | [`./autocomplete-plus`](./autocomplete-plus) | | | **autocomplete-snippets** | [`./autocomplete-snippets`](./autocomplete-snippets) | | | **autoflow** | [`./autoflow`](./autoflow) | | | **autosave** | [`pulsar-edit/autosave`][autosave] | [#17834](https://github.com/atom/atom/issues/17834) | @@ -76,7 +76,7 @@ See [RFC 003](https://github.com/atom/atom/blob/master/docs/rfcs/003-consolidate | **language-yaml** | [`./language-yaml`](./language-yaml) | | | **line-ending-selector** | [`./line-ending-selector`](./line-ending-selector) | | | **link** | [`./link`](./link) | | -| **markdown-preview** | [`./markdown-preview`][./markdown-preview] | | +| **markdown-preview** | [`./markdown-preview`](./markdown-preview) | | | **notifications** | [`atom/notifications`][notifications] | [#18277](https://github.com/atom/atom/issues/18277) | | **one-dark-syntax** | [`./one-dark-syntax`](./one-dark-syntax) | | | **one-dark-ui** | [`./one-dark-ui`](./one-dark-ui) | | @@ -90,7 +90,7 @@ See [RFC 003](https://github.com/atom/atom/blob/master/docs/rfcs/003-consolidate | **solarized-light-syntax** | [`./solarized-light-syntax`](./solarized-light-syntax) | | | **spell-check** | [`atom/spell-check`][spell-check] | | | **status-bar** | [`./status-bar`](./status-bar) | | -| **styleguide** | [`./styleguide`][./styleguide] | | +| **styleguide** | [`./styleguide`](./styleguide) | | | **symbols-view** | [`pulsar-edit/symbols-view`][symbols-view] | | | **tabs** | [`./tabs`](./tabs) | | | **timecop** | [`pulsar-edit/timecop`][timecop] | [#18272](https://github.com/atom/atom/issues/18272) | @@ -98,7 +98,7 @@ See [RFC 003](https://github.com/atom/atom/blob/master/docs/rfcs/003-consolidate | **update-package-dependencies** | [`./update-package-dependencies`](./update-package-dependencies) | | | **welcome** | [`./welcome`](./welcome) | | | **whitespace** | [`./whitespace`](./whitespace) | | -| **wrap-guide** | [`./wrap-guide`][./wrap-guide] | | +| **wrap-guide** | [`./wrap-guide`](./wrap-guide) | | [autocomplete-atom-api]: https://github.com/pulsar-edit/autocomplete-atom-api [autosave]: https://github.com/pulsar-edit/autosave From feb3a23f337ef457c547fe8ab8d4a809591aea7e Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Thu, 30 Mar 2023 17:41:53 -0700 Subject: [PATCH 62/85] format, sorry this was bothering me lol --- menus/darwin.cson | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/menus/darwin.cson b/menus/darwin.cson index 5d102da76..b64fda5ec 100644 --- a/menus/darwin.cson +++ b/menus/darwin.cson @@ -5,10 +5,10 @@ { localisedLabel: 'core.menu.pulsar.about', command: 'application:about' } { localisedLabel: 'core.menu.pulsar.view-license', command: 'application:open-license' } { localisedLabel: 'core.menu.pulsar.version', enabled: false } - { localisedLabel: 'core.menu.pulsar.restart-and-install-update', command: 'application:install-update', visible: false} - { localisedLabel: 'core.menu.pulsar.check-for-update', command: 'application:check-for-update', visible: false} - { localisedLabel: 'core.menu.pulsar.checking-for-update', enabled: false, visible: false} - { localisedLabel: 'core.menu.pulsar.downloading-update', enabled: false, visible: false} + { localisedLabel: 'core.menu.pulsar.restart-and-install-update', command: 'application:install-update', visible: false } + { localisedLabel: 'core.menu.pulsar.check-for-update', command: 'application:check-for-update', visible: false } + { localisedLabel: 'core.menu.pulsar.checking-for-update', enabled: false, visible: false } + { localisedLabel: 'core.menu.pulsar.downloading-update', enabled: false, visible: false } { type: 'separator' } { localisedLabel: 'core.menu.pulsar.preferences', command: 'application:show-settings' } { type: 'separator' } @@ -172,8 +172,8 @@ submenu: [ { localisedLabel: 'core.menu.selection.add-above', command: 'editor:add-selection-above' } { localisedLabel: 'core.menu.selection.add-below', command: 'editor:add-selection-below' } - { localisedLabel: 'core.menu.selection.single', command: 'editor:consolidate-selections'} - { localisedLabel: 'core.menu.selection.split-into-lines', command: 'editor:split-selections-into-lines'} + { localisedLabel: 'core.menu.selection.single', command: 'editor:consolidate-selections' } + { localisedLabel: 'core.menu.selection.split-into-lines', command: 'editor:split-selections-into-lines' } { type: 'separator' } { localisedLabel: 'core.menu.selection.to-top', command: 'core:select-to-top' } { localisedLabel: 'core.menu.selection.to-bottom', command: 'core:select-to-bottom' } From c9a34726bccef77bc510289d69e6debde143818b Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Thu, 30 Mar 2023 20:21:13 -0700 Subject: [PATCH 63/85] oops --- i18n/en.json | 1 + 1 file changed, 1 insertion(+) diff --git a/i18n/en.json b/i18n/en.json index c370c96ca..776c132bd 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -33,6 +33,7 @@ "reopen-project": "Reopen Project", "clear": "Clear Project History" }, + "reopen-last-item": "Reopen Last Item", "save": "Save", "save-as": "Save As...", "save-all": "Save All", From 67c128b9fc02646a654c45e2fe5991778f308e69 Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Fri, 31 Mar 2023 01:11:23 -0700 Subject: [PATCH 64/85] implement cache (inmemory for now) --- src/atom-environment.js | 1 + src/i18n-helpers.js | 68 +++++++++++++++++++++++++++++++++++++++++ src/i18n.js | 68 +++++++++++++---------------------------- 3 files changed, 90 insertions(+), 47 deletions(-) create mode 100644 src/i18n-helpers.js diff --git a/src/atom-environment.js b/src/atom-environment.js index 4fa8f8a7b..80b3f0b03 100644 --- a/src/atom-environment.js +++ b/src/atom-environment.js @@ -289,6 +289,7 @@ class AtomEnvironment { }); this.i18n.initialize({ + configDirPath: this.configDirPath, packages: this.packages, resourcePath }); diff --git a/src/i18n-helpers.js b/src/i18n-helpers.js new file mode 100644 index 000000000..fbda098c0 --- /dev/null +++ b/src/i18n-helpers.js @@ -0,0 +1,68 @@ +const { parse } = require("@formatjs/icu-messageformat-parser"); + +class I18nCacheHelper { + constructor() { + /** cachedASTs[ns][lang] = string objs */ + this.cachedASTs = {}; + } + + fetchAST(ns, _path, str, lang) { + let path = [ns, lang, ..._path]; + + let ast = optionalTravelDownObjectPath( + this.cachedASTs, + path + ); + if (ast) return ast; + + ast = parse(str, { + // requiresOtherClause + }); + + let lastBit = path.pop(); + let cachePath = travelDownOrMakePath(this.cachedASTs, path); + cachePath[lastBit] = ast; + + return ast; + } +} + +function walkStrings(strings, cb, accum = []) { + Object.entries(strings).forEach(([k, v]) => { + if (typeof v === "string") cb([...accum, k], v, true); + else if (typeof v === "object") { + cb([...accum, k], null, false); + walkStrings(v, cb, [...accum, k]); + } + }); +} + +function travelDownObjectPath(obj, path) { + for (const pathFragment of path) { + obj = obj[pathFragment]; + } + return obj; +} + +function optionalTravelDownObjectPath(obj, path) { + for (const pathFragment of path) { + obj = obj[pathFragment]; + if (!obj) return undefined; + } + return obj; +} + +function travelDownOrMakePath(obj, path) { + for (const pathFragment of path) { + if (!obj[pathFragment]) obj[pathFragment] = {}; + obj = obj[pathFragment]; + } + return obj; +} + +module.exports = { + I18nCacheHelper, + walkStrings, + travelDownObjectPath, + optionalTravelDownObjectPath +}; diff --git a/src/i18n.js b/src/i18n.js index df002c6c1..eb15b61d5 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -3,6 +3,12 @@ const { splitKeyPath } = require("key-path-helpers"); const fs = require("fs-plus"); const path = require("path"); const { default: IntlMessageFormat } = require("intl-messageformat"); +const { + I18nCacheHelper, + walkStrings, + travelDownObjectPath, + optionalTravelDownObjectPath +} = require("./i18n-helpers"); class I18n { /** @@ -15,22 +21,12 @@ class I18n { this.config = config; this.initialized = false; - /** - * { - * [ns (package id)]: { - * [language id]: { - * string objects without core ns - * } - * } - * } - * - * @type {object} - */ + /** registeredStrings[ns][lang] = string objs */ this.registeredStrings = { core: {} }; this.cachedFormatters = {}; - // TODO string parse cache (load on init, save on destroy too) + this.cacheHelper = new I18nCacheHelper(); // TODO atom.packages.onDidDeactivatePackage @@ -63,7 +59,9 @@ class I18n { } } - initialize({ packages, resourcePath }) { + initialize({ configDirPath, packages, resourcePath }) { + /** @type {string} */ + this.configDirPath = configDirPath; this.packages = packages; /** @type {string} */ this.resourcePath = resourcePath; @@ -121,18 +119,21 @@ class I18n { * @return undefined if the language or string cannot be found, * and throws an error if the path isn't right. */ - tSingleLanguage(lang, path, opts) { - path = [...path]; + // TODO could be improved: nove string fetching logic into fetch function + // so the fetch function takes a langobj and a path, and we can then delegate + // that to the cache too (don't fetch the string if theres already something in the cache) + tSingleLanguage(lang, _path, opts) { + let path = [..._path]; const ns = path.shift(); - if (!ns) throw new Error(`key path seems invalid: [${path.map(p => `"${p}"`).join(", ")}]`); + if (!ns) throw new Error(`key path seems invalid: [${_path.map(p => `"${p}"`).join(", ")}]`); const languageObj = this.getLanguageObj(ns, lang); if (!languageObj) return undefined; const str = optionalTravelDownObjectPath(languageObj, path); if (str) { - return this.format(path, str, lang, opts); + return this.format(ns, path, str, lang, opts); } else { return undefined; } @@ -213,38 +214,11 @@ class I18n { * formats a string with opts, * and caches the message formatter for the provided path. */ - format(path, str, locale, opts) { - // TODO caching - let formatter = new IntlMessageFormat(str, locale, null, { - // requiresOtherClause - }); + format(ns, path, str, lang, opts) { + let ast = this.cacheHelper.fetchAST(ns, path, str, lang); + let formatter = new IntlMessageFormat(ast, lang); return formatter.format(opts); } } module.exports = I18n; - -function walkStrings(strings, cb, accum = []) { - Object.entries(strings).forEach(([k, v]) => { - if (typeof v === "string") cb([...accum, k], v, true); - else if (typeof v === "object") { - cb([...accum, k], null, false); - walkStrings(v, cb, [...accum, k]); - } - }); -} - -function travelDownObjectPath(obj, path) { - for (const pathFragment of path) { - obj = obj[pathFragment]; - } - return obj; -} - -function optionalTravelDownObjectPath(obj, path) { - for (const pathFragment of path) { - obj = obj[pathFragment]; - if (!obj) return undefined; - } - return obj; -} From 76d796418056d8c9749445db8aa6a646fa815c5a Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Fri, 31 Mar 2023 01:12:45 -0700 Subject: [PATCH 65/85] h --- src/i18n.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/i18n.js b/src/i18n.js index eb15b61d5..438e8d282 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -1,4 +1,3 @@ -const { CompositeDisposable } = require('atom'); const { splitKeyPath } = require("key-path-helpers"); const fs = require("fs-plus"); const path = require("path"); From 33748c3947a88adf12bb30f1c1e7000b1a9c5dd4 Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Fri, 31 Mar 2023 01:35:01 -0700 Subject: [PATCH 66/85] implement (inmemory) cache cleaning --- src/i18n-helpers.js | 50 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 47 insertions(+), 3 deletions(-) diff --git a/src/i18n-helpers.js b/src/i18n-helpers.js index fbda098c0..975d628ee 100644 --- a/src/i18n-helpers.js +++ b/src/i18n-helpers.js @@ -2,7 +2,10 @@ const { parse } = require("@formatjs/icu-messageformat-parser"); class I18nCacheHelper { constructor() { - /** cachedASTs[ns][lang] = string objs */ + /** + * cachedASTs[ns][lang] = string objs + * (same shape as registeredStrings but with ASTs instead of strings) + */ this.cachedASTs = {}; } @@ -13,7 +16,7 @@ class I18nCacheHelper { this.cachedASTs, path ); - if (ast) return ast; + if (ast) return ast.ast; ast = parse(str, { // requiresOtherClause @@ -21,10 +24,51 @@ class I18nCacheHelper { let lastBit = path.pop(); let cachePath = travelDownOrMakePath(this.cachedASTs, path); - cachePath[lastBit] = ast; + cachePath[lastBit] = new AST(ast); return ast; } + + /** + * go through `this.cachedASTs`, find stuff that doesn't exist in `registeredStrings`, + * then yeet them + */ + cleanCaches(registeredStrings, cachedASTs) { + if (!cachedASTs) cachedASTs = this.cachedASTs; + + Object.entries(cachedASTs).forEach(([k, cachedValue]) => { + let registeredValue = registeredStrings[k]; + + // path doesn't exist + if (!registeredValue) return delete cachedASTs[k]; + + // path is an object + if (typeof registeredValue === "object") { + // cached is not AST (plain obj) (good) + if ( + typeof cachedValue === "object" + && !(cachedValue instanceof AST) + ) return this.cleanCaches(registeredValue, cachedValue); + // cached is AST (bad) + return delete cachedASTs[k]; + } + + // path is a string + if (typeof registeredValue === "string") { + // cached is AST (good) + if (cachedValue instanceof AST) return; + // cached is not AST (bad) + return delete cachedASTs[k]; + } + }); + } +} + +/** wrapper class, helps to ID ASTs as ASTs */ +class AST { + constructor(ast) { + this.ast = ast; + } } function walkStrings(strings, cb, accum = []) { From be7e0c036fcc341cae0b193bd8c722ae698f8fc1 Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Fri, 31 Mar 2023 11:00:13 -0700 Subject: [PATCH 67/85] implement saving and loading caches loading is done at startup if present, saving not yet implemented --- src/i18n-helpers.js | 47 +++++++++++++++++++++++++++++++++++---------- src/i18n.js | 4 ++-- 2 files changed, 39 insertions(+), 12 deletions(-) diff --git a/src/i18n-helpers.js b/src/i18n-helpers.js index 975d628ee..5883f267d 100644 --- a/src/i18n-helpers.js +++ b/src/i18n-helpers.js @@ -1,12 +1,18 @@ +const fs = require("fs"); +const path = require("path"); const { parse } = require("@formatjs/icu-messageformat-parser"); class I18nCacheHelper { - constructor() { + constructor({ configDirPath }) { /** * cachedASTs[ns][lang] = string objs * (same shape as registeredStrings but with ASTs instead of strings) */ this.cachedASTs = {}; + /** @type {string} */ + this.configDirPath = configDirPath; + + this.loadCaches(); } fetchAST(ns, _path, str, lang) { @@ -16,7 +22,10 @@ class I18nCacheHelper { this.cachedASTs, path ); - if (ast) return ast.ast; + if (ast && "_AST" in ast) { + console.log(`CACHE HIT: ${this.count = (this.count || 0) + 1}`); + return ast._AST; + } ast = parse(str, { // requiresOtherClause @@ -24,7 +33,7 @@ class I18nCacheHelper { let lastBit = path.pop(); let cachePath = travelDownOrMakePath(this.cachedASTs, path); - cachePath[lastBit] = new AST(ast); + cachePath[lastBit] = { _AST: ast }; return ast; } @@ -47,7 +56,7 @@ class I18nCacheHelper { // cached is not AST (plain obj) (good) if ( typeof cachedValue === "object" - && !(cachedValue instanceof AST) + && !("_AST" in cachedValue) ) return this.cleanCaches(registeredValue, cachedValue); // cached is AST (bad) return delete cachedASTs[k]; @@ -56,18 +65,36 @@ class I18nCacheHelper { // path is a string if (typeof registeredValue === "string") { // cached is AST (good) - if (cachedValue instanceof AST) return; + if ("_AST" in cachedValue) return; // cached is not AST (bad) return delete cachedASTs[k]; } }); } -} -/** wrapper class, helps to ID ASTs as ASTs */ -class AST { - constructor(ast) { - this.ast = ast; + saveCaches() { + let cachedir = path.join( + this.configDirPath, + "compile-cache", + "i18n" + ); + fs.mkdirSync(cachedir, { recursive: true }); + + let cachefile = path.join(cachedir, "strings.json"); + fs.writeFileSync(cachefile, JSON.stringify(this.cachedASTs)); + // TODO finish this + } + + loadCaches() { + let cachefile = path.join( + this.configDirPath, + "compile-cache", + "i18n", + "strings.json" + ); + if (fs.existsSync(cachefile)) { + this.cachedASTs = JSON.parse(fs.readFileSync(cachefile, "utf-8")); + } } } diff --git a/src/i18n.js b/src/i18n.js index 438e8d282..d7d888a37 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -25,8 +25,6 @@ class I18n { this.cachedFormatters = {}; - this.cacheHelper = new I18nCacheHelper(); - // TODO atom.packages.onDidDeactivatePackage this.t = (key, opts) => { @@ -64,6 +62,8 @@ class I18n { this.packages = packages; /** @type {string} */ this.resourcePath = resourcePath; + /** @type {I18nCacheHelper} */ + this.cacheHelper = new I18nCacheHelper({ configDirPath }); const ext = ".json"; const extlen = ext.length; From fff1bad09d06c30533acc2b51201d5cda9d34336 Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Fri, 31 Mar 2023 16:26:05 -0700 Subject: [PATCH 68/85] implement debounced save --- src/i18n-helpers.js | 11 ++++++++++- src/i18n.js | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/i18n-helpers.js b/src/i18n-helpers.js index 5883f267d..fc90e3c85 100644 --- a/src/i18n-helpers.js +++ b/src/i18n-helpers.js @@ -1,9 +1,10 @@ +const _ = require('underscore-plus'); const fs = require("fs"); const path = require("path"); const { parse } = require("@formatjs/icu-messageformat-parser"); class I18nCacheHelper { - constructor({ configDirPath }) { + constructor({ configDirPath, i18n }) { /** * cachedASTs[ns][lang] = string objs * (same shape as registeredStrings but with ASTs instead of strings) @@ -11,8 +12,14 @@ class I18nCacheHelper { this.cachedASTs = {}; /** @type {string} */ this.configDirPath = configDirPath; + this.i18n = i18n; this.loadCaches(); + + this.debouncedCleanAndSave = _.debounce(() => { + this.cleanCaches(this.i18n.registeredStrings); + this.saveCaches(); + }, 5_000); } fetchAST(ns, _path, str, lang) { @@ -35,6 +42,8 @@ class I18nCacheHelper { let cachePath = travelDownOrMakePath(this.cachedASTs, path); cachePath[lastBit] = { _AST: ast }; + this.debouncedCleanAndSave(); + return ast; } diff --git a/src/i18n.js b/src/i18n.js index d7d888a37..e409872c5 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -63,7 +63,7 @@ class I18n { /** @type {string} */ this.resourcePath = resourcePath; /** @type {I18nCacheHelper} */ - this.cacheHelper = new I18nCacheHelper({ configDirPath }); + this.cacheHelper = new I18nCacheHelper({ configDirPath, i18n: this }); const ext = ".json"; const extlen = ext.length; From 38f985945a7d7c18942f988407d27b3a80ed6642 Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Fri, 31 Mar 2023 16:32:04 -0700 Subject: [PATCH 69/85] lol remove debug logging statement --- src/i18n-helpers.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/i18n-helpers.js b/src/i18n-helpers.js index fc90e3c85..aea84d44c 100644 --- a/src/i18n-helpers.js +++ b/src/i18n-helpers.js @@ -29,10 +29,7 @@ class I18nCacheHelper { this.cachedASTs, path ); - if (ast && "_AST" in ast) { - console.log(`CACHE HIT: ${this.count = (this.count || 0) + 1}`); - return ast._AST; - } + if (ast && "_AST" in ast) return ast._AST; ast = parse(str, { // requiresOtherClause From 126d8c1696624eb2d60add46c3e389fbdf5aee4d Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Fri, 31 Mar 2023 16:40:24 -0700 Subject: [PATCH 70/85] remove this todo imagine a scenario, a cache just got loaded, it contains keys for strings that no longer exist, and the app still requests those strings, and then the cache would return it? this would be a bug that's hidden, since we would want to know that the string is missing. Currently we look for the real thing first, so this bug doesn't exist --- src/i18n.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/i18n.js b/src/i18n.js index e409872c5..78fce1127 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -118,9 +118,6 @@ class I18n { * @return undefined if the language or string cannot be found, * and throws an error if the path isn't right. */ - // TODO could be improved: nove string fetching logic into fetch function - // so the fetch function takes a langobj and a path, and we can then delegate - // that to the cache too (don't fetch the string if theres already something in the cache) tSingleLanguage(lang, _path, opts) { let path = [..._path]; From af19634773170a83a29424ff204d1bf3087ffc11 Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Fri, 31 Mar 2023 16:47:07 -0700 Subject: [PATCH 71/85] implement onDidDeactivatePackage --- src/i18n.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/i18n.js b/src/i18n.js index 78fce1127..d49a18a61 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -25,8 +25,6 @@ class I18n { this.cachedFormatters = {}; - // TODO atom.packages.onDidDeactivatePackage - this.t = (key, opts) => { const path = splitKeyPath(key); @@ -83,6 +81,13 @@ class I18n { }); this.updateConfigs(); + + atom.packages.onDidDeactivatePackage(pkg => { + if (pkg.name in this.registeredStrings) { + delete this.registeredStrings[pkg.name]; + } + }); + this.initialized = true; } From 5c117abc2636e15fbebe582f8de715a5e3ed2e8b Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Fri, 31 Mar 2023 16:47:46 -0700 Subject: [PATCH 72/85] move this down here (because i think it makes more sense) --- src/i18n.js | 56 ++++++++++++++++++++++++++--------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/src/i18n.js b/src/i18n.js index d49a18a61..bc734760e 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -24,34 +24,6 @@ class I18n { this.registeredStrings = { core: {} }; this.cachedFormatters = {}; - - this.t = (key, opts) => { - const path = splitKeyPath(key); - - // primary - const str = this.tSingleLanguage(this.primaryLanguage, path, opts); - if (str) return str; - - // fallbacks - for (const lang of this.fallbackLanguages) { - const str = this.tSingleLanguage(lang, path, opts); - if (str) return str; - } - - // `en` fallback - const en_fallback = this.tSingleLanguage("en", path, opts); - if (en_fallback) return en_fallback; - - // key fallback - let string_opts = opts - ? `: { ${ - Object.entries(opts) - .map(o => `"${o[0]}": "${o[1]}"`) - .join(", ") - } }` - : ""; - return `${key}${string_opts}`; - } } initialize({ configDirPath, packages, resourcePath }) { @@ -88,6 +60,34 @@ class I18n { } }); + this.t = (key, opts) => { + const path = splitKeyPath(key); + + // primary + const str = this.tSingleLanguage(this.primaryLanguage, path, opts); + if (str) return str; + + // fallbacks + for (const lang of this.fallbackLanguages) { + const str = this.tSingleLanguage(lang, path, opts); + if (str) return str; + } + + // `en` fallback + const en_fallback = this.tSingleLanguage("en", path, opts); + if (en_fallback) return en_fallback; + + // key fallback + let string_opts = opts + ? `: { ${ + Object.entries(opts) + .map(o => `"${o[0]}": "${o[1]}"`) + .join(", ") + } }` + : ""; + return `${key}${string_opts}`; + } + this.initialized = true; } From 0030680971c8c6f7e57d02d1c4a4b8561afa1568 Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Fri, 31 Mar 2023 16:52:27 -0700 Subject: [PATCH 73/85] no this is done lol --- src/i18n-helpers.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/i18n-helpers.js b/src/i18n-helpers.js index aea84d44c..ab56bc65b 100644 --- a/src/i18n-helpers.js +++ b/src/i18n-helpers.js @@ -88,7 +88,6 @@ class I18nCacheHelper { let cachefile = path.join(cachedir, "strings.json"); fs.writeFileSync(cachefile, JSON.stringify(this.cachedASTs)); - // TODO finish this } loadCaches() { From c7b5d7c84db6ceded9de320a013ce1b6d5c142fa Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Fri, 31 Mar 2023 22:43:26 -0700 Subject: [PATCH 74/85] cache message formatters --- src/i18n-helpers.js | 3 ++- src/i18n.js | 16 +++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/i18n-helpers.js b/src/i18n-helpers.js index ab56bc65b..cfdeb600d 100644 --- a/src/i18n-helpers.js +++ b/src/i18n-helpers.js @@ -140,5 +140,6 @@ module.exports = { I18nCacheHelper, walkStrings, travelDownObjectPath, - optionalTravelDownObjectPath + optionalTravelDownObjectPath, + travelDownOrMakePath }; diff --git a/src/i18n.js b/src/i18n.js index bc734760e..6def062fd 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -6,7 +6,8 @@ const { I18nCacheHelper, walkStrings, travelDownObjectPath, - optionalTravelDownObjectPath + optionalTravelDownObjectPath, + travelDownOrMakePath } = require("./i18n-helpers"); class I18n { @@ -215,9 +216,18 @@ class I18n { * formats a string with opts, * and caches the message formatter for the provided path. */ - format(ns, path, str, lang, opts) { - let ast = this.cacheHelper.fetchAST(ns, path, str, lang); + format(ns, _path, str, lang, opts) { + let path = [ns, lang, ..._path]; + + let cachedFormatter = optionalTravelDownObjectPath(this.cachedFormatters, path); + if (cachedFormatter) return cachedFormatter.format(opts); + + let ast = this.cacheHelper.fetchAST(ns, _path, str, lang); let formatter = new IntlMessageFormat(ast, lang); + + let last = path.pop(); + let cachePath = travelDownOrMakePath(this.cachedFormatters, path); + cachePath[last] = formatter; return formatter.format(opts); } } From ec53f2d842c289403c7936d1de97329ebcc5d946 Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Fri, 31 Mar 2023 22:58:58 -0700 Subject: [PATCH 75/85] this can be moved out --- src/i18n.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n.js b/src/i18n.js index 6def062fd..b582fd575 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -100,10 +100,11 @@ class I18n { } registerStrings(packageId, strings) { + if (!this.registeredStrings[packageId]) this.registeredStrings[packageId] = {}; + walkStrings(strings, (path, string, isString) => { let last = path.pop(); - if (!this.registeredStrings[packageId]) this.registeredStrings[packageId] = {}; let obj = travelDownObjectPath(this.registeredStrings[packageId], path); if (isString) { From 04b564add3a94b30502c6a43d1a9698c00b137c5 Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Sat, 1 Apr 2023 00:14:06 -0700 Subject: [PATCH 76/85] fix config schema Move them all to the dynamic place, so that its consistently in one place, and remove the last 2 settings that aren't currently in use --- src/config-schema.js | 43 ------------------------------------------- src/i18n.js | 37 +++++++++++++++++++++++++++---------- 2 files changed, 27 insertions(+), 53 deletions(-) diff --git a/src/config-schema.js b/src/config-schema.js index 2a651379e..10ebc690b 100644 --- a/src/config-schema.js +++ b/src/config-schema.js @@ -377,49 +377,6 @@ const configSchema = { description: 'Use sRGB color profile' } ] - }, - languageSettings: { - type: "object", - description: "These settings currently require a full restart of Pulsar to take effect.", - properties: { - primaryLanguage: { - type: "string", - order: 1, - default: "en", - enum: [ - // TODO, this should probably be moved to i18n.js, and list the files in the - // i18n dir to find available languages, and use Intl.DisplayNames() to - // get the localised name - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames/DisplayNames - { value: "en", description: "English" }, - { value: "en-US", description: "English (US)" }, - { value: "nl-NL", description: "Nederlands (Nederland)" } - ] - }, - fallbackLanguages: { - type: "array", - order: 2, - description: "List of fallback languages, if something can't be found in the primary language. Note; `en` is always the last fallback language, to ensure that things at least show up.", - default: [], - items: { - // Array enum is meh, if you pause for the briefest moment and you - // didn't stop at a valid enum value, the entry you just typed gets yeeted - type: "string" - } - }, - includeNonRegionalSpecificLanguagesAsFallback: { - type: "boolean", - order: 3, - description: "Whether or not to include Non-regional specific as fallback. For example, if a string is not available in `en-US`, but is available in `en`, it would use that as a fallback.", - default: false - }, - prioritiseUserSpecifiedLanguages: { - type: "boolean", - order: 4, - description: "If the setting `Include Non Regional Specific Languages As Fallback` is true, whether or not to prioritise languages that the user specified. For example, if you specify `en-GB` as your default language, `nl-NL` as a fallback, the hierarchy when this is true would be `en-GB, nl-NL, en, nl`, with fallbacks put at the end of the list; otherwise it would be `en-GB, en, nl-NL, nl`, with non-regional-specific languages placed right after the languages they fall back for.", - default: true - } - } } } }, diff --git a/src/i18n.js b/src/i18n.js index b582fd575..050f17e2c 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -41,16 +41,33 @@ class I18n { const dirpath = path.join(resourcePath, "i18n"); const dircontents = fs.readdirSync(dirpath); - this.config.setSchema("core.languageSettings.primaryLanguage", { - type: "string", - order: 1, - default: "en", - enum: dircontents.filter(p => p.endsWith(ext)) - .map(p => p.substring(0, p.length - extlen)) - .map(p => ({ - value: p, - description: `${new Intl.DisplayNames(p, { type: "language" }).of(p)} (${p})` - })) + this.config.setSchema("core.languageSettings", { + type: "object", + description: "These settings currently require a full restart of Pulsar to take effect.", + properties: { + primaryLanguage: { + type: "string", + order: 1, + default: "en", + enum: dircontents.filter(p => p.endsWith(ext)) + .map(p => p.substring(0, p.length - extlen)) + .map(p => ({ + value: p, + description: `${new Intl.DisplayNames(p, { type: "language" }).of(p)} (${p})` + })) + }, + fallbackLanguages: { + type: "array", + order: 2, + description: "List of fallback languages, if something can't be found in the primary language. Note; `en` is always the last fallback language, to ensure that things at least show up.", + default: [], + items: { + // Array enum is meh, if you pause for the briefest moment and you + // didn't stop at a valid enum value, the entry you just typed gets yeeted + type: "string" + } + } + } }); this.updateConfigs(); From fbcd6c5cabd4fa0f06b51027063cd38dfdde63b1 Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Sat, 1 Apr 2023 02:09:37 -0700 Subject: [PATCH 77/85] translate linux menus, fix silly bug on macos lol --- i18n/en.json | 3 + menus/darwin.cson | 12 +-- menus/linux.cson | 234 +++++++++++++++++++++++----------------------- 3 files changed, 126 insertions(+), 123 deletions(-) diff --git a/i18n/en.json b/i18n/en.json index 776c132bd..b00e13704 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -28,6 +28,8 @@ "new-window": "New Window", "new-file": "New File", "open": "Open...", + "open-file": "Open File...", + "open-folder": "Open Folder...", "add-project-folder": "Add Project Folder", "project-history": { "reopen-project": "Reopen Project", @@ -98,6 +100,7 @@ "view": { "self": "View", "toggle-full-screen": "Toggle Full Screen", + "toggle-menu-bar": "Toggle Menu Bar", "panes": { "self": "Panes", "split-up": "Split Up", diff --git a/menus/darwin.cson b/menus/darwin.cson index b64fda5ec..d229ad190 100644 --- a/menus/darwin.cson +++ b/menus/darwin.cson @@ -37,7 +37,7 @@ { localisedLabel: 'core.menu.file.open', command: 'application:open' } { localisedLabel: 'core.menu.file.add-project-folder', command: 'application:add-project-folder' } { - localisedLabel: 'core.menu.file.project-history.reopen-project', + localisedLabel: 'core.menu.file.project-history.reopen-project' submenu: [ { localisedLabel: 'core.menu.file.project-history.clear', command: 'application:clear-project-history' } { type: 'separator' } @@ -84,14 +84,14 @@ ] } { - localisedLabel: 'core.menu.edit.columns.self', + localisedLabel: 'core.menu.edit.columns.self' submenu: [ { localisedLabel: 'core.menu.edit.columns.move-selection-left', command: 'editor:move-selection-left' } { localisedLabel: 'core.menu.edit.columns.move-selection-right', command: 'editor:move-selection-right' } ] } { - localisedLabel: 'core.menu.edit.text.self', + localisedLabel: 'core.menu.edit.text.self' submenu: [ { localisedLabel: 'core.menu.edit.text.upper-case', command: 'editor:upper-case' } { localisedLabel: 'core.menu.edit.text.lower-case', command: 'editor:lower-case' } @@ -105,7 +105,7 @@ ] } { - localisedLabel: 'core.menu.edit.folding.self', + localisedLabel: 'core.menu.edit.folding.self' submenu: [ { localisedLabel: 'core.menu.edit.folding.fold', command: 'editor:fold-current-row' } { localisedLabel: 'core.menu.edit.folding.unfold', command: 'editor:unfold-current-row' } @@ -138,8 +138,8 @@ { localisedLabel: 'core.menu.view.panes.split-left', command: 'pane:split-left-and-copy-active-item' } { localisedLabel: 'core.menu.view.panes.split-right', command: 'pane:split-right-and-copy-active-item' } { type: 'separator' } - { localisedLabel: 'core.menu.view.panes.focus-next Focus Next Pane', command: 'window:focus-next-pane' } - { localisedLabel: 'core.menu.view.panes.focus-previous Focus Previous Pane', command: 'window:focus-previous-pane' } + { localisedLabel: 'core.menu.view.panes.focus-next', command: 'window:focus-next-pane' } + { localisedLabel: 'core.menu.view.panes.focus-previous', command: 'window:focus-previous-pane' } { type: 'separator' } { localisedLabel: 'core.menu.view.panes.focus-above', command: 'window:focus-pane-above' } { localisedLabel: 'core.menu.view.panes.focus-below', command: 'window:focus-pane-below' } diff --git a/menus/linux.cson b/menus/linux.cson index e4f6a0532..6726209ae 100644 --- a/menus/linux.cson +++ b/menus/linux.cson @@ -1,204 +1,204 @@ 'menu': [ { - label: '&File' + localisedLabel: 'core.menu.file.self' # accelerator F submenu: [ - { label: 'New &Window', command: 'application:new-window' } - { label: '&New File', command: 'application:new-file' } - { label: '&Open File…', command: 'application:open-file' } - { label: 'Open Folder…', command: 'application:open-folder' } - { label: 'Add Project Folder…', command: 'application:add-project-folder' } + { localisedLabel: 'core.menu.file.new-window', command: 'application:new-window' } # accelerator W + { localisedLabel: 'core.menu.file.new-file', command: 'application:new-file' } # accelerator N + { localisedLabel: 'core.menu.file.open-file', command: 'application:open-file' } # accelerator O + { localisedLabel: 'core.menu.file.open-folder', command: 'application:open-folder' } + { localisedLabel: 'core.menu.file.add-project-folder', command: 'application:add-project-folder' } { - label: 'Reopen Project', + localisedLabel: 'core.menu.file.project-history.reopen-project' submenu: [ - { label: 'Clear Project History', command: 'application:clear-project-history' } + { localisedLabel: 'core.menu.file.project-history.clear', command: 'application:clear-project-history' } { type: 'separator' } ] } - { label: 'Reopen Last &Item', command: 'pane:reopen-closed-item' } + { localisedLabel: 'core.menu.file.reopen-last-item', command: 'pane:reopen-closed-item' } # accelerator I { type: 'separator' } - { label: '&Save', command: 'core:save' } - { label: 'Save &As…', command: 'core:save-as' } - { label: 'Save A&ll', command: 'window:save-all' } + { localisedLabel: 'core.menu.file.save', command: 'core:save' } # accelerator S + { localisedLabel: 'core.menu.file.save-as', command: 'core:save-as' } # accelerator A + { localisedLabel: 'core.menu.file.save-all', command: 'window:save-all' } # accelerator L { type: 'separator' } - { label: '&Close Tab', command: 'core:close' } - { label: 'Close &Pane', command: 'pane:close' } - { label: 'Clos&e Window', command: 'window:close' } + { localisedLabel: 'core.menu.file.close-tab', command: 'core:close' } # accelerator C + { localisedLabel: 'core.menu.file.close-pane', command: 'pane:close' } # accelerator P + { localisedLabel: 'core.menu.file.close-window', command: 'window:close' } # accelerator E { type: 'separator' } - { label: 'Quit', command: 'application:quit' } + { localisedLabel: 'core.menu.pulsar.quit', command: 'application:quit' } ] } { - label: '&Edit' + localisedLabel: 'core.menu.edit.self' # accelerator E submenu: [ - { label: '&Undo', command: 'core:undo' } - { label: '&Redo', command: 'core:redo' } + { localisedLabel: 'core.menu.edit.undo', command: 'core:undo' } # accelerator U + { localisedLabel: 'core.menu.edit.redo', command: 'core:redo' } # accelerator R { type: 'separator' } - { label: '&Cut', command: 'core:cut' } - { label: 'C&opy', command: 'core:copy' } - { label: 'Copy Pat&h', command: 'editor:copy-path' } - { label: '&Paste', command: 'core:paste' } - { label: 'Paste Without Reformatting', command: 'editor:paste-without-reformatting' } - { label: 'Select &All', command: 'core:select-all' } + { localisedLabel: 'core.menu.edit.cut', command: 'core:cut' } # accelerator C + { localisedLabel: 'core.menu.edit.copy', command: 'core:copy' } # accelerator O + { localisedLabel: 'core.menu.edit.copy-path', command: 'editor:copy-path' } # accelerator H + { localisedLabel: 'core.menu.edit.paste', command: 'core:paste' } # accelerator P + { localisedLabel: 'core.menu.edit.paste-without-reformatting', command: 'editor:paste-without-reformatting' } + { localisedLabel: 'core.menu.edit.select-all', command: 'core:select-all' } # accelerator A { type: 'separator' } - { label: '&Toggle Comments', command: 'editor:toggle-line-comments' } + { localisedLabel: 'core.menu.edit.toggle-comments', command: 'editor:toggle-line-comments' } # accelerator T { - label: 'Lines', + localisedLabel: 'core.menu.edit.lines.self' submenu: [ - { label: '&Indent', command: 'editor:indent-selected-rows' } - { label: '&Outdent', command: 'editor:outdent-selected-rows' } - { label: '&Auto Indent', command: 'editor:auto-indent' } + { localisedLabel: 'core.menu.edit.lines.indent', command: 'editor:indent-selected-rows' } # accelerator I + { localisedLabel: 'core.menu.edit.lines.outdent', command: 'editor:outdent-selected-rows' } # accelerator O + { localisedLabel: 'core.menu.edit.lines.auto-indent', command: 'editor:auto-indent' } # accelerator A { type: 'separator' } - { label: 'Move Line &Up', command: 'editor:move-line-up' } - { label: 'Move Line &Down', command: 'editor:move-line-down' } - { label: 'Du&plicate Lines', command: 'editor:duplicate-lines' } - { label: 'D&elete Line', command: 'editor:delete-line' } - { label: '&Join Lines', command: 'editor:join-lines' } + { localisedLabel: 'core.menu.edit.lines.move-up', command: 'editor:move-line-up' } # accelerator U + { localisedLabel: 'core.menu.edit.lines.move-down', command: 'editor:move-line-down' } # accelerator D + { localisedLabel: 'core.menu.edit.lines.duplicate', command: 'editor:duplicate-lines' } # accelerator P + { localisedLabel: 'core.menu.edit.lines.delete', command: 'editor:delete-line' } # accelerator E + { localisedLabel: 'core.menu.edit.lines.join', command: 'editor:join-lines' } # accelerator J ] } { - label: 'Columns', + localisedLabel: 'core.menu.edit.columns.self' submenu: [ - { label: 'Move Selection &Left', command: 'editor:move-selection-left' } - { label: 'Move Selection &Right', command: 'editor:move-selection-right' } + { localisedLabel: 'core.menu.edit.columns.move-selection-left', command: 'editor:move-selection-left' } # accelerator L + { localisedLabel: 'core.menu.edit.columns.move-selection-right', command: 'editor:move-selection-right' } # accelerator R ] } { - label: 'Text', + localisedLabel: 'core.menu.edit.text.self' submenu: [ - { label: '&Upper Case', command: 'editor:upper-case' } - { label: '&Lower Case', command: 'editor:lower-case' } + { localisedLabel: 'core.menu.edit.text.upper-case', command: 'editor:upper-case' } # accelerator U + { localisedLabel: 'core.menu.edit.text.lower-case', command: 'editor:lower-case' } # accelerator L { type: 'separator' } - { label: 'Delete to End of &Word', command: 'editor:delete-to-end-of-word' } - { label: 'Delete to Previous Word Boundary', command: 'editor:delete-to-previous-word-boundary' } - { label: 'Delete to Next Word Boundary', command: 'editor:delete-to-next-word-boundary' } - { label: '&Delete Line', command: 'editor:delete-line' } + { localisedLabel: 'core.menu.edit.text.delete-to-end-of-word', command: 'editor:delete-to-end-of-word' } # accelerator W + { localisedLabel: 'core.menu.edit.text.delete-to-previous-word-boundary', command: 'editor:delete-to-previous-word-boundary' } + { localisedLabel: 'core.menu.edit.text.delete-to-next-word-boundary', command: 'editor:delete-to-next-word-boundary' } + { localisedLabel: 'core.menu.edit.text.delete-line', command: 'editor:delete-line' } # accelerator D { type: 'separator' } - { label: '&Transpose', command: 'editor:transpose' } + { localisedLabel: 'core.menu.edit.text.transpose', command: 'editor:transpose' } # accelerator T ] } { - label: 'Folding', + localisedLabel: 'core.menu.edit.folding.self' submenu: [ - { label: '&Fold', command: 'editor:fold-current-row' } - { label: '&Unfold', command: 'editor:unfold-current-row' } - { label: 'Fol&d All', command: 'editor:fold-all' } - { label: 'Unfold &All', command: 'editor:unfold-all' } + { localisedLabel: 'core.menu.edit.folding.fold', command: 'editor:fold-current-row' } # accelerator F + { localisedLabel: 'core.menu.edit.folding.unfold', command: 'editor:unfold-current-row' } # accelerator U + { localisedLabel: 'core.menu.edit.folding.fold-all', command: 'editor:fold-all' } # accelerator D + { localisedLabel: 'core.menu.edit.folding.unfold-all', command: 'editor:unfold-all' } # accelerator A { type: 'separator' } - { label: 'Fold Level 1', command: 'editor:fold-at-indent-level-1' } - { label: 'Fold Level 2', command: 'editor:fold-at-indent-level-2' } - { label: 'Fold Level 3', command: 'editor:fold-at-indent-level-3' } - { label: 'Fold Level 4', command: 'editor:fold-at-indent-level-4' } - { label: 'Fold Level 5', command: 'editor:fold-at-indent-level-5' } - { label: 'Fold Level 6', command: 'editor:fold-at-indent-level-6' } - { label: 'Fold Level 7', command: 'editor:fold-at-indent-level-7' } - { label: 'Fold Level 8', command: 'editor:fold-at-indent-level-8' } - { label: 'Fold Level 9', command: 'editor:fold-at-indent-level-9' } + { localisedLabel: 'core.menu.edit.folding.fold-level-1', command: 'editor:fold-at-indent-level-1' } + { localisedLabel: 'core.menu.edit.folding.fold-level-2', command: 'editor:fold-at-indent-level-2' } + { localisedLabel: 'core.menu.edit.folding.fold-level-3', command: 'editor:fold-at-indent-level-3' } + { localisedLabel: 'core.menu.edit.folding.fold-level-4', command: 'editor:fold-at-indent-level-4' } + { localisedLabel: 'core.menu.edit.folding.fold-level-5', command: 'editor:fold-at-indent-level-5' } + { localisedLabel: 'core.menu.edit.folding.fold-level-6', command: 'editor:fold-at-indent-level-6' } + { localisedLabel: 'core.menu.edit.folding.fold-level-7', command: 'editor:fold-at-indent-level-7' } + { localisedLabel: 'core.menu.edit.folding.fold-level-8', command: 'editor:fold-at-indent-level-8' } + { localisedLabel: 'core.menu.edit.folding.fold-level-9', command: 'editor:fold-at-indent-level-9' } ] } { type: 'separator' } - { label: '&Preferences', command: 'application:show-settings' } + { localisedLabel: 'core.menu.pulsar.preferences', command: 'application:show-settings' } # accelerator P { type: 'separator' } - { label: 'Config…', command: 'application:open-your-config' } - { label: 'Init Script…', command: 'application:open-your-init-script' } - { label: 'Keymap…', command: 'application:open-your-keymap' } - { label: 'Snippets…', command: 'application:open-your-snippets' } - { label: 'Stylesheet…', command: 'application:open-your-stylesheet' } + { localisedLabel: 'core.menu.pulsar.config', command: 'application:open-your-config' } + { localisedLabel: 'core.menu.pulsar.init-script', command: 'application:open-your-init-script' } + { localisedLabel: 'core.menu.pulsar.keymap', command: 'application:open-your-keymap' } + { localisedLabel: 'core.menu.pulsar.snippets', command: 'application:open-your-snippets' } + { localisedLabel: 'core.menu.pulsar.stylesheet', command: 'application:open-your-stylesheet' } { type: 'separator' } ] } { - label: '&View' + localisedLabel: 'core.menu.view.self' # accelerator V submenu: [ - { label: 'Toggle &Full Screen', command: 'window:toggle-full-screen' } - { label: 'Toggle Menu Bar', command: 'window:toggle-menu-bar' } + { localisedLabel: 'core.menu.view.toggle-full-screen', command: 'window:toggle-full-screen' } # accelerator F + { localisedLabel: 'core.menu.view.toggle-menu-bar', command: 'window:toggle-menu-bar' } { - label: 'Panes' + localisedLabel: 'core.menu.view.panes.self' submenu: [ - { label: 'Split Up', command: 'pane:split-up-and-copy-active-item' } - { label: 'Split Down', command: 'pane:split-down-and-copy-active-item' } - { label: 'Split Left', command: 'pane:split-left-and-copy-active-item' } - { label: 'Split Right', command: 'pane:split-right-and-copy-active-item' } + { localisedLabel: 'core.menu.view.panes.split-up', command: 'pane:split-up-and-copy-active-item' } + { localisedLabel: 'core.menu.view.panes.split-down', command: 'pane:split-down-and-copy-active-item' } + { localisedLabel: 'core.menu.view.panes.split-left', command: 'pane:split-left-and-copy-active-item' } + { localisedLabel: 'core.menu.view.panes.split-right', command: 'pane:split-right-and-copy-active-item' } { type: 'separator' } - { label: 'Focus Next Pane', command: 'window:focus-next-pane' } - { label: 'Focus Previous Pane', command: 'window:focus-previous-pane' } + { localisedLabel: 'core.menu.view.panes.focus-next', command: 'window:focus-next-pane' } + { localisedLabel: 'core.menu.view.panes.focus-previous', command: 'window:focus-previous-pane' } { type: 'separator' } - { label: 'Focus Pane Above', command: 'window:focus-pane-above' } - { label: 'Focus Pane Below', command: 'window:focus-pane-below' } - { label: 'Focus Pane On Left', command: 'window:focus-pane-on-left' } - { label: 'Focus Pane On Right', command: 'window:focus-pane-on-right' } + { localisedLabel: 'core.menu.view.panes.focus-above', command: 'window:focus-pane-above' } + { localisedLabel: 'core.menu.view.panes.focus-below', command: 'window:focus-pane-below' } + { localisedLabel: 'core.menu.view.panes.focus-on-left', command: 'window:focus-pane-on-left' } + { localisedLabel: 'core.menu.view.panes.focus-on-right', command: 'window:focus-pane-on-right' } { type: 'separator' } - { label: 'Close Pane', command: 'pane:close' } + { localisedLabel: 'core.menu.view.panes.close', command: 'pane:close' } ] } { - label: 'Developer' + localisedLabel: 'core.menu.view.developer.self' submenu: [ - { label: 'Open In &Dev Mode…', command: 'application:open-dev' } - { label: '&Reload Window', command: 'window:reload' } - { label: 'Run Package &Specs', command: 'window:run-package-specs' } - { label: 'Toggle Developer &Tools', command: 'window:toggle-dev-tools' } + { localisedLabel: 'core.menu.view.developer.open-in-dev-mode', command: 'application:open-dev' } # accelerator D + { localisedLabel: 'core.menu.view.developer.reload-window', command: 'window:reload' } # accelerator R + { localisedLabel: 'core.menu.view.developer.run-package-specs', command: 'window:run-package-specs' } # accelerator S + { localisedLabel: 'core.menu.view.developer.toggle-dev-tools', command: 'window:toggle-dev-tools' } # accelerator T ] } { type: 'separator' } - { label: '&Increase Font Size', command: 'window:increase-font-size' } - { label: '&Decrease Font Size', command: 'window:decrease-font-size' } - { label: 'Re&set Font Size', command: 'window:reset-font-size' } + { localisedLabel: 'core.menu.view.increase-font-size', command: 'window:increase-font-size' } # accelerator I + { localisedLabel: 'core.menu.view.decrease-font-size', command: 'window:decrease-font-size' } # accelerator D + { localisedLabel: 'core.menu.view.reset-font-size', command: 'window:reset-font-size' } # accelerator S { type: 'separator' } - { label: 'Toggle Soft &Wrap', command: 'editor:toggle-soft-wrap' } + { localisedLabel: 'core.menu.view.toggle-soft-wrap', command: 'editor:toggle-soft-wrap' } # accelerator W ] } { - label: '&Selection' + localisedLabel: 'core.menu.selection.self' # accelerator S submenu: [ - { label: 'Add Selection &Above', command: 'editor:add-selection-above' } - { label: 'Add Selection &Below', command: 'editor:add-selection-below' } - { label: 'S&plit into Lines', command: 'editor:split-selections-into-lines'} - { label: 'Single Selection', command: 'editor:consolidate-selections'} + { localisedLabel: 'core.menu.selection.add-above', command: 'editor:add-selection-above' } # accelerator A + { localisedLabel: 'core.menu.selection.add-below', command: 'editor:add-selection-below' } # accelerator B + { localisedLabel: 'core.menu.selection.single', command: 'editor:consolidate-selections' } + { localisedLabel: 'core.menu.selection.split-into-lines', command: 'editor:split-selections-into-lines' } # accelerator P { type: 'separator' } - { label: 'Select to &Top', command: 'core:select-to-top' } - { label: 'Select to Botto&m', command: 'core:select-to-bottom' } + { localisedLabel: 'core.menu.selection.to-top', command: 'core:select-to-top' } # accelerator T + { localisedLabel: 'core.menu.selection.to-bottom', command: 'core:select-to-bottom' } # accelerator M { type: 'separator' } - { label: 'Select &Line', command: 'editor:select-line' } - { label: 'Select &Word', command: 'editor:select-word' } - { label: 'Select to Beginning of W&ord', command: 'editor:select-to-beginning-of-word' } - { label: 'Select to Beginning of L&ine', command: 'editor:select-to-beginning-of-line' } - { label: 'Select to First &Character of Line', command: 'editor:select-to-first-character-of-line' } - { label: 'Select to End of Wor&d', command: 'editor:select-to-end-of-word' } - { label: 'Select to End of Lin&e', command: 'editor:select-to-end-of-line' } + { localisedLabel: 'core.menu.selection.line', command: 'editor:select-line' } # accelerator L + { localisedLabel: 'core.menu.selection.word', command: 'editor:select-word' } # accelerator W + { localisedLabel: 'core.menu.selection.to-beginning-of-word', command: 'editor:select-to-beginning-of-word' } # accelerator O + { localisedLabel: 'core.menu.selection.to-beginning-of-line', command: 'editor:select-to-beginning-of-line' } # accelerator I + { localisedLabel: 'core.menu.selection.to-first-char-of-line', command: 'editor:select-to-first-character-of-line' } # accelerator C + { localisedLabel: 'core.menu.selection.to-end-of-word', command: 'editor:select-to-end-of-word' } # accelerator D + { localisedLabel: 'core.menu.selection.to-end-of-line', command: 'editor:select-to-end-of-line' } # accelerator E ] } { - label: 'F&ind' + localisedLabel: 'core.menu.find.self' # accelerator I submenu: [] } { - label: '&Packages' + localisedLabel: 'core.menu.packages.self' # accelerator P submenu: [ - { label: 'Open Package Manager', command: 'settings-view:view-installed-packages' } + { localisedLabel: 'core.menu.packages.open-package-manager', command: 'settings-view:view-installed-packages' } { type: 'separator' } ] } { - label: '&Help' + localisedLabel: 'core.menu.help.self' # accelerator H submenu: [ - { label: 'View &Terms of Use', command: 'application:open-terms-of-use' } - { label: 'View &License', command: 'application:open-license' } - { label: "VERSION", enabled: false } + { localisedLabel: 'core.menu.help.terms-of-use', command: 'application:open-terms-of-use' } # accelerator T + { localisedLabel: 'core.menu.pulsar.view-license', command: 'application:open-license' } # accelerator L + { localisedLabel: 'core.menu.pulsar.version', enabled: false } { type: 'separator' } - { label: '&Documentation', command: 'application:open-documentation' } - { label: 'Frequently Asked Questions', command: 'application:open-faq' } + { localisedLabel: 'core.menu.help.docs', command: 'application:open-documentation' } # accelerator D + { localisedLabel: 'core.menu.help.faq', command: 'application:open-faq' } { type: 'separator' } - { label: 'Community Discussions', command: 'application:open-discussions' } - { label: 'Report Issue', command: 'application:report-issue' } - { label: 'Search Issues', command: 'application:search-issues' } + { localisedLabel: 'core.menu.help.community-discussions', command: 'application:open-discussions' } + { localisedLabel: 'core.menu.help.report-issue', 'application:report-issue' } + { localisedLabel: 'core.menu.help.search-issues', command: 'application:search-issues' } { type: 'separator' } - { label: 'About Pulsar', command: 'application:about' } + { localisedLabel: 'core.menu.pulsar.about', command: 'application:about' } { type: 'separator' } ] } From 037e48302d42e980f66f25dc3f4adb0cb04e50e7 Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Sat, 1 Apr 2023 18:37:47 -0700 Subject: [PATCH 78/85] provide (namespaced) t through package activate() Provided as second argument, so, `activate(_, { t })` --- src/atom-environment.js | 13 +++++++------ src/package-manager.js | 9 ++++++--- src/package.js | 6 +++++- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/atom-environment.js b/src/atom-environment.js index 80b3f0b03..2c19d2e69 100644 --- a/src/atom-environment.js +++ b/src/atom-environment.js @@ -126,6 +126,11 @@ class AtomEnvironment { /** @type {StyleManager} */ this.styles = new StyleManager(); + this.i18n = new I18n({ + notificationManager: this.notifications, + config: this.config + }); + /** @type {PackageManager} */ this.packages = new PackageManager({ config: this.config, @@ -136,7 +141,8 @@ class AtomEnvironment { grammarRegistry: this.grammars, deserializerManager: this.deserializers, viewRegistry: this.views, - uriHandlerRegistry: this.uriHandlerRegistry + uriHandlerRegistry: this.uriHandlerRegistry, + i18n: this.i18n }); /** @type {ThemeManager} */ @@ -148,11 +154,6 @@ class AtomEnvironment { viewRegistry: this.views }); - this.i18n = new I18n({ - notificationManager: this.notifications, - config: this.config - }); - /** @type {MenuManager} */ this.menu = new MenuManager({ i18n: this.i18n, diff --git a/src/package-manager.js b/src/package-manager.js index 23a8e904d..372276357 100644 --- a/src/package-manager.js +++ b/src/package-manager.js @@ -38,7 +38,8 @@ module.exports = class PackageManager { grammarRegistry: this.grammarRegistry, deserializerManager: this.deserializerManager, viewRegistry: this.viewRegistry, - uriHandlerRegistry: this.uriHandlerRegistry + uriHandlerRegistry: this.uriHandlerRegistry, + i18n: this.i18n } = params); this.emitter = new Emitter(); @@ -587,7 +588,8 @@ module.exports = class PackageManager { menuManager: this.menuManager, contextMenuManager: this.contextMenuManager, deserializerManager: this.deserializerManager, - viewRegistry: this.viewRegistry + viewRegistry: this.viewRegistry, + i18n: this.i18n }; pack = metadata.theme ? new ThemePackage(options) : new Package(options); @@ -692,7 +694,8 @@ module.exports = class PackageManager { menuManager: this.menuManager, contextMenuManager: this.contextMenuManager, deserializerManager: this.deserializerManager, - viewRegistry: this.viewRegistry + viewRegistry: this.viewRegistry, + i18n: this.i18n }; const pack = metadata.theme diff --git a/src/package.js b/src/package.js index 24b4fbfa3..130bfcf57 100644 --- a/src/package.js +++ b/src/package.js @@ -30,6 +30,7 @@ module.exports = class Package { this.contextMenuManager = params.contextMenuManager; this.deserializerManager = params.deserializerManager; this.viewRegistry = params.viewRegistry; + this.i18n = params.i18n; this.emitter = new Emitter(); this.mainModule = null; @@ -240,7 +241,10 @@ module.exports = class Package { } if (typeof this.mainModule.activate === 'function') { this.mainModule.activate( - this.packageManager.getPackageState(this.name) || {} + this.packageManager.getPackageState(this.name) || {}, + { + t: this.i18n.getT(this.name) + } ); } this.mainActivated = true; From 342a8399ef1786cac04e804a546452c1814494ce Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Sat, 1 Apr 2023 21:00:22 -0700 Subject: [PATCH 79/85] do some cleanup --- src/atom-environment.js | 2 +- src/i18n-helpers.js | 7 ++++--- src/i18n.js | 23 ++++++++--------------- src/menu-helpers.js | 4 ++-- src/menu-manager.js | 6 +++--- 5 files changed, 18 insertions(+), 24 deletions(-) diff --git a/src/atom-environment.js b/src/atom-environment.js index 2c19d2e69..ba508c056 100644 --- a/src/atom-environment.js +++ b/src/atom-environment.js @@ -158,7 +158,7 @@ class AtomEnvironment { this.menu = new MenuManager({ i18n: this.i18n, keymapManager: this.keymaps, - packageManager: this.packages, + packageManager: this.packages }); /** @type {ContextMenuManager} */ diff --git a/src/i18n-helpers.js b/src/i18n-helpers.js index cfdeb600d..140a3cb2a 100644 --- a/src/i18n-helpers.js +++ b/src/i18n-helpers.js @@ -105,10 +105,11 @@ class I18nCacheHelper { function walkStrings(strings, cb, accum = []) { Object.entries(strings).forEach(([k, v]) => { - if (typeof v === "string") cb([...accum, k], v, true); + let path = [...accum, k]; + if (typeof v === "string") cb(path, v, true); else if (typeof v === "object") { - cb([...accum, k], null, false); - walkStrings(v, cb, [...accum, k]); + cb(path, null, false); + walkStrings(v, cb, path); } }); } diff --git a/src/i18n.js b/src/i18n.js index 050f17e2c..60f9a67a9 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -11,11 +11,6 @@ const { } = require("./i18n-helpers"); class I18n { - /** - * @param {{ - * notificationManager: import("./notification-manager"); - * }} - */ constructor({ notificationManager, config }) { this.notificationManager = notificationManager; this.config = config; @@ -23,7 +18,6 @@ class I18n { /** registeredStrings[ns][lang] = string objs */ this.registeredStrings = { core: {} }; - this.cachedFormatters = {}; } @@ -41,6 +35,13 @@ class I18n { const dirpath = path.join(resourcePath, "i18n"); const dircontents = fs.readdirSync(dirpath); + let languageTypes = dircontents.filter(p => p.endsWith(ext)) + .map(p => p.substring(0, p.length - extlen)) + .map(p => ({ + value: p, + description: `${new Intl.DisplayNames(p, { type: "language" }).of(p)} (${p})` + })); + this.config.setSchema("core.languageSettings", { type: "object", description: "These settings currently require a full restart of Pulsar to take effect.", @@ -49,12 +50,7 @@ class I18n { type: "string", order: 1, default: "en", - enum: dircontents.filter(p => p.endsWith(ext)) - .map(p => p.substring(0, p.length - extlen)) - .map(p => ({ - value: p, - description: `${new Intl.DisplayNames(p, { type: "language" }).of(p)} (${p})` - })) + enum: languageTypes }, fallbackLanguages: { type: "array", @@ -110,9 +106,7 @@ class I18n { } updateConfigs() { - /** @type {string} */ this.primaryLanguage = this.config.get("core.languageSettings.primaryLanguage"); - /** @type {Array<string>} */ this.fallbackLanguages = this.config.get("core.languageSettings.fallbackLanguages"); } @@ -217,7 +211,6 @@ class I18n { fetchPkgLanguageFile(ns, lang) { // TODO this could probably be optimised let packages = this.packages.getAvailablePackages(); - // let package = packages.find(p => p.name === ns); let foundPackage = packages.find(p => p.name === ns); const i18nDir = path.join(foundPackage.path, "i18n"); diff --git a/src/menu-helpers.js b/src/menu-helpers.js index c956f9db2..4980ac8d7 100644 --- a/src/menu-helpers.js +++ b/src/menu-helpers.js @@ -96,9 +96,9 @@ function cloneAndLocaliseMenuItem(item, t) { ); if (item.localisedLabel) { if (typeof item.localisedLabel === "string") { - item.label = t(item.localisedLabel) ?? item.label; + item.label = t(item.localisedLabel); } else { - item.label = t(item.localisedLabel.key, item.localisedLabel.opts) ?? item.label; + item.label = t(item.localisedLabel.key, item.localisedLabel.opts); } } if (item.id === null || item.id === undefined) { diff --git a/src/menu-manager.js b/src/menu-manager.js index 89a34d820..42311bdd3 100644 --- a/src/menu-manager.js +++ b/src/menu-manager.js @@ -60,7 +60,7 @@ if (buildMetadata) { // // See {::add} for more info about adding menu's directly. module.exports = MenuManager = class MenuManager { - constructor({i18n, keymapManager, packageManager}) { + constructor({ i18n, keymapManager, packageManager }) { this.i18n = i18n; this.keymapManager = keymapManager; this.packageManager = packageManager; @@ -241,8 +241,8 @@ module.exports = MenuManager = class MenuManager { } sortPackagesMenu() { - // TODO this needs to be fixed to support localised labels - const packagesMenu = _.find(this.template, ({id}) => MenuHelpers.normalizeLabel(id) === 'Packages'); + let packagesLabel = this.i18n.t("core.menu.packages.self"); + const packagesMenu = _.find(this.template, ({id}) => MenuHelpers.normalizeLabel(id) === packagesLabel); if (!(packagesMenu && packagesMenu.submenu != null)) { return; } From d1b24d010d0fa91f662586ecfb97d307ba31c073 Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Sat, 1 Apr 2023 23:18:21 -0700 Subject: [PATCH 80/85] fix codacy warning --- src/i18n-helpers.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/i18n-helpers.js b/src/i18n-helpers.js index 140a3cb2a..8e1311253 100644 --- a/src/i18n-helpers.js +++ b/src/i18n-helpers.js @@ -55,7 +55,10 @@ class I18nCacheHelper { let registeredValue = registeredStrings[k]; // path doesn't exist - if (!registeredValue) return delete cachedASTs[k]; + if (!registeredValue) { + delete cachedASTs[k]; + return; + } // path is an object if (typeof registeredValue === "object") { @@ -63,9 +66,13 @@ class I18nCacheHelper { if ( typeof cachedValue === "object" && !("_AST" in cachedValue) - ) return this.cleanCaches(registeredValue, cachedValue); + ) { + this.cleanCaches(registeredValue, cachedValue); + return; + } // cached is AST (bad) - return delete cachedASTs[k]; + delete cachedASTs[k]; + return; } // path is a string @@ -73,7 +80,8 @@ class I18nCacheHelper { // cached is AST (good) if ("_AST" in cachedValue) return; // cached is not AST (bad) - return delete cachedASTs[k]; + delete cachedASTs[k]; + return; } }); } From 1ed9a0a3f62281e6aec48b91cd41acc599b4532b Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Sun, 2 Apr 2023 13:21:15 -0700 Subject: [PATCH 81/85] fix accidental wrong indent in cson oops lol --- menus/linux.cson | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/menus/linux.cson b/menus/linux.cson index 6726209ae..66ab1b1ad 100644 --- a/menus/linux.cson +++ b/menus/linux.cson @@ -64,7 +64,7 @@ ] } { - localisedLabel: 'core.menu.edit.text.self' + localisedLabel: 'core.menu.edit.text.self' submenu: [ { localisedLabel: 'core.menu.edit.text.upper-case', command: 'editor:upper-case' } # accelerator U { localisedLabel: 'core.menu.edit.text.lower-case', command: 'editor:lower-case' } # accelerator L From 1d55f423245e02f17ed24cb1372da4101683e0f7 Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Sun, 2 Apr 2023 22:46:04 -0700 Subject: [PATCH 82/85] oops --- src/i18n.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n.js b/src/i18n.js index 60f9a67a9..47883b588 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -68,7 +68,7 @@ class I18n { this.updateConfigs(); - atom.packages.onDidDeactivatePackage(pkg => { + this.packages.onDidDeactivatePackage(pkg => { if (pkg.name in this.registeredStrings) { delete this.registeredStrings[pkg.name]; } From 0e8e791431db1f5ba592b2d91cd0bf65413cd575 Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Sun, 2 Apr 2023 23:20:15 -0700 Subject: [PATCH 83/85] Implement some suggestions Co-authored-by: confused-Techie <dev@lhbasics.com> --- src/i18n.js | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/src/i18n.js b/src/i18n.js index 47883b588..f745bde5a 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -68,6 +68,11 @@ class I18n { this.updateConfigs(); + this.packages.onDidActivatePackage(pkg => { + // getting an obj would place it in the cache + this.getPkgLanguage(pkg.name, this.primaryLanguage); + }); + this.packages.onDidDeactivatePackage(pkg => { if (pkg.name in this.registeredStrings) { delete this.registeredStrings[pkg.name]; @@ -76,21 +81,17 @@ class I18n { this.t = (key, opts) => { const path = splitKeyPath(key); + const languagesToTry = [ + this.primaryLanguage, + ...this.fallbackLanguages, + "en" + ]; - // primary - const str = this.tSingleLanguage(this.primaryLanguage, path, opts); - if (str) return str; - - // fallbacks - for (const lang of this.fallbackLanguages) { + for (const lang of languagesToTry) { const str = this.tSingleLanguage(lang, path, opts); - if (str) return str; + if (typeof str === "string") return str; } - // `en` fallback - const en_fallback = this.tSingleLanguage("en", path, opts); - if (en_fallback) return en_fallback; - // key fallback let string_opts = opts ? `: { ${ @@ -111,7 +112,7 @@ class I18n { } registerStrings(packageId, strings) { - if (!this.registeredStrings[packageId]) this.registeredStrings[packageId] = {}; + if (!(typeof this.registeredStrings[packageId] === "object")) this.registeredStrings[packageId] = {}; walkStrings(strings, (path, string, isString) => { let last = path.pop(); @@ -143,10 +144,10 @@ class I18n { if (!ns) throw new Error(`key path seems invalid: [${_path.map(p => `"${p}"`).join(", ")}]`); const languageObj = this.getLanguageObj(ns, lang); - if (!languageObj) return undefined; + if (languageObj === undefined) return undefined; const str = optionalTravelDownObjectPath(languageObj, path); - if (str) { + if (str !== undefined) { return this.format(ns, path, str, lang, opts); } else { return undefined; @@ -169,10 +170,10 @@ class I18n { */ getCoreLanguage(lang) { const loaded = this.registeredStrings.core[lang] - if (loaded) return loaded; + if (loaded !== undefined) return loaded; const fetched = this.fetchCoreLanguageFile(lang); - if (!fetched) return undefined; + if (fetched === undefined) return undefined; this.registeredStrings.core[lang] = fetched; return fetched; @@ -184,12 +185,14 @@ class I18n { */ getPkgLanguage(ns, lang) { const loaded = this.registeredStrings[ns]?.[lang]; - if (loaded) return loaded; + if (loaded !== undefined) return loaded; const fetched = this.fetchPkgLanguageFile(ns, lang); - if (!fetched) return fetched; + if (fetched === undefined) return fetched; - if (!this.registeredStrings[ns]) this.registeredStrings[ns] = {}; + if (typeof this.registeredStrings[ns] !== "object" || this.registeredStrings[ns] === null) { + this.registeredStrings[ns] = {}; + } this.registeredStrings[ns][lang] = fetched; } @@ -231,7 +234,7 @@ class I18n { let path = [ns, lang, ..._path]; let cachedFormatter = optionalTravelDownObjectPath(this.cachedFormatters, path); - if (cachedFormatter) return cachedFormatter.format(opts); + if (cachedFormatter !== undefined) return cachedFormatter.format(opts); let ast = this.cacheHelper.fetchAST(ns, _path, str, lang); let formatter = new IntlMessageFormat(ast, lang); From 252065412e6658c61bf7f24585c148469e979a23 Mon Sep 17 00:00:00 2001 From: confused-Techie <confused-Techie@users.noreply.github.com> Date: Mon, 3 Apr 2023 23:09:11 +0000 Subject: [PATCH 84/85] GH Action Documentation --- docs/Pulsar-API-Documentation.md | 116 ++++++++++++++++++++++++++++++ docs/Source-Code-Documentation.md | 116 ++++++++++++++++++++++++++++++ 2 files changed, 232 insertions(+) diff --git a/docs/Pulsar-API-Documentation.md b/docs/Pulsar-API-Documentation.md index 6e7dada39..cedb848c3 100644 --- a/docs/Pulsar-API-Documentation.md +++ b/docs/Pulsar-API-Documentation.md @@ -98,6 +98,60 @@ "warnings": [] }</p> </dd> +<dt><a href="#chromiumElementsShim">chromiumElementsShim</a></dt> +<dd><p>This file will manage the updating of <code>autocomplete-html</code> <code>completions.json</code> + We will partially utilize <code>@webref/elements</code> <code>.listAll()</code> function that returns + a full list of HTML Elements along with a defined <code>interface</code>. + To use this <code>interface</code> in any meaningful way, we will utilize the dataset + of Attributes that apply to each <code>interface</code> from Chromiums DevTools resource + <code>https://github.com/ChromeDevTools/devtools-frontend</code>. + Finally from here we will utilize <code>https://github.com/mdn/content</code> to parse + the Markdown docs of MDN's website to retreive descriptions for each element.</p> +<p> Now for a summary of our <code>completions.json</code> file we aim to generate. + There are two top level elements, <code>tags</code> and <code>attributes</code>, both objects. + Within <code>tags</code> we expect the following: + "tags": { + "a": { + "attributes": [ "href", "hreflang", "media", "rel", "target", "type" ], + "description": "....." + } + };</p> +<p> When an entry contains no <code>attributes</code> there is no empty array, the element + simply doesn't exist.</p> +<p> The <code>attributes</code> object contains keys of different elements that themselves + are objects that can contain several valid keys.</p> +<ul> +<li>global: Seems to be used exclusively for Global Attributes. Is a boolean + which when false, the key does not appear.</li> +<li>type: A ?type? for the attribute. It's meaning is not immediately known. + Nor a way to reliabley programatically collect it. Some discovered values:</li> +</ul> +<p>cssStyle: Exclusively used for <code>class</code> attribute +boolean: Attributes that only accept <code>true</code> or <code>false</code> +flag: For attributes that don't require or accept values. eg autoplay +cssId: Exclusively used for the <code>id</code> attribute +color: Exclusively used for the <code>bgcolor</code> attribute +style: Exclusively used for the <code>style</code> attribute</p> +<ul> +<li>description: A text description of the attribute</li> +<li>attribOption: A string array of valid values that can exist within the attribute. + Such as the case with <code>rel</code> where only so many valid options exist.</li> +</ul> +<p> Although with our data sources mentioned above, we are able to collect nearly + all the data needed. Except the <code>type</code> that is defined within our + <code>completions.json</code> as well as the <code>attribOption</code> within our completions.</p> +<p> Studying these closer reveals that all attributes listing with our <code>completions.json</code> + do not appear elsewhere, and are nearly all global attributes.</p> +<p> In this case since there is no sane way to collect this data, we will leave this + list as a manually maintained section of our <code>completions.json</code>. + This does mean that <code>curated-attributes.json</code> is a static document that + will require manual updating in the future. Or most ideally, will find a way + to automatically generate the needed data.</p> +</dd> +<dt><a href="#update">update</a></dt> +<dd><p>This file aims to run some short simple tests against <code>update.js</code>. Focusing + mainly on the Regex used within <code>sanitizeDescription()</code></p> +</dd> <dt><a href="#fs">fs</a></dt> <dd></dd> <dt><a href="#dalek">dalek</a></dt> @@ -376,6 +430,68 @@ This file will manage the updating of `autocomplete-css` `completions.json`. "warnings": [] } +**Kind**: global constant +<a name="chromiumElementsShim"></a> + +## chromiumElementsShim +This file will manage the updating of `autocomplete-html` `completions.json` + We will partially utilize `@webref/elements` `.listAll()` function that returns + a full list of HTML Elements along with a defined `interface`. + To use this `interface` in any meaningful way, we will utilize the dataset + of Attributes that apply to each `interface` from Chromiums DevTools resource + `https://github.com/ChromeDevTools/devtools-frontend`. + Finally from here we will utilize `https://github.com/mdn/content` to parse + the Markdown docs of MDN's website to retreive descriptions for each element. + + Now for a summary of our `completions.json` file we aim to generate. + There are two top level elements, `tags` and `attributes`, both objects. + Within `tags` we expect the following: + "tags": { + "a": { + "attributes": [ "href", "hreflang", "media", "rel", "target", "type" ], + "description": "....." + } + }; + + When an entry contains no `attributes` there is no empty array, the element + simply doesn't exist. + + The `attributes` object contains keys of different elements that themselves + are objects that can contain several valid keys. + - global: Seems to be used exclusively for Global Attributes. Is a boolean + which when false, the key does not appear. + - type: A ?type? for the attribute. It's meaning is not immediately known. + Nor a way to reliabley programatically collect it. Some discovered values: +cssStyle: Exclusively used for `class` attribute +boolean: Attributes that only accept `true` or `false` +flag: For attributes that don't require or accept values. eg autoplay +cssId: Exclusively used for the `id` attribute +color: Exclusively used for the `bgcolor` attribute +style: Exclusively used for the `style` attribute + - description: A text description of the attribute + - attribOption: A string array of valid values that can exist within the attribute. + Such as the case with `rel` where only so many valid options exist. + + Although with our data sources mentioned above, we are able to collect nearly + all the data needed. Except the `type` that is defined within our + `completions.json` as well as the `attribOption` within our completions. + + Studying these closer reveals that all attributes listing with our `completions.json` + do not appear elsewhere, and are nearly all global attributes. + + In this case since there is no sane way to collect this data, we will leave this + list as a manually maintained section of our `completions.json`. + This does mean that `curated-attributes.json` is a static document that + will require manual updating in the future. Or most ideally, will find a way + to automatically generate the needed data. + +**Kind**: global constant +<a name="update"></a> + +## update +This file aims to run some short simple tests against `update.js`. Focusing + mainly on the Regex used within `sanitizeDescription()` + **Kind**: global constant <a name="fs"></a> diff --git a/docs/Source-Code-Documentation.md b/docs/Source-Code-Documentation.md index d612619fe..112d83003 100644 --- a/docs/Source-Code-Documentation.md +++ b/docs/Source-Code-Documentation.md @@ -98,6 +98,60 @@ "warnings": [] }</p> </dd> +<dt><a href="#chromiumElementsShim">chromiumElementsShim</a></dt> +<dd><p>This file will manage the updating of <code>autocomplete-html</code> <code>completions.json</code> + We will partially utilize <code>@webref/elements</code> <code>.listAll()</code> function that returns + a full list of HTML Elements along with a defined <code>interface</code>. + To use this <code>interface</code> in any meaningful way, we will utilize the dataset + of Attributes that apply to each <code>interface</code> from Chromiums DevTools resource + <code>https://github.com/ChromeDevTools/devtools-frontend</code>. + Finally from here we will utilize <code>https://github.com/mdn/content</code> to parse + the Markdown docs of MDN's website to retreive descriptions for each element.</p> +<p> Now for a summary of our <code>completions.json</code> file we aim to generate. + There are two top level elements, <code>tags</code> and <code>attributes</code>, both objects. + Within <code>tags</code> we expect the following: + "tags": { + "a": { + "attributes": [ "href", "hreflang", "media", "rel", "target", "type" ], + "description": "....." + } + };</p> +<p> When an entry contains no <code>attributes</code> there is no empty array, the element + simply doesn't exist.</p> +<p> The <code>attributes</code> object contains keys of different elements that themselves + are objects that can contain several valid keys.</p> +<ul> +<li>global: Seems to be used exclusively for Global Attributes. Is a boolean + which when false, the key does not appear.</li> +<li>type: A ?type? for the attribute. It's meaning is not immediately known. + Nor a way to reliabley programatically collect it. Some discovered values:</li> +</ul> +<p>cssStyle: Exclusively used for <code>class</code> attribute +boolean: Attributes that only accept <code>true</code> or <code>false</code> +flag: For attributes that don't require or accept values. eg autoplay +cssId: Exclusively used for the <code>id</code> attribute +color: Exclusively used for the <code>bgcolor</code> attribute +style: Exclusively used for the <code>style</code> attribute</p> +<ul> +<li>description: A text description of the attribute</li> +<li>attribOption: A string array of valid values that can exist within the attribute. + Such as the case with <code>rel</code> where only so many valid options exist.</li> +</ul> +<p> Although with our data sources mentioned above, we are able to collect nearly + all the data needed. Except the <code>type</code> that is defined within our + <code>completions.json</code> as well as the <code>attribOption</code> within our completions.</p> +<p> Studying these closer reveals that all attributes listing with our <code>completions.json</code> + do not appear elsewhere, and are nearly all global attributes.</p> +<p> In this case since there is no sane way to collect this data, we will leave this + list as a manually maintained section of our <code>completions.json</code>. + This does mean that <code>curated-attributes.json</code> is a static document that + will require manual updating in the future. Or most ideally, will find a way + to automatically generate the needed data.</p> +</dd> +<dt><a href="#update">update</a></dt> +<dd><p>This file aims to run some short simple tests against <code>update.js</code>. Focusing + mainly on the Regex used within <code>sanitizeDescription()</code></p> +</dd> <dt><a href="#fs">fs</a></dt> <dd></dd> <dt><a href="#dalek">dalek</a></dt> @@ -384,6 +438,68 @@ This file will manage the updating of `autocomplete-css` `completions.json`. "warnings": [] } +**Kind**: global constant +<a name="chromiumElementsShim"></a> + +## chromiumElementsShim +This file will manage the updating of `autocomplete-html` `completions.json` + We will partially utilize `@webref/elements` `.listAll()` function that returns + a full list of HTML Elements along with a defined `interface`. + To use this `interface` in any meaningful way, we will utilize the dataset + of Attributes that apply to each `interface` from Chromiums DevTools resource + `https://github.com/ChromeDevTools/devtools-frontend`. + Finally from here we will utilize `https://github.com/mdn/content` to parse + the Markdown docs of MDN's website to retreive descriptions for each element. + + Now for a summary of our `completions.json` file we aim to generate. + There are two top level elements, `tags` and `attributes`, both objects. + Within `tags` we expect the following: + "tags": { + "a": { + "attributes": [ "href", "hreflang", "media", "rel", "target", "type" ], + "description": "....." + } + }; + + When an entry contains no `attributes` there is no empty array, the element + simply doesn't exist. + + The `attributes` object contains keys of different elements that themselves + are objects that can contain several valid keys. + - global: Seems to be used exclusively for Global Attributes. Is a boolean + which when false, the key does not appear. + - type: A ?type? for the attribute. It's meaning is not immediately known. + Nor a way to reliabley programatically collect it. Some discovered values: +cssStyle: Exclusively used for `class` attribute +boolean: Attributes that only accept `true` or `false` +flag: For attributes that don't require or accept values. eg autoplay +cssId: Exclusively used for the `id` attribute +color: Exclusively used for the `bgcolor` attribute +style: Exclusively used for the `style` attribute + - description: A text description of the attribute + - attribOption: A string array of valid values that can exist within the attribute. + Such as the case with `rel` where only so many valid options exist. + + Although with our data sources mentioned above, we are able to collect nearly + all the data needed. Except the `type` that is defined within our + `completions.json` as well as the `attribOption` within our completions. + + Studying these closer reveals that all attributes listing with our `completions.json` + do not appear elsewhere, and are nearly all global attributes. + + In this case since there is no sane way to collect this data, we will leave this + list as a manually maintained section of our `completions.json`. + This does mean that `curated-attributes.json` is a static document that + will require manual updating in the future. Or most ideally, will find a way + to automatically generate the needed data. + +**Kind**: global constant +<a name="update"></a> + +## update +This file aims to run some short simple tests against `update.js`. Focusing + mainly on the Regex used within `sanitizeDescription()` + **Kind**: global constant <a name="fs"></a> From 694486b216330233f00348dd4aeb08428d190e4b Mon Sep 17 00:00:00 2001 From: Meadowsys <blazeykirin@gmail.com> Date: Tue, 4 Apr 2023 15:19:37 -0700 Subject: [PATCH 85/85] preload "en", and preload for core too --- src/i18n.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/i18n.js b/src/i18n.js index f745bde5a..f5e6714b8 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -68,9 +68,13 @@ class I18n { this.updateConfigs(); + // Preload languages (getting an obj would place it in the cache) + // TODO reassess preloading the "en" fallback when we have more progress on translations + this.getCoreLanguage(this.primaryLanguage); + this.getCoreLanguage("en"); this.packages.onDidActivatePackage(pkg => { - // getting an obj would place it in the cache this.getPkgLanguage(pkg.name, this.primaryLanguage); + this.getPkgLanguage(pkg.name, "en"); }); this.packages.onDidDeactivatePackage(pkg => {