diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000..fa0cdde0 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,35 @@ +module.exports = { + env: { + browser: true, + commonjs: true, + es2021: true, + node: true, + }, + extends: [ + 'eslint:recommended', + 'plugin:react/recommended', + 'plugin:import/react', + 'plugin:prettier/recommended', + ], + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + sourceType: 'module', + ecmaVersion: 12, + }, + plugins: ['react'], + rules: { + 'react/prop-types': 'off', + }, + settings: { + 'react': { + version: 'detect', + }, + 'import/resolver': { + node: { + extensions: ['.js', '.jsx'], + }, + }, + }, +}; diff --git a/.markdownlint.json b/.markdownlintrc.js similarity index 86% rename from .markdownlint.json rename to .markdownlintrc.js index 529031cf..2a152f47 100644 --- a/.markdownlint.json +++ b/.markdownlintrc.js @@ -1,4 +1,4 @@ -{ +module.exports = { "default": true, "no-inline-html": false, "single-h1": false, @@ -6,4 +6,4 @@ "strong-style": { "style": "asterisk" } -} \ No newline at end of file +}; \ No newline at end of file diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 00000000..19766c58 --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,11 @@ +module.exports = { + useTabs: true, + singleQuote: true, + trailingComma: "es5", + printWidth: 100, + semi: true, + quoteProps: "consistent", + jsxSingleQuote: true, + bracketSpacing: false, + bracketSameLine: true, +}; diff --git a/README.md b/README.md index d994ce10..19a3ccb0 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ +
diff --git a/babel.config.js b/babel.config.js
index e00595da..6b5e0c86 100644
--- a/babel.config.js
+++ b/babel.config.js
@@ -1,3 +1,3 @@
module.exports = {
- presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
+ presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
};
diff --git a/docusaurus.config.js b/docusaurus.config.js
index 7c6a1dad..bae1c057 100644
--- a/docusaurus.config.js
+++ b/docusaurus.config.js
@@ -4,124 +4,122 @@
const lightCodeTheme = require('prism-react-renderer/themes/github');
const darkCodeTheme = require('prism-react-renderer/themes/dracula');
-const userWidgetInlinePlugin = require("./src/plugins/userWidgetInlinePlugin");
-const inviteWidgetPlugin = require("./src/plugins/inviteWidgetPlugin");
-const linebreakPlugins = require("./src/plugins/linebreakPlugin");
-const blogAuthorWidgetPlugin = require("./src/plugins/blogAuthorWidgetPlugin");
+const userWidgetInlinePlugin = require('./src/plugins/userWidgetInlinePlugin');
+const inviteWidgetPlugin = require('./src/plugins/inviteWidgetPlugin');
+const linebreakPlugins = require('./src/plugins/linebreakPlugin');
+const blogAuthorWidgetPlugin = require('./src/plugins/blogAuthorWidgetPlugin');
/** @type {import('@docusaurus/types').Config} */
const config = {
- title: 'Discord Resources',
- tagline: 'A list of tons of useful discord resources and utilities for all types of users, from beginners to power users.',
- url: 'https://discordresources.com',
- baseUrl: '/',
- onBrokenLinks: 'throw',
- onBrokenMarkdownLinks: 'warn',
- favicon: 'img/favicon.ico',
- organizationName: 'Discord-Resources-Wiki',
- projectName: 'Discord-Resources-Wiki',
+ title: 'Discord Resources',
+ tagline:
+ 'A list of tons of useful discord resources and utilities for all types of users, from beginners to power users.',
+ url: 'https://discordresources.com',
+ baseUrl: '/',
+ onBrokenLinks: 'throw',
+ onBrokenMarkdownLinks: 'warn',
+ favicon: 'img/favicon.ico',
+ organizationName: 'Discord-Resources-Wiki',
+ projectName: 'Discord-Resources-Wiki',
- presets: [
- [
- '@docusaurus/preset-classic',
- /** @type {import('@docusaurus/preset-classic').Options} */
- ({
- docs: {
- sidebarPath: require.resolve('./sidebars.js'),
- editUrl: 'https://github.com/Discord-Resources-Wiki/Discord-Resources-Wiki/edit/main/',
- path: 'wiki',
- routeBasePath: '/',
- remarkPlugins: [
- linebreakPlugins,
- inviteWidgetPlugin,
- userWidgetInlinePlugin
- ]
- },
- blog: {
- path: 'blog',
- routeBasePath: '/blog/',
- showReadingTime: true,
- remarkPlugins: [
- linebreakPlugins,
- inviteWidgetPlugin,
- blogAuthorWidgetPlugin,
- userWidgetInlinePlugin]
- },
- theme: {
- customCss: [
- require.resolve('inter-ui/inter.css'),
- require.resolve('./src/css/custom.css')
- ],
- },
- }),
- ],
- ],
+ presets: [
+ [
+ '@docusaurus/preset-classic',
+ /** @type {import('@docusaurus/preset-classic').Options} */
+ ({
+ docs: {
+ sidebarPath: require.resolve('./sidebars.js'),
+ editUrl: 'https://github.com/Discord-Resources-Wiki/Discord-Resources-Wiki/edit/main/',
+ path: 'wiki',
+ routeBasePath: '/',
+ remarkPlugins: [linebreakPlugins, inviteWidgetPlugin, userWidgetInlinePlugin],
+ },
+ blog: {
+ path: 'blog',
+ routeBasePath: '/blog/',
+ showReadingTime: true,
+ remarkPlugins: [
+ linebreakPlugins,
+ inviteWidgetPlugin,
+ blogAuthorWidgetPlugin,
+ userWidgetInlinePlugin,
+ ],
+ },
+ theme: {
+ customCss: [
+ require.resolve('inter-ui/inter.css'),
+ require.resolve('./src/css/custom.css'),
+ ],
+ },
+ }),
+ ],
+ ],
- themeConfig:
- /** @type {import('@docusaurus/preset-classic').ThemeConfig} */
- ({
- // We don't set the description and title here to assure that the right og:tags will be delivered per page.
- metadata: [
- {
- name: 'og:image',
- content: 'https://discordresources.com/img/logo-background.png'
- },
- {
- name: 'theme-color',
- content: '#C272CC'
- },
- {
- name: 'twitter:card',
- content: 'summary'
- },
- ],
- colorMode: {
- defaultMode: 'dark'
- },
- navbar: {
- title: 'Discord Resources',
- logo: {
- alt: 'My Site Logo',
- src: 'img/logo-small.png',
- href: '/'
- },
- items: [
- {
- to: '/',
- label: 'Wiki',
- position: 'left',
- },
- {
- to: 'blog',
- label: 'Blog',
- position: 'left',
- },
- {
- href: 'https://github.com/rydixulous/Discord-Resources-n-More',
- className: 'navbar-item-github',
- position: 'right',
- },
- {
- href: 'https://discord.gg/AJX6cVWeJg',
- className: 'navbar-item-discord',
- position: 'right',
- },
- ],
- },
- prism: {
- theme: lightCodeTheme,
- darkTheme: darkCodeTheme,
- },
- algolia: {
- // The application ID provided by Algolia
- appId: 'KO08RT1BUB',
+ themeConfig:
+ /** @type {import('@docusaurus/preset-classic').ThemeConfig} */
+ ({
+ // We don't set the description and title here to assure that the right og:tags will be delivered per page.
+ metadata: [
+ {
+ name: 'og:image',
+ content: 'https://discordresources.com/img/logo-background.png',
+ },
+ {
+ name: 'theme-color',
+ content: '#C272CC',
+ },
+ {
+ name: 'twitter:card',
+ content: 'summary',
+ },
+ ],
+ colorMode: {
+ defaultMode: 'dark',
+ },
+ navbar: {
+ title: 'Discord Resources',
+ logo: {
+ alt: 'My Site Logo',
+ src: 'img/logo-small.png',
+ href: '/',
+ },
+ items: [
+ {
+ to: '/',
+ label: 'Wiki',
+ position: 'left',
+ },
+ {
+ to: 'blog',
+ label: 'Blog',
+ position: 'left',
+ },
+ {
+ href: 'https://github.com/rydixulous/Discord-Resources-n-More',
+ className: 'navbar-item-github',
+ position: 'right',
+ },
+ {
+ href: 'https://discord.gg/AJX6cVWeJg',
+ className: 'navbar-item-discord',
+ position: 'right',
+ },
+ ],
+ },
+ prism: {
+ theme: lightCodeTheme,
+ darkTheme: darkCodeTheme,
+ },
+ algolia: {
+ // The application ID provided by Algolia
+ appId: 'KO08RT1BUB',
- // Public API key: it is safe to commit it
- apiKey: '90b11a8ac9c24d6fc6aa7aa88c159215',
+ // Public API key: it is safe to commit it
+ apiKey: '90b11a8ac9c24d6fc6aa7aa88c159215',
- indexName: 'discordresources'
- }
- })
+ indexName: 'discordresources',
+ },
+ }),
};
module.exports = config;
diff --git a/package-lock.json b/package-lock.json
index b85a0ee8..4f47456d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -27,6 +27,14 @@
"react-dom": "^17.0.1",
"url-loader": "^4.1.1",
"webpack": "^4.39.2"
+ },
+ "devDependencies": {
+ "eslint": "^8.19.0",
+ "eslint-config-prettier": "^8.5.0",
+ "eslint-plugin-import": "^2.26.0",
+ "eslint-plugin-prettier": "^4.2.1",
+ "eslint-plugin-react": "^7.30.1",
+ "prettier": "^2.7.1"
}
},
"node_modules/@algolia/autocomplete-core": {
@@ -5089,6 +5097,88 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"license": "MIT"
},
+ "node_modules/@eslint/eslintrc": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz",
+ "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==",
+ "devOptional": true,
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.3.2",
+ "globals": "^13.15.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "devOptional": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/globals": {
+ "version": "13.15.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz",
+ "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==",
+ "devOptional": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "devOptional": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/@eslint/eslintrc/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==",
+ "devOptional": true
+ },
+ "node_modules/@eslint/eslintrc/node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/@hapi/hoek": {
"version": "9.3.0",
"resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
@@ -5104,6 +5194,49 @@
"@hapi/hoek": "^9.0.0"
}
},
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.9.5",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz",
+ "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==",
+ "devOptional": true,
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^1.2.1",
+ "debug": "^4.1.1",
+ "minimatch": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=10.10.0"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "devOptional": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@humanwhocodes/config-array/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==",
+ "devOptional": true
+ },
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
+ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
+ "devOptional": true
+ },
"node_modules/@jridgewell/gen-mapping": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
@@ -6353,6 +6486,12 @@
"integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
"license": "MIT"
},
+ "node_modules/@types/json5": {
+ "version": "0.0.29",
+ "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
+ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
+ "dev": true
+ },
"node_modules/@types/mdast": {
"version": "3.0.10",
"resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz",
@@ -7055,6 +7194,15 @@
"acorn": "^8"
}
},
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "devOptional": true,
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
"node_modules/acorn-walk": {
"version": "8.2.0",
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
@@ -7357,6 +7505,25 @@
"integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
"license": "MIT"
},
+ "node_modules/array-includes": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz",
+ "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.19.5",
+ "get-intrinsic": "^1.1.1",
+ "is-string": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/array-union": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
@@ -7375,6 +7542,42 @@
"node": ">=0.10.0"
}
},
+ "node_modules/array.prototype.flat": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz",
+ "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.2",
+ "es-shim-unscopables": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.flatmap": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz",
+ "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.2",
+ "es-shim-unscopables": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/asap": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
@@ -9449,6 +9652,12 @@
"node": ">=4.0.0"
}
},
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "devOptional": true
+ },
"node_modules/deepmerge": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
@@ -9777,6 +9986,18 @@
"node": ">=6"
}
},
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "devOptional": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
"node_modules/dom-converter": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
@@ -10108,6 +10329,15 @@
"integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==",
"license": "MIT"
},
+ "node_modules/es-shim-unscopables": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
+ "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==",
+ "dev": true,
+ "dependencies": {
+ "has": "^1.0.3"
+ }
+ },
"node_modules/es-to-primitive": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
@@ -10161,6 +10391,340 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/eslint": {
+ "version": "8.19.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.19.0.tgz",
+ "integrity": "sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw==",
+ "devOptional": true,
+ "dependencies": {
+ "@eslint/eslintrc": "^1.3.0",
+ "@humanwhocodes/config-array": "^0.9.2",
+ "ajv": "^6.10.0",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "doctrine": "^3.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^7.1.1",
+ "eslint-utils": "^3.0.0",
+ "eslint-visitor-keys": "^3.3.0",
+ "espree": "^9.3.2",
+ "esquery": "^1.4.0",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "functional-red-black-tree": "^1.0.1",
+ "glob-parent": "^6.0.1",
+ "globals": "^13.15.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.0.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "js-yaml": "^4.1.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.1",
+ "regexpp": "^3.2.0",
+ "strip-ansi": "^6.0.1",
+ "strip-json-comments": "^3.1.0",
+ "text-table": "^0.2.0",
+ "v8-compile-cache": "^2.0.3"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-config-prettier": {
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz",
+ "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==",
+ "dev": true,
+ "bin": {
+ "eslint-config-prettier": "bin/cli.js"
+ },
+ "peerDependencies": {
+ "eslint": ">=7.0.0"
+ }
+ },
+ "node_modules/eslint-import-resolver-node": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz",
+ "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^3.2.7",
+ "resolve": "^1.20.0"
+ }
+ },
+ "node_modules/eslint-import-resolver-node/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-import-resolver-node/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/eslint-module-utils": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz",
+ "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^3.2.7",
+ "find-up": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint-module-utils/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-module-utils/node_modules/find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint-module-utils/node_modules/locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint-module-utils/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/eslint-module-utils/node_modules/p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
+ "dependencies": {
+ "p-try": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint-module-utils/node_modules/p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint-module-utils/node_modules/p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint-module-utils/node_modules/path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint-plugin-import": {
+ "version": "2.26.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz",
+ "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==",
+ "dev": true,
+ "dependencies": {
+ "array-includes": "^3.1.4",
+ "array.prototype.flat": "^1.2.5",
+ "debug": "^2.6.9",
+ "doctrine": "^2.1.0",
+ "eslint-import-resolver-node": "^0.3.6",
+ "eslint-module-utils": "^2.7.3",
+ "has": "^1.0.3",
+ "is-core-module": "^2.8.1",
+ "is-glob": "^4.0.3",
+ "minimatch": "^3.1.2",
+ "object.values": "^1.1.5",
+ "resolve": "^1.22.0",
+ "tsconfig-paths": "^3.14.1"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eslint-plugin-import/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/eslint-plugin-prettier": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz",
+ "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==",
+ "dev": true,
+ "dependencies": {
+ "prettier-linter-helpers": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "eslint": ">=7.28.0",
+ "prettier": ">=2.0.0"
+ },
+ "peerDependenciesMeta": {
+ "eslint-config-prettier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-plugin-react": {
+ "version": "7.30.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.30.1.tgz",
+ "integrity": "sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg==",
+ "dev": true,
+ "dependencies": {
+ "array-includes": "^3.1.5",
+ "array.prototype.flatmap": "^1.3.0",
+ "doctrine": "^2.1.0",
+ "estraverse": "^5.3.0",
+ "jsx-ast-utils": "^2.4.1 || ^3.0.0",
+ "minimatch": "^3.1.2",
+ "object.entries": "^1.1.5",
+ "object.fromentries": "^2.0.5",
+ "object.hasown": "^1.1.1",
+ "object.values": "^1.1.5",
+ "prop-types": "^15.8.1",
+ "resolve": "^2.0.0-next.3",
+ "semver": "^6.3.0",
+ "string.prototype.matchall": "^4.0.7"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/eslint-plugin-react/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/eslint-plugin-react/node_modules/resolve": {
+ "version": "2.0.0-next.4",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz",
+ "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==",
+ "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/eslint-scope": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
@@ -10174,6 +10738,152 @@
"node": ">=4.0.0"
}
},
+ "node_modules/eslint-utils": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
+ "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
+ "devOptional": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^2.0.0"
+ },
+ "engines": {
+ "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
+ },
+ "peerDependencies": {
+ "eslint": ">=5"
+ }
+ },
+ "node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
+ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
+ "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
+ "devOptional": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/eslint/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "devOptional": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint/node_modules/eslint-scope": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
+ "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
+ "devOptional": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/eslint/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/eslint/node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "devOptional": true,
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/eslint/node_modules/globals": {
+ "version": "13.15.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz",
+ "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==",
+ "devOptional": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "devOptional": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/eslint/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==",
+ "devOptional": true
+ },
+ "node_modules/eslint/node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/espree": {
+ "version": "9.3.2",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz",
+ "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==",
+ "devOptional": true,
+ "dependencies": {
+ "acorn": "^8.7.1",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
"node_modules/esprima": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
@@ -10187,6 +10897,27 @@
"node": ">=4"
}
},
+ "node_modules/esquery": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
+ "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+ "devOptional": true,
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esquery/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
"node_modules/esrecurse": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
@@ -10440,6 +11171,12 @@
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
"license": "MIT"
},
+ "node_modules/fast-diff": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz",
+ "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==",
+ "dev": true
+ },
"node_modules/fast-glob": {
"version": "3.2.11",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
@@ -10520,6 +11257,12 @@
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
"license": "MIT"
},
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "devOptional": true
+ },
"node_modules/fast-url-parser": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz",
@@ -10594,6 +11337,18 @@
"integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==",
"license": "ISC"
},
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "devOptional": true,
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
"node_modules/file-loader": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz",
@@ -10710,6 +11465,40 @@
"node": ">=6"
}
},
+ "node_modules/flat-cache": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
+ "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
+ "devOptional": true,
+ "dependencies": {
+ "flatted": "^3.1.0",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/flat-cache/node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "devOptional": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz",
+ "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==",
+ "devOptional": true
+ },
"node_modules/flush-write-stream": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
@@ -11235,6 +12024,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
+ "devOptional": true
+ },
"node_modules/functions-have-names": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
@@ -13058,6 +13853,12 @@
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"license": "MIT"
},
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "devOptional": true
+ },
"node_modules/json5": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
@@ -13087,6 +13888,19 @@
"graceful-fs": "^4.1.6"
}
},
+ "node_modules/jsx-ast-utils": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.1.tgz",
+ "integrity": "sha512-pxrjmNpeRw5wwVeWyEAk7QJu2GnBO3uzPFmHCKJJFPKK2Cy0cWL23krGtLdnMmbIi6/FjlrQpPyfQI19ByPOhQ==",
+ "dev": true,
+ "dependencies": {
+ "array-includes": "^3.1.5",
+ "object.assign": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
"node_modules/keyv": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
@@ -13152,6 +13966,19 @@
"node": ">=6"
}
},
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "devOptional": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
"node_modules/lilconfig": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz",
@@ -13246,6 +14073,12 @@
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
"integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4="
},
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "devOptional": true
+ },
"node_modules/lodash.sortby": {
"version": "4.7.0",
"resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
@@ -13966,6 +14799,12 @@
"node": ">=0.10.0"
}
},
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "devOptional": true
+ },
"node_modules/negotiator": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
@@ -14249,6 +15088,37 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/object.entries": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz",
+ "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.fromentries": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz",
+ "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/object.getownpropertydescriptors": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz",
@@ -14266,6 +15136,19 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/object.hasown": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz",
+ "integrity": "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==",
+ "dev": true,
+ "dependencies": {
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.19.5"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/object.pick": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
@@ -14384,6 +15267,23 @@
"opener": "bin/opener-bin.js"
}
},
+ "node_modules/optionator": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
+ "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
+ "devOptional": true,
+ "dependencies": {
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.3"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
"node_modules/os-browserify": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
@@ -15336,6 +16236,15 @@
"postcss": "^8.2.15"
}
},
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "devOptional": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
"node_modules/prepend-http": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
@@ -15345,6 +16254,33 @@
"node": ">=4"
}
},
+ "node_modules/prettier": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz",
+ "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==",
+ "dev": true,
+ "bin": {
+ "prettier": "bin-prettier.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/prettier-linter-helpers": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
+ "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
+ "dev": true,
+ "dependencies": {
+ "fast-diff": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
"node_modules/pretty-error": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz",
@@ -16140,6 +17076,18 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/regexpp": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
+ "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
+ }
+ },
"node_modules/regexpu-core": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz",
@@ -17590,6 +18538,25 @@
"node": ">=8"
}
},
+ "node_modules/string.prototype.matchall": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz",
+ "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1",
+ "get-intrinsic": "^1.1.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.3",
+ "regexp.prototype.flags": "^1.4.1",
+ "side-channel": "^1.0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/string.prototype.trimend": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz",
@@ -17643,6 +18610,15 @@
"node": ">=8"
}
},
+ "node_modules/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/strip-bom-string": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
@@ -18275,6 +19251,30 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/tsconfig-paths": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz",
+ "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/json5": "^0.0.29",
+ "json5": "^1.0.1",
+ "minimist": "^1.2.6",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "node_modules/tsconfig-paths/node_modules/json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
"node_modules/tslib": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
@@ -18287,6 +19287,18 @@
"integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
"license": "MIT"
},
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "devOptional": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
"node_modules/type-fest": {
"version": "2.12.2",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.12.2.tgz",
@@ -19018,6 +20030,12 @@
"uuid": "dist/bin/uuid"
}
},
+ "node_modules/v8-compile-cache": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
+ "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
+ "devOptional": true
+ },
"node_modules/value-equal": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz",
@@ -19693,6 +20711,15 @@
"integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==",
"license": "MIT"
},
+ "node_modules/word-wrap": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
+ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/worker-farm": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
@@ -23296,6 +24323,64 @@
}
}
},
+ "@eslint/eslintrc": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz",
+ "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==",
+ "devOptional": true,
+ "requires": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.3.2",
+ "globals": "^13.15.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "devOptional": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "globals": {
+ "version": "13.15.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz",
+ "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==",
+ "devOptional": true,
+ "requires": {
+ "type-fest": "^0.20.2"
+ }
+ },
+ "minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "devOptional": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "devOptional": true
+ },
+ "type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "devOptional": true
+ }
+ }
+ },
"@hapi/hoek": {
"version": "9.3.0",
"resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
@@ -23309,6 +24394,40 @@
"@hapi/hoek": "^9.0.0"
}
},
+ "@humanwhocodes/config-array": {
+ "version": "0.9.5",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz",
+ "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==",
+ "devOptional": true,
+ "requires": {
+ "@humanwhocodes/object-schema": "^1.2.1",
+ "debug": "^4.1.1",
+ "minimatch": "^3.0.4"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "devOptional": 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==",
+ "devOptional": true
+ }
+ }
+ },
+ "@humanwhocodes/object-schema": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
+ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
+ "devOptional": true
+ },
"@jridgewell/gen-mapping": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
@@ -24138,6 +25257,12 @@
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
"integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ=="
},
+ "@types/json5": {
+ "version": "0.0.29",
+ "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
+ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
+ "dev": true
+ },
"@types/mdast": {
"version": "3.0.10",
"resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz",
@@ -24766,6 +25891,13 @@
"integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==",
"requires": {}
},
+ "acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "devOptional": true,
+ "requires": {}
+ },
"acorn-walk": {
"version": "8.2.0",
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
@@ -24982,6 +26114,19 @@
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
"integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
},
+ "array-includes": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz",
+ "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.19.5",
+ "get-intrinsic": "^1.1.1",
+ "is-string": "^1.0.7"
+ }
+ },
"array-union": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
@@ -24992,6 +26137,30 @@
"resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
"integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ=="
},
+ "array.prototype.flat": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz",
+ "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.2",
+ "es-shim-unscopables": "^1.0.0"
+ }
+ },
+ "array.prototype.flatmap": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz",
+ "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.2",
+ "es-shim-unscopables": "^1.0.0"
+ }
+ },
"asap": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
@@ -26475,6 +27644,12 @@
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
"integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
},
+ "deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "devOptional": true
+ },
"deepmerge": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
@@ -26701,6 +27876,15 @@
"@leichtgewicht/ip-codec": "^2.0.1"
}
},
+ "doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "devOptional": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
"dom-converter": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
@@ -26949,6 +28133,15 @@
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
"integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ=="
},
+ "es-shim-unscopables": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
+ "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.3"
+ }
+ },
"es-to-primitive": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
@@ -26979,6 +28172,334 @@
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
},
+ "eslint": {
+ "version": "8.19.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.19.0.tgz",
+ "integrity": "sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw==",
+ "devOptional": true,
+ "requires": {
+ "@eslint/eslintrc": "^1.3.0",
+ "@humanwhocodes/config-array": "^0.9.2",
+ "ajv": "^6.10.0",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "doctrine": "^3.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^7.1.1",
+ "eslint-utils": "^3.0.0",
+ "eslint-visitor-keys": "^3.3.0",
+ "espree": "^9.3.2",
+ "esquery": "^1.4.0",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "functional-red-black-tree": "^1.0.1",
+ "glob-parent": "^6.0.1",
+ "globals": "^13.15.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.0.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "js-yaml": "^4.1.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.1",
+ "regexpp": "^3.2.0",
+ "strip-ansi": "^6.0.1",
+ "strip-json-comments": "^3.1.0",
+ "text-table": "^0.2.0",
+ "v8-compile-cache": "^2.0.3"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "devOptional": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "eslint-scope": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
+ "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
+ "devOptional": true,
+ "requires": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ }
+ },
+ "estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "devOptional": true
+ },
+ "glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "devOptional": true,
+ "requires": {
+ "is-glob": "^4.0.3"
+ }
+ },
+ "globals": {
+ "version": "13.15.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz",
+ "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==",
+ "devOptional": true,
+ "requires": {
+ "type-fest": "^0.20.2"
+ }
+ },
+ "minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "devOptional": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "devOptional": true
+ },
+ "type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "devOptional": true
+ }
+ }
+ },
+ "eslint-config-prettier": {
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz",
+ "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==",
+ "dev": true,
+ "requires": {}
+ },
+ "eslint-import-resolver-node": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz",
+ "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==",
+ "dev": true,
+ "requires": {
+ "debug": "^3.2.7",
+ "resolve": "^1.20.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "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
+ }
+ }
+ },
+ "eslint-module-utils": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz",
+ "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==",
+ "dev": true,
+ "requires": {
+ "debug": "^3.2.7",
+ "find-up": "^2.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "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
+ },
+ "p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
+ "requires": {
+ "p-try": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ },
+ "p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-plugin-import": {
+ "version": "2.26.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz",
+ "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==",
+ "dev": true,
+ "requires": {
+ "array-includes": "^3.1.4",
+ "array.prototype.flat": "^1.2.5",
+ "debug": "^2.6.9",
+ "doctrine": "^2.1.0",
+ "eslint-import-resolver-node": "^0.3.6",
+ "eslint-module-utils": "^2.7.3",
+ "has": "^1.0.3",
+ "is-core-module": "^2.8.1",
+ "is-glob": "^4.0.3",
+ "minimatch": "^3.1.2",
+ "object.values": "^1.1.5",
+ "resolve": "^1.22.0",
+ "tsconfig-paths": "^3.14.1"
+ },
+ "dependencies": {
+ "doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "eslint-plugin-prettier": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz",
+ "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==",
+ "dev": true,
+ "requires": {
+ "prettier-linter-helpers": "^1.0.0"
+ }
+ },
+ "eslint-plugin-react": {
+ "version": "7.30.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.30.1.tgz",
+ "integrity": "sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg==",
+ "dev": true,
+ "requires": {
+ "array-includes": "^3.1.5",
+ "array.prototype.flatmap": "^1.3.0",
+ "doctrine": "^2.1.0",
+ "estraverse": "^5.3.0",
+ "jsx-ast-utils": "^2.4.1 || ^3.0.0",
+ "minimatch": "^3.1.2",
+ "object.entries": "^1.1.5",
+ "object.fromentries": "^2.0.5",
+ "object.hasown": "^1.1.1",
+ "object.values": "^1.1.5",
+ "prop-types": "^15.8.1",
+ "resolve": "^2.0.0-next.3",
+ "semver": "^6.3.0",
+ "string.prototype.matchall": "^4.0.7"
+ },
+ "dependencies": {
+ "doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
+ "estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "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"
+ }
+ },
+ "resolve": {
+ "version": "2.0.0-next.4",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz",
+ "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==",
+ "dev": true,
+ "requires": {
+ "is-core-module": "^2.9.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ }
+ }
+ }
+ },
"eslint-scope": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
@@ -26988,11 +28509,62 @@
"estraverse": "^4.1.1"
}
},
+ "eslint-utils": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
+ "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
+ "devOptional": true,
+ "requires": {
+ "eslint-visitor-keys": "^2.0.0"
+ },
+ "dependencies": {
+ "eslint-visitor-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
+ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
+ "devOptional": true
+ }
+ }
+ },
+ "eslint-visitor-keys": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
+ "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
+ "devOptional": true
+ },
+ "espree": {
+ "version": "9.3.2",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz",
+ "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==",
+ "devOptional": true,
+ "requires": {
+ "acorn": "^8.7.1",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.3.0"
+ }
+ },
"esprima": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
},
+ "esquery": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
+ "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+ "devOptional": true,
+ "requires": {
+ "estraverse": "^5.1.0"
+ },
+ "dependencies": {
+ "estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "devOptional": true
+ }
+ }
+ },
"esrecurse": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
@@ -27182,6 +28754,12 @@
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
},
+ "fast-diff": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz",
+ "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==",
+ "dev": true
+ },
"fast-glob": {
"version": "3.2.11",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
@@ -27239,6 +28817,12 @@
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
},
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "devOptional": true
+ },
"fast-url-parser": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz",
@@ -27303,6 +28887,15 @@
"resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
"integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw=="
},
+ "file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "devOptional": true,
+ "requires": {
+ "flat-cache": "^3.0.4"
+ }
+ },
"file-loader": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz",
@@ -27382,6 +28975,33 @@
"locate-path": "^3.0.0"
}
},
+ "flat-cache": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
+ "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
+ "devOptional": true,
+ "requires": {
+ "flatted": "^3.1.0",
+ "rimraf": "^3.0.2"
+ },
+ "dependencies": {
+ "rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "devOptional": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ }
+ }
+ },
+ "flatted": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz",
+ "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==",
+ "devOptional": true
+ },
"flush-write-stream": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
@@ -27738,6 +29358,12 @@
"functions-have-names": "^1.2.2"
}
},
+ "functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
+ "devOptional": true
+ },
"functions-have-names": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
@@ -28951,6 +30577,12 @@
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
+ "json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "devOptional": true
+ },
"json5": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
@@ -28970,6 +30602,16 @@
"universalify": "^2.0.0"
}
},
+ "jsx-ast-utils": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.1.tgz",
+ "integrity": "sha512-pxrjmNpeRw5wwVeWyEAk7QJu2GnBO3uzPFmHCKJJFPKK2Cy0cWL23krGtLdnMmbIi6/FjlrQpPyfQI19ByPOhQ==",
+ "dev": true,
+ "requires": {
+ "array-includes": "^3.1.5",
+ "object.assign": "^4.1.2"
+ }
+ },
"keyv": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
@@ -29014,6 +30656,16 @@
"resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
"integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A=="
},
+ "levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "devOptional": true,
+ "requires": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ }
+ },
"lilconfig": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz",
@@ -29088,6 +30740,12 @@
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
"integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4="
},
+ "lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "devOptional": true
+ },
"lodash.sortby": {
"version": "4.7.0",
"resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
@@ -29609,6 +31267,12 @@
}
}
},
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "devOptional": true
+ },
"negotiator": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
@@ -29811,6 +31475,28 @@
"object-keys": "^1.1.1"
}
},
+ "object.entries": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz",
+ "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1"
+ }
+ },
+ "object.fromentries": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz",
+ "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1"
+ }
+ },
"object.getownpropertydescriptors": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz",
@@ -29821,6 +31507,16 @@
"es-abstract": "^1.19.1"
}
},
+ "object.hasown": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz",
+ "integrity": "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.19.5"
+ }
+ },
"object.pick": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
@@ -29898,6 +31594,20 @@
"resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz",
"integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A=="
},
+ "optionator": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
+ "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
+ "devOptional": true,
+ "requires": {
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.3"
+ }
+ },
"os-browserify": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
@@ -30496,11 +32206,32 @@
"integrity": "sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==",
"requires": {}
},
+ "prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "devOptional": true
+ },
"prepend-http": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
"integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc="
},
+ "prettier": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz",
+ "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==",
+ "dev": true
+ },
+ "prettier-linter-helpers": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
+ "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
+ "dev": true,
+ "requires": {
+ "fast-diff": "^1.1.2"
+ }
+ },
"pretty-error": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz",
@@ -31091,6 +32822,12 @@
"functions-have-names": "^1.2.2"
}
},
+ "regexpp": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
+ "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
+ "devOptional": true
+ },
"regexpu-core": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz",
@@ -32147,6 +33884,22 @@
"strip-ansi": "^6.0.1"
}
},
+ "string.prototype.matchall": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz",
+ "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1",
+ "get-intrinsic": "^1.1.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.3",
+ "regexp.prototype.flags": "^1.4.1",
+ "side-channel": "^1.0.4"
+ }
+ },
"string.prototype.trimend": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz",
@@ -32185,6 +33938,12 @@
"ansi-regex": "^5.0.1"
}
},
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "dev": true
+ },
"strip-bom-string": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
@@ -32625,6 +34384,29 @@
"resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz",
"integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA=="
},
+ "tsconfig-paths": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz",
+ "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==",
+ "dev": true,
+ "requires": {
+ "@types/json5": "^0.0.29",
+ "json5": "^1.0.1",
+ "minimist": "^1.2.6",
+ "strip-bom": "^3.0.0"
+ },
+ "dependencies": {
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.0"
+ }
+ }
+ }
+ },
"tslib": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
@@ -32635,6 +34417,15 @@
"resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
"integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY="
},
+ "type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "devOptional": true,
+ "requires": {
+ "prelude-ls": "^1.2.1"
+ }
+ },
"type-fest": {
"version": "2.12.2",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.12.2.tgz",
@@ -33106,6 +34897,12 @@
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
},
+ "v8-compile-cache": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
+ "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
+ "devOptional": true
+ },
"value-equal": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz",
@@ -33590,6 +35387,12 @@
"resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz",
"integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw=="
},
+ "word-wrap": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
+ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+ "devOptional": true
+ },
"worker-farm": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
diff --git a/package.json b/package.json
index d4e7552c..e84a080e 100644
--- a/package.json
+++ b/package.json
@@ -12,7 +12,12 @@
"serve": "docusaurus serve",
"write-translations": "docusaurus write-translations",
"write-heading-ids": "docusaurus write-heading-ids",
- "lint": "markdownlint --ignore-path .gitignore **/*.md **/*.markdown **/*.mdx"
+ "lint": "npm run lint:markdown & npm run lint:js",
+ "lint:markdown": "markdownlint --config .markdownlintrc.js --ignore-path .gitignore **/*.md **/*.markdown **/*.mdx",
+ "lint:js": "eslint --config .eslintrc.js --ignore-path .gitignore --ext .js **/*.js **/*.jsx",
+ "fix": "npm run fix:markdown & npm run fix:js",
+ "fix:markdown": "markdownlint --config .markdownlintrc.js --fix --ignore-path .gitignore **/*.md **/*.markdown **/*.mdx",
+ "fix:js": "eslint --config .eslintrc.js --fix --ignore-path .gitignore --ext .js **/*.js **/*.jsx"
},
"dependencies": {
"@discordjs/rest": "0.4.1",
@@ -46,5 +51,13 @@
"last 1 firefox version",
"last 1 safari version"
]
+ },
+ "devDependencies": {
+ "eslint": "^8.19.0",
+ "eslint-config-prettier": "^8.5.0",
+ "eslint-plugin-import": "^2.26.0",
+ "eslint-plugin-prettier": "^4.2.1",
+ "eslint-plugin-react": "^7.30.1",
+ "prettier": "^2.7.1"
}
}
\ No newline at end of file
diff --git a/sidebars.js b/sidebars.js
index fd342f2c..1969558c 100644
--- a/sidebars.js
+++ b/sidebars.js
@@ -13,11 +13,11 @@
/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */
const sidebars = {
- // By default, Docusaurus generates a sidebar from the docs folder structure
- tutorialSidebar: [{type: 'autogenerated', dirName: '.'}],
+ // By default, Docusaurus generates a sidebar from the docs folder structure
+ tutorialSidebar: [{type: 'autogenerated', dirName: '.'}],
- // But you can create a sidebar manually
- /*
+ // But you can create a sidebar manually
+ /*
tutorialSidebar: [
{
type: 'category',
diff --git a/src/components/BlogAuthorWidget.jsx b/src/components/BlogAuthorWidget.jsx
index fa64cfc5..37f6e9ec 100644
--- a/src/components/BlogAuthorWidget.jsx
+++ b/src/components/BlogAuthorWidget.jsx
@@ -1,43 +1,58 @@
-import React from 'react'
+import React from 'react';
export default function BlogAuthorWidget({data}) {
- function authorName(user) {
- if (user.type === 'discord') {
- return {user.name}#{user.discriminator}
- } else {
- return user.name
- }
- }
+ function authorName(user) {
+ if (user.type === 'discord') {
+ return (
+
+ {user.name}
+ #{user.discriminator}
+
+ );
+ } else {
+ return user.name;
+ }
+ }
- function authorId(user) {
- return user.type === 'discord' ? user.id : user.username
- }
+ function authorId(user) {
+ return user.type === 'discord' ? user.id : user.username;
+ }
- return (
-
-
+
-
- )
-}
\ No newline at end of file
+ const {isDarkTheme} = useColorMode();
+ return (
+
+
+
+ );
+}
diff --git a/src/components/OutsideClickHandler.jsx b/src/components/OutsideClickHandler.jsx
index 4f5d4f90..15a656c4 100644
--- a/src/components/OutsideClickHandler.jsx
+++ b/src/components/OutsideClickHandler.jsx
@@ -1,22 +1,18 @@
-import React, {useRef, useEffect} from "react";
+import React, {useRef, useEffect} from 'react';
export default function OutsideClickHandler({children, onClickOutside}) {
- const wrapperRef = useRef(null)
+ const wrapperRef = useRef(null);
- function handleOutsideClick(e) {
- if (wrapperRef.current && !wrapperRef.current.contains(e.target)) {
- onClickOutside(e)
- }
- }
+ function handleOutsideClick(e) {
+ if (wrapperRef.current && !wrapperRef.current.contains(e.target)) {
+ onClickOutside(e);
+ }
+ }
- useEffect(() => {
- document.addEventListener('mousedown', handleOutsideClick)
- return () => document.removeEventListener('mousedown', handleOutsideClick)
- }, [])
+ useEffect(() => {
+ document.addEventListener('mousedown', handleOutsideClick);
+ return () => document.removeEventListener('mousedown', handleOutsideClick);
+ }, []);
- return (
-
- {children}
-
- )
-}
\ No newline at end of file
+ return {children};
+}
diff --git a/src/components/Tooltip.jsx b/src/components/Tooltip.jsx
index ff48baa5..cb5d9a3f 100644
--- a/src/components/Tooltip.jsx
+++ b/src/components/Tooltip.jsx
@@ -1,29 +1,36 @@
-import styles from '../css/Tooltip.module.css'
-import React, {useState} from 'react'
-import OutsideClickHandler from "./OutsideClickHandler";
-import {
- useColorMode,
- } from '@docusaurus/theme-common';
+import styles from '../css/Tooltip.module.css';
+import React, {useState} from 'react';
+import OutsideClickHandler from './OutsideClickHandler';
+import {useColorMode} from '@docusaurus/theme-common';
export default function Tooltip({children, title, mode = 'hover'}) {
- const [visible, setVisible] = useState(false)
- const {isDarkTheme} = useColorMode();;
- return (
-
- {userName()}
-
-
-
+ {userName()}
+
+
+
'
- }
- })
- }
- return markdownAST
- }
+ return function transformer(markdownAST) {
+ let found = true;
+ while (found) {
+ found = false;
+ findAndReplace(markdownAST, linebreakRegex, () => {
+ found = true;
+ return {
+ type: 'html',
+ value: '
',
+ };
+ });
+ }
+ return markdownAST;
+ };
}
-module.exports = inviteWidgetPlugin
\ No newline at end of file
+module.exports = inviteWidgetPlugin;
diff --git a/src/plugins/userWidgetInlinePlugin.js b/src/plugins/userWidgetInlinePlugin.js
index 3b00ed56..d29352c6 100644
--- a/src/plugins/userWidgetInlinePlugin.js
+++ b/src/plugins/userWidgetInlinePlugin.js
@@ -2,53 +2,53 @@ const findAndReplace = require('mdast-util-find-and-replace');
const {users, fetchUserByIdentifier, userIdentifierRegex} = require('../lib/users');
-function userWidgetInlinePlugin(options) {
- const identifierRegex = new RegExp(`@${userIdentifierRegex}`, 'g')
-
- return async function transformer(markdownAST) {
- markdownAST.children.splice(0, 0, {
- type: 'import',
- value: 'import UserWidgetInline from \'@site/src/components/UserWidgetInline\';'
- })
-
- const toLoad = []
-
- function replaceOrCollect(match) {
- const userId = match.substring(1)
- if (users.hasOwnProperty(userId)) {
- let loadedUser = users[userId]
- return {
- type: 'jsx',
- value: `
+
+> **Description:** Pick a date, copy the desired timestamp from the Chat syntax column, then paste it anywhere in a chat message.
The result will be a dynamic timestamp that displays differently for everyone based on their own timezone.
-__Link:__ [HammerTime](https://hammertime.djdavid98.art/)
-__Credit:__ @140360880079503362
+**Link:** [HammerTime](https://hammertime.djdavid98.art/)
+**Credit:** @140360880079503362
-### **Snow-Stamp (Snowflake to Timestamp Converter)**
-> __Description:__ Converts a user’s snowflake into the timestamp the account was created.
-__Link:__ [Snow-Stamp](https://snowsta.mp/)
-__Credit:__ @86913608335773696
+### **Snow-Stamp (Snowflake to Timestamp Converter)**
-### **DateTimeCord**
-> __Description:__ A useful website to generate date and time formatting Markdown for discord. Supports all the formatting options that Discord does, as well as shows a preview of how it would look in Discord.
-__Link:__ [DateTimeCord](https://datetimecord.rauf.wtf/)
-__Credit:__ @172557961133162496
+> **Description:** Converts a user’s snowflake into the timestamp the account was created.
+**Link:** [Snow-Stamp](https://snowsta.mp/)
+**Credit:** @86913608335773696
+
+### **DateTimeCord**
+
+> **Description:** A useful website to generate date and time formatting Markdown for discord. Supports all the formatting options that Discord does, as well as shows a preview of how it would look in Discord.
+**Link:** [DateTimeCord](https://datetimecord.rauf.wtf/)
+**Credit:** @172557961133162496
### **Alfred time converters plugins**
-> __Description:__ Alfred plugins to convert time to timestamps and vice versa.
-__Link(s):__
+
+> **Description:** Alfred plugins to convert time to timestamps and vice versa.
+**Link(s):**
[Alfred-Whencord](https://github.com/HilbertGilbertson/alfred-whencord)
[Alfred-Snowcord](https://github.com/HilbertGilbertson/alfred-snowcord)
-__Credit:__ @213023662066892800
+**Credit:** @213023662066892800
### **Epoch Converter (Epoch & Unix timestamp conversion tools)**
-> __Description:__ Converts a given time into a Unix timestamp.
-__Link:__ [Epoch Converter](https://www.epochconverter.com/)
+
+> **Description:** Converts a given time into a Unix timestamp.
+**Link:** [Epoch Converter](https://www.epochconverter.com/)
### **Unix Timestamps Decoder**
-> __Description:__ Decodes a Unix timestamp into a standard MM/DD/YYYY format.
-__Link:__ [Unix Timestamp Decoder](https://www.unixtimestamp.com/)
-## File Converters
+> **Description:** Decodes a Unix timestamp into a standard MM/DD/YYYY format.
+**Link:** [Unix Timestamp Decoder](https://www.unixtimestamp.com/)
+
+## File Converters
### **EzGif**
-> __Description:__ EzGif is An online tool full with media-related utilities.
-__Link:__ [EzGif](https://ezgif.com)
+
+> **Description:** EzGif is An online tool full with media-related utilities.
+**Link:** [EzGif](https://ezgif.com)
### **Text Formatting Tools**
-> __Description:__ A website for converting various text formats.
-__Link:__ [Text Formatting Tools](http://www.unit-conversion.info/texttools/)
+
+> **Description:** A website for converting various text formats.
+**Link:** [Text Formatting Tools](http://www.unit-conversion.info/texttools/)
### **Discord Txt**
-> __Description:__ Used to view .txt files that have been uploaded to Discord.
-__Link:__ [Discord Txt](https://txt.discord.website/)
+
+> **Description:** Used to view .txt files that have been uploaded to Discord.
+**Link:** [Discord Txt](https://txt.discord.website/)
### **File Converter**
-> __Description:__ Convert file types to others.
-__Link:__ [File Converter](https://github.com/Tichau/FileConverter)
-__Credit:__ @Tichau
+
+> **Description:** Convert file types to others.
+**Link:** [File Converter](https://github.com/Tichau/FileConverter)
+**Credit:** @Tichau
### **Color Replacer**
-> __Description:__ Replace a specfic colour of an image.
-__Link:__ [Color Replacer](https://www2.lunapic.com/editor/?action=replace-color)
+
+> **Description:** Replace a specfic colour of an image.
+**Link:** [Color Replacer](https://www2.lunapic.com/editor/?action=replace-color)
### **SVG Converters**
-> __Description:__ High quality SVG converter.
-__Link:__ [SVG Converters](https://picsvg.com/)
+
+> **Description:** High quality SVG converter.
+**Link:** [SVG Converters](https://picsvg.com/)
### **SVG Viewer**
-> __Description:__ View SVG files.
-__Link:__ [SVG Viewer](https://www.svgviewer.dev/)
+
+> **Description:** View SVG files.
+**Link:** [SVG Viewer](https://www.svgviewer.dev/)
### **Youtube Downloader**
-> __Description:__ Download a Youtube video as a file using its URL (either audio only or video).
-__Link:__ [Youtube Downloader](http://youtube.tpcstld.me/)
-__Credit:__ @141065743197405184
+
+> **Description:** Download a Youtube video as a file using its URL (either audio only or video).
+**Link:** [Youtube Downloader](http://youtube.tpcstld.me/)
+**Credit:** @141065743197405184
### **Lottie Image Resizer**
-> __Description:__ Lottie image resize so you can get your Lottie files ≤320px.
-__Link:__ [Lottie Image Resizer](https://lottieresizer.tech/)
+
+> **Description:** Lottie image resize so you can get your Lottie files ≤320px.
+**Link:** [Lottie Image Resizer](https://lottieresizer.tech/)
### **.gif to .apng**
-> __Description:__ Converts .gif files to .apng files.
-__Link:__ [.gif To .apng](https://www.freeconvert.com/convert/gif-to-apng)
+
+> **Description:** Converts .gif files to .apng files.
+**Link:** [.gif To .apng](https://www.freeconvert.com/convert/gif-to-apng)
### **HTML Color Codes**
-> __Description:__ A site that converts a color into hex code and vice versa.
-__Link:__ [HTML Color Codes](https://htmlcolorcodes.com/)
+
+> **Description:** A site that converts a color into hex code and vice versa.
+**Link:** [HTML Color Codes](https://htmlcolorcodes.com/)
### **Image Color Picker**
-> __Description:__ Upload an image and get a specific hex code for a color in the picture.
-__Link:__ [Image Color Picker](https://imagecolorpicker.com/)
+
+> **Description:** Upload an image and get a specific hex code for a color in the picture.
+**Link:** [Image Color Picker](https://imagecolorpicker.com/)
### **Removebg**
- > __Description:__ Remove any background from an image.
- __Link:__ [Removebg](https://www.remove.bg/upload)
+
+ > **Description:** Remove any background from an image.
+ **Link:** [Removebg](https://www.remove.bg/upload)
### **Erase.bg**
-> __Description:__ Remove background from images of humans, animals or objects and download high-resolution images for free.
-__Link:__ [Erase.bg](https://www.erase.bg/)
+
+> **Description:** Remove background from images of humans, animals or objects and download high-resolution images for free.
+**Link:** [Erase.bg](https://www.erase.bg/)
### **Cleanup.pictures**
-> __Description:__ Remove any object, people, text or defects from your pictures.
-__Link:__ [Cleanup.pictures](https://cleanup.pictures/)
+
+> **Description:** Remove any object, people, text or defects from your pictures.
+**Link:** [Cleanup.pictures](https://cleanup.pictures/)
### **Video Compressor**
-> __Description:__ A video compressor designed to compress your videos to the perfect size for Discord upload. It comes with three options which are 8MB, 50MB, and 100MB, which fit various upload restrictions.
-__Link:__ [Video Compressor](https://8mb.video/)
+
+> **Description:** A video compressor designed to compress your videos to the perfect size for Discord upload. It comes with three options which are 8MB, 50MB, and 100MB, which fit various upload restrictions.
+**Link:** [Video Compressor](https://8mb.video/)
diff --git a/wiki/resources/tools/design.md b/wiki/resources/tools/design.md
index dd36d8a8..0e174593 100644
--- a/wiki/resources/tools/design.md
+++ b/wiki/resources/tools/design.md
@@ -5,84 +5,104 @@ description: Design tools
---
# Design
-### **Material Design Icons**
-> __Description:__ A collection of icons centered around material design, allowing for custom format, size, and color.
-__Link:__ [Material Design Icons)](https://materialdesignicons.com/)
-__Credit:__ @github:Templarian
-
-### **Google Fonts Icons**
-> __Description:__ A collection of common icons based around web actions, provided by Google.
-__Link:__ [Google Fonts Icons](https://fonts.google.com/icons)
-__Credit:__ @github:google
-
-### **Branding Style Guides**
-> __Description:__ A collection of different company's branding, including Discords.
-__Link:__ [Branding Style Guides](https://brandingstyleguides.com/)
-
-### **Evernote Design Bookmarks**
-> __Description:__ A list of bookmarks for everything design-resources.
-__Link:__ [Evernote Design](https://www.evernote.design/)
-
-### **Simpleicons**
-> __Description:__ A list of simple icons, including brand icons.
-__Link:__ [Simpleicons](https://simpleicons.org/)
-
-### **Heroicons**
-> __Description:__ Hand-crafted SVG icons.
-__Link:__ [Heroicons](https://heroicons.com/)
-
-### **Coolors**
-> __Description:__ Color schemes generator.
-__Link:__ [Coolors](https://coolors.co/)
-
-### **The Noun Project**
-> __Description:__ Over 3 million community-contributed icons along with icon customization and an API.
-__Link:__ [The Noun Project](https://thenounproject.com/)
-
-### **Adobe Color**
-> __Description:__ A color theme creator with connectivity across Adobe products.
-__Link:__ [Adobe Color](https://color.adobe.com/)
-
-### **Open Color**
-> __Description:__ An open-source color scheme and library set optimized for user interfaces.
-__Link:__ [Open Color](https://yeun.github.io/open-color/)
-__Credit:__ @github:yeun
-
-### **Teeny Icons**
-> __Description:__ A set of minimal 1px icons.
-__Link:__ [Teeny Icons](https://teenyicons.com/)
-__CREDIT:__ @github:@teenyicons
-
-### **Streamline**
-> __Description:__ Over 100k icons, illustrations, and emojis.
-__Link:__ [Streamline](https://streamlinehq.com/)
-
-### **Feather Icons**
-> __Description:__ Simple, open-source icons.
-__Link:__ [Feather Icons](https://feathericons.com/)
-__Credit:__ @github:@feathericons
-
-### **Spectrum**
-> __Description:__ Minimal, consistent UI icons.
-__Link:__ [Spectrum](https://spectrum.adobe.com/page/icons/)
-
-### **Font Awesome**
-> __Description:__ Vector icons and social logos.
-__Link:__ [Font Awesome](https://fontawesome.com/)
-__Credit:__ @github:@FortAwesome
-
-### **ICONS8**
-> __Description:__ Icons, illustrations, photos, music, and design tools.
-__Link:__ [ICONS8](https://icons8.com/)
-
-### **unDraw**
-> __Description:__ Free, open-source illustrations.
-__Link:__ [Feather Icons](https://undraw.co/)
-
-### **tldraw**
-> __Description:__ A simple drawing app.
-__Link:__ [tldraw](https://www.tldraw.com/)
-
-### **Freepik**
-> __Description:__ Free vectors, stock photos, and PSD.
-__Link:__ [Freepik](https://freepik.com/)
+
+## **Material Design Icons**
+
+> **Description:** A collection of icons centered around material design, allowing for custom format, size, and color.
+**Link:** [Material Design Icons)](https://materialdesignicons.com/)
+**Credit:** @github:Templarian
+
+## **Google Fonts Icons**
+
+> **Description:** A collection of common icons based around web actions, provided by Google.
+**Link:** [Google Fonts Icons](https://fonts.google.com/icons)
+**Credit:** @github:google
+
+## **Branding Style Guides**
+
+> **Description:** A collection of different company's branding, including Discords.
+**Link:** [Branding Style Guides](https://brandingstyleguides.com/)
+
+## **Evernote Design Bookmarks**
+
+> **Description:** A list of bookmarks for everything design-resources.
+**Link:** [Evernote Design](https://www.evernote.design/)
+
+## **Simpleicons**
+
+> **Description:** A list of simple icons, including brand icons.
+**Link:** [Simpleicons](https://simpleicons.org/)
+
+## **Heroicons**
+
+> **Description:** Hand-crafted SVG icons.
+**Link:** [Heroicons](https://heroicons.com/)
+
+## **Coolors**
+
+> **Description:** Color schemes generator.
+**Link:** [Coolors](https://coolors.co/)
+
+## **The Noun Project**
+
+> **Description:** Over 3 million community-contributed icons along with icon customization and an API.
+**Link:** [The Noun Project](https://thenounproject.com/)
+
+## **Adobe Color**
+
+> **Description:** A color theme creator with connectivity across Adobe products.
+**Link:** [Adobe Color](https://color.adobe.com/)
+
+## **Open Color**
+
+> **Description:** An open-source color scheme and library set optimized for user interfaces.
+**Link:** [Open Color](https://yeun.github.io/open-color/)
+**Credit:** @github:yeun
+
+## **Teeny Icons**
+
+> **Description:** A set of minimal 1px icons.
+**Link:** [Teeny Icons](https://teenyicons.com/)
+**CREDIT:** @github:@teenyicons
+
+## **Streamline**
+
+> **Description:** Over 100k icons, illustrations, and emojis.
+**Link:** [Streamline](https://streamlinehq.com/)
+
+## **Feather Icons**
+
+> **Description:** Simple, open-source icons.
+**Link:** [Feather Icons](https://feathericons.com/)
+**Credit:** @github:@feathericons
+
+## **Spectrum**
+
+> **Description:** Minimal, consistent UI icons.
+**Link:** [Spectrum](https://spectrum.adobe.com/page/icons/)
+
+## **Font Awesome**
+
+> **Description:** Vector icons and social logos.
+**Link:** [Font Awesome](https://fontawesome.com/)
+**Credit:** @github:@FortAwesome
+
+## **ICONS8**
+
+> **Description:** Icons, illustrations, photos, music, and design tools.
+**Link:** [ICONS8](https://icons8.com/)
+
+## **unDraw**
+
+> **Description:** Free, open-source illustrations.
+**Link:** [Feather Icons](https://undraw.co/)
+
+## **tldraw**
+
+> **Description:** A simple drawing app.
+**Link:** [tldraw](https://www.tldraw.com/)
+
+## **Freepik**
+
+> **Description:** Free vectors, stock photos, and PSD.
+**Link:** [Freepik](https://freepik.com/)
diff --git a/wiki/resources/tools/discord.md b/wiki/resources/tools/discord.md
index 5c57dd5e..09e20441 100644
--- a/wiki/resources/tools/discord.md
+++ b/wiki/resources/tools/discord.md
@@ -6,238 +6,285 @@ description: Discord related tools
# Discord Related
-### **Alternatives to MEE6**
-> __Description:__ A list of Discord bots that can be used in place of MEE6.
-__Link:__ [Alternatives To MEE6](https://www.alternativestomee6.com/)
-__Credit:__ @99787644430475264
-
-### **All Discord Permissions**
-> __Description:__ A list of all the permissions available for users.
-__Link:__ [All Discord Permissions](https://discordapi.com/permissions)
-
-### **Discord Tools**
-> __Description:__ A collection of Discord tools for power users to analyse your guilds, get information on snowflakes, or even see the current status of Discord. Get the number of guilds your account is in, see how many servers you own, moderate, and are partnered, and show lists of all servers in the categories above as well as a list of all servers.
-__Link:__ [Discord Tools](https://discordtools.io/)
-__Credit:__ @276544649148235776
-
-### **Discord Toolbox**
-> __Description:__ Discord tools such as Discord status updates, experiments info and servers/snowflakes lookup.
-__Link:__ [Discord Toolbox](https://distools.app/)
-__Credit:__ @386861188891279362
-
-### **Discord Lookup**
-> __Description:__ Easy to use tool to lookup users, guilds, invites and get information about your guild list with stats, server experiment rollouts, features and permissions view.
-__Link:__ [Discord Lookup](https://discordlookup.com/)
-__Credit:__ @231091710195662848
-
-### **Discord Data Package Explorer**
-> __Description:__ Explore your Discord data easily.
-__Link:__ [Discord Data Package Explorer](https://github.com/Androz2091/discord-data-package-explorer)
-__Credit:__ @github:Androz2091
-
-### **Discord Simple Avatar Maker**
-> __Description:__ A site to make simple Discord avatars.
-__Link:__ [Discord Simple Avatar Maker](https://discord-avatar-maker.app/)
-__Credit:__ @github:christian-reichart
-
-### **Discord Emoji Downloader**
-> __Description:__ This little tool will allow you to download a ZIP archive with all emojis from a Discord server.
-__Link:__ [Discord Emoji Downloader](https://thatiemsz.github.io/Discord-Emoji-Downloader/)
-__Credit:__ @152164749868662784
-
-### **Discord Embed Previewer**
-> __Description:__ A chrome-only extension to preview your website's embeds generated by Open-Graph tags whithout having to deploy it or deal with discord's cache.
-__Link:__ [Discodd Embed Previewe](https://github.com/JohnyTheCarrot/discord-embed-previewer)
-__Credit:__ @132819036282159104
-
-### **Discord Friends Graph Maker**
-> __Description:__ Make a graph out of your friends and their relations.
-__Link(s):__
+## **Alternatives to MEE6**
+
+> **Description:** A list of Discord bots that can be used in place of MEE6.
+**Link:** [Alternatives To MEE6](https://www.alternativestomee6.com/)
+**Credit:** @99787644430475264
+
+## **All Discord Permissions**
+
+> **Description:** A list of all the permissions available for users.
+**Link:** [All Discord Permissions](https://discordapi.com/permissions)
+
+## **Discord Tools**
+
+> **Description:** A collection of Discord tools for power users to analyse your guilds, get information on snowflakes, or even see the current status of Discord. Get the number of guilds your account is in, see how many servers you own, moderate, and are partnered, and show lists of all servers in the categories above as well as a list of all servers.
+**Link:** [Discord Tools](https://discordtools.io/)
+**Credit:** @276544649148235776
+
+## **Discord Toolbox**
+
+> **Description:** Discord tools such as Discord status updates, experiments info and servers/snowflakes lookup.
+**Link:** [Discord Toolbox](https://distools.app/)
+**Credit:** @386861188891279362
+
+## **Discord Lookup**
+
+> **Description:** Easy to use tool to lookup users, guilds, invites and get information about your guild list with stats, server experiment rollouts, features and permissions view.
+**Link:** [Discord Lookup](https://discordlookup.com/)
+**Credit:** @231091710195662848
+
+## **Discord Data Package Explorer**
+
+> **Description:** Explore your Discord data easily.
+**Link:** [Discord Data Package Explorer](https://github.com/Androz2091/discord-data-package-explorer)
+**Credit:** @github:Androz2091
+
+## **Discord Simple Avatar Maker**
+
+> **Description:** A site to make simple Discord avatars.
+**Link:** [Discord Simple Avatar Maker](https://discord-avatar-maker.app/)
+**Credit:** @github:christian-reichart
+
+## **Discord Emoji Downloader**
+
+> **Description:** This little tool will allow you to download a ZIP archive with all emojis from a Discord server.
+**Link:** [Discord Emoji Downloader](https://thatiemsz.github.io/Discord-Emoji-Downloader/)
+**Credit:** @152164749868662784
+
+## **Discord Embed Previewer**
+
+> **Description:** A chrome-only extension to preview your website's embeds generated by Open-Graph tags whithout having to deploy it or deal with discord's cache.
+**Link:** [Discodd Embed Previewe](https://github.com/JohnyTheCarrot/discord-embed-previewer)
+**Credit:** @132819036282159104
+
+## **Discord Friends Graph Maker**
+
+> **Description:** Make a graph out of your friends and their relations.
+**Link(s):**
[Discord Friends Graph Maker](https://github.com/Maanex/discord-friends-graph)
[Discord Friends Graph Maker **Client Version**](https://github.com/arHSM/discord-friends-graph)
-__Credit:__ @137258778092503042 @841509053422632990
-
-### **Discord Servers Comparations**
-> __Description:__ Compare stats between Discord servers.
-__Link:__ [Discord Servers Comparations](https://thatiemsz.github.io/Discord-Comparison/)
-__Credit:__ @152164749868662784
-
-### **Slash Commands GUI**
-> __Description:__ Graphical User Interface to explore Slash Commands of your bot, built on Vue 3 and TailwindCSS.
-__Link:__ [Slash Commands GUI](https://slash-commands-gui.androz2091.fr/settings)
-__Credit:__ @422820341791064085
-
-### **Discord Server Card Generator**
-> __Description:__ Generate a server card you can copy for your email signatures.
-__Link:__ [Discord Server Card Generator](https://geisterfurz007.github.io/discord-server-card-generator/)
-__Credit:__ @github:geisterfurz007
-
-### **Discord Bug Report Command Generator**
-> __Description:__ A quick and easy tool for everything bug reporting. Contains report generation, can/can't reproduce, editing reports, attach and detachment, and approving, denying, and revoking bug reports.
-__Link:__ [Bug Report Command Generator](https://brightskyz.github.io/dbug/index.html)
-__Credit:__ @209769851651227648
-
-### **Discord Flags**
-> __Description:__ A document full with all Discord flags and their meanings.
-__Link:__ [Discord Flags](https://flags.lewistehminerz.dev/)
-__Credit:__ @96269247411400704
-
-### **Dragory's Avatar Preview**
-> __Description:__ This is an avatar preview tool used to optimise your avatar between both light and dark themes.
-__Link:__ [Dragory’s Avatar Preview](https://dragory.net/avatar-preview/)
-__Credit:__ @106391128718245888
-
-### **Dragory's Role Colour Preview**
-> __Description:__ This is a role colour preview tool used to optimise your role colours between both light and dark themes.
-__Link:__ [Dragory’s Role Colour Preview](https://dragory.github.io/role-preview-for-discord/)
-__Credit:__ @106391128718245888
-
-### **Disgradient**
-> __Description:__ An easy to use tool to help create a gradient for your Discord folders, roles and more.
-__Link:__ [Disgradient](https://disgradient.netlify.app/)
-__Credit:__ @267025484028706816
-
-### **DeepResearch**
-> __Description:__ Discord status that provides visualisations, analytics, and tools for chat-based communities.
-__Link:__ [DeepResearch](https://www.altr.fyi/)
-
-### **Experiments Rollouts**
-> __Description:__ Shows the current discord experiments and their rollout percentage.
-__Link:__ [Experiments Rollouts](https://rollouts.advaith.io/)
-__Credit:__ @190916650143318016
-
-### **Find a Guild**
-> __Description:__ Find a guild using it’s ID, through replacing ‘GUILD_ID’ (provided it has widgets on).
-__Link:__ [Find a Guild](https://canary.discord.com/api/guilds/GUILD_ID/widget.json)
-
-### **Find Guild Features**
-> __Description:__ Check the features of a guild via an instant invite code.
-__Link:__ [Find Guild Features](https://discord.com/api/invite/[invitecode])
-
-### **Jagrosh's GitHub -> Discord Webhook Guide**
-> __Description:__ A guide to integrate your GitHub projects to a Discord channel.
-__Link:__ [Jagrosh'S GitHub -> Discord Webhook Guide](https://gist.github.com/jagrosh/5b1761213e33fc5b54ec7f6379034a22)
-__Credit:__ @113156185389092864
-
-### **Jagrosh's Twitter -> Discord Webhook Guide**
-> __Description:__ A guide to integrate your Twitter posts to a Discord channel.
-__Link:__ [Jagrosh'S GitHub -> Discord Webhook Guide](https://gist.github.com/jagrosh/7606268fc9f1d3e90ce9efc79294f960)
-__Credit:__ @113156185389092864
-
-### **Mozzy's Log Sorter**
-> __Description:__ An easy log parser that supports multiple different bot logs that allows you to grab user IDs from big sections of logs.
-__Link:__ [Mozzy’s Log Sorter](https://logsorter.net/)
-__Credit:__ @99182302885588992
-
-### **Webence**
-> __Description:__ A tool that allows you to embed your Discord profile in an iframe.
-__Link:__ [Webence](https://panleyent.com/webence/)
-__Credit:__ @249287049482338305
-
-### **Discordstatus**
-> __Description:__ A tool to create a unique status/about me page using colores squares.
-__Link:__ [Discordstatus](https://warze.org/discordstatus)
-__Credit:__ @345103284463206400
-
-### **PreMiD**
-> __Description:__ PreMiD is a simple, configurable utility that allows you to show what you're doing on the web in your Discord "now playing status".
-__Link:__ [PreMiD](https://premid.app/)
-
-### **Powercord**
-> __Description:__ Powercord is a lightweight client mod focused on simplicity and performance.
-__Link:__ [Powercord](https://powercord.dev/)
+**Credit:** @137258778092503042 @841509053422632990
+
+## **Discord Servers Comparations**
+
+> **Description:** Compare stats between Discord servers.
+**Link:** [Discord Servers Comparations](https://thatiemsz.github.io/Discord-Comparison/)
+**Credit:** @152164749868662784
+
+## **Slash Commands GUI**
+
+> **Description:** Graphical User Interface to explore Slash Commands of your bot, built on Vue 3 and TailwindCSS.
+**Link:** [Slash Commands GUI](https://slash-commands-gui.androz2091.fr/settings)
+**Credit:** @422820341791064085
+
+## **Discord Server Card Generator**
+
+> **Description:** Generate a server card you can copy for your email signatures.
+**Link:** [Discord Server Card Generator](https://geisterfurz007.github.io/discord-server-card-generator/)
+**Credit:** @github:geisterfurz007
+
+## **Discord Bug Report Command Generator**
+
+> **Description:** A quick and easy tool for everything bug reporting. Contains report generation, can/can't reproduce, editing reports, attach and detachment, and approving, denying, and revoking bug reports.
+**Link:** [Bug Report Command Generator](https://brightskyz.github.io/dbug/index.html)
+**Credit:** @209769851651227648
+
+## **Discord Flags**
+
+> **Description:** A document full with all Discord flags and their meanings.
+**Link:** [Discord Flags](https://flags.lewistehminerz.dev/)
+**Credit:** @96269247411400704
+
+## **Dragory's Avatar Preview**
+
+> **Description:** This is an avatar preview tool used to optimise your avatar between both light and dark themes.
+**Link:** [Dragory’s Avatar Preview](https://dragory.net/avatar-preview/)
+**Credit:** @106391128718245888
+
+## **Dragory's Role Colour Preview**
+
+> **Description:** This is a role colour preview tool used to optimise your role colours between both light and dark themes.
+**Link:** [Dragory’s Role Colour Preview](https://dragory.github.io/role-preview-for-discord/)
+**Credit:** @106391128718245888
+
+## **Disgradient**
+
+> **Description:** An easy to use tool to help create a gradient for your Discord folders, roles and more.
+**Link:** [Disgradient](https://disgradient.netlify.app/)
+**Credit:** @267025484028706816
+
+## **DeepResearch**
+
+> **Description:** Discord status that provides visualisations, analytics, and tools for chat-based communities.
+**Link:** [DeepResearch](https://www.altr.fyi/)
+
+## **Experiments Rollouts**
+
+> **Description:** Shows the current discord experiments and their rollout percentage.
+**Link:** [Experiments Rollouts](https://rollouts.advaith.io/)
+**Credit:** @190916650143318016
+
+## **Find a Guild**
+
+> **Description:** Find a guild using it’s ID, through replacing ‘GUILD_ID’ (provided it has widgets on).
+**Link:** [Find a Guild](https://canary.discord.com/api/guilds/GUILD_ID/widget.json)
+
+## **Find Guild Features**
+
+> **Description:** Check the features of a guild via an instant invite code.
+**Link:** [Find Guild Features](https://discord.com/api/invite/[invitecode])
+
+## **Jagrosh's GitHub -> Discord Webhook Guide**
+
+> **Description:** A guide to integrate your GitHub projects to a Discord channel.
+**Link:** [Jagrosh'S GitHub -> Discord Webhook Guide](https://gist.github.com/jagrosh/5b1761213e33fc5b54ec7f6379034a22)
+**Credit:** @113156185389092864
+
+## **Jagrosh's Twitter -> Discord Webhook Guide**
+
+> **Description:** A guide to integrate your Twitter posts to a Discord channel.
+**Link:** [Jagrosh'S GitHub -> Discord Webhook Guide](https://gist.github.com/jagrosh/7606268fc9f1d3e90ce9efc79294f960)
+**Credit:** @113156185389092864
+
+## **Mozzy's Log Sorter**
+
+> **Description:** An easy log parser that supports multiple different bot logs that allows you to grab user IDs from big sections of logs.
+**Link:** [Mozzy’s Log Sorter](https://logsorter.net/)
+**Credit:** @99182302885588992
+
+## **Webence**
+
+> **Description:** A tool that allows you to embed your Discord profile in an iframe.
+**Link:** [Webence](https://panleyent.com/webence/)
+**Credit:** @249287049482338305
+
+## **Discordstatus**
+
+> **Description:** A tool to create a unique status/about me page using colores squares.
+**Link:** [Discordstatus](https://warze.org/discordstatus)
+**Credit:** @345103284463206400
+
+## **PreMiD**
+
+> **Description:** PreMiD is a simple, configurable utility that allows you to show what you're doing on the web in your Discord "now playing status".
+**Link:** [PreMiD](https://premid.app/)
+
+## **Powercord**
+
+> **Description:** Powercord is a lightweight client mod focused on simplicity and performance.
+**Link:** [Powercord](https://powercord.dev/)
[Powercord is against Discord TOS - Read More](https://dat.place/client-mods/)
-### **Presence Maker**
-> __Description:__ Create Discord rich presence with this tool.
-__Link:__ [Presence Maker](https://github.com/ThatOneCalculator/DiscordRPCMaker)
-__Credit:__ @454847501787463680
+## **Presence Maker**
+
+> **Description:** Create Discord rich presence with this tool.
+**Link:** [Presence Maker](https://github.com/ThatOneCalculator/DiscordRPCMaker)
+**Credit:** @454847501787463680
+
+## **Rauf's Guild Count**
+
+> **Description:** Counts the number of guilds you’re in.
+**Link:** [Rauf's Guild Count](https://rauf.wtf/guildcount)
+**Credit:** @172557961133162496
+
+## **Rauf's Slash Command Generator**
-### **Rauf's Guild Count**
-> __Description:__ Counts the number of guilds you’re in.
-__Link:__ [Rauf's Guild Count](https://rauf.wtf/guildcount)
-__Credit:__ @172557961133162496
+> **Description:** An easy to use slash command tool which allows bot developers to create slash commands quickly.
+**Link:** [Rauf's Slash Command Generator](https://rauf.wtf/slash)
+**Credit:** @172557961133162496
-### **Rauf's Slash Command Generator**
-> __Description:__ An easy to use slash command tool which allows bot developers to create slash commands quickly.
-__Link:__ [Rauf's Slash Command Generator](https://rauf.wtf/slash)
-__Credit:__ @172557961133162496
+## **Status**
-### **Status**
-> __Description:__ A server that has a collection of announcement channels you can follow for many status pages (including Discord, Cloudflare, GitHub, Hypixel & more) so you can be one of the first to know when one of your favourite service(s) have issues.
-__Link(s):__
+> **Description:** A server that has a collection of announcement channels you can follow for many status pages (including Discord, Cloudflare, GitHub, Hypixel & more) so you can be one of the first to know when one of your favourite service(s) have issues.
+**Link(s):**
[Server Invite](https://inv.wtf/statuspages)
-__Credit:__ @287698408855044097
+**Credit:** @287698408855044097
-### **Icons**
-> __Description:__ A guild with free to use emotes.
-__Link(s):__
+## **Icons**
+
+> **Description:** A guild with free to use emotes.
+**Link(s):**
[Server Invite](https://discord.gg/tbzP3XaUF7)
-__Credit:__ @537875750955778058
-
-### **Sylveon's Ban Appeal Website (self-host)**
-> __Description:__ Sample ban appeals page with OAuth2 integration.
-__Link:__ [Sylveon’s Ban Appeal Website](https://github.com/sylveon/discord-ban-appeals)
-__Credit:__ @207123748120166400
-
-### **Rauf's Embeds Generator**
-> __Description:__ Generate embeds using this site.
-__Link:__ [Rauf's Embeds Generator](https://embed.rauf.wtf/)
-__Credit:__ @172557961133162496
-
-### **Webhooks Creator**
-> __Description:__ A site to create webhooks with.
-__Link:__ [Webhooks Creator](https://webhook.site/)
-
-### **Google forms -> Discord Webhook**
-> __Description:__ Sends a Google Form response to a Discord channel using webhooks.
-__Link__ [Google forms -> Discord Webhook](https://github.com/Iku/Google-Forms-to-Discord)
-__Credit:__ @87599455892692992
-
-### **Crosslink's Utility Links**
-> __Description:__ Easy to use links to lookup users and domains. Replace "ID" with User ID and "Domain" with the domain name.
-__Link(s):__ [User Info](https://crss.link/u/ID)
+**Credit:** @537875750955778058
+
+## **Sylveon's Ban Appeal Website (self-host)**
+
+> **Description:** Sample ban appeals page with OAuth2 integration.
+**Link:** [Sylveon’s Ban Appeal Website](https://github.com/sylveon/discord-ban-appeals)
+**Credit:** @207123748120166400
+
+## **Rauf's Embeds Generator**
+
+> **Description:** Generate embeds using this site.
+**Link:** [Rauf's Embeds Generator](https://embed.rauf.wtf/)
+**Credit:** @172557961133162496
+
+## **Webhooks Creator**
+
+> **Description:** A site to create webhooks with.
+**Link:** [Webhooks Creator](https://webhook.site/)
+
+## **Google forms -> Discord Webhook**
+
+> **Description:** Sends a Google Form response to a Discord channel using webhooks.
+**Link** [Google forms -> Discord Webhook](https://github.com/Iku/Google-Forms-to-Discord)
+**Credit:** @87599455892692992
+
+## **Crosslink's Utility Links**
+
+> **Description:** Easy to use links to lookup users and domains. Replace "ID" with User ID and "Domain" with the domain name.
+**Link(s):** [User Info](https://crss.link/u/ID)
[Domain Info](https://crss.link/d/Domain)
-__Credit:__ @249287049482338305
-
-### **Merlin's Embed Links**
-> __Description:__ Easy to use links to embed users, servers, and invites.
-__Link:__ [Embeddable Links](https://url.wtf)
-__Credit:__ @386861188891279362
-
-### **Scratch For Discord**
-> __Description:__ Make a Discord bot using blocks with no coding required.
-__Link:__ [Scratch For Discord](https://scratch-for-discord.netlify.app/)
-__Credit:__ @422820341791064085
-
-### **Zeppelin in Docker**
-> __Description:__ Easy setup to self-host the moderation bot Zeppelin in docker.
-__Link:__ [Zeppelin In Docker](https://github.com/Benricheson101/ZeppelinBot#running-the-bot-with-docker)
-__Credit:__ @255834596766253057
-
-### **ANSI Code Block Guide**
-> __Description:__ A quick breakdown of how to use ANSI color codes to add color to your code blocks.
-__Link(s):__
+**Credit:** @249287049482338305
+
+## **Merlin's Embed Links**
+
+> **Description:** Easy to use links to embed users, servers, and invites.
+**Link:** [Embeddable Links](https://url.wtf)
+**Credit:** @386861188891279362
+
+## **Scratch For Discord**
+
+> **Description:** Make a Discord bot using blocks with no coding required.
+**Link:** [Scratch For Discord](https://scratch-for-discord.netlify.app/)
+**Credit:** @422820341791064085
+
+## **Zeppelin in Docker**
+
+> **Description:** Easy setup to self-host the moderation bot Zeppelin in docker.
+**Link:** [Zeppelin In Docker](https://github.com/Benricheson101/ZeppelinBot#running-the-bot-with-docker)
+**Credit:** @255834596766253057
+
+## **ANSI Code Block Guide**
+
+> **Description:** A quick breakdown of how to use ANSI color codes to add color to your code blocks.
+**Link(s):**
[ANSI Code Block Guide](https://gist.github.com/kkrypt0nn/a02506f3712ff2d1c8ca7c9e0aed7c06)
[ANSI Code Block Guide (2)](https://gist.github.com/fnky/458719343aabd01cfb17a3a4f7296797#8-16-colors)
-__Credit:__ @github:kkrypt0nn @github:fnky
-
-### **Discord Colored Text Generator**
-> __Description:__ Generate colored ansi text for discord.
-__Link:__ [Discord Colored Text Generator](https://rebane2001.com/discord-colored-text-generator/)
-__Credit:__ @github:rebane2001
-
-### **Rebane's Discord Pin Compressor**
-> __Description:__ A simple app that converts Discord pins to Discord messages.
-__Link:__ [Discord Pin Compressor](https://rebane2001.com/discord-pin-compressor/)
-__Credit:__ @github:rebane2001
-
-### **Simple Discord Cache Cleaner**
-> __Description:__ A simple to the point Discord cache manager written in java.
-__Link:__ [Simple Discord Cache Cleaner](https://github.com/Aninoss/simple-discord-cache-cleaner)
-__Credit:__ @272037078919938058
-
-### **Discord Role Icon Creator**
-> __Description:__ Website that allows users to make simple looking role icons for their servers.
-__Link:__ [Discord Icon](https://discordicon.com)
-__Credit:__ @github:enzostvs
+**Credit:** @github:kkrypt0nn @github:fnky
+
+## **Discord Colored Text Generator**
+
+> **Description:** Generate colored ansi text for discord.
+**Link:** [Discord Colored Text Generator](https://rebane2001.com/discord-colored-text-generator/)
+**Credit:** @github:rebane2001
+
+## **Rebane's Discord Pin Compressor**
+
+> **Description:** A simple app that converts Discord pins to Discord messages.
+**Link:** [Discord Pin Compressor](https://rebane2001.com/discord-pin-compressor/)
+**Credit:** @github:rebane2001
+
+## **Simple Discord Cache Cleaner**
+
+> **Description:** A simple to the point Discord cache manager written in java.
+**Link:** [Simple Discord Cache Cleaner](https://github.com/Aninoss/simple-discord-cache-cleaner)
+**Credit:** @272037078919938058
+
+## **Discord Role Icon Creator**
+
+> **Description:** Website that allows users to make simple looking role icons for their servers.
+**Link:** [Discord Icon](https://discordicon.com)
+**Credit:** @github:enzostvs
diff --git a/wiki/resources/tools/other.md b/wiki/resources/tools/other.md
index 5dddbc9f..061b504f 100644
--- a/wiki/resources/tools/other.md
+++ b/wiki/resources/tools/other.md
@@ -6,230 +6,283 @@ description: Other useful tools
# Other
+## **Blank Characters**
-### **Blank Characters**
-> __Description:__ A list of blank Unicode characters.
-__Link:__ [Blank Charcaters](https://character.construction/blanks)
+> **Description:** A list of blank Unicode characters.
+**Link:** [Blank Charcaters](https://character.construction/blanks)
-### **Bitwarden**
-> __Description:__ Open source password manager.
-__Link:__ [Bitwarden](https://bitwarden.com/)
+## **Bitwarden**
-### **Blobs**
-> __Description:__ A server list of blob emojis.
-__Link:__ [Blobs](https://blobs.gg/)
-__Credit:__ @69198249432449024
+> **Description:** Open source password manager.
+**Link:** [Bitwarden](https://bitwarden.com/)
-### **CitizenLab**
-> __Description:__ URL testing lists intended to help in testing URL censorship, divided by country codes.
-__Link:__ [CitizenLab](https://github.com/citizenlab/test-lists)
+## **Blobs**
-### **Polywork**
-> __Description:__ Polywork is a professional social network that lets users create a free personal webpage, share what're they're up to both personally and professionally and send collaboration requests to others.
-__Link:__ [Polywork](https://www.polywork.com/)
+> **Description:** A server list of blob emojis.
+**Link:** [Blobs](https://blobs.gg/)
+**Credit:** @69198249432449024
-### **Rize**
-> __Description:__ Rize is an intelligent time tracker that improves your focus and helps you build better work habits.
-__Link:__ [Rize](https://rize.io)
+## **CitizenLab**
-### **Files**
-> __Description:__ File manager for Windows, focused on design.
-__Link:__ [Files](https://files.community/)
+> **Description:** URL testing lists intended to help in testing URL censorship, divided by country codes.
+**Link:** [CitizenLab](https://github.com/citizenlab/test-lists)
-### **One Commander**
-> __Description:__ File manager for Windows, focused on productivity.
-__Link:__ [One Commander](https://www.onecommander.com/)
+## **Polywork**
-### **Carrd**
-> __Description:__ Build one-page websites.
-__Link:__ [Carrd](https://carrd.co/)
+> **Description:** Polywork is a professional social network that lets users create a free personal webpage, share what're they're up to both personally and professionally and send collaboration requests to others.
+**Link:** [Polywork](https://www.polywork.com/)
-### **Down for Everyone or Just Me**
-> __Description:__ A site that checks if a domain is up.
-__Link:__ [Down for Everyone or Just Me](https://downforeveryoneorjustme.com/)
+## **Rize**
-### **KeyCDN Tools**
-> __Description:__ Many tools related to web, networking and security checkings.
-__Link:__ [KeyCDN Tools](https://tools.keycdn.com/)
+> **Description:** Rize is an intelligent time tracker that improves your focus and helps you build better work habits.
+**Link:** [Rize](https://rize.io)
-### **Dehashed**
-> __Description:__ Tool to find data breaches that contain username, email, ip, address, phone, vin, etc.
-__Link:__ [Dehashed](https://dehashed.com)
+## **Files**
-### **Terms Of Service ; Didn't Read**
-> __Description:__ Summarized terms of service for all known companies.
-__Link:__ [Terms Of Service ; Didn't Read](https://tosdr.org/)
-
-### **TimezoneWizard**
-> __Description:__ Easy to use tool for finding timezones all across the globe.
-__Link:__ [TimezoneWizard](https://timezonewizard.com/)
-
-### **C.O.A.C.H**
-> __Description:__ Tidying up your online security, step by step.
-__Link:__ [C.O.A.C.H](http://www.crashoverridenetwork.com/coach.html)
-
-### **Empty Characters**
-> __Description:__ List and methods to Unicode empty characters.
-__Link:__ [Empty Characters](https://emptycharacter.com)
-
-### **Awesome**
-> __Description:__ Collection of lists about various topics.
-__Link:__ [Awesome](https://github.com/sindresorhus/awesome)
-__Credit:__ @github:sindresorhus
-
-### **Internet Slang**
-> __Description:__ A list of slang used across the internet.
-__Link:__ [Internet Slang](https://www.ruf.rice.edu/~kemmer/Words04/usage/slang_internet.html)
-
-### **Invited**
-> __Description:__ Watch movies, Youtube or even listen to music together through a shared virtual browser.
-__Link:__ [Invited](https://invited.tv/)
-
-### **Obsidian**
-> __Description:__ An advanced note-taking app.
-__Link:__ [Obsidian](https://obsidian.md/)
-
-### **Trello**
-> __Description:__ Manage collaborative projects easily.
-__Link:__ [Trello](https://trello.com/)
-
-### **Notion**
-> __Description:__ A product for creating workflows and websites, fully customizable for your needs.
-__Link:__ [Notion](https://www.notion.so/)
-
-### **Tina**
-> __Description:__ Open-source content management tool.
-__Link:__ [Tina](https://tina.io/)
-
-### **Nord Theme**
-> __Description:__ An arctic-inspired color palette and theme collection for various sites and applications.
-__Link:__ [Nord Theme](https://www.nordtheme.com/)
-
-### **Pronoun Island**
-> __Description:__ A website for personal pronoun usage examples.
-__Link:__ [Pronoun Island](https://pronoun.is/)
-
-### **PronounDB**
-> __Description:__ Pronouns intergration for websites and apps.
-__Link:__ [ProunounDB](https://pronoundb.org/)
-__Credit:__ @94762492923748352
-
-### **Pronouns.page**
-> __Description:__ Information about nonbinary and gender neutral language.
-__Link:__ [Pronouns.page](https://en.pronouns.page/)
-
-### **Flaticon**
-> __Description:__ Free vector icons and stickers for your projects. Resources made by and for designers.
-__Link:__ [Flaticon](https://www.flaticon.com/)
-
-### **Photopea**
-> __Description:__ Free online image editor.
-__Link:__ [Photopea](https://www.photopea.com/)
-
-### **Random Sites**
-> __Description:__ Generates a small list of random website URLs.
-__Link:__ [Random Sites](https://www.randomlists.com/websites)
-
-### **ShareX**
-> __Description:__ Best sharing app.
-__Link:__ [ShareX](https://getsharex.com/)
-__Credit:__ @95576568025329664
-
-### **pfp.lgbt**
-> __Description:__ A tool to "LGBTQ+fy" your images.
-__Link:__ [pfp.lgbt](https://pfp.lgbt/)
-__Credit:__ @109710323094683648 @139836912335716352
-
-### **Statista**
-> __Description:__ Statistics and business data platform for over 170 industries.
-__Link:__ [Statista](https://statista.com)
-
-### **Semantic Scholar**
-> __Description:__ Semantic Scholar uses AI to help you find scientific articles without suffering information overload.
-__Link:__ [Semantic Scholar](https://www.semanticscholar.org/)
-
-### **Simple Analytics**
-> __Description:__ Simple, clean, and friendly analytics for sites.
-__Link:__ [Simple Analytics](https://simpleanalytics.com/)
-
-### **Grafana**
-> __Description:__ Query, visualize, alert on, and understand your data with aesthetic dashboards.
-__Link:__ [Grafana](https://grafana.com/)
-
-### **The LaTeX Project**
-> __Description:__ LaTeX is a document preparation system, useful for scientific or technical documents.
-__Link:__ [The LaTeX Project](https://latex-project.org)
-__Credit:__ @github:latex3
-
-### **Web Archives**
-> __Description:__ Explore web pages saved over time.
-__Link:__
+> **Description:** File manager for Windows, focused on design.
+**Link:** [Files](https://files.community/)
+
+## **One Commander**
+
+> **Description:** File manager for Windows, focused on productivity.
+**Link:** [One Commander](https://www.onecommander.com/)
+
+## **Carrd**
+
+> **Description:** Build one-page websites.
+**Link:** [Carrd](https://carrd.co/)
+
+## **Down for Everyone or Just Me**
+
+> **Description:** A site that checks if a domain is up.
+**Link:** [Down for Everyone or Just Me](https://downforeveryoneorjustme.com/)
+
+## **KeyCDN Tools**
+
+> **Description:** Many tools related to web, networking and security checkings.
+**Link:** [KeyCDN Tools](https://tools.keycdn.com/)
+
+## **Dehashed**
+
+> **Description:** Tool to find data breaches that contain username, email, ip, address, phone, vin, etc.
+**Link:** [Dehashed](https://dehashed.com)
+
+## **Terms Of Service ; Didn't Read**
+
+> **Description:** Summarized terms of service for all known companies.
+**Link:** [Terms Of Service ; Didn't Read](https://tosdr.org/)
+
+## **TimezoneWizard**
+
+> **Description:** Easy to use tool for finding timezones all across the globe.
+**Link:** [TimezoneWizard](https://timezonewizard.com/)
+
+## **C.O.A.C.H**
+
+> **Description:** Tidying up your online security, step by step.
+**Link:** [C.O.A.C.H](http://www.crashoverridenetwork.com/coach.html)
+
+## **Empty Characters**
+
+> **Description:** List and methods to Unicode empty characters.
+**Link:** [Empty Characters](https://emptycharacter.com)
+
+## **Awesome**
+
+> **Description:** Collection of lists about various topics.
+**Link:** [Awesome](https://github.com/sindresorhus/awesome)
+**Credit:** @github:sindresorhus
+
+## **Internet Slang**
+
+> **Description:** A list of slang used across the internet.
+**Link:** [Internet Slang](https://www.ruf.rice.edu/~kemmer/Words04/usage/slang_internet.html)
+
+## **Invited**
+
+> **Description:** Watch movies, Youtube or even listen to music together through a shared virtual browser.
+**Link:** [Invited](https://invited.tv/)
+
+## **Obsidian**
+
+> **Description:** An advanced note-taking app.
+**Link:** [Obsidian](https://obsidian.md/)
+
+## **Trello**
+
+> **Description:** Manage collaborative projects easily.
+**Link:** [Trello](https://trello.com/)
+
+## **Notion**
+
+> **Description:** A product for creating workflows and websites, fully customizable for your needs.
+**Link:** [Notion](https://www.notion.so/)
+
+## **Tina**
+
+> **Description:** Open-source content management tool.
+**Link:** [Tina](https://tina.io/)
+
+## **Nord Theme**
+
+> **Description:** An arctic-inspired color palette and theme collection for various sites and applications.
+**Link:** [Nord Theme](https://www.nordtheme.com/)
+
+## **Pronoun Island**
+
+> **Description:** A website for personal pronoun usage examples.
+**Link:** [Pronoun Island](https://pronoun.is/)
+
+## **PronounDB**
+
+> **Description:** Pronouns intergration for websites and apps.
+**Link:** [ProunounDB](https://pronoundb.org/)
+**Credit:** @94762492923748352
+
+## **Pronouns.page**
+
+> **Description:** Information about nonbinary and gender neutral language.
+**Link:** [Pronouns.page](https://en.pronouns.page/)
+
+## **Flaticon**
+
+> **Description:** Free vector icons and stickers for your projects. Resources made by and for designers.
+**Link:** [Flaticon](https://www.flaticon.com/)
+
+## **Photopea**
+
+> **Description:** Free online image editor.
+**Link:** [Photopea](https://www.photopea.com/)
+
+## **Random Sites**
+
+> **Description:** Generates a small list of random website URLs.
+**Link:** [Random Sites](https://www.randomlists.com/websites)
+
+## **ShareX**
+
+> **Description:** Best sharing app.
+**Link:** [ShareX](https://getsharex.com/)
+**Credit:** @95576568025329664
+
+## **pfp.lgbt**
+
+> **Description:** A tool to "LGBTQ+fy" your images.
+**Link:** [pfp.lgbt](https://pfp.lgbt/)
+**Credit:** @109710323094683648 @139836912335716352
+
+## **Statista**
+
+> **Description:** Statistics and business data platform for over 170 industries.
+**Link:** [Statista](https://statista.com)
+
+## **Semantic Scholar**
+
+> **Description:** Semantic Scholar uses AI to help you find scientific articles without suffering information overload.
+**Link:** [Semantic Scholar](https://www.semanticscholar.org/)
+
+## **Simple Analytics**
+
+> **Description:** Simple, clean, and friendly analytics for sites.
+**Link:** [Simple Analytics](https://simpleanalytics.com/)
+
+## **Grafana**
+
+> **Description:** Query, visualize, alert on, and understand your data with aesthetic dashboards.
+**Link:** [Grafana](https://grafana.com/)
+
+## **The LaTeX Project**
+
+> **Description:** LaTeX is a document preparation system, useful for scientific or technical documents.
+**Link:** [The LaTeX Project](https://latex-project.org)
+**Credit:** @github:latex3
+
+## **Web Archives**
+
+> **Description:** Explore web pages saved over time.
+**Link:**
[Web Archives](https://web.archive.org/)
[Arvhive.is](https://archive.is/)
-### **AlternativeTo**
-> __Description:__ AlternativeTo is a crowd-sourced website that seeks to find alternate software for various purposes.
-__Link:__ [AlternativeTo](https://alternativeto.net/)
+## **AlternativeTo**
+
+> **Description:** AlternativeTo is a crowd-sourced website that seeks to find alternate software for various purposes.
+**Link:** [AlternativeTo](https://alternativeto.net/)
+
+## **Internet Download Manager**
+
+> **Description:** Tool that makes downloading videos and files through the browser easy.
+**Link:** [Download Internet Download Manager](https://www.internetdownloadmanager.com/download.html)
+
+## **Whois Lookup**
+
+> **Description:** Lookup information about domains or IP addresses.
+**Link:** [Whois Lookup](https://whois.domaintools.com/)
+
+## **Status Page**
+
+> **Description:** Communicate real-time status to your members.
+**Link:** [Status Page](https://statuspage.io)
+
+## **Tone Indicators Website**
+
+> **Description:** Find and understand text tone indicators.
+**Link:** [Tone Indicators](https://toneindicators.carrd.co/)
+
+## **URL Scanner**
+
+> **Description:** Scans URLs and gives details about them.
+**Link:** [URL Scan](https://urlscan.io/)
+
+## **URL Expander**
+
+> **Description:** Expand short URLs.
+**Link:** [URL Expander](https://urlex.org/)
+
+## **Waifu2x**
+
+> **Description:** Image scaling and noise reduction for anime-style art.
+**Link:** [waifu2x](http://waifu2x.udp.jp/)
+
+## **True Size**
-### **Internet Download Manager**
-> __Description:__ Tool that makes downloading videos and files through the browser easy.
-__Link:__ [Download Internet Download Manager](https://www.internetdownloadmanager.com/download.html)
+> **Description:** A global map where you can drag and drop landmasses to see better comparisons of size.
+**Link:** [True Size](https://thetruesize.com/)
-### **Whois Lookup**
-> __Description:__ Lookup information about domains or IP addresses.
-__Link:__ [Whois Lookup](https://whois.domaintools.com/)
+## **Visual Center**
-### **Status Page**
-> __Description:__ Communicate real-time status to your members.
-__Link:__ [Status Page](https://statuspage.io)
+> **Description:** Find the visual center of your images.
+**Link:** [Visual Center](https://javier.xyz/visual-center/)
+**Credit:** @github:javierbyte
-### **Tone Indicators Website**
-> __Description:__ Find and understand text tone indicators.
-__Link:__ [Tone Indicators](https://toneindicators.carrd.co/)
+## **Lightmode is Necessary**
-### **URL Scanner**
-> __Description:__ Scans URLs and gives details about them.
-__Link:__ [URL Scan](https://urlscan.io/)
+> **Description:** An article explaining why lightmode is an important to software.
+**Link:** [Article](https://lightmode.glitch.me)
-### **URL Expander**
-> __Description:__ Expand short URLs.
-__Link:__ [URL Expander](https://urlex.org/)
+## **ProtonMail**
-### **Waifu2x**
-> __Description:__ Image scaling and noise reduction for anime-style art.
-__Link:__ [waifu2x](http://waifu2x.udp.jp/)
+> **Description:** Open Source E2E encrypted Email Service.
+**Link:** [ProtonMail](https://protonmail.com)
-### **True Size**
-> __Description:__ A global map where you can drag and drop landmasses to see better comparisons of size.
-__Link:__ [True Size](https://thetruesize.com/)
+## **dCode**
-### **Visual Center**
-> __Description:__ Find the visual center of your images.
-__Link:__ [Visual Center](https://javier.xyz/visual-center/)
-__Credit:__ @github:javierbyte
+> **Description:** dCode is a universal website used for encoding and decoding messages. Also offers a bunch of related tools.
+**Link:** [dCode Website](https://dcode.fr/en)
+**Credit:** @273906785788624907
-### **Lightmode is Necessary**
-> __Description:__ An article explaining why lightmode is an important to software.
-__Link:__ [Article](https://lightmode.glitch.me)
+## **Computer Hope**
-### **ProtonMail**
-> __Description:__ Open Source E2E encrypted Email Service.
-__Link:__ [ProtonMail](https://protonmail.com)
+> **Description:** Free computer help and support.
+**Link:** [ComputerHope](https://www.computerhope.com/)
-### **dCode**
-> __Description:__ dCode is a universal website used for encoding and decoding messages. Also offers a bunch of related tools.
-__Link:__ [dCode Website](https://dcode.fr/en)
-__Credit:__ @273906785788624907
+## **Skill Icons**
-### **Computer Hope**
-> __Description:__ Free computer help and support.
-__Link:__ [ComputerHope](https://www.computerhope.com/)
+> **Description:** Showcase languages, frameworks and tools used on a GitHub profile.
+**Link:** [Skill Icons](https://skillicons.dev/)
+**Credit:** @276544649148235776
-### **Skill Icons**
-> __Description:__ Showcase languages, frameworks and tools used on a GitHub profile.
-__Link:__ [Skill Icons](https://skillicons.dev/)
-__Credit:__ @276544649148235776
+## **Savefrom**
-### **Savefrom**
-> __Description:__ Download any content from popular sites.
-__Link:__ [Savefrom](https://savefrom.net/)
+> **Description:** Download any content from popular sites.
+**Link:** [Savefrom](https://savefrom.net/)
diff --git a/wiki/resources/tools/phishing.md b/wiki/resources/tools/phishing.md
index 302a9338..4ba5ac93 100644
--- a/wiki/resources/tools/phishing.md
+++ b/wiki/resources/tools/phishing.md
@@ -6,25 +6,28 @@ description: Phishing and Security tools
# Phishing Related
-### **Discord Nitro Scams**
-> __Description:__ This **safe and secure** website (*not a scam*) compares real Discord Nitro gifts to scams. Beware!
-__Link:__ [Discord Nitro Information](https://dicsord.gq/)
+## **Discord Nitro Scams**
-### **Virus Total**
-> __Description:__ Virus Total analyses suspicious files and URLs to detect types of malware.
-__Link:__ [Virus Total](https://www.virustotal.com/gui/home/upload)
+> **Description:** This **safe and secure** website (*not a scam*) compares real Discord Nitro gifts to scams. Beware!
+**Link:** [Discord Nitro Information](https://dicsord.gq/)
-### **CleanURLs**
-> __Description:__ ClearURLs is an add-on based on the new WebExtensions technology and will automatically remove tracking elements from URLs to help protect your privacy.
-__Link(s):__
+## **Virus Total**
+
+> **Description:** Virus Total analyses suspicious files and URLs to detect types of malware.
+**Link:** [Virus Total](https://www.virustotal.com/gui/home/upload)
+
+## **CleanURLs**
+
+> **Description:** ClearURLs is an add-on based on the new WebExtensions technology and will automatically remove tracking elements from URLs to help protect your privacy.
+**Link(s):**
[CleanUrls](https://github.com/ClearURLs/Addon)
[CleanUrls Docs](https://docs.clearurls.xyz/latest/)
-__Credit:__ @github:KevinRoebert
+**Credit:** @github:KevinRoebert
+## **Gits of Scam Links**
-### **Gits of Scam Links**
-> __Description:__ GitHub repositories full of scam links.
-__Link(s):__
+> **Description:** GitHub repositories full of scam links.
+**Link(s):**
[Block List Project](https://blocklistproject.github.io/Lists/)
[malvertising](https://github.com/D09r/malvertising/blob/master/scam-domains.csv)
[ZeroTwo Bot List](https://github.com/ZeroTwo-Bot/anti-fish-lists/)
@@ -33,13 +36,15 @@ __Link(s):__
[Elkbr's List](https://github.com/elbkr/bad-websites)
[WalshyDev's List](https://github.com/WalshyDev/Discord-bad-domains/blob/main/bad-domains.json)
-### **Database full of malicious links**
-> __Description:__ Self explanatory. 🔢
-__Link:__ [Malicious Links Database](https://urlhaus.abuse.ch/browse/)
+## **Database full of malicious links**
+
+> **Description:** Self explanatory. 🔢
+**Link:** [Malicious Links Database](https://urlhaus.abuse.ch/browse/)
+
+## **Phishing Recognizing Tools**
-### **Phishing Recognizing Tools**
-> __Description:__ Many tools to help you recognize phishing and compromised sites.
-__Link(s):__
+> **Description:** Many tools to help you recognize phishing and compromised sites.
+**Link(s):**
[Google Safety Checker](https://transparencyreport.google.com/safe-browsing/search)
[AbuseIPDB](https://www.abuseipdb.com/)
[BrightCloud URL Lookup](https://www.brightcloud.com/tools/url-ip-lookup.php)
@@ -53,9 +58,10 @@ __Link(s):__
[McAfee URL Checker](https://www.trustedsource.org/)
[IP Logger URL Checker](https://iplogger.com/url-checker)
-### Phishing APIs
-> __Description:__ These are APIs and tools to handle phishing attempts.
-__Link(s):__
+## Phishing APIs
+
+> **Description:** These are APIs and tools to handle phishing attempts.
+**Link(s):**
[Got Phish](http://gotphish.com/)
[Hyperphish](https://api.hyperphish.com/docs) (credit: @297045071457681409)
[Phish Report](https://phish.report/)
@@ -69,19 +75,22 @@ __Link(s):__
[Azrael Phish API](https://phish.azrael.gg/) (credit: @641795527444529152)
[Walshy's API](https://bad-domains.walshy.dev/)
-### **Phisherman**
-> __Description:__
+## **Phisherman**
+
+> **Description:**
Phisherman is a centralized database of phishing and scam links. It is designed for use with Discord bots, allowing them to utilise the Phisherman API to cross-check URLs against the Phisherman database.
-__Link(s):__
+**Link(s):**
[Phisherman Website](https://phisherman.gg/)
[PhishermanDocs](https://docs.phisherman.gg/)
-### **The Vaccinator**
-> __Description:__ A tool for detecting and neutralizing Discord token stealers by deleting their internal Discord webhook.
-__Note:__ This tool is **not** an antivirus. It's just a utility that can help prevent scammers from getting other people's data.
-__Link:__ [Website](https://sketchy.tel/)
-__Credit:__ The Vaccinator Team (contact: @204414611578028034)
+## **The Vaccinator**
+
+> **Description:** A tool for detecting and neutralizing Discord token stealers by deleting their internal Discord webhook.
+**Note:** This tool is **not** an antivirus. It's just a utility that can help prevent scammers from getting other people's data.
+**Link:** [Website](https://sketchy.tel/)
+**Credit:** The Vaccinator Team (contact: @204414611578028034)
+
+## **Intezer Analyse**
-### **Intezer Analyse**
-> __Description:__ Advanced security researching tool to help determine if a file is malicious and much more. (Not entirely free)
-__Link:__ [Intezer Analyse](https://analyze.intezer.com/)
+> **Description:** Advanced security researching tool to help determine if a file is malicious and much more. (Not entirely free)
+**Link:** [Intezer Analyse](https://analyze.intezer.com/)
diff --git a/wiki/resources/tools/programming.md b/wiki/resources/tools/programming.md
index 6544168e..9bbf9aea 100644
--- a/wiki/resources/tools/programming.md
+++ b/wiki/resources/tools/programming.md
@@ -6,112 +6,137 @@ description: Programming related tools
# Programming Related
-### **Autocode**
-> __Description:__ Autocode turns JavaScript (Node.js) functions into scalable web services in an instant, no configuration required.
-__Link:__ [Autocode](https://autocode.com/)
-__Credit:__ @746460957651501196
-
-### **Stack Overflow**
-> __Description:__ A place to find solutions and discuss coding related problems.
-__Link:__ [Stack Overflow](https://stackoverflow.com/)
-
-### **RapidAPI**
-> __Description:__ Find APIs to all purposes.
-__Link:__ [RapidAPI](https://rapidapi.com/)
-
-### **Some Random API**
-> __Description:__ Variety of fun endpoints for devs to use.
-__Link:__ [Some Random API](https://some-random-api.ml/)
-__Credit:__ @423675224395874314
-
-### **Choose A License**
-> __Description:__ Choose a license for your open source project.
-__Link:__ [Choose A License](https://choosealicense.com/)
-
-### **Docker**
-> __Description:__ Simplifies development processes.
-__Link:__ [Docker](https://www.docker.com/)
-
-### **Visual Studio Code**
-> __Description:__ Free and biggest code editing tool.
-__Link:__ [Visual studio code](https://code.visualstudio.com)
-
-### **Docusaurus**
-> __Description:__ An optimized site generator in React. Docusaurus helps you to move fast and write content.
-__Link:__ [Docusaurus](https://docusaurus.io/)
-
-### **GitBook**
-> __Description:__ Create docs full of utilities and design options.
-__Link:__ [GitBook](https://www.gitbook.com/)
-
-### **GitHub’s Guides and Documentation**
-> __Description:__ Self explanatory.
-__Link(s):__
+## **Autocode**
+
+> **Description:** Autocode turns JavaScript (Node.js) functions into scalable web services in an instant, no configuration required.
+**Link:** [Autocode](https://autocode.com/)
+**Credit:** @746460957651501196
+
+## **Stack Overflow**
+
+> **Description:** A place to find solutions and discuss coding related problems.
+**Link:** [Stack Overflow](https://stackoverflow.com/)
+
+## **RapidAPI**
+
+> **Description:** Find APIs to all purposes.
+**Link:** [RapidAPI](https://rapidapi.com/)
+
+## **Some Random API**
+
+> **Description:** Variety of fun endpoints for devs to use.
+**Link:** [Some Random API](https://some-random-api.ml/)
+**Credit:** @423675224395874314
+
+## **Choose A License**
+
+> **Description:** Choose a license for your open source project.
+**Link:** [Choose A License](https://choosealicense.com/)
+
+## **Docker**
+
+> **Description:** Simplifies development processes.
+**Link:** [Docker](https://www.docker.com/)
+
+## **Visual Studio Code**
+
+> **Description:** Free and biggest code editing tool.
+**Link:** [Visual studio code](https://code.visualstudio.com)
+
+## **Docusaurus**
+
+> **Description:** An optimized site generator in React. Docusaurus helps you to move fast and write content.
+**Link:** [Docusaurus](https://docusaurus.io/)
+
+## **GitBook**
+
+> **Description:** Create docs full of utilities and design options.
+**Link:** [GitBook](https://www.gitbook.com/)
+
+## **GitHub’s Guides and Documentation**
+
+> **Description:** Self explanatory.
+**Link(s):**
[Docs](https://docs.github.com/en)
[Guides](https://guides.github.com/)
[Community Help](https://github.community/)
-### **Github Education Pack**
-> __Description:__ Free Developer Tools provided by Github Education Pack
-__Link:__ [Github Education Pack](https://education.github.com/)
-
-### **Public APIs**
-> __Description:__ Public APIs is a well maintained list of APIs to use in your projects, where each API is categorized and documented.
-__Link:__ [Public APIs](https://github.com/public-apis/public-apis)
-
-### **HTTPS Statuses**
-> __Description:__ A list of HTTP status codes.
-__Link:__ [HTTPS Statuses](https://httpstatuses.com/)
-
-### **Does My Site Need HTTPS?**
-> __Description:__ An informative page explaining the importance of HTTPS.
-__Link:__ [Does My Site Need HTTPS?](https://doesmysiteneedhttps.com/)
-
-### **HTTP Toolkit**
-> __Description:__ Intercept & view all your HTTP(S) Mock endpoints or entire servers Rewrite, redirect, or inject errors.
-__Link:__ [HTTP Toolkit](https://httptoolkit.tech/)
-__Credit:__ github:@pimterry
-
-### **Markdown Guide**
-> __Description:__ The Markdown Guide is a free and open-source reference guide that explains how to use Markdown, the simple and easy-to-use markup language you can use to format virtually any document.
-__Link:__ [Markdown Guide](https://www.markdownguide.org/)
-
-### **Qwerty.dev**
-> __Description:__ Qwerty.dev (formerly beautifuldingbats.com) is a collection of unicode tools to help you stand out online.
-__Link:__ [Qwerty.dev](https://qwerty.dev/)
-
-### **replit**
-> __Description:__ An in-browser IDE, compiler, and interpreter supporting 50+ languages.
-__Link:__ [replit](https://replit.com/)
-
-### **Regex101**
-> __Description:__ Build, test, and debug regex.
-__Link:__ [Regex101](https://regex101.com/)
-
-### **RegExp Generator**
-> __Description:__ Unicode range RegExp generator.
-__Link:__ [RegExp Generator](https://apps.timwhitlock.info/js/regex#)
-
-### **Regex Crossword**
-> __Description:__ Learn regex through puzzles and challenges.
-__Link:__ [Regex Crossword](https://regexcrossword.com/)
-
-### **Guide(s) to contributing on Open Source Software**
-> __Description:__ A list of various resources to help OSS contributors.
-__Link:__ [How to Contribute to Open Source](https://github.com/freeCodeCamp/how-to-contribute-to-open-source)
-__Credit:__ @github:freeCodeCamp
-
-### **Big List of Nasty Strings**
-> __Description:__ A list of strings to help test for edge cases
-__Link:__ [Big List of Nasty Strings](https://github.com/minimaxir/big-list-of-naughty-strings)
-__Credit:__ @github:minimaxir
-
-### **Free for developers**
-> __Description:__ List of free offerings for developers
-__Link:__ [Free for developers](https://free-for.dev/#/)
-__Credit:__ @github:ripienaar
-
-### **Paginated discordjs messages**
-> __Description:__ A package that helps make paginated messages easier in discord.js
-__Link:__ [Paginated Discord messages](https://www.npmjs.com/package/@sapphire/discord.js-utilities)
-__Credit:__ @github:sapphiredev
+## **Github Education Pack**
+
+> **Description:** Free Developer Tools provided by Github Education Pack
+**Link:** [Github Education Pack](https://education.github.com/)
+
+## **Public APIs**
+
+> **Description:** Public APIs is a well maintained list of APIs to use in your projects, where each API is categorized and documented.
+**Link:** [Public APIs](https://github.com/public-apis/public-apis)
+
+## **HTTPS Statuses**
+
+> **Description:** A list of HTTP status codes.
+**Link:** [HTTPS Statuses](https://httpstatuses.com/)
+
+## **Does My Site Need HTTPS?**
+
+> **Description:** An informative page explaining the importance of HTTPS.
+**Link:** [Does My Site Need HTTPS?](https://doesmysiteneedhttps.com/)
+
+## **HTTP Toolkit**
+
+> **Description:** Intercept & view all your HTTP(S) Mock endpoints or entire servers Rewrite, redirect, or inject errors.
+**Link:** [HTTP Toolkit](https://httptoolkit.tech/)
+**Credit:** github:@pimterry
+
+## **Markdown Guide**
+
+> **Description:** The Markdown Guide is a free and open-source reference guide that explains how to use Markdown, the simple and easy-to-use markup language you can use to format virtually any document.
+**Link:** [Markdown Guide](https://www.markdownguide.org/)
+
+## **Qwerty.dev**
+
+> **Description:** Qwerty.dev (formerly beautifuldingbats.com) is a collection of unicode tools to help you stand out online.
+**Link:** [Qwerty.dev](https://qwerty.dev/)
+
+## **replit**
+
+> **Description:** An in-browser IDE, compiler, and interpreter supporting 50+ languages.
+**Link:** [replit](https://replit.com/)
+
+## **Regex101**
+
+> **Description:** Build, test, and debug regex.
+**Link:** [Regex101](https://regex101.com/)
+
+## **RegExp Generator**
+
+> **Description:** Unicode range RegExp generator.
+**Link:** [RegExp Generator](https://apps.timwhitlock.info/js/regex#)
+
+## **Regex Crossword**
+
+> **Description:** Learn regex through puzzles and challenges.
+**Link:** [Regex Crossword](https://regexcrossword.com/)
+
+## **Guide(s) to contributing on Open Source Software**
+
+> **Description:** A list of various resources to help OSS contributors.
+**Link:** [How to Contribute to Open Source](https://github.com/freeCodeCamp/how-to-contribute-to-open-source)
+**Credit:** @github:freeCodeCamp
+
+## **Big List of Nasty Strings**
+
+> **Description:** A list of strings to help test for edge cases
+**Link:** [Big List of Nasty Strings](https://github.com/minimaxir/big-list-of-naughty-strings)
+**Credit:** @github:minimaxir
+
+## **Free for developers**
+
+> **Description:** List of free offerings for developers
+**Link:** [Free for developers](https://free-for.dev/#/)
+**Credit:** @github:ripienaar
+
+## **Paginated discordjs messages**
+
+> **Description:** A package that helps make paginated messages easier in discord.js
+**Link:** [Paginated Discord messages](https://www.npmjs.com/package/@sapphire/discord.js-utilities)
+**Credit:** @github:sapphiredev